summaryrefslogtreecommitdiff
path: root/packages/frontend/src/ui/deck
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/ui/deck')
-rw-r--r--packages/frontend/src/ui/deck/antenna-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/channel-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/column.vue111
-rw-r--r--packages/frontend/src/ui/deck/list-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/role-timeline-column.vue2
-rw-r--r--packages/frontend/src/ui/deck/tl-column.vue58
6 files changed, 104 insertions, 73 deletions
diff --git a/packages/frontend/src/ui/deck/antenna-column.vue b/packages/frontend/src/ui/deck/antenna-column.vue
index 987bd4db55..a41639e71c 100644
--- a/packages/frontend/src/ui/deck/antenna-column.vue
+++ b/packages/frontend/src/ui/deck/antenna-column.vue
@@ -22,7 +22,7 @@ import MkTimeline from '@/components/MkTimeline.vue';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
-import { MenuItem } from '@/types/menu.js';
+import type { MenuItem } from '@/types/menu.js';
import { antennasCache } from '@/cache.js';
import { SoundStore } from '@/store.js';
import { soundSettingsButton } from '@/ui/deck/tl-note-notification.js';
diff --git a/packages/frontend/src/ui/deck/channel-column.vue b/packages/frontend/src/ui/deck/channel-column.vue
index 42c07056e7..5479b53d90 100644
--- a/packages/frontend/src/ui/deck/channel-column.vue
+++ b/packages/frontend/src/ui/deck/channel-column.vue
@@ -29,7 +29,7 @@ import * as os from '@/os.js';
import { favoritedChannelsCache } from '@/cache.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
-import { MenuItem } from '@/types/menu.js';
+import type { MenuItem } from '@/types/menu.js';
import { SoundStore } from '@/store.js';
import { soundSettingsButton } from '@/ui/deck/tl-note-notification.js';
import * as sound from '@/scripts/sound.js';
diff --git a/packages/frontend/src/ui/deck/column.vue b/packages/frontend/src/ui/deck/column.vue
index 893301122e..b97d86f4a3 100644
--- a/packages/frontend/src/ui/deck/column.vue
+++ b/packages/frontend/src/ui/deck/column.vue
@@ -46,7 +46,7 @@ import { onBeforeUnmount, onMounted, provide, watch, shallowRef, ref, computed }
import { updateColumn, swapLeftColumn, swapRightColumn, swapUpColumn, swapDownColumn, stackLeftColumn, popRightColumn, removeColumn, swapColumn, Column } from './deck-store.js';
import * as os from '@/os.js';
import { i18n } from '@/i18n.js';
-import { MenuItem } from '@/types/menu.js';
+import type { MenuItem } from '@/types/menu.js';
provide('shouldHeaderThin', true);
provide('shouldOmitHeaderTitle', true);
@@ -104,7 +104,27 @@ function toggleActive() {
}
function getMenu() {
- let items: MenuItem[] = [{
+ const menuItems: MenuItem[] = [];
+
+ if (props.menu) {
+ menuItems.push(...props.menu, {
+ type: 'divider',
+ });
+ }
+
+ if (props.refresher) {
+ menuItems.push({
+ icon: 'ti ti-refresh',
+ text: i18n.ts.reload,
+ action: () => {
+ if (props.refresher) {
+ props.refresher();
+ }
+ },
+ });
+ }
+
+ menuItems.push({
icon: 'ti ti-settings',
text: i18n.ts._deck.configureColumn,
action: async () => {
@@ -129,74 +149,73 @@ function getMenu() {
if (canceled) return;
updateColumn(props.column.id, result);
},
+ });
+
+ const moveToMenuItems: MenuItem[] = [];
+
+ moveToMenuItems.push({
+ icon: 'ti ti-arrow-left',
+ text: i18n.ts._deck.swapLeft,
+ action: () => {
+ swapLeftColumn(props.column.id);
+ },
}, {
- type: 'parent',
- text: i18n.ts.move + '...',
- icon: 'ti ti-arrows-move',
- children: [{
- icon: 'ti ti-arrow-left',
- text: i18n.ts._deck.swapLeft,
- action: () => {
- swapLeftColumn(props.column.id);
- },
- }, {
- icon: 'ti ti-arrow-right',
- text: i18n.ts._deck.swapRight,
- action: () => {
- swapRightColumn(props.column.id);
- },
- }, props.isStacked ? {
+ icon: 'ti ti-arrow-right',
+ text: i18n.ts._deck.swapRight,
+ action: () => {
+ swapRightColumn(props.column.id);
+ },
+ });
+
+ if (props.isStacked) {
+ moveToMenuItems.push({
icon: 'ti ti-arrow-up',
text: i18n.ts._deck.swapUp,
action: () => {
swapUpColumn(props.column.id);
},
- } : undefined, props.isStacked ? {
+ }, {
icon: 'ti ti-arrow-down',
text: i18n.ts._deck.swapDown,
action: () => {
swapDownColumn(props.column.id);
},
- } : undefined],
+ });
+ }
+
+ menuItems.push({
+ type: 'parent',
+ text: i18n.ts.move + '...',
+ icon: 'ti ti-arrows-move',
+ children: moveToMenuItems,
}, {
icon: 'ti ti-stack-2',
text: i18n.ts._deck.stackLeft,
action: () => {
stackLeftColumn(props.column.id);
},
- }, props.isStacked ? {
- icon: 'ti ti-window-maximize',
- text: i18n.ts._deck.popRight,
- action: () => {
- popRightColumn(props.column.id);
- },
- } : undefined, { type: 'divider' }, {
+ });
+
+ if (props.isStacked) {
+ menuItems.push({
+ icon: 'ti ti-window-maximize',
+ text: i18n.ts._deck.popRight,
+ action: () => {
+ popRightColumn(props.column.id);
+ },
+ });
+ }
+
+ menuItems.push({ type: 'divider' }, {
icon: 'ti ti-trash',
text: i18n.ts.remove,
danger: true,
action: () => {
removeColumn(props.column.id);
},
- }];
-
- if (props.menu) {
- items.unshift({ type: 'divider' });
- items = props.menu.concat(items);
- }
-
- if (props.refresher) {
- items = [{
- icon: 'ti ti-refresh',
- text: i18n.ts.reload,
- action: () => {
- if (props.refresher) {
- props.refresher();
- }
- },
- }, ...items];
- }
+ });
- return items;
+ return menuItems;
}
function showSettingsMenu(ev: MouseEvent) {
diff --git a/packages/frontend/src/ui/deck/list-column.vue b/packages/frontend/src/ui/deck/list-column.vue
index 9aa8f06476..8bb8fe7225 100644
--- a/packages/frontend/src/ui/deck/list-column.vue
+++ b/packages/frontend/src/ui/deck/list-column.vue
@@ -22,7 +22,7 @@ import MkTimeline from '@/components/MkTimeline.vue';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
-import { MenuItem } from '@/types/menu.js';
+import type { MenuItem } from '@/types/menu.js';
import { SoundStore } from '@/store.js';
import { userListsCache } from '@/cache.js';
import { soundSettingsButton } from '@/ui/deck/tl-note-notification.js';
diff --git a/packages/frontend/src/ui/deck/role-timeline-column.vue b/packages/frontend/src/ui/deck/role-timeline-column.vue
index a375e9c574..beb4237978 100644
--- a/packages/frontend/src/ui/deck/role-timeline-column.vue
+++ b/packages/frontend/src/ui/deck/role-timeline-column.vue
@@ -21,7 +21,7 @@ import MkTimeline from '@/components/MkTimeline.vue';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
-import { MenuItem } from '@/types/menu.js';
+import type { MenuItem } from '@/types/menu.js';
import { SoundStore } from '@/store.js';
import { soundSettingsButton } from '@/ui/deck/tl-note-notification.js';
import * as sound from '@/scripts/sound.js';
diff --git a/packages/frontend/src/ui/deck/tl-column.vue b/packages/frontend/src/ui/deck/tl-column.vue
index e210ee7b7a..01da92f731 100644
--- a/packages/frontend/src/ui/deck/tl-column.vue
+++ b/packages/frontend/src/ui/deck/tl-column.vue
@@ -113,29 +113,41 @@ function onNote() {
sound.playMisskeySfxFile(soundSetting.value);
}
-const menu = computed<MenuItem[]>(() => [{
- icon: 'ti ti-pencil',
- text: i18n.ts.timeline,
- action: setType,
-}, {
- icon: 'ti ti-bell',
- text: i18n.ts._deck.newNoteNotificationSettings,
- action: () => soundSettingsButton(soundSetting),
-}, {
- type: 'switch',
- text: i18n.ts.showRenotes,
- ref: withRenotes,
-}, hasWithReplies(props.column.tl) ? {
- type: 'switch',
- text: i18n.ts.showRepliesToOthersInTimeline,
- ref: withReplies,
- disabled: onlyFiles,
-} : undefined, {
- type: 'switch',
- text: i18n.ts.fileAttachedOnly,
- ref: onlyFiles,
- disabled: hasWithReplies(props.column.tl) ? withReplies : false,
-}]);
+const menu = computed<MenuItem[]>(() => {
+ const menuItems: MenuItem[] = [];
+
+ menuItems.push({
+ icon: 'ti ti-pencil',
+ text: i18n.ts.timeline,
+ action: setType,
+ }, {
+ icon: 'ti ti-bell',
+ text: i18n.ts._deck.newNoteNotificationSettings,
+ action: () => soundSettingsButton(soundSetting),
+ }, {
+ type: 'switch',
+ text: i18n.ts.showRenotes,
+ ref: withRenotes,
+ });
+
+ if (hasWithReplies(props.column.tl)) {
+ menuItems.push({
+ type: 'switch',
+ text: i18n.ts.showRepliesToOthersInTimeline,
+ ref: withReplies,
+ disabled: onlyFiles,
+ });
+ }
+
+ menuItems.push({
+ type: 'switch',
+ text: i18n.ts.fileAttachedOnly,
+ ref: onlyFiles,
+ disabled: hasWithReplies(props.column.tl) ? withReplies : false,
+ });
+
+ return menuItems;
+});
</script>
<style lang="scss" module>