enhance(frontend): ナビゲーションバーのUIを改善
This commit is contained in:
parent
bbca11cc60
commit
e45ae000ed
|
@ -62,6 +62,7 @@ import { i18n } from '@/i18n';
|
||||||
import { definePageMetadata } from '@/scripts/page-metadata';
|
import { definePageMetadata } from '@/scripts/page-metadata';
|
||||||
import { eventBus } from '@/scripts/cherrypick/eventBus';
|
import { eventBus } from '@/scripts/cherrypick/eventBus';
|
||||||
import { deepClone } from '@/scripts/clone';
|
import { deepClone } from '@/scripts/clone';
|
||||||
|
import {MenuItem} from "@/types/menu";
|
||||||
|
|
||||||
const Sortable = defineAsyncComponent(() => import('vuedraggable').then(x => x.default));
|
const Sortable = defineAsyncComponent(() => import('vuedraggable').then(x => x.default));
|
||||||
|
|
||||||
|
@ -85,21 +86,32 @@ async function reloadAsk() {
|
||||||
} else eventBus.emit('hasRequireRefresh', true);
|
} else eventBus.emit('hasRequireRefresh', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function addItem() {
|
async function addItem(e: MouseEvent) {
|
||||||
const menu = Object.keys(navbarItemDef).filter(k => !defaultStore.state.menu.includes(k));
|
const menu = Object.keys(navbarItemDef).filter(k => !defaultStore.state.menu.includes(k));
|
||||||
const { canceled, result: item } = await os.select({
|
os.popupMenu([
|
||||||
title: i18n.ts.addItem,
|
...menu.map(k => ({
|
||||||
items: [...menu.map(k => ({
|
type: 'button',
|
||||||
value: k, text: navbarItemDef[k].title,
|
text: navbarItemDef[k].title,
|
||||||
})), {
|
icon: navbarItemDef[k].icon,
|
||||||
value: '-', text: i18n.ts.divider,
|
action() {
|
||||||
}],
|
|
||||||
});
|
|
||||||
if (canceled) return;
|
|
||||||
items.value = [...items.value, {
|
items.value = [...items.value, {
|
||||||
id: Math.random().toString(),
|
id: Math.random().toString(),
|
||||||
type: item,
|
type: k,
|
||||||
}];
|
}];
|
||||||
|
},
|
||||||
|
})), {
|
||||||
|
type: 'button',
|
||||||
|
text: i18n.ts.divider,
|
||||||
|
// Note: アイコン指定しないとテキストの位置が他の項目とずれる
|
||||||
|
icon: 'ti',
|
||||||
|
action() {
|
||||||
|
items.value = [...items.value, {
|
||||||
|
id: Math.random().toString(),
|
||||||
|
type: '-',
|
||||||
|
}];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
], e.target || e.currentTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeItem(index: number) {
|
function removeItem(index: number) {
|
||||||
|
|
Loading…
Reference in a new issue