antd
Version:
An enterprise-class UI design language and React-based implementation
81 lines (71 loc) • 2.51 kB
JavaScript
import _extends from 'babel-runtime/helpers/extends';
import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
import _createClass from 'babel-runtime/helpers/createClass';
import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
import _inherits from 'babel-runtime/helpers/inherits';
import * as React from 'react';
import * as PropTypes from 'prop-types';
import * as moment from 'moment';
import interopDefault from '../_util/interopDefault';
import { changeConfirmLocale } from '../modal/locale';
function setMomentLocale(locale) {
if (locale && locale.locale) {
interopDefault(moment).locale(locale.locale);
} else {
interopDefault(moment).locale('en');
}
}
var LocaleProvider = function (_React$Component) {
_inherits(LocaleProvider, _React$Component);
function LocaleProvider(props) {
_classCallCheck(this, LocaleProvider);
var _this = _possibleConstructorReturn(this, (LocaleProvider.__proto__ || Object.getPrototypeOf(LocaleProvider)).call(this, props));
setMomentLocale(props.locale);
changeConfirmLocale(props.locale && props.locale.Modal);
return _this;
}
_createClass(LocaleProvider, [{
key: 'getChildContext',
value: function getChildContext() {
return {
antLocale: _extends({}, this.props.locale, { exist: true })
};
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
var locale = this.props.locale;
var nextLocale = nextProps.locale;
if (locale !== nextLocale) {
setMomentLocale(nextProps.locale);
}
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {
var locale = this.props.locale;
changeConfirmLocale(locale && locale.Modal);
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
changeConfirmLocale();
}
}, {
key: 'render',
value: function render() {
return React.Children.only(this.props.children);
}
}]);
return LocaleProvider;
}(React.Component);
export default LocaleProvider;
LocaleProvider.propTypes = {
locale: PropTypes.object
};
LocaleProvider.defaultProps = {
locale: {}
};
LocaleProvider.childContextTypes = {
antLocale: PropTypes.object
};