Merge branch 'feature/202501107-all' into feature/20251001-gil
This commit is contained in:
@@ -9,7 +9,7 @@ const currentLayout = computed(() => getLayoutType(pageData.value))
|
||||
|
||||
definePageMeta({
|
||||
layout: false, // 동적 레이아웃을 위해 기본 레이아웃 비활성화
|
||||
middleware: ['inspection']
|
||||
middleware: ['inspection'],
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ const currentLayout = computed(() => getLayoutType(pageData.value))
|
||||
|
||||
definePageMeta({
|
||||
layout: false, // 동적 레이아웃을 위해 기본 레이아웃 비활성화
|
||||
middleware: ['inspection']
|
||||
middleware: ['inspection'],
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ const currentLayout = computed(() => getLayoutType(pageData.value))
|
||||
|
||||
definePageMeta({
|
||||
layout: false, // 동적 레이아웃을 위해 기본 레이아웃 비활성화
|
||||
middleware: 'inspection',
|
||||
middleware: ['inspection'],
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
/* 고정형 */
|
||||
.section-container.static {
|
||||
@apply relative pt-[32px] pb-[80px] px-[20px] sm:px-[40px] md:pt-[64px] md:pb-[200px] bg-[#F0F0F0];
|
||||
@apply overflow-hidden relative pt-[32px] pb-[80px] px-[20px] sm:px-[40px] md:pt-[64px] md:pb-[200px] bg-[#F0F0F0];
|
||||
}
|
||||
.section-static {
|
||||
@apply mx-auto lg:max-w-[1300px];
|
||||
|
||||
@@ -9,7 +9,7 @@ const { gameData } = useGameDataStore()
|
||||
|
||||
const stoveInflowPath = runtimeConfig.public.stoveInflowPath
|
||||
const stoveGameNo = runtimeConfig.public.stoveGameNo
|
||||
const gnbData = gameData?.stove_gnb_json
|
||||
const stoveGnbData = gameData?.stove_gnb_json
|
||||
|
||||
const languageCodes = computed(() => {
|
||||
if (Array.isArray(availableLocales)) {
|
||||
@@ -24,9 +24,9 @@ const loadGnb = (locale: string) => {
|
||||
locale = locale.toLowerCase()
|
||||
|
||||
const gnbOption = {
|
||||
wrapper: '#stove-wrapper',
|
||||
wrapper: '#stove-wrap',
|
||||
isResponsive: true,
|
||||
skin: gnbData?.skin_type || 'gnb-dark-mini',
|
||||
skin: stoveGnbData?.skin_type || 'gnb-dark-mini',
|
||||
widget: {
|
||||
gameListAndService: false,
|
||||
languageSelect: false,
|
||||
@@ -42,7 +42,7 @@ const loadGnb = (locale: string) => {
|
||||
params: {
|
||||
inflow_path: stoveInflowPath,
|
||||
game_no: stoveGameNo,
|
||||
show_play_button: gnbData?.stove_install_button_visible || 'Y',
|
||||
show_play_button: stoveGnbData?.stove_install_button_visible || 'Y',
|
||||
},
|
||||
redirectCurrentPage: true,
|
||||
windowTitle: undefined,
|
||||
@@ -66,5 +66,5 @@ onBeforeUnmount(() => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div id="stove-wrapper" class="relative z-[5]" />
|
||||
<div id="stove-wrap" class="relative z-[5]" />
|
||||
</template>
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
<template>
|
||||
<div id="stove-wrapper" class="relative z-[5]" />
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import type {
|
||||
GameDataValue,
|
||||
} from '#layers/types/api/gameData'
|
||||
import type { GameDataValue } from '#layers/types/api/gameData'
|
||||
let mountedInstance: any = null
|
||||
|
||||
onMounted(() => {
|
||||
@@ -12,16 +7,17 @@ const gameDataStore = useGameDataStore()
|
||||
const gameData = gameDataStore.gameData as GameDataValue
|
||||
const langCodes = gameData?.lang_codes
|
||||
const defaultLangCode = gameData?.default_lang_code
|
||||
const gnbData = gameData?.stove_gnb_json
|
||||
const stoveGnbData = gameData?.stove_gnb_json
|
||||
|
||||
const currentDomain = window.location.protocol + '//' + window.location.hostname;
|
||||
const currentDomain =
|
||||
window.location.protocol + '//' + window.location.hostname
|
||||
if (typeof window !== 'undefined' && (window as any).StoveGnb) {
|
||||
mountedInstance = (window as any).StoveGnb.mount('#stove-wrapper', {
|
||||
mountedInstance = (window as any).StoveGnb.mount('#stove-wrap', {
|
||||
logArea: currentDomain,
|
||||
useLanguageCodeFromPath: true,
|
||||
serviceTitle: {
|
||||
pc: '',
|
||||
mobile: ''
|
||||
mobile: '',
|
||||
},
|
||||
widget: {
|
||||
notification: true,
|
||||
@@ -30,7 +26,7 @@ if (typeof window !== 'undefined' && (window as any).StoveGnb) {
|
||||
themeSelect: false,
|
||||
stoveMenu: {
|
||||
active: false,
|
||||
mobile: true
|
||||
mobile: true,
|
||||
},
|
||||
},
|
||||
global: {
|
||||
@@ -42,7 +38,8 @@ if (typeof window !== 'undefined' && (window as any).StoveGnb) {
|
||||
},
|
||||
mode: {
|
||||
theme: {
|
||||
default: gnbData?.skin_type === 'gnb-dark-mini' ? 'dark' : 'light',
|
||||
default:
|
||||
stoveGnbData?.skin_type === 'gnb-dark-mini' ? 'dark' : 'light',
|
||||
support: ['dark', 'light'],
|
||||
},
|
||||
mini: true,
|
||||
@@ -59,3 +56,6 @@ onBeforeUnmount(() => {
|
||||
mountedInstance = null
|
||||
})
|
||||
</script>
|
||||
<template>
|
||||
<div id="stove-wrap" class="relative z-[5]" />
|
||||
</template>
|
||||
|
||||
@@ -9,7 +9,6 @@ import GrDetail02 from '#layers/templates/GrDetail02/index.vue'
|
||||
import GrDetail03 from '#layers/templates/GrDetail03/index.vue'
|
||||
import GrBoard01 from '#layers/templates/GrBoard01/index.vue'
|
||||
import GrContents01 from '#layers/templates/GrContents01/index.vue'
|
||||
// import FxVideo01 from '#layers/templates/FxVideo01/index.vue'
|
||||
import FxDownload01 from '#layers/templates/FxDownload01/index.vue'
|
||||
|
||||
const templateRegistry = {
|
||||
@@ -24,7 +23,6 @@ const templateRegistry = {
|
||||
GR_DETAIL_02: { component: GrDetail02 },
|
||||
GR_DETAIL_03: { component: GrDetail03 },
|
||||
GR_CONTENTS_01: { component: GrContents01 },
|
||||
// FX_VIDEO_01: { component: FxVideo01 },
|
||||
FX_DOWNLOAD_01: { component: FxDownload01 },
|
||||
} as const
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ const props = defineProps<Props>()
|
||||
|
||||
// Configuration
|
||||
const runtimeConfig = useRuntimeConfig()
|
||||
const dataResourcesUrl = runtimeConfig.public.dataResourcesUrl
|
||||
const dataResourcesUrl = runtimeConfig.public.dataResourcesUrl as string
|
||||
const multilingualFileName = 'test_homepage_brand_download.json'
|
||||
|
||||
// Multilingual
|
||||
@@ -154,7 +154,7 @@ const handleMoveFocus = (target: 'pc' | 'mobile') => {
|
||||
padding: { left: 0, right: 0 },
|
||||
},
|
||||
}"
|
||||
class="overflow-hidden min-w-[320px] w-[100vw] px-[20px] ml-[-20px] sm:px-[40px] sm:ml-[-40px] md:w-full md:px-0 md:ml-0"
|
||||
class="min-w-[320px] w-[100vw] px-[20px] ml-[-20px] sm:px-[40px] sm:ml-[-40px] md:w-full md:px-0 md:ml-0"
|
||||
>
|
||||
<SplideSlide
|
||||
v-for="platform in platformList"
|
||||
@@ -164,7 +164,11 @@ const handleMoveFocus = (target: 'pc' | 'mobile') => {
|
||||
<div
|
||||
class="flex flex-col items-start justify-start gap-[8px] w-full md:gap-[12px]"
|
||||
>
|
||||
<WidgetsFixSubTitle :title="tm(`Download_Box_${platform}_Title`)" />
|
||||
<h4
|
||||
class="relative flex justify-left items-center w-full text-left text-[#1F1F1F] text-[18px] font-bold leading-[26px] tracking-[-0.54px] md:text-[24px] md:leading-[34px] md:tracking-[0.72px]"
|
||||
>
|
||||
<span>{{ tm(`Download_Box_${platform}_Title`) }}</span>
|
||||
</h4>
|
||||
|
||||
<p
|
||||
v-if="
|
||||
|
||||
@@ -145,52 +145,6 @@ export const getImagePaths = (resourcesData: PageDataResourceGroup) => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const formatDateOffset = ({
|
||||
ts,
|
||||
lang,
|
||||
useSeconds,
|
||||
useTimezone
|
||||
}: {
|
||||
ts: number
|
||||
lang: string
|
||||
useSeconds?: boolean
|
||||
useTimezone?: boolean
|
||||
}) => {
|
||||
const offset = { ko: 9, ja: 9, 'zh-tw': 8, en: 0 }[lang] || 0
|
||||
const date = new Date(ts + offset * 3600000)
|
||||
const pad = (n: number) => String(n).padStart(2, '0')
|
||||
|
||||
const year = date.getUTCFullYear()
|
||||
const month = date.getUTCMonth() + 1
|
||||
const day = date.getUTCDate()
|
||||
const hours = date.getUTCHours()
|
||||
const minutes = date.getUTCMinutes()
|
||||
const seconds = date.getUTCSeconds()
|
||||
|
||||
if (lang === 'ko') {
|
||||
let format = `${year}-${pad(month)}-${pad(day)} ${pad(hours)}:${pad(minutes)}`
|
||||
format += useSeconds ? `:${pad(seconds)}` : ''
|
||||
format += useTimezone ? ' (KST)' : ''
|
||||
return `${format}`
|
||||
} else if (lang === 'zh-tw') {
|
||||
let format = `${year}-${pad(month)}-${pad(day)} ${pad(hours)}:${pad(minutes)}`
|
||||
format += useSeconds ? `:${pad(seconds)}` : ''
|
||||
format += useTimezone ? ` (UTC${offset > 0 ? '+' + offset : ''})` : ''
|
||||
return `${format}`
|
||||
} else if (lang === 'ja') {
|
||||
let format = `${year}-${pad(month)}-${pad(day)} ${pad(hours)}:${pad(minutes)}`
|
||||
format += useSeconds ? `:${pad(seconds)}` : ''
|
||||
format += useTimezone ? ' (日本時間)' : ''
|
||||
return `${format}`
|
||||
} else {
|
||||
//= en
|
||||
let format = `${pad(month)}/${pad(day)}/${year} ${pad(hours)}:${pad(minutes)}`
|
||||
format += useSeconds ? `:${pad(seconds)}` : ''
|
||||
format += useTimezone ? ' (UTC)' : ''
|
||||
return `${format}`
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 컴포넌트 그룹의 첫 번째 데이터를 반환합니다.
|
||||
* @param components props.components 또는 group 객체
|
||||
|
||||
Reference in New Issue
Block a user