File tree Expand file tree Collapse file tree 4 files changed +36
-18
lines changed Expand file tree Collapse file tree 4 files changed +36
-18
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ export default () => {
3737 < div style = { { margin : '0 8px' } } >
3838 < h3 > Basic</ h3 >
3939 < Picker < Moment > { ...sharedProps } locale = { zhCN } />
40+ < Picker < Moment > { ...sharedProps } locale = { enUS } />
4041 </ div >
4142 < div style = { { margin : '0 8px' } } >
4243 < h3 > Uncontrolled</ h3 >
Original file line number Diff line number Diff line change @@ -5,7 +5,10 @@ import { GenerateConfig } from '.';
55const generateConfig : GenerateConfig < Moment > = {
66 // get
77 getNow : ( ) => moment ( ) ,
8- getWeekDay : date => date . clone ( ) . locale ( 'en_US' ) . weekday ( ) ,
8+ getWeekDay : date => {
9+ const clone = date . clone ( ) . locale ( 'en_US' ) ;
10+ return clone . weekday ( ) + clone . localeData ( ) . firstDayOfWeek ( ) ;
11+ } ,
912 getYear : date => date . year ( ) ,
1013 getMonth : date => date . month ( ) ,
1114 getDate : date => date . date ( ) ,
Original file line number Diff line number Diff line change 1- import { noteOnce } from 'rc-util/lib/warning' ;
21import { GenerateConfig } from '../generate' ;
32import { NullableDateType , PickerMode } from '../interface' ;
43
@@ -163,23 +162,9 @@ export function getWeekStartDate<DateType>(
163162) {
164163 const weekFirstDay = generateConfig . locale . getWeekFirstDay ( locale ) ;
165164 const monthStartDate = generateConfig . setDate ( value , 1 ) ;
165+ const startDateWeekDay = generateConfig . getWeekDay ( monthStartDate ) ;
166166
167- for ( let i = 0 ; i < 7 ; i += 1 ) {
168- const current = generateConfig . addDate ( monthStartDate , - i ) ;
169- if ( generateConfig . getWeekDay ( current ) === weekFirstDay ) {
170- return current ;
171- }
172- }
173-
174- /* istanbul ignore next */
175- /* eslint-disable no-lone-blocks */
176- {
177- noteOnce (
178- false ,
179- 'Not find week start date. Please check your `generateConfig`. If using default `generateConfig`, please help to fire a issue.' ,
180- ) ;
181- return value ;
182- }
167+ return generateConfig . addDate ( monthStartDate , weekFirstDay - startDateWeekDay ) ;
183168}
184169
185170export function getClosingViewDate < DateType > (
Original file line number Diff line number Diff line change @@ -437,5 +437,34 @@ describe('Picker.Panel', () => {
437437 } ) ;
438438 } ,
439439 ) ;
440+
441+ it ( 'update firstDayOfWeek' , ( ) => {
442+ const defaultFirstDay = moment ( enUS . locale )
443+ . localeData ( )
444+ . firstDayOfWeek ( ) ;
445+ moment . updateLocale ( enUS . locale , {
446+ week : {
447+ dow : 5 ,
448+ } as any ,
449+ } ) ;
450+ expect ( defaultFirstDay ) . toEqual ( 0 ) ;
451+
452+ const wrapper = mount (
453+ < MomentPickerPanel defaultValue = { getMoment ( '2020-04-02' ) } locale = { enUS } /> ,
454+ ) ;
455+
456+ expect (
457+ wrapper
458+ . find ( 'td' )
459+ . first ( )
460+ . text ( ) ,
461+ ) . toEqual ( '27' ) ;
462+
463+ moment . updateLocale ( enUS . locale , {
464+ week : {
465+ dow : defaultFirstDay ,
466+ } as any ,
467+ } ) ;
468+ } ) ;
440469 } ) ;
441470} ) ;
You can’t perform that action at this time.
0 commit comments