@gravity-ui/date-components 3.4.2 → 4.0.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 +2 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +33 -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/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 +2 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +32 -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/utils.d.ts +2 -2
- package/dist/esm/components/RelativeRangeDatePicker/utils.js +33 -9
- package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
- package/dist/esm/components/utils/constants.d.ts +2 -0
- package/dist/esm/components/utils/constants.js +6 -0
- package/dist/esm/components/utils/constants.js.map +1 -1
- package/dist/esm/components/utils/dates.d.ts +6 -1
- package/dist/esm/components/utils/dates.js +5 -1
- package/dist/esm/components/utils/dates.js.map +1 -1
- package/dist/esm/components/utils/filterDOMProps.js +1 -1
- package/dist/esm/components/utils/filterDOMProps.js.map +1 -1
- package/dist/esm/components/utils/mergeProps.js +1 -1
- package/dist/esm/components/utils/mergeProps.js.map +1 -1
- package/dist/esm/components/utils/validation/datePicker.js +1 -1
- package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
- package/dist/esm/components/utils/validation/i18n/ru.json +2 -2
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +6 -1
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
- package/dist/esm/hooks/useEventHandler.js +1 -2
- package/dist/esm/hooks/useEventHandler.js.map +1 -1
- package/dist/esm/hooks/useMove.d.ts +2 -2
- package/dist/esm/hooks/useMove.js +6 -9
- package/dist/esm/hooks/useMove.js.map +1 -1
- package/dist/esm/hooks/useResizeObserver.js +1 -1
- package/dist/esm/hooks/useResizeObserver.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/package.json +34 -27
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -224
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -9
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +0 -42
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/index.d.ts +0 -3
- package/dist/cjs/components/RangeDateField/utils/index.js +0 -7
- package/dist/cjs/components/RangeDateField/utils/index.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +0 -3
- package/dist/cjs/components/RangeDateField/utils/isValidRange.js +0 -7
- package/dist/cjs/components/RangeDateField/utils/isValidRange.js.map +0 -1
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -220
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -6
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +0 -39
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/index.d.ts +0 -3
- package/dist/esm/components/RangeDateField/utils/index.js +0 -4
- package/dist/esm/components/RangeDateField/utils/index.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +0 -3
- package/dist/esm/components/RangeDateField/utils/isValidRange.js +0 -4
- package/dist/esm/components/RangeDateField/utils/isValidRange.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"../../../../src","sources":["components/utils/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,MAAM,GAAG,EAAE,GAAG,cAAM,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE,GAAG,cAAM,CAAC;AACnB,QAAA,GAAG,GAAG,EAAE,GAAG,YAAI,CAAC;AAChB,QAAA,IAAI,GAAG,CAAC,GAAG,WAAG,CAAC;AACf,QAAA,KAAK,GAAG,EAAE,GAAG,WAAG,CAAC;AACjB,QAAA,IAAI,GAAG,GAAG,GAAG,WAAG,CAAC","sourcesContent":["export const SECOND = 1000;\nexport const MINUTE = 60 * SECOND;\nexport const HOUR = 60 * MINUTE;\nexport const DAY = 24 * HOUR;\nexport const WEEK = 7 * DAY;\nexport const MONTH = 30 * DAY;\nexport const YEAR = 365 * DAY;\n"]}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"../../../../src","sources":["components/utils/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,MAAM,GAAG,EAAE,GAAG,cAAM,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE,GAAG,cAAM,CAAC;AACnB,QAAA,GAAG,GAAG,EAAE,GAAG,YAAI,CAAC;AAChB,QAAA,IAAI,GAAG,CAAC,GAAG,WAAG,CAAC;AACf,QAAA,KAAK,GAAG,EAAE,GAAG,WAAG,CAAC;AACjB,QAAA,IAAI,GAAG,GAAG,GAAG,WAAG,CAAC;AAE9B,MAAM,QAAQ,GACV,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS;IAC7C,CAAC,CAAC,mBAAmB;QACnB,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ;IAC1E,CAAC,CAAC,EAAE,CAAC;AAEA,QAAA,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,QAAA,OAAO,GAAG,aAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["export const SECOND = 1000;\nexport const MINUTE = 60 * SECOND;\nexport const HOUR = 60 * MINUTE;\nexport const DAY = 24 * HOUR;\nexport const WEEK = 7 * DAY;\nexport const MONTH = 30 * DAY;\nexport const YEAR = 365 * DAY;\n\nconst platform =\n typeof window !== 'undefined' && window.navigator\n ? // @ts-expect-error\n window.navigator['userAgentData']?.platform || window.navigator.platform\n : '';\n\nexport const isMac = /^Mac/i.test(platform);\nexport const CtrlCmd = isMac ? 'metaKey' : 'ctrlKey';\n"]}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
2
|
export declare function isWeekend(date: DateTime): boolean;
|
|
3
|
-
|
|
3
|
+
interface PlaceholderValueOptions {
|
|
4
4
|
placeholderValue?: DateTime;
|
|
5
5
|
timeZone?: string;
|
|
6
6
|
}
|
|
7
7
|
export declare function createPlaceholderValue({ placeholderValue, timeZone }: PlaceholderValueOptions): DateTime;
|
|
8
|
+
export declare function createPlaceholderRangeValue({ placeholderValue, timeZone }: PlaceholderValueOptions): {
|
|
9
|
+
start: DateTime;
|
|
10
|
+
end: DateTime;
|
|
11
|
+
};
|
|
8
12
|
export declare function isInvalid(value: DateTime | null | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined): boolean;
|
|
9
13
|
export declare function constrainValue(value: DateTime, minValue: DateTime | undefined, maxValue: DateTime | undefined): DateTime;
|
|
10
14
|
export declare function mergeDateTime(date: DateTime, time: DateTime): DateTime;
|
|
11
15
|
export declare function formatDateTime(date: DateTime, format: string, timezone: string, lang: string): string;
|
|
16
|
+
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isWeekend = isWeekend;
|
|
4
4
|
exports.createPlaceholderValue = createPlaceholderValue;
|
|
5
|
+
exports.createPlaceholderRangeValue = createPlaceholderRangeValue;
|
|
5
6
|
exports.isInvalid = isInvalid;
|
|
6
7
|
exports.constrainValue = constrainValue;
|
|
7
8
|
exports.mergeDateTime = mergeDateTime;
|
|
@@ -11,7 +12,11 @@ function isWeekend(date) {
|
|
|
11
12
|
return [0, 6].includes(date.day());
|
|
12
13
|
}
|
|
13
14
|
function createPlaceholderValue({ placeholderValue, timeZone }) {
|
|
14
|
-
return placeholderValue
|
|
15
|
+
return placeholderValue ?? (0, date_utils_1.dateTime)({ timeZone }).startOf('day');
|
|
16
|
+
}
|
|
17
|
+
function createPlaceholderRangeValue({ placeholderValue, timeZone }) {
|
|
18
|
+
const date = createPlaceholderValue({ placeholderValue, timeZone });
|
|
19
|
+
return { start: date.startOf('day'), end: date.endOf('day') };
|
|
15
20
|
}
|
|
16
21
|
function isInvalid(value, minValue, maxValue) {
|
|
17
22
|
if (!value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":";;AAGA,8BAEC;AAMD,wDAEC;AAED,8BAiBC;AAED,wCAaC;AAED,sCAKC;AAED,wCAEC;
|
|
1
|
+
{"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":";;AAGA,8BAEC;AAMD,wDAEC;AAED,kEAGC;AAED,8BAiBC;AAED,wCAaC;AAED,sCAKC;AAED,wCAEC;AA/DD,uDAAgD;AAGhD,SAAgB,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,SAAgB,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,IAAI,IAAA,qBAAQ,EAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,2BAA2B,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IAC7F,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAAC,CAAC,CAAC;IAClE,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC;AAChE,CAAC;AAED,SAAgB,SAAS,CACrB,KAAkC,EAClC,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,cAAc,CAC1B,KAAe,EACf,QAA8B,EAC9B,QAA8B;IAE9B,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAc,EAAE,IAAc;IACxD,OAAO,IAAI;SACN,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7B,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,IAAA,qBAAQ,EAAC,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import {dateTime} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nexport function isWeekend(date: DateTime) {\n return [0, 6].includes(date.day());\n}\n\ninterface PlaceholderValueOptions {\n placeholderValue?: DateTime;\n timeZone?: string;\n}\nexport function createPlaceholderValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n return placeholderValue ?? dateTime({timeZone}).startOf('day');\n}\n\nexport function createPlaceholderRangeValue({placeholderValue, timeZone}: PlaceholderValueOptions) {\n const date = createPlaceholderValue({placeholderValue, timeZone});\n return {start: date.startOf('day'), end: date.endOf('day')};\n}\n\nexport function isInvalid(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (!value) {\n return false;\n }\n\n if (minValue && value.isBefore(minValue)) {\n return true;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return true;\n }\n\n return false;\n}\n\nexport function constrainValue(\n value: DateTime,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n) {\n if (minValue && value.isBefore(minValue)) {\n return minValue;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return maxValue;\n }\n\n return value;\n}\n\nexport function mergeDateTime(date: DateTime, time: DateTime) {\n return date\n .set('hours', time.hour())\n .set('minutes', time.minute())\n .set('seconds', time.second());\n}\n\nexport function formatDateTime(date: DateTime, format: string, timezone: string, lang: string) {\n return dateTime({input: date, timeZone: timezone, lang}).format(format);\n}\n"]}
|
|
@@ -17,7 +17,7 @@ function filterDOMProps(props, options = {}) {
|
|
|
17
17
|
if (Object.prototype.hasOwnProperty.call(props, prop) &&
|
|
18
18
|
(DOMPropNames.has(prop) ||
|
|
19
19
|
(labelable && labelablePropNames.has(prop)) ||
|
|
20
|
-
|
|
20
|
+
propNames?.has(prop) ||
|
|
21
21
|
propRe.test(prop))) {
|
|
22
22
|
// @ts-expect-error
|
|
23
23
|
filteredProps[prop] = props[prop];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterDOMProps.js","sourceRoot":"../../../../src","sources":["components/utils/filterDOMProps.ts"],"names":[],"mappings":";;AAyBA,wCAqBC;AA5CD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;CACjB,CAAC,CAAC;AAaH,MAAM,MAAM,GAAG,aAAa,CAAC;AAE7B,yDAAyD;AACzD,SAAgB,cAAc,CAC1B,KAAyC,EACzC,UAAmB,EAAE;IAErB,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IACvC,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IACI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACjD,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,CAAC,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"filterDOMProps.js","sourceRoot":"../../../../src","sources":["components/utils/filterDOMProps.ts"],"names":[],"mappings":";;AAyBA,wCAqBC;AA5CD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;CACjB,CAAC,CAAC;AAaH,MAAM,MAAM,GAAG,aAAa,CAAC;AAE7B,yDAAyD;AACzD,SAAgB,cAAc,CAC1B,KAAyC,EACzC,UAAmB,EAAE;IAErB,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IACvC,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IACI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACjD,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,CAAC,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3C,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACxB,CAAC;YACC,mBAAmB;YACnB,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC","sourcesContent":["import type {AccessibilityProps} from '../types';\n\nconst DOMPropNames = new Set(['id']);\n\nconst labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details',\n]);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean;\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set<string>;\n}\n\nconst propRe = /^(data-.*)$/;\n\n/* FIXME: use the same function from @gravity-ui/uikit */\nexport function filterDOMProps(\n props: {id?: string} & AccessibilityProps,\n options: Options = {},\n): {id?: string} & AccessibilityProps {\n const {labelable, propNames} = options;\n const filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) &&\n (DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop))\n ) {\n // @ts-expect-error\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeProps = mergeProps;
|
|
4
4
|
function mergeProps(...args) {
|
|
5
|
-
const result =
|
|
5
|
+
const result = { ...args[0] };
|
|
6
6
|
for (let i = 1; i < args.length; i++) {
|
|
7
7
|
const props = args[i];
|
|
8
8
|
if (!props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":";;AAgBA,gCAuCC;AAvCD,SAAgB,UAAU,CAAwB,GAAG,IAAO;IACxD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":";;AAgBA,gCAuCC;AAvCD,SAAgB,UAAU,CAAwB,GAAG,IAAO;IACxD,MAAM,MAAM,GAAU,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,SAAS;QACb,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAEzB,IACI,OAAO,IAAI,KAAK,UAAU;gBAC1B,OAAO,KAAK,KAAK,UAAU;gBAC3B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE;gBAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EACjC,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,WAAW;gBACnB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;YACrC,CAAC;iBAAM,IACH,GAAG,KAAK,cAAc;gBACtB,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,KAAK,QAAQ,EAC3B,CAAC;gBACC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAA4C,CAAC;AACxD,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,GAAc;IAC5B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC3B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;AACN,CAAC","sourcesContent":["interface Props {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\ntype PropsArgs = Props | undefined | null;\n\ntype TupleTypes<T> = {[P in keyof T]: T[P]} extends {[key: number]: infer V}\n ? NullToObject<V>\n : never;\ntype NullToObject<T> = T extends null | undefined ? {} : T;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport function mergeProps<T extends PropsArgs[]>(...args: T): UnionToIntersection<TupleTypes<T>> {\n const result: Props = {...args[0]};\n\n for (let i = 1; i < args.length; i++) {\n const props = args[i];\n if (!props) {\n continue;\n }\n for (const key of Object.keys(props)) {\n const left = result[key];\n const right = props[key];\n\n if (\n typeof left === 'function' &&\n typeof right === 'function' &&\n key.startsWith('on') &&\n key.charCodeAt(2) >= /* A */ 65 &&\n key.charCodeAt(2) <= /* Z */ 90\n ) {\n result[key] = chain(left, right);\n } else if (\n key === 'className' &&\n typeof left === 'string' &&\n typeof right === 'string'\n ) {\n result[key] = left + ' ' + right;\n } else if (\n key === 'controlProps' &&\n typeof left === 'object' &&\n typeof right === 'object'\n ) {\n result[key] = mergeProps(left, right);\n } else {\n result[key] = right === undefined ? left : right;\n }\n }\n }\n\n return result as UnionToIntersection<TupleTypes<T>>;\n}\n\nfunction chain(...fns: unknown[]) {\n return (...args: unknown[]) => {\n for (const fn of fns) {\n if (typeof fn === 'function') {\n fn(...args);\n }\n }\n };\n}\n"]}
|
|
@@ -5,7 +5,7 @@ const i18n_1 = require("./i18n/index.js");
|
|
|
5
5
|
function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value', t = i18n_1.i18n) {
|
|
6
6
|
const rangeOverflow = value && maxValue && maxValue.isBefore(value);
|
|
7
7
|
const rangeUnderflow = value && minValue && value.isBefore(minValue);
|
|
8
|
-
const isUnavailable = (value &&
|
|
8
|
+
const isUnavailable = (value && isDateUnavailable?.(value)) || false;
|
|
9
9
|
const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;
|
|
10
10
|
const errors = [];
|
|
11
11
|
if (isInvalid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":";;AAWA,kDAwCC;AA/CD,0CAA4B;AAO5B,SAAgB,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,WAAI;IAE1C,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":";;AAWA,kDAwCC;AA/CD,0CAA4B;AAO5B,SAAgB,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,WAAI;IAE1C,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,aAAa,IAAI,cAAc,IAAI,aAAa,CAAC;IACnE,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,oCAAoC,EAAE;gBACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACP,CAAC,CAAC,sCAAsC,EAAE;gBACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;gBAC9C,KAAK,EAAE,UAAU;aACpB,CAAC,CACL,CAAC;QACN,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC;AAC/B,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {ExtractFunctionType} from '../../types';\n\nimport {i18n} from './i18n';\n\nexport interface ValidationResult {\n isInvalid: boolean;\n errors: string[];\n}\n\nexport function getValidationResult(\n value: DateTime | null | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime) => boolean) | undefined,\n timeZone: string,\n valueTitle = 'Value',\n t: ExtractFunctionType<typeof i18n> = i18n,\n): ValidationResult {\n const rangeOverflow = value && maxValue && maxValue.isBefore(value);\n const rangeUnderflow = value && minValue && value.isBefore(minValue);\n const isUnavailable = (value && isDateUnavailable?.(value)) || false;\n const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;\n const errors = [];\n\n if (isInvalid) {\n if (rangeUnderflow && minValue) {\n errors.push(\n t('Value must be {minValue} or later.', {\n minValue: minValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (rangeOverflow && maxValue) {\n errors.push(\n t('Value must be {maxValue} or earlier.', {\n maxValue: maxValue.timeZone(timeZone).format(),\n value: valueTitle,\n }),\n );\n }\n\n if (isUnavailable) {\n errors.push(t('Selected date unavailable.'));\n }\n }\n\n return {isInvalid, errors};\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"Value must be {minValue} or later.": "{{value}} должно
|
|
3
|
-
"Value must be {maxValue} or earlier.": "{{value}} должно
|
|
2
|
+
"Value must be {minValue} or later.": "{{value}} должно равняться {{minValue}} или быть позже.",
|
|
3
|
+
"Value must be {maxValue} or earlier.": "{{value}} должно равняться {{maxValue}} или быть раньше.",
|
|
4
4
|
"Selected date unavailable.": "Выбранная дата недоступна.",
|
|
5
5
|
"Value is required.": "{{value}} обязательно.",
|
|
6
6
|
"\"From\"": "«От»",
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
2
|
import type { RelativeRangeDatePickerValue } from "../../RelativeRangeDatePicker/index.js";
|
|
3
3
|
import type { ExtractFunctionType } from "../../types/index.js";
|
|
4
|
+
import type { ValidationResult } from "./datePicker.js";
|
|
4
5
|
import { i18n } from "./i18n/index.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
isInvalid: boolean;
|
|
12
|
-
startValidationResult: import("./datePicker.js").ValidationResult;
|
|
13
|
-
endValidationResult: import("./datePicker.js").ValidationResult;
|
|
14
|
-
errors: string[];
|
|
15
|
-
};
|
|
6
|
+
interface RangeValidationResult extends ValidationResult {
|
|
7
|
+
startValidationResult: ValidationResult;
|
|
8
|
+
endValidationResult: ValidationResult;
|
|
9
|
+
}
|
|
10
|
+
export declare function getRangeValidationResult(value: RelativeRangeDatePickerValue | null, allowNullableValues: boolean | undefined, minValue: DateTime | undefined, maxValue: DateTime | undefined, isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined, timeZone: string, t?: ExtractFunctionType<typeof i18n>): RangeValidationResult;
|
|
11
|
+
export {};
|
|
@@ -6,7 +6,12 @@ const datePicker_1 = require("./datePicker.js");
|
|
|
6
6
|
const i18n_1 = require("./i18n/index.js");
|
|
7
7
|
function getRangeValidationResult(value, allowNullableValues, minValue, maxValue, isDateUnavailable, timeZone, t = i18n_1.i18n) {
|
|
8
8
|
if (!value) {
|
|
9
|
-
return {
|
|
9
|
+
return {
|
|
10
|
+
isInvalid: false,
|
|
11
|
+
errors: [],
|
|
12
|
+
startValidationResult: { isInvalid: false, errors: [] },
|
|
13
|
+
endValidationResult: { isInvalid: false, errors: [] },
|
|
14
|
+
};
|
|
10
15
|
}
|
|
11
16
|
const startDate = value.start ? (0, date_utils_1.dateTimeParse)(value.start.value, { timeZone }) : null;
|
|
12
17
|
const endDate = value.end ? (0, date_utils_1.dateTimeParse)(value.end.value, { timeZone, roundUp: true }) : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relativeRangeDatePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/relativeRangeDatePicker.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"relativeRangeDatePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/relativeRangeDatePicker.ts"],"names":[],"mappings":";;AAeA,4DA8DC;AA7ED,uDAAqD;AAMrD,gDAAiD;AAEjD,0CAA4B;AAO5B,SAAgB,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB,EAChB,IAAsC,WAAI;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO;YACH,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,EAAE;YACV,qBAAqB,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC;YACrD,mBAAmB,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAC;SACtD,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,IAAA,gCAAmB,EAC7C,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,EACR,CAAC,CAAC,QAAQ,CAAC,EACX,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrC,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAA,gCAAmB,EAC3C,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EACxE,QAAQ,EACR,CAAC,CAAC,MAAM,CAAC,EACT,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;QACrC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACH,SAAS,EAAE,qBAAqB,CAAC,SAAS,IAAI,mBAAmB,CAAC,SAAS;QAC3E,qBAAqB;QACrB,mBAAmB;QACnB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;KAC1E,CAAC;AACN,CAAC","sourcesContent":["import {dateTimeParse} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {RelativeRangeDatePickerValue} from '../../RelativeRangeDatePicker';\nimport type {ExtractFunctionType} from '../../types';\n\nimport {getValidationResult} from './datePicker';\nimport type {ValidationResult} from './datePicker';\nimport {i18n} from './i18n';\n\ninterface RangeValidationResult extends ValidationResult {\n startValidationResult: ValidationResult;\n endValidationResult: ValidationResult;\n}\n\nexport function getRangeValidationResult(\n value: RelativeRangeDatePickerValue | null,\n allowNullableValues: boolean | undefined,\n minValue: DateTime | undefined,\n maxValue: DateTime | undefined,\n isDateUnavailable: ((v: DateTime, endpoint: 'start' | 'end') => boolean) | undefined,\n timeZone: string,\n t: ExtractFunctionType<typeof i18n> = i18n,\n): RangeValidationResult {\n if (!value) {\n return {\n isInvalid: false,\n errors: [],\n startValidationResult: {isInvalid: false, errors: []},\n endValidationResult: {isInvalid: false, errors: []},\n };\n }\n\n const startDate = value.start ? dateTimeParse(value.start.value, {timeZone}) : null;\n const endDate = value.end ? dateTimeParse(value.end.value, {timeZone, roundUp: true}) : null;\n\n const startValidationResult = getValidationResult(\n startDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'start') : undefined,\n timeZone,\n t('\"From\"'),\n t,\n );\n\n if (!startDate && !allowNullableValues) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t('\"From\" is required.'));\n }\n\n const endValidationResult = getValidationResult(\n endDate,\n minValue,\n maxValue,\n isDateUnavailable ? (date) => isDateUnavailable(date, 'end') : undefined,\n timeZone,\n t('\"To\"'),\n t,\n );\n\n if (!endDate && !allowNullableValues) {\n endValidationResult.isInvalid = true;\n endValidationResult.errors.push(t('\"To\" is required.'));\n }\n\n if (startDate && endDate && endDate.isBefore(startDate)) {\n startValidationResult.isInvalid = true;\n startValidationResult.errors.push(t(`\"From\" can't be after \"To\".`));\n }\n\n return {\n isInvalid: startValidationResult.isInvalid || endValidationResult.isInvalid,\n startValidationResult,\n endValidationResult,\n errors: startValidationResult.errors.concat(endValidationResult.errors),\n };\n}\n"]}
|
|
@@ -16,8 +16,7 @@ function useEventHandler(handler) {
|
|
|
16
16
|
}, [handler]);
|
|
17
17
|
// @ts-expect-error
|
|
18
18
|
return react_1.default.useCallback((...args) => {
|
|
19
|
-
|
|
20
|
-
return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.call(ref, ...args);
|
|
19
|
+
return ref.current?.(...args);
|
|
21
20
|
}, []);
|
|
22
21
|
}
|
|
23
22
|
//# sourceMappingURL=useEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":";;AAQA,0CASC;;AAjBD,0DAA0B;AAE1B;;;;;GAKG;AACH,SAAgB,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,eAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,eAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,eAAK,CAAC,WAAW,CAAI,CAAC,GAAG,IAAI,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":";;AAQA,0CASC;;AAjBD,0DAA0B;AAE1B;;;;;GAKG;AACH,SAAgB,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,eAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,eAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,eAAK,CAAC,WAAW,CAAI,CAAC,GAAG,IAAI,EAAE,EAAE;QACpC,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["import React from 'react';\n\n/*\n * TODO: move to @gravity-ui/uikit\n * The hook returns a stable function (an empty list of dependencies),\n * but this function always calls the actual function associated with the last render.\n * The returned function should be used as an event handler or inside a useEffect.\n */\nexport function useEventHandler<T extends Function>(handler?: T) {\n const ref = React.useRef<T | undefined>(handler);\n React.useLayoutEffect(() => {\n ref.current = handler;\n }, [handler]);\n // @ts-expect-error\n return React.useCallback<T>((...args) => {\n return ref.current?.(...args);\n }, []);\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
type PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';
|
|
3
3
|
interface EventBase {
|
|
4
4
|
shiftKey: boolean;
|
|
5
5
|
ctrlKey: boolean;
|
|
@@ -20,7 +20,7 @@ export interface MoveMoveEvent extends BaseMoveEvent {
|
|
|
20
20
|
export interface MoveEndEvent extends BaseMoveEvent {
|
|
21
21
|
type: 'moveend';
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
interface MoveEvents {
|
|
24
24
|
onMoveStart?: (e: MoveStartEvent) => void;
|
|
25
25
|
onMove?: (e: MoveMoveEvent) => void;
|
|
26
26
|
onMoveEnd?: (e: MoveEndEvent) => void;
|
|
@@ -17,7 +17,7 @@ function useMove(props) {
|
|
|
17
17
|
}
|
|
18
18
|
if (!state.current.isMoving) {
|
|
19
19
|
state.current.isMoving = true;
|
|
20
|
-
onMoveStart
|
|
20
|
+
onMoveStart?.({
|
|
21
21
|
type: 'movestart',
|
|
22
22
|
pointerType,
|
|
23
23
|
shiftKey: originalEvent.shiftKey,
|
|
@@ -26,7 +26,7 @@ function useMove(props) {
|
|
|
26
26
|
altKey: originalEvent.altKey,
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
-
onMove
|
|
29
|
+
onMove?.({
|
|
30
30
|
type: 'move',
|
|
31
31
|
pointerType,
|
|
32
32
|
deltaX,
|
|
@@ -40,7 +40,7 @@ function useMove(props) {
|
|
|
40
40
|
const end = (0, useEventHandler_1.useEventHandler)((originalEvent, pointerType) => {
|
|
41
41
|
if (state.current.isMoving) {
|
|
42
42
|
state.current.isMoving = false;
|
|
43
|
-
onMoveEnd
|
|
43
|
+
onMoveEnd?.({
|
|
44
44
|
type: 'moveend',
|
|
45
45
|
pointerType,
|
|
46
46
|
shiftKey: originalEvent.shiftKey,
|
|
@@ -59,9 +59,8 @@ function useMove(props) {
|
|
|
59
59
|
e.preventDefault();
|
|
60
60
|
state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
|
|
61
61
|
const handleMouseMove = (ev) => {
|
|
62
|
-
var _a, _b;
|
|
63
62
|
if (ev.buttons === 0) {
|
|
64
|
-
move(ev, ev.pageX - (
|
|
63
|
+
move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), 'mouse');
|
|
65
64
|
state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
|
|
66
65
|
}
|
|
67
66
|
};
|
|
@@ -85,11 +84,10 @@ function useMove(props) {
|
|
|
85
84
|
state.current.lastPosition = { pageX, pageY };
|
|
86
85
|
e.preventDefault();
|
|
87
86
|
const handleTouchMove = (ev) => {
|
|
88
|
-
var _a, _b;
|
|
89
87
|
const touch = [...ev.changedTouches].findIndex((el) => el.identifier === state.current.id);
|
|
90
88
|
if (touch !== -1) {
|
|
91
89
|
const { pageX, pageY } = e.changedTouches[touch];
|
|
92
|
-
move(ev, pageX - (
|
|
90
|
+
move(ev, pageX - (state.current.lastPosition?.pageX || 0), pageY - (state.current.lastPosition?.pageY || 0), 'touch');
|
|
93
91
|
state.current.lastPosition = { pageX, pageY };
|
|
94
92
|
}
|
|
95
93
|
};
|
|
@@ -116,9 +114,8 @@ function useMove(props) {
|
|
|
116
114
|
state.current.id = e.pointerId;
|
|
117
115
|
state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
|
|
118
116
|
const handlePointerMove = (ev) => {
|
|
119
|
-
var _a, _b;
|
|
120
117
|
if (ev.pointerId === state.current.id) {
|
|
121
|
-
move(ev, ev.pageX - (
|
|
118
|
+
move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), (ev.pointerType || 'mouse'));
|
|
122
119
|
state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
|
|
123
120
|
}
|
|
124
121
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMove.js","sourceRoot":"../../../src","sources":["hooks/useMove.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {useEventHandler} from './useEventHandler';\n\nexport type PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';\n\ninterface EventBase {\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n}\n\ninterface BaseMoveEvent extends EventBase {\n pointerType: PointerType;\n}\n\nexport interface MoveStartEvent extends BaseMoveEvent {\n type: 'movestart';\n}\n\nexport interface MoveMoveEvent extends BaseMoveEvent {\n type: 'move';\n deltaX: number;\n deltaY: number;\n}\n\nexport interface MoveEndEvent extends BaseMoveEvent {\n type: 'moveend';\n}\n\nexport interface MoveEvents {\n onMoveStart?: (e: MoveStartEvent) => void;\n onMove?: (e: MoveMoveEvent) => void;\n onMoveEnd?: (e: MoveEndEvent) => void;\n}\n\nexport function useMove(props: MoveEvents) {\n const {onMoveStart, onMove, onMoveEnd} = props;\n\n const state = React.useRef<{\n isMoving: boolean;\n lastPosition: null | {pageX: number; pageY: number};\n id: null | number;\n }>({\n isMoving: false,\n lastPosition: null,\n id: null,\n });\n\n const move = useEventHandler(\n (originalEvent: EventBase, deltaX: number, deltaY: number, pointerType: PointerType) => {\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n\n if (!state.current.isMoving) {\n state.current.isMoving = true;\n onMoveStart?.({\n type: 'movestart',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n onMove?.({\n type: 'move',\n pointerType,\n deltaX,\n deltaY,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n },\n );\n\n const end = useEventHandler((originalEvent: EventBase, pointerType: PointerType) => {\n if (state.current.isMoving) {\n state.current.isMoving = false;\n onMoveEnd?.({\n type: 'moveend',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n });\n\n return React.useMemo(() => {\n const moveProps: React.DOMAttributes<HTMLElement> = {};\n\n if (typeof PointerEvent === 'undefined') {\n moveProps.onMouseDown = (e) => {\n if (e.button === 0) {\n state.current.isMoving = false;\n e.preventDefault();\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handleMouseMove = (ev: MouseEvent) => {\n if (ev.buttons === 0) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n 'mouse',\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handleMouseUp = (ev: MouseEvent) => {\n if (ev.button === 0) {\n end(ev, 'mouse');\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n }\n };\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n }\n };\n\n moveProps.onTouchStart = (e) => {\n if (e.touches.length === 0 || state.current.id !== null) {\n return;\n }\n\n const {pageX, pageY, identifier} = e.touches[0];\n state.current.id = identifier;\n state.current.lastPosition = {pageX, pageY};\n e.preventDefault();\n\n const handleTouchMove = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n const {pageX, pageY} = e.changedTouches[touch];\n move(\n ev,\n pageX - (state.current.lastPosition?.pageX || 0),\n pageY - (state.current.lastPosition?.pageY || 0),\n 'touch',\n );\n state.current.lastPosition = {pageX, pageY};\n }\n };\n const handleTouchEnd = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n end(ev, 'touch');\n state.current.id = null;\n window.removeEventListener('touchmove', handleTouchMove);\n window.removeEventListener('touchend', handleTouchEnd);\n window.removeEventListener('touchcancel', handleTouchEnd);\n }\n };\n window.addEventListener('touchmove', handleTouchMove);\n window.addEventListener('touchend', handleTouchEnd);\n window.addEventListener('touchcancel', handleTouchEnd);\n };\n } else {\n moveProps.onPointerDown = (e) => {\n if (e.button === 0 && state.current.id === null) {\n e.preventDefault();\n state.current.isMoving = false;\n state.current.id = e.pointerId;\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handlePointerMove = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n (ev.pointerType || 'mouse') as PointerType,\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handlePointerUp = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n end(ev, (ev.pointerType || 'mouse') as PointerType);\n state.current.id = null;\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n window.removeEventListener('pointercancel', handlePointerUp);\n }\n };\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n window.addEventListener('pointercancel', handlePointerUp);\n }\n };\n }\n\n const handleKeyboardMove = (e: EventBase, deltaX: number, deltaY: number) => {\n state.current.isMoving = false;\n move(e, deltaX, deltaY, 'keyboard');\n end(e, 'keyboard');\n };\n\n moveProps.onKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft': {\n e.preventDefault();\n handleKeyboardMove(e, -1, 0);\n break;\n }\n case 'ArrowRight': {\n e.preventDefault();\n handleKeyboardMove(e, 1, 0);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n handleKeyboardMove(e, 0, -1);\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n handleKeyboardMove(e, 0, 1);\n break;\n }\n }\n };\n\n return {moveProps};\n }, [end, move]);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useMove.js","sourceRoot":"../../../src","sources":["hooks/useMove.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {useEventHandler} from './useEventHandler';\n\ntype PointerType = 'mouse' | 'pen' | 'touch' | 'keyboard';\n\ninterface EventBase {\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n}\n\ninterface BaseMoveEvent extends EventBase {\n pointerType: PointerType;\n}\n\nexport interface MoveStartEvent extends BaseMoveEvent {\n type: 'movestart';\n}\n\nexport interface MoveMoveEvent extends BaseMoveEvent {\n type: 'move';\n deltaX: number;\n deltaY: number;\n}\n\nexport interface MoveEndEvent extends BaseMoveEvent {\n type: 'moveend';\n}\n\ninterface MoveEvents {\n onMoveStart?: (e: MoveStartEvent) => void;\n onMove?: (e: MoveMoveEvent) => void;\n onMoveEnd?: (e: MoveEndEvent) => void;\n}\n\nexport function useMove(props: MoveEvents) {\n const {onMoveStart, onMove, onMoveEnd} = props;\n\n const state = React.useRef<{\n isMoving: boolean;\n lastPosition: null | {pageX: number; pageY: number};\n id: null | number;\n }>({\n isMoving: false,\n lastPosition: null,\n id: null,\n });\n\n const move = useEventHandler(\n (originalEvent: EventBase, deltaX: number, deltaY: number, pointerType: PointerType) => {\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n\n if (!state.current.isMoving) {\n state.current.isMoving = true;\n onMoveStart?.({\n type: 'movestart',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n onMove?.({\n type: 'move',\n pointerType,\n deltaX,\n deltaY,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n },\n );\n\n const end = useEventHandler((originalEvent: EventBase, pointerType: PointerType) => {\n if (state.current.isMoving) {\n state.current.isMoving = false;\n onMoveEnd?.({\n type: 'moveend',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n ctrlKey: originalEvent.ctrlKey,\n metaKey: originalEvent.metaKey,\n altKey: originalEvent.altKey,\n });\n }\n });\n\n return React.useMemo(() => {\n const moveProps: React.DOMAttributes<HTMLElement> = {};\n\n if (typeof PointerEvent === 'undefined') {\n moveProps.onMouseDown = (e) => {\n if (e.button === 0) {\n state.current.isMoving = false;\n e.preventDefault();\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handleMouseMove = (ev: MouseEvent) => {\n if (ev.buttons === 0) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n 'mouse',\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handleMouseUp = (ev: MouseEvent) => {\n if (ev.button === 0) {\n end(ev, 'mouse');\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n }\n };\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n }\n };\n\n moveProps.onTouchStart = (e) => {\n if (e.touches.length === 0 || state.current.id !== null) {\n return;\n }\n\n const {pageX, pageY, identifier} = e.touches[0];\n state.current.id = identifier;\n state.current.lastPosition = {pageX, pageY};\n e.preventDefault();\n\n const handleTouchMove = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n const {pageX, pageY} = e.changedTouches[touch];\n move(\n ev,\n pageX - (state.current.lastPosition?.pageX || 0),\n pageY - (state.current.lastPosition?.pageY || 0),\n 'touch',\n );\n state.current.lastPosition = {pageX, pageY};\n }\n };\n const handleTouchEnd = (ev: TouchEvent) => {\n const touch = [...ev.changedTouches].findIndex(\n (el) => el.identifier === state.current.id,\n );\n if (touch !== -1) {\n end(ev, 'touch');\n state.current.id = null;\n window.removeEventListener('touchmove', handleTouchMove);\n window.removeEventListener('touchend', handleTouchEnd);\n window.removeEventListener('touchcancel', handleTouchEnd);\n }\n };\n window.addEventListener('touchmove', handleTouchMove);\n window.addEventListener('touchend', handleTouchEnd);\n window.addEventListener('touchcancel', handleTouchEnd);\n };\n } else {\n moveProps.onPointerDown = (e) => {\n if (e.button === 0 && state.current.id === null) {\n e.preventDefault();\n state.current.isMoving = false;\n state.current.id = e.pointerId;\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n\n const handlePointerMove = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n move(\n ev,\n ev.pageX - (state.current.lastPosition?.pageX || 0),\n ev.pageY - (state.current.lastPosition?.pageY || 0),\n (ev.pointerType || 'mouse') as PointerType,\n );\n state.current.lastPosition = {pageX: ev.pageX, pageY: ev.pageY};\n }\n };\n const handlePointerUp = (ev: PointerEvent) => {\n if (ev.pointerId === state.current.id) {\n end(ev, (ev.pointerType || 'mouse') as PointerType);\n state.current.id = null;\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', handlePointerUp);\n window.removeEventListener('pointercancel', handlePointerUp);\n }\n };\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n window.addEventListener('pointercancel', handlePointerUp);\n }\n };\n }\n\n const handleKeyboardMove = (e: EventBase, deltaX: number, deltaY: number) => {\n state.current.isMoving = false;\n move(e, deltaX, deltaY, 'keyboard');\n end(e, 'keyboard');\n };\n\n moveProps.onKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft': {\n e.preventDefault();\n handleKeyboardMove(e, -1, 0);\n break;\n }\n case 'ArrowRight': {\n e.preventDefault();\n handleKeyboardMove(e, 1, 0);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n handleKeyboardMove(e, 0, -1);\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n handleKeyboardMove(e, 0, 1);\n break;\n }\n }\n };\n\n return {moveProps};\n }, [end, move]);\n}\n"]}
|
|
@@ -6,7 +6,7 @@ const react_1 = tslib_1.__importDefault(require("react"));
|
|
|
6
6
|
/* FIXME: use the same hook from @gravity-ui/uikit */
|
|
7
7
|
function useResizeObserver({ ref, onResize, box, }) {
|
|
8
8
|
react_1.default.useEffect(() => {
|
|
9
|
-
const element = ref
|
|
9
|
+
const element = ref?.current;
|
|
10
10
|
if (!element) {
|
|
11
11
|
return undefined;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":";;AASA,8CA8BC;;AAvCD,0DAA0B;AAQ1B,qDAAqD;AACrD,SAAgB,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":";;AASA,8CA8BC;;AAvCD,0DAA0B;AAQ1B,qDAAqD;AACrD,SAAgB,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,GAAG,EAAE;gBACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC;QACN,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import React from 'react';\n\ninterface UseResizeObserverProps<T> {\n ref: React.RefObject<T | null | undefined> | undefined;\n onResize: () => void;\n box?: ResizeObserverBoxOptions;\n}\n\n/* FIXME: use the same hook from @gravity-ui/uikit */\nexport function useResizeObserver<T extends Element>({\n ref,\n onResize,\n box,\n}: UseResizeObserverProps<T>) {\n React.useEffect(() => {\n const element = ref?.current;\n if (!element) {\n return undefined;\n }\n\n if (typeof window.ResizeObserver === 'undefined') {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n }\n\n const observer = new ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n onResize();\n });\n\n observer.observe(element, {box});\n return () => {\n observer.disconnect();\n };\n }, [ref, onResize, box]);\n}\n"]}
|
package/dist/cjs/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"commonjs","version":"
|
|
1
|
+
{"type":"commonjs","version":"4.0.0","sideEffects":["*.css","*.scss"]}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# @gravity-ui/date-components documentation
|
|
2
|
+
|
|
3
|
+
Documentation for the **installed** version of `@gravity-ui/date-components`.
|
|
4
|
+
Your training data may be outdated — these files are the source of truth.
|
|
5
|
+
|
|
6
|
+
Paths are relative to this file (`node_modules/@gravity-ui/date-components/dist/docs/`).
|
|
7
|
+
|
|
8
|
+
## For AI agents
|
|
9
|
+
|
|
10
|
+
React date and time controls for Gravity UI apps — date/time pickers, calendars, and absolute/relative range selectors built on `@gravity-ui/date-utils`.
|
|
11
|
+
|
|
12
|
+
### When to use
|
|
13
|
+
|
|
14
|
+
- A single date or date-time input: `DatePicker`, `DateField`.
|
|
15
|
+
- Calendars for month/day selection: `Calendar`, `CalendarView`.
|
|
16
|
+
- Date ranges: `RangeDatePicker`, `RangeCalendar`, `RangeDateField`.
|
|
17
|
+
- Relative and mixed absolute/relative ranges (e.g. "last 7 days"): `RelativeDatePicker`, `RelativeRangeDatePicker`, `RelativeDateField`.
|
|
18
|
+
|
|
19
|
+
### When not to use
|
|
20
|
+
|
|
21
|
+
- Plain text or number inputs, buttons, or other generic controls — use [`@gravity-ui/uikit`](https://github.com/gravity-ui/uikit).
|
|
22
|
+
- Low-level date math, parsing, formatting, or timezone handling without UI — use [`@gravity-ui/date-utils`](https://github.com/gravity-ui/date-utils) directly.
|
|
23
|
+
|
|
24
|
+
### Common pitfalls
|
|
25
|
+
|
|
26
|
+
- **Values are `DateTime` objects, not JS `Date`.** Components work with `dateTime()` from [`@gravity-ui/date-utils`](https://github.com/gravity-ui/date-utils); pass and read `DateTime`, not native `Date` or ISO strings.
|
|
27
|
+
- **Requires uikit setup.** Render inside `ThemeProvider` and import `@gravity-ui/uikit/styles/styles.css`; `@gravity-ui/uikit` and `@gravity-ui/date-utils` are required peer dependencies.
|
|
28
|
+
- **Locale is loaded, not just set.** Set language via `ThemeProvider` `lang`, but load the locale data first with `settings.loadLocale('ru')` from `@gravity-ui/date-utils`, or dates render in the default locale.
|
|
29
|
+
- **Component-specific translations use `addLanguageKeysets`.** For languages beyond `en`/`ru`, register keysets via `addLanguageKeysets` from `@gravity-ui/uikit/i18n` using the `Keysets`/`PartialKeysets` types exported here.
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
```shell
|
|
34
|
+
npm install react react-dom @gravity-ui/uikit @gravity-ui/date-components @gravity-ui/date-utils
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
```jsx
|
|
40
|
+
import {createRoot} from 'react-dom/client';
|
|
41
|
+
import {DatePicker} from '@gravity-ui/date-components';
|
|
42
|
+
import {ThemeProvider} from '@gravity-ui/uikit';
|
|
43
|
+
|
|
44
|
+
import '@gravity-ui/uikit/styles/styles.css';
|
|
45
|
+
|
|
46
|
+
function App() {
|
|
47
|
+
return (
|
|
48
|
+
<ThemeProvider>
|
|
49
|
+
<h1>DatePicker</h1>
|
|
50
|
+
<form>
|
|
51
|
+
<label htmlFor="date-picker">Date: </label>
|
|
52
|
+
<DatePicker id="date-picker" name="date" />
|
|
53
|
+
</form>
|
|
54
|
+
</ThemeProvider>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const root = createRoot(document.getElementById('root'));
|
|
59
|
+
root.render(<App />);
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Localization
|
|
63
|
+
|
|
64
|
+
```jsx
|
|
65
|
+
import {settings} from '@gravity-ui/date-utils';
|
|
66
|
+
|
|
67
|
+
// Load date locales that will be used in an application.
|
|
68
|
+
await settings.loadLocale('ru');
|
|
69
|
+
|
|
70
|
+
function App() {
|
|
71
|
+
return (
|
|
72
|
+
// Set the language to use with components.
|
|
73
|
+
<ThemeProvider lang="ru">
|
|
74
|
+
<h1>DatePicker</h1>
|
|
75
|
+
<form>
|
|
76
|
+
<label htmlFor="date-picker">Дата: </label>
|
|
77
|
+
<DatePicker id="date-picker" name="date" />
|
|
78
|
+
</form>
|
|
79
|
+
</ThemeProvider>
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
If the app supports language switching, preload all supported locales when the app first loads, or load the locales before switching the language:
|
|
85
|
+
|
|
86
|
+
```jsx
|
|
87
|
+
// Preload locales
|
|
88
|
+
await Promise.all([settings.loadLocale('ru'), settings.loadLocale('nl')]);
|
|
89
|
+
|
|
90
|
+
const root = createRoot(document.getElementById('root'));
|
|
91
|
+
root.render(<App />);
|
|
92
|
+
|
|
93
|
+
// or load locales on demand.
|
|
94
|
+
|
|
95
|
+
function App() {
|
|
96
|
+
const [lang, setLang] = React.useState('en');
|
|
97
|
+
|
|
98
|
+
const handleLangChange = (newLang) => {
|
|
99
|
+
settings.loadLocale(newLang).then(() => {
|
|
100
|
+
setLang(newLang);
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
return <ThemeProvider lang={lang}>...</ThemeProvider>;
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The components have translations into English and Russian. To add translations into other languages, use `addLanguageKeysets` from `@gravity-ui/uikit`:
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
import {addLanguageKeysets} from '@gravity-ui/uikit/i18n';
|
|
112
|
+
import type {Keysets, PartialKeysets} from '@gravity-ui/date-components';
|
|
113
|
+
|
|
114
|
+
// Use the Keyset type to specify translations for all available components
|
|
115
|
+
addLanguageKeysets<Keysets>(lang, {...});
|
|
116
|
+
|
|
117
|
+
// or use the PartialKeysets type to specify only the ones you need
|
|
118
|
+
addLanguageKeysets<PartialKeysets>(lang, {...});
|
|
119
|
+
|
|
120
|
+
// To specify translations for some components
|
|
121
|
+
addLanguageKeysets<Pick<Keysets, 'g-date-calendar' | 'g-date-date-field' | 'g-date-date-picker'>>(lang, {...});
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Components
|
|
125
|
+
|
|
126
|
+
- [Calendar](./components/Calendar.md) — Calendar is a flexible, user-friendly calendar component for React applications. It allows users to view, select, and manage dates with ease. Ideal for event scheduling, booking systems, and any application where date selection is essential. It can be controlled if you set value property. Or it can be uncontrolled if you don't set any value, but in this case you can manage the initial state with optional property defaultValue. Component is uncontrolled by default.
|
|
127
|
+
- [DateField](./components/DateField.md) — DateField component is a versatile and convenient input field specifically designed for date entry in React applications. With an intuitive interface and easy integration, it's perfect for any form that requires date or time input, such as event schedulers, booking systems, or data-driven reports. It can be controlled if you set value property. Or it can be uncontrolled if you don't set any value, but in this case you can manage the initial state with optional property defaultValue. Component is uncontrolled by default.
|
|
128
|
+
- [DatePicker](./components/DatePicker.md) — DatePicker is a sophisticated, lightweight, and fully customizable component designed to provide intuitive date picking functionality in your React applications. Built with user experience and ease of integration in mind, it fits seamlessly within forms, modals, or any UI element requiring date input. It can be controlled if you set value property. Or it can be uncontrolled if you don't set any value, but in this case you can manage the initial state with optional property defaultValue. Component is uncontrolled by default.
|
|
129
|
+
- [RangeCalendar](./components/RangeCalendar.md) — RangeCalendar is a powerful, flexible, and user-friendly UI component designed for selecting a range of dates. Built with React, it combines the functionality of a calendar and a date range picker, making it an ideal choice for applications that require users to input a start and end date. It can be controlled if you set value property. Or it can be uncontrolled if you don't set any value, but in this case you can manage the initial state with optional property defaultValue. Component is uncontrolled by default.
|
|
130
|
+
- [RelativeDateField](./components/RelativeDateField.md) — RelativeDateField component is used only for entering relative dates. It can't be used as "normal" DateField.
|
|
131
|
+
- [RelativeDatePicker](./components/RelativeDatePicker.md) — RelativeDatePicker is almost the same component as DatePicker but it has ability to use relative dates.
|