@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
|
@@ -5,4 +5,10 @@ export const DAY = 24 * HOUR;
|
|
|
5
5
|
export const WEEK = 7 * DAY;
|
|
6
6
|
export const MONTH = 30 * DAY;
|
|
7
7
|
export const YEAR = 365 * DAY;
|
|
8
|
+
const platform = typeof window !== 'undefined' && window.navigator
|
|
9
|
+
? // @ts-expect-error
|
|
10
|
+
window.navigator['userAgentData']?.platform || window.navigator.platform
|
|
11
|
+
: '';
|
|
12
|
+
export const isMac = /^Mac/i.test(platform);
|
|
13
|
+
export const CtrlCmd = isMac ? 'metaKey' : 'ctrlKey';
|
|
8
14
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"../../../../src","sources":["components/utils/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,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,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,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;AAEb,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,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 {};
|
|
@@ -3,7 +3,11 @@ export function isWeekend(date) {
|
|
|
3
3
|
return [0, 6].includes(date.day());
|
|
4
4
|
}
|
|
5
5
|
export function createPlaceholderValue({ placeholderValue, timeZone }) {
|
|
6
|
-
return placeholderValue
|
|
6
|
+
return placeholderValue ?? dateTime({ timeZone }).startOf('day');
|
|
7
|
+
}
|
|
8
|
+
export function createPlaceholderRangeValue({ placeholderValue, timeZone }) {
|
|
9
|
+
const date = createPlaceholderValue({ placeholderValue, timeZone });
|
|
10
|
+
return { start: date.startOf('day'), end: date.endOf('day') };
|
|
7
11
|
}
|
|
8
12
|
export function isInvalid(value, minValue, maxValue) {
|
|
9
13
|
if (!value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAGhD,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,MAAM,UAAU,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,
|
|
1
|
+
{"version":3,"file":"dates.js","sourceRoot":"../../../../src","sources":["components/utils/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAGhD,MAAM,UAAU,SAAS,CAAC,IAAc;IACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,MAAM,UAAU,sBAAsB,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IACxF,OAAO,gBAAgB,IAAI,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAY;IACzF,OAAO,QAAQ,CAAC,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"]}
|
|
@@ -14,7 +14,7 @@ export function filterDOMProps(props, options = {}) {
|
|
|
14
14
|
if (Object.prototype.hasOwnProperty.call(props, prop) &&
|
|
15
15
|
(DOMPropNames.has(prop) ||
|
|
16
16
|
(labelable && labelablePropNames.has(prop)) ||
|
|
17
|
-
|
|
17
|
+
propNames?.has(prop) ||
|
|
18
18
|
propRe.test(prop))) {
|
|
19
19
|
// @ts-expect-error
|
|
20
20
|
filteredProps[prop] = props[prop];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterDOMProps.js","sourceRoot":"../../../../src","sources":["components/utils/filterDOMProps.ts"],"names":[],"mappings":"AAEA,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,MAAM,UAAU,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":"AAEA,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,MAAM,UAAU,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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,UAAU,CAAwB,GAAG,IAAO;IACxD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"mergeProps.js","sourceRoot":"../../../../src","sources":["components/utils/mergeProps.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,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"]}
|
|
@@ -2,7 +2,7 @@ import { i18n } from "./i18n/index.js";
|
|
|
2
2
|
export function getValidationResult(value, minValue, maxValue, isDateUnavailable, timeZone, valueTitle = 'Value', t = i18n) {
|
|
3
3
|
const rangeOverflow = value && maxValue && maxValue.isBefore(value);
|
|
4
4
|
const rangeUnderflow = value && minValue && value.isBefore(minValue);
|
|
5
|
-
const isUnavailable = (value &&
|
|
5
|
+
const isUnavailable = (value && isDateUnavailable?.(value)) || false;
|
|
6
6
|
const isInvalid = rangeOverflow || rangeUnderflow || isUnavailable;
|
|
7
7
|
const errors = [];
|
|
8
8
|
if (isInvalid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/datePicker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,IAAI,EAAC,wBAAe;AAO5B,MAAM,UAAU,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,IAAI;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":"AAIA,OAAO,EAAC,IAAI,EAAC,wBAAe;AAO5B,MAAM,UAAU,mBAAmB,CAC/B,KAAkC,EAClC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAyD,EACzD,QAAgB,EAChB,UAAU,GAAG,OAAO,EACpB,IAAsC,IAAI;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 {};
|
|
@@ -3,7 +3,12 @@ import { getValidationResult } from "./datePicker.js";
|
|
|
3
3
|
import { i18n } from "./i18n/index.js";
|
|
4
4
|
export function getRangeValidationResult(value, allowNullableValues, minValue, maxValue, isDateUnavailable, timeZone, t = i18n) {
|
|
5
5
|
if (!value) {
|
|
6
|
-
return {
|
|
6
|
+
return {
|
|
7
|
+
isInvalid: false,
|
|
8
|
+
errors: [],
|
|
9
|
+
startValidationResult: { isInvalid: false, errors: [] },
|
|
10
|
+
endValidationResult: { isInvalid: false, errors: [] },
|
|
11
|
+
};
|
|
7
12
|
}
|
|
8
13
|
const startDate = value.start ? dateTimeParse(value.start.value, { timeZone }) : null;
|
|
9
14
|
const endDate = value.end ? 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":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAMrD,OAAO,EAAC,mBAAmB,EAAC,wBAAqB;
|
|
1
|
+
{"version":3,"file":"relativeRangeDatePicker.js","sourceRoot":"../../../../../src","sources":["components/utils/validation/relativeRangeDatePicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAMrD,OAAO,EAAC,mBAAmB,EAAC,wBAAqB;AAEjD,OAAO,EAAC,IAAI,EAAC,wBAAe;AAO5B,MAAM,UAAU,wBAAwB,CACpC,KAA0C,EAC1C,mBAAwC,EACxC,QAA8B,EAC9B,QAA8B,EAC9B,iBAAoF,EACpF,QAAgB,EAChB,IAAsC,IAAI;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,aAAa,CAAC,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,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7F,MAAM,qBAAqB,GAAG,mBAAmB,CAC7C,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,mBAAmB,CAC3C,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"]}
|
|
@@ -12,8 +12,7 @@ export function useEventHandler(handler) {
|
|
|
12
12
|
}, [handler]);
|
|
13
13
|
// @ts-expect-error
|
|
14
14
|
return React.useCallback((...args) => {
|
|
15
|
-
|
|
16
|
-
return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.call(ref, ...args);
|
|
15
|
+
return ref.current?.(...args);
|
|
17
16
|
}, []);
|
|
18
17
|
}
|
|
19
18
|
//# sourceMappingURL=useEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,KAAK,CAAC,WAAW,CAAI,CAAC,GAAG,IAAI,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"useEventHandler.js","sourceRoot":"../../../src","sources":["hooks/useEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAqB,OAAW;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAgB,OAAO,CAAC,CAAC;IACjD,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,mBAAmB;IACnB,OAAO,KAAK,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;
|
|
@@ -13,7 +13,7 @@ export function useMove(props) {
|
|
|
13
13
|
}
|
|
14
14
|
if (!state.current.isMoving) {
|
|
15
15
|
state.current.isMoving = true;
|
|
16
|
-
onMoveStart
|
|
16
|
+
onMoveStart?.({
|
|
17
17
|
type: 'movestart',
|
|
18
18
|
pointerType,
|
|
19
19
|
shiftKey: originalEvent.shiftKey,
|
|
@@ -22,7 +22,7 @@ export function useMove(props) {
|
|
|
22
22
|
altKey: originalEvent.altKey,
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
|
-
onMove
|
|
25
|
+
onMove?.({
|
|
26
26
|
type: 'move',
|
|
27
27
|
pointerType,
|
|
28
28
|
deltaX,
|
|
@@ -36,7 +36,7 @@ export function useMove(props) {
|
|
|
36
36
|
const end = useEventHandler((originalEvent, pointerType) => {
|
|
37
37
|
if (state.current.isMoving) {
|
|
38
38
|
state.current.isMoving = false;
|
|
39
|
-
onMoveEnd
|
|
39
|
+
onMoveEnd?.({
|
|
40
40
|
type: 'moveend',
|
|
41
41
|
pointerType,
|
|
42
42
|
shiftKey: originalEvent.shiftKey,
|
|
@@ -55,9 +55,8 @@ export function useMove(props) {
|
|
|
55
55
|
e.preventDefault();
|
|
56
56
|
state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
|
|
57
57
|
const handleMouseMove = (ev) => {
|
|
58
|
-
var _a, _b;
|
|
59
58
|
if (ev.buttons === 0) {
|
|
60
|
-
move(ev, ev.pageX - (
|
|
59
|
+
move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), 'mouse');
|
|
61
60
|
state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
|
|
62
61
|
}
|
|
63
62
|
};
|
|
@@ -81,11 +80,10 @@ export function useMove(props) {
|
|
|
81
80
|
state.current.lastPosition = { pageX, pageY };
|
|
82
81
|
e.preventDefault();
|
|
83
82
|
const handleTouchMove = (ev) => {
|
|
84
|
-
var _a, _b;
|
|
85
83
|
const touch = [...ev.changedTouches].findIndex((el) => el.identifier === state.current.id);
|
|
86
84
|
if (touch !== -1) {
|
|
87
85
|
const { pageX, pageY } = e.changedTouches[touch];
|
|
88
|
-
move(ev, pageX - (
|
|
86
|
+
move(ev, pageX - (state.current.lastPosition?.pageX || 0), pageY - (state.current.lastPosition?.pageY || 0), 'touch');
|
|
89
87
|
state.current.lastPosition = { pageX, pageY };
|
|
90
88
|
}
|
|
91
89
|
};
|
|
@@ -112,9 +110,8 @@ export function useMove(props) {
|
|
|
112
110
|
state.current.id = e.pointerId;
|
|
113
111
|
state.current.lastPosition = { pageX: e.pageX, pageY: e.pageY };
|
|
114
112
|
const handlePointerMove = (ev) => {
|
|
115
|
-
var _a, _b;
|
|
116
113
|
if (ev.pointerId === state.current.id) {
|
|
117
|
-
move(ev, ev.pageX - (
|
|
114
|
+
move(ev, ev.pageX - (state.current.lastPosition?.pageX || 0), ev.pageY - (state.current.lastPosition?.pageY || 0), (ev.pointerType || 'mouse'));
|
|
118
115
|
state.current.lastPosition = { pageX: ev.pageX, pageY: ev.pageY };
|
|
119
116
|
}
|
|
120
117
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMove.js","sourceRoot":"../../../src","sources":["hooks/useMove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,eAAe,EAAC,6BAA0B;AAmClD,MAAM,UAAU,OAAO,CAAC,KAAiB;IACrC,MAAM,EAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAC,GAAG,KAAK,CAAC;IAE/C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAIvB;QACC,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;QAClB,EAAE,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,eAAe,CACxB,CAAC,aAAwB,EAAE,MAAc,EAAE,MAAc,EAAE,WAAwB,EAAE,EAAE;QACnF,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC9B,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG;gBACV,IAAI,EAAE,WAAW;gBACjB,WAAW;gBACX,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;aAC/B,CAAC,CAAC;QACP,CAAC;QACD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG;YACL,IAAI,EAAE,MAAM;YACZ,WAAW;YACX,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;SAC/B,CAAC,CAAC;IACP,CAAC,CACJ,CAAC;IAEF,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,aAAwB,EAAE,WAAwB,EAAE,EAAE;QAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC/B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW;gBACX,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;aAC/B,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACtB,MAAM,SAAS,GAAqC,EAAE,CAAC;QAEvD,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACtC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAC,CAAC;oBAE9D,MAAM,eAAe,GAAG,CAAC,EAAc,EAAE,EAAE;;wBACvC,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;4BACnB,IAAI,CACA,EAAE,EACF,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EACnD,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EACnD,OAAO,CACV,CAAC;4BACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;wBACpE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,aAAa,GAAG,CAAC,EAAc,EAAE,EAAE;wBACrC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAClB,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;4BACjB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;4BACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;wBACzD,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACtD,CAAC;YACL,CAAC,CAAC;YAEF,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;oBACtD,OAAO;gBACX,CAAC;gBAED,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChD,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC;gBAC9B,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;gBAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;gBAEnB,MAAM,eAAe,GAAG,CAAC,EAAc,EAAE,EAAE;;oBACvC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,SAAS,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAC7C,CAAC;oBACF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACf,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC/C,IAAI,CACA,EAAE,EACF,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EAChD,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EAChD,OAAO,CACV,CAAC;wBACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;oBAChD,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,cAAc,GAAG,CAAC,EAAc,EAAE,EAAE;oBACtC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,SAAS,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAC7C,CAAC;oBACF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACf,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;wBACjB,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;wBACxB,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;wBACzD,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;wBACvD,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;oBAC9D,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBACtD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACpD,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAC3D,CAAC,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;oBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC/B,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;oBAC/B,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAC,CAAC;oBAE9D,MAAM,iBAAiB,GAAG,CAAC,EAAgB,EAAE,EAAE;;wBAC3C,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;4BACpC,IAAI,CACA,EAAE,EACF,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EACnD,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,CAAC,YAAY,0CAAE,KAAK,KAAI,CAAC,CAAC,EACnD,CAAC,EAAE,CAAC,WAAW,IAAI,OAAO,CAAgB,CAC7C,CAAC;4BACF,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,EAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAC,CAAC;wBACpE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,eAAe,GAAG,CAAC,EAAgB,EAAE,EAAE;wBACzC,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;4BACpC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,IAAI,OAAO,CAAgB,CAAC,CAAC;4BACpD,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;4BACxB,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;4BAC7D,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;4BACzD,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;wBACjE,CAAC;oBACL,CAAC,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;oBAC1D,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBACtD,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC,CAAC;QACN,CAAC;QAED,MAAM,kBAAkB,GAAG,CAAC,CAAY,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;YACxE,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACpC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;YACxB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;gBACZ,KAAK,WAAW,CAAC,CAAC,CAAC;oBACf,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,MAAM;gBACV,CAAC;gBACD,KAAK,YAAY,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,MAAM;gBACV,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACb,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM;gBACV,CAAC;gBACD,KAAK,WAAW,CAAC,CAAC,CAAC;oBACf,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,EAAC,SAAS,EAAC,CAAC;IACvB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACpB,CAAC","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"]}
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
/* FIXME: use the same hook from @gravity-ui/uikit */
|
|
3
3
|
export function useResizeObserver({ ref, onResize, box, }) {
|
|
4
4
|
React.useEffect(() => {
|
|
5
|
-
const element = ref
|
|
5
|
+
const element = ref?.current;
|
|
6
6
|
if (!element) {
|
|
7
7
|
return undefined;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"useResizeObserver.js","sourceRoot":"../../../src","sources":["hooks/useResizeObserver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAAoB,EACjD,GAAG,EACH,QAAQ,EACR,GAAG,GACqB;IACxB,KAAK,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/esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"module","version":"
|
|
1
|
+
{"type":"module","version":"4.1.0","sideEffects":["*.css","*.scss"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/date-components",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -62,7 +62,8 @@
|
|
|
62
62
|
"build": "gulp",
|
|
63
63
|
"start": "storybook dev -p 7070",
|
|
64
64
|
"build-storybook": "storybook build -c .storybook -o storybook-static",
|
|
65
|
-
"prepublishOnly": "npm run build"
|
|
65
|
+
"prepublishOnly": "npm run build",
|
|
66
|
+
"knip": "knip"
|
|
66
67
|
},
|
|
67
68
|
"dependencies": {
|
|
68
69
|
"@bem-react/classname": "^1.6.0",
|
|
@@ -70,47 +71,50 @@
|
|
|
70
71
|
"tslib": "^2.6.2"
|
|
71
72
|
},
|
|
72
73
|
"devDependencies": {
|
|
73
|
-
"@commitlint/cli": "^
|
|
74
|
-
"@commitlint/config-conventional": "^
|
|
75
|
-
"@gravity-ui/eslint-config": "^4.
|
|
74
|
+
"@commitlint/cli": "^21.2.1",
|
|
75
|
+
"@commitlint/config-conventional": "^21.2.0",
|
|
76
|
+
"@gravity-ui/eslint-config": "^4.3.1",
|
|
76
77
|
"@gravity-ui/gulp-utils": "^1.0.3",
|
|
77
78
|
"@gravity-ui/prettier-config": "^1.1.0",
|
|
79
|
+
"@gravity-ui/readme-validator": "^1.3.0",
|
|
78
80
|
"@gravity-ui/stylelint-config": "^5.0.0",
|
|
79
81
|
"@gravity-ui/tsconfig": "^1.0.0",
|
|
80
|
-
"@storybook/addon-a11y": "^10.
|
|
81
|
-
"@storybook/addon-docs": "^10.
|
|
82
|
-
"@storybook/addon-vitest": "^10.
|
|
83
|
-
"@storybook/react-vite": "^10.
|
|
82
|
+
"@storybook/addon-a11y": "^10.5.5",
|
|
83
|
+
"@storybook/addon-docs": "^10.5.5",
|
|
84
|
+
"@storybook/addon-vitest": "^10.5.5",
|
|
85
|
+
"@storybook/react-vite": "^10.5.5",
|
|
84
86
|
"@types/node": "^22",
|
|
85
|
-
"@types/react": "^18.3.
|
|
87
|
+
"@types/react": "^18.3.31",
|
|
86
88
|
"@types/react-dom": "^18.3.7",
|
|
87
|
-
"@vitejs/plugin-react": "^
|
|
88
|
-
"@vitest/browser-playwright": "^4.
|
|
89
|
-
"@vitest/coverage-v8": "^4.
|
|
90
|
-
"@vitest/eslint-plugin": "^1.6.
|
|
91
|
-
"@vitest/ui": "^4.
|
|
92
|
-
"eslint": "^9.39.
|
|
89
|
+
"@vitejs/plugin-react": "^6.0.5",
|
|
90
|
+
"@vitest/browser-playwright": "^4.1.10",
|
|
91
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
92
|
+
"@vitest/eslint-plugin": "^1.6.24",
|
|
93
|
+
"@vitest/ui": "^4.1.10",
|
|
94
|
+
"eslint": "^9.39.5",
|
|
93
95
|
"eslint-plugin-react-compiler": "19.1.0-rc.2",
|
|
94
|
-
"eslint-plugin-storybook": "^10.
|
|
96
|
+
"eslint-plugin-storybook": "^10.5.5",
|
|
95
97
|
"globals": "^16.5.0",
|
|
96
98
|
"gulp": "^5.0.1",
|
|
97
99
|
"gulp-cli": "^3.1.0",
|
|
98
100
|
"gulp-sass": "^6.0.1",
|
|
99
101
|
"gulp-sourcemaps": "^3.0.0",
|
|
100
102
|
"husky": "^9.1.7",
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
103
|
+
"knip": "^6.31.0",
|
|
104
|
+
"nano-staged": "^1.0.2",
|
|
105
|
+
"npm-run-all2": "^9.0.3",
|
|
106
|
+
"playwright": "^1.62.1",
|
|
107
|
+
"prettier": "^3.9.6",
|
|
105
108
|
"react": "^18.3.1",
|
|
106
109
|
"react-dom": "^18.3.1",
|
|
107
|
-
"sass": "^1.
|
|
108
|
-
"storybook": "10.
|
|
110
|
+
"sass": "^1.102.0",
|
|
111
|
+
"storybook": "10.5.5",
|
|
109
112
|
"stylelint": "^16.26.1",
|
|
110
|
-
"stylelint-use-logical": "^2.1.
|
|
111
|
-
"typescript": "^
|
|
112
|
-
"
|
|
113
|
-
"vitest
|
|
113
|
+
"stylelint-use-logical": "^2.1.3",
|
|
114
|
+
"typescript": "^6.0.3",
|
|
115
|
+
"vite": "^8.2.0",
|
|
116
|
+
"vitest": "^4.1.10",
|
|
117
|
+
"vitest-browser-react": "^2.2.0"
|
|
114
118
|
},
|
|
115
119
|
"peerDependencies": {
|
|
116
120
|
"@gravity-ui/date-utils": "^2.6.0",
|
|
@@ -134,5 +138,8 @@
|
|
|
134
138
|
"*.{md,json,yml,yaml}": [
|
|
135
139
|
"prettier --write"
|
|
136
140
|
]
|
|
141
|
+
},
|
|
142
|
+
"overrides": {
|
|
143
|
+
"typescript": "$typescript"
|
|
137
144
|
}
|
|
138
145
|
}
|