UNPKG

vueless

Version:

Vue Styleless UI Component Library, powered by Tailwind CSS.

33 lines (24 loc) 906 B
import { computed, ref, watch } from "vue"; import { merge } from "lodash-es"; import { recursiveRt } from "../adapter.locale/vueless"; import { useLocale } from "./useLocale"; import { COMPONENTS } from "../constants"; import type { VueMessageType } from "virtual:vueless/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 }; }