UNPKG

vueless

Version:

Vue Styleless UI Component Library, powered by Tailwind CSS.

30 lines (21 loc) 873 B
import { computed, ref, watch } from "vue"; import { merge } from "lodash-es"; import { recursiveRt } from "../adapter.locale/vueless.ts"; import { useLocale } from "./useLocale.ts"; import { COMPONENTS } from "../constants"; import type { VueMessageType } from "vue-i18n"; export function useComponentLocaleMessages<TLocale>( componentName: keyof typeof COMPONENTS, defaultLocale: Record<string, unknown>, propsLocale: Record<string, unknown> = {}, ) { const { tm, locale } = useLocale(); const globalComponentMassages = ref(recursiveRt(tm(componentName) as VueMessageType)); watch(locale, () => { globalComponentMassages.value = recursiveRt(tm(componentName) as VueMessageType); }); const localeMessages = computed( () => merge({}, defaultLocale, globalComponentMassages.value, propsLocale) as TLocale, ); return { localeMessages }; }