@gravity-ui/date-components 3.2.3 → 3.2.4
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/CalendarView/Calendar.css.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +0 -1
- package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
- package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js +2 -2
- package/dist/cjs/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
- package/dist/cjs/components/DateField/DateField.css.map +1 -1
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +0 -1
- package/dist/cjs/components/DateField/hooks/useDateFieldProps.js.map +1 -1
- package/dist/cjs/components/DateField/utils.js +0 -2
- package/dist/cjs/components/DateField/utils.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.css.map +1 -1
- package/dist/cjs/components/DatePicker/MobileCalendar.css.map +1 -1
- package/dist/cjs/components/DatePicker/StubButton.css.map +1 -1
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +12 -9
- package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
- package/dist/cjs/components/RangeDateField/RangeDateField.css.map +1 -1
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js +5 -7
- package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.js.map +1 -1
- package/dist/cjs/components/RangeDatePicker/RangeDatePicker.css.map +1 -1
- package/dist/cjs/components/RangeDateSelection/RangeDateSelection.css.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/NowLine/NowLine.css.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/RulerViewport/RulerViewport.css.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.css +2 -2
- package/dist/cjs/components/RangeDateSelection/components/SelectionControl/SelectionControl.css.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/Ticks.css.map +1 -1
- package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +21 -21
- package/dist/cjs/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
- package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.d.ts +0 -2
- package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +1 -1
- package/dist/cjs/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
- package/dist/cjs/components/RelativeDateField/RelativeDateField.css.map +1 -1
- package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/RelativeRangeDatePicker.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/Presets.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/components/Zones/Zones.css.map +1 -1
- package/dist/cjs/components/RelativeRangeDatePicker/utils.js +2 -2
- package/dist/cjs/components/RelativeRangeDatePicker/utils.js.map +1 -1
- package/dist/cjs/components/types/inputs.d.ts +2 -2
- package/dist/cjs/components/types/inputs.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/esm/components/CalendarView/Calendar.css.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +0 -1
- package/dist/esm/components/CalendarView/hooks/useCalendarProps.js.map +1 -1
- package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js +2 -2
- package/dist/esm/components/CalendarView/hooks/useRangeCalendarState.js.map +1 -1
- package/dist/esm/components/DateField/DateField.css.map +1 -1
- package/dist/esm/components/DateField/hooks/useDateFieldProps.js +0 -1
- package/dist/esm/components/DateField/hooks/useDateFieldProps.js.map +1 -1
- package/dist/esm/components/DateField/utils.js +0 -2
- package/dist/esm/components/DateField/utils.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.css.map +1 -1
- package/dist/esm/components/DatePicker/MobileCalendar.css.map +1 -1
- package/dist/esm/components/DatePicker/StubButton.css.map +1 -1
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +12 -9
- package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js.map +1 -1
- package/dist/esm/components/RangeDateField/RangeDateField.css.map +1 -1
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js +6 -8
- package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.js.map +1 -1
- package/dist/esm/components/RangeDatePicker/RangeDatePicker.css.map +1 -1
- package/dist/esm/components/RangeDateSelection/RangeDateSelection.css.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/NowLine/NowLine.css.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/RulerViewport/RulerViewport.css.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.css +2 -2
- package/dist/esm/components/RangeDateSelection/components/SelectionControl/SelectionControl.css.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/Ticks.css.map +1 -1
- package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js +21 -21
- package/dist/esm/components/RangeDateSelection/components/Ticks/UnavialableTicks.js.map +1 -1
- package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.d.ts +0 -2
- package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js +1 -1
- package/dist/esm/components/RangeDateSelection/hooks/useRangeDateSelectionState.js.map +1 -1
- package/dist/esm/components/RelativeDateField/RelativeDateField.css.map +1 -1
- package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/RelativeRangeDatePicker.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Control/Control.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDialog.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerDoc.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/PickerDialog/PickerForm.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Presets/Presets.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/components/Zones/Zones.css.map +1 -1
- package/dist/esm/components/RelativeRangeDatePicker/utils.js +2 -2
- package/dist/esm/components/RelativeRangeDatePicker/utils.js.map +1 -1
- package/dist/esm/components/types/inputs.d.ts +2 -2
- package/dist/esm/components/types/inputs.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/package.json +39 -44
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/CalendarView/data:;charset=utf-8,@use%20'@gravity-ui/uikit/styles/mixins';%0A@use%20'../variables';%0A%0A$block:%20'.%23%7Bvariables.$ns%7Dcalendar';%0A%0A%23%7B$block%7D%20%7B%0A%20%20%20%20--_--calendar-padding:%20var(--g-date-calendar-padding,%208px);%0A%20%20%20%20--_--calendar-day-size:%20var(--g-date-calendar-day-size,%2028px);%0A%20%20%20%20--_--calendar-days-gap:%20var(--g-date-calendar-days-gap,%202px);%0A%0A%20%20%20%20--_--calendar-width:%20calc(%0A%20%20%20%20%20%20%20%207%20*%20var(--_--calendar-day-size)%20+%206%20*%20var(--_--calendar-days-gap)%20+%202%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20var(--_--calendar-padding)%0A%20%20%20%20);%0A%20%20%20%20--_--calendar-grid-height:%20calc(%0A%20%20%20%20%20%20%20%207%20*%20var(--_--calendar-day-size)%20+%205%20*%20var(--_--calendar-days-gap)%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20var(--_--calendar-padding)%0A%20%20%20%20);%0A%0A%20%20%20%20display:%20inline-block;%0A%0A%20%20%20%20width:%20var(--_--calendar-width);%0A%0A%20%20%20%20&_size_l%20%7B%0A%20%20%20%20%20%20%20%20--g-date-calendar-day-size:%2036px;%0A%20%20%20%20%7D%0A%0A%20%20%20%20&_size_xl%20%7B%0A%20%20%20%20%20%20%20%20--g-date-calendar-day-size:%2042px;%0A%0A%20%20%20%20%20%20%20%20@include%20mixins.text-body-2();%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__header%20%7B%0A%20%20%20%20%20%20%20%20display:%20flex;%0A%0A%20%20%20%20%20%20%20%20padding:%20var(--_--calendar-padding)%20var(--_--calendar-padding)%200;%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__years-label%20%7B%0A%20%20%20%20%20%20%20%20color:%20var(--g-color-text-secondary);%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__controls%20%7B%0A%20%20%20%20%20%20%20%20margin-inline-start:%20auto;%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__control-icon%20%7B%0A%20%20%20%20%20%20%20%20transform:%20scaleX(var(--g-flow-direction));%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__grid%20%7B%0A%20%20%20%20%20%20%20%20position:%20relative;%0A%0A%20%20%20%20%20%20%20%20overflow:%20hidden;%0A%0A%20%20%20%20%20%20%20%20width:%20100%25;%0A%20%20%20%20%20%20%20%20height:%20var(--_--calendar-grid-height);%0A%0A%20%20%20%20%20%20%20%20user-select:%20none;%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__content%20%7B%0A%20%20%20%20%20%20%20%20position:%20absolute;%0A%20%20%20%20%20%20%20%20inset-block-start:%200;%0A%20%20%20%20%20%20%20%20inset-inline-start:%200;%0A%0A%20%20%20%20%20%20%20%20display:%20grid;%0A%20%20%20%20%20%20%20%20grid-template-rows:%20var(--_--calendar-day-size)%201fr;%0A%0A%20%20%20%20%20%20%20%20box-sizing:%20border-box;%0A%20%20%20%20%20%20%20%20width:%20100%25;%0A%20%20%20%20%20%20%20%20height:%20100%25;%0A%20%20%20%20%20%20%20%20padding:%200%20var(--_--calendar-padding)%20var(--_--calendar-padding);%0A%0A%20%20%20%20%20%20%20%20@keyframes%20calendar-forward%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20translateX(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20translateX(100%25);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20@keyframes%20calendar-backward%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20translateX(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20translateX(-100%25);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20@keyframes%20calendar-zoom-in-showing%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity:%200;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale(2);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity:%201;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale(1);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20@keyframes%20calendar-zoom-in-hiding%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity:%201;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale(1);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity:%200;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20@keyframes%20calendar-zoom-out-showing%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity:%200;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity:%201;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale(1);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20@keyframes%20calendar-zoom-out-hiding%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity:%201;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale(1);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity:%200;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale(2);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_animation_forward%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform:%20translateX(-100%25);%0A%20%20%20%20%20%20%20%20%20%20%20%20animation:%20calendar-forward%200.25s%20ease%20forwards;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20&%23%7B$block%7D__current-state%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inset-inline-start:%20calc(var(--g-flow-direction)%20*%20-100%25);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_animation_backward%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform:%20translateX(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20animation:%20calendar-backward%200.25s%20ease%20forwards;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20&%23%7B$block%7D__current-state%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inset-inline-start:%20calc(var(--g-flow-direction)%20*%20100%25);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_animation_zoom-in%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale();%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20&%23%7B$block%7D__previous-state%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation:%20calendar-zoom-in-hiding%200.25s%20ease%20forwards;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20&%23%7B$block%7D__current-state%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation:%20calendar-zoom-in-showing%200.25s%20ease%20forwards;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_animation_zoom-out%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20transform:%20scale();%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20&%23%7B$block%7D__current-state%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation:%20calendar-zoom-out-showing%200.25s%20ease%20forwards;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20&%23%7B$block%7D__previous-state%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation:%20calendar-zoom-out-hiding%200.25s%20ease%20forwards;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20@media%20screen%20and%20(prefers-reduced-motion:%20reduce),%20(update:%20slow)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20&%5Bclass%5D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation-duration:%200.001ms;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__grid-rowgroup%20%7B%0A%20%20%20%20%20%20%20%20display:%20grid;%0A%20%20%20%20%20%20%20%20gap:%20var(--_--calendar-days-gap);%0A%0A%20%20%20%20%20%20%20%20&_mode_months,%0A%20%20%20%20%20%20%20%20&_mode_quarters,%0A%20%20%20%20%20%20%20%20&_mode_years%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20grid-row:%201%20/%20-1;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20padding:%2012px%200%200;%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&-header%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20align-self:%20center;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__grid-row%20%7B%0A%20%20%20%20%20%20%20%20display:%20grid;%0A%20%20%20%20%20%20%20%20grid-auto-columns:%201fr;%0A%20%20%20%20%20%20%20%20grid-auto-flow:%20column;%0A%20%20%20%20%20%20%20%20gap:%20var(--_--calendar-days-gap);%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__weekday%20%7B%0A%20%20%20%20%20%20%20%20display:%20flex;%0A%20%20%20%20%20%20%20%20justify-content:%20center;%0A%20%20%20%20%20%20%20%20align-items:%20center;%0A%0A%20%20%20%20%20%20%20%20width:%20100%25;%0A%20%20%20%20%20%20%20%20height:%20100%25;%0A%0A%20%20%20%20%20%20%20%20&_weekend%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20color:%20var(--g-color-text-danger);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20&__button%20%7B%0A%20%20%20%20%20%20%20%20position:%20relative;%0A%0A%20%20%20%20%20%20%20%20display:%20flex;%0A%20%20%20%20%20%20%20%20justify-content:%20center;%0A%20%20%20%20%20%20%20%20align-items:%20center;%0A%0A%20%20%20%20%20%20%20%20width:%20100%25;%0A%20%20%20%20%20%20%20%20height:%20100%25;%0A%0A%20%20%20%20%20%20%20%20font-weight:%20var(--g-text-subheader-font-weight);%0A%20%20%20%20%20%20%20%20cursor:%20pointer;%0A%0A%20%20%20%20%20%20%20%20border-radius:%204px;%0A%20%20%20%20%20%20%20%20outline:%20none;%0A%0A%20%20%20%20%20%20%20%20&:focus%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--g-color-line-misc);%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&:focus:not(:focus-visible)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20box-shadow:%20none;%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&:hover%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20background-color:%20var(--g-color-base-generic);%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_selected%5Bclass%5D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20background-color:%20var(--g-color-base-selection);%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_selected%23%7B&%7D_selection-start,%0A%20%20%20%20%20%20%20%20&_selected%23%7B&%7D_selection-end%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20background-color:%20var(--g-color-base-brand);%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_weekend%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20color:%20var(--g-color-text-danger);%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_out-of-boundary%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20font-weight:%20var(--g-text-body-font-weight);%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20opacity:%200.6;%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_current::before%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20position:%20absolute;%0A%20%20%20%20%20%20%20%20%20%20%20%20inset-block-start:%2050%25;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20display:%20block;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20width:%204px;%0A%20%20%20%20%20%20%20%20%20%20%20%20height:%204px;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20content:%20'';%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20border-radius:%2050%25;%0A%20%20%20%20%20%20%20%20%20%20%20%20background-color:%20currentColor;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20transform:%20translateY(8px);%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_disabled%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20font-weight:%20var(--g-text-body-font-weight);%0A%20%20%20%20%20%20%20%20%20%20%20%20pointer-events:%20none;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20opacity:%200.6;%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20&_unavailable:not(&_disabled)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20font-weight:%20var(--g-text-body-font-weight);%0A%20%20%20%20%20%20%20%20%20%20%20%20cursor:%20default;%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20opacity:%200.5;%0A%20%20%20%20%20%20%20%20%20%20%20%20background-color:%20var(--g-color-base-generic);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A","components/CalendarView/file:/home/runner/work/date-components/date-components/node_modules/@gravity-ui/uikit/styles/mixins.scss"],"names":[],"mappings":"AAKA;EACI;EACA;EACA;EAEA;AAAA;AAAA;AAAA;EAIA;AAAA;AAAA;AAAA;EAKA;EAEA;;AAEA;EACI;;AAGJ;EACI;EC6IJ;EACA;EACA;EACA;;AD3IA;EACI;EAEA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EAEA;EAEA;EACA;EAEA;;AAGJ;EACI;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;AAEA;EACI;IACI;;EAEJ;IACI;;;AAIR;EACI;IACI;;EAEJ;IACI;;;AAIR;EACI;IACI;IAEA;;EAEJ;IACI;IAEA;;;AAIR;EACI;IACI;IAEA;;EAEJ;IACI;IAEA;;;AAIR;EACI;IACI;IAEA;;EAEJ;IACI;IAEA;;;AAIR;EACI;IACI;IAEA;;EAEJ;IACI;IAEA;;;AAIR;EACI;EACA;;AAEA;EACI;;AAIR;EACI;EACA;;AAEA;EACI;;AAIR;EACI;;AAEA;EACI;;AAEJ;EACI;;AAIR;EACI;;AAEA;EACI;;AAEJ;EACI;;AAIR;EACI;IACI;;;AAKZ;EACI;EACA;;AAEA;EAGI;EAEA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EAEA;EACA;;AAEA;EACI;;AAIR;EACI;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EAEI;;AAGJ;EACI;;AAGJ;EACI;EAEA;;AAGJ;EACI;EACA;EAEA;EAEA;EACA;EAEA;EAEA;EACA;EAEA;;AAGJ;EACI;EACA;EAEA;;AAGJ;EACI;EACA;EAEA;EACA","sourcesContent":["@use '@gravity-ui/uikit/styles/mixins';\n@use '../variables';\n\n$block: '.#{variables.$ns}calendar';\n\n#{$block} {\n --_--calendar-padding: var(--g-date-calendar-padding, 8px);\n --_--calendar-day-size: var(--g-date-calendar-day-size, 28px);\n --_--calendar-days-gap: var(--g-date-calendar-days-gap, 2px);\n\n --_--calendar-width: calc(\n 7 * var(--_--calendar-day-size) + 6 * var(--_--calendar-days-gap) + 2 *\n var(--_--calendar-padding)\n );\n --_--calendar-grid-height: calc(\n 7 * var(--_--calendar-day-size) + 5 * var(--_--calendar-days-gap) +\n var(--_--calendar-padding)\n );\n\n display: inline-block;\n\n width: var(--_--calendar-width);\n\n &_size_l {\n --g-date-calendar-day-size: 36px;\n }\n\n &_size_xl {\n --g-date-calendar-day-size: 42px;\n\n @include mixins.text-body-2();\n }\n\n &__header {\n display: flex;\n\n padding: var(--_--calendar-padding) var(--_--calendar-padding) 0;\n }\n\n &__years-label {\n color: var(--g-color-text-secondary);\n }\n\n &__controls {\n margin-inline-start: auto;\n }\n\n &__control-icon {\n transform: scaleX(var(--g-flow-direction));\n }\n\n &__grid {\n position: relative;\n\n overflow: hidden;\n\n width: 100%;\n height: var(--_--calendar-grid-height);\n\n user-select: none;\n }\n\n &__content {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n display: grid;\n grid-template-rows: var(--_--calendar-day-size) 1fr;\n\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 0 var(--_--calendar-padding) var(--_--calendar-padding);\n\n @keyframes calendar-forward {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n }\n\n @keyframes calendar-backward {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-100%);\n }\n }\n\n @keyframes calendar-zoom-in-showing {\n from {\n opacity: 0;\n\n transform: scale(2);\n }\n to {\n opacity: 1;\n\n transform: scale(1);\n }\n }\n\n @keyframes calendar-zoom-in-hiding {\n from {\n opacity: 1;\n\n transform: scale(1);\n }\n to {\n opacity: 0;\n\n transform: scale(0);\n }\n }\n\n @keyframes calendar-zoom-out-showing {\n from {\n opacity: 0;\n\n transform: scale(0);\n }\n to {\n opacity: 1;\n\n transform: scale(1);\n }\n }\n\n @keyframes calendar-zoom-out-hiding {\n from {\n opacity: 1;\n\n transform: scale(1);\n }\n to {\n opacity: 0;\n\n transform: scale(2);\n }\n }\n\n &_animation_forward {\n transform: translateX(-100%);\n animation: calendar-forward 0.25s ease forwards;\n\n &#{$block}__current-state {\n inset-inline-start: calc(var(--g-flow-direction) * -100%);\n }\n }\n\n &_animation_backward {\n transform: translateX(0);\n animation: calendar-backward 0.25s ease forwards;\n\n &#{$block}__current-state {\n inset-inline-start: calc(var(--g-flow-direction) * 100%);\n }\n }\n\n &_animation_zoom-in {\n transform: scale();\n\n &#{$block}__previous-state {\n animation: calendar-zoom-in-hiding 0.25s ease forwards;\n }\n &#{$block}__current-state {\n animation: calendar-zoom-in-showing 0.25s ease forwards;\n }\n }\n\n &_animation_zoom-out {\n transform: scale();\n\n &#{$block}__current-state {\n animation: calendar-zoom-out-showing 0.25s ease forwards;\n }\n &#{$block}__previous-state {\n animation: calendar-zoom-out-hiding 0.25s ease forwards;\n }\n }\n\n @media screen and (prefers-reduced-motion: reduce), (update: slow) {\n &[class] {\n animation-duration: 0.001ms;\n }\n }\n }\n\n &__grid-rowgroup {\n display: grid;\n gap: var(--_--calendar-days-gap);\n\n &_mode_months,\n &_mode_quarters,\n &_mode_years {\n grid-row: 1 / -1;\n\n padding: 12px 0 0;\n }\n\n &-header {\n align-self: center;\n }\n }\n\n &__grid-row {\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-flow: column;\n gap: var(--_--calendar-days-gap);\n }\n\n &__weekday {\n display: flex;\n justify-content: center;\n align-items: center;\n\n width: 100%;\n height: 100%;\n\n &_weekend {\n color: var(--g-color-text-danger);\n }\n }\n\n &__button {\n position: relative;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n width: 100%;\n height: 100%;\n\n font-weight: var(--g-text-subheader-font-weight);\n cursor: pointer;\n\n border-radius: 4px;\n outline: none;\n\n &:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-misc);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n\n &:hover {\n background-color: var(--g-color-base-generic);\n }\n\n &_selected[class] {\n background-color: var(--g-color-base-selection);\n }\n\n &_selected#{&}_selection-start,\n &_selected#{&}_selection-end {\n background-color: var(--g-color-base-brand);\n }\n\n &_weekend {\n color: var(--g-color-text-danger);\n }\n\n &_out-of-boundary {\n font-weight: var(--g-text-body-font-weight);\n\n opacity: 0.6;\n }\n\n &_current::before {\n position: absolute;\n inset-block-start: 50%;\n\n display: block;\n\n width: 4px;\n height: 4px;\n\n content: '';\n\n border-radius: 50%;\n background-color: currentColor;\n\n transform: translateY(8px);\n }\n\n &_disabled {\n font-weight: var(--g-text-body-font-weight);\n pointer-events: none;\n\n opacity: 0.6;\n }\n\n &_unavailable:not(&_disabled) {\n font-weight: var(--g-text-body-font-weight);\n cursor: default;\n\n opacity: 0.5;\n background-color: var(--g-color-base-generic);\n }\n }\n}\n","@use 'sass:list';\n@use 'sass:selector';\n\n@mixin overflow-ellipsis($type: ellipsis) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: $type;\n}\n\n@mixin button-reset() {\n padding: 0;\n\n font-family: var(--g-text-body-font-family);\n font-size: inherit;\n font-weight: var(--g-text-body-font-weight);\n\n color: inherit;\n background: none;\n border: none;\n outline: none;\n cursor: pointer;\n}\n\n@mixin expand-interactive-area($h: 4px, $v: $h) {\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n inset: logical (-$v) (-$h) (-$v);\n }\n}\n\n@mixin max-height($height) {\n max-height: $height;\n overflow-y: auto;\n}\n\n@mixin max-text-width($width: 100%) {\n @include overflow-ellipsis();\n\n max-width: $width;\n}\n\n@mixin aspect-ratio($ratio) {\n position: relative;\n\n &::before {\n display: block;\n content: '';\n width: 100%;\n padding-block-start: $ratio * 100%;\n }\n\n > *:only-child {\n position: absolute;\n inset: 0;\n }\n}\n\n@function get-pin-selector($mod, $selector, $append: true) {\n @if $append {\n @return selector.append($mod, $selector);\n } @else {\n @return list.join($mod, $selector, $separator: space);\n }\n}\n\n@mixin pin($block, $selectors, $radius, $append: true) {\n @each $selector in $selectors {\n &#{get-pin-selector(#{$block}_pin_round-round, $selector, $append)} {\n border-radius: $radius;\n }\n\n &#{get-pin-selector(#{$block}_pin_brick-brick, $selector, $append)} {\n border-radius: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_clear-clear, $selector, $append)} {\n border-radius: 0;\n border-inline: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_circle-circle, $selector, $append)} {\n border-radius: 100px;\n }\n\n &#{get-pin-selector(#{$block}_pin_round-brick, $selector, $append)} {\n border-start-start-radius: $radius;\n border-start-end-radius: 0;\n border-end-start-radius: $radius;\n border-end-end-radius: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_brick-round, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: $radius;\n border-end-start-radius: 0;\n border-end-end-radius: $radius;\n }\n\n &#{get-pin-selector(#{$block}_pin_round-clear, $selector, $append)} {\n border-start-start-radius: $radius;\n border-start-end-radius: 0;\n border-end-start-radius: $radius;\n border-end-end-radius: 0;\n border-inline-end: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_clear-round, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: $radius;\n border-end-start-radius: 0;\n border-end-end-radius: $radius;\n border-inline-start: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_brick-clear, $selector, $append)} {\n border-radius: 0;\n border-inline-end: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_clear-brick, $selector, $append)} {\n border-radius: 0;\n border-inline-start: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_circle-brick, $selector, $append)} {\n border-start-start-radius: 100px;\n border-start-end-radius: 0;\n border-end-start-radius: 100px;\n border-end-end-radius: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_brick-circle, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: 100px;\n border-end-start-radius: 0;\n border-end-end-radius: 100px;\n }\n\n &#{get-pin-selector(#{$block}_pin_circle-clear, $selector, $append)} {\n border-start-start-radius: 100px;\n border-start-end-radius: 0;\n border-end-start-radius: 100px;\n border-end-end-radius: 0;\n border-inline-end: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_clear-circle, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: 100px;\n border-end-start-radius: 0;\n border-end-end-radius: 100px;\n border-inline-start: 0;\n }\n }\n}\n\n// Typography\n\n@mixin text-body-1() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n\n@mixin text-body-2() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n}\n\n@mixin text-body-3() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-3-font-size);\n line-height: var(--g-text-body-3-line-height);\n}\n\n@mixin text-body-short() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n}\n\n@mixin text-caption-1() {\n font-family: var(--g-text-caption-font-family);\n font-weight: var(--g-text-caption-font-weight);\n font-size: var(--g-text-caption-1-font-size);\n line-height: var(--g-text-caption-1-line-height);\n}\n\n@mixin text-caption-2() {\n font-family: var(--g-text-caption-font-family);\n font-weight: var(--g-text-caption-font-weight);\n font-size: var(--g-text-caption-2-font-size);\n line-height: var(--g-text-caption-2-line-height);\n}\n\n@mixin text-header-1() {\n font-family: var(--g-text-header-font-family);\n font-weight: var(--g-text-header-font-weight);\n font-size: var(--g-text-header-1-font-size);\n line-height: var(--g-text-header-1-line-height);\n}\n\n@mixin text-header-2() {\n font-family: var(--g-text-header-font-family);\n font-weight: var(--g-text-header-font-weight);\n font-size: var(--g-text-header-2-font-size);\n line-height: var(--g-text-header-2-line-height);\n}\n\n@mixin text-subheader-1() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-1-font-size);\n line-height: var(--g-text-subheader-1-line-height);\n}\n\n@mixin text-subheader-2() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-2-font-size);\n line-height: var(--g-text-subheader-2-line-height);\n}\n\n@mixin text-subheader-3() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-3-font-size);\n line-height: var(--g-text-subheader-3-line-height);\n}\n\n@mixin text-display-1() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-1-font-size);\n line-height: var(--g-text-display-1-line-height);\n}\n\n@mixin text-display-2() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-2-font-size);\n line-height: var(--g-text-display-2-line-height);\n}\n\n@mixin text-display-3() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-3-font-size);\n line-height: var(--g-text-display-3-line-height);\n}\n\n@mixin text-display-4() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-4-font-size);\n line-height: var(--g-text-display-4-line-height);\n}\n\n@mixin text-code-1() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-1-font-size);\n line-height: var(--g-text-code-1-line-height);\n}\n\n@mixin text-code-2() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-2-font-size);\n line-height: var(--g-text-code-2-line-height);\n}\n\n@mixin text-code-3() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-3-font-size);\n line-height: var(--g-text-code-3-line-height);\n}\n\n@mixin text-code-inline-1() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-1-font-size);\n line-height: var(--g-text-code-inline-1-line-height);\n}\n\n@mixin text-code-inline-2() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-2-font-size);\n line-height: var(--g-text-code-inline-2-line-height);\n}\n\n@mixin text-code-inline-3() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-3-font-size);\n line-height: var(--g-text-code-inline-3-line-height);\n}\n\n@mixin text-accent() {\n font-weight: var(--g-text-accent-font-weight);\n}\n\n@mixin loading($loading-color-1: rgba(255, 255, 255, 0.3), $loading-color-2: transparent) {\n background-image: repeating-linear-gradient(\n -45deg,\n $loading-color-1,\n $loading-color-1 4px,\n $loading-color-2 4px,\n $loading-color-2 8px\n );\n background-size: 150%;\n background-clip: padding-box;\n\n // stylelint-disable-next-line no-unknown-animations\n animation: g-loading-animation 0.5s linear infinite;\n}\n\n@mixin scrollbar() {\n &::-webkit-scrollbar,\n *::-webkit-scrollbar {\n width: var(--g-scrollbar-width);\n height: var(--g-scrollbar-width);\n background: var(--g-color-scroll-track);\n }\n\n &::-webkit-scrollbar-track,\n *::-webkit-scrollbar-track {\n background: var(--g-color-scroll-track);\n }\n\n &::-webkit-scrollbar-corner,\n *::-webkit-scrollbar-corner {\n background: var(--g-color-scroll-corner);\n }\n\n &::-webkit-scrollbar-thumb,\n *::-webkit-scrollbar-thumb {\n background: var(--g-color-scroll-handle);\n }\n\n &::-webkit-scrollbar-thumb:hover,\n *::-webkit-scrollbar-thumb:hover {\n background: var(--g-color-scroll-handle-hover);\n }\n}\n"],"file":"Calendar.css"}
|
|
1
|
+
{"version":3,"sources":["components/CalendarView/Calendar.scss","home/runner/work/date-components/date-components/node_modules/@gravity-ui/uikit/styles/mixins.scss"],"names":[],"mappings":"AAKA;EACI;EACA;EACA;EAEA;AAAA;AAAA;AAAA;EAIA;AAAA;AAAA;AAAA;EAKA;EAEA;;AAEA;EACI;;AAGJ;EACI;ECkJJ;EACA;EACA;EACA;;ADhJA;EACI;EAEA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EAEA;EAEA;EACA;EAEA;;AAGJ;EACI;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;AAEA;EACI;IACI;;EAEJ;IACI;;;AAIR;EACI;IACI;;EAEJ;IACI;;;AAIR;EACI;IACI;IAEA;;EAEJ;IACI;IAEA;;;AAIR;EACI;IACI;IAEA;;EAEJ;IACI;IAEA;;;AAIR;EACI;IACI;IAEA;;EAEJ;IACI;IAEA;;;AAIR;EACI;IACI;IAEA;;EAEJ;IACI;IAEA;;;AAIR;EACI;EACA;;AAEA;EACI;;AAIR;EACI;EACA;;AAEA;EACI;;AAIR;EACI;;AAEA;EACI;;AAEJ;EACI;;AAIR;EACI;;AAEA;EACI;;AAEJ;EACI;;AAIR;EACI;IACI;;;AAKZ;EACI;EACA;;AAEA;EAGI;EAEA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EAEA;EACA;;AAEA;EACI;;AAIR;EACI;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EAEI;;AAGJ;EACI;;AAGJ;EACI;EAEA;;AAGJ;EACI;EACA;EAEA;EAEA;EACA;EAEA;EAEA;EACA;EAEA;;AAGJ;EACI;EACA;EAEA;;AAGJ;EACI;EACA;EAEA;EACA","sourcesContent":["@use '@gravity-ui/uikit/styles/mixins';\n@use '../variables';\n\n$block: '.#{variables.$ns}calendar';\n\n#{$block} {\n --_--calendar-padding: var(--g-date-calendar-padding, 8px);\n --_--calendar-day-size: var(--g-date-calendar-day-size, 28px);\n --_--calendar-days-gap: var(--g-date-calendar-days-gap, 2px);\n\n --_--calendar-width: calc(\n 7 * var(--_--calendar-day-size) + 6 * var(--_--calendar-days-gap) + 2 *\n var(--_--calendar-padding)\n );\n --_--calendar-grid-height: calc(\n 7 * var(--_--calendar-day-size) + 5 * var(--_--calendar-days-gap) +\n var(--_--calendar-padding)\n );\n\n display: inline-block;\n\n width: var(--_--calendar-width);\n\n &_size_l {\n --g-date-calendar-day-size: 36px;\n }\n\n &_size_xl {\n --g-date-calendar-day-size: 42px;\n\n @include mixins.text-body-2();\n }\n\n &__header {\n display: flex;\n\n padding: var(--_--calendar-padding) var(--_--calendar-padding) 0;\n }\n\n &__years-label {\n color: var(--g-color-text-secondary);\n }\n\n &__controls {\n margin-inline-start: auto;\n }\n\n &__control-icon {\n transform: scaleX(var(--g-flow-direction));\n }\n\n &__grid {\n position: relative;\n\n overflow: hidden;\n\n width: 100%;\n height: var(--_--calendar-grid-height);\n\n user-select: none;\n }\n\n &__content {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n display: grid;\n grid-template-rows: var(--_--calendar-day-size) 1fr;\n\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 0 var(--_--calendar-padding) var(--_--calendar-padding);\n\n @keyframes calendar-forward {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n }\n\n @keyframes calendar-backward {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-100%);\n }\n }\n\n @keyframes calendar-zoom-in-showing {\n from {\n opacity: 0;\n\n transform: scale(2);\n }\n to {\n opacity: 1;\n\n transform: scale(1);\n }\n }\n\n @keyframes calendar-zoom-in-hiding {\n from {\n opacity: 1;\n\n transform: scale(1);\n }\n to {\n opacity: 0;\n\n transform: scale(0);\n }\n }\n\n @keyframes calendar-zoom-out-showing {\n from {\n opacity: 0;\n\n transform: scale(0);\n }\n to {\n opacity: 1;\n\n transform: scale(1);\n }\n }\n\n @keyframes calendar-zoom-out-hiding {\n from {\n opacity: 1;\n\n transform: scale(1);\n }\n to {\n opacity: 0;\n\n transform: scale(2);\n }\n }\n\n &_animation_forward {\n transform: translateX(-100%);\n animation: calendar-forward 0.25s ease forwards;\n\n &#{$block}__current-state {\n inset-inline-start: calc(var(--g-flow-direction) * -100%);\n }\n }\n\n &_animation_backward {\n transform: translateX(0);\n animation: calendar-backward 0.25s ease forwards;\n\n &#{$block}__current-state {\n inset-inline-start: calc(var(--g-flow-direction) * 100%);\n }\n }\n\n &_animation_zoom-in {\n transform: scale();\n\n &#{$block}__previous-state {\n animation: calendar-zoom-in-hiding 0.25s ease forwards;\n }\n &#{$block}__current-state {\n animation: calendar-zoom-in-showing 0.25s ease forwards;\n }\n }\n\n &_animation_zoom-out {\n transform: scale();\n\n &#{$block}__current-state {\n animation: calendar-zoom-out-showing 0.25s ease forwards;\n }\n &#{$block}__previous-state {\n animation: calendar-zoom-out-hiding 0.25s ease forwards;\n }\n }\n\n @media screen and (prefers-reduced-motion: reduce), (update: slow) {\n &[class] {\n animation-duration: 0.001ms;\n }\n }\n }\n\n &__grid-rowgroup {\n display: grid;\n gap: var(--_--calendar-days-gap);\n\n &_mode_months,\n &_mode_quarters,\n &_mode_years {\n grid-row: 1 / -1;\n\n padding: 12px 0 0;\n }\n\n &-header {\n align-self: center;\n }\n }\n\n &__grid-row {\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-flow: column;\n gap: var(--_--calendar-days-gap);\n }\n\n &__weekday {\n display: flex;\n justify-content: center;\n align-items: center;\n\n width: 100%;\n height: 100%;\n\n &_weekend {\n color: var(--g-color-text-danger);\n }\n }\n\n &__button {\n position: relative;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n width: 100%;\n height: 100%;\n\n font-weight: var(--g-text-subheader-font-weight);\n cursor: pointer;\n\n border-radius: 4px;\n outline: none;\n\n &:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-misc);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n\n &:hover {\n background-color: var(--g-color-base-generic);\n }\n\n &_selected[class] {\n background-color: var(--g-color-base-selection);\n }\n\n &_selected#{&}_selection-start,\n &_selected#{&}_selection-end {\n background-color: var(--g-color-base-brand);\n }\n\n &_weekend {\n color: var(--g-color-text-danger);\n }\n\n &_out-of-boundary {\n font-weight: var(--g-text-body-font-weight);\n\n opacity: 0.6;\n }\n\n &_current::before {\n position: absolute;\n inset-block-start: 50%;\n\n display: block;\n\n width: 4px;\n height: 4px;\n\n content: '';\n\n border-radius: 50%;\n background-color: currentColor;\n\n transform: translateY(8px);\n }\n\n &_disabled {\n font-weight: var(--g-text-body-font-weight);\n pointer-events: none;\n\n opacity: 0.6;\n }\n\n &_unavailable:not(&_disabled) {\n font-weight: var(--g-text-body-font-weight);\n cursor: default;\n\n opacity: 0.5;\n background-color: var(--g-color-base-generic);\n }\n }\n}\n","@use 'sass:list';\n@use 'sass:selector';\n\n@mixin overflow-ellipsis($type: ellipsis) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: $type;\n}\n\n@mixin button-reset() {\n padding: 0;\n\n font-family: var(--g-text-body-font-family);\n font-size: inherit;\n font-weight: var(--g-text-body-font-weight);\n\n color: inherit;\n background: none;\n border: none;\n outline: none;\n cursor: pointer;\n}\n\n@mixin link-reset() {\n color: inherit;\n text-decoration: inherit;\n}\n\n@mixin expand-interactive-area($h: 4px, $v: $h) {\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n inset: logical (-$v) (-$h);\n }\n}\n\n@mixin max-height($height) {\n max-height: $height;\n overflow-y: auto;\n}\n\n@mixin max-text-width($width: 100%) {\n @include overflow-ellipsis();\n\n max-width: $width;\n}\n\n@mixin aspect-ratio($ratio) {\n position: relative;\n\n &::before {\n display: block;\n content: '';\n width: 100%;\n padding-block-start: $ratio * 100%;\n }\n\n > *:only-child {\n position: absolute;\n inset: 0;\n }\n}\n\n@function get-pin-selector($mod, $selector, $append: true) {\n @if $append {\n @return selector.append($mod, $selector);\n } @else {\n @return list.join($mod, $selector, $separator: space);\n }\n}\n\n@mixin pin($block, $selectors, $radius, $append: true) {\n @each $selector in $selectors {\n &#{get-pin-selector(#{$block}_pin_round-round, $selector, $append)} {\n border-radius: $radius;\n }\n\n &#{get-pin-selector(#{$block}_pin_brick-brick, $selector, $append)} {\n border-radius: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_clear-clear, $selector, $append)} {\n border-radius: 0;\n border-inline: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_circle-circle, $selector, $append)} {\n border-radius: 100px;\n }\n\n &#{get-pin-selector(#{$block}_pin_round-brick, $selector, $append)} {\n border-start-start-radius: $radius;\n border-start-end-radius: 0;\n border-end-start-radius: $radius;\n border-end-end-radius: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_brick-round, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: $radius;\n border-end-start-radius: 0;\n border-end-end-radius: $radius;\n }\n\n &#{get-pin-selector(#{$block}_pin_round-clear, $selector, $append)} {\n border-start-start-radius: $radius;\n border-start-end-radius: 0;\n border-end-start-radius: $radius;\n border-end-end-radius: 0;\n border-inline-end: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_clear-round, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: $radius;\n border-end-start-radius: 0;\n border-end-end-radius: $radius;\n border-inline-start: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_brick-clear, $selector, $append)} {\n border-radius: 0;\n border-inline-end: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_clear-brick, $selector, $append)} {\n border-radius: 0;\n border-inline-start: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_circle-brick, $selector, $append)} {\n border-start-start-radius: 100px;\n border-start-end-radius: 0;\n border-end-start-radius: 100px;\n border-end-end-radius: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_brick-circle, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: 100px;\n border-end-start-radius: 0;\n border-end-end-radius: 100px;\n }\n\n &#{get-pin-selector(#{$block}_pin_circle-clear, $selector, $append)} {\n border-start-start-radius: 100px;\n border-start-end-radius: 0;\n border-end-start-radius: 100px;\n border-end-end-radius: 0;\n border-inline-end: 0;\n }\n\n &#{get-pin-selector(#{$block}_pin_clear-circle, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: 100px;\n border-end-start-radius: 0;\n border-end-end-radius: 100px;\n border-inline-start: 0;\n }\n }\n}\n\n// Typography\n\n@mixin text-body-1() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n\n@mixin text-body-2() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n}\n\n@mixin text-body-3() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-3-font-size);\n line-height: var(--g-text-body-3-line-height);\n}\n\n@mixin text-body-short() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n}\n\n@mixin text-caption-1() {\n font-family: var(--g-text-caption-font-family);\n font-weight: var(--g-text-caption-font-weight);\n font-size: var(--g-text-caption-1-font-size);\n line-height: var(--g-text-caption-1-line-height);\n}\n\n@mixin text-caption-2() {\n font-family: var(--g-text-caption-font-family);\n font-weight: var(--g-text-caption-font-weight);\n font-size: var(--g-text-caption-2-font-size);\n line-height: var(--g-text-caption-2-line-height);\n}\n\n@mixin text-header-1() {\n font-family: var(--g-text-header-font-family);\n font-weight: var(--g-text-header-font-weight);\n font-size: var(--g-text-header-1-font-size);\n line-height: var(--g-text-header-1-line-height);\n}\n\n@mixin text-header-2() {\n font-family: var(--g-text-header-font-family);\n font-weight: var(--g-text-header-font-weight);\n font-size: var(--g-text-header-2-font-size);\n line-height: var(--g-text-header-2-line-height);\n}\n\n@mixin text-subheader-1() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-1-font-size);\n line-height: var(--g-text-subheader-1-line-height);\n}\n\n@mixin text-subheader-2() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-2-font-size);\n line-height: var(--g-text-subheader-2-line-height);\n}\n\n@mixin text-subheader-3() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-3-font-size);\n line-height: var(--g-text-subheader-3-line-height);\n}\n\n@mixin text-display-1() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-1-font-size);\n line-height: var(--g-text-display-1-line-height);\n}\n\n@mixin text-display-2() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-2-font-size);\n line-height: var(--g-text-display-2-line-height);\n}\n\n@mixin text-display-3() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-3-font-size);\n line-height: var(--g-text-display-3-line-height);\n}\n\n@mixin text-display-4() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-4-font-size);\n line-height: var(--g-text-display-4-line-height);\n}\n\n@mixin text-code-1() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-1-font-size);\n line-height: var(--g-text-code-1-line-height);\n}\n\n@mixin text-code-2() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-2-font-size);\n line-height: var(--g-text-code-2-line-height);\n}\n\n@mixin text-code-3() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-3-font-size);\n line-height: var(--g-text-code-3-line-height);\n}\n\n@mixin text-code-inline-1() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-1-font-size);\n line-height: var(--g-text-code-inline-1-line-height);\n}\n\n@mixin text-code-inline-2() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-2-font-size);\n line-height: var(--g-text-code-inline-2-line-height);\n}\n\n@mixin text-code-inline-3() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-3-font-size);\n line-height: var(--g-text-code-inline-3-line-height);\n}\n\n@mixin text-accent() {\n font-weight: var(--g-text-accent-font-weight);\n}\n\n@mixin loading($loading-color-1: rgba(255, 255, 255, 0.3), $loading-color-2: transparent) {\n background-image: repeating-linear-gradient(\n -45deg,\n $loading-color-1,\n $loading-color-1 4px,\n $loading-color-2 4px,\n $loading-color-2 8px\n );\n background-size: 150%;\n background-clip: padding-box;\n\n // stylelint-disable-next-line no-unknown-animations\n animation: g-loading-animation 0.5s linear infinite;\n}\n\n@mixin scrollbar() {\n &::-webkit-scrollbar,\n *::-webkit-scrollbar {\n width: var(--g-scrollbar-width);\n height: var(--g-scrollbar-width);\n background: var(--g-color-scroll-track);\n }\n\n &::-webkit-scrollbar-track,\n *::-webkit-scrollbar-track {\n background: var(--g-color-scroll-track);\n }\n\n &::-webkit-scrollbar-corner,\n *::-webkit-scrollbar-corner {\n background: var(--g-color-scroll-corner);\n }\n\n &::-webkit-scrollbar-thumb,\n *::-webkit-scrollbar-thumb {\n background: var(--g-color-scroll-handle);\n }\n\n &::-webkit-scrollbar-thumb:hover,\n *::-webkit-scrollbar-thumb:hover {\n background: var(--g-color-scroll-handle-hover);\n }\n}\n"],"file":"Calendar.css"}
|
|
@@ -7,7 +7,6 @@ const uikit_1 = require("@gravity-ui/uikit");
|
|
|
7
7
|
const dates_1 = require("../../utils/dates.js");
|
|
8
8
|
const i18n_1 = require("../i18n/index.js");
|
|
9
9
|
const buttonDisabledClassName = 'yc-button_disabled g-button_disabled';
|
|
10
|
-
// eslint-disable-next-line complexity
|
|
11
10
|
function useCalendarProps(props, state) {
|
|
12
11
|
const title = state.mode === 'years' || state.mode === 'quarters'
|
|
13
12
|
? `${state.startDate.year()} — ${state.endDate.year()}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalendarProps.js","sourceRoot":"../../../../../src","sources":["components/CalendarView/hooks/useCalendarProps.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useCalendarProps.js","sourceRoot":"../../../../../src","sources":["components/CalendarView/hooks/useCalendarProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {useFocusWithin} from '@gravity-ui/uikit';\nimport type {ButtonButtonProps} from '@gravity-ui/uikit';\n\nimport type {CalendarProps} from '../../Calendar/Calendar';\nimport {formatDateTime} from '../../utils/dates';\nimport {i18n} from '../i18n';\n\nimport type {CalendarLayout, CalendarState, RangeCalendarState} from './types';\n\nconst buttonDisabledClassName = 'yc-button_disabled g-button_disabled';\n\nexport function useCalendarProps(props: CalendarProps, state: CalendarState | RangeCalendarState) {\n const title =\n state.mode === 'years' || state.mode === 'quarters'\n ? `${state.startDate.year()} — ${state.endDate.year()}`\n : formatDateTime(\n state.focusedDate,\n state.mode === 'days' ? 'MMMM YYYY' : 'YYYY',\n state.timeZone,\n );\n\n const {focusWithinProps} = useFocusWithin({\n onFocusWithin: props.onFocus,\n onBlurWithin: props.onBlur,\n });\n\n const calendarProps: React.HTMLAttributes<HTMLElement> = {\n role: 'group',\n id: props.id,\n 'aria-label': [props['aria-label'], title].filter(Boolean).join(', '),\n 'aria-labelledby': props['aria-labelledby'] || undefined,\n 'aria-describedby': props['aria-describedby'] || undefined,\n 'aria-details': props['aria-details'] || undefined,\n 'aria-disabled': state.disabled || undefined,\n ...focusWithinProps,\n };\n\n const modeIndex = state.availableModes.indexOf(state.mode);\n const isModeLast = modeIndex + 1 === state.availableModes.length;\n const isNextModeLast = modeIndex + 2 === state.availableModes.length;\n const modeDisabled = state.disabled || isModeLast;\n\n const modeButtonProps: ButtonButtonProps = {\n disabled: state.disabled,\n // FIXME: do not use button class name\n className: modeDisabled ? buttonDisabledClassName : undefined,\n onClick: modeDisabled\n ? undefined\n : () => {\n state.zoomOut();\n if (isNextModeLast) {\n state.setFocused(true);\n }\n },\n 'aria-disabled': modeDisabled ? 'true' : undefined,\n 'aria-description': getAriaDescriptionForModeButton(state.mode, state.availableModes),\n 'aria-live': 'polite',\n children: title,\n };\n\n const previousFocused = React.useRef(false);\n const previousDisabled = state.disabled || state.isPreviousPageInvalid();\n\n React.useLayoutEffect(() => {\n if (previousDisabled && previousFocused.current) {\n previousFocused.current = false;\n state.setFocused(true);\n }\n });\n\n const previousButtonProps: ButtonButtonProps = {\n disabled: state.disabled,\n // FIXME: do not use button class name\n className: previousDisabled ? buttonDisabledClassName : undefined,\n onClick: previousDisabled\n ? undefined\n : () => {\n state.focusPreviousPage();\n },\n onFocus: previousDisabled\n ? undefined\n : () => {\n previousFocused.current = true;\n },\n onBlur: previousDisabled\n ? undefined\n : () => {\n previousFocused.current = false;\n },\n 'aria-label': i18n('Previous'),\n 'aria-disabled': previousDisabled ? 'true' : undefined,\n };\n\n const nextFocused = React.useRef(false);\n const nextDisabled = state.disabled || state.isNextPageInvalid();\n\n React.useLayoutEffect(() => {\n if (nextDisabled && nextFocused.current) {\n nextFocused.current = false;\n state.setFocused(true);\n }\n });\n\n const nextButtonProps: ButtonButtonProps = {\n disabled: state.disabled,\n // FIXME: do not use button class name\n className: nextDisabled ? buttonDisabledClassName : undefined,\n onClick: nextDisabled\n ? undefined\n : () => {\n state.focusNextPage();\n },\n onFocus: nextDisabled\n ? undefined\n : () => {\n nextFocused.current = true;\n },\n onBlur: nextDisabled\n ? undefined\n : () => {\n nextFocused.current = false;\n },\n 'aria-label': i18n('Next'),\n 'aria-disabled': previousDisabled ? 'true' : undefined,\n };\n\n return {\n calendarProps,\n modeButtonProps,\n nextButtonProps,\n previousButtonProps,\n };\n}\n\nfunction getAriaDescriptionForModeButton(mode: CalendarLayout, availableModes: CalendarLayout[]) {\n const nextModeIndex = availableModes.indexOf(mode) + 1;\n const isModeLast = nextModeIndex === availableModes.length;\n if (isModeLast) {\n return undefined;\n }\n\n const ariaLabelMap: Record<CalendarLayout, string> = {\n days: '',\n months: i18n('Switch to months view'),\n quarters: i18n('Switch to quarters view'),\n years: i18n('Switch to years view'),\n };\n const nextMode = availableModes[nextModeIndex];\n return ariaLabelMap[nextMode];\n}\n"]}
|
|
@@ -17,8 +17,8 @@ function useRangeCalendarState(props) {
|
|
|
17
17
|
const calendar = (0, useCalendarState_1.useCalendarState)(Object.assign(Object.assign({}, calendarProps), { value: null, timeZone }));
|
|
18
18
|
const highlightedRange = anchorDate
|
|
19
19
|
? makeRange(anchorDate, calendar.focusedDate, calendar.mode)
|
|
20
|
-
: (_a = (value &&
|
|
21
|
-
makeRange(value.start.timeZone(timeZone), value.end.timeZone(timeZone), calendar.mode))) !== null && _a !== void 0 ? _a : undefined;
|
|
20
|
+
: ((_a = (value &&
|
|
21
|
+
makeRange(value.start.timeZone(timeZone), value.end.timeZone(timeZone), calendar.mode))) !== null && _a !== void 0 ? _a : undefined);
|
|
22
22
|
const minMode = calendar.availableModes[0];
|
|
23
23
|
const handleSetValue = (v) => {
|
|
24
24
|
let { start, end } = v;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRangeCalendarState.js","sourceRoot":"../../../../../src","sources":["components/CalendarView/hooks/useRangeCalendarState.ts"],"names":[],"mappings":";;AAiBA,sDAuFC;;AAxGD,0DAA0B;AAG1B,6CAAqD;AAGrD,gDAAgE;AAChE,0EAAkE;AAGlE,4DAAoD;AAOpD,SAAgB,qBAAqB,CAAC,KAAgC;;IAClE,MAAM,EAAC,KAAK,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,KAAsB,KAAK,EAAtB,aAAa,kBAAI,KAAK,EAA3E,qCAAmE,CAAQ,CAAC;IAClF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,0BAAkB,EAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEhF,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,GAAG,eAAK,CAAC,QAAQ,EAAY,CAAC;IAEpE,MAAM,aAAa,GAAG,IAAA,uCAAkB,EACpC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,MAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,CAAA,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,mBAAmB,CAC7F,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC;IAEjD,MAAM,QAAQ,GAAG,IAAA,mCAAgB,kCAAK,aAAa,KAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,IAAE,CAAC;IAC7E,MAAM,gBAAgB,GAAG,UAAU;QAC/B,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC;QAC5D,CAAC,CAAC,MAAA,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"useRangeCalendarState.js","sourceRoot":"../../../../../src","sources":["components/CalendarView/hooks/useRangeCalendarState.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport {useControlledState} from '@gravity-ui/uikit';\n\nimport type {RangeValue} from '../../types';\nimport {constrainValue, mergeDateTime} from '../../utils/dates';\nimport {useDefaultTimeZone} from '../../utils/useDefaultTimeZone';\n\nimport type {CalendarLayout, RangeCalendarState} from './types';\nimport {useCalendarState} from './useCalendarState';\nimport type {CalendarStateOptions} from './useCalendarState';\n\nexport interface RangeCalendarStateOptions extends CalendarStateOptions<RangeValue<DateTime>> {}\n\nexport type {RangeCalendarState} from './types';\n\nexport function useRangeCalendarState(props: RangeCalendarStateOptions): RangeCalendarState {\n const {value: valueProp, defaultValue = null, onUpdate, ...calendarProps} = props;\n const [value, setValue] = useControlledState(valueProp, defaultValue, onUpdate);\n\n const [anchorDate, setAnchorDateState] = React.useState<DateTime>();\n\n const inputTimeZone = useDefaultTimeZone(\n valueProp?.start || defaultValue?.start || props.focusedValue || props.defaultFocusedValue,\n );\n const timeZone = props.timeZone || inputTimeZone;\n\n const calendar = useCalendarState({...calendarProps, value: null, timeZone});\n const highlightedRange = anchorDate\n ? makeRange(anchorDate, calendar.focusedDate, calendar.mode)\n : ((value &&\n makeRange(\n value.start.timeZone(timeZone),\n value.end.timeZone(timeZone),\n calendar.mode,\n )) ??\n undefined);\n\n const minMode = calendar.availableModes[0];\n\n const handleSetValue = (v: RangeValue<DateTime>) => {\n let {start, end} = v;\n if (value) {\n start = mergeDateTime(start, value.start.timeZone(timeZone));\n end = mergeDateTime(end, value.end.timeZone(timeZone));\n }\n setValue({start: start.timeZone(inputTimeZone), end: end.timeZone(inputTimeZone)});\n };\n\n const selectDate = (date: DateTime, force = false) => {\n if (props.disabled) {\n return;\n }\n\n if (!force && calendar.mode !== minMode) {\n calendar.zoomIn();\n return;\n }\n\n if (props.readOnly) {\n return;\n }\n\n const newDate = constrainValue(date, calendar.minValue, calendar.maxValue);\n if (calendar.isCellUnavailable(newDate)) {\n return;\n }\n\n if (anchorDate) {\n const range = makeRange(anchorDate, newDate, calendar.mode);\n handleSetValue(range);\n setAnchorDateState(undefined);\n } else {\n setAnchorDateState(newDate);\n }\n };\n\n return {\n ...calendar,\n value,\n setValue: handleSetValue,\n selectDate,\n anchorDate,\n setAnchorDate: setAnchorDateState,\n highlightedRange,\n isSelected(date) {\n if (!highlightedRange) {\n return false;\n }\n\n return (\n (date.isSame(highlightedRange.start, this.mode) ||\n date.isAfter(highlightedRange.start)) &&\n (date.isSame(highlightedRange.end, this.mode) ||\n date.isBefore(highlightedRange.end))\n );\n },\n highlightDate(date) {\n if (anchorDate) {\n this.setFocusedDate(date);\n }\n },\n };\n}\n\nfunction makeRange(start: DateTime, end: DateTime, mode: CalendarLayout): RangeValue<DateTime> {\n if (start.isBefore(end)) {\n return {\n start,\n end: end.endOf(mode),\n };\n }\n\n return {\n start: end,\n end: start.endOf(mode),\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/DateField/
|
|
1
|
+
{"version":3,"sources":["components/DateField/DateField.scss"],"names":[],"mappings":"AAIA;EACI;EAEA","sourcesContent":["@use '../variables';\n\n$block: '.#{variables.$ns}date-field';\n\n#{$block} {\n display: inline-block;\n\n width: auto;\n}\n"],"file":"DateField.css"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDateFieldProps.js","sourceRoot":"../../../../../src","sources":["components/DateField/hooks/useDateFieldProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport type {TextInputProps} from '@gravity-ui/uikit';\n\nimport type {\n AccessibilityProps,\n DateFieldBase,\n TextInputProps as DateFieldTextInputProps,\n DomProps,\n FocusableProps,\n InputDOMProps,\n KeyboardEvents,\n StyleProps,\n TextInputExtendProps,\n} from '../../types';\nimport {cleanString} from '../utils';\n\nimport type {DateFieldState} from './useBaseDateFieldState';\n\nexport interface DateFieldProps<T = DateTime>\n extends DateFieldBase<T>,\n DateFieldTextInputProps,\n TextInputExtendProps,\n DomProps,\n InputDOMProps,\n FocusableProps,\n KeyboardEvents,\n StyleProps,\n AccessibilityProps {}\n\nexport function useDateFieldProps<T = DateTime>(\n state: DateFieldState<T>,\n props: DateFieldProps<T>,\n): {inputProps: TextInputProps} {\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const [, setInnerState] = React.useState({});\n\n function setSelectedSections(section: 'all' | number) {\n state.setSelectedSections(section);\n setInnerState({});\n }\n\n React.useLayoutEffect(() => {\n const inputElement = inputRef.current;\n if (!inputElement) {\n return;\n }\n\n if (state.selectedSectionIndexes === null) {\n if (inputElement.scrollLeft) {\n // Ensure that input content is not marked as selected.\n // setting selection range to 0 causes issues in Safari.\n // https://bugs.webkit.org/show_bug.cgi?id=224425\n inputElement.scrollLeft = 0;\n }\n return;\n }\n\n const firstSelectedSection = state.sections[state.selectedSectionIndexes.startIndex];\n const lastSelectedSection = state.sections[state.selectedSectionIndexes.endIndex];\n if (firstSelectedSection && lastSelectedSection) {\n const selectionStart = firstSelectedSection.start;\n const selectionEnd = lastSelectedSection.end;\n\n if (\n selectionStart !== inputElement.selectionStart ||\n selectionEnd !== inputElement.selectionEnd\n ) {\n inputElement.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n });\n\n function syncSelectionFromDOM() {\n state.focusSectionInPosition(inputRef.current?.selectionStart ?? 0);\n setInnerState({});\n }\n\n const inputMode = React.useMemo(() => {\n if (!state.selectedSectionIndexes) {\n return 'text';\n }\n\n const activeSection = state.sections[state.selectedSectionIndexes.startIndex];\n if (!activeSection || activeSection.contentType === 'letter') {\n return 'text';\n }\n\n return 'tel';\n }, [state.selectedSectionIndexes, state.sections]);\n\n return {\n inputProps: {\n value: state.text,\n view: props.view,\n size: props.size,\n disabled: state.disabled,\n hasClear: !state.readOnly && !state.isEmpty && props.hasClear,\n placeholder: props.placeholder,\n id: props.id,\n label: props.label,\n startContent: props.startContent,\n endContent: props.endContent,\n pin: props.pin,\n autoFocus: props.autoFocus,\n controlRef: inputRef,\n autoComplete: 'off',\n type: 'text',\n validationState: state.validationState,\n errorMessage: props.errorMessage,\n errorPlacement: props.errorPlacement,\n onUpdate(value) {\n if (!value) {\n state.clearAll();\n }\n },\n onFocus(e) {\n props.onFocus?.(e);\n\n if (state.selectedSectionIndexes !== null) {\n return;\n }\n const input = e.target;\n const isAutofocus = !inputRef.current;\n setTimeout(() => {\n if (!input || input !== inputRef.current) {\n return;\n }\n if (isAutofocus) {\n state.focusSectionInPosition(0);\n } else if (\n // avoid selecting all sections when focusing empty field without value\n input.value.length &&\n Number(input.selectionEnd) - Number(input.selectionStart) ===\n input.value.length\n ) {\n setSelectedSections('all');\n } else {\n syncSelectionFromDOM();\n }\n });\n },\n onBlur(e) {\n props.onBlur?.(e);\n setSelectedSections(-1);\n },\n onKeyDown(e) {\n props.onKeyDown?.(e);\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n state.focusPreviousSection();\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n state.focusNextSection();\n } else if (e.key === 'Home') {\n e.preventDefault();\n state.decrementToMin();\n } else if (e.key === 'End') {\n e.preventDefault();\n state.incrementToMax();\n } else if (e.key === 'ArrowUp' && !e.altKey) {\n e.preventDefault();\n state.increment();\n } else if (e.key === 'ArrowDown' && !e.altKey) {\n e.preventDefault();\n state.decrement();\n } else if (e.key === 'PageUp') {\n e.preventDefault();\n state.incrementPage();\n } else if (e.key === 'PageDown') {\n e.preventDefault();\n state.decrementPage();\n } else if (e.key === 'Backspace' || e.key === 'Delete') {\n e.preventDefault();\n state.clearSection();\n } else if (e.key === 'a' && (e['ctrlKey'] || e['metaKey'])) {\n e.preventDefault();\n setSelectedSections('all');\n }\n },\n onKeyUp: props.onKeyUp,\n controlProps: {\n 'aria-label': props['aria-label'] || undefined,\n 'aria-labelledby': props['aria-labelledby'] || undefined,\n 'aria-describedby': props['aria-describedby'] || undefined,\n 'aria-details': props['aria-details'] || undefined,\n 'aria-disabled': state.disabled || undefined,\n readOnly: state.readOnly,\n inputMode,\n onClick() {\n syncSelectionFromDOM();\n },\n onMouseUp(e: React.MouseEvent) {\n e.preventDefault();\n },\n onBeforeInput(e) {\n e.preventDefault();\n // @ts-expect-error\n const key = e.data;\n if (key !== undefined && key !== null) {\n state.onInput(key);\n }\n },\n onPaste(e: React.ClipboardEvent) {\n e.preventDefault();\n if (state.readOnly) {\n return;\n }\n\n const pastedValue = cleanString(e.clipboardData.getData('text'));\n if (\n state.selectedSectionIndexes &&\n state.selectedSectionIndexes.startIndex ===\n state.selectedSectionIndexes.endIndex\n ) {\n const activeSection =\n state.sections[state.selectedSectionIndexes.startIndex];\n\n const digitsOnly = /^\\d+$/.test(pastedValue);\n const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);\n\n const isValidValue = Boolean(\n activeSection &&\n ((activeSection.contentType === 'digit' && digitsOnly) ||\n (activeSection.contentType === 'letter' && lettersOnly)),\n );\n if (isValidValue) {\n state.onInput(pastedValue);\n return;\n }\n if (digitsOnly || lettersOnly) {\n return;\n }\n }\n\n state.setValueFromString(pastedValue);\n },\n },\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useDateFieldProps.js","sourceRoot":"../../../../../src","sources":["components/DateField/hooks/useDateFieldProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type {DateTime} from '@gravity-ui/date-utils';\nimport type {TextInputProps} from '@gravity-ui/uikit';\n\nimport type {\n AccessibilityProps,\n DateFieldBase,\n TextInputProps as DateFieldTextInputProps,\n DomProps,\n FocusableProps,\n InputDOMProps,\n KeyboardEvents,\n StyleProps,\n TextInputExtendProps,\n} from '../../types';\nimport {cleanString} from '../utils';\n\nimport type {DateFieldState} from './useBaseDateFieldState';\n\nexport interface DateFieldProps<T = DateTime>\n extends DateFieldBase<T>,\n DateFieldTextInputProps,\n TextInputExtendProps,\n DomProps,\n InputDOMProps,\n FocusableProps,\n KeyboardEvents,\n StyleProps,\n AccessibilityProps {}\n\nexport function useDateFieldProps<T = DateTime>(\n state: DateFieldState<T>,\n props: DateFieldProps<T>,\n): {inputProps: TextInputProps} {\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const [, setInnerState] = React.useState({});\n\n function setSelectedSections(section: 'all' | number) {\n state.setSelectedSections(section);\n setInnerState({});\n }\n\n React.useLayoutEffect(() => {\n const inputElement = inputRef.current;\n if (!inputElement) {\n return;\n }\n\n if (state.selectedSectionIndexes === null) {\n if (inputElement.scrollLeft) {\n // Ensure that input content is not marked as selected.\n // setting selection range to 0 causes issues in Safari.\n // https://bugs.webkit.org/show_bug.cgi?id=224425\n inputElement.scrollLeft = 0;\n }\n return;\n }\n\n const firstSelectedSection = state.sections[state.selectedSectionIndexes.startIndex];\n const lastSelectedSection = state.sections[state.selectedSectionIndexes.endIndex];\n if (firstSelectedSection && lastSelectedSection) {\n const selectionStart = firstSelectedSection.start;\n const selectionEnd = lastSelectedSection.end;\n\n if (\n selectionStart !== inputElement.selectionStart ||\n selectionEnd !== inputElement.selectionEnd\n ) {\n inputElement.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n });\n\n function syncSelectionFromDOM() {\n state.focusSectionInPosition(inputRef.current?.selectionStart ?? 0);\n setInnerState({});\n }\n\n const inputMode = React.useMemo(() => {\n if (!state.selectedSectionIndexes) {\n return 'text';\n }\n\n const activeSection = state.sections[state.selectedSectionIndexes.startIndex];\n if (!activeSection || activeSection.contentType === 'letter') {\n return 'text';\n }\n\n return 'tel';\n }, [state.selectedSectionIndexes, state.sections]);\n\n return {\n inputProps: {\n value: state.text,\n view: props.view,\n size: props.size,\n disabled: state.disabled,\n hasClear: !state.readOnly && !state.isEmpty && props.hasClear,\n placeholder: props.placeholder,\n id: props.id,\n label: props.label,\n startContent: props.startContent,\n endContent: props.endContent,\n pin: props.pin,\n autoFocus: props.autoFocus,\n controlRef: inputRef,\n autoComplete: 'off',\n type: 'text',\n validationState: state.validationState,\n errorMessage: props.errorMessage,\n errorPlacement: props.errorPlacement,\n onUpdate(value) {\n if (!value) {\n state.clearAll();\n }\n },\n onFocus(e) {\n props.onFocus?.(e);\n\n if (state.selectedSectionIndexes !== null) {\n return;\n }\n const input = e.target;\n const isAutofocus = !inputRef.current;\n setTimeout(() => {\n if (!input || input !== inputRef.current) {\n return;\n }\n if (isAutofocus) {\n state.focusSectionInPosition(0);\n } else if (\n // avoid selecting all sections when focusing empty field without value\n input.value.length &&\n Number(input.selectionEnd) - Number(input.selectionStart) ===\n input.value.length\n ) {\n setSelectedSections('all');\n } else {\n syncSelectionFromDOM();\n }\n });\n },\n onBlur(e) {\n props.onBlur?.(e);\n setSelectedSections(-1);\n },\n onKeyDown(e) {\n props.onKeyDown?.(e);\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n state.focusPreviousSection();\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n state.focusNextSection();\n } else if (e.key === 'Home') {\n e.preventDefault();\n state.decrementToMin();\n } else if (e.key === 'End') {\n e.preventDefault();\n state.incrementToMax();\n } else if (e.key === 'ArrowUp' && !e.altKey) {\n e.preventDefault();\n state.increment();\n } else if (e.key === 'ArrowDown' && !e.altKey) {\n e.preventDefault();\n state.decrement();\n } else if (e.key === 'PageUp') {\n e.preventDefault();\n state.incrementPage();\n } else if (e.key === 'PageDown') {\n e.preventDefault();\n state.decrementPage();\n } else if (e.key === 'Backspace' || e.key === 'Delete') {\n e.preventDefault();\n state.clearSection();\n } else if (e.key === 'a' && (e['ctrlKey'] || e['metaKey'])) {\n e.preventDefault();\n setSelectedSections('all');\n }\n },\n onKeyUp: props.onKeyUp,\n controlProps: {\n 'aria-label': props['aria-label'] || undefined,\n 'aria-labelledby': props['aria-labelledby'] || undefined,\n 'aria-describedby': props['aria-describedby'] || undefined,\n 'aria-details': props['aria-details'] || undefined,\n 'aria-disabled': state.disabled || undefined,\n readOnly: state.readOnly,\n inputMode,\n onClick() {\n syncSelectionFromDOM();\n },\n onMouseUp(e: React.MouseEvent) {\n e.preventDefault();\n },\n onBeforeInput(e) {\n e.preventDefault();\n const key = e.data;\n if (key !== undefined && key !== null) {\n state.onInput(key);\n }\n },\n onPaste(e: React.ClipboardEvent) {\n e.preventDefault();\n if (state.readOnly) {\n return;\n }\n\n const pastedValue = cleanString(e.clipboardData.getData('text'));\n if (\n state.selectedSectionIndexes &&\n state.selectedSectionIndexes.startIndex ===\n state.selectedSectionIndexes.endIndex\n ) {\n const activeSection =\n state.sections[state.selectedSectionIndexes.startIndex];\n\n const digitsOnly = /^\\d+$/.test(pastedValue);\n const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);\n\n const isValidValue = Boolean(\n activeSection &&\n ((activeSection.contentType === 'digit' && digitsOnly) ||\n (activeSection.contentType === 'letter' && lettersOnly)),\n );\n if (isValidValue) {\n state.onInput(pastedValue);\n return;\n }\n if (digitsOnly || lettersOnly) {\n return;\n }\n }\n\n state.setValueFromString(pastedValue);\n },\n },\n },\n };\n}\n"]}
|
|
@@ -79,7 +79,6 @@ const formatTokenMap = {
|
|
|
79
79
|
function getDateSectionConfigFromFormatToken(formatToken) {
|
|
80
80
|
const config = formatTokenMap[formatToken];
|
|
81
81
|
if (!config) {
|
|
82
|
-
// eslint-disable-next-line no-console
|
|
83
82
|
console.error([
|
|
84
83
|
`The token "${formatToken}" is not supported by the Date field.`,
|
|
85
84
|
'Please try using another token.',
|
|
@@ -522,7 +521,6 @@ function isDateStringWithTimeZone(str) {
|
|
|
522
521
|
}
|
|
523
522
|
/**
|
|
524
523
|
* Trims leading and trailing spaces from a string and replaces multiple consecutive spaces with a single space.
|
|
525
|
-
*
|
|
526
524
|
* @param str - The input string to process.
|
|
527
525
|
* @returns The processed string with trimmed spaces and single spaces between words.
|
|
528
526
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"../../../../src","sources":["components/DateField/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {dateTime, expandFormat} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport {mergeDateTime} from '../utils/dates';\n\nimport {i18n} from './i18n';\nimport type {\n AvailableSections,\n DateFieldSection,\n DateFieldSectionType,\n DateFieldSectionWithoutPosition,\n DateFormatTokenMap,\n FormatInfo,\n} from './types';\n\nexport const EDITABLE_SEGMENTS: AvailableSections = {\n year: true,\n quarter: true,\n month: true,\n day: true,\n hour: true,\n minute: true,\n second: true,\n dayPeriod: true,\n weekday: true,\n};\n\nconst escapedCharacters = {start: '[', end: ']'};\n\nconst formatTokenMap: DateFormatTokenMap = {\n // Year\n YY: 'year',\n YYYY: 'year',\n\n // Quarter\n Q: 'quarter',\n\n // Month\n M: 'month',\n MM: 'month',\n MMM: {sectionType: 'month', contentType: 'letter'},\n MMMM: {sectionType: 'month', contentType: 'letter'},\n\n // Day of the month\n D: 'day',\n DD: 'day',\n Do: 'day',\n\n // Day of the week\n d: 'weekday',\n dd: {sectionType: 'weekday', contentType: 'letter'},\n ddd: {sectionType: 'weekday', contentType: 'letter'},\n dddd: {sectionType: 'weekday', contentType: 'letter'},\n\n // Day period AM, PM\n A: {sectionType: 'dayPeriod', contentType: 'letter'},\n a: {sectionType: 'dayPeriod', contentType: 'letter'},\n\n // Hours\n H: 'hour',\n HH: 'hour',\n h: 'hour',\n hh: 'hour',\n\n // Minutes\n m: 'minute',\n mm: 'minute',\n\n // Seconds\n s: 'second',\n ss: 'second',\n\n // Timezone\n z: {sectionType: 'timeZoneName', contentType: 'letter'},\n zzz: {sectionType: 'timeZoneName', contentType: 'letter'},\n Z: {sectionType: 'timeZoneName', contentType: 'letter'},\n ZZ: {sectionType: 'timeZoneName', contentType: 'letter'},\n};\n\nfunction getDateSectionConfigFromFormatToken(formatToken: string): {\n type: DateFieldSectionType;\n contentType: 'letter' | 'digit';\n} {\n const config = formatTokenMap[formatToken];\n\n if (!config) {\n // eslint-disable-next-line no-console\n console.error(\n [\n `The token \"${formatToken}\" is not supported by the Date field.`,\n 'Please try using another token.',\n ].join('\\n'),\n );\n return {\n type: 'literal',\n contentType: 'letter',\n };\n }\n\n if (typeof config === 'string') {\n return {\n type: config,\n contentType: 'digit',\n };\n }\n\n return {\n type: config.sectionType,\n contentType: config.contentType,\n };\n}\n\nfunction isFourDigitYearFormat(format: string) {\n return dateTime().format(format).length === 4;\n}\n\nfunction isHour12(format: string) {\n return dateTime().set('hour', 15).format(format) !== '15';\n}\n\nexport function getSectionLimits(section: DateFieldSectionWithoutPosition, date: DateTime) {\n const {type, format} = section;\n switch (type) {\n case 'year': {\n const isFourDigit = isFourDigitYearFormat(format);\n return {\n minValue: isFourDigit ? 1 : 0,\n maxValue: isFourDigit ? 9999 : 99,\n };\n }\n case 'quarter': {\n return {minValue: 1, maxValue: 4};\n }\n case 'month': {\n return {\n minValue: 0,\n maxValue: 11,\n };\n }\n case 'weekday': {\n return {\n minValue: 0,\n maxValue: 6,\n };\n }\n case 'day': {\n return {\n minValue: 1,\n maxValue: date ? date.daysInMonth() : 31,\n };\n }\n case 'hour': {\n if (isHour12(format)) {\n const isPM = date.hour() >= 12;\n return {\n minValue: isPM ? 12 : 0,\n maxValue: isPM ? 23 : 11,\n };\n }\n return {\n minValue: 0,\n maxValue: 23,\n };\n }\n case 'minute':\n case 'second': {\n return {\n minValue: 0,\n maxValue: 59,\n };\n }\n }\n return {};\n}\n\nexport function getSectionValue(section: DateFieldSectionWithoutPosition, date: DateTime) {\n const type = section.type;\n switch (type) {\n case 'year': {\n return isFourDigitYearFormat(section.format)\n ? date.year()\n : Number(date.format(section.format));\n }\n case 'quarter':\n case 'month':\n case 'hour':\n case 'minute':\n case 'second': {\n return date[type]();\n }\n case 'day': {\n return date.date();\n }\n case 'weekday': {\n return date.day();\n }\n case 'dayPeriod': {\n return date.hour() >= 12 ? 12 : 0;\n }\n }\n return undefined;\n}\n\nconst TYPE_MAPPING = {\n weekday: 'day',\n day: 'date',\n dayPeriod: 'hour',\n} as const;\n\nexport function getDurationUnitFromSectionType(type: DateFieldSectionType) {\n if (type === 'literal' || type === 'timeZoneName' || type === 'unknown') {\n throw new Error(`${type} section does not have duration unit.`);\n }\n\n if (type in TYPE_MAPPING) {\n return TYPE_MAPPING[type as keyof typeof TYPE_MAPPING];\n }\n\n return type as Exclude<\n DateFieldSectionType,\n keyof typeof TYPE_MAPPING | 'literal' | 'timeZoneName' | 'unknown'\n >;\n}\n\nexport function addSegment(section: DateFieldSection, date: DateTime, amount: number) {\n let val = section.value ?? 0;\n if (section.type === 'dayPeriod') {\n val = date.hour() + (date.hour() >= 12 ? -12 : 12);\n } else {\n val = val + amount;\n const min = section.minValue;\n const max = section.maxValue;\n if (typeof min === 'number' && typeof max === 'number') {\n const length = max - min + 1;\n val = ((val - min + length) % length) + min;\n }\n }\n\n if (section.type === 'year' && !isFourDigitYearFormat(section.format)) {\n val = dateTime({input: `${val}`.padStart(2, '0'), format: section.format}).year();\n }\n\n if (section.type === 'quarter') {\n return date.set(getDurationUnitFromSectionType('month'), val * 3 - 1);\n }\n\n const type = getDurationUnitFromSectionType(section.type);\n return date.set(type, val);\n}\n\nexport function setSegment(section: DateFieldSection, date: DateTime, amount: number) {\n const type = section.type;\n switch (type) {\n case 'year': {\n return date.set(\n 'year',\n isFourDigitYearFormat(section.format)\n ? amount\n : dateTime({\n input: `${amount}`.padStart(2, '0'),\n format: section.format,\n }).year(),\n );\n }\n case 'quarter': {\n return date.set(getDurationUnitFromSectionType('month'), amount * 3 - 1);\n }\n case 'day':\n case 'weekday':\n case 'month': {\n return date.set(getDurationUnitFromSectionType(type), amount);\n }\n case 'dayPeriod': {\n const hours = date.hour();\n const wasPM = hours >= 12;\n const isPM = amount >= 12;\n if (isPM === wasPM) {\n return date;\n }\n return date.set('hour', wasPM ? hours - 12 : hours + 12);\n }\n case 'hour': {\n // In 12 hour time, ensure that AM/PM does not change\n let sectionAmount = amount;\n if (section.minValue === 12 || section.maxValue === 11) {\n const hours = date.hour();\n const wasPM = hours >= 12;\n if (!wasPM && sectionAmount === 12) {\n sectionAmount = 0;\n }\n if (wasPM && sectionAmount < 12) {\n sectionAmount += 12;\n }\n }\n return date.set('hour', sectionAmount);\n }\n case 'minute':\n case 'second': {\n return date.set(type, amount);\n }\n }\n\n return date;\n}\n\nfunction doesSectionHaveLeadingZeros(\n contentType: 'digit' | 'letter',\n sectionType: DateFieldSectionType,\n format: string,\n) {\n if (contentType !== 'digit') {\n return false;\n }\n\n switch (sectionType) {\n case 'year': {\n if (isFourDigitYearFormat(format)) {\n const formatted0001 = dateTime().set('year', 1).format(format);\n return formatted0001 === '0001';\n }\n\n const formatted2001 = dateTime().set('year', 2001).format(format);\n return formatted2001 === '01';\n }\n\n case 'quarter': {\n return false;\n }\n\n case 'month': {\n return dateTime().startOf('year').format(format).length > 1;\n }\n\n case 'day': {\n return dateTime().startOf('month').format(format).length > 1;\n }\n\n case 'weekday': {\n return dateTime().startOf('week').format(format).length > 1;\n }\n\n case 'hour': {\n return dateTime().set('hour', 1).format(format).length > 1;\n }\n\n case 'minute': {\n return dateTime().set('minute', 1).format(format).length > 1;\n }\n\n case 'second': {\n return dateTime().set('second', 1).format(format).length > 1;\n }\n\n default: {\n throw new Error('Invalid section type');\n }\n }\n}\n\nfunction getSectionPlaceholder(\n sectionConfig: Pick<DateFieldSection, 'type' | 'contentType'>,\n currentTokenValue: string,\n) {\n switch (sectionConfig.type) {\n case 'year': {\n return i18n('year_placeholder').repeat(dateTime().format(currentTokenValue).length);\n }\n\n case 'quarter': {\n return i18n('quarter_placeholder');\n }\n\n case 'month': {\n return i18n('month_placeholder').repeat(sectionConfig.contentType === 'letter' ? 4 : 2);\n }\n\n case 'day': {\n return i18n('day_placeholder').repeat(2);\n }\n\n case 'weekday': {\n return i18n('weekday_placeholder').repeat(\n sectionConfig.contentType === 'letter' ? 4 : 2,\n );\n }\n\n case 'hour': {\n return i18n('hour_placeholder').repeat(2);\n }\n\n case 'minute': {\n return i18n('minute_placeholder').repeat(2);\n }\n\n case 'second': {\n return i18n('second_placeholder').repeat(2);\n }\n\n case 'dayPeriod': {\n return i18n('dayPeriod_placeholder');\n }\n\n default: {\n return currentTokenValue;\n }\n }\n}\n\nexport function splitFormatIntoSections(format: string) {\n const sections: DateFieldSectionWithoutPosition[] = [];\n\n const expandedFormat = expandFormat(format);\n\n let currentTokenValue = '';\n let isSeparator = false;\n let isInEscapeBoundary = false;\n for (let i = 0; i < expandedFormat.length; i++) {\n const char = expandedFormat[i] || '';\n if (isInEscapeBoundary) {\n if (char === escapedCharacters.end) {\n isInEscapeBoundary = false;\n continue;\n }\n currentTokenValue += char;\n } else if (char.match(/[a-zA-Z]/)) {\n if (isSeparator) {\n addLiteralSection(sections, currentTokenValue);\n currentTokenValue = '';\n }\n isSeparator = false;\n currentTokenValue += char;\n } else {\n if (!isSeparator) {\n addFormatSection(sections, currentTokenValue);\n currentTokenValue = '';\n }\n isSeparator = true;\n if (char === escapedCharacters.start) {\n isInEscapeBoundary = true;\n } else {\n currentTokenValue += char;\n }\n }\n }\n if (currentTokenValue) {\n if (isSeparator) {\n addLiteralSection(sections, currentTokenValue);\n } else {\n addFormatSection(sections, currentTokenValue);\n }\n }\n\n return sections;\n}\n\nfunction addFormatSection(sections: DateFieldSectionWithoutPosition[], token: string) {\n if (!token) {\n return;\n }\n\n const sectionConfig = getDateSectionConfigFromFormatToken(token);\n\n const hasLeadingZeros = doesSectionHaveLeadingZeros(\n sectionConfig.contentType,\n sectionConfig.type,\n token,\n );\n\n sections.push({\n ...sectionConfig,\n format: token,\n placeholder: getSectionPlaceholder(sectionConfig, token),\n options: getSectionOptions(sectionConfig, token),\n hasLeadingZeros,\n });\n}\n\nfunction addLiteralSection(sections: DateFieldSectionWithoutPosition[], token: string) {\n if (!token) {\n return;\n }\n\n sections.push({\n type: 'literal',\n contentType: 'letter',\n format: token,\n placeholder: token,\n hasLeadingZeros: false,\n });\n}\n\nfunction getSectionOptions(\n section: Pick<DateFieldSectionWithoutPosition, 'type' | 'contentType'>,\n token: string,\n) {\n switch (section.type) {\n case 'month': {\n const format = section.contentType === 'letter' ? token : 'MMMM';\n let date = dateTime().startOf('year');\n const options: string[] = [];\n for (let i = 0; i < 12; i++) {\n options.push(date.format(format).toLocaleUpperCase());\n date = date.add(1, 'months');\n }\n return options;\n }\n case 'dayPeriod': {\n const amDayPeriod = dateTime().hour(0);\n const pmDayPeriod = amDayPeriod.hour(12);\n const options = [\n amDayPeriod.format(token).toLocaleUpperCase(),\n pmDayPeriod.format(token).toLocaleUpperCase(),\n ];\n return options;\n }\n case 'weekday': {\n const format = section.contentType === 'letter' ? token : 'dddd';\n let date = dateTime().day(0);\n const options: string[] = [];\n for (let i = 0; i < 7; i++) {\n options.push(date.format(format).toLocaleUpperCase());\n date = date.add(1, 'day');\n }\n return options;\n }\n }\n\n return undefined;\n}\n\nexport function cleanString(dirtyString: string) {\n return dirtyString.replace(/[\\u2066\\u2067\\u2068\\u2069]/g, '');\n}\n\nexport function getEditableSections(\n sections: DateFieldSectionWithoutPosition[],\n value: DateTime,\n validSegments: AvailableSections,\n) {\n let position = 1;\n const newSections: DateFieldSection[] = [];\n let previousEditableSection = -1;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n if (!section) {\n continue;\n }\n\n const newSection = toEditableSection(\n section,\n value,\n validSegments,\n position,\n previousEditableSection,\n );\n\n newSections.push(newSection);\n\n if (isEditableSection(section)) {\n for (let j = Math.max(0, previousEditableSection); j <= i; j++) {\n const prevSection = newSections[j];\n if (prevSection) {\n prevSection.nextEditableSection = i;\n if (prevSection.previousEditableSection === -1) {\n prevSection.previousEditableSection = i;\n }\n }\n }\n previousEditableSection = i;\n }\n\n position += newSection.textValue.length;\n }\n\n return newSections;\n}\n\nexport function isEditableSection(section: DateFieldSectionWithoutPosition): boolean {\n return EDITABLE_SEGMENTS[section.type] ?? false;\n}\n\nexport function toEditableSection(\n section: DateFieldSectionWithoutPosition,\n value: DateTime,\n validSegments: AvailableSections,\n position: number,\n previousEditableSection: number,\n): DateFieldSection {\n const isEditable = isEditableSection(section);\n let renderedValue = section.placeholder;\n if ((isEditable && validSegments[section.type]) || section.type === 'timeZoneName') {\n renderedValue = value.format(section.format);\n if (section.contentType === 'digit' && renderedValue.length < section.placeholder.length) {\n renderedValue = renderedValue.padStart(section.placeholder.length, '0');\n }\n }\n\n // use bidirectional context to allow the browser autodetect text direction\n renderedValue = '\\u2068' + renderedValue + '\\u2069';\n\n const sectionLength = renderedValue.length;\n\n const newSection = {\n ...section,\n value: getSectionValue(section, value),\n textValue: renderedValue,\n start: position,\n end: position + sectionLength,\n modified: false,\n previousEditableSection,\n nextEditableSection: previousEditableSection,\n ...getSectionLimits(section, value),\n };\n\n return newSection;\n}\n\nexport function getCurrentEditableSectionIndex(\n sections: DateFieldSection[],\n selectedSections: 'all' | number,\n) {\n const currentIndex =\n selectedSections === 'all' || selectedSections === -1 ? 0 : selectedSections;\n const section = sections[currentIndex];\n if (section && !EDITABLE_SEGMENTS[section.type]) {\n return section.nextEditableSection;\n }\n return section ? currentIndex : -1;\n}\n\nexport function formatSections(sections: DateFieldSection[]): string {\n // use ltr direction context to get predictable navigation inside input\n return '\\u2066' + sections.map((s) => s.textValue).join('') + '\\u2069';\n}\n\nfunction parseDate(options: {input: string; format: string; timeZone?: string}) {\n let date = dateTime(options);\n if (!date.isValid()) {\n date = dateTime({...options, format: undefined});\n }\n return date;\n}\n\nfunction isDateStringWithTimeZone(str: string) {\n return /z$/i.test(str) || /[+-]\\d\\d:\\d\\d$/.test(str);\n}\n\n/**\n * Trims leading and trailing spaces from a string and replaces multiple consecutive spaces with a single space.\n *\n * @param str - The input string to process.\n * @returns The processed string with trimmed spaces and single spaces between words.\n */\nfunction trimExtraSpaces(str: string) {\n return str.trim().replace(/\\s+/g, ' ');\n}\n\nexport function parseDateFromString(str: string, format: string, timeZone?: string): DateTime {\n const input = typeof str === 'string' ? trimExtraSpaces(str) : str;\n let date = parseDate({input, format, timeZone});\n if (date.isValid()) {\n if (timeZone && !isDateStringWithTimeZone(str)) {\n const time = parseDate({input: str, format});\n date = mergeDateTime(date, time);\n }\n }\n\n return date;\n}\n\nexport function isAllSegmentsValid(\n allSegments: AvailableSections,\n validSegments: AvailableSections,\n) {\n return Object.keys(allSegments).every((key) => validSegments[key as keyof AvailableSections]);\n}\n\nexport function useFormatSections(format: string) {\n const usedFormat = format;\n const [sections, setSections] = React.useState(() => splitFormatIntoSections(usedFormat));\n\n const [previousFormat, setFormat] = React.useState(usedFormat);\n if (usedFormat !== previousFormat) {\n setFormat(usedFormat);\n setSections(splitFormatIntoSections(usedFormat));\n }\n\n return sections;\n}\n\nconst dateUnits = ['day', 'month', 'quarter', 'year'] satisfies DateFieldSectionType[];\nconst timeUnits = ['second', 'minute', 'hour'] satisfies DateFieldSectionType[];\n\nexport function getFormatInfo(sections: DateFieldSectionWithoutPosition[]): FormatInfo {\n const availableUnits: AvailableSections = {};\n let hasDate = false;\n let hasTime = false;\n let minDateUnitIndex = dateUnits.length - 1;\n let minTimeUnitIndex = timeUnits.length - 1;\n for (const s of sections) {\n if (!isEditableSection(s)) {\n continue;\n }\n const dateUnitIndex = dateUnits.indexOf(s.type as any);\n const timeUnitIndex = timeUnits.indexOf(s.type as any);\n availableUnits[s.type] = true;\n hasDate ||= dateUnitIndex !== -1;\n hasTime ||= timeUnitIndex !== -1;\n minDateUnitIndex =\n dateUnitIndex === -1 ? minDateUnitIndex : Math.min(dateUnitIndex, minDateUnitIndex);\n minTimeUnitIndex =\n timeUnitIndex === -1 ? minTimeUnitIndex : Math.min(timeUnitIndex, minTimeUnitIndex);\n }\n return {\n availableUnits,\n hasDate,\n hasTime,\n minDateUnit: dateUnits[minDateUnitIndex] ?? 'day',\n minTimeUnit: timeUnits[minTimeUnitIndex] ?? 'second',\n };\n}\n\nexport function adjustDateToFormat(\n date: DateTime,\n formatInfo: FormatInfo,\n method: 'startOf' | 'endOf' = 'startOf',\n) {\n let newDate = date;\n if (formatInfo.hasDate) {\n if (formatInfo.minDateUnit !== 'day') {\n newDate = newDate[method](formatInfo.minDateUnit);\n newDate = mergeDateTime(newDate, date);\n }\n }\n if (formatInfo.hasTime) {\n newDate = mergeDateTime(newDate, date[method](formatInfo.minTimeUnit));\n }\n\n return newDate;\n}\n\nexport function markValidSection(\n allSections: AvailableSections,\n editableSections: AvailableSections,\n unit: DateFieldSectionType,\n) {\n const validSections = {...editableSections};\n validSections[unit] = true;\n if (validSections.day && validSections.month && validSections.year && allSections.weekday) {\n validSections.weekday = true;\n }\n if (validSections.month && allSections.quarter) {\n validSections.quarter = true;\n }\n if (validSections.quarter && allSections.month) {\n validSections.month = true;\n }\n if (validSections.hour && allSections.dayPeriod) {\n validSections.dayPeriod = true;\n }\n\n return validSections;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"../../../../src","sources":["components/DateField/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {dateTime, expandFormat} from '@gravity-ui/date-utils';\nimport type {DateTime} from '@gravity-ui/date-utils';\n\nimport {mergeDateTime} from '../utils/dates';\n\nimport {i18n} from './i18n';\nimport type {\n AvailableSections,\n DateFieldSection,\n DateFieldSectionType,\n DateFieldSectionWithoutPosition,\n DateFormatTokenMap,\n FormatInfo,\n} from './types';\n\nexport const EDITABLE_SEGMENTS: AvailableSections = {\n year: true,\n quarter: true,\n month: true,\n day: true,\n hour: true,\n minute: true,\n second: true,\n dayPeriod: true,\n weekday: true,\n};\n\nconst escapedCharacters = {start: '[', end: ']'};\n\nconst formatTokenMap: DateFormatTokenMap = {\n // Year\n YY: 'year',\n YYYY: 'year',\n\n // Quarter\n Q: 'quarter',\n\n // Month\n M: 'month',\n MM: 'month',\n MMM: {sectionType: 'month', contentType: 'letter'},\n MMMM: {sectionType: 'month', contentType: 'letter'},\n\n // Day of the month\n D: 'day',\n DD: 'day',\n Do: 'day',\n\n // Day of the week\n d: 'weekday',\n dd: {sectionType: 'weekday', contentType: 'letter'},\n ddd: {sectionType: 'weekday', contentType: 'letter'},\n dddd: {sectionType: 'weekday', contentType: 'letter'},\n\n // Day period AM, PM\n A: {sectionType: 'dayPeriod', contentType: 'letter'},\n a: {sectionType: 'dayPeriod', contentType: 'letter'},\n\n // Hours\n H: 'hour',\n HH: 'hour',\n h: 'hour',\n hh: 'hour',\n\n // Minutes\n m: 'minute',\n mm: 'minute',\n\n // Seconds\n s: 'second',\n ss: 'second',\n\n // Timezone\n z: {sectionType: 'timeZoneName', contentType: 'letter'},\n zzz: {sectionType: 'timeZoneName', contentType: 'letter'},\n Z: {sectionType: 'timeZoneName', contentType: 'letter'},\n ZZ: {sectionType: 'timeZoneName', contentType: 'letter'},\n};\n\nfunction getDateSectionConfigFromFormatToken(formatToken: string): {\n type: DateFieldSectionType;\n contentType: 'letter' | 'digit';\n} {\n const config = formatTokenMap[formatToken];\n\n if (!config) {\n console.error(\n [\n `The token \"${formatToken}\" is not supported by the Date field.`,\n 'Please try using another token.',\n ].join('\\n'),\n );\n return {\n type: 'literal',\n contentType: 'letter',\n };\n }\n\n if (typeof config === 'string') {\n return {\n type: config,\n contentType: 'digit',\n };\n }\n\n return {\n type: config.sectionType,\n contentType: config.contentType,\n };\n}\n\nfunction isFourDigitYearFormat(format: string) {\n return dateTime().format(format).length === 4;\n}\n\nfunction isHour12(format: string) {\n return dateTime().set('hour', 15).format(format) !== '15';\n}\n\nexport function getSectionLimits(section: DateFieldSectionWithoutPosition, date: DateTime) {\n const {type, format} = section;\n switch (type) {\n case 'year': {\n const isFourDigit = isFourDigitYearFormat(format);\n return {\n minValue: isFourDigit ? 1 : 0,\n maxValue: isFourDigit ? 9999 : 99,\n };\n }\n case 'quarter': {\n return {minValue: 1, maxValue: 4};\n }\n case 'month': {\n return {\n minValue: 0,\n maxValue: 11,\n };\n }\n case 'weekday': {\n return {\n minValue: 0,\n maxValue: 6,\n };\n }\n case 'day': {\n return {\n minValue: 1,\n maxValue: date ? date.daysInMonth() : 31,\n };\n }\n case 'hour': {\n if (isHour12(format)) {\n const isPM = date.hour() >= 12;\n return {\n minValue: isPM ? 12 : 0,\n maxValue: isPM ? 23 : 11,\n };\n }\n return {\n minValue: 0,\n maxValue: 23,\n };\n }\n case 'minute':\n case 'second': {\n return {\n minValue: 0,\n maxValue: 59,\n };\n }\n }\n return {};\n}\n\nexport function getSectionValue(section: DateFieldSectionWithoutPosition, date: DateTime) {\n const type = section.type;\n switch (type) {\n case 'year': {\n return isFourDigitYearFormat(section.format)\n ? date.year()\n : Number(date.format(section.format));\n }\n case 'quarter':\n case 'month':\n case 'hour':\n case 'minute':\n case 'second': {\n return date[type]();\n }\n case 'day': {\n return date.date();\n }\n case 'weekday': {\n return date.day();\n }\n case 'dayPeriod': {\n return date.hour() >= 12 ? 12 : 0;\n }\n }\n return undefined;\n}\n\nconst TYPE_MAPPING = {\n weekday: 'day',\n day: 'date',\n dayPeriod: 'hour',\n} as const;\n\nexport function getDurationUnitFromSectionType(type: DateFieldSectionType) {\n if (type === 'literal' || type === 'timeZoneName' || type === 'unknown') {\n throw new Error(`${type} section does not have duration unit.`);\n }\n\n if (type in TYPE_MAPPING) {\n return TYPE_MAPPING[type as keyof typeof TYPE_MAPPING];\n }\n\n return type as Exclude<\n DateFieldSectionType,\n keyof typeof TYPE_MAPPING | 'literal' | 'timeZoneName' | 'unknown'\n >;\n}\n\nexport function addSegment(section: DateFieldSection, date: DateTime, amount: number) {\n let val = section.value ?? 0;\n if (section.type === 'dayPeriod') {\n val = date.hour() + (date.hour() >= 12 ? -12 : 12);\n } else {\n val = val + amount;\n const min = section.minValue;\n const max = section.maxValue;\n if (typeof min === 'number' && typeof max === 'number') {\n const length = max - min + 1;\n val = ((val - min + length) % length) + min;\n }\n }\n\n if (section.type === 'year' && !isFourDigitYearFormat(section.format)) {\n val = dateTime({input: `${val}`.padStart(2, '0'), format: section.format}).year();\n }\n\n if (section.type === 'quarter') {\n return date.set(getDurationUnitFromSectionType('month'), val * 3 - 1);\n }\n\n const type = getDurationUnitFromSectionType(section.type);\n return date.set(type, val);\n}\n\nexport function setSegment(section: DateFieldSection, date: DateTime, amount: number) {\n const type = section.type;\n switch (type) {\n case 'year': {\n return date.set(\n 'year',\n isFourDigitYearFormat(section.format)\n ? amount\n : dateTime({\n input: `${amount}`.padStart(2, '0'),\n format: section.format,\n }).year(),\n );\n }\n case 'quarter': {\n return date.set(getDurationUnitFromSectionType('month'), amount * 3 - 1);\n }\n case 'day':\n case 'weekday':\n case 'month': {\n return date.set(getDurationUnitFromSectionType(type), amount);\n }\n case 'dayPeriod': {\n const hours = date.hour();\n const wasPM = hours >= 12;\n const isPM = amount >= 12;\n if (isPM === wasPM) {\n return date;\n }\n return date.set('hour', wasPM ? hours - 12 : hours + 12);\n }\n case 'hour': {\n // In 12 hour time, ensure that AM/PM does not change\n let sectionAmount = amount;\n if (section.minValue === 12 || section.maxValue === 11) {\n const hours = date.hour();\n const wasPM = hours >= 12;\n if (!wasPM && sectionAmount === 12) {\n sectionAmount = 0;\n }\n if (wasPM && sectionAmount < 12) {\n sectionAmount += 12;\n }\n }\n return date.set('hour', sectionAmount);\n }\n case 'minute':\n case 'second': {\n return date.set(type, amount);\n }\n }\n\n return date;\n}\n\nfunction doesSectionHaveLeadingZeros(\n contentType: 'digit' | 'letter',\n sectionType: DateFieldSectionType,\n format: string,\n) {\n if (contentType !== 'digit') {\n return false;\n }\n\n switch (sectionType) {\n case 'year': {\n if (isFourDigitYearFormat(format)) {\n const formatted0001 = dateTime().set('year', 1).format(format);\n return formatted0001 === '0001';\n }\n\n const formatted2001 = dateTime().set('year', 2001).format(format);\n return formatted2001 === '01';\n }\n\n case 'quarter': {\n return false;\n }\n\n case 'month': {\n return dateTime().startOf('year').format(format).length > 1;\n }\n\n case 'day': {\n return dateTime().startOf('month').format(format).length > 1;\n }\n\n case 'weekday': {\n return dateTime().startOf('week').format(format).length > 1;\n }\n\n case 'hour': {\n return dateTime().set('hour', 1).format(format).length > 1;\n }\n\n case 'minute': {\n return dateTime().set('minute', 1).format(format).length > 1;\n }\n\n case 'second': {\n return dateTime().set('second', 1).format(format).length > 1;\n }\n\n default: {\n throw new Error('Invalid section type');\n }\n }\n}\n\nfunction getSectionPlaceholder(\n sectionConfig: Pick<DateFieldSection, 'type' | 'contentType'>,\n currentTokenValue: string,\n) {\n switch (sectionConfig.type) {\n case 'year': {\n return i18n('year_placeholder').repeat(dateTime().format(currentTokenValue).length);\n }\n\n case 'quarter': {\n return i18n('quarter_placeholder');\n }\n\n case 'month': {\n return i18n('month_placeholder').repeat(sectionConfig.contentType === 'letter' ? 4 : 2);\n }\n\n case 'day': {\n return i18n('day_placeholder').repeat(2);\n }\n\n case 'weekday': {\n return i18n('weekday_placeholder').repeat(\n sectionConfig.contentType === 'letter' ? 4 : 2,\n );\n }\n\n case 'hour': {\n return i18n('hour_placeholder').repeat(2);\n }\n\n case 'minute': {\n return i18n('minute_placeholder').repeat(2);\n }\n\n case 'second': {\n return i18n('second_placeholder').repeat(2);\n }\n\n case 'dayPeriod': {\n return i18n('dayPeriod_placeholder');\n }\n\n default: {\n return currentTokenValue;\n }\n }\n}\n\nexport function splitFormatIntoSections(format: string) {\n const sections: DateFieldSectionWithoutPosition[] = [];\n\n const expandedFormat = expandFormat(format);\n\n let currentTokenValue = '';\n let isSeparator = false;\n let isInEscapeBoundary = false;\n for (let i = 0; i < expandedFormat.length; i++) {\n const char = expandedFormat[i] || '';\n if (isInEscapeBoundary) {\n if (char === escapedCharacters.end) {\n isInEscapeBoundary = false;\n continue;\n }\n currentTokenValue += char;\n } else if (char.match(/[a-zA-Z]/)) {\n if (isSeparator) {\n addLiteralSection(sections, currentTokenValue);\n currentTokenValue = '';\n }\n isSeparator = false;\n currentTokenValue += char;\n } else {\n if (!isSeparator) {\n addFormatSection(sections, currentTokenValue);\n currentTokenValue = '';\n }\n isSeparator = true;\n if (char === escapedCharacters.start) {\n isInEscapeBoundary = true;\n } else {\n currentTokenValue += char;\n }\n }\n }\n if (currentTokenValue) {\n if (isSeparator) {\n addLiteralSection(sections, currentTokenValue);\n } else {\n addFormatSection(sections, currentTokenValue);\n }\n }\n\n return sections;\n}\n\nfunction addFormatSection(sections: DateFieldSectionWithoutPosition[], token: string) {\n if (!token) {\n return;\n }\n\n const sectionConfig = getDateSectionConfigFromFormatToken(token);\n\n const hasLeadingZeros = doesSectionHaveLeadingZeros(\n sectionConfig.contentType,\n sectionConfig.type,\n token,\n );\n\n sections.push({\n ...sectionConfig,\n format: token,\n placeholder: getSectionPlaceholder(sectionConfig, token),\n options: getSectionOptions(sectionConfig, token),\n hasLeadingZeros,\n });\n}\n\nfunction addLiteralSection(sections: DateFieldSectionWithoutPosition[], token: string) {\n if (!token) {\n return;\n }\n\n sections.push({\n type: 'literal',\n contentType: 'letter',\n format: token,\n placeholder: token,\n hasLeadingZeros: false,\n });\n}\n\nfunction getSectionOptions(\n section: Pick<DateFieldSectionWithoutPosition, 'type' | 'contentType'>,\n token: string,\n) {\n switch (section.type) {\n case 'month': {\n const format = section.contentType === 'letter' ? token : 'MMMM';\n let date = dateTime().startOf('year');\n const options: string[] = [];\n for (let i = 0; i < 12; i++) {\n options.push(date.format(format).toLocaleUpperCase());\n date = date.add(1, 'months');\n }\n return options;\n }\n case 'dayPeriod': {\n const amDayPeriod = dateTime().hour(0);\n const pmDayPeriod = amDayPeriod.hour(12);\n const options = [\n amDayPeriod.format(token).toLocaleUpperCase(),\n pmDayPeriod.format(token).toLocaleUpperCase(),\n ];\n return options;\n }\n case 'weekday': {\n const format = section.contentType === 'letter' ? token : 'dddd';\n let date = dateTime().day(0);\n const options: string[] = [];\n for (let i = 0; i < 7; i++) {\n options.push(date.format(format).toLocaleUpperCase());\n date = date.add(1, 'day');\n }\n return options;\n }\n }\n\n return undefined;\n}\n\nexport function cleanString(dirtyString: string) {\n return dirtyString.replace(/[\\u2066\\u2067\\u2068\\u2069]/g, '');\n}\n\nexport function getEditableSections(\n sections: DateFieldSectionWithoutPosition[],\n value: DateTime,\n validSegments: AvailableSections,\n) {\n let position = 1;\n const newSections: DateFieldSection[] = [];\n let previousEditableSection = -1;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n if (!section) {\n continue;\n }\n\n const newSection = toEditableSection(\n section,\n value,\n validSegments,\n position,\n previousEditableSection,\n );\n\n newSections.push(newSection);\n\n if (isEditableSection(section)) {\n for (let j = Math.max(0, previousEditableSection); j <= i; j++) {\n const prevSection = newSections[j];\n if (prevSection) {\n prevSection.nextEditableSection = i;\n if (prevSection.previousEditableSection === -1) {\n prevSection.previousEditableSection = i;\n }\n }\n }\n previousEditableSection = i;\n }\n\n position += newSection.textValue.length;\n }\n\n return newSections;\n}\n\nexport function isEditableSection(section: DateFieldSectionWithoutPosition): boolean {\n return EDITABLE_SEGMENTS[section.type] ?? false;\n}\n\nexport function toEditableSection(\n section: DateFieldSectionWithoutPosition,\n value: DateTime,\n validSegments: AvailableSections,\n position: number,\n previousEditableSection: number,\n): DateFieldSection {\n const isEditable = isEditableSection(section);\n let renderedValue = section.placeholder;\n if ((isEditable && validSegments[section.type]) || section.type === 'timeZoneName') {\n renderedValue = value.format(section.format);\n if (section.contentType === 'digit' && renderedValue.length < section.placeholder.length) {\n renderedValue = renderedValue.padStart(section.placeholder.length, '0');\n }\n }\n\n // use bidirectional context to allow the browser autodetect text direction\n renderedValue = '\\u2068' + renderedValue + '\\u2069';\n\n const sectionLength = renderedValue.length;\n\n const newSection = {\n ...section,\n value: getSectionValue(section, value),\n textValue: renderedValue,\n start: position,\n end: position + sectionLength,\n modified: false,\n previousEditableSection,\n nextEditableSection: previousEditableSection,\n ...getSectionLimits(section, value),\n };\n\n return newSection;\n}\n\nexport function getCurrentEditableSectionIndex(\n sections: DateFieldSection[],\n selectedSections: 'all' | number,\n) {\n const currentIndex =\n selectedSections === 'all' || selectedSections === -1 ? 0 : selectedSections;\n const section = sections[currentIndex];\n if (section && !EDITABLE_SEGMENTS[section.type]) {\n return section.nextEditableSection;\n }\n return section ? currentIndex : -1;\n}\n\nexport function formatSections(sections: DateFieldSection[]): string {\n // use ltr direction context to get predictable navigation inside input\n return '\\u2066' + sections.map((s) => s.textValue).join('') + '\\u2069';\n}\n\nfunction parseDate(options: {input: string; format: string; timeZone?: string}) {\n let date = dateTime(options);\n if (!date.isValid()) {\n date = dateTime({...options, format: undefined});\n }\n return date;\n}\n\nfunction isDateStringWithTimeZone(str: string) {\n return /z$/i.test(str) || /[+-]\\d\\d:\\d\\d$/.test(str);\n}\n\n/**\n * Trims leading and trailing spaces from a string and replaces multiple consecutive spaces with a single space.\n * @param str - The input string to process.\n * @returns The processed string with trimmed spaces and single spaces between words.\n */\nfunction trimExtraSpaces(str: string) {\n return str.trim().replace(/\\s+/g, ' ');\n}\n\nexport function parseDateFromString(str: string, format: string, timeZone?: string): DateTime {\n const input = typeof str === 'string' ? trimExtraSpaces(str) : str;\n let date = parseDate({input, format, timeZone});\n if (date.isValid()) {\n if (timeZone && !isDateStringWithTimeZone(str)) {\n const time = parseDate({input: str, format});\n date = mergeDateTime(date, time);\n }\n }\n\n return date;\n}\n\nexport function isAllSegmentsValid(\n allSegments: AvailableSections,\n validSegments: AvailableSections,\n) {\n return Object.keys(allSegments).every((key) => validSegments[key as keyof AvailableSections]);\n}\n\nexport function useFormatSections(format: string) {\n const usedFormat = format;\n const [sections, setSections] = React.useState(() => splitFormatIntoSections(usedFormat));\n\n const [previousFormat, setFormat] = React.useState(usedFormat);\n if (usedFormat !== previousFormat) {\n setFormat(usedFormat);\n setSections(splitFormatIntoSections(usedFormat));\n }\n\n return sections;\n}\n\nconst dateUnits = ['day', 'month', 'quarter', 'year'] satisfies DateFieldSectionType[];\nconst timeUnits = ['second', 'minute', 'hour'] satisfies DateFieldSectionType[];\n\nexport function getFormatInfo(sections: DateFieldSectionWithoutPosition[]): FormatInfo {\n const availableUnits: AvailableSections = {};\n let hasDate = false;\n let hasTime = false;\n let minDateUnitIndex = dateUnits.length - 1;\n let minTimeUnitIndex = timeUnits.length - 1;\n for (const s of sections) {\n if (!isEditableSection(s)) {\n continue;\n }\n const dateUnitIndex = dateUnits.indexOf(s.type as any);\n const timeUnitIndex = timeUnits.indexOf(s.type as any);\n availableUnits[s.type] = true;\n hasDate ||= dateUnitIndex !== -1;\n hasTime ||= timeUnitIndex !== -1;\n minDateUnitIndex =\n dateUnitIndex === -1 ? minDateUnitIndex : Math.min(dateUnitIndex, minDateUnitIndex);\n minTimeUnitIndex =\n timeUnitIndex === -1 ? minTimeUnitIndex : Math.min(timeUnitIndex, minTimeUnitIndex);\n }\n return {\n availableUnits,\n hasDate,\n hasTime,\n minDateUnit: dateUnits[minDateUnitIndex] ?? 'day',\n minTimeUnit: timeUnits[minTimeUnitIndex] ?? 'second',\n };\n}\n\nexport function adjustDateToFormat(\n date: DateTime,\n formatInfo: FormatInfo,\n method: 'startOf' | 'endOf' = 'startOf',\n) {\n let newDate = date;\n if (formatInfo.hasDate) {\n if (formatInfo.minDateUnit !== 'day') {\n newDate = newDate[method](formatInfo.minDateUnit);\n newDate = mergeDateTime(newDate, date);\n }\n }\n if (formatInfo.hasTime) {\n newDate = mergeDateTime(newDate, date[method](formatInfo.minTimeUnit));\n }\n\n return newDate;\n}\n\nexport function markValidSection(\n allSections: AvailableSections,\n editableSections: AvailableSections,\n unit: DateFieldSectionType,\n) {\n const validSections = {...editableSections};\n validSections[unit] = true;\n if (validSections.day && validSections.month && validSections.year && allSections.weekday) {\n validSections.weekday = true;\n }\n if (validSections.month && allSections.quarter) {\n validSections.quarter = true;\n }\n if (validSections.quarter && allSections.month) {\n validSections.month = true;\n }\n if (validSections.hour && allSections.dayPeriod) {\n validSections.dayPeriod = true;\n }\n\n return validSections;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/DatePicker/
|
|
1
|
+
{"version":3,"sources":["components/DatePicker/DatePicker.scss"],"names":[],"mappings":"AAIA;EACI;EAEA;EAEA;;AAEA;EACI;;AAEA;EACI;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAEA;EACI","sourcesContent":["@use '../variables';\n\n$block: '.#{variables.$ns}date-picker';\n\n#{$block} {\n position: relative;\n\n display: inline-block;\n\n outline: none;\n\n &__field {\n width: 100%;\n\n &_mobile {\n pointer-events: none;\n }\n }\n\n &__popup-anchor {\n position: absolute;\n z-index: -1;\n inset: 0;\n }\n\n &__popup-content {\n outline: none;\n }\n\n &__time-field {\n width: 100%;\n\n &-wrapper {\n padding: 10px;\n }\n }\n}\n"],"file":"DatePicker.css"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/DatePicker/
|
|
1
|
+
{"version":3,"sources":["components/DatePicker/MobileCalendar.scss"],"names":[],"mappings":"AAIA;EACI;EACA;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EACA;;AAEA;EACI;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA","sourcesContent":["@use '../variables';\n\n$block: '.#{variables.$ns}mobile-calendar';\n\n#{$block} {\n position: absolute;\n z-index: 1;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n box-sizing: border-box;\n // width: 100% does not work in mobile Safari\n min-width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n\n cursor: pointer;\n\n opacity: 0;\n border: none;\n\n &::-webkit-calendar-picker-indicator {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n\n min-width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n\n cursor: pointer;\n }\n}\n"],"file":"MobileCalendar.css"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/DatePicker/
|
|
1
|
+
{"version":3,"sources":["components/DatePicker/StubButton.scss"],"names":[],"mappings":"AAIA;EACI;EAEA;EAEA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EAEA;EACA;EACA;EAEA","sourcesContent":["@use '../variables';\n\n$block: '.#{variables.$ns}stub-button';\n\n#{$block} {\n position: relative;\n\n display: inline-block;\n\n width: 24px;\n height: 24px;\n\n &_size_xs {\n width: 20px;\n height: 20px;\n }\n\n &_size_m {\n width: 28px;\n height: 28px;\n }\n\n &_size_l {\n width: 36px;\n height: 36px;\n }\n\n &__icon {\n position: absolute;\n inset: 0;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n color: var(--g-color-text-secondary);\n }\n}\n"],"file":"StubButton.css"}
|