import PropTypes from '../_util/vue-types'; import defaultLocaleData from './default'; export default { props: { componentName: PropTypes.string.def('global'), defaultLocale: PropTypes.oneOfType([PropTypes.object, PropTypes.func]), children: PropTypes.func, }, inject: { localeData: { default: () => ({}) }, }, methods: { getLocale() { const { componentName, defaultLocale } = this; const locale = defaultLocale || defaultLocaleData[componentName || 'global']; const { antLocale } = this.localeData; const localeFromContext = componentName && antLocale ? antLocale[componentName] : {}; return { ...(typeof locale === 'function' ? locale() : locale), ...(localeFromContext || {}), }; }, getLocaleCode() { const { antLocale } = this.localeData; const localeCode = antLocale && antLocale.locale; // Had use LocaleProvide but didn't set locale if (antLocale && antLocale.exist && !localeCode) { return defaultLocaleData.locale; } return localeCode; }, }, render() { const { $scopedSlots } = this; const children = this.children || $scopedSlots.default; const { antLocale } = this.localeData; return children(this.getLocale(), this.getLocaleCode(), antLocale); }, };