@gravity-ui/date-components 1.5.0 → 2.0.1
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/dist/cjs/components/Calendar/Calendar.d.ts +6 -5
- package/dist/cjs/components/Calendar/Calendar.js +4 -4
- package/dist/cjs/components/Calendar/index.d.ts +6 -6
- package/dist/cjs/components/Calendar/index.js +5 -5
- package/dist/cjs/components/{CalendarBase → CalendarView}/Calendar.css +9 -6
- package/dist/cjs/components/{CalendarBase/CalendarBase.d.ts → CalendarView/CalendarView.d.ts} +2 -2
- package/dist/cjs/components/{CalendarBase/CalendarBase.js → CalendarView/CalendarView.js} +4 -3
- package/dist/{esm/components/CalendarBase → cjs/components/CalendarView}/hooks/types.d.ts +37 -31
- package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarCellProps.js +1 -2
- package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarGridProps.d.ts +2 -2
- package/dist/{esm/components/CalendarBase → cjs/components/CalendarView}/hooks/useCalendarState.d.ts +1 -1
- package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarState.js +45 -23
- package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.d.ts +8 -0
- package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useRangeCalendarState.js +25 -14
- package/dist/cjs/components/DateField/DateField.d.ts +1 -4
- package/dist/cjs/components/DateField/DateField.js +3 -1
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +97 -0
- package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.js +316 -0
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +6 -3
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +14 -12
- package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +2 -65
- package/dist/cjs/components/DateField/hooks/useDateFieldState.js +98 -410
- package/dist/cjs/components/DateField/index.d.ts +1 -0
- package/dist/cjs/components/DateField/index.js +1 -0
- package/dist/cjs/components/DateField/utils.d.ts +10 -1
- package/dist/cjs/components/DateField/utils.js +114 -2
- package/dist/cjs/components/DatePicker/DatePicker.d.ts +4 -4
- package/dist/cjs/components/DatePicker/DatePicker.js +6 -6
- package/dist/cjs/components/DatePicker/MobileCalendar.css +6 -6
- package/dist/cjs/components/DatePicker/MobileCalendar.js +17 -12
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +5 -16
- package/dist/cjs/components/DatePicker/hooks/useDatePickerState.d.ts +5 -4
- package/dist/cjs/components/DatePicker/hooks/useDatePickerState.js +71 -56
- package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +3 -3
- package/dist/cjs/components/RangeCalendar/RangeCalendar.js +4 -4
- package/dist/cjs/components/RangeDateField/RangeDateField.css +4 -0
- package/dist/cjs/components/RangeDateField/RangeDateField.d.ts +12 -0
- package/dist/cjs/components/RangeDateField/RangeDateField.js +25 -0
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.d.ts +9 -0
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +227 -0
- package/dist/cjs/components/RangeDateField/index.d.ts +2 -0
- package/dist/cjs/components/RangeDateField/index.js +5 -0
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +5 -0
- package/dist/cjs/components/RangeDateField/utils/createPlaceholderRangeValue.js +9 -0
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.d.ts +5 -0
- package/dist/cjs/components/RangeDateField/utils/getRangeEditableSections.js +42 -0
- package/dist/cjs/components/RangeDateField/utils/index.d.ts +3 -0
- package/dist/cjs/components/RangeDateField/utils/index.js +6 -0
- package/dist/cjs/components/RangeDateField/utils/isValidRange.d.ts +3 -0
- package/dist/cjs/components/RangeDateField/utils/isValidRange.js +8 -0
- package/dist/cjs/components/RelativeDateField/RelativeDateField.d.ts +2 -2
- package/dist/cjs/components/RelativeDateField/RelativeDateField.js +5 -2
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +5 -11
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +3 -1
- package/dist/cjs/components/RelativeDateField/hooks/useRelativeDateFieldState.js +5 -4
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.css +3 -0
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.d.ts +2 -2
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +13 -2
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +35 -27
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.d.ts +2 -2
- package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +12 -16
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.css +56 -0
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +27 -0
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +90 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css +32 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +14 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +43 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/en.json +8 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.d.ts +1 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.js +9 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/i18n/ru.json +8 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +16 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +104 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.css +26 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +18 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.js +67 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.css +14 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.d.ts +7 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.js +90 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +9 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js +186 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/en.json +40 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/index.d.ts +1 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/index.js +9 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/i18n/ru.json +40 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +16 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/utils.js +85 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.css +3 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +9 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.js +62 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/en.json +4 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/index.d.ts +1 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/index.js +9 -0
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/i18n/ru.json +4 -0
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts +26 -0
- package/dist/cjs/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +58 -0
- package/dist/cjs/components/RelativeRangeDatePicker/i18n/en.json +8 -0
- package/dist/cjs/components/RelativeRangeDatePicker/i18n/index.d.ts +1 -0
- package/dist/cjs/components/RelativeRangeDatePicker/i18n/index.js +9 -0
- package/dist/cjs/components/RelativeRangeDatePicker/i18n/ru.json +8 -0
- package/dist/cjs/components/RelativeRangeDatePicker/index.d.ts +4 -0
- package/dist/cjs/components/RelativeRangeDatePicker/index.js +8 -0
- package/dist/cjs/components/RelativeRangeDatePicker/utils.d.ts +15 -0
- package/dist/cjs/components/RelativeRangeDatePicker/utils.js +53 -0
- package/dist/cjs/components/index.d.ts +3 -0
- package/dist/cjs/components/index.js +2 -0
- package/dist/cjs/components/types/datePicker.d.ts +5 -2
- package/dist/cjs/components/types/events.d.ts +4 -4
- package/dist/cjs/components/types/inputs.d.ts +10 -9
- package/dist/cjs/components/utils/dates.d.ts +1 -2
- package/dist/cjs/components/utils/useDefaultTimeZone.d.ts +2 -0
- package/dist/cjs/components/utils/useDefaultTimeZone.js +15 -0
- package/dist/cjs/components/utils/validation/datePicker.d.ts +6 -0
- package/dist/cjs/components/utils/validation/datePicker.js +30 -0
- package/dist/cjs/components/utils/validation/i18n/en.json +6 -0
- package/dist/cjs/components/utils/validation/i18n/index.d.ts +1 -0
- package/dist/cjs/components/utils/validation/i18n/index.js +9 -0
- package/dist/cjs/components/utils/validation/i18n/ru.json +6 -0
- package/dist/esm/components/Calendar/Calendar.d.ts +6 -5
- package/dist/esm/components/Calendar/Calendar.js +4 -4
- package/dist/esm/components/Calendar/index.d.ts +6 -6
- package/dist/esm/components/Calendar/index.js +5 -5
- package/dist/esm/components/{CalendarBase → CalendarView}/Calendar.css +9 -6
- package/dist/esm/components/{CalendarBase/CalendarBase.d.ts → CalendarView/CalendarView.d.ts} +2 -2
- package/dist/esm/components/{CalendarBase/CalendarBase.js → CalendarView/CalendarView.js} +3 -2
- package/dist/{cjs/components/CalendarBase → esm/components/CalendarView}/hooks/types.d.ts +37 -31
- package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarCellProps.js +1 -2
- package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarGridProps.d.ts +2 -2
- package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarGridProps.js +0 -1
- package/dist/{cjs/components/CalendarBase → esm/components/CalendarView}/hooks/useCalendarState.d.ts +1 -1
- package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarState.js +46 -24
- package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.d.ts +8 -0
- package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useRangeCalendarState.js +24 -13
- package/dist/esm/components/DateField/DateField.d.ts +1 -4
- package/dist/esm/components/DateField/DateField.js +4 -2
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +97 -0
- package/dist/esm/components/DateField/hooks/useBaseDateFieldState.js +311 -0
- package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +6 -3
- package/dist/esm/components/DateField/hooks/useDateFieldProps.js +14 -12
- package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +2 -65
- package/dist/esm/components/DateField/hooks/useDateFieldState.js +97 -409
- package/dist/esm/components/DateField/index.d.ts +1 -0
- package/dist/esm/components/DateField/index.js +1 -0
- package/dist/esm/components/DateField/utils.d.ts +10 -1
- package/dist/esm/components/DateField/utils.js +105 -2
- package/dist/esm/components/DatePicker/DatePicker.d.ts +4 -4
- package/dist/esm/components/DatePicker/DatePicker.js +6 -6
- package/dist/esm/components/DatePicker/MobileCalendar.css +6 -6
- package/dist/esm/components/DatePicker/MobileCalendar.js +17 -12
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +5 -16
- package/dist/esm/components/DatePicker/hooks/useDatePickerState.d.ts +5 -4
- package/dist/esm/components/DatePicker/hooks/useDatePickerState.js +71 -56
- package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +3 -3
- package/dist/esm/components/RangeCalendar/RangeCalendar.js +4 -4
- package/dist/esm/components/RangeDateField/RangeDateField.css +4 -0
- package/dist/esm/components/RangeDateField/RangeDateField.d.ts +12 -0
- package/dist/esm/components/RangeDateField/RangeDateField.js +21 -0
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.d.ts +9 -0
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +222 -0
- package/dist/esm/components/RangeDateField/index.d.ts +2 -0
- package/dist/esm/components/RangeDateField/index.js +2 -0
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.d.ts +5 -0
- package/dist/esm/components/RangeDateField/utils/createPlaceholderRangeValue.js +5 -0
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.d.ts +5 -0
- package/dist/esm/components/RangeDateField/utils/getRangeEditableSections.js +38 -0
- package/dist/esm/components/RangeDateField/utils/index.d.ts +3 -0
- package/dist/esm/components/RangeDateField/utils/index.js +3 -0
- package/dist/esm/components/RangeDateField/utils/isValidRange.d.ts +3 -0
- package/dist/esm/components/RangeDateField/utils/isValidRange.js +4 -0
- package/dist/esm/components/RelativeDateField/RelativeDateField.d.ts +2 -2
- package/dist/esm/components/RelativeDateField/RelativeDateField.js +5 -2
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldProps.js +5 -11
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.d.ts +3 -1
- package/dist/esm/components/RelativeDateField/hooks/useRelativeDateFieldState.js +5 -4
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.css +3 -0
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.d.ts +2 -2
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +13 -2
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +35 -27
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.d.ts +2 -2
- package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerState.js +12 -16
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.css +56 -0
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.d.ts +27 -0
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.js +85 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css +32 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.d.ts +14 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.js +39 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/en.json +8 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.d.ts +1 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/index.js +5 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/i18n/ru.json +8 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.d.ts +16 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/useRelativeRangeDatePickerDialogState.js +99 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.css +26 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.d.ts +18 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.js +62 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.css +14 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.d.ts +7 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.js +85 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.d.ts +9 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/defaultPresets.js +183 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/en.json +40 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/index.d.ts +1 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/index.js +5 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/i18n/ru.json +40 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.d.ts +16 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/utils.js +78 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.css +3 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.d.ts +9 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.js +58 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/en.json +4 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/index.d.ts +1 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/index.js +5 -0
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/i18n/ru.json +4 -0
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.d.ts +26 -0
- package/dist/esm/components/RelativeRangeDatePicker/hooks/useRelativeRangeDatePickerState.js +53 -0
- package/dist/esm/components/RelativeRangeDatePicker/i18n/en.json +8 -0
- package/dist/esm/components/RelativeRangeDatePicker/i18n/index.d.ts +1 -0
- package/dist/esm/components/RelativeRangeDatePicker/i18n/index.js +5 -0
- package/dist/esm/components/RelativeRangeDatePicker/i18n/ru.json +8 -0
- package/dist/esm/components/RelativeRangeDatePicker/index.d.ts +4 -0
- package/dist/esm/components/RelativeRangeDatePicker/index.js +3 -0
- package/dist/esm/components/RelativeRangeDatePicker/utils.d.ts +15 -0
- package/dist/esm/components/RelativeRangeDatePicker/utils.js +46 -0
- package/dist/esm/components/index.d.ts +3 -0
- package/dist/esm/components/index.js +2 -0
- package/dist/esm/components/types/datePicker.d.ts +5 -2
- package/dist/esm/components/types/events.d.ts +4 -4
- package/dist/esm/components/types/inputs.d.ts +10 -9
- package/dist/esm/components/utils/dates.d.ts +1 -2
- package/dist/esm/components/utils/useDefaultTimeZone.d.ts +2 -0
- package/dist/esm/components/utils/useDefaultTimeZone.js +10 -0
- package/dist/esm/components/utils/validation/datePicker.d.ts +6 -0
- package/dist/esm/components/utils/validation/datePicker.js +26 -0
- package/dist/esm/components/utils/validation/i18n/en.json +6 -0
- package/dist/esm/components/utils/validation/i18n/index.d.ts +1 -0
- package/dist/esm/components/utils/validation/i18n/index.js +5 -0
- package/dist/esm/components/utils/validation/i18n/ru.json +6 -0
- package/package.json +27 -27
- package/dist/cjs/components/CalendarBase/hooks/useRangeCalendarState.d.ts +0 -7
- package/dist/cjs/components/hooks/useControlledState.d.ts +0 -1
- package/dist/cjs/components/hooks/useControlledState.js +0 -28
- package/dist/esm/components/CalendarBase/hooks/useRangeCalendarState.d.ts +0 -7
- package/dist/esm/components/hooks/useControlledState.d.ts +0 -1
- package/dist/esm/components/hooks/useControlledState.js +0 -23
- /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/types.js +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarCellProps.d.ts +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarGridProps.js +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.d.ts +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.js +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/i18n/en.json +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/i18n/index.d.ts +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/i18n/index.js +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/i18n/ru.json +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/utils.d.ts +0 -0
- /package/dist/cjs/components/{CalendarBase → CalendarView}/utils.js +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/hooks/types.js +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarCellProps.d.ts +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.d.ts +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.js +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/i18n/en.json +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/i18n/index.d.ts +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/i18n/index.js +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/i18n/ru.json +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/utils.d.ts +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/utils.js +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { DateTime } from '@gravity-ui/date-utils';
|
|
3
|
+
import type { CalendarInstance, CalendarSize } from '../CalendarView/CalendarView';
|
|
4
|
+
import type { CalendarStateOptions } from '../CalendarView/hooks/useCalendarState';
|
|
4
5
|
import type { AccessibilityProps, DomProps, FocusEvents, StyleProps } from '../types';
|
|
5
|
-
import '../
|
|
6
|
-
export interface CalendarProps extends CalendarStateOptions
|
|
6
|
+
import '../CalendarView/Calendar.css';
|
|
7
|
+
export interface CalendarProps<T = DateTime> extends CalendarStateOptions<T>, DomProps, StyleProps, FocusEvents, AccessibilityProps {
|
|
7
8
|
/**
|
|
8
9
|
* The size of the element.
|
|
9
10
|
* @default m
|
|
10
11
|
*/
|
|
11
12
|
size?: CalendarSize;
|
|
12
13
|
}
|
|
13
|
-
export declare const Calendar: React.ForwardRefExoticComponent<CalendarProps & React.RefAttributes<CalendarInstance>>;
|
|
14
|
+
export declare const Calendar: React.ForwardRefExoticComponent<CalendarProps<DateTime> & React.RefAttributes<CalendarInstance>>;
|
|
@@ -4,10 +4,10 @@ exports.Calendar = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
6
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
7
|
-
const
|
|
8
|
-
const useCalendarState_1 = require("../
|
|
9
|
-
require("../
|
|
7
|
+
const CalendarView_1 = require("../CalendarView/CalendarView");
|
|
8
|
+
const useCalendarState_1 = require("../CalendarView/hooks/useCalendarState");
|
|
9
|
+
require("../CalendarView/Calendar.css");
|
|
10
10
|
exports.Calendar = react_1.default.forwardRef(function Calendar(props, ref) {
|
|
11
11
|
const state = (0, useCalendarState_1.useCalendarState)(props);
|
|
12
|
-
return (0, jsx_runtime_1.jsx)(
|
|
12
|
+
return (0, jsx_runtime_1.jsx)(CalendarView_1.CalendarView, Object.assign({ ref: ref }, props, { state: state }));
|
|
13
13
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export * from './Calendar';
|
|
2
2
|
export * from '../RangeCalendar/RangeCalendar';
|
|
3
|
-
export type { CalendarInstance } from '../
|
|
4
|
-
export * from '../
|
|
5
|
-
export * from '../
|
|
6
|
-
export * from '../
|
|
7
|
-
export * from '../
|
|
8
|
-
export * from '../
|
|
3
|
+
export type { CalendarInstance } from '../CalendarView/CalendarView';
|
|
4
|
+
export * from '../CalendarView/hooks/useCalendarState';
|
|
5
|
+
export * from '../CalendarView/hooks/useRangeCalendarState';
|
|
6
|
+
export * from '../CalendarView/hooks/useCalendarProps';
|
|
7
|
+
export * from '../CalendarView/hooks/useCalendarGridProps';
|
|
8
|
+
export * from '../CalendarView/hooks/useCalendarCellProps';
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./Calendar"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("../RangeCalendar/RangeCalendar"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("../
|
|
7
|
-
tslib_1.__exportStar(require("../
|
|
8
|
-
tslib_1.__exportStar(require("../
|
|
9
|
-
tslib_1.__exportStar(require("../
|
|
10
|
-
tslib_1.__exportStar(require("../
|
|
6
|
+
tslib_1.__exportStar(require("../CalendarView/hooks/useCalendarState"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("../CalendarView/hooks/useRangeCalendarState"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("../CalendarView/hooks/useCalendarProps"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("../CalendarView/hooks/useCalendarGridProps"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("../CalendarView/hooks/useCalendarCellProps"), exports);
|
|
@@ -30,7 +30,10 @@
|
|
|
30
30
|
color: var(--g-color-text-secondary);
|
|
31
31
|
}
|
|
32
32
|
.g-date-calendar__controls {
|
|
33
|
-
margin-
|
|
33
|
+
margin-inline-start: auto;
|
|
34
|
+
}
|
|
35
|
+
.g-date-calendar__control-icon {
|
|
36
|
+
transform: scaleX(var(--g-flow-direction));
|
|
34
37
|
}
|
|
35
38
|
.g-date-calendar__grid {
|
|
36
39
|
position: relative;
|
|
@@ -41,8 +44,8 @@
|
|
|
41
44
|
}
|
|
42
45
|
.g-date-calendar__content {
|
|
43
46
|
position: absolute;
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
inset-block-start: 0;
|
|
48
|
+
inset-inline-start: 0;
|
|
46
49
|
display: grid;
|
|
47
50
|
grid-template-rows: var(--_--calendar-day-size) 1fr;
|
|
48
51
|
box-sizing: border-box;
|
|
@@ -111,14 +114,14 @@
|
|
|
111
114
|
animation: calendar-forward 0.25s ease forwards;
|
|
112
115
|
}
|
|
113
116
|
.g-date-calendar__content_animation_forward.g-date-calendar__current-state {
|
|
114
|
-
|
|
117
|
+
inset-inline-start: calc(var(--g-flow-direction) * -100%);
|
|
115
118
|
}
|
|
116
119
|
.g-date-calendar__content_animation_backward {
|
|
117
120
|
transform: translateX(0);
|
|
118
121
|
animation: calendar-backward 0.25s ease forwards;
|
|
119
122
|
}
|
|
120
123
|
.g-date-calendar__content_animation_backward.g-date-calendar__current-state {
|
|
121
|
-
|
|
124
|
+
inset-inline-start: calc(var(--g-flow-direction) * 100%);
|
|
122
125
|
}
|
|
123
126
|
.g-date-calendar__content_animation_zoom-in {
|
|
124
127
|
transform: scale();
|
|
@@ -206,7 +209,7 @@
|
|
|
206
209
|
}
|
|
207
210
|
.g-date-calendar__button_current::before {
|
|
208
211
|
position: absolute;
|
|
209
|
-
|
|
212
|
+
inset-block-start: 50%;
|
|
210
213
|
display: block;
|
|
211
214
|
width: 4px;
|
|
212
215
|
height: 4px;
|
package/dist/cjs/components/{CalendarBase/CalendarBase.d.ts → CalendarView/CalendarView.d.ts}
RENAMED
|
@@ -7,7 +7,7 @@ export type CalendarSize = 'm' | 'l' | 'xl';
|
|
|
7
7
|
export interface CalendarInstance {
|
|
8
8
|
focus: () => void;
|
|
9
9
|
}
|
|
10
|
-
export interface
|
|
10
|
+
export interface CalendarViewProps extends DomProps, StyleProps, FocusEvents, AccessibilityProps {
|
|
11
11
|
state: CalendarState | RangeCalendarState;
|
|
12
12
|
/**
|
|
13
13
|
* The size of the element.
|
|
@@ -15,4 +15,4 @@ export interface CalendarBaseProps extends DomProps, StyleProps, FocusEvents, Ac
|
|
|
15
15
|
*/
|
|
16
16
|
size?: CalendarSize;
|
|
17
17
|
}
|
|
18
|
-
export declare const
|
|
18
|
+
export declare const CalendarView: React.ForwardRefExoticComponent<CalendarViewProps & React.RefAttributes<CalendarInstance>>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.CalendarView = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
6
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
7
|
+
const icons_1 = require("@gravity-ui/icons");
|
|
7
8
|
const uikit_1 = require("@gravity-ui/uikit");
|
|
8
9
|
const cn_1 = require("../../utils/cn");
|
|
9
10
|
const useCalendarCellProps_1 = require("./hooks/useCalendarCellProps");
|
|
@@ -12,7 +13,7 @@ const useCalendarProps_1 = require("./hooks/useCalendarProps");
|
|
|
12
13
|
const utils_1 = require("./utils");
|
|
13
14
|
require("./Calendar.css");
|
|
14
15
|
const b = (0, cn_1.block)('calendar');
|
|
15
|
-
exports.
|
|
16
|
+
exports.CalendarView = react_1.default.forwardRef(function Calendar(props, ref) {
|
|
16
17
|
const { state } = props;
|
|
17
18
|
const { calendarProps, modeButtonProps, nextButtonProps, previousButtonProps } = (0, useCalendarProps_1.useCalendarProps)(props, state);
|
|
18
19
|
react_1.default.useImperativeHandle(ref, () => ({
|
|
@@ -24,7 +25,7 @@ exports.CalendarBase = react_1.default.forwardRef(function Calendar(props, ref)
|
|
|
24
25
|
state.availableModes.length ? ((0, jsx_runtime_1.jsx)("span", { className: b('mode-label', b(`years-label`)), children: modeButtonProps.children }, "label")) : ([
|
|
25
26
|
(0, jsx_runtime_1.jsx)("span", { className: b('mode-label'), children: modeButtonProps.children }, "label"),
|
|
26
27
|
(0, jsx_runtime_1.jsx)(uikit_1.Button.Icon, { children: (0, jsx_runtime_1.jsx)(uikit_1.ArrowToggle, { direction: "bottom" }) }, "icon"),
|
|
27
|
-
]) })), (0, jsx_runtime_1.jsxs)("div", { className: b('controls'), children: [(0, jsx_runtime_1.jsx)(uikit_1.Button, Object.assign({}, previousButtonProps, { view: "flat", size: props.size, children: (0, jsx_runtime_1.jsx)(uikit_1.Button.Icon, { children: (0, jsx_runtime_1.jsx)(
|
|
28
|
+
]) })), (0, jsx_runtime_1.jsxs)("div", { className: b('controls'), children: [(0, jsx_runtime_1.jsx)(uikit_1.Button, Object.assign({}, previousButtonProps, { view: "flat", size: props.size, children: (0, jsx_runtime_1.jsx)(uikit_1.Button.Icon, { children: (0, jsx_runtime_1.jsx)(icons_1.ChevronLeft, { className: b('control-icon') }) }) })), (0, jsx_runtime_1.jsx)(uikit_1.Button, Object.assign({}, nextButtonProps, { view: "flat", size: props.size, children: (0, jsx_runtime_1.jsx)(uikit_1.Button.Icon, { children: (0, jsx_runtime_1.jsx)(icons_1.ChevronRight, { className: b('control-icon') }) }) }))] })] }), (0, jsx_runtime_1.jsx)(CalendarGrid, { state: state })] })));
|
|
28
29
|
});
|
|
29
30
|
function CalendarGrid({ state }) {
|
|
30
31
|
const [prevState, setPrevState] = react_1.default.useState(() => (Object.assign(Object.assign({}, state), { isFocused: false })));
|
|
@@ -8,7 +8,10 @@ export interface CalendarStateOptionsBase extends InputBase {
|
|
|
8
8
|
maxValue?: DateTime;
|
|
9
9
|
/** Callback that is called for each date of the calendar. If it returns true, then the date is unavailable. */
|
|
10
10
|
isDateUnavailable?: (date: DateTime) => boolean;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Which timezone use to show values. Example: 'default', 'system', 'Europe/Amsterdam'.
|
|
13
|
+
* @default The timezone of the `value` or `defaultValue` or `focusedValue` or `defaultFocusedValue`, 'default' otherwise.
|
|
14
|
+
*/
|
|
12
15
|
timeZone?: string;
|
|
13
16
|
/**
|
|
14
17
|
* Whether to automatically focus the calendar when it mounts.
|
|
@@ -35,7 +38,8 @@ interface CalendarStateBase {
|
|
|
35
38
|
readonly disabled?: boolean;
|
|
36
39
|
/** Whether the calendar is in a read only state. */
|
|
37
40
|
readonly readOnly?: boolean;
|
|
38
|
-
|
|
41
|
+
/** Which timezone use to show values. */
|
|
42
|
+
readonly timeZone: string;
|
|
39
43
|
/** The minimum allowed date that a user may select. */
|
|
40
44
|
readonly minValue?: DateTime;
|
|
41
45
|
/** The maximum allowed date that a user may select. */
|
|
@@ -43,85 +47,87 @@ interface CalendarStateBase {
|
|
|
43
47
|
/** The currently focused date. */
|
|
44
48
|
readonly focusedDate: DateTime;
|
|
45
49
|
/** Sets the focused date. */
|
|
46
|
-
setFocusedDate(date: DateTime)
|
|
50
|
+
setFocusedDate: (date: DateTime) => void;
|
|
47
51
|
/** Selects the currently focused date. */
|
|
48
|
-
selectFocusedDate()
|
|
52
|
+
selectFocusedDate: () => void;
|
|
49
53
|
/** Selects the given date. */
|
|
50
|
-
selectDate(date: DateTime, force?: boolean)
|
|
54
|
+
selectDate: (date: DateTime, force?: boolean) => void;
|
|
51
55
|
/** Moves focus to the next calendar date. */
|
|
52
|
-
focusNextCell()
|
|
56
|
+
focusNextCell: () => void;
|
|
53
57
|
/** Moves focus to the previous calendar date. */
|
|
54
|
-
focusPreviousCell()
|
|
58
|
+
focusPreviousCell: () => void;
|
|
55
59
|
/** Moves focus to the next row of dates, e.g. the next week. */
|
|
56
|
-
focusNextRow()
|
|
60
|
+
focusNextRow: () => void;
|
|
57
61
|
/** Moves focus to the previous row of dates, e.g. the previous work. */
|
|
58
|
-
focusPreviousRow()
|
|
62
|
+
focusPreviousRow: () => void;
|
|
59
63
|
/**
|
|
60
64
|
* Moves focus to the next page of dates, e.g. the next month.
|
|
61
65
|
* If the `larger` option is `true`, the focus is moved by the next larger unit.
|
|
62
66
|
* For example, if days are displayed, then focus moves to the next year.
|
|
63
67
|
*/
|
|
64
|
-
focusNextPage(larger?: boolean)
|
|
68
|
+
focusNextPage: (larger?: boolean) => void;
|
|
65
69
|
/**
|
|
66
70
|
* Moves focus to the previous page of dates, e.g. the previous month.
|
|
67
71
|
* If the `larger` option is `true`, the focus is moved by the next larger unit.
|
|
68
72
|
* For example, if days are displayed, then focus moves to the previous year.
|
|
69
73
|
*/
|
|
70
|
-
focusPreviousPage(larger?: boolean)
|
|
74
|
+
focusPreviousPage: (larger?: boolean) => void;
|
|
71
75
|
/** Moves focus to the start of the current section of dates, e.g. the start of the current month. */
|
|
72
|
-
focusSectionStart()
|
|
76
|
+
focusSectionStart: () => void;
|
|
73
77
|
/** Moves focus to the end of the current section of dates, e.g. the end of the current month month. */
|
|
74
|
-
focusSectionEnd()
|
|
78
|
+
focusSectionEnd: () => void;
|
|
75
79
|
/** Switches to more detailed layout. */
|
|
76
|
-
zoomIn()
|
|
80
|
+
zoomIn: () => void;
|
|
77
81
|
/** Switches to less detailed layout. */
|
|
78
|
-
zoomOut()
|
|
82
|
+
zoomOut: () => void;
|
|
79
83
|
/** Whether focus is currently within the calendar. */
|
|
80
84
|
readonly isFocused: boolean;
|
|
81
85
|
/** Sets whether focus is currently within the calendar. */
|
|
82
|
-
setFocused(isFocused: boolean)
|
|
86
|
+
setFocused: (isFocused: boolean) => void;
|
|
83
87
|
/** Returns whether the given date is invalid according to the `minValue` and `maxValue` props. */
|
|
84
|
-
isInvalid(date: DateTime)
|
|
88
|
+
isInvalid: (date: DateTime) => boolean;
|
|
85
89
|
/** Returns whether the previous page is allowed to be selected according to the `minValue` prop. */
|
|
86
|
-
isPreviousPageInvalid()
|
|
90
|
+
isPreviousPageInvalid: () => boolean;
|
|
87
91
|
/** Returns whether the next page is allowed to be selected according to the `maxValue` prop. */
|
|
88
|
-
isNextPageInvalid()
|
|
92
|
+
isNextPageInvalid: () => boolean;
|
|
89
93
|
/** Returns whether the given date is currently selected. */
|
|
90
|
-
isSelected(date: DateTime)
|
|
94
|
+
isSelected: (date: DateTime) => boolean;
|
|
91
95
|
/** Returns whether the given date is unavailable according to the `isDateUnavailable` prop. */
|
|
92
|
-
isCellUnavailable(date: DateTime)
|
|
96
|
+
isCellUnavailable: (date: DateTime) => boolean;
|
|
93
97
|
/** Returns whether the given date is currently focused. */
|
|
94
|
-
isCellFocused(date: DateTime)
|
|
98
|
+
isCellFocused: (date: DateTime) => boolean;
|
|
95
99
|
/** Returns whether the given date is disabled according to the `minValue, `maxValue`, and `isDisabled` props. */
|
|
96
|
-
isCellDisabled(date: DateTime)
|
|
100
|
+
isCellDisabled: (date: DateTime) => boolean;
|
|
97
101
|
/** Returns whether the given date is weekend */
|
|
98
|
-
isWeekend(date: DateTime)
|
|
102
|
+
isWeekend: (date: DateTime) => boolean;
|
|
103
|
+
/** Returns whether the given date is in current period */
|
|
104
|
+
isCurrent: (date: DateTime) => boolean;
|
|
99
105
|
/** Current calendar layout */
|
|
100
106
|
readonly mode: CalendarLayout;
|
|
101
107
|
/** Sets calendar layout */
|
|
102
|
-
setMode(mode: CalendarLayout)
|
|
108
|
+
setMode: (mode: CalendarLayout) => void;
|
|
103
109
|
readonly availableModes: CalendarLayout[];
|
|
104
110
|
readonly startDate: DateTime;
|
|
105
111
|
readonly endDate: DateTime;
|
|
106
112
|
}
|
|
107
113
|
export interface CalendarState extends CalendarStateBase {
|
|
108
114
|
/** The currently selected date. */
|
|
109
|
-
readonly value
|
|
115
|
+
readonly value: DateTime | null;
|
|
110
116
|
/** Sets the currently selected date. */
|
|
111
|
-
setValue(value: DateTime)
|
|
117
|
+
setValue: (value: DateTime) => void;
|
|
112
118
|
}
|
|
113
119
|
export interface RangeCalendarState extends CalendarStateBase {
|
|
114
120
|
/** The currently selected range. */
|
|
115
|
-
readonly value
|
|
121
|
+
readonly value: RangeValue<DateTime> | null;
|
|
116
122
|
/** Sets the currently selected range. */
|
|
117
|
-
setValue(value: RangeValue<DateTime>)
|
|
123
|
+
setValue: (value: RangeValue<DateTime>) => void;
|
|
118
124
|
/** The current anchor date that the user clicked on to begin range selection. */
|
|
119
125
|
readonly anchorDate: DateTime | undefined;
|
|
120
126
|
/** Sets the anchor date that the user clicked on to begin range selection. */
|
|
121
|
-
setAnchorDate(date: DateTime | undefined)
|
|
127
|
+
setAnchorDate: (date: DateTime | undefined) => void;
|
|
122
128
|
/** The currently highlighted date range. */
|
|
123
129
|
readonly highlightedRange: RangeValue<DateTime> | undefined;
|
|
124
130
|
/** Highlights the given date during selection, e.g. by hovering. */
|
|
125
|
-
highlightDate(date: DateTime)
|
|
131
|
+
highlightDate: (date: DateTime) => void;
|
|
126
132
|
}
|
|
127
133
|
export {};
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useCalendarCellProps = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
-
const date_utils_1 = require("@gravity-ui/date-utils");
|
|
7
6
|
function useCalendarCellProps(date, state) {
|
|
8
7
|
const ref = react_1.default.useRef(null);
|
|
9
8
|
const isFocused = state.isCellFocused(date);
|
|
@@ -23,7 +22,7 @@ function useCalendarCellProps(date, state) {
|
|
|
23
22
|
const isOutsideCurrentRange = state.mode === 'days' ? !state.focusedDate.isSame(date, 'month') : false;
|
|
24
23
|
const isUnavailable = state.isCellUnavailable(date);
|
|
25
24
|
const isSelectable = !isDisabled && !isUnavailable;
|
|
26
|
-
const isCurrent =
|
|
25
|
+
const isCurrent = state.isCurrent(date);
|
|
27
26
|
const isWeekend = state.isWeekend(date);
|
|
28
27
|
const label = getDateLabel(date, state.mode);
|
|
29
28
|
const cellProps = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
import type { CalendarState, RangeCalendarState } from './types';
|
|
3
3
|
export declare function useCalendarGridProps(state: CalendarState | RangeCalendarState): {
|
|
4
|
-
gridProps:
|
|
4
|
+
gridProps: import("react").HTMLAttributes<HTMLElement>;
|
|
5
5
|
};
|
package/dist/{esm/components/CalendarBase → cjs/components/CalendarView}/hooks/useCalendarState.d.ts
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
2
|
import type { ValueBase } from '../../types';
|
|
3
3
|
import type { CalendarState, CalendarStateOptionsBase } from './types';
|
|
4
|
-
export interface CalendarStateOptions extends ValueBase<
|
|
4
|
+
export interface CalendarStateOptions<T = DateTime> extends ValueBase<T | null, T>, CalendarStateOptionsBase {
|
|
5
5
|
}
|
|
6
6
|
export type { CalendarState } from './types';
|
|
7
7
|
export declare function useCalendarState(props: CalendarStateOptions): CalendarState;
|
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useCalendarState = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
-
const
|
|
6
|
+
const date_utils_1 = require("@gravity-ui/date-utils");
|
|
7
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
|
7
8
|
const dates_1 = require("../../utils/dates");
|
|
9
|
+
const useDefaultTimeZone_1 = require("../../utils/useDefaultTimeZone");
|
|
8
10
|
const utils_1 = require("../utils");
|
|
9
11
|
const defaultModes = {
|
|
10
12
|
days: true,
|
|
@@ -13,25 +15,34 @@ const defaultModes = {
|
|
|
13
15
|
years: true,
|
|
14
16
|
};
|
|
15
17
|
function useCalendarState(props) {
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
const [
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
const { disabled, readOnly, modes = defaultModes } = props;
|
|
20
|
+
const [value, setValue] = (0, uikit_1.useControlledState)(props.value, (_a = props.defaultValue) !== null && _a !== void 0 ? _a : null, props.onUpdate);
|
|
19
21
|
const availableModes = utils_1.calendarLayouts.filter((l) => modes[l]);
|
|
20
22
|
const minMode = availableModes[0] || 'days';
|
|
23
|
+
const [mode, setMode] = (0, uikit_1.useControlledState)(props.mode, (_b = props.defaultMode) !== null && _b !== void 0 ? _b : minMode, props.onUpdateMode);
|
|
21
24
|
const currentMode = mode && availableModes.includes(mode) ? mode : minMode;
|
|
25
|
+
const inputTimeZone = (0, useDefaultTimeZone_1.useDefaultTimeZone)(props.value || props.defaultValue || props.focusedValue || props.defaultFocusedValue);
|
|
26
|
+
const timeZone = props.timeZone || inputTimeZone;
|
|
27
|
+
const minValue = react_1.default.useMemo(() => (props.minValue ? props.minValue.timeZone(timeZone) : undefined), [timeZone, props.minValue]);
|
|
28
|
+
const maxValue = react_1.default.useMemo(() => (props.maxValue ? props.maxValue.timeZone(timeZone) : undefined), [timeZone, props.maxValue]);
|
|
22
29
|
const focusedValue = react_1.default.useMemo(() => {
|
|
23
30
|
if (!props.focusedValue) {
|
|
24
31
|
return props.focusedValue;
|
|
25
32
|
}
|
|
26
|
-
return (0, utils_1.constrainValue)(props.focusedValue, minValue, maxValue);
|
|
27
|
-
}, [props.focusedValue, minValue, maxValue]);
|
|
33
|
+
return (0, utils_1.constrainValue)(props.focusedValue.timeZone(timeZone), minValue, maxValue);
|
|
34
|
+
}, [props.focusedValue, minValue, maxValue, timeZone]);
|
|
28
35
|
const defaultFocusedValue = react_1.default.useMemo(() => {
|
|
29
|
-
|
|
36
|
+
var _a;
|
|
37
|
+
const defaultValue = ((_a = (props.defaultFocusedValue ? props.defaultFocusedValue : value)) === null || _a === void 0 ? void 0 : _a.timeZone(timeZone)) ||
|
|
30
38
|
(0, dates_1.createPlaceholderValue)({ timeZone }).startOf(minMode);
|
|
31
39
|
return (0, utils_1.constrainValue)(defaultValue, minValue, maxValue);
|
|
32
40
|
}, [maxValue, minValue, props.defaultFocusedValue, timeZone, value, minMode]);
|
|
33
|
-
const [focusedDateInner, setFocusedDate] = (0,
|
|
34
|
-
|
|
41
|
+
const [focusedDateInner, setFocusedDate] = (0, uikit_1.useControlledState)(focusedValue, defaultFocusedValue, (date) => {
|
|
42
|
+
var _a;
|
|
43
|
+
(_a = props.onFocusUpdate) === null || _a === void 0 ? void 0 : _a.call(props, date.timeZone(inputTimeZone));
|
|
44
|
+
});
|
|
45
|
+
const focusedDate = (_c = focusedDateInner === null || focusedDateInner === void 0 ? void 0 : focusedDateInner.timeZone(timeZone)) !== null && _c !== void 0 ? _c : (0, utils_1.constrainValue)((0, dates_1.createPlaceholderValue)({ timeZone }), minValue, maxValue);
|
|
35
46
|
if (isInvalid(focusedDate, minValue, maxValue)) {
|
|
36
47
|
// If the focused date was moved to an invalid value, it can't be focused, so constrain it.
|
|
37
48
|
setFocusedDate((0, utils_1.constrainValue)(focusedDate, minValue, maxValue));
|
|
@@ -46,16 +57,24 @@ function useCalendarState(props) {
|
|
|
46
57
|
disabled,
|
|
47
58
|
readOnly,
|
|
48
59
|
value,
|
|
49
|
-
setValue
|
|
60
|
+
setValue(date) {
|
|
61
|
+
if (!disabled && !readOnly) {
|
|
62
|
+
let newValue = (0, utils_1.constrainValue)(date, minValue, maxValue);
|
|
63
|
+
if (this.isCellUnavailable(newValue)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (value) {
|
|
67
|
+
// If there is a date already selected, then we want to keep its time
|
|
68
|
+
newValue = (0, dates_1.mergeDateTime)(newValue, value.timeZone(timeZone));
|
|
69
|
+
}
|
|
70
|
+
setValue(newValue.timeZone(inputTimeZone));
|
|
71
|
+
}
|
|
72
|
+
},
|
|
50
73
|
timeZone,
|
|
51
74
|
selectDate(date, force = false) {
|
|
52
75
|
if (!disabled) {
|
|
53
76
|
if (!readOnly && (force || this.mode === minMode)) {
|
|
54
|
-
|
|
55
|
-
if (this.isCellUnavailable(newValue)) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
setValue(newValue);
|
|
77
|
+
this.setValue(date.startOf(minMode));
|
|
59
78
|
if (force && currentMode !== minMode) {
|
|
60
79
|
setMode(minMode);
|
|
61
80
|
}
|
|
@@ -131,15 +150,15 @@ function useCalendarState(props) {
|
|
|
131
150
|
focusCell(getEndDate(focusedDate, this.mode));
|
|
132
151
|
},
|
|
133
152
|
zoomIn() {
|
|
134
|
-
const
|
|
135
|
-
if (
|
|
136
|
-
this.setMode(
|
|
153
|
+
const nextMode = availableModes[availableModes.indexOf(this.mode) - 1];
|
|
154
|
+
if (nextMode) {
|
|
155
|
+
this.setMode(nextMode);
|
|
137
156
|
}
|
|
138
157
|
},
|
|
139
158
|
zoomOut() {
|
|
140
|
-
const
|
|
141
|
-
if (
|
|
142
|
-
this.setMode(
|
|
159
|
+
const nextMode = availableModes[availableModes.indexOf(this.mode) + 1];
|
|
160
|
+
if (nextMode) {
|
|
161
|
+
this.setMode(nextMode);
|
|
143
162
|
}
|
|
144
163
|
},
|
|
145
164
|
selectFocusedDate() {
|
|
@@ -159,8 +178,8 @@ function useCalendarState(props) {
|
|
|
159
178
|
return this.isInvalid(next);
|
|
160
179
|
},
|
|
161
180
|
isSelected(date) {
|
|
162
|
-
return
|
|
163
|
-
date.isSame(value
|
|
181
|
+
return Boolean(value &&
|
|
182
|
+
date.isSame(value.timeZone(timeZone), currentMode) &&
|
|
164
183
|
!this.isCellDisabled(date));
|
|
165
184
|
},
|
|
166
185
|
isCellUnavailable(date) {
|
|
@@ -180,6 +199,9 @@ function useCalendarState(props) {
|
|
|
180
199
|
isWeekend(date) {
|
|
181
200
|
return this.mode === 'days' && [0, 6].includes(date.day());
|
|
182
201
|
},
|
|
202
|
+
isCurrent(date) {
|
|
203
|
+
return (0, date_utils_1.dateTime)({ timeZone }).isSame(date, this.mode);
|
|
204
|
+
},
|
|
183
205
|
mode: currentMode,
|
|
184
206
|
setMode,
|
|
185
207
|
availableModes,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DateTime } from '@gravity-ui/date-utils';
|
|
2
|
+
import type { RangeValue } from '../../types';
|
|
3
|
+
import type { RangeCalendarState } from './types';
|
|
4
|
+
import type { CalendarStateOptions } from './useCalendarState';
|
|
5
|
+
export interface RangeCalendarStateOptions extends CalendarStateOptions<RangeValue<DateTime>> {
|
|
6
|
+
}
|
|
7
|
+
export type { RangeCalendarState } from './types';
|
|
8
|
+
export declare function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState;
|
|
@@ -3,19 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useRangeCalendarState = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
-
const
|
|
6
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
|
7
|
+
const dates_1 = require("../../utils/dates");
|
|
8
|
+
const useDefaultTimeZone_1 = require("../../utils/useDefaultTimeZone");
|
|
7
9
|
const utils_1 = require("../utils");
|
|
8
10
|
const useCalendarState_1 = require("./useCalendarState");
|
|
9
11
|
function useRangeCalendarState(props) {
|
|
10
|
-
var _a
|
|
11
|
-
const { value: valueProp, defaultValue, onUpdate } = props, calendarProps = tslib_1.__rest(props, ["value", "defaultValue", "onUpdate"]);
|
|
12
|
-
const [value, setValue] = (0,
|
|
12
|
+
var _a;
|
|
13
|
+
const { value: valueProp, defaultValue = null, onUpdate } = props, calendarProps = tslib_1.__rest(props, ["value", "defaultValue", "onUpdate"]);
|
|
14
|
+
const [value, setValue] = (0, uikit_1.useControlledState)(valueProp, defaultValue, onUpdate);
|
|
13
15
|
const [anchorDate, setAnchorDateState] = react_1.default.useState();
|
|
14
|
-
const
|
|
16
|
+
const inputTimeZone = (0, useDefaultTimeZone_1.useDefaultTimeZone)((valueProp === null || valueProp === void 0 ? void 0 : valueProp.start) || (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.start) || props.focusedValue || props.defaultFocusedValue);
|
|
17
|
+
const timeZone = props.timeZone || inputTimeZone;
|
|
18
|
+
const calendar = (0, useCalendarState_1.useCalendarState)(Object.assign(Object.assign({}, calendarProps), { value: null, timeZone }));
|
|
15
19
|
const highlightedRange = anchorDate
|
|
16
20
|
? makeRange(anchorDate, calendar.focusedDate, calendar.mode)
|
|
17
|
-
: (
|
|
21
|
+
: (_a = (value &&
|
|
22
|
+
makeRange(value.start.timeZone(timeZone), value.end.timeZone(timeZone), calendar.mode))) !== null && _a !== void 0 ? _a : undefined;
|
|
18
23
|
const minMode = calendar.availableModes[0];
|
|
24
|
+
const handleSetValue = (v) => {
|
|
25
|
+
let { start, end } = v;
|
|
26
|
+
if (value) {
|
|
27
|
+
start = (0, dates_1.mergeDateTime)(start, value.start.timeZone(timeZone));
|
|
28
|
+
end = (0, dates_1.mergeDateTime)(end, value.end.timeZone(timeZone));
|
|
29
|
+
}
|
|
30
|
+
setValue({ start: start.timeZone(inputTimeZone), end: end.timeZone(inputTimeZone) });
|
|
31
|
+
};
|
|
19
32
|
const selectDate = (date, force = false) => {
|
|
20
33
|
if (props.disabled) {
|
|
21
34
|
return;
|
|
@@ -27,22 +40,20 @@ function useRangeCalendarState(props) {
|
|
|
27
40
|
if (props.readOnly) {
|
|
28
41
|
return;
|
|
29
42
|
}
|
|
30
|
-
|
|
31
|
-
if (calendar.isCellUnavailable(
|
|
43
|
+
const newDate = (0, utils_1.constrainValue)(date, calendar.minValue, calendar.maxValue);
|
|
44
|
+
if (calendar.isCellUnavailable(newDate)) {
|
|
32
45
|
return;
|
|
33
46
|
}
|
|
34
47
|
if (anchorDate) {
|
|
35
|
-
const range = makeRange(anchorDate,
|
|
36
|
-
|
|
48
|
+
const range = makeRange(anchorDate, newDate, calendar.mode);
|
|
49
|
+
handleSetValue(range);
|
|
37
50
|
setAnchorDateState(undefined);
|
|
38
51
|
}
|
|
39
52
|
else {
|
|
40
|
-
setAnchorDateState(
|
|
53
|
+
setAnchorDateState(newDate);
|
|
41
54
|
}
|
|
42
55
|
};
|
|
43
|
-
return Object.assign(Object.assign({}, calendar), { value,
|
|
44
|
-
setValue,
|
|
45
|
-
selectDate,
|
|
56
|
+
return Object.assign(Object.assign({}, calendar), { value, setValue: handleSetValue, selectDate,
|
|
46
57
|
anchorDate, setAnchorDate: setAnchorDateState, highlightedRange,
|
|
47
58
|
isSelected(date) {
|
|
48
59
|
if (!highlightedRange) {
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { DateFieldStateOptions } from './hooks/useDateFieldState';
|
|
1
|
+
import type { DateFieldProps } from './hooks/useDateFieldProps';
|
|
3
2
|
import './DateField.css';
|
|
4
|
-
export interface DateFieldProps extends DateFieldStateOptions, TextInputProps, TextInputExtendProps, DomProps, FocusableProps, KeyboardEvents, StyleProps, AccessibilityProps {
|
|
5
|
-
}
|
|
6
3
|
export declare function DateField({ className, ...props }: DateFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -20,6 +20,8 @@ function DateField(_a) {
|
|
|
20
20
|
setActive(isFocusWithin);
|
|
21
21
|
},
|
|
22
22
|
});
|
|
23
|
-
return ((0, jsx_runtime_1.
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: b(null, className), style: props.style }, focusWithinProps, { children: [(0, jsx_runtime_1.jsx)(uikit_1.TextInput, Object.assign({}, inputProps, { value: state.isEmpty && !isActive && props.placeholder ? '' : inputProps.value })), (0, jsx_runtime_1.jsx)("input", { type: "text", hidden: true, name: props.name, value: state.value ? state.value.toISOString() : '',
|
|
24
|
+
// Ignore React warning
|
|
25
|
+
onChange: () => { } })] })));
|
|
24
26
|
}
|
|
25
27
|
exports.DateField = DateField;
|