@gravity-ui/date-components 3.4.2 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/cjs/components/Calendar/Calendar.d.ts +6 -2
- package/dist/cjs/components/Calendar/Calendar.js +1 -1
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarView/Calendar.css +3 -0
- package/dist/cjs/components/CalendarView/Calendar.css.map +1 -1
- package/dist/cjs/components/CalendarView/CalendarView.d.ts +2 -1
- package/dist/cjs/components/CalendarView/CalendarView.js +8 -8
- package/dist/cjs/components/CalendarView/CalendarView.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/types.d.ts +5 -3
- package/dist/cjs/components/CalendarView/hooks/types.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
- package/dist/cjs/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
- package/dist/cjs/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +7 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
- package/dist/cjs/components/CalendarView/hooks/useCalendarState.js +74 -30
- package/dist/cjs/components/CalendarView/hooks/useCalendarState.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js +16 -9
- package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
- package/dist/cjs/components/DateField/DateField.d.ts +1 -1
- package/dist/cjs/components/DateField/DateField.js +5 -17
- package/dist/cjs/components/DateField/DateField.js.map +1 -1
- package/dist/cjs/components/DateField/IncompleteDate.d.ts +28 -0
- package/dist/cjs/components/DateField/IncompleteDate.js +116 -0
- package/dist/cjs/components/DateField/IncompleteDate.js.map +1 -0
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +18 -249
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +250 -54
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.js.map +1 -1
- package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +20 -2
- package/dist/cjs/components/DateField/hooks/useDateFieldState.js +84 -118
- package/dist/cjs/components/DateField/hooks/useDateFieldState.js.map +1 -1
- package/dist/cjs/components/DateField/hooks/useFocusManager.d.ts +29 -0
- package/dist/cjs/components/DateField/hooks/useFocusManager.js +116 -0
- package/dist/cjs/components/DateField/hooks/useFocusManager.js.map +1 -0
- package/dist/cjs/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
- package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js +236 -0
- package/dist/cjs/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
- package/dist/cjs/components/DateField/i18n/ru.json +1 -1
- package/dist/cjs/components/DateField/index.d.ts +2 -1
- package/dist/cjs/components/DateField/index.js +1 -1
- package/dist/cjs/components/DateField/index.js.map +1 -1
- package/dist/cjs/components/DateField/types.d.ts +2 -22
- package/dist/cjs/components/DateField/types.js.map +1 -1
- package/dist/cjs/components/DateField/utils.d.ts +21 -34
- package/dist/cjs/components/DateField/utils.js +180 -132
- package/dist/cjs/components/DateField/utils.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.d.ts +3 -3
- package/dist/cjs/components/DatePicker/DatePicker.js +3 -4
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/DatePicker/MobileCalendar.d.ts +1 -1
- package/dist/cjs/components/DatePicker/MobileCalendar.js +3 -5
- package/dist/cjs/components/DatePicker/MobileCalendar.js.map +1 -1
- package/dist/cjs/components/DatePicker/StubButton.d.ts +1 -1
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
- package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +30 -17
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
- package/dist/cjs/components/HiddenInput/HiddenInput.d.ts +2 -5
- package/dist/cjs/components/HiddenInput/HiddenInput.js +2 -4
- package/dist/cjs/components/HiddenInput/HiddenInput.js.map +1 -1
- package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +2 -2
- package/dist/cjs/components/RangeCalendar/RangeCalendar.js +2 -3
- package/dist/cjs/components/RangeCalendar/RangeCalendar.js.map +1 -1
- package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +1 -1
- package/dist/cjs/components/RangeDateField/RangeDateField.js +6 -19
- package/dist/cjs/components/RangeDateField/RangeDateField.js.map +1 -1
- package/dist/cjs/components/RangeDateField/index.d.ts +0 -1
- package/dist/cjs/components/RangeDateField/index.js +0 -1
- package/dist/cjs/components/RangeDateField/index.js.map +1 -1
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js +4 -5
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js +3 -4
- package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
- package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js +4 -5
- package/dist/cjs/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
- package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
- package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
- package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -21
- package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
- package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
- package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +0 -3
- package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
- package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/utils/span.d.ts +2 -1
- package/dist/cjs/components/RangeDateSelection/utils/span.js.map +1 -1
- package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +1 -1
- package/dist/cjs/components/RelativeDateField/RelativeDateField.js +3 -40
- package/dist/cjs/components/RelativeDateField/RelativeDateField.js.map +1 -1
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -21
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -16
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +34 -7
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +9 -12
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +27 -16
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/types.d.ts +3 -1
- package/dist/cjs/components/RelativeRangeDatePicker/types.js.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +2 -2
- package/dist/cjs/components/RelativeRangeDatePicker/utils.js +32 -9
- package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
- package/dist/cjs/components/utils/constants.d.ts +2 -0
- package/dist/cjs/components/utils/constants.js +7 -1
- package/dist/cjs/components/utils/constants.js.map +1 -1
- package/dist/cjs/components/utils/dates.d.ts +6 -1
- package/dist/cjs/components/utils/dates.js +6 -1
- package/dist/cjs/components/utils/dates.js.map +1 -1
- package/dist/cjs/components/utils/filterDOMProps.js +1 -1
- package/dist/cjs/components/utils/filterDOMProps.js.map +1 -1
- package/dist/cjs/components/utils/mergeProps.js +1 -1
- package/dist/cjs/components/utils/mergeProps.js.map +1 -1
- package/dist/cjs/components/utils/validation/datePicker.js +1 -1
- package/dist/cjs/components/utils/validation/datePicker.js.map +1 -1
- package/dist/cjs/components/utils/validation/i18n/ru.json +2 -2
- package/dist/cjs/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
- package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js +6 -1
- package/dist/cjs/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
- package/dist/cjs/hooks/useEventHandler.js +1 -2
- package/dist/cjs/hooks/useEventHandler.js.map +1 -1
- package/dist/cjs/hooks/useMove.d.ts +2 -2
- package/dist/cjs/hooks/useMove.js +6 -9
- package/dist/cjs/hooks/useMove.js.map +1 -1
- package/dist/cjs/hooks/useResizeObserver.js +1 -1
- package/dist/cjs/hooks/useResizeObserver.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/docs/INDEX.md +131 -0
- package/dist/docs/components/Calendar.md +125 -0
- package/dist/docs/components/DateField.md +206 -0
- package/dist/docs/components/DatePicker.md +194 -0
- package/dist/docs/components/RangeCalendar.md +125 -0
- package/dist/docs/components/RelativeDateField.md +73 -0
- package/dist/docs/components/RelativeDatePicker.md +59 -0
- package/dist/esm/components/Calendar/Calendar.d.ts +6 -2
- package/dist/esm/components/Calendar/Calendar.js +1 -1
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/CalendarView/Calendar.css +3 -0
- package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
- package/dist/esm/components/CalendarView/CalendarView.d.ts +2 -1
- package/dist/esm/components/CalendarView/CalendarView.js +8 -8
- package/dist/esm/components/CalendarView/CalendarView.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/types.d.ts +5 -3
- package/dist/esm/components/CalendarView/hooks/types.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js +1 -2
- package/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js +10 -3
- package/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +7 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarState.d.ts +5 -3
- package/dist/esm/components/CalendarView/hooks/useCalendarState.js +74 -30
- package/dist/esm/components/CalendarView/hooks/useCalendarState.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +16 -10
- package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
- package/dist/esm/components/DateField/DateField.d.ts +1 -1
- package/dist/esm/components/DateField/DateField.js +6 -18
- package/dist/esm/components/DateField/DateField.js.map +1 -1
- package/dist/esm/components/DateField/IncompleteDate.d.ts +28 -0
- package/dist/esm/components/DateField/IncompleteDate.js +112 -0
- package/dist/esm/components/DateField/IncompleteDate.js.map +1 -0
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +34 -68
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +17 -248
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js.map +1 -1
- package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +2 -0
- package/dist/esm/components/DateField/hooks/useDateFieldProps.js +250 -54
- package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
- package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +20 -2
- package/dist/esm/components/DateField/hooks/useDateFieldState.js +85 -119
- package/dist/esm/components/DateField/hooks/useDateFieldState.js.map +1 -1
- package/dist/esm/components/DateField/hooks/useFocusManager.d.ts +29 -0
- package/dist/esm/components/DateField/hooks/useFocusManager.js +112 -0
- package/dist/esm/components/DateField/hooks/useFocusManager.js.map +1 -0
- package/dist/esm/components/{RangeDateField → DateField}/hooks/useRangeDateFieldState.d.ts +1 -1
- package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js +232 -0
- package/dist/esm/components/DateField/hooks/useRangeDateFieldState.js.map +1 -0
- package/dist/esm/components/DateField/i18n/ru.json +1 -1
- package/dist/esm/components/DateField/index.d.ts +2 -1
- package/dist/esm/components/DateField/index.js +1 -1
- package/dist/esm/components/DateField/index.js.map +1 -1
- package/dist/esm/components/DateField/types.d.ts +2 -22
- package/dist/esm/components/DateField/types.js.map +1 -1
- package/dist/esm/components/DateField/utils.d.ts +21 -34
- package/dist/esm/components/DateField/utils.js +179 -125
- package/dist/esm/components/DateField/utils.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.d.ts +3 -3
- package/dist/esm/components/DatePicker/DatePicker.js +3 -5
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/MobileCalendar.d.ts +1 -1
- package/dist/esm/components/DatePicker/MobileCalendar.js +3 -5
- package/dist/esm/components/DatePicker/MobileCalendar.js.map +1 -1
- package/dist/esm/components/DatePicker/StubButton.d.ts +1 -1
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +1 -1
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +15 -6
- package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js.map +1 -1
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +2 -2
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +30 -18
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
- package/dist/esm/components/HiddenInput/HiddenInput.d.ts +2 -5
- package/dist/esm/components/HiddenInput/HiddenInput.js +3 -4
- package/dist/esm/components/HiddenInput/HiddenInput.js.map +1 -1
- package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +2 -2
- package/dist/esm/components/RangeCalendar/RangeCalendar.js +2 -3
- package/dist/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
- package/dist/esm/components/RangeDateField/RangeDateField.d.ts +1 -1
- package/dist/esm/components/RangeDateField/RangeDateField.js +7 -20
- package/dist/esm/components/RangeDateField/RangeDateField.js.map +1 -1
- package/dist/esm/components/RangeDateField/index.d.ts +0 -1
- package/dist/esm/components/RangeDateField/index.js +0 -1
- package/dist/esm/components/RangeDateField/index.js.map +1 -1
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.d.ts +2 -1
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +4 -6
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.js.map +1 -1
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +1 -1
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +2 -3
- package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/RangeDateSelection.d.ts +1 -1
- package/dist/esm/components/RangeDateSelection/RangeDateSelection.js +4 -5
- package/dist/esm/components/RangeDateSelection/RangeDateSelection.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.d.ts +2 -1
- package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.d.ts +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ruler/Ruler.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js +2 -2
- package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.d.ts +2 -1
- package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js +12 -22
- package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/MiddleTicks.d.ts +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/SlitTicks.d.ts +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.d.ts +2 -2
- package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.d.ts +3 -4
- package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +1 -2
- package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +9 -10
- package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/utils/span.d.ts +2 -1
- package/dist/esm/components/RangeDateSelection/utils/span.js.map +1 -1
- package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +1 -1
- package/dist/esm/components/RelativeDateField/RelativeDateField.js +4 -40
- package/dist/esm/components/RelativeDateField/RelativeDateField.js.map +1 -1
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.d.ts +7 -2
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +71 -9
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js.map +1 -1
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +2 -0
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +48 -34
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +1 -1
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +7 -4
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.d.ts +1 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +52 -22
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js.map +1 -1
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +9 -10
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +2 -1
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +13 -5
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.d.ts +2 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js +12 -6
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +6 -8
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.d.ts +5 -3
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js +18 -17
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.d.ts +5 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js +33 -7
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +3 -3
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +19 -18
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +6 -9
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +8 -10
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +2 -2
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +9 -4
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +26 -15
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +3 -3
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +3 -4
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +8 -7
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/types.d.ts +3 -1
- package/dist/esm/components/RelativeRangeDatePicker/types.js.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +2 -2
- package/dist/esm/components/RelativeRangeDatePicker/utils.js +33 -9
- package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
- package/dist/esm/components/utils/constants.d.ts +2 -0
- package/dist/esm/components/utils/constants.js +6 -0
- package/dist/esm/components/utils/constants.js.map +1 -1
- package/dist/esm/components/utils/dates.d.ts +6 -1
- package/dist/esm/components/utils/dates.js +5 -1
- package/dist/esm/components/utils/dates.js.map +1 -1
- package/dist/esm/components/utils/filterDOMProps.js +1 -1
- package/dist/esm/components/utils/filterDOMProps.js.map +1 -1
- package/dist/esm/components/utils/mergeProps.js +1 -1
- package/dist/esm/components/utils/mergeProps.js.map +1 -1
- package/dist/esm/components/utils/validation/datePicker.js +1 -1
- package/dist/esm/components/utils/validation/datePicker.js.map +1 -1
- package/dist/esm/components/utils/validation/i18n/ru.json +2 -2
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.d.ts +7 -11
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.js +6 -1
- package/dist/esm/components/utils/validation/relativeRangeDatePicker.js.map +1 -1
- package/dist/esm/hooks/useEventHandler.js +1 -2
- package/dist/esm/hooks/useEventHandler.js.map +1 -1
- package/dist/esm/hooks/useMove.d.ts +2 -2
- package/dist/esm/hooks/useMove.js +6 -9
- package/dist/esm/hooks/useMove.js.map +1 -1
- package/dist/esm/hooks/useResizeObserver.js +1 -1
- package/dist/esm/hooks/useResizeObserver.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/package.json +34 -27
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -224
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -9
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +0 -42
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/index.d.ts +0 -3
- package/dist/cjs/components/RangeDateField/utils/index.js +0 -7
- package/dist/cjs/components/RangeDateField/utils/index.js.map +0 -1
- package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +0 -3
- package/dist/cjs/components/RangeDateField/utils/isValidRange.js +0 -7
- package/dist/cjs/components/RangeDateField/utils/isValidRange.js.map +0 -1
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +0 -220
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +0 -5
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +0 -6
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +0 -5
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +0 -39
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/index.d.ts +0 -3
- package/dist/esm/components/RangeDateField/utils/index.js +0 -4
- package/dist/esm/components/RangeDateField/utils/index.js.map +0 -1
- package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +0 -3
- package/dist/esm/components/RangeDateField/utils/isValidRange.js +0 -4
- package/dist/esm/components/RangeDateField/utils/isValidRange.js.map +0 -1
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useRangeDateFieldState = useRangeDateFieldState;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
-
const uikit_1 = require("@gravity-ui/uikit");
|
|
7
|
-
const DateField_1 = require("../../DateField/index.js");
|
|
8
|
-
const utils_1 = require("../../DateField/utils.js");
|
|
9
|
-
const dates_1 = require("../../utils/dates.js");
|
|
10
|
-
const useDefaultTimeZone_1 = require("../../utils/useDefaultTimeZone.js");
|
|
11
|
-
const utils_2 = require("../utils/index.js");
|
|
12
|
-
const RANGE_FORMAT_DELIMITER = ' — ';
|
|
13
|
-
function useRangeDateFieldState(props) {
|
|
14
|
-
var _a, _b, _c, _d, _e;
|
|
15
|
-
const [value, setRange] = (0, uikit_1.useControlledState)(props.value, props.defaultValue || null, props.onUpdate);
|
|
16
|
-
const inputTimeZone = (0, useDefaultTimeZone_1.useDefaultTimeZone)(((_a = props.value) === null || _a === void 0 ? void 0 : _a.start) || ((_b = props.defaultValue) === null || _b === void 0 ? void 0 : _b.start) || props.placeholderValue);
|
|
17
|
-
const timeZone = props.timeZone || inputTimeZone;
|
|
18
|
-
const handleUpdateRange = (v) => {
|
|
19
|
-
setRange(v ? { start: v.start.timeZone(inputTimeZone), end: v.end.timeZone(inputTimeZone) } : v);
|
|
20
|
-
};
|
|
21
|
-
const [placeholderDate, setPlaceholderDate] = react_1.default.useState(() => {
|
|
22
|
-
return (0, utils_2.createPlaceholderRangeValue)({
|
|
23
|
-
placeholderValue: props.placeholderValue,
|
|
24
|
-
timeZone,
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
const format = props.format || 'L';
|
|
28
|
-
const delimiter = (_c = props.delimiter) !== null && _c !== void 0 ? _c : RANGE_FORMAT_DELIMITER;
|
|
29
|
-
const sections = (0, utils_1.useFormatSections)(format);
|
|
30
|
-
const formatInfo = react_1.default.useMemo(() => (0, utils_1.getFormatInfo)(sections), [sections]);
|
|
31
|
-
const allSegments = formatInfo.availableUnits;
|
|
32
|
-
// eslint-disable-next-line prefer-const
|
|
33
|
-
let [validSegments, setValidSegments] = react_1.default.useState(() => (value ? { start: Object.assign({}, allSegments), end: Object.assign({}, allSegments) } : { start: {}, end: {} }));
|
|
34
|
-
if (value &&
|
|
35
|
-
(!(0, utils_1.isAllSegmentsValid)(allSegments, validSegments.start) ||
|
|
36
|
-
!(0, utils_1.isAllSegmentsValid)(allSegments, validSegments.end))) {
|
|
37
|
-
setValidSegments({ start: Object.assign({}, allSegments), end: Object.assign({}, allSegments) });
|
|
38
|
-
}
|
|
39
|
-
if (!value &&
|
|
40
|
-
Object.keys(allSegments).length > 0 &&
|
|
41
|
-
(0, utils_1.isAllSegmentsValid)(allSegments, validSegments.start) &&
|
|
42
|
-
Object.keys(validSegments.start).length === Object.keys(allSegments).length &&
|
|
43
|
-
(0, utils_1.isAllSegmentsValid)(allSegments, validSegments.end) &&
|
|
44
|
-
Object.keys(validSegments.end).length === Object.keys(allSegments).length) {
|
|
45
|
-
validSegments = { start: {}, end: {} };
|
|
46
|
-
setValidSegments(validSegments);
|
|
47
|
-
setPlaceholderDate((0, utils_2.createPlaceholderRangeValue)({
|
|
48
|
-
placeholderValue: props.placeholderValue,
|
|
49
|
-
timeZone,
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
const { lang } = (0, uikit_1.useLang)();
|
|
53
|
-
const displayValue = value &&
|
|
54
|
-
value.start.isValid() &&
|
|
55
|
-
value.end.isValid() &&
|
|
56
|
-
Object.keys(validSegments.start).length >= Object.keys(allSegments).length &&
|
|
57
|
-
Object.keys(validSegments.end).length >= Object.keys(allSegments).length
|
|
58
|
-
? {
|
|
59
|
-
start: value.start.timeZone(timeZone).locale(lang),
|
|
60
|
-
end: value.end.timeZone(timeZone).locale(lang),
|
|
61
|
-
}
|
|
62
|
-
: {
|
|
63
|
-
start: placeholderDate.start.timeZone(timeZone).locale(lang),
|
|
64
|
-
end: placeholderDate.end.timeZone(timeZone).locale(lang),
|
|
65
|
-
};
|
|
66
|
-
const sectionsState = useSectionsState(sections, displayValue, validSegments, delimiter);
|
|
67
|
-
const [selectedSections, setSelectedSections] = react_1.default.useState(-1);
|
|
68
|
-
const selectedSectionIndexes = react_1.default.useMemo(() => {
|
|
69
|
-
if (selectedSections === -1) {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
if (selectedSections === 'all') {
|
|
73
|
-
return {
|
|
74
|
-
startIndex: 0,
|
|
75
|
-
endIndex: sectionsState.editableSections.length - 1,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
if (typeof selectedSections === 'number') {
|
|
79
|
-
return { startIndex: selectedSections, endIndex: selectedSections };
|
|
80
|
-
}
|
|
81
|
-
if (typeof selectedSections === 'string') {
|
|
82
|
-
const selectedSectionIndex = sectionsState.editableSections.findIndex((section) => section.type === selectedSections);
|
|
83
|
-
return { startIndex: selectedSectionIndex, endIndex: selectedSectionIndex };
|
|
84
|
-
}
|
|
85
|
-
return selectedSections;
|
|
86
|
-
}, [selectedSections, sectionsState.editableSections]);
|
|
87
|
-
function setValue(newValue) {
|
|
88
|
-
if (props.disabled || props.readOnly) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
if ((0, utils_1.isAllSegmentsValid)(allSegments, validSegments.start) &&
|
|
92
|
-
(0, utils_1.isAllSegmentsValid)(allSegments, validSegments.end)) {
|
|
93
|
-
if (!value || !(newValue.start.isSame(value.start) && newValue.end.isSame(value.end))) {
|
|
94
|
-
handleUpdateRange({
|
|
95
|
-
start: (0, utils_1.adjustDateToFormat)(newValue.start, formatInfo, 'startOf'),
|
|
96
|
-
end: (0, utils_1.adjustDateToFormat)(newValue.end, formatInfo, 'endOf'),
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
if (value) {
|
|
102
|
-
handleUpdateRange(null);
|
|
103
|
-
}
|
|
104
|
-
setPlaceholderDate(newValue);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
function markValid(portion, part) {
|
|
108
|
-
validSegments[portion] = (0, utils_1.markValidSection)(allSegments, validSegments[portion], part);
|
|
109
|
-
setValidSegments(Object.assign(Object.assign({}, validSegments), { [portion]: Object.assign({}, validSegments[portion]) }));
|
|
110
|
-
}
|
|
111
|
-
function setSection(sectionIndex, amount) {
|
|
112
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
113
|
-
const section = sectionsState.editableSections[sectionIndex];
|
|
114
|
-
markValid(portion, section.type);
|
|
115
|
-
setValue(Object.assign(Object.assign({}, displayValue), { [portion]: (0, utils_1.setSegment)(section, displayValue[portion], amount) }));
|
|
116
|
-
}
|
|
117
|
-
function adjustSection(sectionIndex, amount) {
|
|
118
|
-
const section = sectionsState.editableSections[sectionIndex];
|
|
119
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
120
|
-
if (validSegments[portion][section.type]) {
|
|
121
|
-
setValue(Object.assign(Object.assign({}, displayValue), { [portion]: (0, utils_1.addSegment)(section, displayValue[portion], amount) }));
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
markValid(portion, section.type);
|
|
125
|
-
if (Object.keys(validSegments[portion]).length >= Object.keys(allSegments).length) {
|
|
126
|
-
setValue(displayValue);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
function flushValidSection(sectionIndex) {
|
|
131
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
132
|
-
delete validSegments[portion][sectionsState.editableSections[sectionIndex].type];
|
|
133
|
-
setValidSegments(Object.assign(Object.assign({}, validSegments), { [portion]: Object.assign({}, validSegments[portion]) }));
|
|
134
|
-
}
|
|
135
|
-
function flushAllValidSections() {
|
|
136
|
-
validSegments = { start: {}, end: {} };
|
|
137
|
-
setValidSegments({ start: {}, end: {} });
|
|
138
|
-
}
|
|
139
|
-
function getSectionValue(sectionIndex) {
|
|
140
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
141
|
-
return displayValue[portion];
|
|
142
|
-
}
|
|
143
|
-
function setSectionValue(sectionIndex, currentValue) {
|
|
144
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
145
|
-
setValue(Object.assign(Object.assign({}, displayValue), { [portion]: currentValue }));
|
|
146
|
-
}
|
|
147
|
-
function createPlaceholder() {
|
|
148
|
-
return (0, utils_2.createPlaceholderRangeValue)({
|
|
149
|
-
placeholderValue: props.placeholderValue,
|
|
150
|
-
timeZone,
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
function setValueFromString(str) {
|
|
154
|
-
var _a;
|
|
155
|
-
const [startDate = '', endDate = ''] = str.split(delimiter);
|
|
156
|
-
const parseDate = (_a = props.parseDateFromString) !== null && _a !== void 0 ? _a : utils_1.parseDateFromString;
|
|
157
|
-
const start = parseDate(startDate, format, timeZone);
|
|
158
|
-
const end = parseDate(endDate, format, timeZone);
|
|
159
|
-
if (start.isValid() && end.isValid()) {
|
|
160
|
-
handleUpdateRange({ start, end });
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
return false;
|
|
164
|
-
}
|
|
165
|
-
const validationState = props.validationState ||
|
|
166
|
-
((0, dates_1.isInvalid)(value === null || value === void 0 ? void 0 : value.start, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
|
|
167
|
-
((0, dates_1.isInvalid)(value === null || value === void 0 ? void 0 : value.end, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
|
|
168
|
-
(value && !(0, utils_2.isValidRange)(value) ? 'invalid' : undefined) ||
|
|
169
|
-
(value && ((_d = props.isDateUnavailable) === null || _d === void 0 ? void 0 : _d.call(props, value.start)) ? 'invalid' : undefined) ||
|
|
170
|
-
(value && ((_e = props.isDateUnavailable) === null || _e === void 0 ? void 0 : _e.call(props, value.end)) ? 'invalid' : undefined);
|
|
171
|
-
return (0, DateField_1.useBaseDateFieldState)({
|
|
172
|
-
value,
|
|
173
|
-
displayValue,
|
|
174
|
-
placeholderValue: props.placeholderValue,
|
|
175
|
-
timeZone,
|
|
176
|
-
validationState,
|
|
177
|
-
editableSections: sectionsState.editableSections,
|
|
178
|
-
formatInfo,
|
|
179
|
-
readOnly: props.readOnly,
|
|
180
|
-
disabled: props.disabled,
|
|
181
|
-
selectedSectionIndexes,
|
|
182
|
-
selectedSections,
|
|
183
|
-
isEmpty: Object.keys(validSegments.start).length === 0 &&
|
|
184
|
-
Object.keys(validSegments.end).length === 0,
|
|
185
|
-
flushAllValidSections,
|
|
186
|
-
flushValidSection,
|
|
187
|
-
setSelectedSections,
|
|
188
|
-
setValue,
|
|
189
|
-
setDate: handleUpdateRange,
|
|
190
|
-
adjustSection,
|
|
191
|
-
setSection,
|
|
192
|
-
getSectionValue,
|
|
193
|
-
setSectionValue,
|
|
194
|
-
createPlaceholder,
|
|
195
|
-
setValueFromString,
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
function useSectionsState(sections, value, validSegments, delimiter) {
|
|
199
|
-
const [state, setState] = react_1.default.useState(() => {
|
|
200
|
-
return {
|
|
201
|
-
value,
|
|
202
|
-
sections,
|
|
203
|
-
validSegments,
|
|
204
|
-
delimiter,
|
|
205
|
-
editableSections: (0, utils_2.getRangeEditableSections)(sections, value, validSegments, delimiter),
|
|
206
|
-
};
|
|
207
|
-
});
|
|
208
|
-
if (sections !== state.sections ||
|
|
209
|
-
validSegments !== state.validSegments ||
|
|
210
|
-
!(value.start.isSame(state.value.start) && value.end.isSame(state.value.end)) ||
|
|
211
|
-
value.start.timeZone() !== state.value.start.timeZone() ||
|
|
212
|
-
value.start.locale() !== state.value.start.locale() ||
|
|
213
|
-
delimiter !== state.delimiter) {
|
|
214
|
-
setState({
|
|
215
|
-
value,
|
|
216
|
-
sections,
|
|
217
|
-
validSegments,
|
|
218
|
-
delimiter,
|
|
219
|
-
editableSections: (0, utils_2.getRangeEditableSections)(sections, value, validSegments, delimiter),
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
return state;
|
|
223
|
-
}
|
|
224
|
-
//# sourceMappingURL=useRangeDateFieldState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRangeDateFieldState.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/hooks/useRangeDateFieldState.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useControlledState, useLang} from '@gravity-ui/uikit';\n\nimport {useBaseDateFieldState} from '../../DateField';\nimport type {DateFieldState} from '../../DateField';\nimport type {DateFieldSectionType, DateFieldSectionWithoutPosition} from '../../DateField/types';\nimport type {EDITABLE_SEGMENTS} from '../../DateField/utils';\nimport {\n addSegment,\n adjustDateToFormat,\n getFormatInfo,\n isAllSegmentsValid,\n markValidSection,\n parseDateFromString,\n setSegment,\n useFormatSections,\n} from '../../DateField/utils';\nimport type {DateFieldBase} from '../../types/datePicker';\nimport type {RangeValue} from '../../types/inputs';\nimport {isInvalid} from '../../utils/dates';\nimport {useDefaultTimeZone} from '../../utils/useDefaultTimeZone';\nimport {createPlaceholderRangeValue, getRangeEditableSections, isValidRange} from '../utils';\n\nexport interface RangeDateFieldStateOptions extends DateFieldBase<RangeValue<DateTime>> {\n delimiter?: string;\n}\n\nconst RANGE_FORMAT_DELIMITER = ' — ';\n\nexport type RangeDateFieldState = DateFieldState<RangeValue<DateTime>>;\n\nexport function useRangeDateFieldState(props: RangeDateFieldStateOptions): RangeDateFieldState {\n const [value, setRange] = useControlledState(\n props.value,\n props.defaultValue || null,\n props.onUpdate,\n );\n\n const inputTimeZone = useDefaultTimeZone(\n props.value?.start || props.defaultValue?.start || props.placeholderValue,\n );\n const timeZone = props.timeZone || inputTimeZone;\n\n const handleUpdateRange = (v: RangeValue<DateTime> | null) => {\n setRange(\n v ? {start: v.start.timeZone(inputTimeZone), end: v.end.timeZone(inputTimeZone)} : v,\n );\n };\n\n const [placeholderDate, setPlaceholderDate] = React.useState<RangeValue<DateTime>>(() => {\n return createPlaceholderRangeValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n });\n });\n\n const format = props.format || 'L';\n const delimiter = props.delimiter ?? RANGE_FORMAT_DELIMITER;\n const sections = useFormatSections(format);\n const formatInfo = React.useMemo(() => getFormatInfo(sections), [sections]);\n\n const allSegments = formatInfo.availableUnits;\n\n // eslint-disable-next-line prefer-const\n let [validSegments, setValidSegments] = React.useState<RangeValue<typeof EDITABLE_SEGMENTS>>(\n () => (value ? {start: {...allSegments}, end: {...allSegments}} : {start: {}, end: {}}),\n );\n\n if (\n value &&\n (!isAllSegmentsValid(allSegments, validSegments.start) ||\n !isAllSegmentsValid(allSegments, validSegments.end))\n ) {\n setValidSegments({start: {...allSegments}, end: {...allSegments}});\n }\n\n if (\n !value &&\n Object.keys(allSegments).length > 0 &&\n isAllSegmentsValid(allSegments, validSegments.start) &&\n Object.keys(validSegments.start).length === Object.keys(allSegments).length &&\n isAllSegmentsValid(allSegments, validSegments.end) &&\n Object.keys(validSegments.end).length === Object.keys(allSegments).length\n ) {\n validSegments = {start: {}, end: {}};\n setValidSegments(validSegments);\n setPlaceholderDate(\n createPlaceholderRangeValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n }),\n );\n }\n\n const {lang} = useLang();\n const displayValue =\n value &&\n value.start.isValid() &&\n value.end.isValid() &&\n Object.keys(validSegments.start).length >= Object.keys(allSegments).length &&\n Object.keys(validSegments.end).length >= Object.keys(allSegments).length\n ? {\n start: value.start.timeZone(timeZone).locale(lang),\n end: value.end.timeZone(timeZone).locale(lang),\n }\n : {\n start: placeholderDate.start.timeZone(timeZone).locale(lang),\n end: placeholderDate.end.timeZone(timeZone).locale(lang),\n };\n const sectionsState = useSectionsState(sections, displayValue, validSegments, delimiter);\n\n const [selectedSections, setSelectedSections] = React.useState<number | 'all'>(-1);\n\n const selectedSectionIndexes = React.useMemo<{\n startIndex: number;\n endIndex: number;\n } | null>(() => {\n if (selectedSections === -1) {\n return null;\n }\n\n if (selectedSections === 'all') {\n return {\n startIndex: 0,\n endIndex: sectionsState.editableSections.length - 1,\n };\n }\n\n if (typeof selectedSections === 'number') {\n return {startIndex: selectedSections, endIndex: selectedSections};\n }\n\n if (typeof selectedSections === 'string') {\n const selectedSectionIndex = sectionsState.editableSections.findIndex(\n (section) => section.type === selectedSections,\n );\n\n return {startIndex: selectedSectionIndex, endIndex: selectedSectionIndex};\n }\n\n return selectedSections;\n }, [selectedSections, sectionsState.editableSections]);\n\n function setValue(newValue: RangeValue<DateTime>) {\n if (props.disabled || props.readOnly) {\n return;\n }\n\n if (\n isAllSegmentsValid(allSegments, validSegments.start) &&\n isAllSegmentsValid(allSegments, validSegments.end)\n ) {\n if (!value || !(newValue.start.isSame(value.start) && newValue.end.isSame(value.end))) {\n handleUpdateRange({\n start: adjustDateToFormat(newValue.start, formatInfo, 'startOf'),\n end: adjustDateToFormat(newValue.end, formatInfo, 'endOf'),\n });\n }\n } else {\n if (value) {\n handleUpdateRange(null);\n }\n setPlaceholderDate(newValue);\n }\n }\n\n function markValid(portion: 'start' | 'end', part: DateFieldSectionType) {\n validSegments[portion] = markValidSection(allSegments, validSegments[portion], part);\n setValidSegments({...validSegments, [portion]: {...validSegments[portion]}});\n }\n\n function setSection(sectionIndex: number, amount: number) {\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n const section = sectionsState.editableSections[sectionIndex];\n markValid(portion, section.type);\n setValue({\n ...displayValue,\n [portion]: setSegment(section, displayValue[portion], amount),\n });\n }\n\n function adjustSection(sectionIndex: number, amount: number) {\n const section = sectionsState.editableSections[sectionIndex];\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n if (validSegments[portion][section.type]) {\n setValue({\n ...displayValue,\n [portion]: addSegment(section, displayValue[portion], amount),\n });\n } else {\n markValid(portion, section.type);\n if (Object.keys(validSegments[portion]).length >= Object.keys(allSegments).length) {\n setValue(displayValue);\n }\n }\n }\n\n function flushValidSection(sectionIndex: number) {\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n delete validSegments[portion][sectionsState.editableSections[sectionIndex].type];\n setValidSegments({...validSegments, [portion]: {...validSegments[portion]}});\n }\n\n function flushAllValidSections() {\n validSegments = {start: {}, end: {}};\n setValidSegments({start: {}, end: {}});\n }\n\n function getSectionValue(sectionIndex: number) {\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n return displayValue[portion];\n }\n\n function setSectionValue(sectionIndex: number, currentValue: DateTime) {\n const portion = sectionIndex <= sections.length ? 'start' : 'end';\n setValue({...displayValue, [portion]: currentValue});\n }\n\n function createPlaceholder() {\n return createPlaceholderRangeValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n });\n }\n\n function setValueFromString(str: string) {\n const [startDate = '', endDate = ''] = str.split(delimiter);\n const parseDate = props.parseDateFromString ?? parseDateFromString;\n const start = parseDate(startDate, format, timeZone);\n const end = parseDate(endDate, format, timeZone);\n if (start.isValid() && end.isValid()) {\n handleUpdateRange({start, end});\n return true;\n }\n return false;\n }\n\n const validationState =\n props.validationState ||\n (isInvalid(value?.start, props.minValue, props.maxValue) ? 'invalid' : undefined) ||\n (isInvalid(value?.end, props.minValue, props.maxValue) ? 'invalid' : undefined) ||\n (value && !isValidRange(value) ? 'invalid' : undefined) ||\n (value && props.isDateUnavailable?.(value.start) ? 'invalid' : undefined) ||\n (value && props.isDateUnavailable?.(value.end) ? 'invalid' : undefined);\n\n return useBaseDateFieldState({\n value,\n displayValue,\n placeholderValue: props.placeholderValue,\n timeZone,\n validationState,\n editableSections: sectionsState.editableSections,\n formatInfo,\n readOnly: props.readOnly,\n disabled: props.disabled,\n selectedSectionIndexes,\n selectedSections,\n isEmpty:\n Object.keys(validSegments.start).length === 0 &&\n Object.keys(validSegments.end).length === 0,\n flushAllValidSections,\n flushValidSection,\n setSelectedSections,\n setValue,\n setDate: handleUpdateRange,\n adjustSection,\n setSection,\n getSectionValue,\n setSectionValue,\n createPlaceholder,\n setValueFromString,\n });\n}\n\nfunction useSectionsState(\n sections: DateFieldSectionWithoutPosition[],\n value: RangeValue<DateTime>,\n validSegments: RangeValue<typeof EDITABLE_SEGMENTS>,\n delimiter: string,\n) {\n const [state, setState] = React.useState(() => {\n return {\n value,\n sections,\n validSegments,\n delimiter,\n editableSections: getRangeEditableSections(sections, value, validSegments, delimiter),\n };\n });\n\n if (\n sections !== state.sections ||\n validSegments !== state.validSegments ||\n !(value.start.isSame(state.value.start) && value.end.isSame(state.value.end)) ||\n value.start.timeZone() !== state.value.start.timeZone() ||\n value.start.locale() !== state.value.start.locale() ||\n delimiter !== state.delimiter\n ) {\n setState({\n value,\n sections,\n validSegments,\n delimiter,\n editableSections: getRangeEditableSections(sections, value, validSegments, delimiter),\n });\n }\n\n return state;\n}\n"]}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { PlaceholderValueOptions } from "../../utils/dates.js";
|
|
2
|
-
export declare function createPlaceholderRangeValue({ placeholderValue, timeZone }: PlaceholderValueOptions): {
|
|
3
|
-
start: import("@gravity-ui/date-utils").DateTime;
|
|
4
|
-
end: import("@gravity-ui/date-utils").DateTime;
|
|
5
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPlaceholderRangeValue = createPlaceholderRangeValue;
|
|
4
|
-
const dates_1 = require("../../utils/dates.js");
|
|
5
|
-
function createPlaceholderRangeValue({ placeholderValue, timeZone }) {
|
|
6
|
-
const date = (0, dates_1.createPlaceholderValue)({ placeholderValue, timeZone });
|
|
7
|
-
return { start: date.startOf('day'), end: date.endOf('day') };
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=createPlaceholderRangeValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createPlaceholderRangeValue.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/utils/createPlaceholderRangeValue.ts"],"names":[],"mappings":";;AAGA,kEAGC;AAND,gDAAyD;AAGzD,SAAgB,2BAA2B,CAAC,EAAC,gBAAgB,EAAE,QAAQ,EAA0B;IAC7F,MAAM,IAAI,GAAG,IAAA,8BAAsB,EAAC,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","sourcesContent":["import {createPlaceholderValue} from '../../utils/dates';\nimport type {PlaceholderValueOptions} from '../../utils/dates';\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"]}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
|
-
import type { DateFieldSectionWithoutPosition } from "../../DateField/types.js";
|
|
3
|
-
import type { EDITABLE_SEGMENTS } from "../../DateField/utils.js";
|
|
4
|
-
import type { RangeValue } from "../../types/index.js";
|
|
5
|
-
export declare function getRangeEditableSections(sections: DateFieldSectionWithoutPosition[], value: RangeValue<DateTime>, validSegments: RangeValue<typeof EDITABLE_SEGMENTS>, delimiter: string): import("../../DateField/types.js").DateFieldSection[];
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRangeEditableSections = getRangeEditableSections;
|
|
4
|
-
const utils_1 = require("../../DateField/utils.js");
|
|
5
|
-
function getRangeEditableSections(sections, value, validSegments, delimiter) {
|
|
6
|
-
const start = (0, utils_1.getEditableSections)(sections, value.start, validSegments.start);
|
|
7
|
-
const end = (0, utils_1.getEditableSections)(sections, value.end, validSegments.end);
|
|
8
|
-
const last = start[start.length - 1];
|
|
9
|
-
let position = last.end;
|
|
10
|
-
const previousEditableSection = last.nextEditableSection;
|
|
11
|
-
const sectionsCount = start.length + 1;
|
|
12
|
-
const delimiterSection = (0, utils_1.toEditableSection)({
|
|
13
|
-
type: 'literal',
|
|
14
|
-
contentType: 'letter',
|
|
15
|
-
format: delimiter,
|
|
16
|
-
placeholder: delimiter,
|
|
17
|
-
hasLeadingZeros: false,
|
|
18
|
-
}, value.start, validSegments.start, position, previousEditableSection);
|
|
19
|
-
position += delimiterSection.textValue.length - 1;
|
|
20
|
-
let nextEditableSection;
|
|
21
|
-
for (let index = 0; index < end.length; index++) {
|
|
22
|
-
const section = end[index];
|
|
23
|
-
section.start += position;
|
|
24
|
-
section.end += position;
|
|
25
|
-
if (section.previousEditableSection === 0 && nextEditableSection === undefined) {
|
|
26
|
-
section.previousEditableSection = previousEditableSection;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
section.previousEditableSection += sectionsCount;
|
|
30
|
-
}
|
|
31
|
-
section.nextEditableSection += sectionsCount;
|
|
32
|
-
if ((0, utils_1.isEditableSection)(section) && nextEditableSection === undefined) {
|
|
33
|
-
nextEditableSection = index + sectionsCount;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (nextEditableSection !== undefined) {
|
|
37
|
-
delimiterSection.nextEditableSection = nextEditableSection;
|
|
38
|
-
start[previousEditableSection].nextEditableSection = nextEditableSection;
|
|
39
|
-
}
|
|
40
|
-
return [...start, delimiterSection, ...end];
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=getRangeEditableSections.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRangeEditableSections.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/utils/getRangeEditableSections.ts"],"names":[],"mappings":";;AAOA,4DAyDC;AA7DD,oDAAgG;AAIhG,SAAgB,wBAAwB,CACpC,QAA2C,EAC3C,KAA2B,EAC3B,aAAmD,EACnD,SAAiB;IAEjB,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,IAAA,2BAAmB,EAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;IACxB,MAAM,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvC,MAAM,gBAAgB,GAAG,IAAA,yBAAiB,EACtC;QACI,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;QACrB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,SAAS;QACtB,eAAe,EAAE,KAAK;KACzB,EACD,KAAK,CAAC,KAAK,EACX,aAAa,CAAC,KAAK,EACnB,QAAQ,EACR,uBAAuB,CAC1B,CAAC;IAEF,QAAQ,IAAI,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAElD,IAAI,mBAAmB,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3B,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;QAC1B,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC;QAExB,IAAI,OAAO,CAAC,uBAAuB,KAAK,CAAC,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC7E,OAAO,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QAC9D,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,uBAAuB,IAAI,aAAa,CAAC;QACrD,CAAC;QAED,OAAO,CAAC,mBAAmB,IAAI,aAAa,CAAC;QAE7C,IAAI,IAAA,yBAAiB,EAAC,OAAO,CAAC,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAClE,mBAAmB,GAAG,KAAK,GAAG,aAAa,CAAC;QAChD,CAAC;IACL,CAAC;IAED,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACpC,gBAAgB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAE3D,KAAK,CAAC,uBAAuB,CAAC,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {DateFieldSectionWithoutPosition} from '../../DateField/types';\nimport {getEditableSections, isEditableSection, toEditableSection} from '../../DateField/utils';\nimport type {EDITABLE_SEGMENTS} from '../../DateField/utils';\nimport type {RangeValue} from '../../types';\n\nexport function getRangeEditableSections(\n sections: DateFieldSectionWithoutPosition[],\n value: RangeValue<DateTime>,\n validSegments: RangeValue<typeof EDITABLE_SEGMENTS>,\n delimiter: string,\n) {\n const start = getEditableSections(sections, value.start, validSegments.start);\n const end = getEditableSections(sections, value.end, validSegments.end);\n\n const last = start[start.length - 1];\n let position = last.end;\n const previousEditableSection = last.nextEditableSection;\n const sectionsCount = start.length + 1;\n\n const delimiterSection = toEditableSection(\n {\n type: 'literal',\n contentType: 'letter',\n format: delimiter,\n placeholder: delimiter,\n hasLeadingZeros: false,\n },\n value.start,\n validSegments.start,\n position,\n previousEditableSection,\n );\n\n position += delimiterSection.textValue.length - 1;\n\n let nextEditableSection;\n for (let index = 0; index < end.length; index++) {\n const section = end[index];\n\n section.start += position;\n section.end += position;\n\n if (section.previousEditableSection === 0 && nextEditableSection === undefined) {\n section.previousEditableSection = previousEditableSection;\n } else {\n section.previousEditableSection += sectionsCount;\n }\n\n section.nextEditableSection += sectionsCount;\n\n if (isEditableSection(section) && nextEditableSection === undefined) {\n nextEditableSection = index + sectionsCount;\n }\n }\n\n if (nextEditableSection !== undefined) {\n delimiterSection.nextEditableSection = nextEditableSection;\n\n start[previousEditableSection].nextEditableSection = nextEditableSection;\n }\n\n return [...start, delimiterSection, ...end];\n}\n"]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./getRangeEditableSections.js"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./isValidRange.js"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./createPlaceholderRangeValue.js"), exports);
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/utils/index.ts"],"names":[],"mappings":";;;AAAA,wEAA2C;AAC3C,4DAA+B;AAC/B,2EAA8C","sourcesContent":["export * from './getRangeEditableSections';\nexport * from './isValidRange';\nexport * from './createPlaceholderRangeValue';\n"]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isValidRange = isValidRange;
|
|
4
|
-
function isValidRange({ start, end }) {
|
|
5
|
-
return start.isValid() && end.isValid() && (start.isSame(end) || start.isBefore(end));
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=isValidRange.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isValidRange.js","sourceRoot":"../../../../../src","sources":["components/RangeDateField/utils/isValidRange.ts"],"names":[],"mappings":";;AAIA,oCAEC;AAFD,SAAgB,YAAY,CAAC,EAAC,KAAK,EAAE,GAAG,EAAuB;IAC3D,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1F,CAAC","sourcesContent":["import type {DateTime} from '@gravity-ui/date-utils';\n\nimport type {RangeValue} from '../../types';\n\nexport function isValidRange({start, end}: RangeValue<DateTime>): boolean {\n return start.isValid() && end.isValid() && (start.isSame(end) || start.isBefore(end));\n}\n"]}
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useControlledState, useLang } from '@gravity-ui/uikit';
|
|
3
|
-
import { useBaseDateFieldState } from "../../DateField/index.js";
|
|
4
|
-
import { addSegment, adjustDateToFormat, getFormatInfo, isAllSegmentsValid, markValidSection, parseDateFromString, setSegment, useFormatSections, } from "../../DateField/utils.js";
|
|
5
|
-
import { isInvalid } from "../../utils/dates.js";
|
|
6
|
-
import { useDefaultTimeZone } from "../../utils/useDefaultTimeZone.js";
|
|
7
|
-
import { createPlaceholderRangeValue, getRangeEditableSections, isValidRange } from "../utils/index.js";
|
|
8
|
-
const RANGE_FORMAT_DELIMITER = ' — ';
|
|
9
|
-
export function useRangeDateFieldState(props) {
|
|
10
|
-
var _a, _b, _c, _d, _e;
|
|
11
|
-
const [value, setRange] = useControlledState(props.value, props.defaultValue || null, props.onUpdate);
|
|
12
|
-
const inputTimeZone = useDefaultTimeZone(((_a = props.value) === null || _a === void 0 ? void 0 : _a.start) || ((_b = props.defaultValue) === null || _b === void 0 ? void 0 : _b.start) || props.placeholderValue);
|
|
13
|
-
const timeZone = props.timeZone || inputTimeZone;
|
|
14
|
-
const handleUpdateRange = (v) => {
|
|
15
|
-
setRange(v ? { start: v.start.timeZone(inputTimeZone), end: v.end.timeZone(inputTimeZone) } : v);
|
|
16
|
-
};
|
|
17
|
-
const [placeholderDate, setPlaceholderDate] = React.useState(() => {
|
|
18
|
-
return createPlaceholderRangeValue({
|
|
19
|
-
placeholderValue: props.placeholderValue,
|
|
20
|
-
timeZone,
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
const format = props.format || 'L';
|
|
24
|
-
const delimiter = (_c = props.delimiter) !== null && _c !== void 0 ? _c : RANGE_FORMAT_DELIMITER;
|
|
25
|
-
const sections = useFormatSections(format);
|
|
26
|
-
const formatInfo = React.useMemo(() => getFormatInfo(sections), [sections]);
|
|
27
|
-
const allSegments = formatInfo.availableUnits;
|
|
28
|
-
// eslint-disable-next-line prefer-const
|
|
29
|
-
let [validSegments, setValidSegments] = React.useState(() => (value ? { start: Object.assign({}, allSegments), end: Object.assign({}, allSegments) } : { start: {}, end: {} }));
|
|
30
|
-
if (value &&
|
|
31
|
-
(!isAllSegmentsValid(allSegments, validSegments.start) ||
|
|
32
|
-
!isAllSegmentsValid(allSegments, validSegments.end))) {
|
|
33
|
-
setValidSegments({ start: Object.assign({}, allSegments), end: Object.assign({}, allSegments) });
|
|
34
|
-
}
|
|
35
|
-
if (!value &&
|
|
36
|
-
Object.keys(allSegments).length > 0 &&
|
|
37
|
-
isAllSegmentsValid(allSegments, validSegments.start) &&
|
|
38
|
-
Object.keys(validSegments.start).length === Object.keys(allSegments).length &&
|
|
39
|
-
isAllSegmentsValid(allSegments, validSegments.end) &&
|
|
40
|
-
Object.keys(validSegments.end).length === Object.keys(allSegments).length) {
|
|
41
|
-
validSegments = { start: {}, end: {} };
|
|
42
|
-
setValidSegments(validSegments);
|
|
43
|
-
setPlaceholderDate(createPlaceholderRangeValue({
|
|
44
|
-
placeholderValue: props.placeholderValue,
|
|
45
|
-
timeZone,
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
const { lang } = useLang();
|
|
49
|
-
const displayValue = value &&
|
|
50
|
-
value.start.isValid() &&
|
|
51
|
-
value.end.isValid() &&
|
|
52
|
-
Object.keys(validSegments.start).length >= Object.keys(allSegments).length &&
|
|
53
|
-
Object.keys(validSegments.end).length >= Object.keys(allSegments).length
|
|
54
|
-
? {
|
|
55
|
-
start: value.start.timeZone(timeZone).locale(lang),
|
|
56
|
-
end: value.end.timeZone(timeZone).locale(lang),
|
|
57
|
-
}
|
|
58
|
-
: {
|
|
59
|
-
start: placeholderDate.start.timeZone(timeZone).locale(lang),
|
|
60
|
-
end: placeholderDate.end.timeZone(timeZone).locale(lang),
|
|
61
|
-
};
|
|
62
|
-
const sectionsState = useSectionsState(sections, displayValue, validSegments, delimiter);
|
|
63
|
-
const [selectedSections, setSelectedSections] = React.useState(-1);
|
|
64
|
-
const selectedSectionIndexes = React.useMemo(() => {
|
|
65
|
-
if (selectedSections === -1) {
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
if (selectedSections === 'all') {
|
|
69
|
-
return {
|
|
70
|
-
startIndex: 0,
|
|
71
|
-
endIndex: sectionsState.editableSections.length - 1,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
if (typeof selectedSections === 'number') {
|
|
75
|
-
return { startIndex: selectedSections, endIndex: selectedSections };
|
|
76
|
-
}
|
|
77
|
-
if (typeof selectedSections === 'string') {
|
|
78
|
-
const selectedSectionIndex = sectionsState.editableSections.findIndex((section) => section.type === selectedSections);
|
|
79
|
-
return { startIndex: selectedSectionIndex, endIndex: selectedSectionIndex };
|
|
80
|
-
}
|
|
81
|
-
return selectedSections;
|
|
82
|
-
}, [selectedSections, sectionsState.editableSections]);
|
|
83
|
-
function setValue(newValue) {
|
|
84
|
-
if (props.disabled || props.readOnly) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
if (isAllSegmentsValid(allSegments, validSegments.start) &&
|
|
88
|
-
isAllSegmentsValid(allSegments, validSegments.end)) {
|
|
89
|
-
if (!value || !(newValue.start.isSame(value.start) && newValue.end.isSame(value.end))) {
|
|
90
|
-
handleUpdateRange({
|
|
91
|
-
start: adjustDateToFormat(newValue.start, formatInfo, 'startOf'),
|
|
92
|
-
end: adjustDateToFormat(newValue.end, formatInfo, 'endOf'),
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
if (value) {
|
|
98
|
-
handleUpdateRange(null);
|
|
99
|
-
}
|
|
100
|
-
setPlaceholderDate(newValue);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
function markValid(portion, part) {
|
|
104
|
-
validSegments[portion] = markValidSection(allSegments, validSegments[portion], part);
|
|
105
|
-
setValidSegments(Object.assign(Object.assign({}, validSegments), { [portion]: Object.assign({}, validSegments[portion]) }));
|
|
106
|
-
}
|
|
107
|
-
function setSection(sectionIndex, amount) {
|
|
108
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
109
|
-
const section = sectionsState.editableSections[sectionIndex];
|
|
110
|
-
markValid(portion, section.type);
|
|
111
|
-
setValue(Object.assign(Object.assign({}, displayValue), { [portion]: setSegment(section, displayValue[portion], amount) }));
|
|
112
|
-
}
|
|
113
|
-
function adjustSection(sectionIndex, amount) {
|
|
114
|
-
const section = sectionsState.editableSections[sectionIndex];
|
|
115
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
116
|
-
if (validSegments[portion][section.type]) {
|
|
117
|
-
setValue(Object.assign(Object.assign({}, displayValue), { [portion]: addSegment(section, displayValue[portion], amount) }));
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
markValid(portion, section.type);
|
|
121
|
-
if (Object.keys(validSegments[portion]).length >= Object.keys(allSegments).length) {
|
|
122
|
-
setValue(displayValue);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
function flushValidSection(sectionIndex) {
|
|
127
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
128
|
-
delete validSegments[portion][sectionsState.editableSections[sectionIndex].type];
|
|
129
|
-
setValidSegments(Object.assign(Object.assign({}, validSegments), { [portion]: Object.assign({}, validSegments[portion]) }));
|
|
130
|
-
}
|
|
131
|
-
function flushAllValidSections() {
|
|
132
|
-
validSegments = { start: {}, end: {} };
|
|
133
|
-
setValidSegments({ start: {}, end: {} });
|
|
134
|
-
}
|
|
135
|
-
function getSectionValue(sectionIndex) {
|
|
136
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
137
|
-
return displayValue[portion];
|
|
138
|
-
}
|
|
139
|
-
function setSectionValue(sectionIndex, currentValue) {
|
|
140
|
-
const portion = sectionIndex <= sections.length ? 'start' : 'end';
|
|
141
|
-
setValue(Object.assign(Object.assign({}, displayValue), { [portion]: currentValue }));
|
|
142
|
-
}
|
|
143
|
-
function createPlaceholder() {
|
|
144
|
-
return createPlaceholderRangeValue({
|
|
145
|
-
placeholderValue: props.placeholderValue,
|
|
146
|
-
timeZone,
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
function setValueFromString(str) {
|
|
150
|
-
var _a;
|
|
151
|
-
const [startDate = '', endDate = ''] = str.split(delimiter);
|
|
152
|
-
const parseDate = (_a = props.parseDateFromString) !== null && _a !== void 0 ? _a : parseDateFromString;
|
|
153
|
-
const start = parseDate(startDate, format, timeZone);
|
|
154
|
-
const end = parseDate(endDate, format, timeZone);
|
|
155
|
-
if (start.isValid() && end.isValid()) {
|
|
156
|
-
handleUpdateRange({ start, end });
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
return false;
|
|
160
|
-
}
|
|
161
|
-
const validationState = props.validationState ||
|
|
162
|
-
(isInvalid(value === null || value === void 0 ? void 0 : value.start, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
|
|
163
|
-
(isInvalid(value === null || value === void 0 ? void 0 : value.end, props.minValue, props.maxValue) ? 'invalid' : undefined) ||
|
|
164
|
-
(value && !isValidRange(value) ? 'invalid' : undefined) ||
|
|
165
|
-
(value && ((_d = props.isDateUnavailable) === null || _d === void 0 ? void 0 : _d.call(props, value.start)) ? 'invalid' : undefined) ||
|
|
166
|
-
(value && ((_e = props.isDateUnavailable) === null || _e === void 0 ? void 0 : _e.call(props, value.end)) ? 'invalid' : undefined);
|
|
167
|
-
return useBaseDateFieldState({
|
|
168
|
-
value,
|
|
169
|
-
displayValue,
|
|
170
|
-
placeholderValue: props.placeholderValue,
|
|
171
|
-
timeZone,
|
|
172
|
-
validationState,
|
|
173
|
-
editableSections: sectionsState.editableSections,
|
|
174
|
-
formatInfo,
|
|
175
|
-
readOnly: props.readOnly,
|
|
176
|
-
disabled: props.disabled,
|
|
177
|
-
selectedSectionIndexes,
|
|
178
|
-
selectedSections,
|
|
179
|
-
isEmpty: Object.keys(validSegments.start).length === 0 &&
|
|
180
|
-
Object.keys(validSegments.end).length === 0,
|
|
181
|
-
flushAllValidSections,
|
|
182
|
-
flushValidSection,
|
|
183
|
-
setSelectedSections,
|
|
184
|
-
setValue,
|
|
185
|
-
setDate: handleUpdateRange,
|
|
186
|
-
adjustSection,
|
|
187
|
-
setSection,
|
|
188
|
-
getSectionValue,
|
|
189
|
-
setSectionValue,
|
|
190
|
-
createPlaceholder,
|
|
191
|
-
setValueFromString,
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
function useSectionsState(sections, value, validSegments, delimiter) {
|
|
195
|
-
const [state, setState] = React.useState(() => {
|
|
196
|
-
return {
|
|
197
|
-
value,
|
|
198
|
-
sections,
|
|
199
|
-
validSegments,
|
|
200
|
-
delimiter,
|
|
201
|
-
editableSections: getRangeEditableSections(sections, value, validSegments, delimiter),
|
|
202
|
-
};
|
|
203
|
-
});
|
|
204
|
-
if (sections !== state.sections ||
|
|
205
|
-
validSegments !== state.validSegments ||
|
|
206
|
-
!(value.start.isSame(state.value.start) && value.end.isSame(state.value.end)) ||
|
|
207
|
-
value.start.timeZone() !== state.value.start.timeZone() ||
|
|
208
|
-
value.start.locale() !== state.value.start.locale() ||
|
|
209
|
-
delimiter !== state.delimiter) {
|
|
210
|
-
setState({
|
|
211
|
-
value,
|
|
212
|
-
sections,
|
|
213
|
-
validSegments,
|
|
214
|
-
delimiter,
|
|
215
|
-
editableSections: getRangeEditableSections(sections, value, validSegments, delimiter),
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
return state;
|
|
219
|
-
}
|
|
220
|
-
//# sourceMappingURL=useRangeDateFieldState.js.map
|