@gravity-ui/date-components 3.4.2 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/cjs/components/Calendar/Calendar.d.ts +6 -2
- package/dist/cjs/components/Calendar/Calendar.js +1 -1
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarView/Calendar.css +3 -0
- package/dist/cjs/components/CalendarView/Calendar.css.map +1 -1
- package/dist/cjs/components/CalendarView/CalendarView.d.ts +2 -1
- package/dist/cjs/components/CalendarView/CalendarView.js +8 -8
- package/dist/cjs/components/CalendarView/CalendarView.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/types.d.ts +5 -3
- package/dist/cjs/components/CalendarView/hooks/types.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
- package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
- package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +7 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
- package/dist/cjs/components/CalendarView/hooks/useCalendarState.js +74 -30
- package/dist/cjs/components/CalendarView/hooks/useCalendarState.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js +16 -9
- package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
- package/dist/cjs/components/DateField/DateField.d.ts +1 -1
- package/dist/cjs/components/DateField/DateField.js +5 -17
- package/dist/cjs/components/DateField/DateField.js.map +1 -1
- package/dist/cjs/components/DateField/IncompleteDate.d.ts +28 -0
- package/dist/cjs/components/DateField/IncompleteDate.js +116 -0
- package/dist/cjs/components/DateField/IncompleteDate.js.map +1 -0
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +18 -249
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +250 -54
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.js.map +1 -1
- package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +20 -2
- package/dist/cjs/components/DateField/hooks/useDateFieldState.js +84 -118
- package/dist/cjs/components/DateField/hooks/useDateFieldState.js.map +1 -1
- package/dist/cjs/components/DateField/hooks/useFocusManager.d.ts +29 -0
- package/dist/cjs/components/DateField/hooks/useFocusManager.js +116 -0
- package/dist/cjs/components/DateField/hooks/useFocusManager.js.map +1 -0
- package/dist/cjs/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
- package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js +236 -0
- package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
- package/dist/cjs/components/DateField/i18n/ru.json +1 -1
- package/dist/cjs/components/DateField/index.d.ts +2 -1
- package/dist/cjs/components/DateField/index.js +1 -1
- package/dist/cjs/components/DateField/index.js.map +1 -1
- package/dist/cjs/components/DateField/types.d.ts +2 -22
- package/dist/cjs/components/DateField/types.js.map +1 -1
- package/dist/cjs/components/DateField/utils.d.ts +21 -34
- package/dist/cjs/components/DateField/utils.js +180 -132
- package/dist/cjs/components/DateField/utils.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.d.ts +3 -3
- package/dist/cjs/components/DatePicker/DatePicker.js +3 -4
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/DatePicker/MobileCalendar.d.ts +1 -1
- package/dist/cjs/components/DatePicker/MobileCalendar.js +3 -5
- package/dist/cjs/components/DatePicker/MobileCalendar.js.map +1 -1
- package/dist/cjs/components/DatePicker/StubButton.d.ts +1 -1
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +30 -17
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
- package/dist/cjs/components/HiddenInput/HiddenInput.d.ts +2 -5
- package/dist/cjs/components/HiddenInput/HiddenInput.js +2 -4
- package/dist/cjs/components/HiddenInput/HiddenInput.js.map +1 -1
- package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +2 -2
- package/dist/cjs/components/RangeCalendar/RangeCalendar.js +2 -3
- package/dist/cjs/components/RangeCalendar/RangeCalendar.js.map +1 -1
- package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +1 -1
- package/dist/cjs/components/RangeDateField/RangeDateField.js +6 -19
- package/dist/cjs/components/RangeDateField/RangeDateField.js.map +1 -1
- package/dist/cjs/components/RangeDateField/index.d.ts +0 -1
- package/dist/cjs/components/RangeDateField/index.js +0 -1
- package/dist/cjs/components/RangeDateField/index.js.map +1 -1
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js +4 -5
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js +3 -4
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
- package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js +4 -5
- package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
- package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
- package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
- package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -21
- package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
- package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
- package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +0 -3
- package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
- package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/utils/span.d.ts +2 -1
- package/dist/cjs/components/RangeDateSelection/utils/span.js.map +1 -1
- package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +1 -1
- package/dist/cjs/components/RelativeDateField/RelativeDateField.js +3 -40
- package/dist/cjs/components/RelativeDateField/RelativeDateField.js.map +1 -1
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -21
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -16
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +34 -7
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +9 -12
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +27 -16
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/types.d.ts +3 -1
- package/dist/cjs/components/RelativeRangeDatePicker/types.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +2 -2
- package/dist/cjs/components/RelativeRangeDatePicker/utils.js +32 -9
- package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
- package/dist/cjs/components/utils/constants.d.ts +2 -0
- package/dist/cjs/components/utils/constants.js +7 -1
- package/dist/cjs/components/utils/constants.js.map +1 -1
- package/dist/cjs/components/utils/dates.d.ts +6 -1
- package/dist/cjs/components/utils/dates.js +6 -1
- package/dist/cjs/components/utils/dates.js.map +1 -1
- package/dist/cjs/components/utils/filterDOMProps.js +1 -1
- package/dist/cjs/components/utils/filterDOMProps.js.map +1 -1
- package/dist/cjs/components/utils/mergeProps.js +1 -1
- package/dist/cjs/components/utils/mergeProps.js.map +1 -1
- package/dist/cjs/components/utils/validation/datePicker.js +1 -1
- package/dist/cjs/components/utils/validation/datePicker.js.map +1 -1
- package/dist/cjs/components/utils/validation/i18n/ru.json +2 -2
- package/dist/cjs/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
- package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js +6 -1
- package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
- package/dist/cjs/hooks/useEventHandler.js +1 -2
- package/dist/cjs/hooks/useEventHandler.js.map +1 -1
- package/dist/cjs/hooks/useMove.d.ts +2 -2
- package/dist/cjs/hooks/useMove.js +6 -9
- package/dist/cjs/hooks/useMove.js.map +1 -1
- package/dist/cjs/hooks/useResizeObserver.js +1 -1
- package/dist/cjs/hooks/useResizeObserver.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/docs/INDEX.md +131 -0
- package/dist/docs/components/Calendar.md +125 -0
- package/dist/docs/components/DateField.md +206 -0
- package/dist/docs/components/DatePicker.md +194 -0
- package/dist/docs/components/RangeCalendar.md +125 -0
- package/dist/docs/components/RelativeDateField.md +73 -0
- package/dist/docs/components/RelativeDatePicker.md +59 -0
- package/dist/esm/components/Calendar/Calendar.d.ts +6 -2
- package/dist/esm/components/Calendar/Calendar.js +1 -1
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/CalendarView/Calendar.css +3 -0
- package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
- package/dist/esm/components/CalendarView/CalendarView.d.ts +2 -1
- package/dist/esm/components/CalendarView/CalendarView.js +8 -8
- package/dist/esm/components/CalendarView/CalendarView.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/types.d.ts +5 -3
- package/dist/esm/components/CalendarView/hooks/types.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
- package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
- package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +7 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
- package/dist/esm/components/CalendarView/hooks/useCalendarState.js +74 -30
- package/dist/esm/components/CalendarView/hooks/useCalendarState.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +16 -10
- package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
- package/dist/esm/components/DateField/DateField.d.ts +1 -1
- package/dist/esm/components/DateField/DateField.js +6 -18
- package/dist/esm/components/DateField/DateField.js.map +1 -1
- package/dist/esm/components/DateField/IncompleteDate.d.ts +28 -0
- package/dist/esm/components/DateField/IncompleteDate.js +112 -0
- package/dist/esm/components/DateField/IncompleteDate.js.map +1 -0
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +17 -248
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
- package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
- package/dist/esm/components/DateField/hooks/useDateFieldProps.js +250 -54
- package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
- package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +20 -2
- package/dist/esm/components/DateField/hooks/useDateFieldState.js +85 -119
- package/dist/esm/components/DateField/hooks/useDateFieldState.js.map +1 -1
- package/dist/esm/components/DateField/hooks/useFocusManager.d.ts +29 -0
- package/dist/esm/components/DateField/hooks/useFocusManager.js +112 -0
- package/dist/esm/components/DateField/hooks/useFocusManager.js.map +1 -0
- package/dist/esm/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
- package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js +232 -0
- package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
- package/dist/esm/components/DateField/i18n/ru.json +1 -1
- package/dist/esm/components/DateField/index.d.ts +2 -1
- package/dist/esm/components/DateField/index.js +1 -1
- package/dist/esm/components/DateField/index.js.map +1 -1
- package/dist/esm/components/DateField/types.d.ts +2 -22
- package/dist/esm/components/DateField/types.js.map +1 -1
- package/dist/esm/components/DateField/utils.d.ts +21 -34
- package/dist/esm/components/DateField/utils.js +179 -125
- package/dist/esm/components/DateField/utils.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.d.ts +3 -3
- package/dist/esm/components/DatePicker/DatePicker.js +3 -5
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/MobileCalendar.d.ts +1 -1
- package/dist/esm/components/DatePicker/MobileCalendar.js +3 -5
- package/dist/esm/components/DatePicker/MobileCalendar.js.map +1 -1
- package/dist/esm/components/DatePicker/StubButton.d.ts +1 -1
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +30 -18
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
- package/dist/esm/components/HiddenInput/HiddenInput.d.ts +2 -5
- package/dist/esm/components/HiddenInput/HiddenInput.js +3 -4
- package/dist/esm/components/HiddenInput/HiddenInput.js.map +1 -1
- package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +2 -2
- package/dist/esm/components/RangeCalendar/RangeCalendar.js +2 -3
- package/dist/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
- package/dist/esm/components/RangeDateField/RangeDateField.d.ts +1 -1
- package/dist/esm/components/RangeDateField/RangeDateField.js +7 -20
- package/dist/esm/components/RangeDateField/RangeDateField.js.map +1 -1
- package/dist/esm/components/RangeDateField/index.d.ts +0 -1
- package/dist/esm/components/RangeDateField/index.js +0 -1
- package/dist/esm/components/RangeDateField/index.js.map +1 -1
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +4 -6
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +2 -3
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
- package/dist/esm/components/RangeDateSelection/RangeDateSelection.js +4 -5
- package/dist/esm/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
- package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
- package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
- package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -22
- package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
- package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
- package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +1 -2
- package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
- package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/utils/span.d.ts +2 -1
- package/dist/esm/components/RangeDateSelection/utils/span.js.map +1 -1
- package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +1 -1
- package/dist/esm/components/RelativeDateField/RelativeDateField.js +4 -40
- package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -22
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -17
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +33 -7
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +8 -10
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +26 -15
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/types.d.ts +3 -1
- package/dist/esm/components/RelativeRangeDatePicker/types.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +2 -2
- package/dist/esm/components/RelativeRangeDatePicker/utils.js +33 -9
- package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
- package/dist/esm/components/utils/constants.d.ts +2 -0
- package/dist/esm/components/utils/constants.js +6 -0
- package/dist/esm/components/utils/constants.js.map +1 -1
- package/dist/esm/components/utils/dates.d.ts +6 -1
- package/dist/esm/components/utils/dates.js +5 -1
- package/dist/esm/components/utils/dates.js.map +1 -1
- package/dist/esm/components/utils/filterDOMProps.js +1 -1
- package/dist/esm/components/utils/filterDOMProps.js.map +1 -1
- package/dist/esm/components/utils/mergeProps.js +1 -1
- package/dist/esm/components/utils/mergeProps.js.map +1 -1
- package/dist/esm/components/utils/validation/datePicker.js +1 -1
- package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
- package/dist/esm/components/utils/validation/i18n/ru.json +2 -2
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +6 -1
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
- package/dist/esm/hooks/useEventHandler.js +1 -2
- package/dist/esm/hooks/useEventHandler.js.map +1 -1
- package/dist/esm/hooks/useMove.d.ts +2 -2
- package/dist/esm/hooks/useMove.js +6 -9
- package/dist/esm/hooks/useMove.js.map +1 -1
- package/dist/esm/hooks/useResizeObserver.js +1 -1
- package/dist/esm/hooks/useResizeObserver.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/package.json +34 -27
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -224
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -9
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +0 -42
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/index.d.ts +0 -3
- package/dist/cjs/components/RangeDateField/utils/index.js +0 -7
- package/dist/cjs/components/RangeDateField/utils/index.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +0 -3
- package/dist/cjs/components/RangeDateField/utils/isValidRange.js +0 -7
- package/dist/cjs/components/RangeDateField/utils/isValidRange.js.map +0 -1
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -220
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -6
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +0 -39
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/index.d.ts +0 -3
- package/dist/esm/components/RangeDateField/utils/index.js +0 -4
- package/dist/esm/components/RangeDateField/utils/index.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +0 -3
- package/dist/esm/components/RangeDateField/utils/isValidRange.js +0 -4
- package/dist/esm/components/RangeDateField/utils/isValidRange.js.map +0 -1
|
@@ -1,29 +1,27 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { __rest } from "tslib";
|
|
3
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
3
|
import { Popup, Sheet } from '@gravity-ui/uikit';
|
|
5
4
|
import { block } from "../../../../utils/cn.js";
|
|
6
5
|
import { PickerForm } from "./PickerForm.js";
|
|
7
6
|
import "./PickerDialog.css";
|
|
8
7
|
const b = block('relative-range-date-picker-dialog');
|
|
9
|
-
export function PickerDialog(
|
|
10
|
-
var { open, onClose, isMobile, anchor, popupClassName, popupStyle, popupPlacement, popupOffset, modal, returnFocus = false, onRemove } = _a, props = __rest(_a, ["open", "onClose", "isMobile", "anchor", "popupClassName", "popupStyle", "popupPlacement", "popupOffset", "modal", "returnFocus", "onRemove"]);
|
|
8
|
+
export function PickerDialog({ open, onClose, isMobile, anchor, popupClassName, popupStyle, popupPlacement, popupOffset, modal, returnFocus = false, onRemove, ...props }) {
|
|
11
9
|
if (isMobile) {
|
|
12
10
|
return (_jsx(Sheet, { visible: open, onClose: () => {
|
|
13
11
|
onClose('outside-press');
|
|
14
12
|
setTimeout(() => {
|
|
15
|
-
onRemove
|
|
13
|
+
onRemove?.();
|
|
16
14
|
});
|
|
17
|
-
}, contentClassName: b('content', { mobile: true, size: 'xl' }, popupClassName), children: _jsx(PickerForm,
|
|
15
|
+
}, contentClassName: b('content', { mobile: true, size: 'xl' }, popupClassName), children: _jsx(PickerForm, { ...props, size: "xl", onApply: () => {
|
|
18
16
|
onClose('apply');
|
|
19
|
-
} })
|
|
17
|
+
} }) }));
|
|
20
18
|
}
|
|
21
19
|
return (_jsx(Popup, { open: open, onOpenChange: (isOpen, _event, reason) => {
|
|
22
20
|
if (!isOpen) {
|
|
23
21
|
onClose(reason);
|
|
24
22
|
}
|
|
25
|
-
}, placement: popupPlacement, offset: popupOffset, role: "dialog", anchorElement: anchor, className: b('content', { size: props.size }, popupClassName), style: popupStyle, modal: modal, returnFocus: returnFocus, onTransitionOutComplete: onRemove, children: _jsx(PickerForm,
|
|
23
|
+
}, placement: popupPlacement, offset: popupOffset, role: "dialog", anchorElement: anchor, className: b('content', { size: props.size }, popupClassName), style: popupStyle, modal: modal, returnFocus: returnFocus, onTransitionOutComplete: onRemove, children: _jsx(PickerForm, { ...props, onApply: () => {
|
|
26
24
|
onClose('apply');
|
|
27
|
-
} })
|
|
25
|
+
} }) }));
|
|
28
26
|
}
|
|
29
27
|
//# sourceMappingURL=PickerDialog.js.map
|
package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerDialog.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"PickerDialog.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAC,KAAK,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAG3C,OAAO,EAAC,UAAU,EAAC,wBAAqB;AAGxC,4BAA6B;AAE7B,MAAM,CAAC,GAAG,KAAK,CAAC,mCAAmC,CAAC,CAAC;AAmBrD,MAAM,UAAU,YAAY,CAAC,EACzB,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,MAAM,EACN,cAAc,EACd,UAAU,EACV,cAAc,EACd,WAAW,EACX,KAAK,EACL,WAAW,GAAG,KAAK,EACnB,QAAQ,EACR,GAAG,KAAK,EACQ;IAChB,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,CACH,KAAC,KAAK,IACF,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,GAAG,EAAE;gBACV,OAAO,CAAC,eAAe,CAAC,CAAC;gBACzB,UAAU,CAAC,GAAG,EAAE;oBACZ,QAAQ,EAAE,EAAE,CAAC;gBACjB,CAAC,CAAC,CAAC;YACP,CAAC,EACD,gBAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,EAAE,cAAc,CAAC,YAE1E,KAAC,UAAU,OACH,KAAK,EACT,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE;oBACV,OAAO,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC,GACH,GACE,CACX,CAAC;IACN,CAAC;IAED,OAAO,CACH,KAAC,KAAK,IACF,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;QACL,CAAC,EACD,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAC,QAAQ,EACb,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAC,EAAE,cAAc,CAAC,EAC3D,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,QAAQ,YAEjC,KAAC,UAAU,OACH,KAAK,EACT,OAAO,EAAE,GAAG,EAAE;gBACV,OAAO,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC,GACH,GACE,CACX,CAAC;AACN,CAAC","sourcesContent":["'use client';\n\nimport {Popup, Sheet} from '@gravity-ui/uikit';\nimport type {PopupProps} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport type {PopupStyleProps} from '../../../types';\n\nimport {PickerForm} from './PickerForm';\nimport type {PickerFormProps} from './PickerForm';\n\nimport './PickerDialog.scss';\n\nconst b = block('relative-range-date-picker-dialog');\n\nexport interface PickerDialogProps extends PickerFormProps, PopupStyleProps {\n /** Popup anchor */\n anchor: HTMLElement | null;\n /** Manages `Popup` visibility */\n open: boolean;\n /** Handles popup close event */\n onClose: (reason?: Parameters<NonNullable<PopupProps['onOpenChange']>>[2] | 'apply') => void;\n /** Handles popup remove from DOM event */\n onRemove?: () => void;\n /** If true `Popup` act like a modal dialog */\n modal?: boolean;\n /** Element which focus should be returned to */\n returnFocus?: PopupProps['returnFocus'];\n /** If true `Sheet` is used instead of `Popup` */\n isMobile?: boolean;\n}\n\nexport function PickerDialog({\n open,\n onClose,\n isMobile,\n anchor,\n popupClassName,\n popupStyle,\n popupPlacement,\n popupOffset,\n modal,\n returnFocus = false,\n onRemove,\n ...props\n}: PickerDialogProps) {\n if (isMobile) {\n return (\n <Sheet\n visible={open}\n onClose={() => {\n onClose('outside-press');\n setTimeout(() => {\n onRemove?.();\n });\n }}\n contentClassName={b('content', {mobile: true, size: 'xl'}, popupClassName)}\n >\n <PickerForm\n {...props}\n size=\"xl\"\n onApply={() => {\n onClose('apply');\n }}\n />\n </Sheet>\n );\n }\n\n return (\n <Popup\n open={open}\n onOpenChange={(isOpen, _event, reason) => {\n if (!isOpen) {\n onClose(reason);\n }\n }}\n placement={popupPlacement}\n offset={popupOffset}\n role=\"dialog\"\n anchorElement={anchor}\n className={b('content', {size: props.size}, popupClassName)}\n style={popupStyle}\n modal={modal}\n returnFocus={returnFocus}\n onTransitionOutComplete={onRemove}\n >\n <PickerForm\n {...props}\n onApply={() => {\n onClose('apply');\n }}\n />\n </Popup>\n );\n}\n"]}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { Preset } from "../Presets/defaultPresets.js";
|
|
2
3
|
import "./PickerDoc.css";
|
|
3
4
|
interface PresetsDocProps {
|
|
4
5
|
className?: string;
|
|
5
6
|
size?: 's' | 'm' | 'l' | 'xl';
|
|
6
7
|
docs?: Preset[];
|
|
7
|
-
onStartUpdate: (start: string) => void;
|
|
8
|
-
onEndUpdate: (end: string) => void;
|
|
8
|
+
onStartUpdate: (start: string | null) => void;
|
|
9
|
+
onEndUpdate: (end: string | null) => void;
|
|
10
|
+
onRangeUpdate: (start: string | null, end: string | null) => void;
|
|
9
11
|
}
|
|
10
|
-
export declare function PickerDoc({ docs, ...props }: PresetsDocProps):
|
|
12
|
+
export declare function PickerDoc({ docs, ...props }: PresetsDocProps): React.JSX.Element | null;
|
|
11
13
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { __rest } from "tslib";
|
|
3
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { CircleQuestion } from '@gravity-ui/icons';
|
|
@@ -36,8 +35,7 @@ const data = [
|
|
|
36
35
|
to: 'now - 1M/M',
|
|
37
36
|
},
|
|
38
37
|
];
|
|
39
|
-
function DocContent({ size, docs, onStartUpdate, onEndUpdate }) {
|
|
40
|
-
const isMobile = useMobile();
|
|
38
|
+
function DocContent({ size, docs, onStartUpdate, onEndUpdate, onRangeUpdate }) {
|
|
41
39
|
const { t } = i18n.useTranslation();
|
|
42
40
|
const columns = React.useMemo(() => [
|
|
43
41
|
{
|
|
@@ -46,7 +44,9 @@ function DocContent({ size, docs, onStartUpdate, onEndUpdate }) {
|
|
|
46
44
|
return t('Range');
|
|
47
45
|
},
|
|
48
46
|
template: (item) => {
|
|
49
|
-
return
|
|
47
|
+
return (_jsx(Button, { view: "flat", size: getButtonSizeForInput(size), onClick: () => {
|
|
48
|
+
onRangeUpdate(item.from, item.to);
|
|
49
|
+
}, children: t(item.title) }));
|
|
50
50
|
},
|
|
51
51
|
},
|
|
52
52
|
{
|
|
@@ -54,38 +54,39 @@ function DocContent({ size, docs, onStartUpdate, onEndUpdate }) {
|
|
|
54
54
|
name: () => {
|
|
55
55
|
return t('From');
|
|
56
56
|
},
|
|
57
|
-
template: (item) => (_jsx(Button, {
|
|
57
|
+
template: (item) => (_jsx(Button, { view: "flat", size: getButtonSizeForInput(size), onClick: () => {
|
|
58
|
+
onStartUpdate(item.from);
|
|
59
|
+
}, children: item.from })),
|
|
58
60
|
},
|
|
59
61
|
{
|
|
60
62
|
id: 'to',
|
|
61
63
|
name: () => {
|
|
62
64
|
return t('To');
|
|
63
65
|
},
|
|
64
|
-
template: (item) => (_jsx(Button, {
|
|
66
|
+
template: (item) => (_jsx(Button, { view: "flat", size: getButtonSizeForInput(size), onClick: () => {
|
|
67
|
+
onEndUpdate(item.to);
|
|
68
|
+
}, children: item.to })),
|
|
65
69
|
},
|
|
66
|
-
], [
|
|
70
|
+
], [onEndUpdate, onRangeUpdate, onStartUpdate, size, t]);
|
|
67
71
|
return _jsx(Table, { columns: columns, data: docs, className: b('table', { size }), wordWrap: true });
|
|
68
72
|
}
|
|
69
|
-
function DesktopDoc(
|
|
70
|
-
|
|
71
|
-
return (_jsx(Popover, { className: b(null), hasArrow: false, placement: ['right-start', 'left-start'], content: _jsx(DocContent, Object.assign({ size: size }, props)), children: _jsx(Button, { className: b('button', className), view: "flat-secondary", size: getButtonSizeForInput(size), children: _jsx(Icon, { data: CircleQuestion }) }) }));
|
|
73
|
+
function DesktopDoc({ className, size, ...props }) {
|
|
74
|
+
return (_jsx(Popover, { className: b(), hasArrow: false, placement: ['right-start', 'left-start'], content: _jsx(DocContent, { size: size, ...props }), children: _jsx(Button, { className: b('button', className), view: "flat-secondary", size: getButtonSizeForInput(size), children: _jsx(Icon, { data: CircleQuestion }) }) }));
|
|
72
75
|
}
|
|
73
|
-
function MobileDoc(
|
|
74
|
-
var { className } = _a, props = __rest(_a, ["className"]);
|
|
76
|
+
function MobileDoc({ className, ...props }) {
|
|
75
77
|
const [open, setOpen] = React.useState(false);
|
|
76
78
|
return (_jsxs("div", { className: b(null, className), children: [_jsx(Button, { className: b('button'), view: "flat-secondary", size: "l", onClick: () => {
|
|
77
79
|
setOpen(true);
|
|
78
|
-
}, children: _jsx(Icon, { data: CircleQuestion }) }), _jsx(Sheet, { visible: open, onClose: () => setOpen(false), children: _jsx(DocContent,
|
|
80
|
+
}, children: _jsx(Icon, { data: CircleQuestion }) }), _jsx(Sheet, { visible: open, onClose: () => setOpen(false), children: _jsx(DocContent, { ...props }) })] }));
|
|
79
81
|
}
|
|
80
|
-
export function PickerDoc(
|
|
81
|
-
var { docs = data } = _a, props = __rest(_a, ["docs"]);
|
|
82
|
+
export function PickerDoc({ docs = data, ...props }) {
|
|
82
83
|
const isMobile = useMobile();
|
|
83
84
|
if (!Array.isArray(docs) || docs.length === 0) {
|
|
84
85
|
return null;
|
|
85
86
|
}
|
|
86
87
|
if (isMobile) {
|
|
87
|
-
return _jsx(MobileDoc,
|
|
88
|
+
return _jsx(MobileDoc, { ...props, docs: docs });
|
|
88
89
|
}
|
|
89
|
-
return _jsx(DesktopDoc,
|
|
90
|
+
return _jsx(DesktopDoc, { ...props, docs: docs });
|
|
90
91
|
}
|
|
91
92
|
//# sourceMappingURL=PickerDoc.js.map
|
package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerDoc.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"PickerDoc.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport {CircleQuestion} from '@gravity-ui/icons';\nimport {Button, Icon, Popover, Sheet, Table, useMobile} from '@gravity-ui/uikit';\nimport type {TableColumnConfig} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport {getButtonSizeForInput} from '../../../utils/getButtonSizeForInput';\nimport type {DefaultPreset, Preset} from '../Presets/defaultPresets';\nimport {i18n} from '../Presets/i18n';\n\nimport './PickerDoc.scss';\n\nconst b = block('relative-range-date-picker-doc');\n\nconst data: DefaultPreset[] = [\n {\n title: 'Last 5 minutes',\n from: 'now - 5m',\n to: 'now',\n },\n {\n title: 'From start of day',\n from: 'now/d',\n to: 'now',\n },\n {\n title: 'This week',\n from: 'now/w',\n to: 'now/w',\n },\n {\n title: 'From start of week',\n from: 'now/w',\n to: 'now',\n },\n {\n title: 'Previous month',\n from: 'now - 1M/M',\n to: 'now - 1M/M',\n },\n];\n\ninterface DocContentProps extends Omit<PresetsDocProps, 'docs' | 'className'> {\n docs: Preset[];\n}\n\nfunction DocContent({size, docs, onStartUpdate, onEndUpdate, onRangeUpdate}: DocContentProps) {\n const {t} = i18n.useTranslation();\n const columns: TableColumnConfig<Preset>[] = React.useMemo(\n () => [\n {\n id: 'title',\n name: () => {\n return t('Range');\n },\n template: (item) => {\n return (\n <Button\n view=\"flat\"\n size={getButtonSizeForInput(size)}\n onClick={() => {\n onRangeUpdate(item.from, item.to);\n }}\n >\n {t(item.title as any)}\n </Button>\n );\n },\n },\n {\n id: 'from',\n name: () => {\n return t('From');\n },\n template: (item) => (\n <Button\n view=\"flat\"\n size={getButtonSizeForInput(size)}\n onClick={() => {\n onStartUpdate(item.from);\n }}\n >\n {item.from}\n </Button>\n ),\n },\n {\n id: 'to',\n name: () => {\n return t('To');\n },\n template: (item) => (\n <Button\n view=\"flat\"\n size={getButtonSizeForInput(size)}\n onClick={() => {\n onEndUpdate(item.to);\n }}\n >\n {item.to}\n </Button>\n ),\n },\n ],\n [onEndUpdate, onRangeUpdate, onStartUpdate, size, t],\n );\n\n return <Table columns={columns} data={docs} className={b('table', {size})} wordWrap />;\n}\n\ninterface DesktopDocProps extends Omit<PresetsDocProps, 'docs'> {\n docs: Preset[];\n}\n\nfunction DesktopDoc({className, size, ...props}: DesktopDocProps) {\n return (\n <Popover\n className={b()}\n hasArrow={false}\n placement={['right-start', 'left-start']}\n content={<DocContent size={size} {...props} />}\n >\n <Button\n className={b('button', className)}\n view=\"flat-secondary\"\n size={getButtonSizeForInput(size)}\n >\n <Icon data={CircleQuestion} />\n </Button>\n </Popover>\n );\n}\n\ninterface MobileDocProps extends Omit<PresetsDocProps, 'docs'> {\n docs: Preset[];\n}\n\nfunction MobileDoc({className, ...props}: MobileDocProps) {\n const [open, setOpen] = React.useState(false);\n return (\n <div className={b(null, className)}>\n <Button\n className={b('button')}\n view=\"flat-secondary\"\n size=\"l\"\n onClick={() => {\n setOpen(true);\n }}\n >\n <Icon data={CircleQuestion} />\n </Button>\n <Sheet visible={open} onClose={() => setOpen(false)}>\n <DocContent {...props} />\n </Sheet>\n </div>\n );\n}\n\ninterface PresetsDocProps {\n className?: string;\n size?: 's' | 'm' | 'l' | 'xl';\n docs?: Preset[];\n onStartUpdate: (start: string | null) => void;\n onEndUpdate: (end: string | null) => void;\n onRangeUpdate: (start: string | null, end: string | null) => void;\n}\n\nexport function PickerDoc({docs = data, ...props}: PresetsDocProps) {\n const isMobile = useMobile();\n\n if (!Array.isArray(docs) || docs.length === 0) {\n return null;\n }\n\n if (isMobile) {\n return <MobileDoc {...props} docs={docs} />;\n }\n\n return <DesktopDoc {...props} docs={docs} />;\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
3
|
import type { TextInputSize } from '@gravity-ui/uikit';
|
|
4
|
+
import type { RelativeDatePickerProps } from "../../../RelativeDatePicker/index.js";
|
|
3
5
|
import type { DomProps, StyleProps } from "../../../types/index.js";
|
|
4
6
|
import type { RelativeRangeDatePickerStateOptions } from "../../hooks/useRelativeRangeDatePickerState.js";
|
|
5
7
|
import type { Preset } from "../Presets/defaultPresets.js";
|
|
@@ -15,6 +17,8 @@ export interface PickerFormProps extends RelativeRangeDatePickerStateOptions, Do
|
|
|
15
17
|
readOnly?: boolean;
|
|
16
18
|
/** Format of the date when rendered in the input. [Available formats](https://day.js.org/docs/en/display/format) */
|
|
17
19
|
format?: string;
|
|
20
|
+
/** Placement of calendar popups inside the range picker dialog. */
|
|
21
|
+
calendarPopupPlacement?: RelativeDatePickerProps['popupPlacement'];
|
|
18
22
|
/** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */
|
|
19
23
|
placeholderValue?: DateTime;
|
|
20
24
|
/** Apply changes with button */
|
|
@@ -34,4 +38,4 @@ export interface PickerFormProps extends RelativeRangeDatePickerStateOptions, Do
|
|
|
34
38
|
}
|
|
35
39
|
export declare function PickerForm(props: PickerFormProps & {
|
|
36
40
|
onApply: () => void;
|
|
37
|
-
}):
|
|
41
|
+
}): React.JSX.Element;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React from 'react';
|
|
3
4
|
import { Button, Text } from '@gravity-ui/uikit';
|
|
4
5
|
import { block } from "../../../../utils/cn.js";
|
|
5
6
|
import { RelativeDatePicker } from "../../../RelativeDatePicker/index.js";
|
|
6
7
|
import { Presets } from "../Presets/Presets.js";
|
|
8
|
+
import { filterPresetList } from "../Presets/utils.js";
|
|
7
9
|
import { Zones } from "../Zones/Zones.js";
|
|
8
10
|
import { PickerDoc } from "./PickerDoc.js";
|
|
9
11
|
import { i18n } from "./i18n/index.js";
|
|
@@ -11,8 +13,19 @@ import { useRelativeRangeDatePickerDialogState } from "./useRelativeRangeDatePic
|
|
|
11
13
|
import "./PickerForm.css";
|
|
12
14
|
const b = block('relative-range-date-picker-form');
|
|
13
15
|
export function PickerForm(props) {
|
|
14
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
15
16
|
const state = useRelativeRangeDatePickerDialogState(props);
|
|
17
|
+
const docs = React.useMemo(() => props.docs
|
|
18
|
+
? filterPresetList(props.docs, {
|
|
19
|
+
minValue: props.minValue,
|
|
20
|
+
allowNullableValues: props.allowNullableValues,
|
|
21
|
+
})
|
|
22
|
+
: props.docs, [props.allowNullableValues, props.docs, props.minValue]);
|
|
23
|
+
const toRelativeValue = (value) => {
|
|
24
|
+
if (value === null && !props.allowNullableValues) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return value === null ? null : { type: 'relative', value };
|
|
28
|
+
};
|
|
16
29
|
const fieldProps = {
|
|
17
30
|
timeZone: state.timeZone,
|
|
18
31
|
format: props.format,
|
|
@@ -22,21 +35,34 @@ export function PickerForm(props) {
|
|
|
22
35
|
readOnly: props.readOnly,
|
|
23
36
|
size: props.size,
|
|
24
37
|
errorPlacement: 'inside',
|
|
38
|
+
popupPlacement: props.calendarPopupPlacement,
|
|
25
39
|
};
|
|
26
40
|
const { isDateUnavailable, withHeader = false } = props;
|
|
27
41
|
const { t } = i18n.useTranslation();
|
|
28
|
-
return (_jsxs("div", { className: b({ size: props.size }, props.className), style: props.style, children: [withHeader && (_jsxs("div", { className: b('header'), children: [_jsx(Text, { variant: props.size === 'xl' ? 'subheader-3' : 'subheader-2', children: t('Select the interval') }), _jsx(PickerDoc, { size: props.size, docs:
|
|
29
|
-
|
|
42
|
+
return (_jsxs("div", { className: b({ size: props.size }, props.className), style: props.style, children: [withHeader && (_jsxs("div", { className: b('header'), children: [_jsx(Text, { variant: props.size === 'xl' ? 'subheader-3' : 'subheader-2', children: t('Select the interval') }), _jsx(PickerDoc, { size: props.size, docs: docs, onStartUpdate: (start) => {
|
|
43
|
+
const nextStart = toRelativeValue(start);
|
|
44
|
+
if (nextStart !== undefined) {
|
|
45
|
+
state.setStart(nextStart);
|
|
46
|
+
}
|
|
30
47
|
}, onEndUpdate: (end) => {
|
|
31
|
-
|
|
32
|
-
|
|
48
|
+
const nextEnd = toRelativeValue(end);
|
|
49
|
+
if (nextEnd !== undefined) {
|
|
50
|
+
state.setEnd(nextEnd);
|
|
51
|
+
}
|
|
52
|
+
}, onRangeUpdate: (start, end) => {
|
|
53
|
+
const nextStart = toRelativeValue(start);
|
|
54
|
+
const nextEnd = toRelativeValue(end);
|
|
55
|
+
if (nextStart !== undefined && nextEnd !== undefined) {
|
|
56
|
+
state.setRange(nextStart, nextEnd);
|
|
57
|
+
}
|
|
58
|
+
} })] })), _jsxs("div", { className: b('pickers'), children: [_jsx(RelativeDatePicker, { ...fieldProps, isDateUnavailable: isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined, validationState: state.startValidation?.isInvalid ? 'invalid' : undefined, errorMessage: state.startValidation?.errors?.join('\n') || t('Value is incorrect.'), placeholderValue: props.placeholderValue?.startOf('day'), label: t('From'), value: state.start, onUpdate: state.setStart }), _jsx(RelativeDatePicker, { ...fieldProps, isDateUnavailable: isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined, validationState: state.endValidation?.isInvalid ? 'invalid' : undefined, errorMessage: state.endValidation?.errors?.join('\n') || t('Value is incorrect.'), placeholderValue: props.placeholderValue?.endOf('day'), label: t('To'), value: state.end, onUpdate: state.setEnd, roundUp: true })] }), props.withApplyButton && !props.readOnly ? (_jsx(Button, { disabled: state.isInvalid, size: props.size, onClick: () => {
|
|
33
59
|
state.applyValue();
|
|
34
60
|
props.onApply();
|
|
35
61
|
}, className: b('apply'), width: "max", children: t('Apply') })) : null, props.withPresets && !props.readOnly ? (_jsx(Presets, { size: props.size, presetTabs: props.presetTabs, onChoosePreset: (start, end) => {
|
|
36
|
-
state.setRange({ type: 'relative', value: start }, { type: 'relative', value: end }, props.applyPresetsImmediately);
|
|
62
|
+
state.setRange(start === null ? null : { type: 'relative', value: start }, end === null ? null : { type: 'relative', value: end }, props.applyPresetsImmediately);
|
|
37
63
|
if (!props.withApplyButton || props.applyPresetsImmediately) {
|
|
38
64
|
props.onApply();
|
|
39
65
|
}
|
|
40
|
-
}, minValue: props.minValue, className: b('presets') })) : null, props.withZonesList ? (_jsx("div", { className: b('zone'), children: _jsx(Zones, { value: state.timeZone, onUpdate: state.setTimeZone, disabled: props.readOnly, size: props.size }) })) : null] }));
|
|
66
|
+
}, minValue: props.minValue, allowNullableValues: props.allowNullableValues, className: b('presets') })) : null, props.withZonesList ? (_jsx("div", { className: b('zone'), children: _jsx(Zones, { value: state.timeZone, onUpdate: state.setTimeZone, disabled: props.readOnly, size: props.size }) })) : null] }));
|
|
41
67
|
}
|
|
42
68
|
//# sourceMappingURL=PickerForm.js.map
|
package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerForm.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {Button, Text} from '@gravity-ui/uikit';\nimport type {TextInputSize} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport {RelativeDatePicker} from '../../../RelativeDatePicker';\nimport type {RelativeDatePickerProps} from '../../../RelativeDatePicker';\nimport type {DomProps, StyleProps} from '../../../types';\nimport type {RelativeRangeDatePickerStateOptions} from '../../hooks/useRelativeRangeDatePickerState';\nimport {Presets} from '../Presets/Presets';\nimport type {Preset} from '../Presets/defaultPresets';\nimport type {PresetTab} from '../Presets/utils';\nimport {Zones} from '../Zones/Zones';\n\nimport {PickerDoc} from './PickerDoc';\nimport {i18n} from './i18n';\nimport {useRelativeRangeDatePickerDialogState} from './useRelativeRangeDatePickerDialogState';\n\nimport './PickerForm.scss';\n\nconst b = block('relative-range-date-picker-form');\n\nexport interface PickerFormProps extends RelativeRangeDatePickerStateOptions, DomProps, StyleProps {\n /** The size of the element */\n size?: TextInputSize;\n /**\n * Whether the values is immutable.\n * @default false\n */\n readOnly?: boolean;\n /** Format of the date when rendered in the input. [Available formats](https://day.js.org/docs/en/display/format) */\n format?: string;\n /** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */\n placeholderValue?: DateTime;\n /** Apply changes with button */\n withApplyButton?: boolean;\n /** Show time zone selector */\n withZonesList?: boolean;\n /** Show relative range presets */\n withPresets?: boolean;\n /** Apply presets immediately */\n applyPresetsImmediately?: boolean;\n /** Show header with docs tooltip */\n withHeader?: boolean;\n /** Custom preset tabs */\n presetTabs?: PresetTab[];\n /** Custom docs for picker, if empty array docs will be hidden */\n docs?: Preset[];\n}\n\nexport function PickerForm(\n props: PickerFormProps & {\n onApply: () => void;\n },\n) {\n const state = useRelativeRangeDatePickerDialogState(props);\n\n const fieldProps: RelativeDatePickerProps = {\n timeZone: state.timeZone,\n format: props.format,\n minValue: props.minValue,\n maxValue: props.maxValue,\n hasClear: props.allowNullableValues,\n readOnly: props.readOnly,\n size: props.size,\n errorPlacement: 'inside',\n };\n const {isDateUnavailable, withHeader = false} = props;\n const {t} = i18n.useTranslation();\n return (\n <div className={b({size: props.size}, props.className)} style={props.style}>\n {withHeader && (\n <div className={b('header')}>\n <Text variant={props.size === 'xl' ? 'subheader-3' : 'subheader-2'}>\n {t('Select the interval')}\n </Text>\n <PickerDoc\n size={props.size}\n docs={props.docs}\n onStartUpdate={(start) => {\n state.setStart({type: 'relative', value: start});\n }}\n onEndUpdate={(end) => {\n state.setEnd({type: 'relative', value: end});\n }}\n />\n </div>\n )}\n\n <div className={b('pickers')}>\n <RelativeDatePicker\n {...fieldProps}\n isDateUnavailable={\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined\n }\n validationState={state.startValidation?.isInvalid ? 'invalid' : undefined}\n errorMessage={\n state.startValidation?.errors?.join('\\n') || t('Value is incorrect.')\n }\n placeholderValue={props.placeholderValue?.startOf('day')}\n label={t('From')}\n value={state.start}\n onUpdate={state.setStart}\n />\n <RelativeDatePicker\n {...fieldProps}\n isDateUnavailable={\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined\n }\n validationState={state.endValidation?.isInvalid ? 'invalid' : undefined}\n errorMessage={\n state.endValidation?.errors?.join('\\n') || t('Value is incorrect.')\n }\n placeholderValue={props.placeholderValue?.endOf('day')}\n label={t('To')}\n value={state.end}\n onUpdate={state.setEnd}\n roundUp\n />\n </div>\n {props.withApplyButton && !props.readOnly ? (\n <Button\n disabled={state.isInvalid}\n size={props.size}\n onClick={() => {\n state.applyValue();\n props.onApply();\n }}\n className={b('apply')}\n width=\"max\"\n >\n {t('Apply')}\n </Button>\n ) : null}\n {props.withPresets && !props.readOnly ? (\n <Presets\n size={props.size}\n presetTabs={props.presetTabs}\n onChoosePreset={(start, end) => {\n state.setRange(\n {type: 'relative', value: start},\n {type: 'relative', value: end},\n props.applyPresetsImmediately,\n );\n if (!props.withApplyButton || props.applyPresetsImmediately) {\n props.onApply();\n }\n }}\n minValue={props.minValue}\n className={b('presets')}\n />\n ) : null}\n {props.withZonesList ? (\n <div className={b('zone')}>\n <Zones\n value={state.timeZone}\n onUpdate={state.setTimeZone}\n disabled={props.readOnly}\n size={props.size}\n />\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PickerForm.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {Button, Text} from '@gravity-ui/uikit';\nimport type {TextInputSize} from '@gravity-ui/uikit';\n\nimport {block} from '../../../../utils/cn';\nimport {RelativeDatePicker} from '../../../RelativeDatePicker';\nimport type {RelativeDatePickerProps} from '../../../RelativeDatePicker';\nimport type {DomProps, StyleProps} from '../../../types';\nimport type {RelativeRangeDatePickerStateOptions} from '../../hooks/useRelativeRangeDatePickerState';\nimport {Presets} from '../Presets/Presets';\nimport type {Preset} from '../Presets/defaultPresets';\nimport {filterPresetList} from '../Presets/utils';\nimport type {PresetTab} from '../Presets/utils';\nimport {Zones} from '../Zones/Zones';\n\nimport {PickerDoc} from './PickerDoc';\nimport {i18n} from './i18n';\nimport {useRelativeRangeDatePickerDialogState} from './useRelativeRangeDatePickerDialogState';\n\nimport './PickerForm.scss';\n\nconst b = block('relative-range-date-picker-form');\n\nexport interface PickerFormProps extends RelativeRangeDatePickerStateOptions, DomProps, StyleProps {\n /** The size of the element */\n size?: TextInputSize;\n /**\n * Whether the values is immutable.\n * @default false\n */\n readOnly?: boolean;\n /** Format of the date when rendered in the input. [Available formats](https://day.js.org/docs/en/display/format) */\n format?: string;\n /** Placement of calendar popups inside the range picker dialog. */\n calendarPopupPlacement?: RelativeDatePickerProps['popupPlacement'];\n /** A placeholder date that controls the default values of each segment when the user first interacts with them. Defaults to today's date at midnight. */\n placeholderValue?: DateTime;\n /** Apply changes with button */\n withApplyButton?: boolean;\n /** Show time zone selector */\n withZonesList?: boolean;\n /** Show relative range presets */\n withPresets?: boolean;\n /** Apply presets immediately */\n applyPresetsImmediately?: boolean;\n /** Show header with docs tooltip */\n withHeader?: boolean;\n /** Custom preset tabs */\n presetTabs?: PresetTab[];\n /** Custom docs for picker, if empty array docs will be hidden */\n docs?: Preset[];\n}\n\nexport function PickerForm(\n props: PickerFormProps & {\n onApply: () => void;\n },\n) {\n const state = useRelativeRangeDatePickerDialogState(props);\n const docs = React.useMemo(\n () =>\n props.docs\n ? filterPresetList(props.docs, {\n minValue: props.minValue,\n allowNullableValues: props.allowNullableValues,\n })\n : props.docs,\n [props.allowNullableValues, props.docs, props.minValue],\n );\n\n const toRelativeValue = (value: string | null) => {\n if (value === null && !props.allowNullableValues) {\n return undefined;\n }\n\n return value === null ? null : {type: 'relative' as const, value};\n };\n\n const fieldProps: RelativeDatePickerProps = {\n timeZone: state.timeZone,\n format: props.format,\n minValue: props.minValue,\n maxValue: props.maxValue,\n hasClear: props.allowNullableValues,\n readOnly: props.readOnly,\n size: props.size,\n errorPlacement: 'inside',\n popupPlacement: props.calendarPopupPlacement,\n };\n const {isDateUnavailable, withHeader = false} = props;\n const {t} = i18n.useTranslation();\n return (\n <div className={b({size: props.size}, props.className)} style={props.style}>\n {withHeader && (\n <div className={b('header')}>\n <Text variant={props.size === 'xl' ? 'subheader-3' : 'subheader-2'}>\n {t('Select the interval')}\n </Text>\n <PickerDoc\n size={props.size}\n docs={docs}\n onStartUpdate={(start) => {\n const nextStart = toRelativeValue(start);\n if (nextStart !== undefined) {\n state.setStart(nextStart);\n }\n }}\n onEndUpdate={(end) => {\n const nextEnd = toRelativeValue(end);\n if (nextEnd !== undefined) {\n state.setEnd(nextEnd);\n }\n }}\n onRangeUpdate={(start, end) => {\n const nextStart = toRelativeValue(start);\n const nextEnd = toRelativeValue(end);\n if (nextStart !== undefined && nextEnd !== undefined) {\n state.setRange(nextStart, nextEnd);\n }\n }}\n />\n </div>\n )}\n\n <div className={b('pickers')}>\n <RelativeDatePicker\n {...fieldProps}\n isDateUnavailable={\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined\n }\n validationState={state.startValidation?.isInvalid ? 'invalid' : undefined}\n errorMessage={\n state.startValidation?.errors?.join('\\n') || t('Value is incorrect.')\n }\n placeholderValue={props.placeholderValue?.startOf('day')}\n label={t('From')}\n value={state.start}\n onUpdate={state.setStart}\n />\n <RelativeDatePicker\n {...fieldProps}\n isDateUnavailable={\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined\n }\n validationState={state.endValidation?.isInvalid ? 'invalid' : undefined}\n errorMessage={\n state.endValidation?.errors?.join('\\n') || t('Value is incorrect.')\n }\n placeholderValue={props.placeholderValue?.endOf('day')}\n label={t('To')}\n value={state.end}\n onUpdate={state.setEnd}\n roundUp\n />\n </div>\n {props.withApplyButton && !props.readOnly ? (\n <Button\n disabled={state.isInvalid}\n size={props.size}\n onClick={() => {\n state.applyValue();\n props.onApply();\n }}\n className={b('apply')}\n width=\"max\"\n >\n {t('Apply')}\n </Button>\n ) : null}\n {props.withPresets && !props.readOnly ? (\n <Presets\n size={props.size}\n presetTabs={props.presetTabs}\n onChoosePreset={(start, end) => {\n state.setRange(\n start === null ? null : {type: 'relative', value: start},\n end === null ? null : {type: 'relative', value: end},\n props.applyPresetsImmediately,\n );\n if (!props.withApplyButton || props.applyPresetsImmediately) {\n props.onApply();\n }\n }}\n minValue={props.minValue}\n allowNullableValues={props.allowNullableValues}\n className={b('presets')}\n />\n ) : null}\n {props.withZonesList ? (\n <div className={b('zone')}>\n <Zones\n value={state.timeZone}\n onUpdate={state.setTimeZone}\n disabled={props.readOnly}\n size={props.size}\n />\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
@@ -6,10 +6,10 @@ export declare function useRelativeRangeDatePickerDialogState(props: PickerFormP
|
|
|
6
6
|
timeZone: string;
|
|
7
7
|
setStart: (newValue: Value | null) => void;
|
|
8
8
|
setEnd: (newValue: Value | null) => void;
|
|
9
|
-
setRange: (newStart: Value, newEnd: Value, force?: boolean) => void;
|
|
9
|
+
setRange: (newStart: Value | null, newEnd: Value | null, force?: boolean) => void;
|
|
10
10
|
setTimeZone: (newTimeZone: string) => void;
|
|
11
11
|
applyValue: () => void;
|
|
12
12
|
isInvalid: boolean;
|
|
13
|
-
startValidation: import("../../../utils/validation/datePicker.js").ValidationResult
|
|
14
|
-
endValidation: import("../../../utils/validation/datePicker.js").ValidationResult
|
|
13
|
+
startValidation: import("../../../utils/validation/datePicker.js").ValidationResult;
|
|
14
|
+
endValidation: import("../../../utils/validation/datePicker.js").ValidationResult;
|
|
15
15
|
};
|
|
@@ -3,18 +3,16 @@ import { useControlledState } from '@gravity-ui/uikit';
|
|
|
3
3
|
import { i18n } from "../../../utils/validation/i18n/index.js";
|
|
4
4
|
import { getRangeValidationResult } from "../../../utils/validation/relativeRangeDatePicker.js";
|
|
5
5
|
export function useRelativeRangeDatePickerDialogState(props) {
|
|
6
|
-
|
|
7
|
-
const [
|
|
8
|
-
const [value, setValue] = useControlledState(props.value, (_b = props.defaultValue) !== null && _b !== void 0 ? _b : null, (v, tz) => {
|
|
9
|
-
var _a;
|
|
6
|
+
const [userTimeZone, setUserTimeZone] = useControlledState(props.timeZone, props.defaultTimeZone ?? 'default', props.onUpdateTimeZone);
|
|
7
|
+
const [value, setValue] = useControlledState(props.value, props.defaultValue ?? null, (v, tz) => {
|
|
10
8
|
setUserTimeZone(tz);
|
|
11
9
|
if (value !== v || (value && userTimeZone !== tz)) {
|
|
12
|
-
|
|
10
|
+
props.onUpdate?.(v, tz);
|
|
13
11
|
}
|
|
14
12
|
});
|
|
15
13
|
const { withApplyButton } = props;
|
|
16
|
-
const [start, setStart] = React.useState(
|
|
17
|
-
const [end, setEnd] = React.useState(
|
|
14
|
+
const [start, setStart] = React.useState(value?.start ?? null);
|
|
15
|
+
const [end, setEnd] = React.useState(value?.end ?? null);
|
|
18
16
|
const [innerTimeZone, setTimeZone] = React.useState(userTimeZone);
|
|
19
17
|
const timeZone = withApplyButton ? innerTimeZone : userTimeZone;
|
|
20
18
|
const allowNullableValues = props.allowNullableValues;
|
|
@@ -24,7 +22,7 @@ export function useRelativeRangeDatePickerDialogState(props) {
|
|
|
24
22
|
}
|
|
25
23
|
setStart(newValue);
|
|
26
24
|
if (!withApplyButton) {
|
|
27
|
-
setValue(getRangeValue(newValue, end,
|
|
25
|
+
setValue(getRangeValue(newValue, end, { ...props, timeZone, allowNullableValues }), timeZone);
|
|
28
26
|
}
|
|
29
27
|
}
|
|
30
28
|
function setEndValue(newValue) {
|
|
@@ -33,7 +31,7 @@ export function useRelativeRangeDatePickerDialogState(props) {
|
|
|
33
31
|
}
|
|
34
32
|
setEnd(newValue);
|
|
35
33
|
if (!withApplyButton) {
|
|
36
|
-
setValue(getRangeValue(start, newValue,
|
|
34
|
+
setValue(getRangeValue(start, newValue, { ...props, timeZone, allowNullableValues }), timeZone);
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
37
|
function setTimeZoneValue(newTimeZone) {
|
|
@@ -41,18 +39,22 @@ export function useRelativeRangeDatePickerDialogState(props) {
|
|
|
41
39
|
return;
|
|
42
40
|
}
|
|
43
41
|
setTimeZone(newTimeZone);
|
|
44
|
-
const newStart = start ?
|
|
45
|
-
if (
|
|
42
|
+
const newStart = start ? { ...start } : null;
|
|
43
|
+
if (newStart?.type === 'absolute') {
|
|
46
44
|
newStart.value = newStart.value.timeZone(newTimeZone, true);
|
|
47
45
|
setStart(newStart);
|
|
48
46
|
}
|
|
49
|
-
const newEnd = end ?
|
|
50
|
-
if (
|
|
47
|
+
const newEnd = end ? { ...end } : null;
|
|
48
|
+
if (newEnd?.type === 'absolute') {
|
|
51
49
|
newEnd.value = newEnd.value.timeZone(newTimeZone, true);
|
|
52
50
|
setEnd(newEnd);
|
|
53
51
|
}
|
|
54
52
|
if (!withApplyButton) {
|
|
55
|
-
setValue(getRangeValue(newStart, newEnd,
|
|
53
|
+
setValue(getRangeValue(newStart, newEnd, {
|
|
54
|
+
...props,
|
|
55
|
+
timeZone: newTimeZone,
|
|
56
|
+
allowNullableValues,
|
|
57
|
+
}), newTimeZone);
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
60
|
function setRange(newStart, newEnd, force) {
|
|
@@ -62,14 +64,14 @@ export function useRelativeRangeDatePickerDialogState(props) {
|
|
|
62
64
|
setStart(newStart);
|
|
63
65
|
setEnd(newEnd);
|
|
64
66
|
if (!withApplyButton || force) {
|
|
65
|
-
setValue(getRangeValue(newStart, newEnd,
|
|
67
|
+
setValue(getRangeValue(newStart, newEnd, { ...props, timeZone, allowNullableValues }), timeZone);
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
70
|
function applyValue() {
|
|
69
71
|
if (props.readOnly) {
|
|
70
72
|
return;
|
|
71
73
|
}
|
|
72
|
-
setValue(getRangeValue(start, end,
|
|
74
|
+
setValue(getRangeValue(start, end, { ...props, timeZone, allowNullableValues }), timeZone);
|
|
73
75
|
}
|
|
74
76
|
const { t } = i18n.useTranslation();
|
|
75
77
|
const validation = React.useMemo(() => getRangeValidationResult(start || end ? { start, end } : null, allowNullableValues, props.minValue, props.maxValue, props.isDateUnavailable, timeZone, t), [
|
|
@@ -97,11 +99,10 @@ export function useRelativeRangeDatePickerDialogState(props) {
|
|
|
97
99
|
};
|
|
98
100
|
}
|
|
99
101
|
function getRangeValue(start, end, options = {}) {
|
|
100
|
-
var _a;
|
|
101
102
|
if (!start && !end) {
|
|
102
103
|
return null;
|
|
103
104
|
}
|
|
104
|
-
const { isInvalid } = getRangeValidationResult({ start, end }, options.allowNullableValues, options.minValue, options.maxValue, options.isDateUnavailable,
|
|
105
|
+
const { isInvalid } = getRangeValidationResult({ start, end }, options.allowNullableValues, options.minValue, options.maxValue, options.isDateUnavailable, options.timeZone ?? 'default');
|
|
105
106
|
if (isInvalid) {
|
|
106
107
|
return null;
|
|
107
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRelativeRangeDatePickerDialogState.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAAC,IAAI,EAAC,gDAAuC;AACpD,OAAO,EAAC,wBAAwB,EAAC,6DAA0D;AAI3F,MAAM,UAAU,qCAAqC,CAAC,KAAsB
|
|
1
|
+
{"version":3,"file":"useRelativeRangeDatePickerDialogState.js","sourceRoot":"../../../../../../src","sources":["components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useControlledState} from '@gravity-ui/uikit';\n\nimport type {Value} from '../../../RelativeDatePicker';\nimport type {RangeValue} from '../../../types';\nimport {i18n} from '../../../utils/validation/i18n';\nimport {getRangeValidationResult} from '../../../utils/validation/relativeRangeDatePicker';\n\nimport type {PickerFormProps} from './PickerForm';\n\nexport function useRelativeRangeDatePickerDialogState(props: PickerFormProps) {\n const [userTimeZone, setUserTimeZone] = useControlledState(\n props.timeZone,\n props.defaultTimeZone ?? 'default',\n props.onUpdateTimeZone,\n );\n\n const [value, setValue] = useControlledState(\n props.value,\n props.defaultValue ?? null,\n (v, tz: string) => {\n setUserTimeZone(tz);\n if (value !== v || (value && userTimeZone !== tz)) {\n props.onUpdate?.(v, tz);\n }\n },\n );\n\n const {withApplyButton} = props;\n\n const [start, setStart] = React.useState<Value | null>(value?.start ?? null);\n const [end, setEnd] = React.useState<Value | null>(value?.end ?? null);\n const [innerTimeZone, setTimeZone] = React.useState(userTimeZone);\n\n const timeZone = withApplyButton ? innerTimeZone : userTimeZone;\n const allowNullableValues = props.allowNullableValues;\n\n function setStartValue(newValue: Value | null) {\n if (props.readOnly) {\n return;\n }\n setStart(newValue);\n if (!withApplyButton) {\n setValue(\n getRangeValue(newValue, end, {...props, timeZone, allowNullableValues}),\n timeZone,\n );\n }\n }\n\n function setEndValue(newValue: Value | null) {\n if (props.readOnly) {\n return;\n }\n setEnd(newValue);\n if (!withApplyButton) {\n setValue(\n getRangeValue(start, newValue, {...props, timeZone, allowNullableValues}),\n timeZone,\n );\n }\n }\n\n function setTimeZoneValue(newTimeZone: string) {\n if (props.readOnly) {\n return;\n }\n setTimeZone(newTimeZone);\n const newStart = start ? {...start} : null;\n if (newStart?.type === 'absolute') {\n newStart.value = newStart.value.timeZone(newTimeZone, true);\n setStart(newStart);\n }\n const newEnd = end ? {...end} : null;\n if (newEnd?.type === 'absolute') {\n newEnd.value = newEnd.value.timeZone(newTimeZone, true);\n setEnd(newEnd);\n }\n if (!withApplyButton) {\n setValue(\n getRangeValue(newStart, newEnd, {\n ...props,\n timeZone: newTimeZone,\n allowNullableValues,\n }),\n newTimeZone,\n );\n }\n }\n\n function setRange(newStart: Value | null, newEnd: Value | null, force?: boolean) {\n if (props.readOnly) {\n return;\n }\n setStart(newStart);\n setEnd(newEnd);\n if (!withApplyButton || force) {\n setValue(\n getRangeValue(newStart, newEnd, {...props, timeZone, allowNullableValues}),\n timeZone,\n );\n }\n }\n\n function applyValue() {\n if (props.readOnly) {\n return;\n }\n setValue(getRangeValue(start, end, {...props, timeZone, allowNullableValues}), timeZone);\n }\n\n const {t} = i18n.useTranslation();\n const validation = React.useMemo(\n () =>\n getRangeValidationResult(\n start || end ? {start, end} : null,\n allowNullableValues,\n props.minValue,\n props.maxValue,\n props.isDateUnavailable,\n timeZone,\n t,\n ),\n [\n allowNullableValues,\n end,\n props.isDateUnavailable,\n props.maxValue,\n props.minValue,\n start,\n timeZone,\n t,\n ],\n );\n\n return {\n start,\n end,\n timeZone,\n setStart: setStartValue,\n setEnd: setEndValue,\n setRange,\n setTimeZone: setTimeZoneValue,\n applyValue,\n isInvalid: validation.isInvalid,\n startValidation: validation.startValidationResult,\n endValidation: validation.endValidationResult,\n };\n}\n\ninterface GetRangeValueOptions {\n allowNullableValues?: boolean;\n minValue?: DateTime;\n maxValue?: DateTime;\n isDateUnavailable?: (v: DateTime, endPoint: 'start' | 'end') => boolean;\n timeZone?: string;\n}\nfunction getRangeValue(\n start: Value | null,\n end: Value | null,\n options: GetRangeValueOptions = {},\n): RangeValue<Value | null> | null {\n if (!start && !end) {\n return null;\n }\n\n const {isInvalid} = getRangeValidationResult(\n {start, end},\n options.allowNullableValues,\n options.minValue,\n options.maxValue,\n options.isDateUnavailable,\n options.timeZone ?? 'default',\n );\n\n if (isInvalid) {\n return null;\n }\n\n return {start, end};\n}\n"]}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
3
|
import type { PresetTab } from "./utils.js";
|
|
3
4
|
import "./Presets.css";
|
|
4
|
-
|
|
5
|
+
interface PresetProps {
|
|
5
6
|
className?: string;
|
|
6
|
-
onChoosePreset: (start: string, end: string) => void;
|
|
7
|
+
onChoosePreset: (start: string | null, end: string | null) => void;
|
|
7
8
|
withTime?: boolean;
|
|
8
9
|
minValue?: DateTime;
|
|
9
10
|
size?: 's' | 'm' | 'l' | 'xl';
|
|
10
11
|
presetTabs?: PresetTab[];
|
|
12
|
+
allowNullableValues?: boolean;
|
|
11
13
|
}
|
|
12
|
-
export declare function Presets({ className, size, minValue, withTime, onChoosePreset, presetTabs, }: PresetProps):
|
|
13
|
-
export
|
|
14
|
-
s: number;
|
|
15
|
-
m: number;
|
|
16
|
-
l: number;
|
|
17
|
-
xl: number;
|
|
18
|
-
};
|
|
14
|
+
export declare function Presets({ className, size, minValue, withTime, onChoosePreset, presetTabs, allowNullableValues, }: PresetProps): React.JSX.Element | null;
|
|
15
|
+
export {};
|