Usage
AdvancedDateTimeRangePicker is AdvancedDateRangePicker with time-of-day fields attached. Operators choose a mode—Before, After, Between—then set calendar bounds and the accompanying start / end times in the same panel. Use it when both the date and the time-of-day matter to the query or workflow (e.g. "incidents after 21:00 on Mar 3" or "transmissions between 07:30 and 08:30 across a two-day window").
The committed value is an AdvancedDateTimeRangeValue that mirrors the date picker's discriminated union, carrying the same mode discriminator plus time strings for the relevant bounds.
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
–
radio/stores/talkGroupPageStore and the logging-recorder filter hooks, which both store an AdvancedDateTimeRangeValue.AdvancedDateRangePicker; the time fields are noise.AdvancedTimeRangePicker for same-day shift queries.DatePicker in Range mode or DateTimePicker if time is part of it.EventRecurrencePicker: operators shouldn't have to recreate the rule per day.SegmentedControl as AdvancedDateRangePicker (Before / After / Between). Hidden when rangeOnly is true.AdvancedDateRangePicker's grid.TimePicker for single-bound modes; TimeRangeInputs for Between. Default times are 00:00 for the start bound and 23:59 for the end bound so "just pick a day" queries degrade gracefully.onApply defers commits; built-in Reset clears both date and time state.| Mode | Selection | Defaults |
|---|---|---|
Before | one date + end time | end time defaults to 23:59 |
After | one date + start time | start time defaults to 00:00 |
Between | start / end dates + start / end times | 00:00 – 23:59 |
Switching modes keeps compatible fields populated (the Between end becomes the Before bound) so operators don't lose their in-progress selection.
onApply, the picker tracks state internally and only fires onApply on confirmation; without it, every date or time change fires onChange.00:00 / 23:59 so the filter captures the whole day.disableFuture, disablePastDates, and disableFutureDates cascade to the date grid via MonthCaption.rangeOnly. Hides the mode strip; the picker becomes a "Between with times" control.hideMonthYearSelect. Narrow popovers lose the month / year Selects in favor of chevrons.disableFutureDates / disablePastDates. Pick the narrowest constraint that matches the query shape.Do
00:00 / 23:59 defaults to make "whole day" queries effortless; document when they apply if your product visualizes them.onApply in filter surfaces so changing date then time doesn't fire two queries.useRadioFilters for an example that round-trips the full AdvancedDateTimeRangeValue).Don't
rangeOnly; hiding it via CSS breaks the committed value shape.Keyboard and screen reader behavior come from the mode SegmentedControl, the date DatePicker, and the native time <input type="time"> inputs. The component does not announce mode changes or the committed value; the surrounding surface should. See the Accessibility page for the contract, including how focus moves between the mode strip, date grid, and time fields.