45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
 | 
						|
import PropTypes from '../_util/vue-types'
 | 
						|
 | 
						|
export default {
 | 
						|
  props: {
 | 
						|
    componentName: PropTypes.string,
 | 
						|
    defaultLocale: PropTypes.oneOfType([
 | 
						|
      PropTypes.object,
 | 
						|
      PropTypes.func,
 | 
						|
    ]),
 | 
						|
    children: PropTypes.func,
 | 
						|
  },
 | 
						|
  inject: {
 | 
						|
    localeData: { default: {}},
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    getLocale () {
 | 
						|
      const { componentName, defaultLocale } = this
 | 
						|
      const { antLocale } = this.localeData
 | 
						|
      const localeFromContext = antLocale && antLocale[componentName]
 | 
						|
      return {
 | 
						|
        ...(typeof defaultLocale === 'function' ? defaultLocale() : defaultLocale),
 | 
						|
        ...(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 'en-us'
 | 
						|
      }
 | 
						|
      return localeCode
 | 
						|
    },
 | 
						|
  },
 | 
						|
 | 
						|
  render () {
 | 
						|
    const { $scopedSlots } = this
 | 
						|
    const children = this.children || $scopedSlots.default
 | 
						|
    return children(this.getLocale(), this.getLocaleCode())
 | 
						|
  },
 | 
						|
}
 | 
						|
 |