79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Vue
		
	
	
import { provide } from 'vue';
 | 
						|
import PropTypes from '../_util/vue-types';
 | 
						|
import * as moment from 'moment';
 | 
						|
import interopDefault from '../_util/interopDefault';
 | 
						|
import { changeConfirmLocale } from '../modal/locale';
 | 
						|
import warning from '../_util/warning';
 | 
						|
import { getSlot } from '../_util/props-util';
 | 
						|
// 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;
 | 
						|
// }
 | 
						|
export const ANT_MARK = 'internalMark';
 | 
						|
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(() => ({})),
 | 
						|
    _ANT_MARK__: PropTypes.string,
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    warning(
 | 
						|
      this._ANT_MARK__ === ANT_MARK,
 | 
						|
      'LocaleProvider',
 | 
						|
      '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead',
 | 
						|
    );
 | 
						|
    return {
 | 
						|
      antLocale: {
 | 
						|
        ...this.locale,
 | 
						|
        exist: true,
 | 
						|
      },
 | 
						|
    };
 | 
						|
  },
 | 
						|
  watch: {
 | 
						|
    locale(val) {
 | 
						|
      this.antLocale = {
 | 
						|
        ...val,
 | 
						|
        exist: true,
 | 
						|
      };
 | 
						|
      setMomentLocale(val);
 | 
						|
      changeConfirmLocale(val && val.Modal);
 | 
						|
    },
 | 
						|
  },
 | 
						|
  created() {
 | 
						|
    provide('localeData', this.$data);
 | 
						|
    const { locale } = this;
 | 
						|
    setMomentLocale(locale);
 | 
						|
    changeConfirmLocale(locale && locale.Modal);
 | 
						|
  },
 | 
						|
  beforeUnmount() {
 | 
						|
    changeConfirmLocale();
 | 
						|
  },
 | 
						|
  render() {
 | 
						|
    return getSlot(this);
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
/* istanbul ignore next */
 | 
						|
LocaleProvider.install = function(app) {
 | 
						|
  app.component(LocaleProvider.name, LocaleProvider);
 | 
						|
};
 | 
						|
 | 
						|
export default LocaleProvider;
 |