Files
web-temp/layers/components/layout/StoveGnb.vue
2025-09-09 03:34:09 +00:00

62 lines
1.5 KiB
Vue

<template>
<div id="header-stove"></div>
</template>
<script setup lang="ts">
const runtimeConfig = useRuntimeConfig();
const { locale } = useI18n();
const { $i18n } = useNuxtApp();
const { gameData } = useGameDataStore();
const stoveInflowPath = runtimeConfig.public.stoveInflowPath;
const stoveGameNo = runtimeConfig.public.stoveGameNo;
const gnbData = gameData?.stove_gnb;
const languageCodes = computed(() => {
const availableLocales = ($i18n as any).availableLocales;
if (Array.isArray(availableLocales)) {
return availableLocales.map(
(localeCode: any) => localeCode.code || localeCode
);
}
return [locale.value];
});
function loadGnb(locale: string) {
locale = locale.toLowerCase();
const gnbOption = {
wrapper: "#header-stove",
isResponsive: true,
skin: gnbData?.skin_type || "gnb-dark-mini",
widget: {
gameListAndService: false,
languageSelect: false,
notification: false,
stoveDownload: false,
},
global: {
userGds: true,
defaultSelectedLanguage: locale || "en",
languageCoverages: languageCodes.value,
},
loginMethod: {
params: {
inflow_path: stoveInflowPath,
game_no: stoveGameNo,
show_play_button: gnbData?.stove_install_button_visible || "Y",
},
redirectCurrentPage: true,
windowTitle: undefined,
},
};
const cpHeader = new (window as any).cp.Header(gnbOption);
cpHeader.render();
}
onMounted(() => {
loadGnb(locale.value);
});
</script>