@@ -87,14 +87,24 @@ export interface DatePickerProps<T extends DateValue> extends Omit<AriaDatePicke
8787 * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
8888 * @default 'react-aria-DatePicker'
8989 */
90- className ?: ClassNameOrFunction < DatePickerRenderProps >
90+ className ?: ClassNameOrFunction < DatePickerRenderProps > ,
91+ /**
92+ * Whether the trigger remains pressed when the overlay is open.
93+ * @default true
94+ */
95+ isTriggerPressedWhenOpen ?: boolean
9196}
9297export interface DateRangePickerProps < T extends DateValue > extends Omit < AriaDateRangePickerProps < T > , 'label' | 'description' | 'errorMessage' | 'validationState' | 'validationBehavior' > , Pick < DateRangePickerStateOptions < T > , 'shouldCloseOnSelect' > , RACValidation , RenderProps < DateRangePickerRenderProps > , SlotProps , GlobalDOMAttributes < HTMLDivElement > {
9398 /**
9499 * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
95100 * @default 'react-aria-DateRangePicker'
96101 */
97- className ?: ClassNameOrFunction < DateRangePickerRenderProps >
102+ className ?: ClassNameOrFunction < DateRangePickerRenderProps > ,
103+ /**
104+ * Whether the trigger remains pressed when the overlay is open.
105+ * @default true
106+ */
107+ isTriggerPressedWhenOpen ?: boolean
98108}
99109
100110export const DatePickerContext = createContext < ContextValue < DatePickerProps < any > , HTMLDivElement > > ( null ) ;
@@ -112,6 +122,7 @@ export const DatePicker = /*#__PURE__*/ (forwardRef as forwardRefType)(function
112122 [ props , ref ] = useContextProps ( props , ref , DatePickerContext ) ;
113123 let { validationBehavior : formValidationBehavior } = useSlottedContext ( FormContext ) || { } ;
114124 let validationBehavior = props . validationBehavior ?? formValidationBehavior ?? 'native' ;
125+ let { isTriggerPressedWhenOpen = true } = props ;
115126 let state = useDatePickerState ( {
116127 ...props ,
117128 validationBehavior
@@ -174,7 +185,7 @@ export const DatePicker = /*#__PURE__*/ (forwardRef as forwardRefType)(function
174185 [ DatePickerStateContext , state ] ,
175186 [ GroupContext , { ...groupProps , ref : groupRef , isInvalid : state . isInvalid } ] ,
176187 [ DateFieldContext , fieldProps ] ,
177- [ ButtonContext , { ...buttonProps , isPressed : state . isOpen } ] ,
188+ [ ButtonContext , { ...buttonProps , isPressed : isTriggerPressedWhenOpen && state . isOpen } ] ,
178189 [ LabelContext , { ...labelProps , ref : labelRef , elementType : 'span' } ] ,
179190 [ CalendarContext , calendarProps ] ,
180191 [ OverlayTriggerStateContext , state ] ,
@@ -221,6 +232,7 @@ export const DateRangePicker = /*#__PURE__*/ (forwardRef as forwardRefType)(func
221232 [ props , ref ] = useContextProps ( props , ref , DateRangePickerContext ) ;
222233 let { validationBehavior : formValidationBehavior } = useSlottedContext ( FormContext ) || { } ;
223234 let validationBehavior = props . validationBehavior ?? formValidationBehavior ?? 'native' ;
235+ let { isTriggerPressedWhenOpen = true } = props ;
224236 let state = useDateRangePickerState ( {
225237 ...props ,
226238 validationBehavior
@@ -283,7 +295,7 @@ export const DateRangePicker = /*#__PURE__*/ (forwardRef as forwardRefType)(func
283295 values = { [
284296 [ DateRangePickerStateContext , state ] ,
285297 [ GroupContext , { ...groupProps , ref : groupRef , isInvalid : state . isInvalid } ] ,
286- [ ButtonContext , { ...buttonProps , isPressed : state . isOpen } ] ,
298+ [ ButtonContext , { ...buttonProps , isPressed : isTriggerPressedWhenOpen && state . isOpen } ] ,
287299 [ LabelContext , { ...labelProps , ref : labelRef , elementType : 'span' } ] ,
288300 [ RangeCalendarContext , calendarProps ] ,
289301 [ OverlayTriggerStateContext , state ] ,
0 commit comments