feat(menu): PHP 기준 공통 메뉴를 런타임 설정으로 이관
Gateway와 게임 공통 메뉴를 영속 JSON에서 읽고 다음 페이지 로드에 반영한다. 운영 PHP의 항목과 순서, desktop/mobile geometry 및 정보 동작을 보존하고 검증·복구 문서를 추가한다.
This commit is contained in:
@@ -9,6 +9,7 @@ import {
|
||||
nationNavigation,
|
||||
quickNavigation,
|
||||
type MainNavigationLink as MainNavigationLinkItem,
|
||||
type MainNavigationEntry,
|
||||
type NationNavigationAccess,
|
||||
type QuickNavigationItem,
|
||||
} from './mainNavigation';
|
||||
@@ -21,6 +22,7 @@ const props = defineProps<{
|
||||
npcMode: number;
|
||||
realtimeEnabled: boolean;
|
||||
refreshing: boolean;
|
||||
entries?: MainNavigationEntry[];
|
||||
}>();
|
||||
|
||||
const emit = defineEmits<{
|
||||
@@ -28,10 +30,11 @@ const emit = defineEmits<{
|
||||
toggleRealtime: [];
|
||||
lobby: [];
|
||||
quick: [item: QuickNavigationItem];
|
||||
action: [action: NonNullable<MainNavigationLinkItem['action']>];
|
||||
}>();
|
||||
|
||||
const { setRoot, openId, close, toggle } = useMenuPopup();
|
||||
const globalEntries = computed(() => buildGlobalNavigation(props.npcMode));
|
||||
const globalEntries = computed(() => buildGlobalNavigation(props.npcMode, props.entries));
|
||||
const nationMenuColor = computed(() => props.nationColor || '#000000');
|
||||
const nationMenuTextColor = computed(() => legacyNationTextColor(nationMenuColor.value));
|
||||
const isActive = (link: MainNavigationLinkItem) => link.highlightStage === props.tournamentStage;
|
||||
@@ -40,6 +43,10 @@ const onQuick = (item: QuickNavigationItem) => {
|
||||
close();
|
||||
emit('quick', item);
|
||||
};
|
||||
const onAction = (action: NonNullable<MainNavigationLinkItem['action']>) => {
|
||||
close();
|
||||
emit('action', action);
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -73,6 +80,7 @@ const onQuick = (item: QuickNavigationItem) => {
|
||||
compact
|
||||
role="menuitem"
|
||||
@navigate="close()"
|
||||
@action="onAction"
|
||||
/>
|
||||
</li>
|
||||
<template v-else-if="entry.kind === 'group'">
|
||||
@@ -88,6 +96,7 @@ const onQuick = (item: QuickNavigationItem) => {
|
||||
compact
|
||||
role="menuitem"
|
||||
@navigate="close()"
|
||||
@action="onAction"
|
||||
/>
|
||||
</li>
|
||||
</template>
|
||||
@@ -100,6 +109,7 @@ const onQuick = (item: QuickNavigationItem) => {
|
||||
compact
|
||||
role="menuitem"
|
||||
@navigate="close()"
|
||||
@action="onAction"
|
||||
/>
|
||||
</li>
|
||||
<template v-for="item in entry.items" :key="item.id">
|
||||
@@ -111,6 +121,7 @@ const onQuick = (item: QuickNavigationItem) => {
|
||||
compact
|
||||
role="menuitem"
|
||||
@navigate="close()"
|
||||
@action="onAction"
|
||||
/>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user