mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-07 09:26:06 +08:00
Lazy set moment locale (#8785)
This commit is contained in:
parent
5dfb114842
commit
7f5922b209
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,4 @@
|
||||
/* eslint-disable react/no-multi-comp */
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import moment from 'moment';
|
||||
@ -37,8 +38,9 @@ import srRS from '../sr_RS';
|
||||
import isIS from '../is_IS';
|
||||
import arEG from '../ar_EG';
|
||||
import ukUA from '../uk_UA';
|
||||
import zhCN from '../zh_CN';
|
||||
|
||||
const locales = [enUS, ptBR, ptPT, ruRU, esES, svSE, frBE, deDE, nlNL, caES, csCZ, koKR, etEE, skSK, jaJP, trTR, zhTW, fiFI, plPL, bgBG, enGB, frFR, nlBE, itIT, viVN, thTH, faIR, elGR, nbNO, srRS, isIS, arEG, ukUA];
|
||||
const locales = [enUS, ptBR, ptPT, ruRU, esES, svSE, frBE, deDE, nlNL, caES, csCZ, koKR, etEE, skSK, jaJP, trTR, zhTW, fiFI, plPL, bgBG, enGB, frFR, nlBE, itIT, viVN, thTH, faIR, elGR, nbNO, srRS, isIS, arEG, ukUA, zhCN];
|
||||
|
||||
const { Option } = Select;
|
||||
const { RangePicker } = DatePicker;
|
||||
@ -83,16 +85,22 @@ const App = () => (
|
||||
);
|
||||
|
||||
describe('Locale Provider', () => {
|
||||
beforeAll(() => {
|
||||
MockDate.set(moment('2017-09-18T03:30:07.795Z').valueOf() + (new Date().getTimezoneOffset() * 60 * 1000));
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
MockDate.reset();
|
||||
});
|
||||
|
||||
locales.forEach((locale) => {
|
||||
it(`should display the text as ${locale.locale}`, () => {
|
||||
MockDate.set(moment('2017-09-18T03:30:07.795Z').valueOf() + (new Date().getTimezoneOffset() * 60 * 1000));
|
||||
const wrapper = mount(
|
||||
<LocaleProvider locale={locale}>
|
||||
<App />
|
||||
</LocaleProvider>
|
||||
);
|
||||
expect(wrapper.render()).toMatchSnapshot();
|
||||
MockDate.reset();
|
||||
});
|
||||
});
|
||||
|
||||
@ -114,10 +122,36 @@ describe('Locale Provider', () => {
|
||||
</LocaleProvider>
|
||||
);
|
||||
const currentConfirmNode = document.querySelectorAll('.ant-confirm')[document.querySelectorAll('.ant-confirm').length - 1];
|
||||
const cancelButtonText = currentConfirmNode.querySelectorAll('.ant-btn:not(.ant-btn-primary) span')[0].innerHTML;
|
||||
const okButtonText = currentConfirmNode.querySelectorAll('.ant-btn-primary span')[0].innerHTML;
|
||||
let cancelButtonText = currentConfirmNode.querySelectorAll('.ant-btn:not(.ant-btn-primary) span')[0].innerHTML;
|
||||
let okButtonText = currentConfirmNode.querySelectorAll('.ant-btn-primary span')[0].innerHTML;
|
||||
if (locale.locale === 'zh-cn') {
|
||||
cancelButtonText = cancelButtonText.replace(' ', '');
|
||||
okButtonText = okButtonText.replace(' ', '');
|
||||
}
|
||||
expect(cancelButtonText).toBe(locale.Modal.cancelText);
|
||||
expect(okButtonText).toBe(locale.Modal.okText);
|
||||
});
|
||||
});
|
||||
|
||||
it('set moment locale when locale changes', () => {
|
||||
class Test extends React.Component {
|
||||
state = {
|
||||
locale: zhCN,
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<LocaleProvider locale={this.state.locale}>
|
||||
<div>
|
||||
<DatePicker defaultValue={moment()} open />
|
||||
</div>
|
||||
</LocaleProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
const wrapper = mount(<Test />);
|
||||
expect(wrapper.render()).toMatchSnapshot();
|
||||
wrapper.setState({ locale: frFR });
|
||||
expect(wrapper.render()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('ar');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/ar_EG';
|
||||
import DatePicker from '../date-picker/locale/ar_EG';
|
||||
import TimePicker from '../time-picker/locale/ar_EG';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('bg');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/bg_BG';
|
||||
import DatePicker from '../date-picker/locale/bg_BG';
|
||||
import TimePicker from '../time-picker/locale/bg_BG';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('ca');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/ca_ES';
|
||||
import DatePicker from '../date-picker/locale/ca_ES';
|
||||
import TimePicker from '../time-picker/locale/ca_ES';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('cs');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/cs_CZ';
|
||||
import DatePicker from '../date-picker/locale/cs_CZ';
|
||||
import TimePicker from '../time-picker/locale/cs_CZ';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('de');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/de_DE';
|
||||
import DatePicker from '../date-picker/locale/de_DE';
|
||||
import TimePicker from '../time-picker/locale/de_DE';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('el');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/el_GR';
|
||||
import DatePicker from '../date-picker/locale/el_GR';
|
||||
import TimePicker from '../time-picker/locale/el_GR';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('en-gb');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/en_GB';
|
||||
import DatePicker from '../date-picker/locale/en_GB';
|
||||
import TimePicker from '../time-picker/locale/en_GB';
|
||||
|
@ -1,5 +1,3 @@
|
||||
import defaultLocale from './default';
|
||||
import * as moment from 'moment';
|
||||
moment.locale('en');
|
||||
|
||||
export default defaultLocale;
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('et');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/et_EE';
|
||||
import DatePicker from '../date-picker/locale/et_EE';
|
||||
import TimePicker from '../time-picker/locale/et_EE';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('fa');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/fa_IR';
|
||||
import DatePicker from '../date-picker/locale/fa_IR';
|
||||
import TimePicker from '../time-picker/locale/fa_IR';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('fi');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/fi_FI';
|
||||
import DatePicker from '../date-picker/locale/fi_FI';
|
||||
import TimePicker from '../time-picker/locale/fi_FI';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('fr');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/fr_BE';
|
||||
import DatePicker from '../date-picker/locale/fr_BE';
|
||||
import TimePicker from '../time-picker/locale/fr_BE';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('fr');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/fr_FR';
|
||||
import DatePicker from '../date-picker/locale/fr_FR';
|
||||
import TimePicker from '../time-picker/locale/fr_FR';
|
||||
|
@ -1,28 +1,42 @@
|
||||
import * as React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import * as moment from 'moment';
|
||||
import { ModalLocale, 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;
|
||||
}
|
||||
|
||||
export interface LocaleProviderProps {
|
||||
locale: {
|
||||
Pagination?: Object,
|
||||
DatePicker?: Object,
|
||||
TimePicker?: Object,
|
||||
Calendar?: Object,
|
||||
Table?: Object,
|
||||
Modal?: ModalLocale,
|
||||
Popconfirm?: Object,
|
||||
Transfer?: Object,
|
||||
Select?: Object,
|
||||
Upload?: Object,
|
||||
};
|
||||
locale: Locale;
|
||||
children?: React.ReactElement<any>;
|
||||
}
|
||||
|
||||
function setMomentLocale(locale: Locale) {
|
||||
if (locale && locale.locale) {
|
||||
moment.locale(locale.locale);
|
||||
}
|
||||
}
|
||||
|
||||
export default class LocaleProvider extends React.Component<LocaleProviderProps, any> {
|
||||
static propTypes = {
|
||||
locale: PropTypes.object,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
locale: {},
|
||||
};
|
||||
|
||||
static childContextTypes = {
|
||||
antLocale: PropTypes.object,
|
||||
};
|
||||
@ -37,15 +51,24 @@ export default class LocaleProvider extends React.Component<LocaleProviderProps,
|
||||
}
|
||||
|
||||
componentWillMount() {
|
||||
setMomentLocale(this.props.locale);
|
||||
this.componentDidUpdate();
|
||||
}
|
||||
|
||||
componentWillReceiveProps(nextProps: LocaleProviderProps) {
|
||||
const { locale } = this.props;
|
||||
const nextLocale = nextProps.locale;
|
||||
if (locale.locale !== nextLocale.locale) {
|
||||
setMomentLocale(nextProps.locale);
|
||||
}
|
||||
}
|
||||
|
||||
componentDidUpdate() {
|
||||
const { locale } = this.props;
|
||||
changeConfirmLocale(locale && locale.Modal);
|
||||
}
|
||||
|
||||
componentWillUnMount() {
|
||||
componentWillUnmount() {
|
||||
changeConfirmLocale();
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('is');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/is_IS';
|
||||
import DatePicker from '../date-picker/locale/is_IS';
|
||||
import TimePicker from '../time-picker/locale/is_IS';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('it');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/it_IT';
|
||||
import DatePicker from '../date-picker/locale/it_IT';
|
||||
import TimePicker from '../time-picker/locale/it_IT';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('ja');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/ja_JP';
|
||||
import DatePicker from '../date-picker/locale/ja_JP';
|
||||
import TimePicker from '../time-picker/locale/ja_JP';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('ko');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/ko_KR';
|
||||
import DatePicker from '../date-picker/locale/ko_KR';
|
||||
import TimePicker from '../time-picker/locale/ko_KR';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('nb');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/nb_NO';
|
||||
import DatePicker from '../date-picker/locale/nb_NO';
|
||||
import TimePicker from '../time-picker/locale/nb_NO';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('nl-be');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/nl_BE';
|
||||
import DatePicker from '../date-picker/locale/nl_BE';
|
||||
import TimePicker from '../time-picker/locale/nl_BE';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('nl');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/nl_NL';
|
||||
import DatePicker from '../date-picker/locale/nl_NL';
|
||||
import TimePicker from '../time-picker/locale/nl_NL';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('pl');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/pl_PL';
|
||||
import DatePicker from '../date-picker/locale/pl_PL';
|
||||
import TimePicker from '../time-picker/locale/pl_PL';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('pt-br');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/pt_BR';
|
||||
import DatePicker from '../date-picker/locale/pt_BR';
|
||||
import TimePicker from '../time-picker/locale/pt_BR';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('pt');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/pt_PT';
|
||||
import DatePicker from '../date-picker/locale/pt_PT';
|
||||
import TimePicker from '../time-picker/locale/pt_PT';
|
||||
|
@ -1,10 +1,3 @@
|
||||
/**
|
||||
* Created by Andrey Gayvoronsky on 13/04/16.
|
||||
*/
|
||||
|
||||
import * as moment from 'moment';
|
||||
moment.locale('ru');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/ru_RU';
|
||||
import DatePicker from '../date-picker/locale/ru_RU';
|
||||
import TimePicker from '../time-picker/locale/ru_RU';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('sk');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/sk_SK';
|
||||
import DatePicker from '../date-picker/locale/sk_SK';
|
||||
import TimePicker from '../time-picker/locale/sk_SK';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('sr');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/sr_RS';
|
||||
import DatePicker from '../date-picker/locale/sr_RS';
|
||||
import TimePicker from '../time-picker/locale/sr_RS';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('sv');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/sv_SE';
|
||||
import DatePicker from '../date-picker/locale/sv_SE';
|
||||
import TimePicker from '../time-picker/locale/sv_SE';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('th');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/th_TH';
|
||||
import DatePicker from '../date-picker/locale/th_TH';
|
||||
import TimePicker from '../time-picker/locale/th_TH';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('tr');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/en_US';
|
||||
import DatePicker from '../date-picker/locale/tr_TR';
|
||||
import TimePicker from '../time-picker/locale/tr_TR';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('uk');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/uk_UA';
|
||||
import DatePicker from '../date-picker/locale/uk_UA';
|
||||
import TimePicker from '../time-picker/locale/uk_UA';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('vi');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/vi_VN';
|
||||
import DatePicker from '../date-picker/locale/vi_VN';
|
||||
import TimePicker from '../time-picker/locale/vi_VN';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('zh-cn');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/zh_CN';
|
||||
import DatePicker from '../date-picker/locale/zh_CN';
|
||||
import TimePicker from '../time-picker/locale/zh_CN';
|
||||
|
@ -1,6 +1,3 @@
|
||||
import * as moment from 'moment';
|
||||
moment.locale('zh-tw');
|
||||
|
||||
import Pagination from 'rc-pagination/lib/locale/zh_TW';
|
||||
import DatePicker from '../date-picker/locale/zh_TW';
|
||||
import TimePicker from '../time-picker/locale/zh_TW';
|
||||
|
Loading…
Reference in New Issue
Block a user