From 8e3eba2a1dda8b71b91cd9989fba3b9e97ffe876 Mon Sep 17 00:00:00 2001 From: zombiej Date: Thu, 19 Dec 2019 14:35:59 +0800 Subject: [PATCH] fix parse logic --- examples/basic.tsx | 3 +-- examples/rtl.tsx | 2 +- src/generate/moment.ts | 7 ++++--- src/utils/uiUtil.ts | 2 +- tests/picker.spec.tsx | 14 ++++++++++++-- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/examples/basic.tsx b/examples/basic.tsx index d31ad05e1..0649d07ee 100644 --- a/examples/basic.tsx +++ b/examples/basic.tsx @@ -83,7 +83,6 @@ export default () => { {...sharedProps} locale={zhCN} - format="YYYY-Wo" allowClear picker="week" renderExtraFooter={() => 'I am footer!!!'} @@ -105,7 +104,7 @@ export default () => {

Week

generateConfig={momentGenerateConfig} - locale={zhCN} + locale={enUS} picker="week" /> diff --git a/examples/rtl.tsx b/examples/rtl.tsx index a41e8644b..c87acddfc 100644 --- a/examples/rtl.tsx +++ b/examples/rtl.tsx @@ -152,7 +152,7 @@ export default () => { {...sharedProps} locale={zhCN} - format="YYYY-Wo" + format="gggg-Wo" allowClear picker="week" renderExtraFooter={() => 'I am footer!!!'} diff --git a/src/generate/moment.ts b/src/generate/moment.ts index a6f6117ca..46f077c85 100644 --- a/src/generate/moment.ts +++ b/src/generate/moment.ts @@ -94,9 +94,10 @@ const generateConfig: GenerateConfig = { let format = formats[i]; let formatText = text; - if (format.includes('o')) { - const matchFormat = format.match(/[YyMmDdHhSsWw]+/g); - const matchText = formatText.match(/\d+/g); + if (format.includes('wo') || format.includes('Wo')) { + format = format.replace(/wo/g, 'ww').replace(/Wo/g, 'WW'); + const matchFormat = format.match(/[-YyMmDdHhSsWwGg]+/g); + const matchText = formatText.match(/[-\d]+/g); if (matchFormat && matchText) { format = matchFormat.join(''); diff --git a/src/utils/uiUtil.ts b/src/utils/uiUtil.ts index cc7580a6a..a294b8550 100644 --- a/src/utils/uiUtil.ts +++ b/src/utils/uiUtil.ts @@ -140,7 +140,7 @@ export function getDefaultFormat( break; case 'week': - mergedFormat = 'YYYY-Wo'; + mergedFormat = 'gggg-wo'; break; case 'month': diff --git a/tests/picker.spec.tsx b/tests/picker.spec.tsx index bcb67bb7e..84902aed3 100644 --- a/tests/picker.spec.tsx +++ b/tests/picker.spec.tsx @@ -188,14 +188,16 @@ describe('Picker.Basic', () => { name: 'basic', value: '2000-11-11', selected: '.rc-picker-cell-selected', + matchDate: '2000-11-11', }, { name: 'week', picker: 'week', value: '2000-45th', + matchDate: '2000-10-29', selected: '.rc-picker-week-panel-row-selected', }, - ].forEach(({ name, picker, value, selected }) => { + ].forEach(({ name, picker, value, matchDate, selected }) => { it(name, () => { const onChange = jest.fn(); const wrapper = mount( @@ -226,7 +228,7 @@ describe('Picker.Basic', () => { expect(onChange).not.toHaveBeenCalled(); wrapper.keyDown(KeyCode.ENTER); expect( - isSame(onChange.mock.calls[0][0], '2000-11-11', picker as any), + isSame(onChange.mock.calls[0][0], matchDate, picker as any), ).toBeTruthy(); expect(wrapper.find(selected).length).toBeTruthy(); onChange.mockReset(); @@ -528,4 +530,12 @@ describe('Picker.Basic', () => { const wrapper = mount(); expect(wrapper.render()).toMatchSnapshot(); }); + + it('week picker show correct year', () => { + const wrapper = mount( + , + ); + + expect(wrapper.find('input').prop('value')).toEqual('2020-1st'); + }); });