Skip to content

Commit 3946e47

Browse files
committed
fix: add basePath & locale on back-link
1 parent 5806ae1 commit 3946e47

File tree

6 files changed

+124
-60
lines changed

6 files changed

+124
-60
lines changed

apps/web/app/pages/events.vue

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<script setup lang="ts">
2-
import { useFetch, useHead } from '#imports'
3-
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
2+
import { useFetch, useHead, usePathWithLocale } from '#imports'
43
import type { RelatedEventInfo } from '@vuejs-jp/model'
54
import { conferenceTitle, linkUrl, ogRelatedEventDescription } from '~/utils/constants'
65
import { generalOg, twitterOg } from '~/utils/og.constants'
@@ -13,10 +12,15 @@ if (error.value) {
1312
}
1413
const { eventsInfo } = data.value as RelatedEvents
1514
16-
const { path: localePath } = useLocaleCurrent()
15+
const pathWithLocale = usePathWithLocale()
1716
1817
const isClose = (startedAt: string) =>
19-
new Date() > new Date(new Date(startedAt).getFullYear(), new Date(startedAt).getMonth(), new Date(startedAt).getDate())
18+
new Date() >
19+
new Date(
20+
new Date(startedAt).getFullYear(),
21+
new Date(startedAt).getMonth(),
22+
new Date(startedAt).getDate(),
23+
)
2024
2125
useHead({
2226
titleTemplate: (titleChunk) => `関連イベント | ${conferenceTitle}`,
@@ -46,7 +50,9 @@ useHead({
4650
:src="event.bannerUrl"
4751
:alt="event.title"
4852
:register-url="event.registerUrl"
49-
:register-action-text="isClose(event.startedAt) ? $t('related_events.close') : $t('related_events.register')"
53+
:register-action-text="
54+
isClose(event.startedAt) ? $t('related_events.close') : $t('related_events.register')
55+
"
5056
:disabled="isClose(event.startedAt)"
5157
>
5258
<template #title>
@@ -64,7 +70,7 @@ useHead({
6470
background-color="white"
6571
color="vue-blue"
6672
target=""
67-
:href="`${localePath}/`"
73+
:href="pathWithLocale('/')"
6874
>
6975
{{ $t('back_to_top') }}
7076
</VFLinkButton>
@@ -89,7 +95,7 @@ useHead({
8995
}
9096
9197
&:before {
92-
content: "";
98+
content: '';
9399
position: absolute;
94100
display: block;
95101
bottom: 0;
@@ -117,7 +123,7 @@ useHead({
117123
118124
@media (--tablet) {
119125
padding: 20px 0 60px;
120-
max-width: 100%
126+
max-width: 100%;
121127
}
122128
123129
li {

apps/web/app/pages/jobboard.vue

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<script setup lang="ts">
2-
import { useFetch, useHead } from '#imports'
3-
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
2+
import { useFetch, useHead, usePathWithLocale } from '#imports'
43
import type { JobInfo } from '@vuejs-jp/model'
54
import { conferenceTitle, linkUrl, ogJobboardDescription } from '~/utils/constants'
65
import { generalOg, twitterOg } from '~/utils/og.constants'
@@ -13,7 +12,7 @@ if (error.value) {
1312
}
1413
const { allJobs } = data.value as Jobs
1514
16-
const { path: localePath } = useLocaleCurrent()
15+
const pathWithLocale = usePathWithLocale()
1716
1817
useHead({
1918
titleTemplate: (titleChunk) => `ジョブボード | ${conferenceTitle}`,
@@ -50,7 +49,7 @@ useHead({
5049
background-color="white"
5150
color="vue-blue"
5251
target=""
53-
:href="`${localePath}/`"
52+
:href="pathWithLocale('/')"
5453
>
5554
{{ $t('back_to_top') }}
5655
</VFLinkButton>
@@ -75,7 +74,7 @@ useHead({
7574
}
7675
7776
&:before {
78-
content: "";
77+
content: '';
7978
position: absolute;
8079
display: block;
8180
bottom: 0;
@@ -103,7 +102,7 @@ useHead({
103102
104103
@media (--tablet) {
105104
padding: 20px 0 60px;
106-
max-width: 100%
105+
max-width: 100%;
107106
}
108107
109108
li {

apps/web/app/pages/privacy.vue

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
<script setup lang="ts">
2-
import { useHead, useI18n } from '#imports'
2+
import { useHead, useI18n, usePathWithLocale } from '#imports'
33
import MarkDownText from '~/components/MarkDownText.vue'
4-
import { useColor, useTypography } from '@vuejs-jp/composable'
5-
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
4+
import { useColor } from '@vuejs-jp/composable'
65
import { conferenceTitle, linkUrl, ogPrivacyDescription } from '~/utils/constants'
76
import { generalOg, twitterOg } from '~/utils/og.constants'
87
98
const { t } = useI18n()
10-
const { path: localePath } = useLocaleCurrent()
11-
const { fontWeight, fontSize } = useTypography()
9+
const pathWithLocale = usePathWithLocale()
1210
const { color } = useColor()
1311
1412
useHead({
@@ -51,7 +49,7 @@ useHead({
5149
background-color="white"
5250
color="vue-blue"
5351
target=""
54-
:href="`${localePath}/`"
52+
:href="pathWithLocale('/')"
5553
>
5654
{{ t('back_to_top') }}
5755
</VFLinkButton>

apps/web/app/pages/sessions/[id]/index.vue

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
<script setup lang="ts">
2-
import { createError, useAsyncData, useHead, useRoute, useRuntimeConfig } from '#imports'
2+
import {
3+
createError,
4+
useAsyncData,
5+
useHead,
6+
useRoute,
7+
useRuntimeConfig,
8+
usePathWithLocale,
9+
} from '#imports'
310
import type { Speaker } from '@vuejs-jp/model'
411
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
512
import { useSupabase } from '~/composables/useSupabase'
@@ -28,6 +35,7 @@ if (!speakerData[0].detail_page_id) {
2835
const { range } = useRange()
2936
const { color, trackName } = useSession()
3037
const currentLocale = useLocaleCurrent().locale
38+
const pathWithLocale = usePathWithLocale()
3139
3240
useHead({
3341
titleTemplate: (titleChunk) => `${speakerData[0].session_title_ja} | ${conferenceTitle}`,
@@ -53,16 +61,30 @@ useHead({
5361
<div class="session-detail">
5462
<div class="session-detail-body">
5563
<div class="detailbody-tags">
56-
<VFTag :label="trackName(speakerData[0].session_place)" :background="color(speakerData[0].session_place)" />
57-
<VFTag :label="range(speakerData[0].session_time_from, speakerData[0].session_time_duration)" background="vue-green/200" />
64+
<VFTag
65+
:label="trackName(speakerData[0].session_place)"
66+
:background="color(speakerData[0].session_place)"
67+
/>
68+
<VFTag
69+
:label="range(speakerData[0].session_time_from, speakerData[0].session_time_duration)"
70+
background="vue-green/200"
71+
/>
5872
</div>
5973

6074
<VFTitle id="session-detail" class="detailbody-title">
61-
{{ currentLocale === 'ja' ? (speakerData[0].session_title_ja ?? 'TBD') : (speakerData[0].session_title_en ?? 'TBD') }}
75+
{{
76+
currentLocale === 'ja'
77+
? speakerData[0].session_title_ja ?? 'TBD'
78+
: speakerData[0].session_title_en ?? 'TBD'
79+
}}
6280
</VFTitle>
6381

6482
<div class="detailbody-explain">
65-
{{ currentLocale === 'ja' ? (speakerData[0].session_description_ja ?? 'TBD') : (speakerData[0].session_description_en ?? 'TBD') }}
83+
{{
84+
currentLocale === 'ja'
85+
? speakerData[0].session_description_ja ?? 'TBD'
86+
: speakerData[0].session_description_en ?? 'TBD'
87+
}}
6688
</div>
6789

6890
<div v-if="speakerData[0].session_doc_url" class="detailbody-archives">
@@ -73,22 +95,30 @@ useHead({
7395
color="vue-blue"
7496
class="detailbody-archive-slide"
7597
>
76-
{{ currentLocale === 'ja' ? speakerData[0].session_doc_title_ja : speakerData[0].session_doc_title_en }}
98+
{{
99+
currentLocale === 'ja'
100+
? speakerData[0].session_doc_title_ja
101+
: speakerData[0].session_doc_title_en
102+
}}
77103
</VFTextLink>
78104
</div>
79105

80106
<div class="detailbody-persons">
81107
<VFSpeaker
82108
:image="speakerData[0].image_url"
83109
:company="currentLocale === 'en' ? speakerData[0].company_en : speakerData[0].company_ja"
84-
:division="currentLocale === 'en' ? speakerData[0].position_en : speakerData[0].position_ja"
110+
:division="
111+
currentLocale === 'en' ? speakerData[0].position_en : speakerData[0].position_ja
112+
"
85113
:name="currentLocale === 'en' ? speakerData[0].name_en : speakerData[0].name_ja"
86114
:github-id="speakerData[0].github_id"
87115
:x-id="speakerData[0].x_id"
88116
loading="eager"
89117
/>
90118
<div class="person-info">
91-
{{ currentLocale === 'ja' ? speakerData[0].description_ja : speakerData[0].description_en }}
119+
{{
120+
currentLocale === 'ja' ? speakerData[0].description_ja : speakerData[0].description_en
121+
}}
92122
</div>
93123
</div>
94124

@@ -98,7 +128,7 @@ useHead({
98128
background-color="white"
99129
color="vue-blue"
100130
target=""
101-
:href="currentLocale === 'ja' ? '/' : `${currentLocale}/`"
131+
:href="pathWithLocale('/')"
102132
>
103133
{{ $t('back_to_top') }}
104134
</VFLinkButton>
@@ -124,7 +154,7 @@ useHead({
124154
}
125155
126156
&:before {
127-
content: "";
157+
content: '';
128158
position: absolute;
129159
display: block;
130160
bottom: 0;
@@ -151,7 +181,7 @@ useHead({
151181
152182
@media (--tablet) {
153183
padding: 20px 0 60px;
154-
max-width: 100%
184+
max-width: 100%;
155185
}
156186
157187
.detailbody-title {

apps/web/app/pages/sharemap.vue

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
<script setup lang="ts">
2-
import { useFetch, useHead } from '#imports'
3-
import type { PanelerInfo, SpeakerCategory, SpeakerInfo, SponsorCategory, SponsorInfo, StaffCategory, StaffInfo } from '@vuejs-jp/model'
4-
import { useLocaleCurrent } from '~/composables/useLocaleCurrent'
2+
import { useFetch, useHead, usePathWithLocale } from '#imports'
3+
import type {
4+
PanelerInfo,
5+
SpeakerCategory,
6+
SpeakerInfo,
7+
SponsorCategory,
8+
SponsorInfo,
9+
StaffCategory,
10+
StaffInfo,
11+
} from '@vuejs-jp/model'
512
import { conferenceTitle, linkUrl, ogSharemapDescription } from '~/utils/constants'
613
import { generalOg, twitterOg } from '~/utils/og.constants'
714
8-
type _SpeakerCategory = Extract<SpeakerCategory, 'sessionSpeakers' | 'lightningTalkSpeakers' | 'sponsorSessionSpeakers'>
15+
type _SpeakerCategory = Extract<
16+
SpeakerCategory,
17+
'sessionSpeakers' | 'lightningTalkSpeakers' | 'sponsorSessionSpeakers'
18+
>
919
type _PanelerCategory = Extract<SpeakerCategory, 'panelEventPanelers'>
1020
type Speakers = Record<_SpeakerCategory, SpeakerInfo>
1121
type Panelers = Record<_PanelerCategory, PanelerInfo>
@@ -15,7 +25,8 @@ type Sponsors = Record<SponsorCategory, SponsorInfo>
1525
type Staffs = Record<StaffCategory, StaffInfo>
1626
1727
const { data: speakers, error: error1 } = await useFetch('/api/speakers')
18-
const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } = speakers.value as Speakers
28+
const { sessionSpeakers, lightningTalkSpeakers, sponsorSessionSpeakers } =
29+
speakers.value as Speakers
1930
const { panelEventPanelers } = speakers.value as Panelers
2031
if (error1.value) {
2132
console.error(error1.value)
@@ -47,7 +58,7 @@ if (error3.value) {
4758
console.error(error3.value)
4859
}
4960
50-
const { path: localePath } = useLocaleCurrent()
61+
const pathWithLocale = usePathWithLocale()
5162
5263
useHead({
5364
// eslint-disable-next-line no-unused-vars
@@ -84,10 +95,8 @@ useHead({
8495
...sponsorSessionSpeakers.list,
8596
...panelEventPanelers.list['nextgen-frontend-crosstalk'],
8697
...panelEventPanelers.list['welcome-vuejs-community'],
87-
]
88-
.map((item) => [JSON.stringify(item), item])
89-
)
90-
.values()
98+
].map((item) => [JSON.stringify(item), item]),
99+
).values(),
91100
)"
92101
:key="speaker.id"
93102
:href="`/sessions/${speaker.detail_page_id}/share`"
@@ -118,10 +127,8 @@ useHead({
118127
...handsonSponsors.list,
119128
...mediaSponsors.list,
120129
...toolSponsors.list,
121-
]
122-
.map((item) => [JSON.stringify(item), item])
123-
)
124-
.values()
130+
].map((item) => [JSON.stringify(item), item]),
131+
).values(),
125132
)"
126133
:key="sponsor.id"
127134
:href="`/sponsors/${sponsor.detail_page_id}/share`"
@@ -150,7 +157,7 @@ useHead({
150157
background-color="white"
151158
color="vue-blue"
152159
target=""
153-
:href="`${localePath}/`"
160+
:href="pathWithLocale('/')"
154161
>
155162
{{ $t('back_to_top') }}
156163
</VFLinkButton>
@@ -175,7 +182,7 @@ useHead({
175182
}
176183
177184
&:before {
178-
content: "";
185+
content: '';
179186
position: absolute;
180187
display: block;
181188
bottom: 0;

0 commit comments

Comments
 (0)