import PropTypes from '../_util/vue-types' import * as moment from 'moment' import interopDefault from '../_util/interopDefault' import { changeConfirmLocale } from '../modal/locale' // export interface Locale { // locale: string; // Pagination?: Object; // DatePicker?: Object; // TimePicker?: Object; // Calendar?: Object; // Table?: Object; // Modal?: ModalLocale; // Popconfirm?: Object; // Transfer?: Object; // Select?: Object; // Upload?: Object; // } function setMomentLocale (locale) { if (locale && locale.locale) { interopDefault(moment).locale(locale.locale) } else { interopDefault(moment).locale('en') } } const LocaleProvider = { name: 'ALocaleProvider', props: { locale: PropTypes.object.def({}), }, data () { return { antLocale: { ...this.locale, exist: true, }, } }, provide () { return { localeData: this.$data, } }, watch: { locale (val) { this.antLocale = { ...this.locale, exist: true, } this.$nextTick(() => { setMomentLocale(val) }) }, }, created () { const { locale } = this setMomentLocale(locale) changeConfirmLocale(locale && locale.Modal) }, updated () { const { locale } = this changeConfirmLocale(locale && locale.Modal) }, beforeDestroy () { changeConfirmLocale() }, render () { return this.$slots.default ? this.$slots.default[0] : null }, } /* istanbul ignore next */ LocaleProvider.install = function (Vue) { Vue.component(LocaleProvider.name, LocaleProvider) } export default LocaleProvider