@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
|
@@ -32,7 +32,7 @@ export function DateTimeRuler({ className, children, start, end, minValue, maxVa
|
|
|
32
32
|
return (_jsx("div", { className: b(null, className), children: _jsx(viewportIntervalContext.Provider, { value: viewportInterval, children: _jsxs(viewportDimensionsContext.Provider, { value: viewportDimensions, children: [_jsxs(RulerViewport, { ref: setContainer, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, dragDisabled: dragDisabled, children: [_jsx(MiddleTicks, { timeZone: timeZone }), _jsx(SlitTicks, { formatTime: formatTime, timeZone: timeZone }), hasConstrains ? (_jsx(UnavailableTicks, { theme: "dim", minValue: minValue, maxValue: maxValue, geometry: makeUnavailableTicksGeometry({
|
|
33
33
|
tickHeight: 10,
|
|
34
34
|
viewportHeight: viewportDimensions.height,
|
|
35
|
-
}), tickWidth: viewportDimensions.height + 10 })) : null, displayNow ? _jsx(NowLine, {}) : null, renderAdditionalRulerContent
|
|
35
|
+
}), tickWidth: viewportDimensions.height + 10 })) : null, displayNow ? _jsx(NowLine, {}) : null, renderAdditionalRulerContent?.({
|
|
36
36
|
interval: viewportInterval,
|
|
37
37
|
dimensions: viewportDimensions,
|
|
38
38
|
})] }), container ? ReactDOM.createPortal(children, container) : null] }) }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ruler.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/Ruler/Ruler.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Ruler.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/Ruler/Ruler.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport ReactDOM from 'react-dom';\n\nimport type {MoveEndEvent, MoveMoveEvent, MoveStartEvent} from '../../../../hooks/useMove';\nimport {useResizeObserver} from '../../../../hooks/useResizeObserver';\nimport {block} from '../../../../utils/cn';\nimport type {RangeValue} from '../../../types';\nimport {NowLine} from '../NowLine/NowLine';\nimport {RulerViewport} from '../RulerViewport/RulerViewport';\nimport {MiddleTicks} from '../Ticks/MiddleTicks';\nimport {SlitTicks} from '../Ticks/SlitTicks';\nimport {UnavailableTicks} from '../Ticks/UnavialableTicks';\nimport {makeUnavailableTicksGeometry} from '../Ticks/utils';\n\nconst b = block('ruler');\n\ninterface RulerProps {\n className?: string;\n children?: React.ReactNode;\n start: DateTime;\n end: DateTime;\n minValue?: DateTime;\n maxValue?: DateTime;\n onMoveStart?: (event: MoveStartEvent) => void;\n onMove?: (delta: number, event: MoveMoveEvent) => void;\n onMoveEnd?: (event: MoveEndEvent) => void;\n displayNow?: boolean;\n formatTime?: (time: DateTime) => string;\n timeZone?: string;\n dragDisabled?: boolean;\n renderAdditionalRulerContent?: (props: {\n interval: ViewportInterval;\n dimensions: ViewportDimensions;\n }) => React.ReactNode;\n}\n\nexport interface ViewportDimensions {\n width: number;\n height: number;\n}\n\nexport type ViewportInterval = RangeValue<DateTime>;\n\nconst viewportDimensionsContext = React.createContext<ViewportDimensions | null>(null);\nconst viewportIntervalContext = React.createContext<ViewportInterval | null>(null);\n\nexport function DateTimeRuler({\n className,\n children,\n start,\n end,\n minValue,\n maxValue,\n onMove,\n onMoveStart,\n onMoveEnd,\n displayNow,\n formatTime,\n timeZone,\n dragDisabled,\n renderAdditionalRulerContent,\n}: RulerProps) {\n const [container, setContainer] = React.useState<HTMLDivElement | null>(null);\n const viewportInterval = React.useMemo(() => ({start, end}), [start, end]);\n const [viewportDimensions, setViewportDimensions] = React.useState<ViewportDimensions>({\n width: 0,\n height: 0,\n });\n const onResize = React.useCallback(() => {\n if (!container) {\n return;\n }\n const {width, height} = container.getBoundingClientRect();\n setViewportDimensions({width, height});\n }, [container]);\n\n const containerRef = React.useMemo(() => ({current: container}), [container]);\n\n useResizeObserver({ref: containerRef, onResize});\n\n const hasConstrains = Boolean(minValue || maxValue);\n\n return (\n <div className={b(null, className)}>\n <viewportIntervalContext.Provider value={viewportInterval}>\n <viewportDimensionsContext.Provider value={viewportDimensions}>\n <RulerViewport\n ref={setContainer}\n onMove={onMove}\n onMoveStart={onMoveStart}\n onMoveEnd={onMoveEnd}\n dragDisabled={dragDisabled}\n >\n <MiddleTicks timeZone={timeZone} />\n <SlitTicks formatTime={formatTime} timeZone={timeZone} />\n {hasConstrains ? (\n <UnavailableTicks\n theme=\"dim\"\n minValue={minValue}\n maxValue={maxValue}\n geometry={makeUnavailableTicksGeometry({\n tickHeight: 10,\n viewportHeight: viewportDimensions.height,\n })}\n tickWidth={viewportDimensions.height + 10}\n />\n ) : null}\n {displayNow ? <NowLine /> : null}\n {renderAdditionalRulerContent?.({\n interval: viewportInterval,\n dimensions: viewportDimensions,\n })}\n </RulerViewport>\n {container ? ReactDOM.createPortal(children, container) : null}\n </viewportDimensionsContext.Provider>\n </viewportIntervalContext.Provider>\n </div>\n );\n}\n\nexport function useViewportDimensions() {\n const viewport = React.useContext(viewportDimensionsContext);\n if (!viewport) {\n throw new Error('useViewportDimensions must be used within a RulerViewport');\n }\n return viewport;\n}\n\nexport function useViewportInterval() {\n const viewport = React.useContext(viewportIntervalContext);\n if (!viewport) {\n throw new Error('useViewportInterval must be used within a RulerViewport');\n }\n return viewport;\n}\n"]}
|
|
@@ -17,13 +17,13 @@ function RulerViewport({ className, children, onMove, onMoveStart, onMoveEnd, dr
|
|
|
17
17
|
let delta = (e.deltaX * 100) / width;
|
|
18
18
|
delta = Math.round(delta * 100) / 100;
|
|
19
19
|
if (delta !== 0) {
|
|
20
|
-
onMove
|
|
20
|
+
onMove?.(delta, e);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
onMoveEnd: onMoveEnd,
|
|
25
25
|
});
|
|
26
|
-
return (_jsxs("div", { ref: ref, className: b(null, className), children: [_jsxs("svg", { ref: containerRef, className: b('svg'), width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", children: [_jsx("defs", { children: _jsxs("filter", { x: "0", y: "0", width: "1", height: "1", id: "g-date-tt-ticklabelbg", children: [_jsx("feFlood", { floodColor: "var(--_--g-date-ruler-viewport-background)" }), _jsx("feComposite", { in: "SourceGraphic" })] }) }), children] }), draggable ? (_jsx("div",
|
|
26
|
+
return (_jsxs("div", { ref: ref, className: b(null, className), children: [_jsxs("svg", { ref: containerRef, className: b('svg'), width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", children: [_jsx("defs", { children: _jsxs("filter", { x: "0", y: "0", width: "1", height: "1", id: "g-date-tt-ticklabelbg", children: [_jsx("feFlood", { floodColor: "var(--_--g-date-ruler-viewport-background)" }), _jsx("feComposite", { in: "SourceGraphic" })] }) }), children] }), draggable ? (_jsx("div", { className: b('dragger', { disabled: dragDisabled }), ...moveProps })) : null] }));
|
|
27
27
|
}
|
|
28
28
|
const _RulerViewport = React.forwardRef(RulerViewport);
|
|
29
29
|
export { _RulerViewport as RulerViewport };
|
package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RulerViewport.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/RulerViewport/RulerViewport.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,OAAO,EAAC,qCAAkC;AAElD,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAE3C,6BAA8B;AAE9B,MAAM,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAWlC,SAAS,aAAa,CAClB,EAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAqB,EACvF,GAA8B;IAE9B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC;IAC/C,MAAM,EAAC,SAAS,EAAC,GAAG,OAAO,CAAC;QACxB,WAAW,EAAE,WAAW;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC9B,MAAM,EAAC,KAAK,EAAC,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAClD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;gBACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBACtC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBACd,MAAM,
|
|
1
|
+
{"version":3,"file":"RulerViewport.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/RulerViewport/RulerViewport.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,OAAO,EAAC,qCAAkC;AAElD,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAE3C,6BAA8B;AAE9B,MAAM,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAWlC,SAAS,aAAa,CAClB,EAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAqB,EACvF,GAA8B;IAE9B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC;IAC/C,MAAM,EAAC,SAAS,EAAC,GAAG,OAAO,CAAC;QACxB,WAAW,EAAE,WAAW;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC9B,MAAM,EAAC,KAAK,EAAC,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAClD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;gBACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBACtC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBACd,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvB,CAAC;YACL,CAAC;QACL,CAAC;QACD,SAAS,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,OAAO,CACH,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,aACxC,eACI,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EACnB,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,KAAK,EAAC,4BAA4B,EAClC,UAAU,EAAC,8BAA8B,aAEzC,yBAEI,kBAAQ,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,EAAE,EAAC,uBAAuB,aAC/D,kBAAS,UAAU,EAAC,4CAA4C,GAAG,EACnE,sBAAa,EAAE,EAAC,eAAe,GAAG,IAC7B,GACN,EACN,QAAQ,IACP,EACL,SAAS,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC,CAAC,KAAM,SAAS,GAAI,CAC5E,CAAC,CAAC,CAAC,IAAI,IACN,CACT,CAAC;AACN,CAAC;AAED,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACvD,OAAO,EAAC,cAAc,IAAI,aAAa,EAAC,CAAC","sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport {useMove} from '../../../../hooks/useMove';\nimport type {MoveEndEvent, MoveMoveEvent, MoveStartEvent} from '../../../../hooks/useMove';\nimport {block} from '../../../../utils/cn';\n\nimport './RulerViewport.scss';\n\nconst b = block('ruler-viewport');\n\ninterface RulerViewportProps {\n className?: string;\n children?: React.ReactNode;\n onMoveStart?: (event: MoveStartEvent) => void;\n onMove?: (delta: number, event: MoveMoveEvent) => void;\n onMoveEnd?: (event: MoveEndEvent) => void;\n dragDisabled?: boolean;\n}\n\nfunction RulerViewport(\n {className, children, onMove, onMoveStart, onMoveEnd, dragDisabled}: RulerViewportProps,\n ref: React.Ref<HTMLDivElement>,\n) {\n const containerRef = React.useRef<SVGSVGElement>(null);\n const draggable = typeof onMove === 'function';\n const {moveProps} = useMove({\n onMoveStart: onMoveStart,\n onMove: (e) => {\n const container = containerRef.current;\n if (e.deltaX !== 0 && container) {\n const {width} = container.getBoundingClientRect();\n let delta = (e.deltaX * 100) / width;\n delta = Math.round(delta * 100) / 100;\n if (delta !== 0) {\n onMove?.(delta, e);\n }\n }\n },\n onMoveEnd: onMoveEnd,\n });\n\n return (\n <div ref={ref} className={b(null, className)}>\n <svg\n ref={containerRef}\n className={b('svg')}\n width=\"100%\"\n height=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <defs>\n {/* this one allows rendering background under tick labels */}\n <filter x=\"0\" y=\"0\" width=\"1\" height=\"1\" id=\"g-date-tt-ticklabelbg\">\n <feFlood floodColor=\"var(--_--g-date-ruler-viewport-background)\" />\n <feComposite in=\"SourceGraphic\" />\n </filter>\n </defs>\n {children}\n </svg>\n {draggable ? (\n <div className={b('dragger', {disabled: dragDisabled})} {...moveProps} />\n ) : null}\n </div>\n );\n}\n\nconst _RulerViewport = React.forwardRef(RulerViewport);\nexport {_RulerViewport as RulerViewport};\n"]}
|
package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { AccessibilityProps, DomProps, StyleProps } from "../../../types/index.js";
|
|
2
3
|
import type { RangeDateSelectionState } from "../../hooks/useRangeDateSelectionState.js";
|
|
3
4
|
import "./SelectionControl.css";
|
|
4
5
|
interface SelectionControlProps extends DomProps, StyleProps, AccessibilityProps {
|
|
5
6
|
state: RangeDateSelectionState;
|
|
6
7
|
}
|
|
7
|
-
export declare function SelectionControl({ state, style, className, ...props }: SelectionControlProps):
|
|
8
|
+
export declare function SelectionControl({ state, style, className, ...props }: SelectionControlProps): React.JSX.Element;
|
|
8
9
|
export {};
|
package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __rest } from "tslib";
|
|
2
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
2
|
import React from 'react';
|
|
4
3
|
import { useMove } from "../../../../hooks/useMove.js";
|
|
@@ -12,9 +11,7 @@ const MIN_SELECTION_WIDTH = 12; // px;
|
|
|
12
11
|
const MIN_DRAG_SCALE = 0.01;
|
|
13
12
|
const MAX_DRAG_SCALE = 100;
|
|
14
13
|
const DRAG_SCALE_STRENGTH = 20;
|
|
15
|
-
export function SelectionControl(
|
|
16
|
-
var _b;
|
|
17
|
-
var { state, style, className } = _a, props = __rest(_a, ["state", "style", "className"]);
|
|
14
|
+
export function SelectionControl({ state, style, className, ...props }) {
|
|
18
15
|
const { start: startDate, end: endDate } = useViewportInterval();
|
|
19
16
|
const viewport = useViewportDimensions();
|
|
20
17
|
const [isDragging, setIsDragging] = React.useState(null);
|
|
@@ -99,36 +96,29 @@ export function SelectionControl(_a) {
|
|
|
99
96
|
const startInputRef = React.useRef(null);
|
|
100
97
|
const endInputRef = React.useRef(null);
|
|
101
98
|
let id = React.useId();
|
|
102
|
-
id =
|
|
99
|
+
id = props.id ?? id;
|
|
103
100
|
const { t } = i18n.useTranslation();
|
|
104
|
-
return (_jsxs("div", { className: b(null, className), style:
|
|
101
|
+
return (_jsxs("div", { className: b(null, className), style: { ...style, left: startX, width: endX - startX }, children: [_jsx("div", { className: b('dragger', {
|
|
105
102
|
dragging: isDragging === 'dragger',
|
|
106
103
|
disabled: Boolean(isDragging && isDragging !== 'dragger'),
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
(_a = draggerInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
104
|
+
}), ...moveProps, onClick: () => {
|
|
105
|
+
draggerInputRef.current?.focus();
|
|
110
106
|
}, children: _jsx("div", { className: b('slider-input-wrapper'), children: _jsx("input", { id: `${id}-range`, ref: draggerInputRef, className: b('slider-input'), type: "range", step: 1, "aria-label": t('Range'), "aria-labelledby": [`${id}-range`, props['aria-labelledby']]
|
|
111
107
|
.filter(Boolean)
|
|
112
|
-
.join(' '), "aria-orientation": "horizontal", "aria-valuetext": `${startValue.format()} - ${endValue.format()}`, value: 0, onChange: () => { } }) }) })
|
|
113
|
-
/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */
|
|
114
|
-
_jsx("div", Object.assign({ className: b('start', {
|
|
108
|
+
.join(' '), "aria-orientation": "horizontal", "aria-valuetext": `${startValue.format()} - ${endValue.format()}`, value: 0, onChange: () => { } }) }) }), state.canResize ? (_jsx("div", { className: b('start', {
|
|
115
109
|
dragging: isDragging === 'start',
|
|
116
110
|
disabled: Boolean(isDragging && isDragging !== 'start'),
|
|
117
|
-
})
|
|
118
|
-
|
|
119
|
-
(_a = startInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
111
|
+
}), ...moveStartProps, onClick: () => {
|
|
112
|
+
startInputRef.current?.focus();
|
|
120
113
|
}, children: _jsx("div", { className: b('slider-input-wrapper'), children: _jsx("input", { id: `${id}-start`, ref: startInputRef, className: b('slider-input'), type: "range", step: 1, "aria-label": t('Start of range'), "aria-labelledby": [`${id}-start`, props['aria-labelledby']]
|
|
121
114
|
.filter(Boolean)
|
|
122
|
-
.join(' '), "aria-orientation": "horizontal", "aria-valuetext": `${startValue.format()}`, value: 0, onChange: () => { } }) }) }))
|
|
123
|
-
/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */
|
|
124
|
-
_jsx("div", Object.assign({ className: b('end', {
|
|
115
|
+
.join(' '), "aria-orientation": "horizontal", "aria-valuetext": `${startValue.format()}`, value: 0, onChange: () => { } }) }) })) : null, state.canResize ? (_jsx("div", { className: b('end', {
|
|
125
116
|
dragging: isDragging === 'end',
|
|
126
117
|
disabled: Boolean(isDragging && isDragging !== 'end'),
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
(_a = endInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
118
|
+
}), ...moveEndProps, onClick: () => {
|
|
119
|
+
endInputRef.current?.focus();
|
|
130
120
|
}, children: _jsx("div", { className: b('slider-input-wrapper'), children: _jsx("input", { id: `${id}-end`, ref: endInputRef, className: b('slider-input'), type: "range", step: 1, "aria-label": t('End of range'), "aria-labelledby": [`${id}-end`, props['aria-labelledby']]
|
|
131
121
|
.filter(Boolean)
|
|
132
|
-
.join(' '), "aria-orientation": "horizontal", "aria-valuetext": `${endValue.format()}`, value: 0, onChange: () => { } }) }) }))
|
|
122
|
+
.join(' '), "aria-orientation": "horizontal", "aria-valuetext": `${endValue.format()}`, value: 0, onChange: () => { } }) }) })) : null] }));
|
|
133
123
|
}
|
|
134
124
|
//# sourceMappingURL=SelectionControl.js.map
|
package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionControl.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/SelectionControl/SelectionControl.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {useMove} from '../../../../hooks/useMove';\nimport {block} from '../../../../utils/cn';\nimport type {AccessibilityProps, DomProps, StyleProps} from '../../../types';\nimport type {RangeDateSelectionState} from '../../hooks/useRangeDateSelectionState';\nimport {i18n} from '../../i18n';\nimport {lerp} from '../../utils/span';\nimport {useViewportDimensions, useViewportInterval} from '../Ruler/Ruler';\n\nimport './SelectionControl.scss';\n\nconst b = block('range-date-selection-control');\n\nconst MIN_SELECTION_WIDTH = 12; // px;\nconst MIN_DRAG_SCALE = 0.01;\nconst MAX_DRAG_SCALE = 100;\nconst DRAG_SCALE_STRENGTH = 20;\n\ninterface SelectionControlProps extends DomProps, StyleProps, AccessibilityProps {\n state: RangeDateSelectionState;\n}\n\nexport function SelectionControl({state, style, className, ...props}: SelectionControlProps) {\n const {start: startDate, end: endDate} = useViewportInterval();\n const viewport = useViewportDimensions();\n\n const [isDragging, setIsDragging] = React.useState<'dragger' | 'start' | 'end' | null>(null);\n\n const moveDataRef = React.useRef<{isZooming: boolean}>({\n isZooming: false,\n });\n\n const visualMinDuration =\n (MIN_SELECTION_WIDTH * (endDate.valueOf() - startDate.valueOf())) / viewport.width;\n\n const handleMoveEnd = () => {\n state.endDragging();\n setIsDragging(null);\n };\n\n const {moveProps} = useMove({\n onMoveStart: (e) => {\n setIsDragging('dragger');\n state.startDragging();\n moveDataRef.current = {\n isZooming: state.canResize && (e.ctrlKey || e.metaKey),\n };\n },\n onMoveEnd: handleMoveEnd,\n onMove: (e) => {\n if (e.deltaX === 0) {\n return;\n }\n if (moveDataRef.current.isZooming) {\n let scale = Math.exp((e.deltaX * DRAG_SCALE_STRENGTH) / viewport.width);\n scale = Math.min(Math.max(scale, MIN_DRAG_SCALE), MAX_DRAG_SCALE);\n state.scale(scale, {visualMinDuration});\n } else {\n let delta = (e.deltaX * (endDate.valueOf() - startDate.valueOf())) / viewport.width;\n if (e.pointerType === 'keyboard') {\n delta =\n delta > 0\n ? Math.max(delta, state.align)\n : Math.min(delta, -1 * state.align);\n }\n state.move(delta, {visualMinDuration});\n }\n },\n });\n const {moveProps: moveStartProps} = useMove({\n onMoveStart: () => {\n setIsDragging('start');\n state.startDragging();\n },\n onMoveEnd: handleMoveEnd,\n onMove: (e) => {\n if (e.deltaX === 0) {\n return;\n }\n let delta = (e.deltaX * (endDate.valueOf() - startDate.valueOf())) / viewport.width;\n if (e.pointerType === 'keyboard') {\n delta =\n delta > 0 ? Math.max(delta, state.align) : Math.min(delta, -1 * state.align);\n }\n state.moveStart(delta, {visualMinDuration});\n },\n });\n const {moveProps: moveEndProps} = useMove({\n onMoveStart: () => {\n setIsDragging('end');\n state.startDragging();\n },\n onMoveEnd: handleMoveEnd,\n onMove: (e) => {\n if (e.deltaX === 0) {\n return;\n }\n let delta = (e.deltaX * (endDate.valueOf() - startDate.valueOf())) / viewport.width;\n if (e.pointerType === 'keyboard') {\n delta =\n delta > 0 ? Math.max(delta, state.align) : Math.min(delta, -1 * state.align);\n }\n state.moveEnd(delta, {visualMinDuration});\n },\n });\n\n const {start: startValue, end: endValue} = state.value;\n const startX = lerp(\n {start: startDate.valueOf(), end: endDate.valueOf()},\n {start: 0, end: viewport.width},\n startValue.valueOf(),\n );\n const endX = lerp(\n {start: startDate.valueOf(), end: endDate.valueOf()},\n {start: 0, end: viewport.width},\n endValue.valueOf(),\n );\n\n const draggerInputRef = React.useRef<HTMLInputElement>(null);\n const startInputRef = React.useRef<HTMLInputElement>(null);\n const endInputRef = React.useRef<HTMLInputElement>(null);\n\n let id = React.useId();\n id = props.id ?? id;\n\n const {t} = i18n.useTranslation();\n\n return (\n <div className={b(null, className)} style={{...style, left: startX, width: endX - startX}}>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n <div\n className={b('dragger', {\n dragging: isDragging === 'dragger',\n disabled: Boolean(isDragging && isDragging !== 'dragger'),\n })}\n {...moveProps}\n onClick={() => {\n draggerInputRef.current?.focus();\n }}\n >\n <div className={b('slider-input-wrapper')}>\n <input\n id={`${id}-range`}\n ref={draggerInputRef}\n className={b('slider-input')}\n type=\"range\"\n step={1}\n aria-label={t('Range')}\n aria-labelledby={[`${id}-range`, props['aria-labelledby']]\n .filter(Boolean)\n .join(' ')}\n aria-orientation=\"horizontal\"\n aria-valuetext={`${startValue.format()} - ${endValue.format()}`}\n value={0}\n onChange={() => {}}\n />\n </div>\n </div>\n {state.canResize ? (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n <div\n className={b('start', {\n dragging: isDragging === 'start',\n disabled: Boolean(isDragging && isDragging !== 'start'),\n })}\n {...moveStartProps}\n onClick={() => {\n startInputRef.current?.focus();\n }}\n >\n <div className={b('slider-input-wrapper')}>\n <input\n id={`${id}-start`}\n ref={startInputRef}\n className={b('slider-input')}\n type=\"range\"\n step={1}\n aria-label={t('Start of range')}\n aria-labelledby={[`${id}-start`, props['aria-labelledby']]\n .filter(Boolean)\n .join(' ')}\n aria-orientation=\"horizontal\"\n aria-valuetext={`${startValue.format()}`}\n value={0}\n onChange={() => {}}\n />\n </div>\n </div>\n ) : null}\n {state.canResize ? (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n <div\n className={b('end', {\n dragging: isDragging === 'end',\n disabled: Boolean(isDragging && isDragging !== 'end'),\n })}\n {...moveEndProps}\n onClick={() => {\n endInputRef.current?.focus();\n }}\n >\n <div className={b('slider-input-wrapper')}>\n <input\n id={`${id}-end`}\n ref={endInputRef}\n className={b('slider-input')}\n type=\"range\"\n step={1}\n aria-label={t('End of range')}\n aria-labelledby={[`${id}-end`, props['aria-labelledby']]\n .filter(Boolean)\n .join(' ')}\n aria-orientation=\"horizontal\"\n aria-valuetext={`${endValue.format()}`}\n value={0}\n onChange={() => {}}\n />\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SelectionControl.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/SelectionControl/SelectionControl.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,OAAO,EAAC,qCAAkC;AAClD,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAG3C,OAAO,EAAC,IAAI,EAAC,4BAAmB;AAChC,OAAO,EAAC,IAAI,EAAC,4BAAyB;AACtC,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,0BAAuB;AAE1E,gCAAiC;AAEjC,MAAM,CAAC,GAAG,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAEhD,MAAM,mBAAmB,GAAG,EAAE,CAAC,CAAC,MAAM;AACtC,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAM/B,MAAM,UAAU,gBAAgB,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwB;IACvF,MAAM,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAC,GAAG,mBAAmB,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IAEzC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqC,IAAI,CAAC,CAAC;IAE7F,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAuB;QACnD,SAAS,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GACnB,CAAC,mBAAmB,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAEvF,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,aAAa,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,EAAC,SAAS,EAAC,GAAG,OAAO,CAAC;QACxB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,WAAW,CAAC,OAAO,GAAG;gBAClB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;aACzD,CAAC;QACN,CAAC;QACD,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,OAAO;YACX,CAAC;YACD,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAChC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC;gBAClE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,iBAAiB,EAAC,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACJ,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;gBACpF,IAAI,CAAC,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;oBAC/B,KAAK;wBACD,KAAK,GAAG,CAAC;4BACL,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;4BAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChD,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAC,iBAAiB,EAAC,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,EAAC,SAAS,EAAE,cAAc,EAAC,GAAG,OAAO,CAAC;QACxC,WAAW,EAAE,GAAG,EAAE;YACd,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,KAAK,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;QACD,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,OAAO;YACX,CAAC;YACD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;YACpF,IAAI,CAAC,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,KAAK;oBACD,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACrF,CAAC;YACD,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,iBAAiB,EAAC,CAAC,CAAC;QAChD,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,EAAC,SAAS,EAAE,YAAY,EAAC,GAAG,OAAO,CAAC;QACtC,WAAW,EAAE,GAAG,EAAE;YACd,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;QACD,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,OAAO;YACX,CAAC;YACD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;YACpF,IAAI,CAAC,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,KAAK;oBACD,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACrF,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAC,iBAAiB,EAAC,CAAC,CAAC;QAC9C,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,EAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CACf,EAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,EAAC,EACpD,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAC,EAC/B,UAAU,CAAC,OAAO,EAAE,CACvB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CACb,EAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,EAAC,EACpD,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAC,EAC/B,QAAQ,CAAC,OAAO,EAAE,CACrB,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEzD,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAEpB,MAAM,EAAC,CAAC,EAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAElC,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,EAAC,aAErF,cACI,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE;oBACpB,QAAQ,EAAE,UAAU,KAAK,SAAS;oBAClC,QAAQ,EAAE,OAAO,CAAC,UAAU,IAAI,UAAU,KAAK,SAAS,CAAC;iBAC5D,CAAC,KACE,SAAS,EACb,OAAO,EAAE,GAAG,EAAE;oBACV,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACrC,CAAC,YAED,cAAK,SAAS,EAAE,CAAC,CAAC,sBAAsB,CAAC,YACrC,gBACI,EAAE,EAAE,GAAG,EAAE,QAAQ,EACjB,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAC5B,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,CAAC,gBACK,CAAC,CAAC,OAAO,CAAC,qBACL,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;6BACrD,MAAM,CAAC,OAAO,CAAC;6BACf,IAAI,CAAC,GAAG,CAAC,sBACG,YAAY,oBACb,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,EAC/D,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,GACpB,GACA,GACJ,EACL,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAEf,cACI,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;oBAClB,QAAQ,EAAE,UAAU,KAAK,OAAO;oBAChC,QAAQ,EAAE,OAAO,CAAC,UAAU,IAAI,UAAU,KAAK,OAAO,CAAC;iBAC1D,CAAC,KACE,cAAc,EAClB,OAAO,EAAE,GAAG,EAAE;oBACV,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnC,CAAC,YAED,cAAK,SAAS,EAAE,CAAC,CAAC,sBAAsB,CAAC,YACrC,gBACI,EAAE,EAAE,GAAG,EAAE,QAAQ,EACjB,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAC5B,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,CAAC,gBACK,CAAC,CAAC,gBAAgB,CAAC,qBACd,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;6BACrD,MAAM,CAAC,OAAO,CAAC;6BACf,IAAI,CAAC,GAAG,CAAC,sBACG,YAAY,oBACb,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,EACxC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,GACpB,GACA,GACJ,CACT,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAEf,cACI,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE;oBAChB,QAAQ,EAAE,UAAU,KAAK,KAAK;oBAC9B,QAAQ,EAAE,OAAO,CAAC,UAAU,IAAI,UAAU,KAAK,KAAK,CAAC;iBACxD,CAAC,KACE,YAAY,EAChB,OAAO,EAAE,GAAG,EAAE;oBACV,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACjC,CAAC,YAED,cAAK,SAAS,EAAE,CAAC,CAAC,sBAAsB,CAAC,YACrC,gBACI,EAAE,EAAE,GAAG,EAAE,MAAM,EACf,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAC5B,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,CAAC,gBACK,CAAC,CAAC,cAAc,CAAC,qBACZ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;6BACnD,MAAM,CAAC,OAAO,CAAC;6BACf,IAAI,CAAC,GAAG,CAAC,sBACG,YAAY,oBACb,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EACtC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,GACpB,GACA,GACJ,CACT,CAAC,CAAC,CAAC,IAAI,IACN,CACT,CAAC;AACN,CAAC","sourcesContent":["import React from 'react';\n\nimport {useMove} from '../../../../hooks/useMove';\nimport {block} from '../../../../utils/cn';\nimport type {AccessibilityProps, DomProps, StyleProps} from '../../../types';\nimport type {RangeDateSelectionState} from '../../hooks/useRangeDateSelectionState';\nimport {i18n} from '../../i18n';\nimport {lerp} from '../../utils/span';\nimport {useViewportDimensions, useViewportInterval} from '../Ruler/Ruler';\n\nimport './SelectionControl.scss';\n\nconst b = block('range-date-selection-control');\n\nconst MIN_SELECTION_WIDTH = 12; // px;\nconst MIN_DRAG_SCALE = 0.01;\nconst MAX_DRAG_SCALE = 100;\nconst DRAG_SCALE_STRENGTH = 20;\n\ninterface SelectionControlProps extends DomProps, StyleProps, AccessibilityProps {\n state: RangeDateSelectionState;\n}\n\nexport function SelectionControl({state, style, className, ...props}: SelectionControlProps) {\n const {start: startDate, end: endDate} = useViewportInterval();\n const viewport = useViewportDimensions();\n\n const [isDragging, setIsDragging] = React.useState<'dragger' | 'start' | 'end' | null>(null);\n\n const moveDataRef = React.useRef<{isZooming: boolean}>({\n isZooming: false,\n });\n\n const visualMinDuration =\n (MIN_SELECTION_WIDTH * (endDate.valueOf() - startDate.valueOf())) / viewport.width;\n\n const handleMoveEnd = () => {\n state.endDragging();\n setIsDragging(null);\n };\n\n const {moveProps} = useMove({\n onMoveStart: (e) => {\n setIsDragging('dragger');\n state.startDragging();\n moveDataRef.current = {\n isZooming: state.canResize && (e.ctrlKey || e.metaKey),\n };\n },\n onMoveEnd: handleMoveEnd,\n onMove: (e) => {\n if (e.deltaX === 0) {\n return;\n }\n if (moveDataRef.current.isZooming) {\n let scale = Math.exp((e.deltaX * DRAG_SCALE_STRENGTH) / viewport.width);\n scale = Math.min(Math.max(scale, MIN_DRAG_SCALE), MAX_DRAG_SCALE);\n state.scale(scale, {visualMinDuration});\n } else {\n let delta = (e.deltaX * (endDate.valueOf() - startDate.valueOf())) / viewport.width;\n if (e.pointerType === 'keyboard') {\n delta =\n delta > 0\n ? Math.max(delta, state.align)\n : Math.min(delta, -1 * state.align);\n }\n state.move(delta, {visualMinDuration});\n }\n },\n });\n const {moveProps: moveStartProps} = useMove({\n onMoveStart: () => {\n setIsDragging('start');\n state.startDragging();\n },\n onMoveEnd: handleMoveEnd,\n onMove: (e) => {\n if (e.deltaX === 0) {\n return;\n }\n let delta = (e.deltaX * (endDate.valueOf() - startDate.valueOf())) / viewport.width;\n if (e.pointerType === 'keyboard') {\n delta =\n delta > 0 ? Math.max(delta, state.align) : Math.min(delta, -1 * state.align);\n }\n state.moveStart(delta, {visualMinDuration});\n },\n });\n const {moveProps: moveEndProps} = useMove({\n onMoveStart: () => {\n setIsDragging('end');\n state.startDragging();\n },\n onMoveEnd: handleMoveEnd,\n onMove: (e) => {\n if (e.deltaX === 0) {\n return;\n }\n let delta = (e.deltaX * (endDate.valueOf() - startDate.valueOf())) / viewport.width;\n if (e.pointerType === 'keyboard') {\n delta =\n delta > 0 ? Math.max(delta, state.align) : Math.min(delta, -1 * state.align);\n }\n state.moveEnd(delta, {visualMinDuration});\n },\n });\n\n const {start: startValue, end: endValue} = state.value;\n const startX = lerp(\n {start: startDate.valueOf(), end: endDate.valueOf()},\n {start: 0, end: viewport.width},\n startValue.valueOf(),\n );\n const endX = lerp(\n {start: startDate.valueOf(), end: endDate.valueOf()},\n {start: 0, end: viewport.width},\n endValue.valueOf(),\n );\n\n const draggerInputRef = React.useRef<HTMLInputElement>(null);\n const startInputRef = React.useRef<HTMLInputElement>(null);\n const endInputRef = React.useRef<HTMLInputElement>(null);\n\n let id = React.useId();\n id = props.id ?? id;\n\n const {t} = i18n.useTranslation();\n\n return (\n <div className={b(null, className)} style={{...style, left: startX, width: endX - startX}}>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n <div\n className={b('dragger', {\n dragging: isDragging === 'dragger',\n disabled: Boolean(isDragging && isDragging !== 'dragger'),\n })}\n {...moveProps}\n onClick={() => {\n draggerInputRef.current?.focus();\n }}\n >\n <div className={b('slider-input-wrapper')}>\n <input\n id={`${id}-range`}\n ref={draggerInputRef}\n className={b('slider-input')}\n type=\"range\"\n step={1}\n aria-label={t('Range')}\n aria-labelledby={[`${id}-range`, props['aria-labelledby']]\n .filter(Boolean)\n .join(' ')}\n aria-orientation=\"horizontal\"\n aria-valuetext={`${startValue.format()} - ${endValue.format()}`}\n value={0}\n onChange={() => {}}\n />\n </div>\n </div>\n {state.canResize ? (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n <div\n className={b('start', {\n dragging: isDragging === 'start',\n disabled: Boolean(isDragging && isDragging !== 'start'),\n })}\n {...moveStartProps}\n onClick={() => {\n startInputRef.current?.focus();\n }}\n >\n <div className={b('slider-input-wrapper')}>\n <input\n id={`${id}-start`}\n ref={startInputRef}\n className={b('slider-input')}\n type=\"range\"\n step={1}\n aria-label={t('Start of range')}\n aria-labelledby={[`${id}-start`, props['aria-labelledby']]\n .filter(Boolean)\n .join(' ')}\n aria-orientation=\"horizontal\"\n aria-valuetext={`${startValue.format()}`}\n value={0}\n onChange={() => {}}\n />\n </div>\n </div>\n ) : null}\n {state.canResize ? (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n <div\n className={b('end', {\n dragging: isDragging === 'end',\n disabled: Boolean(isDragging && isDragging !== 'end'),\n })}\n {...moveEndProps}\n onClick={() => {\n endInputRef.current?.focus();\n }}\n >\n <div className={b('slider-input-wrapper')}>\n <input\n id={`${id}-end`}\n ref={endInputRef}\n className={b('slider-input')}\n type=\"range\"\n step={1}\n aria-label={t('End of range')}\n aria-labelledby={[`${id}-end`, props['aria-labelledby']]\n .filter(Boolean)\n .join(' ')}\n aria-orientation=\"horizontal\"\n aria-valuetext={`${endValue.format()}`}\n value={0}\n onChange={() => {}}\n />\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
3
|
import type { Geometry } from "./utils.js";
|
|
3
4
|
import { makeMiddleTicksGeometry, makeSlitTicksGeometry } from "./utils.js";
|
|
@@ -14,5 +15,4 @@ interface TicksProps {
|
|
|
14
15
|
timeZone?: string;
|
|
15
16
|
}
|
|
16
17
|
export { makeMiddleTicksGeometry, makeSlitTicksGeometry };
|
|
17
|
-
export
|
|
18
|
-
export declare function Ticks({ theme, minTickWidth, maxTickWidth, hasLabels, geometry, className, labelsClassName, formatTime, timeZone, }: TicksProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function Ticks({ theme, minTickWidth, maxTickWidth, hasLabels, geometry, className, labelsClassName, formatTime, timeZone, }: TicksProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ticks.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/Ticks/Ticks.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAC3C,OAAO,EAAC,YAAY,EAAC,4BAAyB;AAC9C,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,0BAAuB;AAG1E,OAAO,EACH,kBAAkB,EAClB,UAAU,IAAI,iBAAiB,EAC/B,uBAAuB,EACvB,qBAAqB,GACxB,mBAAgB;AAEjB,qBAAsB;AAgBtB,MAAM,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAElC,OAAO,EAAC,uBAAuB,EAAE,qBAAqB,EAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Ticks.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/Ticks/Ticks.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {dateTime} from '@gravity-ui/date-utils';\n\nimport {block} from '../../../../utils/cn';\nimport {getLerpCoeff} from '../../utils/span';\nimport {useViewportDimensions, useViewportInterval} from '../Ruler/Ruler';\n\nimport type {Geometry} from './utils';\nimport {\n calculateTickTimes,\n formatTick as defaultFormatTime,\n makeMiddleTicksGeometry,\n makeSlitTicksGeometry,\n} from './utils';\n\nimport './Ticks.scss';\n\ninterface TicksProps {\n theme: 'normal' | 'dim';\n minTickWidth: number;\n maxTickWidth: number;\n hasLabels?: boolean;\n\n geometry: Geometry;\n className?: string;\n labelsClassName?: string;\n\n formatTime?: (time: DateTime) => string;\n timeZone?: string;\n}\n\nconst b = block('timeline-ticks');\n\nexport {makeMiddleTicksGeometry, makeSlitTicksGeometry};\n\nexport function Ticks({\n theme,\n minTickWidth,\n maxTickWidth,\n hasLabels,\n geometry,\n className,\n labelsClassName,\n formatTime,\n timeZone,\n}: TicksProps) {\n const viewport = useViewportDimensions();\n const interval = useViewportInterval();\n const tickTimes = React.useMemo(\n () =>\n calculateTickTimes({\n minTickWidth,\n maxTickWidth,\n viewportStart: interval.start,\n viewportEnd: interval.end,\n viewportWidth: viewport.width,\n timeZone,\n }),\n [maxTickWidth, minTickWidth, interval, viewport.width, timeZone],\n );\n const tickCoords = React.useMemo(() => {\n const timeToXCoeff = getLerpCoeff(\n {start: interval.start.valueOf(), end: interval.end.valueOf()},\n {start: 0, end: viewport.width},\n );\n return tickTimes.map(\n (t) => 0 + Math.round((t.valueOf() - interval.start.valueOf()) * timeToXCoeff),\n );\n }, [tickTimes, interval, viewport.width]);\n\n const ticksGeometry = React.useMemo(() => {\n return tickCoords.map(geometry).join('');\n }, [geometry, tickCoords]);\n\n const ticksPath = <path className={b({theme}, className)} d={ticksGeometry} />;\n\n const tickLabels = React.useMemo(() => {\n if (!hasLabels || tickCoords.length < 2) {\n return null;\n }\n\n const result: React.ReactElement[] = [];\n\n for (let i = 0; i < tickCoords.length; i++) {\n const x = tickCoords[i];\n const t = tickTimes[i];\n const dt = dateTime({input: t, timeZone});\n\n result.push(\n <text\n key={i}\n className={b('label', labelsClassName)}\n dominantBaseline=\"middle\"\n x={x}\n y=\"50%\"\n filter=\"url(#g-date-tt-ticklabelbg)\"\n >\n {formatTime ? formatTime(dt) : defaultFormatTime(dt)}\n </text>,\n );\n }\n return result;\n }, [hasLabels, tickCoords, tickTimes, timeZone, labelsClassName, formatTime]);\n\n return (\n <React.Fragment>\n {ticksPath}\n {tickLabels}\n </React.Fragment>\n );\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
3
|
import type { Geometry } from "./utils.js";
|
|
3
|
-
import { makeMiddleTicksGeometry, makeSlitTicksGeometry } from "./utils.js";
|
|
4
4
|
import "./Ticks.css";
|
|
5
5
|
interface TicksProps {
|
|
6
6
|
theme: 'normal' | 'dim';
|
|
@@ -10,6 +10,5 @@ interface TicksProps {
|
|
|
10
10
|
geometry: Geometry;
|
|
11
11
|
className?: string;
|
|
12
12
|
}
|
|
13
|
-
export {
|
|
14
|
-
export
|
|
15
|
-
export declare function UnavailableTicks({ theme, geometry, tickWidth, minValue, maxValue, className, }: TicksProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function UnavailableTicks({ theme, geometry, tickWidth, minValue, maxValue, className, }: TicksProps): React.JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -2,10 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { block } from "../../../../utils/cn.js";
|
|
4
4
|
import { useViewportDimensions, useViewportInterval } from "../Ruler/Ruler.js";
|
|
5
|
-
import { calculatePosition
|
|
5
|
+
import { calculatePosition } from "./utils.js";
|
|
6
6
|
import "./Ticks.css";
|
|
7
7
|
const b = block('timeline-ticks');
|
|
8
|
-
export { makeMiddleTicksGeometry, makeSlitTicksGeometry };
|
|
9
8
|
export function UnavailableTicks({ theme, geometry, tickWidth, minValue, maxValue, className, }) {
|
|
10
9
|
const viewport = useViewportDimensions();
|
|
11
10
|
const interval = useViewportInterval();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnavialableTicks.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/Ticks/UnavialableTicks.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAC3C,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,0BAAuB;AAG1E,OAAO,EAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"UnavialableTicks.js","sourceRoot":"../../../../../../src","sources":["components/RangeDateSelection/components/Ticks/UnavialableTicks.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAC,KAAK,EAAC,gCAA6B;AAC3C,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,0BAAuB;AAG1E,OAAO,EAAC,iBAAiB,EAAC,mBAAgB;AAE1C,qBAAsB;AAYtB,MAAM,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAElC,MAAM,UAAU,gBAAgB,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,GACA;IACT,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,QAAQ,GAAG,SAAS,CAAC;YAC7B,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC5B,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;YACnF,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACX,CAAC,IAAI,SAAS,CAAC;gBACf,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpD,IAAI,CAAC,GAAG,UAAU,CAAC;YACnB,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,CAAC,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;YACtF,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACxB,CAAC,IAAI,SAAS,CAAC;gBACf,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAG,eAAM,SAAS,EAAE,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,aAAa,GAAI,CAAC;IAE/E,OAAO,KAAC,KAAK,CAAC,QAAQ,cAAE,SAAS,GAAkB,CAAC;AACxD,CAAC","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport {block} from '../../../../utils/cn';\nimport {useViewportDimensions, useViewportInterval} from '../Ruler/Ruler';\n\nimport type {Geometry} from './utils';\nimport {calculatePosition} from './utils';\n\nimport './Ticks.scss';\n\ninterface TicksProps {\n theme: 'normal' | 'dim';\n tickWidth: number;\n minValue?: DateTime;\n maxValue?: DateTime;\n\n geometry: Geometry;\n className?: string;\n}\n\nconst b = block('timeline-ticks');\n\nexport function UnavailableTicks({\n theme,\n geometry,\n tickWidth,\n minValue,\n maxValue,\n className,\n}: TicksProps) {\n const viewport = useViewportDimensions();\n const interval = useViewportInterval();\n\n const endPoint = calculatePosition(minValue, interval, viewport.width);\n const startPoint = calculatePosition(maxValue, interval, viewport.width);\n\n const ticksGeometry = React.useMemo(() => {\n const tickCoords: number[] = [];\n if (!isNaN(endPoint) && endPoint > 0) {\n let x = endPoint - tickWidth;\n if (endPoint > viewport.width) {\n x = endPoint - tickWidth * Math.floor((endPoint - viewport.width) / tickWidth);\n }\n tickCoords.push(x);\n while (x > 0) {\n x -= tickWidth;\n tickCoords.push(x);\n }\n }\n\n if (!isNaN(startPoint) && startPoint < viewport.width) {\n let x = startPoint;\n if (startPoint < 0) {\n x = startPoint + tickWidth * Math.floor((0 - startPoint) / tickWidth) - tickWidth;\n }\n tickCoords.push(x);\n while (x < viewport.width) {\n x += tickWidth;\n tickCoords.push(x);\n }\n }\n return tickCoords.map(geometry).join('');\n }, [endPoint, geometry, startPoint, tickWidth, viewport.width]);\n\n const ticksPath = <path className={b({theme}, className)} d={ticksGeometry} />;\n\n return <React.Fragment>{ticksPath}</React.Fragment>;\n}\n"]}
|
|
@@ -12,8 +12,7 @@ function getViewportIntervalFromDates(start, end, numberOfIntervals = 4, placeIn
|
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
export function useRangeDateSelectionState(props) {
|
|
15
|
-
|
|
16
|
-
const inputTimeZone = useDefaultTimeZone(((_a = props.value) === null || _a === void 0 ? void 0 : _a.start) || ((_b = props.defaultValue) === null || _b === void 0 ? void 0 : _b.start) || props.placeholderValue);
|
|
15
|
+
const inputTimeZone = useDefaultTimeZone(props.value?.start || props.defaultValue?.start || props.placeholderValue);
|
|
17
16
|
const timeZone = props.timeZone || inputTimeZone;
|
|
18
17
|
const placeholderValue = createPlaceholderValue({
|
|
19
18
|
placeholderValue: props.placeholderValue,
|
|
@@ -21,7 +20,7 @@ export function useRangeDateSelectionState(props) {
|
|
|
21
20
|
});
|
|
22
21
|
const [isDragging, setIsDragging] = React.useState(false);
|
|
23
22
|
const [currentValue, setCurrentValue] = React.useState(null);
|
|
24
|
-
const [value, setValue] = useControlledState(props.value,
|
|
23
|
+
const [value, setValue] = useControlledState(props.value, props.defaultValue ?? {
|
|
25
24
|
start: placeholderValue.startOf('day').timeZone(inputTimeZone),
|
|
26
25
|
end: placeholderValue.endOf('day').timeZone(inputTimeZone),
|
|
27
26
|
}, props.onUpdate);
|
|
@@ -36,17 +35,17 @@ export function useRangeDateSelectionState(props) {
|
|
|
36
35
|
start: value.start.timeZone(timeZone),
|
|
37
36
|
end: value.end.timeZone(timeZone),
|
|
38
37
|
};
|
|
39
|
-
const interval = isDragging ? displayValue : (currentValue
|
|
38
|
+
const interval = isDragging ? displayValue : (currentValue ?? displayValue);
|
|
40
39
|
const viewportInterval = getViewportIntervalFromDates(interval.start, interval.end, props.numberOfIntervals, props.placeOnRuler);
|
|
41
|
-
const minValue =
|
|
40
|
+
const minValue = props.minValue?.isAfter(viewportInterval.start)
|
|
42
41
|
? props.minValue
|
|
43
42
|
: viewportInterval.start;
|
|
44
|
-
const maxValue =
|
|
43
|
+
const maxValue = props.maxValue?.isBefore(viewportInterval.end)
|
|
45
44
|
? props.maxValue
|
|
46
45
|
: viewportInterval.end;
|
|
47
|
-
const align =
|
|
48
|
-
const minDuration = Math.max(
|
|
49
|
-
const maxDuration = Math.max(Math.min(
|
|
46
|
+
const align = props.align ?? SECOND;
|
|
47
|
+
const minDuration = Math.max(props.minDuration ?? SECOND, align);
|
|
48
|
+
const maxDuration = Math.max(Math.min(props.maxDuration ?? 15 * YEAR, maxValue.diff(minValue)), minDuration);
|
|
50
49
|
const canResize = minDuration < maxDuration;
|
|
51
50
|
const draggingState = React.useRef(null);
|
|
52
51
|
const setDraggingValue = (v) => {
|
|
@@ -127,7 +126,7 @@ export function useRangeDateSelectionState(props) {
|
|
|
127
126
|
};
|
|
128
127
|
return {
|
|
129
128
|
viewportInterval,
|
|
130
|
-
value: currentValue
|
|
129
|
+
value: currentValue ?? displayValue,
|
|
131
130
|
setValue: setInterval,
|
|
132
131
|
setDraggingValue,
|
|
133
132
|
canResize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRangeDateSelectionState.js","sourceRoot":"../../../../../src","sources":["components/RangeDateSelection/hooks/useRangeDateSelectionState.ts"],"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 {RangeValue, ValueBase} from '../../types';\nimport {SECOND, YEAR} from '../../utils/constants';\nimport {constrainValue, createPlaceholderValue} from '../../utils/dates';\nimport {useDefaultTimeZone} from '../../utils/useDefaultTimeZone';\nimport {alignDateTime} from '../utils/date';\n\nfunction getViewportIntervalFromDates(\n start: DateTime,\n end: DateTime,\n numberOfIntervals = 4,\n placeInViewport = 0.5,\n) {\n const diff = end.diff(start);\n return {\n start: start.subtract(diff * (numberOfIntervals - 1) * placeInViewport),\n end: end.add(diff * (numberOfIntervals - 1) * (1 - placeInViewport)),\n };\n}\n\nexport interface RangeDateSelectionState {\n viewportInterval: RangeValue<DateTime>;\n value: RangeValue<DateTime>;\n setValue: (value: RangeValue<DateTime>) => void;\n timeZone: string;\n setDraggingValue: (value: RangeValue<DateTime> | null) => void;\n canResize: boolean;\n startDragging: () => void;\n move: (delta: number, options?: {visualMinDuration?: number}) => void;\n scale: (scale: number, options?: {visualMinDuration?: number; fixedPoint?: number}) => void;\n moveStart: (delta: number, options?: {visualMinDuration?: number}) => void;\n moveEnd: (delta: number, options?: {visualMinDuration?: number}) => void;\n endDragging: () => void;\n align: number;\n isDragging: boolean;\n}\n\nexport interface RangeDateSelectionOptions extends ValueBase<RangeValue<DateTime>> {\n /** The minimum allowed date that a user may select. */\n minValue?: DateTime;\n /** The maximum allowed date that a user may select. */\n maxValue?: DateTime;\n /** Minimum duration of the selection in milliseconds. Defaults to 1 second. */\n minDuration?: number;\n /** Maximum duration of the selection in milliseconds. Defaults to 15 years. */\n maxDuration?: number;\n /** Alignment of the selection in milliseconds. Defaults to 1 second. */\n align?: number;\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 /**\n * Which timezone use to show values. Example: 'default', 'system', 'Europe/Amsterdam'.\n * @default The timezone of the `value` or `defaultValue` or `placeholderValue`, 'default' otherwise.\n */\n timeZone?: string;\n /**\n * The number of selection intervals that fit into the underlying ruler.\n * @default 4\n */\n numberOfIntervals?: number;\n /**\n * Place of the selection on the underlying ruler.\n * Value must be between 0 and 1, where 0 is the start of the ruler and 1 is the end.\n * @default 0.5 - center of the ruler\n */\n placeOnRuler?: number;\n}\n\nexport function useRangeDateSelectionState(\n props: RangeDateSelectionOptions,\n): RangeDateSelectionState {\n const inputTimeZone = useDefaultTimeZone(\n props.value?.start || props.defaultValue?.start || props.placeholderValue,\n );\n const timeZone = props.timeZone || inputTimeZone;\n\n const placeholderValue = createPlaceholderValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n });\n\n const [isDragging, setIsDragging] = React.useState(false);\n const [currentValue, setCurrentValue] = React.useState<RangeValue<DateTime> | null>(null);\n\n const [value, setValue] = useControlledState(\n props.value,\n props.defaultValue ?? {\n start: placeholderValue.startOf('day').timeZone(inputTimeZone),\n end: placeholderValue.endOf('day').timeZone(inputTimeZone),\n },\n props.onUpdate,\n );\n\n const setInterval = (newValue: RangeValue<DateTime>) => {\n setCurrentValue(null);\n setValue({\n start: alignDateTime(newValue.start, props.align).timeZone(inputTimeZone),\n end: alignDateTime(newValue.end, props.align).timeZone(inputTimeZone),\n });\n };\n\n const displayValue = {\n start: value.start.timeZone(timeZone),\n end: value.end.timeZone(timeZone),\n };\n const interval = isDragging ? displayValue : (currentValue ?? displayValue);\n\n const viewportInterval = getViewportIntervalFromDates(\n interval.start,\n interval.end,\n props.numberOfIntervals,\n props.placeOnRuler,\n );\n\n const minValue = props.minValue?.isAfter(viewportInterval.start)\n ? props.minValue\n : viewportInterval.start;\n const maxValue = props.maxValue?.isBefore(viewportInterval.end)\n ? props.maxValue\n : viewportInterval.end;\n\n const align = props.align ?? SECOND;\n const minDuration = Math.max(props.minDuration ?? SECOND, align);\n const maxDuration = Math.max(\n Math.min(props.maxDuration ?? 15 * YEAR, maxValue.diff(minValue)),\n minDuration,\n );\n\n const canResize = minDuration < maxDuration;\n\n const draggingState = React.useRef<RangeValue<DateTime> | null>(null);\n const setDraggingValue = (v: RangeValue<DateTime> | null) => {\n draggingState.current = v;\n setCurrentValue(v);\n };\n const startDragging = () => {\n setIsDragging(true);\n setDraggingValue(displayValue);\n };\n\n const endDragging = () => {\n setIsDragging(false);\n if (draggingState.current) {\n setInterval(draggingState.current);\n }\n };\n\n const moveInterval = (delta: number) => {\n if (!draggingState.current) {\n return;\n }\n const {start, end} = draggingState.current;\n let newStart = start.add(delta, 'millisecond');\n let newEnd = end.add(delta, 'millisecond');\n const diff = newEnd.diff(newStart);\n if (newStart.valueOf() < minValue.valueOf()) {\n newStart = minValue;\n newEnd = constrainValue(newStart.add(diff, 'millisecond'), newStart, maxValue);\n } else if (newEnd.valueOf() > maxValue.valueOf()) {\n newEnd = maxValue;\n newStart = constrainValue(newEnd.subtract(diff, 'millisecond'), minValue, newEnd);\n }\n setDraggingValue({start: newStart, end: newEnd});\n };\n\n const moveStart = (\n delta: number,\n {visualMinDuration = minDuration}: {visualMinDuration?: number} = {},\n ) => {\n if (!draggingState.current) {\n return;\n }\n const {start, end} = draggingState.current;\n let newStart = start.add(delta, 'millisecond');\n const deltaMin = Math.max(visualMinDuration, minDuration);\n const deltaMax = Math.min(maxDuration, end.diff(minValue));\n newStart = constrainValue(\n newStart,\n end.subtract(deltaMax, 'millisecond'),\n end.subtract(deltaMin, 'millisecond'),\n );\n setDraggingValue({start: newStart, end});\n };\n\n const moveEnd = (\n delta: number,\n {visualMinDuration = minDuration}: {visualMinDuration?: number} = {},\n ) => {\n if (!draggingState.current) {\n return;\n }\n const {start, end} = draggingState.current;\n let newEnd = end.add(delta, 'millisecond');\n const deltaMin = Math.max(visualMinDuration, minDuration);\n const deltaMax = Math.min(maxDuration, maxValue.diff(start));\n\n newEnd = constrainValue(\n end.add(delta, 'millisecond'),\n start.add(deltaMin, 'millisecond'),\n start.add(deltaMax, 'millisecond'),\n );\n\n setDraggingValue({start, end: newEnd});\n };\n\n const zoomInterval = (\n scale: number,\n {\n visualMinDuration = minDuration,\n fixedPoint = 0.5,\n }: {visualMinDuration?: number; fixedPoint?: number} = {},\n ) => {\n if (!draggingState.current) {\n return;\n }\n const {start, end} = draggingState.current;\n const len = end.diff(start);\n let newDiff = len * scale;\n newDiff = align * Math.round(newDiff / align);\n newDiff = Math.min(\n Math.max(newDiff, Math.max(visualMinDuration, minDuration)),\n maxDuration,\n );\n let newStart = start.subtract(fixedPoint * (newDiff - len));\n let newEnd = newStart.add(newDiff, 'millisecond');\n const diff = newEnd.diff(newStart);\n if (newStart.valueOf() < minValue.valueOf()) {\n newStart = minValue;\n newEnd = constrainValue(newStart.add(diff, 'millisecond'), newStart, maxValue);\n } else if (newEnd.valueOf() > maxValue.valueOf()) {\n newEnd = maxValue;\n newStart = constrainValue(newEnd.subtract(diff, 'millisecond'), minValue, newEnd);\n }\n\n setDraggingValue({start: newStart, end: newEnd});\n };\n\n return {\n viewportInterval,\n value: currentValue ?? displayValue,\n setValue: setInterval,\n setDraggingValue,\n canResize,\n startDragging,\n move: moveInterval,\n scale: zoomInterval,\n moveStart,\n moveEnd,\n endDragging,\n timeZone,\n align,\n isDragging,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useRangeDateSelectionState.js","sourceRoot":"../../../../../src","sources":["components/RangeDateSelection/hooks/useRangeDateSelectionState.ts"],"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 {RangeValue, ValueBase} from '../../types';\nimport {SECOND, YEAR} from '../../utils/constants';\nimport {constrainValue, createPlaceholderValue} from '../../utils/dates';\nimport {useDefaultTimeZone} from '../../utils/useDefaultTimeZone';\nimport {alignDateTime} from '../utils/date';\n\nfunction getViewportIntervalFromDates(\n start: DateTime,\n end: DateTime,\n numberOfIntervals = 4,\n placeInViewport = 0.5,\n) {\n const diff = end.diff(start);\n return {\n start: start.subtract(diff * (numberOfIntervals - 1) * placeInViewport),\n end: end.add(diff * (numberOfIntervals - 1) * (1 - placeInViewport)),\n };\n}\n\nexport interface RangeDateSelectionState {\n viewportInterval: RangeValue<DateTime>;\n value: RangeValue<DateTime>;\n setValue: (value: RangeValue<DateTime>) => void;\n timeZone: string;\n setDraggingValue: (value: RangeValue<DateTime> | null) => void;\n canResize: boolean;\n startDragging: () => void;\n move: (delta: number, options?: {visualMinDuration?: number}) => void;\n scale: (scale: number, options?: {visualMinDuration?: number; fixedPoint?: number}) => void;\n moveStart: (delta: number, options?: {visualMinDuration?: number}) => void;\n moveEnd: (delta: number, options?: {visualMinDuration?: number}) => void;\n endDragging: () => void;\n align: number;\n isDragging: boolean;\n}\n\nexport interface RangeDateSelectionOptions extends ValueBase<RangeValue<DateTime>> {\n /** The minimum allowed date that a user may select. */\n minValue?: DateTime;\n /** The maximum allowed date that a user may select. */\n maxValue?: DateTime;\n /** Minimum duration of the selection in milliseconds. Defaults to 1 second. */\n minDuration?: number;\n /** Maximum duration of the selection in milliseconds. Defaults to 15 years. */\n maxDuration?: number;\n /** Alignment of the selection in milliseconds. Defaults to 1 second. */\n align?: number;\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 /**\n * Which timezone use to show values. Example: 'default', 'system', 'Europe/Amsterdam'.\n * @default The timezone of the `value` or `defaultValue` or `placeholderValue`, 'default' otherwise.\n */\n timeZone?: string;\n /**\n * The number of selection intervals that fit into the underlying ruler.\n * @default 4\n */\n numberOfIntervals?: number;\n /**\n * Place of the selection on the underlying ruler.\n * Value must be between 0 and 1, where 0 is the start of the ruler and 1 is the end.\n * @default 0.5 - center of the ruler\n */\n placeOnRuler?: number;\n}\n\nexport function useRangeDateSelectionState(\n props: RangeDateSelectionOptions,\n): RangeDateSelectionState {\n const inputTimeZone = useDefaultTimeZone(\n props.value?.start || props.defaultValue?.start || props.placeholderValue,\n );\n const timeZone = props.timeZone || inputTimeZone;\n\n const placeholderValue = createPlaceholderValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n });\n\n const [isDragging, setIsDragging] = React.useState(false);\n const [currentValue, setCurrentValue] = React.useState<RangeValue<DateTime> | null>(null);\n\n const [value, setValue] = useControlledState(\n props.value,\n props.defaultValue ?? {\n start: placeholderValue.startOf('day').timeZone(inputTimeZone),\n end: placeholderValue.endOf('day').timeZone(inputTimeZone),\n },\n props.onUpdate,\n );\n\n const setInterval = (newValue: RangeValue<DateTime>) => {\n setCurrentValue(null);\n setValue({\n start: alignDateTime(newValue.start, props.align).timeZone(inputTimeZone),\n end: alignDateTime(newValue.end, props.align).timeZone(inputTimeZone),\n });\n };\n\n const displayValue = {\n start: value.start.timeZone(timeZone),\n end: value.end.timeZone(timeZone),\n };\n const interval = isDragging ? displayValue : (currentValue ?? displayValue);\n\n const viewportInterval = getViewportIntervalFromDates(\n interval.start,\n interval.end,\n props.numberOfIntervals,\n props.placeOnRuler,\n );\n\n const minValue = props.minValue?.isAfter(viewportInterval.start)\n ? props.minValue\n : viewportInterval.start;\n const maxValue = props.maxValue?.isBefore(viewportInterval.end)\n ? props.maxValue\n : viewportInterval.end;\n\n const align = props.align ?? SECOND;\n const minDuration = Math.max(props.minDuration ?? SECOND, align);\n const maxDuration = Math.max(\n Math.min(props.maxDuration ?? 15 * YEAR, maxValue.diff(minValue)),\n minDuration,\n );\n\n const canResize = minDuration < maxDuration;\n\n const draggingState = React.useRef<RangeValue<DateTime> | null>(null);\n const setDraggingValue = (v: RangeValue<DateTime> | null) => {\n draggingState.current = v;\n setCurrentValue(v);\n };\n const startDragging = () => {\n setIsDragging(true);\n setDraggingValue(displayValue);\n };\n\n const endDragging = () => {\n setIsDragging(false);\n if (draggingState.current) {\n setInterval(draggingState.current);\n }\n };\n\n const moveInterval = (delta: number) => {\n if (!draggingState.current) {\n return;\n }\n const {start, end} = draggingState.current;\n let newStart = start.add(delta, 'millisecond');\n let newEnd = end.add(delta, 'millisecond');\n const diff = newEnd.diff(newStart);\n if (newStart.valueOf() < minValue.valueOf()) {\n newStart = minValue;\n newEnd = constrainValue(newStart.add(diff, 'millisecond'), newStart, maxValue);\n } else if (newEnd.valueOf() > maxValue.valueOf()) {\n newEnd = maxValue;\n newStart = constrainValue(newEnd.subtract(diff, 'millisecond'), minValue, newEnd);\n }\n setDraggingValue({start: newStart, end: newEnd});\n };\n\n const moveStart = (\n delta: number,\n {visualMinDuration = minDuration}: {visualMinDuration?: number} = {},\n ) => {\n if (!draggingState.current) {\n return;\n }\n const {start, end} = draggingState.current;\n let newStart = start.add(delta, 'millisecond');\n const deltaMin = Math.max(visualMinDuration, minDuration);\n const deltaMax = Math.min(maxDuration, end.diff(minValue));\n newStart = constrainValue(\n newStart,\n end.subtract(deltaMax, 'millisecond'),\n end.subtract(deltaMin, 'millisecond'),\n );\n setDraggingValue({start: newStart, end});\n };\n\n const moveEnd = (\n delta: number,\n {visualMinDuration = minDuration}: {visualMinDuration?: number} = {},\n ) => {\n if (!draggingState.current) {\n return;\n }\n const {start, end} = draggingState.current;\n let newEnd = end.add(delta, 'millisecond');\n const deltaMin = Math.max(visualMinDuration, minDuration);\n const deltaMax = Math.min(maxDuration, maxValue.diff(start));\n\n newEnd = constrainValue(\n end.add(delta, 'millisecond'),\n start.add(deltaMin, 'millisecond'),\n start.add(deltaMax, 'millisecond'),\n );\n\n setDraggingValue({start, end: newEnd});\n };\n\n const zoomInterval = (\n scale: number,\n {\n visualMinDuration = minDuration,\n fixedPoint = 0.5,\n }: {visualMinDuration?: number; fixedPoint?: number} = {},\n ) => {\n if (!draggingState.current) {\n return;\n }\n const {start, end} = draggingState.current;\n const len = end.diff(start);\n let newDiff = len * scale;\n newDiff = align * Math.round(newDiff / align);\n newDiff = Math.min(\n Math.max(newDiff, Math.max(visualMinDuration, minDuration)),\n maxDuration,\n );\n let newStart = start.subtract(fixedPoint * (newDiff - len));\n let newEnd = newStart.add(newDiff, 'millisecond');\n const diff = newEnd.diff(newStart);\n if (newStart.valueOf() < minValue.valueOf()) {\n newStart = minValue;\n newEnd = constrainValue(newStart.add(diff, 'millisecond'), newStart, maxValue);\n } else if (newEnd.valueOf() > maxValue.valueOf()) {\n newEnd = maxValue;\n newStart = constrainValue(newEnd.subtract(diff, 'millisecond'), minValue, newEnd);\n }\n\n setDraggingValue({start: newStart, end: newEnd});\n };\n\n return {\n viewportInterval,\n value: currentValue ?? displayValue,\n setValue: setInterval,\n setDraggingValue,\n canResize,\n startDragging,\n move: moveInterval,\n scale: zoomInterval,\n moveStart,\n moveEnd,\n endDragging,\n timeZone,\n align,\n isDragging,\n };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
interface Span {
|
|
2
2
|
start: number;
|
|
3
3
|
end: number;
|
|
4
4
|
}
|
|
@@ -21,3 +21,4 @@ export declare function lerp(from: Span, to: Span, value: number): number;
|
|
|
21
21
|
* @returns Scale coefficient
|
|
22
22
|
*/
|
|
23
23
|
export declare function getLerpCoeff(from: Span, to: Span): number;
|
|
24
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span.js","sourceRoot":"../../../../../src","sources":["components/RangeDateSelection/utils/span.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,IAAU,EAAE,EAAQ,EAAE,KAAa;IACpD,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,EAAQ;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"span.js","sourceRoot":"../../../../../src","sources":["components/RangeDateSelection/utils/span.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,IAAU,EAAE,EAAQ,EAAE,KAAa;IACpD,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,EAAQ;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC","sourcesContent":["interface Span {\n start: number;\n end: number;\n}\n\n/**\n * Implements linear interpolation (lerp).\n *\n * Calculates such a linear mapping `R -> R` that `from.start` will be mapped\n * into `to.start`, and `from.end` will be mapped to `to.end`. Then applies\n * this mapping to `value`.\n * @param from Interpolation domain\n * @param to Interpolation target\n * @param value Value from domain\n * @returns Value from target\n */\nexport function lerp(from: Span, to: Span, value: number): number {\n return to.start + ((value - from.start) * (to.end - to.start)) / (from.end - from.start);\n}\n\n/**\n * Calculates a lerp scale coefficient\n * @param from Interpolation domain\n * @param to Interpolation target\n * @returns Scale coefficient\n */\nexport function getLerpCoeff(from: Span, to: Span): number {\n return (to.end - to.start) / (from.end - from.start);\n}\n"]}
|
|
@@ -8,4 +8,4 @@ export interface RelativeDateFieldProps extends RelativeDateFieldOptions, TextIn
|
|
|
8
8
|
*/
|
|
9
9
|
hasTime?: boolean;
|
|
10
10
|
}
|
|
11
|
-
export declare function RelativeDateField(props: RelativeDateFieldProps): import("react
|
|
11
|
+
export declare function RelativeDateField(props: RelativeDateFieldProps): import("react").JSX.Element;
|