File tree Expand file tree Collapse file tree 6 files changed +69
-3
lines changed
Expand file tree Collapse file tree 6 files changed +69
-3
lines changed Original file line number Diff line number Diff line change 1+ import React from "react" ;
2+ import { dateButton } from "@/test/elements" ;
3+ import { render } from "@/test/render" ;
4+ import { user } from "@/test/user" ;
5+ import { TestCase2843 } from "./TestCase2843" ;
6+
7+ const today = new Date ( 2024 , 8 , 6 ) ;
8+
9+ beforeAll ( ( ) => jest . setSystemTime ( today ) ) ;
10+ afterAll ( ( ) => jest . useRealTimers ( ) ) ;
11+
12+ describe ( "when clicking the today button" , ( ) => {
13+ beforeEach ( async ( ) => {
14+ render ( < TestCase2843 /> ) ;
15+ await user . click ( dateButton ( today ) ) ;
16+ } ) ;
17+
18+ test ( 'the Today button has aria-disabled="true" but is not disabled' , ( ) => {
19+ expect ( dateButton ( today ) ) . toHaveAttribute ( "aria-disabled" , "true" ) ;
20+ expect ( dateButton ( today ) ) . not . toBeDisabled ( ) ;
21+ } ) ;
22+ } ) ;
Original file line number Diff line number Diff line change 1+ import React , { useState } from "react" ;
2+
3+ import { type DateRange , DayPicker } from "react-day-picker" ;
4+
5+ export function TestCase2843 ( ) {
6+ const [ selected , setSelected ] = useState < DateRange > ( ) ;
7+
8+ const disabled = [
9+ ...( selected ?. from ? [ { before : selected . from } ] : [ ] ) ,
10+ ...( selected ?. from ? [ selected . from ] : [ ] ) ,
11+ ] ;
12+
13+ return (
14+ < DayPicker
15+ animate
16+ mode = "range"
17+ selected = { selected }
18+ min = { 1 }
19+ disabled = { disabled }
20+ onSelect = { ( value , date ) => {
21+ setSelected ( ( prevValue ) => {
22+ if ( prevValue ?. from && prevValue ?. to ) {
23+ return {
24+ from : date ,
25+ to : undefined ,
26+ } ;
27+ }
28+
29+ return value ;
30+ } ) ;
31+ } }
32+ />
33+ ) ;
34+ }
Original file line number Diff line number Diff line change @@ -94,6 +94,7 @@ export * from "./TestCase2389";
9494export * from "./TestCase2511" ;
9595export * from "./TestCase2585" ;
9696export * from "./TestCase2835" ;
97+ export * from "./TestCase2843" ;
9798export * from "./Testcase1567" ;
9899export * from "./TimeZone" ;
99100export * from "./timezone/TestCase2833" ;
Original file line number Diff line number Diff line change @@ -727,7 +727,16 @@ export function DayPicker(initialProps: DayPickerProps) {
727727 type = "button"
728728 day = { day }
729729 modifiers = { modifiers }
730- disabled = { modifiers . disabled || undefined }
730+ disabled = {
731+ ( ! modifiers . focused &&
732+ modifiers . disabled ) ||
733+ undefined
734+ }
735+ aria-disabled = {
736+ ( modifiers . focused &&
737+ modifiers . disabled ) ||
738+ undefined
739+ }
731740 tabIndex = { isFocusTarget ( day ) ? 0 : - 1 }
732741 aria-label = { labelDayButton (
733742 date ,
Original file line number Diff line number Diff line change 296296 opacity : var (--rdp-outside-opacity );
297297}
298298
299- .rdp-disabled {
299+ .rdp-disabled : not (. rdp-selected ) {
300300 opacity : var (--rdp-disabled-opacity );
301301}
302302
Original file line number Diff line number Diff line change 296296 opacity : var (--rdp-outside-opacity );
297297}
298298
299- .disabled {
299+ .disabled : not (. selected ) {
300300 opacity : var (--rdp-disabled-opacity );
301301}
302302
You can’t perform that action at this time.
0 commit comments