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