Skip to content

Commit

Permalink
feat: add propertyTranslations support in Storybook #
Browse files Browse the repository at this point in the history
  • Loading branch information
wazolab committed Feb 21, 2024
1 parent a3fb263 commit d33e570
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 28 deletions.
2 changes: 2 additions & 0 deletions .storybook/preview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { config } from '@fortawesome/fontawesome-svg-core'
import { createI18n } from 'vue-i18n'
import messages from '../locales'
import fontawesome from '../plugins/fontawesome'
import { propertyTranslationsVuePlugin } from '../plugins/property-translations'

// After i18n module update
// use config from config/i18n.config.ts
Expand All @@ -19,6 +20,7 @@ setup((app) => {
config.autoAddCss = true
app.use(fontawesome)
app.use(i18n)
app.use(propertyTranslationsVuePlugin)
app.component('NuxtLink', {
props: {
to: {
Expand Down
63 changes: 35 additions & 28 deletions plugins/property-translations.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { App } from 'vue'
import { defineNuxtPlugin } from '#app/nuxt'
import type { PropertyTranslations } from '~/lib/apiPropertyTranslations'

Expand All @@ -22,35 +23,41 @@ export interface PropertyTranslationsPlugin {
propertyTranslations: PropertyTranslations
}

export default defineNuxtPlugin((_nuxtApp) => {
const pt: PropertyTranslationsPlugin = {
propertyTranslations: {},
set(setPropertyTranslations: PropertyTranslations): void {
pt.propertyTranslations = setPropertyTranslations
},
p(
propertyName: string,
context: PropertyTranslationsContextEnum = Default,
): string {
const pn = pt.propertyTranslations[propertyName]
return (
// When context exists, does not use default
(pn?.[context] ? pn?.[context]?.fr : pn?.[Default]?.fr) || propertyName
)
},
pv(
propertyName: string,
valueName: string,
context: PropertyTranslationsContextEnum = Default,
): string {
const pn = pt.propertyTranslations[propertyName]?.values?.[valueName]
return (
// When context exists, does not use default
(pn?.[context] ? pn?.[context]?.fr : pn?.[Default]?.fr) || valueName
)
},
}
const pt: PropertyTranslationsPlugin = {
propertyTranslations: {},
set(setPropertyTranslations: PropertyTranslations): void {
pt.propertyTranslations = setPropertyTranslations
},
p(
propertyName: string,
context: PropertyTranslationsContextEnum = Default,
): string {
const pn = pt.propertyTranslations[propertyName]
return (
// When context exists, does not use default
(pn?.[context] ? pn?.[context]?.fr : pn?.[Default]?.fr) || propertyName
)
},
pv(
propertyName: string,
valueName: string,
context: PropertyTranslationsContextEnum = Default,
): string {
const pn = pt.propertyTranslations[propertyName]?.values?.[valueName]
return (
// When context exists, does not use default
(pn?.[context] ? pn?.[context]?.fr : pn?.[Default]?.fr) || valueName
)
},
}

export const propertyTranslationsVuePlugin = {
install(app: App, _options?: object) {
app.config.globalProperties.$propertyTranslations = pt
},
}

export default defineNuxtPlugin((_nuxtApp) => {
return {
provide: {
propertyTranslations: pt,
Expand Down

0 comments on commit d33e570

Please sign in to comment.