ant-design-vue/components/locale-provider/LocaleReceiver.jsx

48 lines
1.2 KiB
Vue
Raw Normal View History

2018-03-19 10:16:27 +08:00
2018-02-23 16:14:59 +08:00
import PropTypes from '../_util/vue-types'
import defaultLocaleData from './default'
2018-02-23 16:14:59 +08:00
export default {
props: {
componentName: PropTypes.string.def('global'),
2018-02-23 16:14:59 +08:00
defaultLocale: PropTypes.oneOfType([
PropTypes.object,
PropTypes.func,
]),
children: PropTypes.func,
},
inject: {
2018-03-15 22:21:25 +08:00
localeData: { default: {}},
2018-02-23 16:14:59 +08:00
},
methods: {
getLocale () {
2018-02-24 18:12:24 +08:00
const { componentName, defaultLocale } = this
const locale = defaultLocale || defaultLocaleData[componentName || 'global']
2018-03-15 22:21:25 +08:00
const { antLocale } = this.localeData
const localeFromContext = componentName && antLocale ? antLocale[componentName] : {}
2018-02-23 16:14:59 +08:00
return {
...(typeof locale === 'function' ? locale() : locale),
2018-02-23 16:14:59 +08:00
...(localeFromContext || {}),
}
},
getLocaleCode () {
2018-03-15 22:21:25 +08:00
const { antLocale } = this.localeData
2018-02-23 16:14:59 +08:00
const localeCode = antLocale && antLocale.locale
// Had use LocaleProvide but didn't set locale
if (antLocale && antLocale.exist && !localeCode) {
return defaultLocaleData.locale
2018-02-23 16:14:59 +08:00
}
return localeCode
},
},
render () {
2018-03-15 21:40:34 +08:00
const { $scopedSlots } = this
const children = this.children || $scopedSlots.default
return children(this.getLocale(), this.getLocaleCode())
2018-02-23 16:14:59 +08:00
},
}