@@ -14,11 +14,6 @@ export default function useWeekDisabled<DateType>({
1414 const disabledCache = React . useMemo ( ( ) => new Map < string , boolean > ( ) , [
1515 disabledDate ,
1616 ] ) ;
17- const firstDay = React . useMemo (
18- ( ) => generateConfig . locale . getWeekFirstDay ( locale . locale ) ,
19- [ locale . locale ] ,
20- ) ;
21-
2217 function disabledWeekDate ( date : DateType ) : boolean {
2318 const weekStr = generateConfig . locale . format (
2419 locale . locale ,
@@ -27,28 +22,28 @@ export default function useWeekDisabled<DateType>({
2722 ) ;
2823
2924 if ( ! disabledCache . has ( weekStr ) ) {
30- const weekDay = generateConfig . getWeekDay ( date ) ;
31- let weekStartDate : DateType ;
32-
33- // Set start week date
34- if ( weekDay < firstDay ) {
35- weekStartDate = generateConfig . setWeekDay (
36- generateConfig . addDate ( date , - 7 ) ,
37- firstDay ,
38- ) ;
39- } else {
40- weekStartDate = generateConfig . setWeekDay ( date , firstDay ) ;
41- }
42-
43- // Loop to find disabled status
4425 let disabled = false ;
45- for ( let i = 0 ; i < 7 ; i += 1 ) {
46- const currentDate = generateConfig . setWeekDay ( weekStartDate , i ) ;
47- if ( disabledDate ( currentDate ) ) {
48- disabled = true ;
49- break ;
26+ const checkDisabled = ( offset : 1 | - 1 ) => {
27+ for ( let i = 0 ; i < 7 ; i += 1 ) {
28+ const currentDate = generateConfig . addDate ( date , i * offset ) ;
29+ const currentWeekStr = generateConfig . locale . format (
30+ locale . locale ,
31+ currentDate ,
32+ 'YYYY-WW' ,
33+ ) ;
34+
35+ if ( currentWeekStr !== weekStr ) {
36+ break ;
37+ }
38+
39+ if ( disabledDate ( currentDate ) ) {
40+ disabled = true ;
41+ break ;
42+ }
5043 }
51- }
44+ } ;
45+ checkDisabled ( 1 ) ;
46+ checkDisabled ( - 1 ) ;
5247
5348 disabledCache . set ( weekStr , disabled ) ;
5449 }
0 commit comments