@gravity-ui/date-components 1.6.0 → 2.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/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/cjs/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.js +17 -0
- 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/CalendarView/i18n/en.json +7 -0
- package/dist/cjs/components/CalendarView/i18n/index.d.ts +1 -0
- package/dist/cjs/components/CalendarView/i18n/ru.json +7 -0
- 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 +8 -6
- package/dist/cjs/components/DatePicker/MobileCalendar.css +7 -32
- package/dist/cjs/components/DatePicker/MobileCalendar.d.ts +0 -5
- package/dist/cjs/components/DatePicker/MobileCalendar.js +18 -20
- package/dist/cjs/components/DatePicker/StubButton.css +26 -0
- package/dist/cjs/components/DatePicker/StubButton.d.ts +8 -0
- package/dist/cjs/components/DatePicker/StubButton.js +12 -0
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +7 -17
- 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 +15 -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/esm/components/{CalendarBase → CalendarView}/hooks/useCalendarProps.js +17 -0
- 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/CalendarView/i18n/en.json +7 -0
- package/dist/esm/components/CalendarView/i18n/index.d.ts +1 -0
- package/dist/esm/components/CalendarView/i18n/ru.json +7 -0
- 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 +10 -8
- package/dist/esm/components/DatePicker/MobileCalendar.css +7 -32
- package/dist/esm/components/DatePicker/MobileCalendar.d.ts +0 -5
- package/dist/esm/components/DatePicker/MobileCalendar.js +17 -18
- package/dist/esm/components/DatePicker/StubButton.css +26 -0
- package/dist/esm/components/DatePicker/StubButton.d.ts +8 -0
- package/dist/esm/components/DatePicker/StubButton.js +8 -0
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +7 -17
- 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 +17 -4
- 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 +28 -28
- package/dist/cjs/components/CalendarBase/hooks/useRangeCalendarState.d.ts +0 -7
- package/dist/cjs/components/CalendarBase/i18n/en.json +0 -4
- package/dist/cjs/components/CalendarBase/i18n/index.d.ts +0 -1
- package/dist/cjs/components/CalendarBase/i18n/ru.json +0 -4
- 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/CalendarBase/i18n/en.json +0 -4
- package/dist/esm/components/CalendarBase/i18n/index.d.ts +0 -1
- package/dist/esm/components/CalendarBase/i18n/ru.json +0 -4
- 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}/i18n/index.js +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}/i18n/index.js +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/utils.d.ts +0 -0
- /package/dist/esm/components/{CalendarBase → CalendarView}/utils.js +0 -0
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cleanString = exports.splitFormatIntoSections = exports.setSegment = exports.addSegment = exports.getDurationUnitFromSectionType = exports.getSectionValue = exports.getSectionLimits = exports.expandFormat = void 0;
|
|
3
|
+
exports.useFormatSections = exports.isAllSegmentsValid = exports.parseDateFromString = exports.formatSections = exports.getCurrentEditableSectionIndex = exports.toEditableSection = exports.isEditableSection = exports.getEditableSections = exports.cleanString = exports.splitFormatIntoSections = exports.setSegment = exports.addSegment = exports.getDurationUnitFromSectionType = exports.getSectionValue = exports.getSectionLimits = exports.expandFormat = exports.EDITABLE_SEGMENTS = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
4
6
|
const date_utils_1 = require("@gravity-ui/date-utils");
|
|
7
|
+
const dates_1 = require("../utils/dates");
|
|
5
8
|
const i18n_1 = require("./i18n");
|
|
9
|
+
exports.EDITABLE_SEGMENTS = {
|
|
10
|
+
year: true,
|
|
11
|
+
month: true,
|
|
12
|
+
day: true,
|
|
13
|
+
hour: true,
|
|
14
|
+
minute: true,
|
|
15
|
+
second: true,
|
|
16
|
+
dayPeriod: true,
|
|
17
|
+
weekday: true,
|
|
18
|
+
};
|
|
6
19
|
function expandFormat(format) {
|
|
7
20
|
const localeFormats = date_utils_1.settings.getLocaleData().formats;
|
|
8
21
|
const getShortLocalizedFormatFromLongLocalizedFormat = (formatBis) => formatBis.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (_, escapeSequence, localizedFormat) => escapeSequence || localizedFormat.slice(1));
|
|
@@ -320,7 +333,7 @@ function splitFormatIntoSections(format) {
|
|
|
320
333
|
let isSeparator = false;
|
|
321
334
|
let isInEscapeBoundary = false;
|
|
322
335
|
for (let i = 0; i < expandedFormat.length; i++) {
|
|
323
|
-
const char = expandedFormat[i];
|
|
336
|
+
const char = expandedFormat[i] || '';
|
|
324
337
|
if (isInEscapeBoundary) {
|
|
325
338
|
if (char === escapedCharacters.end) {
|
|
326
339
|
isInEscapeBoundary = false;
|
|
@@ -419,3 +432,102 @@ function cleanString(dirtyString) {
|
|
|
419
432
|
return dirtyString.replace(/[\u2066\u2067\u2068\u2069]/g, '');
|
|
420
433
|
}
|
|
421
434
|
exports.cleanString = cleanString;
|
|
435
|
+
function getEditableSections(sections, value, validSegments) {
|
|
436
|
+
let position = 1;
|
|
437
|
+
const newSections = [];
|
|
438
|
+
let previousEditableSection = -1;
|
|
439
|
+
for (let i = 0; i < sections.length; i++) {
|
|
440
|
+
const section = sections[i];
|
|
441
|
+
if (!section) {
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
const newSection = toEditableSection(section, value, validSegments, position, previousEditableSection);
|
|
445
|
+
newSections.push(newSection);
|
|
446
|
+
if (isEditableSection(section)) {
|
|
447
|
+
for (let j = Math.max(0, previousEditableSection); j <= i; j++) {
|
|
448
|
+
const prevSection = newSections[j];
|
|
449
|
+
if (prevSection) {
|
|
450
|
+
prevSection.nextEditableSection = i;
|
|
451
|
+
if (prevSection.previousEditableSection === -1) {
|
|
452
|
+
prevSection.previousEditableSection = i;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
previousEditableSection = i;
|
|
457
|
+
}
|
|
458
|
+
position += newSection.textValue.length;
|
|
459
|
+
}
|
|
460
|
+
return newSections;
|
|
461
|
+
}
|
|
462
|
+
exports.getEditableSections = getEditableSections;
|
|
463
|
+
function isEditableSection(section) {
|
|
464
|
+
var _a;
|
|
465
|
+
return (_a = exports.EDITABLE_SEGMENTS[section.type]) !== null && _a !== void 0 ? _a : false;
|
|
466
|
+
}
|
|
467
|
+
exports.isEditableSection = isEditableSection;
|
|
468
|
+
function toEditableSection(section, value, validSegments, position, previousEditableSection) {
|
|
469
|
+
const isEditable = isEditableSection(section);
|
|
470
|
+
let renderedValue = section.placeholder;
|
|
471
|
+
if ((isEditable && validSegments[section.type]) || section.type === 'timeZoneName') {
|
|
472
|
+
renderedValue = value.format(section.format);
|
|
473
|
+
if (section.contentType === 'digit' && renderedValue.length < section.placeholder.length) {
|
|
474
|
+
renderedValue = renderedValue.padStart(section.placeholder.length, '0');
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
// use bidirectional context to allow the browser autodetect text direction
|
|
478
|
+
renderedValue = '\u2068' + renderedValue + '\u2069';
|
|
479
|
+
const sectionLength = renderedValue.length;
|
|
480
|
+
const newSection = Object.assign(Object.assign(Object.assign({}, section), { value: getSectionValue(section, value), textValue: renderedValue, start: position, end: position + sectionLength, modified: false, previousEditableSection, nextEditableSection: previousEditableSection }), getSectionLimits(section, value));
|
|
481
|
+
return newSection;
|
|
482
|
+
}
|
|
483
|
+
exports.toEditableSection = toEditableSection;
|
|
484
|
+
function getCurrentEditableSectionIndex(sections, selectedSections) {
|
|
485
|
+
const currentIndex = selectedSections === 'all' || selectedSections === -1 ? 0 : selectedSections;
|
|
486
|
+
const section = sections[currentIndex];
|
|
487
|
+
if (section && !exports.EDITABLE_SEGMENTS[section.type]) {
|
|
488
|
+
return section.nextEditableSection;
|
|
489
|
+
}
|
|
490
|
+
return section ? currentIndex : -1;
|
|
491
|
+
}
|
|
492
|
+
exports.getCurrentEditableSectionIndex = getCurrentEditableSectionIndex;
|
|
493
|
+
function formatSections(sections) {
|
|
494
|
+
// use ltr direction context to get predictable navigation inside input
|
|
495
|
+
return '\u2066' + sections.map((s) => s.textValue).join('') + '\u2069';
|
|
496
|
+
}
|
|
497
|
+
exports.formatSections = formatSections;
|
|
498
|
+
function parseDate(options) {
|
|
499
|
+
let date = (0, date_utils_1.dateTime)(options);
|
|
500
|
+
if (!(0, date_utils_1.isValid)(date)) {
|
|
501
|
+
date = (0, date_utils_1.dateTime)(Object.assign(Object.assign({}, options), { format: undefined }));
|
|
502
|
+
}
|
|
503
|
+
return date;
|
|
504
|
+
}
|
|
505
|
+
function isDateStringWithTimeZone(str) {
|
|
506
|
+
return /z$/i.test(str) || /[+-]\d\d:\d\d$/.test(str);
|
|
507
|
+
}
|
|
508
|
+
function parseDateFromString(str, format, timeZone) {
|
|
509
|
+
let date = parseDate({ input: str, format, timeZone });
|
|
510
|
+
if ((0, date_utils_1.isValid)(date)) {
|
|
511
|
+
if (timeZone && !isDateStringWithTimeZone(str)) {
|
|
512
|
+
const time = parseDate({ input: str, format });
|
|
513
|
+
date = (0, dates_1.mergeDateTime)(date, time);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
return date;
|
|
517
|
+
}
|
|
518
|
+
exports.parseDateFromString = parseDateFromString;
|
|
519
|
+
function isAllSegmentsValid(allSegments, validSegments) {
|
|
520
|
+
return Object.keys(allSegments).every((key) => validSegments[key]);
|
|
521
|
+
}
|
|
522
|
+
exports.isAllSegmentsValid = isAllSegmentsValid;
|
|
523
|
+
function useFormatSections(format) {
|
|
524
|
+
const usedFormat = format;
|
|
525
|
+
const [sections, setSections] = react_1.default.useState(() => splitFormatIntoSections(usedFormat));
|
|
526
|
+
const [previousFormat, setFormat] = react_1.default.useState(usedFormat);
|
|
527
|
+
if (usedFormat !== previousFormat) {
|
|
528
|
+
setFormat(usedFormat);
|
|
529
|
+
setSections(splitFormatIntoSections(usedFormat));
|
|
530
|
+
}
|
|
531
|
+
return sections;
|
|
532
|
+
}
|
|
533
|
+
exports.useFormatSections = useFormatSections;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import type { AccessibilityProps, DateFieldBase, DomProps, FocusableProps, KeyboardEvents, StyleProps, TextInputProps } from '../types';
|
|
2
|
+
import type { CalendarProps } from '../Calendar';
|
|
3
|
+
import type { AccessibilityProps, DateFieldBase, DomProps, FocusableProps, InputDOMProps, KeyboardEvents, StyleProps, TextInputProps } from '../types';
|
|
4
4
|
import './DatePicker.css';
|
|
5
|
-
export interface DatePickerProps extends DateFieldBase, TextInputProps, FocusableProps, KeyboardEvents, DomProps, StyleProps, AccessibilityProps {
|
|
5
|
+
export interface DatePickerProps extends DateFieldBase, TextInputProps, FocusableProps, KeyboardEvents, DomProps, InputDOMProps, StyleProps, AccessibilityProps {
|
|
6
6
|
children?: (props: CalendarProps) => React.ReactNode;
|
|
7
7
|
}
|
|
8
|
-
export declare function DatePicker({
|
|
8
|
+
export declare function DatePicker({ className, ...props }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -9,18 +9,20 @@ const uikit_1 = require("@gravity-ui/uikit");
|
|
|
9
9
|
const Calendar_1 = require("../Calendar");
|
|
10
10
|
const DateField_1 = require("../DateField");
|
|
11
11
|
const MobileCalendar_1 = require("./MobileCalendar");
|
|
12
|
+
const StubButton_1 = require("./StubButton");
|
|
12
13
|
const useDatePickerProps_1 = require("./hooks/useDatePickerProps");
|
|
13
14
|
const useDatePickerState_1 = require("./hooks/useDatePickerState");
|
|
14
15
|
const utils_1 = require("./utils");
|
|
15
16
|
require("./DatePicker.css");
|
|
16
17
|
function DatePicker(_a) {
|
|
17
|
-
var {
|
|
18
|
+
var { className } = _a, props = tslib_1.__rest(_a, ["className"]);
|
|
18
19
|
const anchorRef = react_1.default.useRef(null);
|
|
19
|
-
const state = (0, useDatePickerState_1.useDatePickerState)(
|
|
20
|
-
defaultValue,
|
|
21
|
-
onUpdate }));
|
|
20
|
+
const state = (0, useDatePickerState_1.useDatePickerState)(props);
|
|
22
21
|
const { groupProps, fieldProps, calendarButtonProps, popupProps, calendarProps, timeInputProps } = (0, useDatePickerProps_1.useDatePickerProps)(state, props);
|
|
23
|
-
const
|
|
24
|
-
|
|
22
|
+
const isMobile = (0, uikit_1.useMobile)();
|
|
23
|
+
const isOnlyTime = state.hasTime && !state.hasDate;
|
|
24
|
+
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: (0, utils_1.b)(null, className) }, groupProps, { children: [isMobile ? ((0, jsx_runtime_1.jsx)(MobileCalendar_1.MobileCalendar, { props: props, state: state })) : (!isOnlyTime && ((0, jsx_runtime_1.jsx)("div", { ref: anchorRef, className: (0, utils_1.b)('popup-anchor'), children: (0, jsx_runtime_1.jsx)(uikit_1.Popup, Object.assign({ anchorRef: anchorRef }, popupProps, { children: (0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.b)('popup-content'), children: [typeof props.children === 'function' ? (props.children(calendarProps)) : ((0, jsx_runtime_1.jsx)(Calendar_1.Calendar, Object.assign({}, calendarProps))), state.hasTime && ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.b)('time-field-wrapper'), children: (0, jsx_runtime_1.jsx)(DateField_1.DateField, Object.assign({}, timeInputProps)) }))] }) })) }))), (0, jsx_runtime_1.jsx)(uikit_1.TextInput, Object.assign({}, fieldProps, { className: (0, utils_1.b)('field', { mobile: isMobile }), hasClear: !isMobile && fieldProps.hasClear, endContent: (0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [!isMobile && !isOnlyTime && ((0, jsx_runtime_1.jsx)(uikit_1.Button, Object.assign({}, calendarButtonProps, { children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { data: icons_1.Calendar }) }))), !isMobile && isOnlyTime && ((0, jsx_runtime_1.jsx)(StubButton_1.StubButton, { size: calendarButtonProps.size, icon: icons_1.Clock })), isMobile && ((0, jsx_runtime_1.jsx)(StubButton_1.StubButton, { size: calendarButtonProps.size, icon: isOnlyTime ? icons_1.Clock : icons_1.Calendar }))] }) })), (0, jsx_runtime_1.jsx)("input", { type: "text", hidden: true, name: props.name, value: state.value ? state.value.toISOString() : '',
|
|
25
|
+
// Ignore React warning
|
|
26
|
+
onChange: () => { } })] })));
|
|
25
27
|
}
|
|
26
28
|
exports.DatePicker = DatePicker;
|
|
@@ -1,35 +1,10 @@
|
|
|
1
1
|
.g-date-mobile-calendar {
|
|
2
|
-
position: relative;
|
|
3
|
-
display: inline-block;
|
|
4
|
-
width: 24px;
|
|
5
|
-
height: 24px;
|
|
6
|
-
}
|
|
7
|
-
.g-date-mobile-calendar_size_xs {
|
|
8
|
-
width: 20px;
|
|
9
|
-
height: 20px;
|
|
10
|
-
}
|
|
11
|
-
.g-date-mobile-calendar_size_m {
|
|
12
|
-
width: 28px;
|
|
13
|
-
height: 28px;
|
|
14
|
-
}
|
|
15
|
-
.g-date-mobile-calendar_size_l {
|
|
16
|
-
width: 36px;
|
|
17
|
-
height: 36px;
|
|
18
|
-
}
|
|
19
|
-
.g-date-mobile-calendar__button {
|
|
20
|
-
position: absolute;
|
|
21
|
-
inset: 0;
|
|
22
|
-
display: flex;
|
|
23
|
-
justify-content: center;
|
|
24
|
-
align-items: center;
|
|
25
|
-
}
|
|
26
|
-
.g-date-mobile-calendar__input {
|
|
27
2
|
position: absolute;
|
|
28
3
|
z-index: 1;
|
|
29
|
-
|
|
30
|
-
|
|
4
|
+
inset-block-start: 0;
|
|
5
|
+
inset-inline-start: 0;
|
|
31
6
|
box-sizing: border-box;
|
|
32
|
-
width: 100%;
|
|
7
|
+
min-width: 100%;
|
|
33
8
|
height: 100%;
|
|
34
9
|
margin: 0;
|
|
35
10
|
padding: 0;
|
|
@@ -37,11 +12,11 @@
|
|
|
37
12
|
opacity: 0;
|
|
38
13
|
border: none;
|
|
39
14
|
}
|
|
40
|
-
.g-date-mobile-
|
|
15
|
+
.g-date-mobile-calendar::-webkit-calendar-picker-indicator {
|
|
41
16
|
position: absolute;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
width: 100%;
|
|
17
|
+
inset-block-start: 0;
|
|
18
|
+
inset-inline-start: 0;
|
|
19
|
+
min-width: 100%;
|
|
45
20
|
height: 100%;
|
|
46
21
|
margin: 0;
|
|
47
22
|
padding: 0;
|
|
@@ -6,9 +6,4 @@ interface MobileCalendarProps {
|
|
|
6
6
|
state: DatePickerState;
|
|
7
7
|
}
|
|
8
8
|
export declare function MobileCalendar({ props, state }: MobileCalendarProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
interface MobileCalendarIconProps {
|
|
10
|
-
props: DatePickerProps;
|
|
11
|
-
state: DatePickerState;
|
|
12
|
-
}
|
|
13
|
-
export declare function MobileCalendarIcon({ props }: MobileCalendarIconProps): import("react/jsx-runtime").JSX.Element;
|
|
14
9
|
export {};
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.MobileCalendar = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const date_utils_1 = require("@gravity-ui/date-utils");
|
|
6
|
-
const icons_1 = require("@gravity-ui/icons");
|
|
7
|
-
const uikit_1 = require("@gravity-ui/uikit");
|
|
8
6
|
const cn_1 = require("../../utils/cn");
|
|
9
7
|
const dates_1 = require("../utils/dates");
|
|
10
|
-
const getButtonSizeForInput_1 = require("../utils/getButtonSizeForInput");
|
|
11
8
|
require("./MobileCalendar.css");
|
|
12
9
|
const b = (0, cn_1.block)('mobile-calendar');
|
|
13
10
|
function MobileCalendar({ props, state }) {
|
|
11
|
+
var _a, _b;
|
|
14
12
|
let type = 'date';
|
|
15
13
|
if (state.hasTime && state.hasDate) {
|
|
16
14
|
type = 'datetime-local';
|
|
@@ -18,31 +16,35 @@ function MobileCalendar({ props, state }) {
|
|
|
18
16
|
else if (state.hasTime) {
|
|
19
17
|
type = 'time';
|
|
20
18
|
}
|
|
21
|
-
return ((0, jsx_runtime_1.jsx)("input", { className: b(
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("input", { className: b(), disabled: props.disabled, type: type, value: formatNative(state.dateFieldState.displayValue, type), id: props.id, min: formatNative((_a = props.minValue) === null || _a === void 0 ? void 0 : _a.timeZone(state.timeZone), type), max: formatNative((_b = props.maxValue) === null || _b === void 0 ? void 0 : _b.timeZone(state.timeZone), type), tabIndex: -1, onChange: (e) => {
|
|
20
|
+
var _a, _b;
|
|
22
21
|
if (props.readOnly) {
|
|
23
22
|
return;
|
|
24
23
|
}
|
|
25
24
|
const newValue = e.target.value;
|
|
26
25
|
if (newValue) {
|
|
27
|
-
const localDate = (0, date_utils_1.dateTime)({
|
|
26
|
+
const localDate = (0, date_utils_1.dateTime)({
|
|
27
|
+
input: newValue,
|
|
28
|
+
format: getDateFormat(type),
|
|
29
|
+
timeZone: 'system',
|
|
30
|
+
}).timeZone(state.timeZone, true);
|
|
28
31
|
let newDate = state.hasDate
|
|
29
|
-
?
|
|
30
|
-
input: newValue,
|
|
31
|
-
format: getDateFormat(type),
|
|
32
|
-
timeZone: props.timeZone,
|
|
33
|
-
})
|
|
32
|
+
? localDate
|
|
34
33
|
: (0, dates_1.createPlaceholderValue)({
|
|
35
|
-
placeholderValue: props.placeholderValue,
|
|
36
|
-
timeZone:
|
|
34
|
+
placeholderValue: (_a = props.placeholderValue) === null || _a === void 0 ? void 0 : _a.timeZone(state.timeZone),
|
|
35
|
+
timeZone: state.timeZone,
|
|
37
36
|
});
|
|
38
37
|
if (state.hasTime) {
|
|
39
38
|
newDate = (0, dates_1.mergeDateTime)(newDate, localDate);
|
|
40
39
|
}
|
|
41
|
-
else if (state.
|
|
42
|
-
newDate = (0, dates_1.mergeDateTime)(newDate, state.
|
|
40
|
+
else if (state.value) {
|
|
41
|
+
newDate = (0, dates_1.mergeDateTime)(newDate, state.value.timeZone(state.timeZone));
|
|
43
42
|
}
|
|
44
43
|
else {
|
|
45
|
-
newDate =
|
|
44
|
+
newDate = (0, dates_1.mergeDateTime)(newDate, (0, dates_1.createPlaceholderValue)({
|
|
45
|
+
placeholderValue: (_b = props.placeholderValue) === null || _b === void 0 ? void 0 : _b.timeZone(state.timeZone),
|
|
46
|
+
timeZone: state.timeZone,
|
|
47
|
+
}));
|
|
46
48
|
}
|
|
47
49
|
state.setValue(newDate);
|
|
48
50
|
}
|
|
@@ -52,10 +54,6 @@ function MobileCalendar({ props, state }) {
|
|
|
52
54
|
} }));
|
|
53
55
|
}
|
|
54
56
|
exports.MobileCalendar = MobileCalendar;
|
|
55
|
-
function MobileCalendarIcon({ props }) {
|
|
56
|
-
return ((0, jsx_runtime_1.jsx)("span", { className: b({ size: (0, getButtonSizeForInput_1.getButtonSizeForInput)(props.size) }), children: (0, jsx_runtime_1.jsx)("span", { className: b('button'), children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { data: icons_1.Calendar }) }) }));
|
|
57
|
-
}
|
|
58
|
-
exports.MobileCalendarIcon = MobileCalendarIcon;
|
|
59
57
|
function getDateFormat(type) {
|
|
60
58
|
switch (type) {
|
|
61
59
|
case 'time': {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.g-date-stub-button {
|
|
2
|
+
position: relative;
|
|
3
|
+
display: inline-block;
|
|
4
|
+
width: 24px;
|
|
5
|
+
height: 24px;
|
|
6
|
+
}
|
|
7
|
+
.g-date-stub-button_size_xs {
|
|
8
|
+
width: 20px;
|
|
9
|
+
height: 20px;
|
|
10
|
+
}
|
|
11
|
+
.g-date-stub-button_size_m {
|
|
12
|
+
width: 28px;
|
|
13
|
+
height: 28px;
|
|
14
|
+
}
|
|
15
|
+
.g-date-stub-button_size_l {
|
|
16
|
+
width: 36px;
|
|
17
|
+
height: 36px;
|
|
18
|
+
}
|
|
19
|
+
.g-date-stub-button__icon {
|
|
20
|
+
position: absolute;
|
|
21
|
+
inset: 0;
|
|
22
|
+
display: flex;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
align-items: center;
|
|
25
|
+
color: var(--g-color-text-secondary);
|
|
26
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ButtonSize, IconData } from '@gravity-ui/uikit';
|
|
2
|
+
import './StubButton.css';
|
|
3
|
+
interface StubButtonProps {
|
|
4
|
+
size?: ButtonSize;
|
|
5
|
+
icon: IconData;
|
|
6
|
+
}
|
|
7
|
+
export declare function StubButton({ size, icon }: StubButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StubButton = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
|
6
|
+
const cn_1 = require("../../utils/cn");
|
|
7
|
+
require("./StubButton.css");
|
|
8
|
+
const b = (0, cn_1.block)('stub-button');
|
|
9
|
+
function StubButton({ size, icon }) {
|
|
10
|
+
return ((0, jsx_runtime_1.jsx)("span", { className: b({ size }), children: (0, jsx_runtime_1.jsx)("span", { className: b('icon'), children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { data: icon }) }) }));
|
|
11
|
+
}
|
|
12
|
+
exports.StubButton = StubButton;
|
|
@@ -9,7 +9,6 @@ const getButtonSizeForInput_1 = require("../../utils/getButtonSizeForInput");
|
|
|
9
9
|
const mergeProps_1 = require("../../utils/mergeProps");
|
|
10
10
|
const i18n_1 = require("../i18n");
|
|
11
11
|
function useDatePickerProps(state, _a) {
|
|
12
|
-
var _b;
|
|
13
12
|
var { onFocus, onBlur } = _a, props = tslib_1.__rest(_a, ["onFocus", "onBlur"]);
|
|
14
13
|
const [isActive, setActive] = react_1.default.useState(false);
|
|
15
14
|
const { focusWithinProps } = (0, uikit_1.useFocusWithin)({
|
|
@@ -23,15 +22,6 @@ function useDatePickerProps(state, _a) {
|
|
|
23
22
|
},
|
|
24
23
|
});
|
|
25
24
|
const { inputProps } = (0, DateField_1.useDateFieldProps)(state.dateFieldState, props);
|
|
26
|
-
let error;
|
|
27
|
-
let validationState = props.validationState;
|
|
28
|
-
if (validationState) {
|
|
29
|
-
error = validationState === 'invalid' ? props.errorMessage || true : undefined;
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
validationState = state.dateFieldState.validationState;
|
|
33
|
-
error = validationState === 'invalid';
|
|
34
|
-
}
|
|
35
25
|
const inputRef = react_1.default.useRef(null);
|
|
36
26
|
const handleRef = (0, uikit_1.useForkRef)(inputRef, inputProps.controlRef);
|
|
37
27
|
const calendarRef = react_1.default.useRef(null);
|
|
@@ -43,9 +33,10 @@ function useDatePickerProps(state, _a) {
|
|
|
43
33
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
44
34
|
});
|
|
45
35
|
}
|
|
36
|
+
const onlyTime = state.hasTime && !state.hasDate;
|
|
46
37
|
return {
|
|
47
38
|
groupProps: Object.assign(Object.assign({ ref: groupRef, tabIndex: -1, role: 'group' }, focusWithinProps), { style: props.style, 'aria-disabled': state.disabled || undefined, onKeyDown: (e) => {
|
|
48
|
-
if (e.altKey && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
|
|
39
|
+
if (!onlyTime && e.altKey && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
|
|
49
40
|
e.preventDefault();
|
|
50
41
|
e.stopPropagation();
|
|
51
42
|
state.setOpen(true);
|
|
@@ -53,7 +44,7 @@ function useDatePickerProps(state, _a) {
|
|
|
53
44
|
} }),
|
|
54
45
|
fieldProps: (0, mergeProps_1.mergeProps)(inputProps, state.dateFieldState.isEmpty && !isActive && props.placeholder
|
|
55
46
|
? { value: '' }
|
|
56
|
-
: undefined, { controlRef: handleRef
|
|
47
|
+
: undefined, { controlRef: handleRef }),
|
|
57
48
|
calendarButtonProps: {
|
|
58
49
|
ref: calendarButtonRef,
|
|
59
50
|
size: (0, getButtonSizeForInput_1.getButtonSizeForInput)(props.size),
|
|
@@ -84,7 +75,6 @@ function useDatePickerProps(state, _a) {
|
|
|
84
75
|
focusInput();
|
|
85
76
|
}
|
|
86
77
|
},
|
|
87
|
-
// @ts-expect-error focusTrap in popup was introduced in a newer version of uikit
|
|
88
78
|
focusTrap: true,
|
|
89
79
|
},
|
|
90
80
|
calendarProps: {
|
|
@@ -99,20 +89,20 @@ function useDatePickerProps(state, _a) {
|
|
|
99
89
|
focusInput();
|
|
100
90
|
}
|
|
101
91
|
},
|
|
102
|
-
|
|
103
|
-
value: state.dateValue,
|
|
92
|
+
value: state.dateFieldState.displayValue,
|
|
104
93
|
minValue: props.minValue,
|
|
105
94
|
maxValue: props.maxValue,
|
|
106
95
|
isDateUnavailable: props.isDateUnavailable,
|
|
107
|
-
timeZone:
|
|
96
|
+
timeZone: state.timeZone,
|
|
108
97
|
},
|
|
109
98
|
timeInputProps: {
|
|
110
99
|
value: state.timeValue,
|
|
100
|
+
placeholderValue: state.dateFieldState.displayValue,
|
|
111
101
|
onUpdate: state.setTimeValue,
|
|
112
102
|
format: state.timeFormat,
|
|
113
103
|
readOnly: state.readOnly,
|
|
114
104
|
disabled: state.disabled,
|
|
115
|
-
timeZone:
|
|
105
|
+
timeZone: state.timeZone,
|
|
116
106
|
hasClear: props.hasClear,
|
|
117
107
|
size: props.size,
|
|
118
108
|
},
|
|
@@ -6,21 +6,21 @@ export interface DatePickerState {
|
|
|
6
6
|
/** The currently selected date. */
|
|
7
7
|
value: DateTime | null;
|
|
8
8
|
/** Sets the selected date. */
|
|
9
|
-
setValue(value: DateTime | null)
|
|
9
|
+
setValue: (value: DateTime | null) => void;
|
|
10
10
|
/**
|
|
11
11
|
* The date portion of the value. This may be set prior to `value` if the user has
|
|
12
12
|
* selected a date but has not yet selected a time.
|
|
13
13
|
*/
|
|
14
14
|
dateValue: DateTime | null;
|
|
15
15
|
/** Sets the date portion of the value. */
|
|
16
|
-
setDateValue(value: DateTime)
|
|
16
|
+
setDateValue: (value: DateTime) => void;
|
|
17
17
|
/**
|
|
18
18
|
* The time portion of the value. This may be set prior to `value` if the user has
|
|
19
19
|
* selected a time but has not yet selected a date.
|
|
20
20
|
*/
|
|
21
21
|
timeValue: DateTime | null;
|
|
22
22
|
/** Sets the time portion of the value. */
|
|
23
|
-
setTimeValue(value: DateTime | null)
|
|
23
|
+
setTimeValue: (value: DateTime | null) => void;
|
|
24
24
|
/** Whether the field is read only. */
|
|
25
25
|
readOnly?: boolean;
|
|
26
26
|
/** Whether the field is disabled. */
|
|
@@ -33,10 +33,11 @@ export interface DatePickerState {
|
|
|
33
33
|
hasTime: boolean;
|
|
34
34
|
/** Format of the time when rendered in the input. */
|
|
35
35
|
timeFormat?: string;
|
|
36
|
+
timeZone: string;
|
|
36
37
|
/** Whether the calendar popover is currently open. */
|
|
37
38
|
isOpen: boolean;
|
|
38
39
|
/** Sets whether the calendar popover is open. */
|
|
39
|
-
setOpen(isOpen: boolean)
|
|
40
|
+
setOpen: (isOpen: boolean) => void;
|
|
40
41
|
dateFieldState: DateFieldState;
|
|
41
42
|
}
|
|
42
43
|
export interface DatePickerStateOptions extends DateFieldBase {
|