summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-12-13 16:56:19 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-12-13 16:56:19 +0900
commit5472f4b934c8ca8c702152a4a927b4ac94cf3fdb (patch)
tree072cf72f4af1fd8da0fd4c05a32052622f78864f /packages/frontend/src/components
parentfix(frontend): ノート中の絵文字をタップして「リアクショ... (diff)
downloadmisskey-5472f4b934c8ca8c702152a4a927b4ac94cf3fdb.tar.gz
misskey-5472f4b934c8ca8c702152a4a927b4ac94cf3fdb.tar.bz2
misskey-5472f4b934c8ca8c702152a4a927b4ac94cf3fdb.zip
enhance: アイコンデコレーションを複数設定できるように
Diffstat (limited to 'packages/frontend/src/components')
-rw-r--r--packages/frontend/src/components/MkDrive.folder.vue9
-rw-r--r--packages/frontend/src/components/MkWindow.vue2
-rw-r--r--packages/frontend/src/components/global/MkA.vue2
-rw-r--r--packages/frontend/src/components/global/MkAvatar.vue53
4 files changed, 25 insertions, 41 deletions
diff --git a/packages/frontend/src/components/MkDrive.folder.vue b/packages/frontend/src/components/MkDrive.folder.vue
index 5322664664..b0c14d1f0b 100644
--- a/packages/frontend/src/components/MkDrive.folder.vue
+++ b/packages/frontend/src/components/MkDrive.folder.vue
@@ -39,6 +39,7 @@ import { i18n } from '@/i18n.js';
import { defaultStore } from '@/store.js';
import { claimAchievement } from '@/scripts/achievements.js';
import copyToClipboard from '@/scripts/copy-to-clipboard.js';
+import { MenuItem } from '@/types/menu.js';
const props = withDefaults(defineProps<{
folder: Misskey.entities.DriveFolder;
@@ -250,7 +251,7 @@ function setAsUploadFolder() {
}
function onContextmenu(ev: MouseEvent) {
- let menu;
+ let menu: MenuItem[];
menu = [{
text: i18n.ts.openInWindow,
icon: 'ti ti-app-window',
@@ -260,18 +261,18 @@ function onContextmenu(ev: MouseEvent) {
}, {
}, 'closed');
},
- }, null, {
+ }, { type: 'divider' }, {
text: i18n.ts.rename,
icon: 'ti ti-forms',
action: rename,
- }, null, {
+ }, { type: 'divider' }, {
text: i18n.ts.delete,
icon: 'ti ti-trash',
danger: true,
action: deleteFolder,
}];
if (defaultStore.state.devMode) {
- menu = menu.concat([null, {
+ menu = menu.concat([{ type: 'divider' }, {
icon: 'ti ti-id',
text: i18n.ts.copyFolderId,
action: () => {
diff --git a/packages/frontend/src/components/MkWindow.vue b/packages/frontend/src/components/MkWindow.vue
index 1150a29e03..7c8ffcccf9 100644
--- a/packages/frontend/src/components/MkWindow.vue
+++ b/packages/frontend/src/components/MkWindow.vue
@@ -56,7 +56,7 @@ SPDX-License-Identifier: AGPL-3.0-only
import { onBeforeUnmount, onMounted, provide, shallowRef, ref } from 'vue';
import contains from '@/scripts/contains.js';
import * as os from '@/os.js';
-import { MenuItem } from '@/types/menu';
+import { MenuItem } from '@/types/menu.js';
import { i18n } from '@/i18n.js';
import { defaultStore } from '@/store.js';
diff --git a/packages/frontend/src/components/global/MkA.vue b/packages/frontend/src/components/global/MkA.vue
index 809dae421a..5552e96ee0 100644
--- a/packages/frontend/src/components/global/MkA.vue
+++ b/packages/frontend/src/components/global/MkA.vue
@@ -57,7 +57,7 @@ function onContextmenu(ev) {
action: () => {
router.push(props.to, 'forcePage');
},
- }, null, {
+ }, { type: 'divider' }, {
icon: 'ti ti-external-link',
text: i18n.ts.openInNewTab,
action: () => {
diff --git a/packages/frontend/src/components/global/MkAvatar.vue b/packages/frontend/src/components/global/MkAvatar.vue
index c7e50e275a..6aa9a42037 100644
--- a/packages/frontend/src/components/global/MkAvatar.vue
+++ b/packages/frontend/src/components/global/MkAvatar.vue
@@ -23,16 +23,18 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</div>
- <img
- v-if="showDecoration && (decoration || user.avatarDecorations.length > 0)"
- :class="[$style.decoration]"
- :src="decoration?.url ?? user.avatarDecorations[0].url"
- :style="{
- rotate: getDecorationAngle(),
- scale: getDecorationScale(),
- }"
- alt=""
- >
+ <template v-if="showDecoration">
+ <img
+ v-for="decoration in decorations ?? user.avatarDecorations"
+ :class="[$style.decoration]"
+ :src="decoration.url"
+ :style="{
+ rotate: getDecorationAngle(decoration),
+ scale: getDecorationScale(decoration),
+ }"
+ alt=""
+ >
+ </template>
</component>
</template>
@@ -57,19 +59,14 @@ const props = withDefaults(defineProps<{
link?: boolean;
preview?: boolean;
indicator?: boolean;
- decoration?: {
- url: string;
- angle?: number;
- flipH?: boolean;
- flipV?: boolean;
- };
+ decorations?: Misskey.entities.UserDetailed['avatarDecorations'][number][];
forceShowDecoration?: boolean;
}>(), {
target: null,
link: false,
preview: false,
indicator: false,
- decoration: undefined,
+ decorations: undefined,
forceShowDecoration: false,
});
@@ -92,27 +89,13 @@ function onClick(ev: MouseEvent): void {
emit('click', ev);
}
-function getDecorationAngle() {
- let angle;
- if (props.decoration) {
- angle = props.decoration.angle ?? 0;
- } else if (props.user.avatarDecorations.length > 0) {
- angle = props.user.avatarDecorations[0].angle ?? 0;
- } else {
- angle = 0;
- }
+function getDecorationAngle(decoration: Misskey.entities.UserDetailed['avatarDecorations'][number]) {
+ const angle = decoration.angle ?? 0;
return angle === 0 ? undefined : `${angle * 360}deg`;
}
-function getDecorationScale() {
- let scaleX;
- if (props.decoration) {
- scaleX = props.decoration.flipH ? -1 : 1;
- } else if (props.user.avatarDecorations.length > 0) {
- scaleX = props.user.avatarDecorations[0].flipH ? -1 : 1;
- } else {
- scaleX = 1;
- }
+function getDecorationScale(decoration: Misskey.entities.UserDetailed['avatarDecorations'][number]) {
+ const scaleX = decoration.flipH ? -1 : 1;
return scaleX === 1 ? undefined : `${scaleX} 1`;
}