diff --git a/changelog.d/emoji-upload.-zip.add b/changelog.d/emoji-upload.-zip.add new file mode 100644 index 000000000..798720eef --- /dev/null +++ b/changelog.d/emoji-upload.-zip.add @@ -0,0 +1 @@ +Added a way to upload new packs from a URL or ZIP file via the admin-fe diff --git a/changelog.d/weight-loss.change b/changelog.d/weight-loss.change new file mode 100644 index 000000000..8c1322bf9 --- /dev/null +++ b/changelog.d/weight-loss.change @@ -0,0 +1 @@ +Reduced time taken processing theme by half diff --git a/package.json b/package.json index eea94a10e..62164fe61 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "lint-fix": "eslint --fix src test/unit/specs test/e2e/specs" }, "dependencies": { - "@babel/runtime": "7.27.1", + "@babel/runtime": "7.28.2", "@chenfengyuan/vue-qrcode": "2.0.0", "@fortawesome/fontawesome-svg-core": "6.7.2", "@fortawesome/free-regular-svg-icons": "6.7.2", @@ -54,10 +54,10 @@ "vuex": "4.1.0" }, "devDependencies": { - "@babel/core": "7.27.1", - "@babel/eslint-parser": "7.27.1", - "@babel/plugin-transform-runtime": "7.27.1", - "@babel/preset-env": "7.27.2", + "@babel/core": "7.28.0", + "@babel/eslint-parser": "7.28.0", + "@babel/plugin-transform-runtime": "7.28.0", + "@babel/preset-env": "7.28.0", "@babel/register": "7.27.1", "@ungap/event-target": "0.2.4", "@vitejs/plugin-vue": "^5.2.1", @@ -70,13 +70,13 @@ "@vue/test-utils": "2.4.6", "autoprefixer": "10.4.21", "babel-plugin-lodash": "3.3.4", - "chai": "5.2.0", + "chai": "5.2.1", "chalk": "5.4.1", "chromedriver": "135.0.4", "connect-history-api-fallback": "2.0.0", "cross-spawn": "7.0.6", "custom-event-polyfill": "1.0.7", - "eslint": "9.26.0", + "eslint": "9.33.0", "vue-eslint-parser": "10.1.3", "eslint-config-standard": "17.1.0", "eslint-formatter-friendly": "7.0.0", @@ -91,9 +91,9 @@ "iso-639-1": "3.1.5", "lodash": "4.17.21", "msw": "2.10.2", - "nightwatch": "3.12.1", + "nightwatch": "3.12.2", "playwright": "1.52.0", - "postcss": "8.5.3", + "postcss": "8.5.6", "postcss-html": "^1.5.0", "postcss-scss": "^4.0.6", "sass": "1.89.2", diff --git a/src/components/attachment/attachment.style.js b/src/components/attachment/attachment.style.js deleted file mode 100644 index a9455e367..000000000 --- a/src/components/attachment/attachment.style.js +++ /dev/null @@ -1,27 +0,0 @@ -export default { - name: 'Attachment', - selector: '.Attachment', - notEditable: true, - validInnerComponents: [ - 'Border', - 'Button', - 'Input' - ], - defaultRules: [ - { - directives: { - roundness: 3 - } - }, - { - component: 'Button', - parent: { - component: 'Attachment' - }, - directives: { - background: '#FFFFFF', - opacity: 0.5 - } - } - ] -} diff --git a/src/components/chat_message/chat_message.style.js b/src/components/chat_message/chat_message.style.js index 9b57ad371..76b565823 100644 --- a/src/components/chat_message/chat_message.style.js +++ b/src/components/chat_message/chat_message.style.js @@ -8,9 +8,6 @@ export default { 'Text', 'Icon', 'Border', - 'Button', - 'RichContent', - 'Attachment', 'PollGraph' ], defaultRules: [ diff --git a/src/components/list/list_item.style.js b/src/components/list/list_item.style.js deleted file mode 100644 index 49b2b035f..000000000 --- a/src/components/list/list_item.style.js +++ /dev/null @@ -1,48 +0,0 @@ -export default { - name: 'ListItem', - selector: '.list-item', - states: { - active: '.-active', - hover: ':is(:hover, :focus-visible, :has(:focus-visible)):not(.-non-interactive)' - }, - validInnerComponents: [ - 'Text', - 'Link', - 'Icon', - 'Border', - 'Button', - 'ButtonUnstyled', - 'RichContent', - 'Input', - 'Avatar' - ], - defaultRules: [ - { - directives: { - background: '--bg', - opacity: 0 - } - }, - { - state: ['active'], - directives: { - background: '--inheritedBackground, 10', - opacity: 1 - } - }, - { - state: ['hover'], - directives: { - background: '--inheritedBackground, 10', - opacity: 1 - } - }, - { - state: ['hover', 'active'], - directives: { - background: '--inheritedBackground, 20', - opacity: 1 - } - } - ] -} diff --git a/src/components/menu_item.style.js b/src/components/menu_item.style.js index 883355efa..859932062 100644 --- a/src/components/menu_item.style.js +++ b/src/components/menu_item.style.js @@ -4,11 +4,7 @@ export default { validInnerComponents: [ 'Text', 'Icon', - 'Input', - 'Border', - 'ButtonUnstyled', - 'Badge', - 'Avatar' + 'Border' ], states: { hover: ':is(:hover, :focus-visible, :has(:focus-visible)):not(.disabled)', diff --git a/src/components/mobile_drawer.style.js b/src/components/mobile_drawer.style.js index 398bc186e..0f2cf4e59 100644 --- a/src/components/mobile_drawer.style.js +++ b/src/components/mobile_drawer.style.js @@ -2,18 +2,7 @@ export default { name: 'MobileDrawer', selector: '.mobile-drawer', validInnerComponents: [ - 'Text', - 'Link', - 'Icon', - 'Border', - 'Button', - 'ButtonUnstyled', - 'Input', - 'PanelHeader', - 'MenuItem', - 'Notification', - 'Alert', - 'UserCard' + 'MenuItem' ], defaultRules: [ { @@ -21,21 +10,6 @@ export default { background: '--bg', backgroundNoCssColor: 'yes' } - }, - { - component: 'PanelHeader', - parent: { component: 'MobileDrawer' }, - directives: { - background: '--fg', - shadow: [{ - x: 0, - y: 0, - blur: 4, - spread: 0, - color: '#000000', - alpha: 0.6 - }] - } } ] } diff --git a/src/components/notification/notification.style.js b/src/components/notification/notification.style.js index c6d317d1c..05c1f6f23 100644 --- a/src/components/notification/notification.style.js +++ b/src/components/notification/notification.style.js @@ -6,12 +6,7 @@ export default { 'Link', 'Icon', 'Border', - 'Button', - 'ButtonUnstyled', - 'RichContent', - 'Input', 'Avatar', - 'Attachment', 'PollGraph' ], defaultRules: [] diff --git a/src/components/panel.style.js b/src/components/panel.style.js index a017a52bc..2c8956ae1 100644 --- a/src/components/panel.style.js +++ b/src/components/panel.style.js @@ -6,29 +6,17 @@ export default { 'Link', 'Icon', 'Border', - 'Button', - 'ButtonUnstyled', - 'Input', 'PanelHeader', - 'MenuItem', 'Post', 'Notification', - 'Alert', - 'UserCard', - 'Chat', - 'Attachment', - 'Tab', - 'ListItem' + 'MenuItem' ], validInnerComponentsLite: [ 'Text', 'Link', 'Icon', 'Border', - 'Button', - 'Input', - 'PanelHeader', - 'Alert' + 'PanelHeader' ], defaultRules: [ { diff --git a/src/components/panel_header.style.js b/src/components/panel_header.style.js index 226ff9e16..4e5f97760 100644 --- a/src/components/panel_header.style.js +++ b/src/components/panel_header.style.js @@ -7,9 +7,7 @@ export default { 'Icon', 'Button', 'ButtonUnstyled', - 'Badge', - 'Alert', - 'Avatar' + 'Alert' ], defaultRules: [ { diff --git a/src/components/popover.style.js b/src/components/popover.style.js index 0197271b9..455b5f5e0 100644 --- a/src/components/popover.style.js +++ b/src/components/popover.style.js @@ -6,16 +6,7 @@ export default { modal: '.modal' }, validInnerComponents: [ - 'Text', - 'Link', - 'Icon', - 'Border', - 'Button', - 'ButtonUnstyled', - 'Input', - 'MenuItem', - 'Post', - 'UserCard' + 'MenuItem' ], defaultRules: [ { diff --git a/src/components/rich_content/rich_content.scss b/src/components/rich_content/rich_content.scss index 140be2f98..6b70d1356 100644 --- a/src/components/rich_content/rich_content.scss +++ b/src/components/rich_content/rich_content.scss @@ -2,6 +2,7 @@ font-family: var(--font); &.-faint { + color: var(--text); /* stylelint-disable declaration-no-important */ --text: var(--textFaint) !important; --link: var(--linkFaint) !important; diff --git a/src/components/rich_content/rich_content.style.js b/src/components/rich_content/rich_content.style.js deleted file mode 100644 index eaba9c4b1..000000000 --- a/src/components/rich_content/rich_content.style.js +++ /dev/null @@ -1,20 +0,0 @@ -export default { - name: 'RichContent', - selector: '.RichContent', - notEditable: true, - transparent: true, - validInnerComponents: [ - 'Text', - 'FunText', - 'Link' - ], - defaultRules: [ - { - directives: { - '--font': 'generic | inherit', - '--monoFont': 'generic | monospace', - textNoCssColor: 'yes' - } - } - ] -} diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js index 7f575bcb4..a315756e8 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.js +++ b/src/components/settings_modal/admin_tabs/emoji_tab.js @@ -32,7 +32,10 @@ const EmojiTab = { newPackName: '', deleteModalVisible: false, remotePackInstance: '', - remotePackDownloadAs: '' + remotePackDownloadAs: '', + + remotePackURL: '', + remotePackFile: null } }, @@ -220,7 +223,7 @@ const EmojiTab = { .then(data => data.json()) .then(resp => { if (resp === 'ok') { - this.$refs.dlPackPopover.hidePopover() + this.$refs.downloadPackPopover.hidePopover() return this.refreshPackList() } else { @@ -232,6 +235,47 @@ const EmojiTab = { this.remotePackDownloadAs = '' }) }, + downloadRemoteURLPack () { + this.$store.state.api.backendInteractor.downloadRemoteEmojiPackZIP({ + url: this.remotePackURL, packName: this.newPackName + }) + .then(data => data.json()) + .then(resp => { + if (resp === 'ok') { + this.$refs.additionalRemotePopover.hidePopover() + + return this.refreshPackList() + } else { + this.displayError(resp.error) + return Promise.reject(resp) + } + }).then(() => { + this.packName = this.newPackName + this.newPackName = '' + this.remotePackURL = '' + }) + }, + downloadRemoteFilePack () { + this.$store.state.api.backendInteractor.downloadRemoteEmojiPackZIP({ + file: this.remotePackFile[0], packName: this.newPackName + }) + .then(data => data.json()) + .then(resp => { + if (resp === 'ok') { + this.$refs.additionalRemotePopover.hidePopover() + + return this.refreshPackList() + } else { + this.displayError(resp.error) + return Promise.reject(resp) + } + }).then(() => { + this.packName = this.newPackName + this.newPackName = '' + this.remotePackURL = '' + }) + }, + displayError (msg) { useInterfaceStore().pushGlobalNotice({ messageKey: 'admin_dash.emoji.error', diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.vue b/src/components/settings_modal/admin_tabs/emoji_tab.vue index 4bf64c921..333ff8b0e 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.vue +++ b/src/components/settings_modal/admin_tabs/emoji_tab.vue @@ -62,6 +62,64 @@ +

{{ $t('admin_dash.emoji.emoji_packs') }}

@@ -240,12 +298,12 @@ v-if="pack.remote !== undefined" class="button button-default btn" type="button" - @click="$refs.dlPackPopover.showPopover" + @click="$refs.downloadPackPopover.showPopover" > {{ $t('admin_dash.emoji.download_pack') }}
-