Merge branch 'themes3' into shigusegubu-themes3
This commit is contained in:
commit
4f1265a58d
17 changed files with 270 additions and 123 deletions
|
@ -68,14 +68,14 @@ export default {
|
|||
{
|
||||
state: ['toggled'],
|
||||
directives: {
|
||||
background: '--inheritedBackground,-24.2',
|
||||
background: '--inheritedBackground,-14.2',
|
||||
shadow: ['--defaultButtonShadow', '--pressedButtonBevel']
|
||||
}
|
||||
},
|
||||
{
|
||||
state: ['toggled', 'hover'],
|
||||
directives: {
|
||||
background: '--inheritedBackground,-24.2',
|
||||
background: '--inheritedBackground,-14.2',
|
||||
shadow: ['--defaultButtonHoverGlow', '--pressedButtonBevel']
|
||||
}
|
||||
},
|
||||
|
|
|
@ -2,10 +2,10 @@ export default {
|
|||
name: 'ButtonUnstyled',
|
||||
selector: '.button-unstyled',
|
||||
states: {
|
||||
toggled: '.toggled',
|
||||
disabled: ':disabled',
|
||||
hover: ':hover:not(:disabled)',
|
||||
focused: ':focus-within',
|
||||
toggled: '.toggled'
|
||||
focused: ':focus-within'
|
||||
},
|
||||
validInnerComponents: [
|
||||
'Text',
|
||||
|
@ -41,29 +41,37 @@ export default {
|
|||
}
|
||||
},
|
||||
{
|
||||
component: 'Text',
|
||||
component: 'Icon',
|
||||
parent: {
|
||||
component: 'ButtonUnstyled',
|
||||
state: ['disabled']
|
||||
state: ['toggled', 'hover']
|
||||
},
|
||||
directives: {
|
||||
textOpacity: 0.25,
|
||||
textOpacityMode: 'blend'
|
||||
}
|
||||
},
|
||||
{
|
||||
component: 'Text',
|
||||
parent: {
|
||||
component: 'ButtonUnstyled',
|
||||
state: ['disabled', 'hover']
|
||||
},
|
||||
directives: {
|
||||
textOpacity: 0.25,
|
||||
textOpacityMode: 'blend'
|
||||
textColor: '--parent--text'
|
||||
}
|
||||
},
|
||||
{
|
||||
component: 'Icon',
|
||||
parent: {
|
||||
component: 'ButtonUnstyled',
|
||||
state: ['toggled', 'focused']
|
||||
},
|
||||
directives: {
|
||||
textColor: '--parent--text'
|
||||
}
|
||||
},
|
||||
{
|
||||
component: 'Icon',
|
||||
parent: {
|
||||
component: 'ButtonUnstyled',
|
||||
state: ['toggled', 'focused', 'hover']
|
||||
},
|
||||
directives: {
|
||||
textColor: '--parent--text'
|
||||
}
|
||||
},
|
||||
{
|
||||
component: 'Text',
|
||||
parent: {
|
||||
component: 'ButtonUnstyled',
|
||||
state: ['disabled']
|
||||
|
@ -77,7 +85,7 @@ export default {
|
|||
component: 'Icon',
|
||||
parent: {
|
||||
component: 'ButtonUnstyled',
|
||||
state: ['disabled', 'hover']
|
||||
state: ['disabled']
|
||||
},
|
||||
directives: {
|
||||
textOpacity: 0.25,
|
||||
|
|
|
@ -37,7 +37,6 @@
|
|||
.footer {
|
||||
position: sticky;
|
||||
bottom: 0;
|
||||
background-color: var(--background);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
export default {
|
||||
name: 'Chat',
|
||||
selector: '.chat-message-list',
|
||||
lazy: true,
|
||||
validInnerComponents: [
|
||||
'Text',
|
||||
'Link',
|
||||
|
@ -10,5 +9,11 @@ export default {
|
|||
'ChatMessage'
|
||||
],
|
||||
defaultRules: [
|
||||
{
|
||||
directives: {
|
||||
background: '--bg',
|
||||
blur: '5px'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -287,8 +287,23 @@
|
|||
}
|
||||
|
||||
&.-expanded.status-fadein {
|
||||
--___margin: calc(var(--status-margin) / 2);
|
||||
|
||||
background: var(--background);
|
||||
padding: calc(var(--status-margin) / 2);
|
||||
margin: var(--___margin);
|
||||
|
||||
&::before {
|
||||
z-index: -1;
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: calc(var(--___margin) * -1);
|
||||
bottom: calc(var(--___margin) * -1);
|
||||
left: calc(var(--___margin) * -1);
|
||||
right: calc(var(--___margin) * -1);
|
||||
background: var(--background);
|
||||
backdrop-filter: var(--__panel-backdrop-filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<slot name="header" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="dialog-modal-content">
|
||||
<div class="panel-body dialog-modal-content">
|
||||
<slot name="default" />
|
||||
</div>
|
||||
<div class="dialog-modal-footer user-interactions panel-footer">
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
export default {
|
||||
name: 'MobileDrawer',
|
||||
selector: '.mobile-drawer',
|
||||
lazy: true,
|
||||
validInnerComponents: [
|
||||
'Text',
|
||||
'Link',
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<div class="panel panel-default">
|
||||
<div class="Search panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="title">
|
||||
{{ $t('nav.search') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-input-container">
|
||||
<div class="panel-body search-input-container">
|
||||
<input
|
||||
ref="searchInput"
|
||||
v-model="searchTerm"
|
||||
|
@ -23,7 +23,7 @@
|
|||
</div>
|
||||
<div
|
||||
v-if="loading && statusesOffset == 0"
|
||||
class="text-center loading-icon"
|
||||
class="panel-body text-center loading-icon"
|
||||
>
|
||||
<FAIcon
|
||||
icon="circle-notch"
|
||||
|
@ -154,6 +154,11 @@
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.Search .tab-switcher .tabs {
|
||||
background: var(--__panel-background);
|
||||
backdrop-filter: var(--__panel-backdrop-filter);
|
||||
}
|
||||
|
||||
@media all and (max-width: 800px) {
|
||||
.search-nav-heading {
|
||||
.tab-switcher .tabs .tab-wrapper {
|
||||
|
|
|
@ -13,13 +13,15 @@
|
|||
<button
|
||||
class="button button-default btn"
|
||||
type="button"
|
||||
@click="reloadEmoji">
|
||||
@click="reloadEmoji"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.reload') }}
|
||||
</button>
|
||||
<button
|
||||
class="button button-default btn"
|
||||
type="button"
|
||||
@click="importFromFS">
|
||||
@click="importFromFS"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.importFS') }}
|
||||
</button>
|
||||
</li>
|
||||
|
@ -28,7 +30,8 @@
|
|||
<button
|
||||
class="button button-default btn"
|
||||
type="button"
|
||||
@click="$refs.remotePackPopover.showPopover">
|
||||
@click="$refs.remotePackPopover.showPopover"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.remote_packs') }}
|
||||
|
||||
<Popover
|
||||
|
@ -51,7 +54,8 @@
|
|||
<button
|
||||
class="button button-default btn emoji-tab-popover-button"
|
||||
type="button"
|
||||
@click="listRemotePacks">
|
||||
@click="listRemotePacks"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.do_list') }}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -65,9 +69,22 @@
|
|||
<li>
|
||||
<h4>{{ $t('admin_dash.emoji.edit_pack') }}</h4>
|
||||
|
||||
<Select class="form-control" v-model="packName">
|
||||
<option value="" disabled hidden>{{ $t('admin_dash.emoji.emoji_pack') }}</option>
|
||||
<option v-for="(pack, listPackName) in knownPacks" :label="listPackName" :key="listPackName">
|
||||
<Select
|
||||
v-model="packName"
|
||||
class="form-control"
|
||||
>
|
||||
<option
|
||||
value=""
|
||||
disabled
|
||||
hidden
|
||||
>
|
||||
{{ $t('admin_dash.emoji.emoji_pack') }}
|
||||
</option>
|
||||
<option
|
||||
v-for="(pack, listPackName) in knownPacks"
|
||||
:key="listPackName"
|
||||
:label="listPackName"
|
||||
>
|
||||
{{ listPackName }}
|
||||
</option>
|
||||
</Select>
|
||||
|
@ -75,7 +92,8 @@
|
|||
<button
|
||||
class="button button-default btn emoji-tab-popover-button"
|
||||
type="button"
|
||||
@click="$refs.createPackPopover.showPopover">
|
||||
@click="$refs.createPackPopover.showPopover"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.create_pack') }}
|
||||
</button>
|
||||
<Popover
|
||||
|
@ -98,7 +116,8 @@
|
|||
<button
|
||||
class="button button-default btn emoji-tab-popover-button"
|
||||
type="button"
|
||||
@click="createEmojiPack">
|
||||
@click="createEmojiPack"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.create') }}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -113,7 +132,10 @@
|
|||
<li>
|
||||
<label>
|
||||
{{ $t('admin_dash.emoji.description') }}
|
||||
<ModifiedIndicator :changed="metaEdited('description')" message-key="admin_dash.emoji.metadata_changed" />
|
||||
<ModifiedIndicator
|
||||
:changed="metaEdited('description')"
|
||||
message-key="admin_dash.emoji.metadata_changed"
|
||||
/>
|
||||
|
||||
<textarea
|
||||
v-model="packMeta.description"
|
||||
|
@ -125,22 +147,29 @@
|
|||
<li>
|
||||
<label>
|
||||
{{ $t('admin_dash.emoji.homepage') }}
|
||||
<ModifiedIndicator :changed="metaEdited('homepage')" message-key="admin_dash.emoji.metadata_changed" />
|
||||
<ModifiedIndicator
|
||||
:changed="metaEdited('homepage')"
|
||||
message-key="admin_dash.emoji.metadata_changed"
|
||||
/>
|
||||
|
||||
<input
|
||||
class="emoji-info-input input"
|
||||
v-model="packMeta.homepage"
|
||||
:disabled="pack.remote !== undefined">
|
||||
<input
|
||||
v-model="packMeta.homepage"
|
||||
class="emoji-info-input input"
|
||||
:disabled="pack.remote !== undefined"
|
||||
>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
{{ $t('admin_dash.emoji.fallback_src') }}
|
||||
<ModifiedIndicator :changed="metaEdited('fallback-src')" message-key="admin_dash.emoji.metadata_changed" />
|
||||
<ModifiedIndicator
|
||||
:changed="metaEdited('fallback-src')"
|
||||
message-key="admin_dash.emoji.metadata_changed"
|
||||
/>
|
||||
|
||||
<input
|
||||
class="emoji-info-input input"
|
||||
v-model="packMeta['fallback-src']"
|
||||
class="emoji-info-input input"
|
||||
:disabled="pack.remote !== undefined"
|
||||
>
|
||||
</label>
|
||||
|
@ -150,40 +179,49 @@
|
|||
{{ $t('admin_dash.emoji.fallback_sha256') }}
|
||||
|
||||
<input
|
||||
v-model="packMeta['fallback-src-sha256']"
|
||||
:disabled="true"
|
||||
class="emoji-info-input input"
|
||||
v-model="packMeta['fallback-src-sha256']"
|
||||
>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<Checkbox :disabled="pack.remote !== undefined" v-model="packMeta['share-files']">
|
||||
<Checkbox
|
||||
v-model="packMeta['share-files']"
|
||||
:disabled="pack.remote !== undefined"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.share') }}
|
||||
</Checkbox>
|
||||
|
||||
<ModifiedIndicator :changed="metaEdited('share-files')" message-key="admin_dash.emoji.metadata_changed" />
|
||||
<ModifiedIndicator
|
||||
:changed="metaEdited('share-files')"
|
||||
message-key="admin_dash.emoji.metadata_changed"
|
||||
/>
|
||||
</li>
|
||||
<li class="btn-group">
|
||||
<button
|
||||
v-if="pack.remote === undefined"
|
||||
class="button button-default btn"
|
||||
type="button"
|
||||
v-if="pack.remote === undefined"
|
||||
@click="savePackMetadata">
|
||||
@click="savePackMetadata"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.save_meta') }}
|
||||
</button>
|
||||
<button
|
||||
v-if="pack.remote === undefined"
|
||||
class="button button-default btn"
|
||||
type="button"
|
||||
v-if="pack.remote === undefined"
|
||||
@click="savePackMetadata">
|
||||
@click="savePackMetadata"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.revert_meta') }}
|
||||
</button>
|
||||
|
||||
<button
|
||||
class="button button-default btn"
|
||||
v-if="pack.remote === undefined"
|
||||
class="button button-default btn"
|
||||
type="button"
|
||||
@click="deleteModalVisible = true">
|
||||
@click="deleteModalVisible = true"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.delete_pack') }}
|
||||
|
||||
<ConfirmModal
|
||||
|
@ -192,16 +230,18 @@
|
|||
:cancel-text="$t('status.delete_confirm_cancel_button')"
|
||||
:confirm-text="$t('status.delete_confirm_accept_button')"
|
||||
@cancelled="deleteModalVisible = false"
|
||||
@accepted="deleteEmojiPack" >
|
||||
@accepted="deleteEmojiPack"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.delete_confirm', [packName]) }}
|
||||
</ConfirmModal>
|
||||
</button>
|
||||
|
||||
<button
|
||||
v-if="pack.remote !== undefined"
|
||||
class="button button-default btn"
|
||||
type="button"
|
||||
v-if="pack.remote !== undefined"
|
||||
@click="$refs.dlPackPopover.showPopover">
|
||||
@click="$refs.dlPackPopover.showPopover"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.download_pack') }}
|
||||
|
||||
<Popover
|
||||
|
@ -221,13 +261,16 @@
|
|||
<label>
|
||||
{{ $t('admin_dash.emoji.download_as_name') }}
|
||||
<input
|
||||
class="emoji-data-input input"
|
||||
v-model="remotePackDownloadAs"
|
||||
class="emoji-data-input input"
|
||||
:placeholder="$t('admin_dash.emoji.download_as_name_full')"
|
||||
>
|
||||
</label>
|
||||
|
||||
<div v-if="downloadWillReplaceLocal" class="warning">
|
||||
<div
|
||||
v-if="downloadWillReplaceLocal"
|
||||
class="warning"
|
||||
>
|
||||
<em>{{ $t('admin_dash.emoji.replace_warning') }}</em>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -235,7 +278,8 @@
|
|||
<button
|
||||
class="button button-default btn"
|
||||
type="button"
|
||||
@click="downloadRemotePack">
|
||||
@click="downloadRemotePack"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.download') }}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -251,31 +295,47 @@
|
|||
<h4>
|
||||
{{ $t('admin_dash.emoji.files') }}
|
||||
|
||||
<ModifiedIndicator v-if="pack"
|
||||
<ModifiedIndicator
|
||||
v-if="pack"
|
||||
:changed="$refs.emojiPopovers && $refs.emojiPopovers.some(p => p.isEdited)"
|
||||
message-key="admin_dash.emoji.emoji_changed"/>
|
||||
message-key="admin_dash.emoji.emoji_changed"
|
||||
/>
|
||||
</h4>
|
||||
|
||||
<div class="emoji-list" v-if="pack">
|
||||
<div
|
||||
v-if="pack"
|
||||
class="emoji-list"
|
||||
>
|
||||
<EmojiEditingPopover
|
||||
v-if="pack.remote === undefined"
|
||||
placement="bottom" new-upload
|
||||
placement="bottom"
|
||||
new-upload
|
||||
:title="$t('admin_dash.emoji.adding_new')"
|
||||
:packName="packName"
|
||||
@updatePackFiles="updatePackFiles" @displayError="displayError"
|
||||
:pack-name="packName"
|
||||
@updatePackFiles="updatePackFiles"
|
||||
@displayError="displayError"
|
||||
>
|
||||
<template #trigger>
|
||||
<FAIcon icon="plus" size="2x" :title="$t('admin_dash.emoji.add_file')" />
|
||||
<FAIcon
|
||||
icon="plus"
|
||||
size="2x"
|
||||
:title="$t('admin_dash.emoji.add_file')"
|
||||
/>
|
||||
</template>
|
||||
</EmojiEditingPopover>
|
||||
|
||||
<EmojiEditingPopover
|
||||
placement="top" ref="emojiPopovers"
|
||||
v-for="(file, shortcode) in pack.files" :key="shortcode"
|
||||
v-for="(file, shortcode) in pack.files"
|
||||
ref="emojiPopovers"
|
||||
:key="shortcode"
|
||||
placement="top"
|
||||
:title="$t('admin_dash.emoji.editing', [shortcode])"
|
||||
:disabled="pack.remote !== undefined"
|
||||
:shortcode="shortcode" :file="file" :packName="packName"
|
||||
@updatePackFiles="updatePackFiles" @displayError="displayError"
|
||||
:shortcode="shortcode"
|
||||
:file="file"
|
||||
:pack-name="packName"
|
||||
@updatePackFiles="updatePackFiles"
|
||||
@displayError="displayError"
|
||||
>
|
||||
<template #trigger>
|
||||
<StillImage
|
||||
|
|
|
@ -6,7 +6,10 @@
|
|||
<div class="setting-item">
|
||||
<h2>{{ $t('admin_dash.tabs.frontends') }}</h2>
|
||||
<p>{{ $t('admin_dash.frontend.wip_notice') }}</p>
|
||||
<ul class="setting-list" v-if="adminDraft">
|
||||
<ul
|
||||
v-if="adminDraft"
|
||||
class="setting-list"
|
||||
>
|
||||
<li>
|
||||
<h3>{{ $t('admin_dash.frontend.default_frontend') }}</h3>
|
||||
<p>{{ $t('admin_dash.frontend.default_frontend_tip') }}</p>
|
||||
|
@ -23,7 +26,10 @@
|
|||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div v-else class="setting-list">
|
||||
<div
|
||||
v-else
|
||||
class="setting-list"
|
||||
>
|
||||
{{ $t('admin_dash.frontend.default_frontend_unavail') }}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<Popover
|
||||
ref="emojiPopover"
|
||||
trigger="click"
|
||||
:placement="placement"
|
||||
bound-to-selector=".emoji-list"
|
||||
popover-class="emoji-tab-edit-popover popover-default"
|
||||
ref="emojiPopover"
|
||||
:bound-to="{ x: 'container' }"
|
||||
:offset="{ y: 5 }"
|
||||
:disabled="disabled"
|
||||
|
@ -18,23 +18,34 @@
|
|||
{{ title }}
|
||||
</h3>
|
||||
|
||||
<StillImage class="emoji" v-if="emojiPreview" :src="emojiPreview" />
|
||||
<div v-else class="emoji"></div>
|
||||
<StillImage
|
||||
v-if="emojiPreview"
|
||||
class="emoji"
|
||||
:src="emojiPreview"
|
||||
/>
|
||||
<div
|
||||
v-else
|
||||
class="emoji"
|
||||
/>
|
||||
|
||||
<div class="emoji-tab-popover-input" v-if="newUpload">
|
||||
<div
|
||||
v-if="newUpload"
|
||||
class="emoji-tab-popover-input"
|
||||
>
|
||||
<input
|
||||
type="file"
|
||||
accept="image/*"
|
||||
class="emoji-tab-popover-file input"
|
||||
@change="uploadFile = $event.target.files">
|
||||
@change="uploadFile = $event.target.files"
|
||||
>
|
||||
</div>
|
||||
<div>
|
||||
<div class="emoji-tab-popover-input">
|
||||
<label>
|
||||
{{ $t('admin_dash.emoji.shortcode') }}
|
||||
<input
|
||||
class="emoji-data-input input"
|
||||
v-model="editedShortcode"
|
||||
class="emoji-data-input input"
|
||||
:placeholder="$t('admin_dash.emoji.new_shortcode')"
|
||||
>
|
||||
</label>
|
||||
|
@ -45,8 +56,8 @@
|
|||
{{ $t('admin_dash.emoji.filename') }}
|
||||
|
||||
<input
|
||||
class="emoji-data-input input"
|
||||
v-model="editedFile"
|
||||
class="emoji-data-input input"
|
||||
:placeholder="$t('admin_dash.emoji.new_filename')"
|
||||
>
|
||||
</label>
|
||||
|
@ -56,7 +67,8 @@
|
|||
class="button button-default btn"
|
||||
type="button"
|
||||
:disabled="newUpload ? uploadFile.length == 0 : !isEdited"
|
||||
@click="newUpload ? uploadEmoji() : saveEditedEmoji()">
|
||||
@click="newUpload ? uploadEmoji() : saveEditedEmoji()"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.save') }}
|
||||
</button>
|
||||
|
||||
|
@ -64,13 +76,15 @@
|
|||
<button
|
||||
class="button button-default btn emoji-tab-popover-button"
|
||||
type="button"
|
||||
@click="deleteModalVisible = true">
|
||||
@click="deleteModalVisible = true"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.delete') }}
|
||||
</button>
|
||||
<button
|
||||
class="button button-default btn emoji-tab-popover-button"
|
||||
type="button"
|
||||
@click="revertEmoji">
|
||||
@click="revertEmoji"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.revert') }}
|
||||
</button>
|
||||
<ConfirmModal
|
||||
|
@ -79,7 +93,8 @@
|
|||
:cancel-text="$t('status.delete_confirm_cancel_button')"
|
||||
:confirm-text="$t('status.delete_confirm_accept_button')"
|
||||
@cancelled="deleteModalVisible = false"
|
||||
@accepted="deleteEmoji" >
|
||||
@accepted="deleteEmoji"
|
||||
>
|
||||
{{ $t('admin_dash.emoji.delete_confirm', [shortcode]) }}
|
||||
</ConfirmModal>
|
||||
</template>
|
||||
|
@ -95,6 +110,30 @@ import StillImage from 'components/still-image/still-image.vue'
|
|||
|
||||
export default {
|
||||
components: { Popover, ConfirmModal, StillImage },
|
||||
inject: ['emojiAddr'],
|
||||
props: {
|
||||
placement: String,
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
|
||||
newUpload: Boolean,
|
||||
|
||||
title: String,
|
||||
packName: String,
|
||||
shortcode: {
|
||||
type: String,
|
||||
// Only exists when this is not a new upload
|
||||
default: ''
|
||||
},
|
||||
file: {
|
||||
type: String,
|
||||
// Only exists when this is not a new upload
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
emits: ['updatePackFiles', 'displayError'],
|
||||
data () {
|
||||
return {
|
||||
uploadFile: [],
|
||||
|
@ -117,7 +156,6 @@ export default {
|
|||
return !this.newUpload && (this.editedShortcode !== this.shortcode || this.editedFile !== this.file)
|
||||
}
|
||||
},
|
||||
inject: ['emojiAddr'],
|
||||
methods: {
|
||||
saveEditedEmoji () {
|
||||
if (!this.isEdited) return
|
||||
|
@ -171,29 +209,6 @@ export default {
|
|||
this.$emit('updatePackFiles', resp)
|
||||
})
|
||||
}
|
||||
},
|
||||
emits: ['updatePackFiles', 'displayError'],
|
||||
props: {
|
||||
placement: String,
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
|
||||
newUpload: Boolean,
|
||||
|
||||
title: String,
|
||||
packName: String,
|
||||
shortcode: {
|
||||
type: String,
|
||||
// Only exists when this is not a new upload
|
||||
default: ''
|
||||
},
|
||||
file: {
|
||||
type: String,
|
||||
// Only exists when this is not a new upload
|
||||
default: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -77,13 +77,13 @@ const Timeline = {
|
|||
}
|
||||
},
|
||||
classes () {
|
||||
let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']
|
||||
let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-embedded']
|
||||
if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])
|
||||
return {
|
||||
root: rootClasses,
|
||||
header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),
|
||||
body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),
|
||||
footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])
|
||||
header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : ['panel-body']),
|
||||
body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : ['panel-body']),
|
||||
footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : ['panel-body'])
|
||||
}
|
||||
},
|
||||
// id map of statuses which need to be hidden in the main list due to pinning logic
|
||||
|
|
|
@ -29,12 +29,17 @@
|
|||
z-index: 2;
|
||||
}
|
||||
|
||||
&.-nonpanel {
|
||||
&.-embedded {
|
||||
.timeline-heading {
|
||||
text-align: center;
|
||||
line-height: 2.75em;
|
||||
padding: 0 0.5em;
|
||||
|
||||
// Override the shrug empty filler
|
||||
&:empty::before {
|
||||
content: initial;
|
||||
}
|
||||
|
||||
.button-default,
|
||||
.alert {
|
||||
line-height: 2em;
|
||||
|
|
|
@ -74,6 +74,7 @@
|
|||
<div
|
||||
v-if="followsTabVisible"
|
||||
key="followees"
|
||||
class="panel-body"
|
||||
:label="$t('user_card.followees')"
|
||||
:disabled="!user.friends_count"
|
||||
>
|
||||
|
@ -89,6 +90,7 @@
|
|||
<div
|
||||
v-if="followersTabVisible"
|
||||
key="followers"
|
||||
class="panel-body"
|
||||
:label="$t('user_card.followers')"
|
||||
:disabled="!user.followers_count"
|
||||
>
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
&:empty::before {
|
||||
content: "¯\\_(ツ)_/¯"; // Could use words but it'd require translations
|
||||
display: block;
|
||||
margin: 1em;
|
||||
padding: 1em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ export const applyTheme = async (input) => {
|
|||
const styleSheet = styleEl.sheet
|
||||
|
||||
getCssRules(themes3.eager, themes3.staticVars).forEach(rule => {
|
||||
// Hack to support multiple selectors on same component
|
||||
// Hacks to support multiple selectors on same component
|
||||
if (rule.match(/::-webkit-scrollbar-button/)) {
|
||||
const parts = rule.split(/[{}]/g)
|
||||
const newRule = [
|
||||
|
@ -57,7 +57,20 @@ export const applyTheme = async (input) => {
|
|||
const chunk = chunks[counter]
|
||||
Promise.all(chunk.map(x => x())).then(result => {
|
||||
getCssRules(result.filter(x => x), themes3.staticVars).forEach(rule => {
|
||||
styleSheet.insertRule(rule, 'index-max')
|
||||
if (rule.match(/\.modal-view/)) {
|
||||
const parts = rule.split(/[{}]/g)
|
||||
const newRule = [
|
||||
parts[0],
|
||||
', ',
|
||||
parts[0].replace(/\.modal-view/, '#modal'),
|
||||
' {',
|
||||
parts[1],
|
||||
'}'
|
||||
].join('')
|
||||
styleSheet.insertRule(newRule, 'index-max')
|
||||
} else {
|
||||
styleSheet.insertRule(rule, 'index-max')
|
||||
}
|
||||
})
|
||||
// const t1 = performance.now()
|
||||
// console.debug('Chunk ' + counter + ' took ' + (t1 - t0) + 'ms')
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
// import { topoSort } from 'src/services/theme_data/theme_data.service.js'
|
||||
import {
|
||||
getAllPossibleCombinations,
|
||||
getAllPossibleCombinations
|
||||
} from 'src/services/theme_data/iss_utils.js'
|
||||
import {
|
||||
init
|
||||
} from 'src/services/theme_data/theme_data_3.service.js'
|
||||
import {
|
||||
sampleRules
|
||||
} from 'src/services/theme_data/pleromafe.t3.js'
|
||||
basePaletteKeys
|
||||
} from 'src/services/theme_data/theme2_to_theme3.js'
|
||||
|
||||
describe.only('Theme Data 3', () => {
|
||||
describe('getAllPossibleCombinations', () => {
|
||||
|
@ -16,10 +18,23 @@ describe.only('Theme Data 3', () => {
|
|||
})
|
||||
|
||||
describe('init', () => {
|
||||
it('test simple case', () => {
|
||||
const out = init(sampleRules, palette)
|
||||
// console.log(JSON.stringify(out, null, 2))
|
||||
console.log('\n' + out.css.join('\n') + '\n')
|
||||
it('Test initialization without anything', () => {
|
||||
const out = init([], '#DEADAF')
|
||||
|
||||
expect(out).to.have.property('eager')
|
||||
expect(out).to.have.property('lazy')
|
||||
expect(out).to.have.property('staticVars')
|
||||
|
||||
expect(out.lazy).to.be.an('array')
|
||||
expect(out.lazy).to.have.lengthOf.above(1)
|
||||
expect(out.eager).to.be.an('array')
|
||||
expect(out.eager).to.have.lengthOf.above(1)
|
||||
expect(out.staticVars).to.be.an('object')
|
||||
|
||||
// check backwards compat/generic stuff
|
||||
basePaletteKeys.forEach(key => {
|
||||
expect(out.staticVars).to.have.property(key)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue