@@ -2,8 +2,7 @@ import * as React from 'react';
22import { RangeValue , PickerMode , Locale } from '../interface' ;
33import { getValue } from '../utils/miscUtil' ;
44import { GenerateConfig } from '../generate' ;
5- import { isSameDate } from '../utils/dateUtil' ;
6- import useWeekDisabled from './useWeekDisabled' ;
5+ import { isSameDate , getQuarter } from '../utils/dateUtil' ;
76
87export default function useRangeDisabled < DateType > ( {
98 picker,
@@ -30,10 +29,7 @@ export default function useRangeDisabled<DateType>({
3029 }
3130
3231 if ( disabled [ 1 ] && endDate ) {
33- return (
34- ! isSameDate ( generateConfig , date , endDate ) &&
35- generateConfig . isAfter ( date , endDate )
36- ) ;
32+ return ! isSameDate ( generateConfig , date , endDate ) && generateConfig . isAfter ( date , endDate ) ;
3733 }
3834
3935 return false ;
@@ -48,12 +44,25 @@ export default function useRangeDisabled<DateType>({
4844 }
4945
5046 if ( startDate ) {
51- const compareStartDate =
52- picker === 'week' ? generateConfig . addDate ( startDate , - 7 ) : startDate ;
47+ if ( picker === 'week' ) {
48+ const startWeek = generateConfig . locale . getWeek ( locale . locale , startDate ) ;
49+ const dateWeek = generateConfig . locale . getWeek ( locale . locale , date ) ;
50+
51+ return dateWeek < startWeek ;
52+ }
53+
54+ if ( picker === 'quarter' ) {
55+ const startYear = generateConfig . getYear ( startDate ) ;
56+ const dateYear = generateConfig . getYear ( date ) ;
57+ const startQuarter = getQuarter ( generateConfig , startDate ) ;
58+ const dateQuarter = getQuarter ( generateConfig , date ) ;
59+ const startVal = startYear * 10 + startQuarter ;
60+ const dateVal = dateYear * 10 + dateQuarter ;
61+ return dateVal < startVal ;
62+ }
5363
5464 return (
55- ! isSameDate ( generateConfig , date , compareStartDate ) &&
56- generateConfig . isAfter ( compareStartDate , date )
65+ ! isSameDate ( generateConfig , date , startDate ) && generateConfig . isAfter ( startDate , date )
5766 ) ;
5867 }
5968
@@ -62,24 +71,5 @@ export default function useRangeDisabled<DateType>({
6271 [ disabledDate , startDate , picker ] ,
6372 ) ;
6473
65- // Handle week date disabled
66- const sharedWeekDisabledConfig = {
67- generateConfig,
68- locale,
69- } ;
70-
71- const [ disabledStartWeekDate ] = useWeekDisabled ( {
72- ...sharedWeekDisabledConfig ,
73- disabledDate : disabledStartDate ,
74- } ) ;
75- const [ disabledEndWeekDate ] = useWeekDisabled ( {
76- ...sharedWeekDisabledConfig ,
77- disabledDate : disableEndDate ,
78- } ) ;
79-
80- if ( picker === 'week' ) {
81- return [ disabledStartWeekDate , disabledEndWeekDate ] ;
82- }
83-
8474 return [ disabledStartDate , disableEndDate ] ;
8575}
0 commit comments