summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-04-27 13:31:07 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2025-04-27 13:31:07 +0900
commit73b86d9276dff55a9a5aeb77cf594790e5089e9d (patch)
tree5c570ad4a16dc8e9cc548773fb99f487a3246e89 /packages
parentfix(ci): change Chromatic build to be triggered when frontend `package.json` ... (diff)
downloadsharkey-73b86d9276dff55a9a5aeb77cf594790e5089e9d.tar.gz
sharkey-73b86d9276dff55a9a5aeb77cf594790e5089e9d.tar.bz2
sharkey-73b86d9276dff55a9a5aeb77cf594790e5089e9d.zip
enhance(frontend): improve new emojis manager
Diffstat (limited to 'packages')
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.local.vue35
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.register.vue (renamed from packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue)114
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager2.vue22
3 files changed, 68 insertions, 103 deletions
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue
deleted file mode 100644
index 6e7e7e53e3..0000000000
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue
+++ /dev/null
@@ -1,35 +0,0 @@
-<!--
-SPDX-FileCopyrightText: syuilo and other misskey contributors
-SPDX-License-Identifier: AGPL-3.0-only
--->
-
-<template>
-<MkStickyContainer>
- <template #header>
- <MkPageHeader v-model:tab="headerTab" :tabs="headerTabs" hideTitle thin/>
- </template>
- <XListComponent v-if="headerTab === 'list'" key="localList"/>
- <MkSpacer v-else key="localRegister">
- <XRegisterComponent/>
- </MkSpacer>
-</MkStickyContainer>
-</template>
-
-<script setup lang="ts">
-import { ref, computed } from 'vue';
-import { i18n } from '@/i18n.js';
-import XListComponent from '@/pages/admin/custom-emojis-manager.local.list.vue';
-import XRegisterComponent from '@/pages/admin/custom-emojis-manager.local.register.vue';
-
-type PageMode = 'list' | 'register';
-
-const headerTab = ref<PageMode>('list');
-
-const headerTabs = computed(() => [{
- key: 'list',
- title: i18n.ts._customEmojisManager._local.tabTitleList,
-}, {
- key: 'register',
- title: i18n.ts._customEmojisManager._local.tabTitleRegister,
-}]);
-</script>
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.register.vue
index eff7efd0fa..566acdea31 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.register.vue
@@ -4,69 +4,71 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div class="_gaps">
- <MkFolder>
- <template #icon><i class="ti ti-settings"></i></template>
- <template #label>{{ i18n.ts._customEmojisManager._local._register.uploadSettingTitle }}</template>
- <template #caption>{{ i18n.ts._customEmojisManager._local._register.uploadSettingDescription }}</template>
+<MkSpacer>
+ <div class="_gaps">
+ <MkFolder>
+ <template #icon><i class="ti ti-settings"></i></template>
+ <template #label>{{ i18n.ts._customEmojisManager._local._register.uploadSettingTitle }}</template>
+ <template #caption>{{ i18n.ts._customEmojisManager._local._register.uploadSettingDescription }}</template>
- <div class="_gaps">
- <MkSelect v-model="selectedFolderId">
- <template #label>{{ i18n.ts.uploadFolder }}</template>
- <option v-for="folder in uploadFolders" :key="folder.id" :value="folder.id">
- {{ folder.name }}
- </option>
- </MkSelect>
+ <div class="_gaps">
+ <MkSelect v-model="selectedFolderId">
+ <template #label>{{ i18n.ts.uploadFolder }}</template>
+ <option v-for="folder in uploadFolders" :key="folder.id" :value="folder.id">
+ {{ folder.name }}
+ </option>
+ </MkSelect>
- <MkSwitch v-model="directoryToCategory">
- <template #label>{{ i18n.ts._customEmojisManager._local._register.directoryToCategoryLabel }}</template>
- <template #caption>{{ i18n.ts._customEmojisManager._local._register.directoryToCategoryCaption }}</template>
- </MkSwitch>
- </div>
- </MkFolder>
+ <MkSwitch v-model="directoryToCategory">
+ <template #label>{{ i18n.ts._customEmojisManager._local._register.directoryToCategoryLabel }}</template>
+ <template #caption>{{ i18n.ts._customEmojisManager._local._register.directoryToCategoryCaption }}</template>
+ </MkSwitch>
+ </div>
+ </MkFolder>
- <MkFolder>
- <template #icon><i class="ti ti-notes"></i></template>
- <template #label>{{ i18n.ts._customEmojisManager._gridCommon.registrationLogs }}</template>
- <template #caption>
- {{ i18n.ts._customEmojisManager._gridCommon.registrationLogsCaption }}
- </template>
- <XRegisterLogs :logs="requestLogs"/>
- </MkFolder>
+ <MkFolder>
+ <template #icon><i class="ti ti-notes"></i></template>
+ <template #label>{{ i18n.ts._customEmojisManager._gridCommon.registrationLogs }}</template>
+ <template #caption>
+ {{ i18n.ts._customEmojisManager._gridCommon.registrationLogsCaption }}
+ </template>
+ <XRegisterLogs :logs="requestLogs"/>
+ </MkFolder>
- <div
- :class="[$style.uploadBox, [isDragOver ? $style.dragOver : {}]]"
- @dragover.prevent="isDragOver = true"
- @dragleave.prevent="isDragOver = false"
- @drop.prevent.stop="onDrop"
- >
- <div style="margin-top: 1em">
- {{ i18n.ts._customEmojisManager._local._register.emojiInputAreaCaption }}
+ <div
+ :class="[$style.uploadBox, [isDragOver ? $style.dragOver : {}]]"
+ @dragover.prevent="isDragOver = true"
+ @dragleave.prevent="isDragOver = false"
+ @drop.prevent.stop="onDrop"
+ >
+ <div style="margin-top: 1em">
+ {{ i18n.ts._customEmojisManager._local._register.emojiInputAreaCaption }}
+ </div>
+ <ul>
+ <li>{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList1 }}</li>
+ <li><a @click.prevent="onFileSelectClicked">{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList2 }}</a></li>
+ <li><a @click.prevent="onDriveSelectClicked">{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList3 }}</a></li>
+ </ul>
</div>
- <ul>
- <li>{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList1 }}</li>
- <li><a @click.prevent="onFileSelectClicked">{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList2 }}</a></li>
- <li><a @click.prevent="onDriveSelectClicked">{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList3 }}</a></li>
- </ul>
- </div>
- <div v-if="gridItems.length > 0" :class="$style.gridArea">
- <MkGrid
- :data="gridItems"
- :settings="setupGrid()"
- @event="onGridEvent"
- />
- </div>
+ <div v-if="gridItems.length > 0" :class="$style.gridArea">
+ <MkGrid
+ :data="gridItems"
+ :settings="setupGrid()"
+ @event="onGridEvent"
+ />
+ </div>
- <div v-if="gridItems.length > 0" :class="$style.footer">
- <MkButton primary :disabled="registerButtonDisabled" @click="onRegistryClicked">
- {{ i18n.ts.registration }}
- </MkButton>
- <MkButton @click="onClearClicked">
- {{ i18n.ts.clear }}
- </MkButton>
+ <div v-if="gridItems.length > 0" :class="$style.footer">
+ <MkButton primary :disabled="registerButtonDisabled" @click="onRegistryClicked">
+ {{ i18n.ts.registration }}
+ </MkButton>
+ <MkButton @click="onClearClicked">
+ {{ i18n.ts.clear }}
+ </MkButton>
+ </div>
</div>
-</div>
+</MkSpacer>
</template>
<script setup lang="ts">
@@ -407,7 +409,7 @@ function fromDriveFile(it: Misskey.entities.DriveFile): GridItem {
return {
fileId: it.id,
url: it.url,
- name: it.name.replace(/(\.[a-zA-Z0-9]+)+$/, ''),
+ name: it.name.replace(/(\.[a-zA-Z0-9]+)+$/, '').replaceAll('-', '_').replaceAll(' ', '_'),
host: '',
category: '',
aliases: '',
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager2.vue b/packages/frontend/src/pages/admin/custom-emojis-manager2.vue
index 7667206fa8..14773d7f04 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager2.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager2.vue
@@ -4,25 +4,20 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div>
- <MkStickyContainer>
- <template #header>
- <MkPageHeader v-model:tab="headerTab" :tabs="headerTabs"/>
- </template>
- <XGridLocalComponent v-if="headerTab === 'local'" :class="$style.local"/>
- <XGridRemoteComponent v-else/>
- </MkStickyContainer>
-</div>
+<PageWithHeader v-model:tab="headerTab" :tabs="headerTabs">
+ <XGridLocalComponent v-if="headerTab === 'local'" :class="$style.local"/>
+ <XGridRemoteComponent v-else-if="headerTab === 'remote'" :class="$style.remote"/>
+ <XRegisterComponent v-else-if="headerTab === 'register'" :class="$style.register"/>
+</PageWithHeader>
</template>
<script setup lang="ts">
import { computed, ref } from 'vue';
import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
-import XGridLocalComponent from '@/pages/admin/custom-emojis-manager.local.vue';
+import XGridLocalComponent from '@/pages/admin/custom-emojis-manager.local.list.vue';
import XGridRemoteComponent from '@/pages/admin/custom-emojis-manager.remote.vue';
-import MkPageHeader from '@/components/global/MkPageHeader.vue';
-import MkStickyContainer from '@/components/global/MkStickyContainer.vue';
+import XRegisterComponent from '@/pages/admin/custom-emojis-manager.register.vue';
type PageMode = 'local' | 'remote';
@@ -34,6 +29,9 @@ const headerTabs = computed(() => [{
}, {
key: 'remote',
title: i18n.ts.remote,
+}, {
+ key: 'register',
+ title: i18n.ts._customEmojisManager._local.tabTitleRegister,
}]);
definePage(computed(() => ({