@alfalab/core-components-calendar-input 12.0.5 → 12.0.6

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.
Files changed (36) hide show
  1. package/Component.responsive.d.ts +4 -4
  2. package/components/calendar-input/Component.d.ts +29 -46
  3. package/components/calendar-input/Component.js.map +1 -1
  4. package/components/calendar-input/index.css +10 -10
  5. package/components/calendar-input/index.module.css.js +1 -1
  6. package/components/calendar-input/index.module.css.js.map +1 -1
  7. package/cssm/Component.responsive.d.ts +4 -4
  8. package/cssm/components/calendar-input/Component.d.ts +29 -46
  9. package/cssm/components/calendar-input/Component.js.map +1 -1
  10. package/cssm/desktop/Component.desktop.d.ts +1 -1
  11. package/cssm/mobile/Component.mobile.d.ts +1 -1
  12. package/desktop/Component.desktop.d.ts +1 -1
  13. package/esm/Component.responsive.d.ts +4 -4
  14. package/esm/components/calendar-input/Component.d.ts +29 -46
  15. package/esm/components/calendar-input/Component.js.map +1 -1
  16. package/esm/components/calendar-input/index.css +10 -10
  17. package/esm/components/calendar-input/index.module.css.js +1 -1
  18. package/esm/components/calendar-input/index.module.css.js.map +1 -1
  19. package/esm/desktop/Component.desktop.d.ts +1 -1
  20. package/esm/mobile/Component.mobile.d.ts +1 -1
  21. package/mobile/Component.mobile.d.ts +1 -1
  22. package/modern/Component.responsive.d.ts +4 -4
  23. package/modern/components/calendar-input/Component.d.ts +29 -46
  24. package/modern/components/calendar-input/Component.js.map +1 -1
  25. package/modern/components/calendar-input/index.css +10 -10
  26. package/modern/components/calendar-input/index.module.css.js +1 -1
  27. package/modern/components/calendar-input/index.module.css.js.map +1 -1
  28. package/modern/desktop/Component.desktop.d.ts +1 -1
  29. package/modern/mobile/Component.mobile.d.ts +1 -1
  30. package/moderncssm/Component.responsive.d.ts +4 -4
  31. package/moderncssm/components/calendar-input/Component.d.ts +29 -46
  32. package/moderncssm/components/calendar-input/Component.js.map +1 -1
  33. package/moderncssm/desktop/Component.desktop.d.ts +1 -1
  34. package/moderncssm/mobile/Component.mobile.d.ts +1 -1
  35. package/package.json +6 -6
  36. package/src/components/calendar-input/index.module.css +1 -1
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type CalendarInputProps } from './components/calendar-input/Component';
3
- export declare type CalendarInputResponsiveProps = Omit<CalendarInputProps, 'view'> & {
3
+ export type CalendarInputResponsiveProps = Omit<CalendarInputProps, 'view'> & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
6
6
  * @default 1024
@@ -11,7 +11,7 @@ export declare type CalendarInputResponsiveProps = Omit<CalendarInputProps, 'vie
11
11
  */
12
12
  client?: 'desktop' | 'mobile';
13
13
  };
14
- export declare type CalendarInputMedia = 'desktop' | 'mobile';
14
+ export type CalendarInputMedia = 'desktop' | 'mobile';
15
15
  /**
16
16
  * @deprecated
17
17
  * use UniversalDateInput instead
@@ -21,9 +21,9 @@ export declare const CalendarInputResponsive: React.ForwardRefExoticComponent<Om
21
21
  * Контрольная точка, с нее начинается desktop версия
22
22
  * @default 1024
23
23
  */
24
- breakpoint?: number | undefined;
24
+ breakpoint?: number;
25
25
  /**
26
26
  * Версия, которая будет использоваться при серверном рендеринге
27
27
  */
28
- client?: "mobile" | "desktop" | undefined;
28
+ client?: "desktop" | "mobile";
29
29
  } & React.RefAttributes<HTMLInputElement>>;
@@ -3,7 +3,7 @@ import { type CalendarDesktopProps } from '@alfalab/core-components-calendar/des
3
3
  import { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';
4
4
  import { type DateInputProps } from '@alfalab/core-components-date-input';
5
5
  import { type PopoverProps } from '@alfalab/core-components-popover';
6
- export declare type CalendarInputProps = Omit<DateInputProps, 'onChange' | 'mobileMode'> & {
6
+ export type CalendarInputProps = Omit<DateInputProps, 'onChange' | 'mobileMode'> & {
7
7
  /**
8
8
  * Дополнительный класс
9
9
  */
@@ -120,129 +120,112 @@ export declare const CalendarInput: React.ForwardRefExoticComponent<Omit<DateInp
120
120
  /**
121
121
  * Дополнительный класс
122
122
  */
123
- className?: string | undefined;
123
+ className?: string;
124
124
  /**
125
125
  * Дополнительный класс для инпута
126
126
  */
127
- inputClassName?: string | undefined;
127
+ inputClassName?: string;
128
128
  /**
129
129
  * Дополнительный класс для поповера
130
130
  */
131
- popoverClassName?: string | undefined;
131
+ popoverClassName?: string;
132
132
  /**
133
133
  * Доп. пропсы для календаря
134
134
  */
135
- calendarProps?: (CalendarDesktopProps & Record<string, unknown>) | ({
136
- title?: string | undefined;
137
- open: boolean; /**
138
- * Дополнительный класс для поповера
139
- */
140
- onClose?: (() => void) | undefined;
141
- allowSelectionFromEmptyRange?: boolean | undefined;
142
- hasHeader?: boolean | undefined;
143
- onApply?: (() => void) | undefined;
144
- clickableMonth?: boolean | undefined;
145
- cancelButtonContent?: string | undefined;
146
- selectButtonContent?: string | undefined;
147
- resetButtonContent?: string | undefined;
148
- } & {
149
- onMonthTitleClick?: ((event: React.MouseEvent<HTMLSpanElement, globalThis.MouseEvent>) => void) | undefined;
150
- yearsAmount?: number | undefined;
151
- scrollableContainer?: HTMLElement | undefined;
152
- } & Omit<CalendarDesktopProps, ("className" | "dataTestId" | "defaultView" | "selectorView" | "rangeComplete" | "onMonthChange" | "onYearClick" | "onPeriodClick" | "hasHeader" | "responsive" | "showCurrentYearSelector") | ("headerClassName" | "contentClassName")> & Pick<CalendarDesktopProps, "className" | "dataTestId" | "defaultView" | "selectorView" | "rangeComplete" | "onMonthChange" | "onYearClick" | "onPeriodClick" | "hasHeader" | "responsive" | "showCurrentYearSelector"> & Pick<import("../../../../modal/src/shared").ModalHeaderProps, "hasBackButton" | "onBack"> & Record<string, unknown>) | undefined;
135
+ calendarProps?: (CalendarDesktopProps & Record<string, unknown>) | (CalendarMobileProps & Record<string, unknown>);
153
136
  /**
154
137
  * Значение инпута (используется и для календаря)
155
138
  */
156
- value?: string | undefined;
139
+ value?: string;
157
140
  /**
158
141
  * Начальное значение инпута
159
142
  */
160
- defaultValue?: string | undefined;
143
+ defaultValue?: string;
161
144
  /**
162
145
  * Состояние открытия по умолчанию
163
146
  */
164
- defaultOpen?: boolean | undefined;
147
+ defaultOpen?: boolean;
165
148
  /**
166
149
  * Месяц в календаре по умолчанию (timestamp)
167
150
  */
168
- defaultMonth?: number | undefined;
151
+ defaultMonth?: number;
169
152
  /**
170
153
  * Минимальная дата, доступная для выбора (timestamp)
171
154
  */
172
- minDate?: number | undefined;
155
+ minDate?: number;
173
156
  /**
174
157
  * Максимальная дата, доступная для выбора (timestamp)
175
158
  */
176
- maxDate?: number | undefined;
159
+ maxDate?: number;
177
160
  /**
178
161
  * Список событий
179
162
  */
180
- events?: (number | Date)[] | undefined;
163
+ events?: Array<Date | number>;
181
164
  /**
182
165
  * Список выходных
183
166
  */
184
- offDays?: (number | Date)[] | undefined;
167
+ offDays?: Array<Date | number>;
185
168
  /**
186
169
  * Определяет, как рендерить календарь — в поповере или снизу инпута
187
170
  */
188
- calendarPosition?: "static" | "popover" | undefined;
171
+ calendarPosition?: "static" | "popover";
189
172
  /**
190
173
  * Запрещает поповеру менять свою позицию.
191
174
  * Например, если места снизу недостаточно,то он все равно будет показан снизу
192
175
  */
193
- preventFlip?: boolean | undefined;
176
+ preventFlip?: boolean;
194
177
  /**
195
178
  * Управление нативным режимом на мобильных устройствах
196
179
  */
197
- mobileMode?: "input" | "popover" | "native" | undefined;
180
+ mobileMode?: "native" | "popover" | "input";
198
181
  /**
199
182
  * Компонент календаря
200
183
  */
201
- Calendar?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
184
+ Calendar?: ElementType;
202
185
  /**
203
186
  * Обработчик изменения значения
204
187
  */
205
- onChange?: ((event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement> | null, payload: {
188
+ onChange?: (event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement> | null, payload: {
206
189
  date: Date;
207
190
  value: string;
208
- }) => void) | undefined;
191
+ }) => void;
209
192
  /**
210
193
  * Обработчик ввода в инпут
211
194
  */
212
- onInputChange?: ((event: ChangeEvent<HTMLInputElement>, payload: {
195
+ onInputChange?: (event: ChangeEvent<HTMLInputElement>, payload: {
213
196
  value: string;
214
197
  date: Date;
215
- }) => void) | undefined;
198
+ }) => void;
216
199
  /**
217
200
  * Обработчик изменения календаря
218
201
  */
219
- onCalendarChange?: CalendarDesktopProps['onChange'];
202
+ onCalendarChange?: CalendarDesktopProps["onChange"];
220
203
  /**
221
204
  * Обработчик открытия календаря
222
205
  */
223
- onCalendarOpen?: (() => void) | undefined;
206
+ onCalendarOpen?: () => void;
224
207
  /**
225
208
  * Обработчик закрытия календаря
226
209
  */
227
- onCalendarClose?: (() => void) | undefined;
210
+ onCalendarClose?: () => void;
228
211
  /**
229
212
  * Позиционирование поповера с календарем
230
213
  */
231
- popoverPosition?: PopoverProps['position'];
214
+ popoverPosition?: PopoverProps["position"];
232
215
  /**
233
216
  * z-index Popover
234
217
  */
235
- zIndexPopover?: PopoverProps['zIndex'];
218
+ zIndexPopover?: PopoverProps["zIndex"];
236
219
  /**
237
220
  * Календарь будет принимать ширину инпута
238
221
  */
239
- useAnchorWidth?: boolean | undefined;
222
+ useAnchorWidth?: boolean;
240
223
  /**
241
224
  * Отображение компонента в мобильном или десктопном виде
242
225
  */
243
- view?: "mobile" | "desktop" | undefined;
226
+ view?: "desktop" | "mobile";
244
227
  /**
245
228
  * Запретить ввод с клавиатуры
246
229
  */
247
- disableUserInput?: boolean | undefined;
230
+ disableUserInput?: boolean;
248
231
  } & React.RefAttributes<HTMLInputElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../src/components/calendar-input/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type ElementType,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\n\nimport { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';\nimport { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';\nimport { dateInLimits } from '@alfalab/core-components-calendar/shared';\nimport {\n DateInput,\n type DateInputProps,\n formatDate,\n isCompleteDateInput,\n parseDateString,\n} from '@alfalab/core-components-date-input';\nimport { Popover, type PopoverProps } from '@alfalab/core-components-popover';\nimport { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';\n\nimport { SUPPORTS_INPUT_TYPE_DATE } from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type CalendarInputProps = Omit<DateInputProps, 'onChange' | 'mobileMode'> & {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для инпута\n */\n inputClassName?: string;\n\n /**\n * Дополнительный класс для поповера\n */\n popoverClassName?: string;\n\n /**\n * Доп. пропсы для календаря\n */\n calendarProps?:\n | (CalendarDesktopProps & Record<string, unknown>)\n | (CalendarMobileProps & Record<string, unknown>);\n\n /**\n * Значение инпута (используется и для календаря)\n */\n value?: string;\n\n /**\n * Начальное значение инпута\n */\n defaultValue?: string;\n\n /**\n * Состояние открытия по умолчанию\n */\n defaultOpen?: boolean;\n\n /**\n * Месяц в календаре по умолчанию (timestamp)\n */\n defaultMonth?: number;\n\n /**\n * Минимальная дата, доступная для выбора (timestamp)\n */\n minDate?: number;\n\n /**\n * Максимальная дата, доступная для выбора (timestamp)\n */\n maxDate?: number;\n\n /**\n * Список событий\n */\n events?: Array<Date | number>;\n\n /**\n * Список выходных\n */\n offDays?: Array<Date | number>;\n\n /**\n * Определяет, как рендерить календарь — в поповере или снизу инпута\n */\n calendarPosition?: 'static' | 'popover';\n\n /**\n * Запрещает поповеру менять свою позицию.\n * Например, если места снизу недостаточно,то он все равно будет показан снизу\n */\n preventFlip?: boolean;\n\n /**\n * Управление нативным режимом на мобильных устройствах\n */\n mobileMode?: 'native' | 'popover' | 'input';\n\n /**\n * Компонент календаря\n */\n Calendar?: ElementType;\n\n /**\n * Обработчик изменения значения\n */\n onChange?: (\n event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Обработчик ввода в инпут\n */\n onInputChange?: (\n event: ChangeEvent<HTMLInputElement>,\n payload: { value: string; date: Date },\n ) => void;\n\n /**\n * Обработчик изменения календаря\n */\n onCalendarChange?: CalendarDesktopProps['onChange'];\n\n /**\n * Обработчик открытия календаря\n */\n onCalendarOpen?: () => void;\n\n /**\n * Обработчик закрытия календаря\n */\n onCalendarClose?: () => void;\n\n /**\n * Позиционирование поповера с календарем\n */\n popoverPosition?: PopoverProps['position'];\n\n /**\n * z-index Popover\n */\n zIndexPopover?: PopoverProps['zIndex'];\n\n /**\n * Календарь будет принимать ширину инпута\n */\n useAnchorWidth?: boolean;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Запретить ввод с клавиатуры\n */\n disableUserInput?: boolean;\n};\n\nexport const CalendarInput = forwardRef<HTMLInputElement, CalendarInputProps>(\n (\n {\n block = false,\n className,\n inputClassName,\n popoverClassName,\n defaultOpen = false,\n defaultMonth,\n defaultValue = '',\n calendarPosition = 'popover',\n value,\n dataTestId,\n calendarProps = {},\n minDate = calendarProps.minDate,\n maxDate = calendarProps.maxDate,\n offDays = calendarProps.offDays || [],\n events = calendarProps.events || [],\n preventFlip,\n mobileMode = 'popover',\n wrapperRef = null,\n disabled,\n onChange = () => null,\n onInputChange,\n onCalendarChange,\n onCalendarOpen,\n onCalendarClose,\n onKeyDown,\n readOnly,\n disableUserInput = false,\n Calendar,\n popoverPosition = 'bottom-start',\n zIndexPopover,\n useAnchorWidth,\n rightAddons,\n error,\n view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const calendarResponsive = calendarProps?.responsive ?? true;\n const shouldRenderNative = SUPPORTS_INPUT_TYPE_DATE && mobileMode === 'native';\n const shouldRenderOnlyInput = mobileMode === 'input';\n const shouldRenderStatic = calendarPosition === 'static' && !shouldRenderOnlyInput;\n const shouldRenderPopover =\n calendarPosition === 'popover' && !shouldRenderNative && !shouldRenderOnlyInput;\n\n const [open, setOpen] = useState(false);\n\n const [inputValue, setInputValue] = useState(value || defaultValue);\n\n const calendarValue = inputValue ? parseDateString(inputValue).getTime() : undefined;\n\n const checkInputValueIsValid = (newInputValue?: string) => {\n if (!newInputValue) return false;\n\n const dateValue = parseDateString(newInputValue).getTime();\n\n return !!(\n dateValue &&\n isCompleteDateInput(newInputValue) &&\n dateInLimits(dateValue, minDate, maxDate) &&\n !offDays.includes(dateValue)\n );\n };\n\n const inputDisabled = disabled || readOnly;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const openCalendar = () => {\n setOpen((prev) => {\n if (!prev) onCalendarOpen?.();\n\n return true;\n });\n };\n\n const closeCalendar = () => {\n setOpen((prev) => {\n if (prev) onCalendarClose?.();\n\n return false;\n });\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if ((event.target as HTMLElement).tagName === 'INPUT' && event.key === 'Enter') {\n if (open) {\n closeCalendar();\n } else {\n openCalendar();\n }\n }\n\n if (event.key === 'Escape') {\n closeCalendar();\n }\n };\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!inputWrapperRef.current?.contains(event.target as HTMLElement)) return;\n\n if (!open) openCalendar();\n\n if (view === 'desktop' && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (!inputWrapperRef.current?.contains(event.target)) return;\n\n openCalendar();\n\n if (!open && event.target.tagName !== 'INPUT' && calendarRef.current) {\n calendarRef.current.focus();\n }\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n const target = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (\n inputRef.current !== target &&\n calendarRef.current?.contains(target) === false\n ) {\n closeCalendar();\n }\n }\n };\n\n const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (['ArrowDown', 'ArrowUp'].includes(event.key) && calendarRef.current) {\n event.preventDefault();\n calendarRef.current.focus();\n }\n\n if (onKeyDown) onKeyDown(event);\n };\n\n const changeHandler = (\n event: ChangeEvent<HTMLInputElement> | null,\n newValue: string,\n newDate: Date,\n initiator: 'input' | 'calendar' = 'input',\n shouldChange = true,\n ) => {\n if (initiator === 'input' && event && onInputChange) {\n onInputChange(event, { value: newValue, date: newDate });\n }\n\n if (initiator === 'calendar' && onCalendarChange) {\n onCalendarChange(newDate.getTime());\n }\n\n setInputValue(newValue);\n\n if (shouldChange) {\n onChange(event, { date: newDate, value: newValue });\n }\n };\n\n const handleInputChange: DateInputProps['onChange'] = (event, payload) => {\n changeHandler(\n event,\n payload.value,\n payload.date,\n 'input',\n !payload.value || checkInputValueIsValid(payload.value),\n );\n };\n\n const handleCalendarChange: CalendarDesktopProps['onChange'] = (date?: number) => {\n if (date) {\n changeHandler(null, formatDate(date), new Date(date), 'calendar');\n }\n\n if (view === 'desktop') {\n closeCalendar();\n }\n };\n\n const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n // Не дает инпуту терять фокус при выборе даты\n event.preventDefault();\n };\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useEffect(() => {\n if (typeof value !== 'undefined') {\n setInputValue(value);\n }\n }, [value]);\n\n const renderCalendar = () => (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onMouseDown={handleCalendarWrapperMouseDown}>\n {Calendar ? (\n <Calendar\n {...calendarProps}\n responsive={calendarResponsive}\n open={open}\n onClose={closeCalendar}\n ref={calendarRef}\n defaultMonth={defaultMonth}\n value={checkInputValueIsValid(inputValue) ? calendarValue : undefined}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n ) : null}\n </div>\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n className={cn(styles.component, className, {\n [styles.block]: block,\n })}\n tabIndex={-1}\n onKeyDown={inputDisabled ? undefined : handleKeyDown}\n onClick={inputDisabled ? undefined : handleClick}\n onFocus={inputDisabled ? undefined : handleFocus}\n onBlur={handleBlur}\n data-test-id={dataTestId}\n >\n <DateInput\n autoComplete='off'\n {...restProps}\n ref={mergeRefs([inputRef, ref])}\n wrapperRef={mergeRefs([wrapperRef, inputWrapperRef])}\n value={inputValue}\n defaultValue={defaultValue}\n disabled={disabled}\n inputClassName={inputClassName}\n readOnly={readOnly}\n mobileMode={mobileMode === 'native' ? 'native' : 'input'}\n error={error}\n disableUserInput={disableUserInput}\n rightAddons={\n <React.Fragment>\n {rightAddons}\n {shouldRenderPopover && (\n <CalendarMIcon className={styles.calendarIcon} />\n )}\n </React.Fragment>\n }\n rightAddonsProps={{ onMouseDown: (e) => e.preventDefault() }}\n onKeyDown={handleInputKeyDown}\n onChange={handleInputChange}\n block={true}\n />\n {shouldRenderStatic && renderCalendar()}\n\n {shouldRenderPopover &&\n (view === 'desktop' ? (\n <Popover\n open={open}\n useAnchorWidth={useAnchorWidth}\n anchorElement={inputWrapperRef.current as HTMLElement}\n popperClassName={cn(styles.calendarContainer, {\n [styles.calendarResponsive]: calendarResponsive,\n })}\n className={popoverClassName}\n position={popoverPosition}\n offset={[0, 4]}\n withTransition={false}\n preventFlip={preventFlip}\n zIndex={zIndexPopover}\n >\n {renderCalendar()}\n </Popover>\n ) : (\n renderCalendar()\n ))}\n </div>\n );\n },\n);\n"],"names":["forwardRef","__rest","SUPPORTS_INPUT_TYPE_DATE","useState","parseDateString","isCompleteDateInput","dateInLimits","useRef","formatDate","useEffect","React","__assign","cn","styles","DateInput","mergeRefs","CalendarMIcon","Popover"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../src/components/calendar-input/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type ElementType,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\n\nimport { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';\nimport { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';\nimport { dateInLimits } from '@alfalab/core-components-calendar/shared';\nimport {\n DateInput,\n type DateInputProps,\n formatDate,\n isCompleteDateInput,\n parseDateString,\n} from '@alfalab/core-components-date-input';\nimport { Popover, type PopoverProps } from '@alfalab/core-components-popover';\nimport { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';\n\nimport { SUPPORTS_INPUT_TYPE_DATE } from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type CalendarInputProps = Omit<DateInputProps, 'onChange' | 'mobileMode'> & {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для инпута\n */\n inputClassName?: string;\n\n /**\n * Дополнительный класс для поповера\n */\n popoverClassName?: string;\n\n /**\n * Доп. пропсы для календаря\n */\n calendarProps?:\n | (CalendarDesktopProps & Record<string, unknown>)\n | (CalendarMobileProps & Record<string, unknown>);\n\n /**\n * Значение инпута (используется и для календаря)\n */\n value?: string;\n\n /**\n * Начальное значение инпута\n */\n defaultValue?: string;\n\n /**\n * Состояние открытия по умолчанию\n */\n defaultOpen?: boolean;\n\n /**\n * Месяц в календаре по умолчанию (timestamp)\n */\n defaultMonth?: number;\n\n /**\n * Минимальная дата, доступная для выбора (timestamp)\n */\n minDate?: number;\n\n /**\n * Максимальная дата, доступная для выбора (timestamp)\n */\n maxDate?: number;\n\n /**\n * Список событий\n */\n events?: Array<Date | number>;\n\n /**\n * Список выходных\n */\n offDays?: Array<Date | number>;\n\n /**\n * Определяет, как рендерить календарь — в поповере или снизу инпута\n */\n calendarPosition?: 'static' | 'popover';\n\n /**\n * Запрещает поповеру менять свою позицию.\n * Например, если места снизу недостаточно,то он все равно будет показан снизу\n */\n preventFlip?: boolean;\n\n /**\n * Управление нативным режимом на мобильных устройствах\n */\n mobileMode?: 'native' | 'popover' | 'input';\n\n /**\n * Компонент календаря\n */\n Calendar?: ElementType;\n\n /**\n * Обработчик изменения значения\n */\n onChange?: (\n event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Обработчик ввода в инпут\n */\n onInputChange?: (\n event: ChangeEvent<HTMLInputElement>,\n payload: { value: string; date: Date },\n ) => void;\n\n /**\n * Обработчик изменения календаря\n */\n onCalendarChange?: CalendarDesktopProps['onChange'];\n\n /**\n * Обработчик открытия календаря\n */\n onCalendarOpen?: () => void;\n\n /**\n * Обработчик закрытия календаря\n */\n onCalendarClose?: () => void;\n\n /**\n * Позиционирование поповера с календарем\n */\n popoverPosition?: PopoverProps['position'];\n\n /**\n * z-index Popover\n */\n zIndexPopover?: PopoverProps['zIndex'];\n\n /**\n * Календарь будет принимать ширину инпута\n */\n useAnchorWidth?: boolean;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Запретить ввод с клавиатуры\n */\n disableUserInput?: boolean;\n};\n\nexport const CalendarInput = forwardRef<HTMLInputElement, CalendarInputProps>(\n (\n {\n block = false,\n className,\n inputClassName,\n popoverClassName,\n defaultOpen = false,\n defaultMonth,\n defaultValue = '',\n calendarPosition = 'popover',\n value,\n dataTestId,\n calendarProps = {},\n minDate = calendarProps.minDate,\n maxDate = calendarProps.maxDate,\n offDays = calendarProps.offDays || [],\n events = calendarProps.events || [],\n preventFlip,\n mobileMode = 'popover',\n wrapperRef = null,\n disabled,\n onChange = () => null,\n onInputChange,\n onCalendarChange,\n onCalendarOpen,\n onCalendarClose,\n onKeyDown,\n readOnly,\n disableUserInput = false,\n Calendar,\n popoverPosition = 'bottom-start',\n zIndexPopover,\n useAnchorWidth,\n rightAddons,\n error,\n view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const calendarResponsive = calendarProps?.responsive ?? true;\n const shouldRenderNative = SUPPORTS_INPUT_TYPE_DATE && mobileMode === 'native';\n const shouldRenderOnlyInput = mobileMode === 'input';\n const shouldRenderStatic = calendarPosition === 'static' && !shouldRenderOnlyInput;\n const shouldRenderPopover =\n calendarPosition === 'popover' && !shouldRenderNative && !shouldRenderOnlyInput;\n\n const [open, setOpen] = useState(false);\n\n const [inputValue, setInputValue] = useState(value || defaultValue);\n\n const calendarValue = inputValue ? parseDateString(inputValue).getTime() : undefined;\n\n const checkInputValueIsValid = (newInputValue?: string) => {\n if (!newInputValue) return false;\n\n const dateValue = parseDateString(newInputValue).getTime();\n\n return !!(\n dateValue &&\n isCompleteDateInput(newInputValue) &&\n dateInLimits(dateValue, minDate, maxDate) &&\n !offDays.includes(dateValue)\n );\n };\n\n const inputDisabled = disabled || readOnly;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const openCalendar = () => {\n setOpen((prev) => {\n if (!prev) onCalendarOpen?.();\n\n return true;\n });\n };\n\n const closeCalendar = () => {\n setOpen((prev) => {\n if (prev) onCalendarClose?.();\n\n return false;\n });\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if ((event.target as HTMLElement).tagName === 'INPUT' && event.key === 'Enter') {\n if (open) {\n closeCalendar();\n } else {\n openCalendar();\n }\n }\n\n if (event.key === 'Escape') {\n closeCalendar();\n }\n };\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!inputWrapperRef.current?.contains(event.target as HTMLElement)) return;\n\n if (!open) openCalendar();\n\n if (view === 'desktop' && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (!inputWrapperRef.current?.contains(event.target)) return;\n\n openCalendar();\n\n if (!open && event.target.tagName !== 'INPUT' && calendarRef.current) {\n calendarRef.current.focus();\n }\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n const target = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (\n inputRef.current !== target &&\n calendarRef.current?.contains(target) === false\n ) {\n closeCalendar();\n }\n }\n };\n\n const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (['ArrowDown', 'ArrowUp'].includes(event.key) && calendarRef.current) {\n event.preventDefault();\n calendarRef.current.focus();\n }\n\n if (onKeyDown) onKeyDown(event);\n };\n\n const changeHandler = (\n event: ChangeEvent<HTMLInputElement> | null,\n newValue: string,\n newDate: Date,\n initiator: 'input' | 'calendar' = 'input',\n shouldChange = true,\n ) => {\n if (initiator === 'input' && event && onInputChange) {\n onInputChange(event, { value: newValue, date: newDate });\n }\n\n if (initiator === 'calendar' && onCalendarChange) {\n onCalendarChange(newDate.getTime());\n }\n\n setInputValue(newValue);\n\n if (shouldChange) {\n onChange(event, { date: newDate, value: newValue });\n }\n };\n\n const handleInputChange: DateInputProps['onChange'] = (event, payload) => {\n changeHandler(\n event,\n payload.value,\n payload.date,\n 'input',\n !payload.value || checkInputValueIsValid(payload.value),\n );\n };\n\n const handleCalendarChange: CalendarDesktopProps['onChange'] = (date?: number) => {\n if (date) {\n changeHandler(null, formatDate(date), new Date(date), 'calendar');\n }\n\n if (view === 'desktop') {\n closeCalendar();\n }\n };\n\n const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n // Не дает инпуту терять фокус при выборе даты\n event.preventDefault();\n };\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useEffect(() => {\n if (typeof value !== 'undefined') {\n setInputValue(value);\n }\n }, [value]);\n\n const renderCalendar = () => (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onMouseDown={handleCalendarWrapperMouseDown}>\n {Calendar ? (\n <Calendar\n {...calendarProps}\n responsive={calendarResponsive}\n open={open}\n onClose={closeCalendar}\n ref={calendarRef}\n defaultMonth={defaultMonth}\n value={checkInputValueIsValid(inputValue) ? calendarValue : undefined}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n ) : null}\n </div>\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n className={cn(styles.component, className, {\n [styles.block]: block,\n })}\n tabIndex={-1}\n onKeyDown={inputDisabled ? undefined : handleKeyDown}\n onClick={inputDisabled ? undefined : handleClick}\n onFocus={inputDisabled ? undefined : handleFocus}\n onBlur={handleBlur}\n data-test-id={dataTestId}\n >\n <DateInput\n autoComplete='off'\n {...restProps}\n ref={mergeRefs([inputRef, ref])}\n wrapperRef={mergeRefs([wrapperRef, inputWrapperRef])}\n value={inputValue}\n defaultValue={defaultValue}\n disabled={disabled}\n inputClassName={inputClassName}\n readOnly={readOnly}\n mobileMode={mobileMode === 'native' ? 'native' : 'input'}\n error={error}\n disableUserInput={disableUserInput}\n rightAddons={\n <React.Fragment>\n {rightAddons}\n {shouldRenderPopover && (\n <CalendarMIcon className={styles.calendarIcon} />\n )}\n </React.Fragment>\n }\n rightAddonsProps={{ onMouseDown: (e) => e.preventDefault() }}\n onKeyDown={handleInputKeyDown}\n onChange={handleInputChange}\n block={true}\n />\n {shouldRenderStatic && renderCalendar()}\n\n {shouldRenderPopover &&\n (view === 'desktop' ? (\n <Popover\n open={open}\n useAnchorWidth={useAnchorWidth}\n anchorElement={inputWrapperRef.current as HTMLElement}\n popperClassName={cn(styles.calendarContainer, {\n [styles.calendarResponsive]: calendarResponsive,\n })}\n className={popoverClassName}\n position={popoverPosition}\n offset={[0, 4]}\n withTransition={false}\n preventFlip={preventFlip}\n zIndex={zIndexPopover}\n >\n {renderCalendar()}\n </Popover>\n ) : (\n renderCalendar()\n ))}\n </div>\n );\n },\n);\n"],"names":["forwardRef","__rest","SUPPORTS_INPUT_TYPE_DATE","useState","parseDateString","isCompleteDateInput","dateInLimits","useRef","formatDate","useEffect","React","__assign","cn","styles","DateInput","mergeRefs","CalendarMIcon","Popover"],"mappings":";;;;;;;;;;;;;;;;;;;;;IA4Ka,aAAa,GAAGA,gBAAU,CACnC,UACI,EAoCC,EACD,GAAG,EAAA;;;AApCC,IAAA,IAAA,aAAa,EAAb,KAAK,mBAAG,KAAK,GAAA,EAAA,EACb,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,EAAmB,GAAA,EAAA,CAAA,WAAA,EAAnB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,KAAK,GAAA,EAAA,EACnB,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,oBAAiB,EAAjB,YAAY,mBAAG,EAAE,GAAA,EAAA,EACjB,EAA4B,GAAA,EAAA,CAAA,gBAAA,EAA5B,gBAAgB,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EAC5B,KAAK,WAAA,EACL,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,qBAAkB,EAAlB,aAAa,mBAAG,EAAE,GAAA,EAAA,EAClB,EAA+B,GAAA,EAAA,CAAA,OAAA,EAA/B,OAAO,GAAG,EAAA,KAAA,MAAA,GAAA,aAAa,CAAC,OAAO,GAAA,EAAA,EAC/B,EAA+B,GAAA,EAAA,CAAA,OAAA,EAA/B,OAAO,GAAG,EAAA,KAAA,MAAA,GAAA,aAAa,CAAC,OAAO,KAAA,EAC/B,EAAA,GAAA,EAAA,CAAA,OAAqC,EAArC,OAAO,GAAA,EAAA,KAAA,MAAA,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,GAAA,EAAA,EACrC,EAAmC,GAAA,EAAA,CAAA,MAAA,EAAnC,MAAM,GAAG,EAAA,KAAA,MAAA,GAAA,aAAa,CAAC,MAAM,IAAI,EAAE,GAAA,EAAA,EACnC,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,EAAsB,GAAA,EAAA,CAAA,UAAA,EAAtB,UAAU,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,KAAA,EACtB,EAAA,GAAA,EAAA,CAAA,UAAiB,EAAjB,UAAU,GAAA,EAAA,KAAA,MAAA,GAAG,IAAI,GAAA,EAAA,EACjB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAqB,GAAA,EAAA,CAAA,QAAA,EAArB,QAAQ,GAAG,EAAA,KAAA,MAAA,GAAA,YAAA,EAAM,OAAA,IAAI,CAAA,EAAA,GAAA,EAAA,EACrB,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAwB,GAAA,EAAA,CAAA,gBAAA,EAAxB,gBAAgB,GAAG,EAAA,KAAA,MAAA,GAAA,KAAK,KAAA,EACxB,QAAQ,cAAA,EACR,EAAA,GAAA,EAAA,CAAA,eAAgC,EAAhC,eAAe,GAAA,EAAA,KAAA,MAAA,GAAG,cAAc,GAAA,EAAA,EAChC,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,YAAgB,EAAhB,IAAI,mBAAG,SAAS,GAAA,EAAA,EACb,SAAS,GAAAC,YAAA,CAAA,EAAA,EAnChB,8eAoCC,CADe;AAIhB,IAAA,IAAM,kBAAkB,GAAG,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,MAAA,GAAA,MAAA,GAAA,aAAa,CAAE,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;AAC5D,IAAA,IAAM,kBAAkB,GAAGC,8BAAwB,IAAI,UAAU,KAAK,QAAQ;AAC9E,IAAA,IAAM,qBAAqB,GAAG,UAAU,KAAK,OAAO;IACpD,IAAM,kBAAkB,GAAG,gBAAgB,KAAK,QAAQ,IAAI,CAAC,qBAAqB;IAClF,IAAM,mBAAmB,GACrB,gBAAgB,KAAK,SAAS,IAAI,CAAC,kBAAkB,IAAI,CAAC,qBAAqB;IAE7E,IAAA,EAAA,GAAkBC,cAAQ,CAAC,KAAK,CAAC,EAAhC,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,OAAO,GAAA,EAAA,CAAA,CAAA,CAAmB;AAEjC,IAAA,IAAA,EAA8B,GAAAA,cAAQ,CAAC,KAAK,IAAI,YAAY,CAAC,EAA5D,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,QAAmC;AAEnE,IAAA,IAAM,aAAa,GAAG,UAAU,GAAGC,uCAAe,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS;IAEpF,IAAM,sBAAsB,GAAG,UAAC,aAAsB,EAAA;AAClD,QAAA,IAAI,CAAC,aAAa;AAAE,YAAA,OAAO,KAAK;QAEhC,IAAM,SAAS,GAAGA,uCAAe,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;QAE1D,OAAO,CAAC,EACJ,SAAS;YACTC,2CAAmB,CAAC,aAAa,CAAC;AAClC,YAAAC,mBAAY,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;AACzC,YAAA,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC/B;AACL,KAAC;AAED,IAAA,IAAM,aAAa,GAAG,QAAQ,IAAI,QAAQ;AAE1C,IAAA,IAAM,QAAQ,GAAGC,YAAM,CAAmB,IAAI,CAAC;AAC/C,IAAA,IAAM,eAAe,GAAGA,YAAM,CAAiB,IAAI,CAAC;AACpD,IAAA,IAAM,WAAW,GAAGA,YAAM,CAAiB,IAAI,CAAC;AAEhD,IAAA,IAAM,YAAY,GAAG,YAAA;QACjB,OAAO,CAAC,UAAC,IAAI,EAAA;AACT,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,cAAc,KAAd,IAAA,IAAA,cAAc,KAAd,MAAA,GAAA,MAAA,GAAA,cAAc,EAAI;AAE7B,YAAA,OAAO,IAAI;AACf,SAAC,CAAC;AACN,KAAC;AAED,IAAA,IAAM,aAAa,GAAG,YAAA;QAClB,OAAO,CAAC,UAAC,IAAI,EAAA;AACT,YAAA,IAAI,IAAI;AAAE,gBAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,MAAA,GAAA,MAAA,GAAA,eAAe,EAAI;AAE7B,YAAA,OAAO,KAAK;AAChB,SAAC,CAAC;AACN,KAAC;IAED,IAAM,aAAa,GAAG,UAAC,KAAoC,EAAA;AACvD,QAAA,IAAK,KAAK,CAAC,MAAsB,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC5E,IAAI,IAAI,EAAE;AACN,gBAAA,aAAa,EAAE;;iBACZ;AACH,gBAAA,YAAY,EAAE;;;AAItB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxB,YAAA,aAAa,EAAE;;AAEvB,KAAC;IAED,IAAM,WAAW,GAAG,UAAC,KAAiC,EAAA;;AAClD,QAAA,IAAI,EAAC,CAAA,EAAA,GAAA,eAAe,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAA;YAAE;AAErE,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,YAAY,EAAE;QAEzB,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE;AACxC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;;AAEhC,KAAC;IAED,IAAM,WAAW,GAAG,UAAC,KAAiC,EAAA;;AAClD,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,YAAA,IAAI,EAAC,CAAA,EAAA,GAAA,eAAe,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBAAE;AAEtD,YAAA,YAAY,EAAE;AAEd,YAAA,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE;AAClE,gBAAA,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE;;;AAGvC,KAAC;IAED,IAAM,UAAU,GAAG,UAAC,KAAiC,EAAA;;AACjD,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,IAAM,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAgB;AAE7E,YAAA,IACI,QAAQ,CAAC,OAAO,KAAK,MAAM;AAC3B,gBAAA,CAAA,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,MAAM,CAAC,MAAK,KAAK,EACjD;AACE,gBAAA,aAAa,EAAE;;;AAG3B,KAAC;IAED,IAAM,kBAAkB,GAAG,UAAC,KAAsC,EAAA;AAC9D,QAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE;YACrE,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE;;AAG/B,QAAA,IAAI,SAAS;YAAE,SAAS,CAAC,KAAK,CAAC;AACnC,KAAC;IAED,IAAM,aAAa,GAAG,UAClB,KAA2C,EAC3C,QAAgB,EAChB,OAAa,EACb,SAAyC,EACzC,YAAmB,EAAA;AADnB,QAAA,IAAA,SAAA,KAAA,MAAA,EAAA,EAAA,SAAyC,GAAA,OAAA,CAAA;AACzC,QAAA,IAAA,YAAA,KAAA,MAAA,EAAA,EAAA,YAAmB,GAAA,IAAA,CAAA;QAEnB,IAAI,SAAS,KAAK,OAAO,IAAI,KAAK,IAAI,aAAa,EAAE;AACjD,YAAA,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;AAG5D,QAAA,IAAI,SAAS,KAAK,UAAU,IAAI,gBAAgB,EAAE;AAC9C,YAAA,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;;QAGvC,aAAa,CAAC,QAAQ,CAAC;QAEvB,IAAI,YAAY,EAAE;AACd,YAAA,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;;AAE3D,KAAC;AAED,IAAA,IAAM,iBAAiB,GAA+B,UAAC,KAAK,EAAE,OAAO,EAAA;QACjE,aAAa,CACT,KAAK,EACL,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,EACP,CAAC,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAC1D;AACL,KAAC;IAED,IAAM,oBAAoB,GAAqC,UAAC,IAAa,EAAA;QACzE,IAAI,IAAI,EAAE;AACN,YAAA,aAAa,CAAC,IAAI,EAAEC,kCAAU,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;;AAGrE,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,YAAA,aAAa,EAAE;;AAEvB,KAAC;IAED,IAAM,8BAA8B,GAAG,UAAC,KAAiC,EAAA;;QAErE,KAAK,CAAC,cAAc,EAAE;AAC1B,KAAC;AAED,IAAAC,eAAS,CAAC,YAAA;QACN,OAAO,CAAC,WAAW,CAAC;AACxB,KAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AAEjB,IAAAA,eAAS,CAAC,YAAA;AACN,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAC9B,aAAa,CAAC,KAAK,CAAC;;AAE5B,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAEX,IAAM,cAAc,GAAG,YAAA,EAAM;;AAEzB,IAAAC,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,WAAW,EAAE,8BAA8B,EAC3C,EAAA,QAAQ,IACLA,sBAAA,CAAA,aAAA,CAAC,QAAQ,EACDC,cAAA,CAAA,EAAA,EAAA,aAAa,EACjB,EAAA,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,SAAS,EACrE,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EAAA,CAAA,CAChB,IACF,IAAI,CACN,EACT,EAAA;IAED;;IAEID,sBACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEE,mBAAE,CAACC,YAAM,CAAC,SAAS,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACrC,YAAA,EAAA,CAACA,YAAM,CAAC,KAAK,CAAA,GAAG,KAAK;gBACvB,EACF,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,EACpD,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,WAAW,EAChD,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,WAAW,EAChD,MAAM,EAAE,UAAU,EAAA,cAAA,EACJ,UAAU,EAAA;AAExB,QAAAH,sBAAA,CAAA,aAAA,CAACI,iCAAS,EACNH,cAAA,CAAA,EAAA,YAAY,EAAC,KAAK,IACd,SAAS,EAAA,EACb,GAAG,EAAEI,0BAAS,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAC/B,UAAU,EAAEA,0BAAS,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,EACpD,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO,EACxD,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EACPL,sBAAC,CAAA,aAAA,CAAAA,sBAAK,CAAC,QAAQ,EAAA,IAAA;gBACV,WAAW;AACX,gBAAA,mBAAmB,KAChBA,sBAAA,CAAA,aAAA,CAACM,2BAAa,EAAC,EAAA,SAAS,EAAEH,YAAM,CAAC,YAAY,EAAI,CAAA,CACpD,CACY,EAErB,gBAAgB,EAAE,EAAE,WAAW,EAAE,UAAC,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,cAAc,EAAE,CAAlB,EAAkB,EAAE,EAC5D,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,IAAI,EACb,CAAA,CAAA;QACD,kBAAkB,IAAI,cAAc,EAAE;QAEtC,mBAAmB;AAChB,aAAC,IAAI,KAAK,SAAS,IACfH,sBAAA,CAAA,aAAA,CAACO,6BAAO,EAAA,EACJ,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,eAAe,CAAC,OAAsB,EACrD,eAAe,EAAEL,mBAAE,CAACC,YAAM,CAAC,iBAAiB,GAAA,EAAA,GAAA,EAAA;AACxC,oBAAA,EAAA,CAACA,YAAM,CAAC,kBAAkB,CAAA,GAAG,kBAAkB;AACjD,oBAAA,EAAA,EAAA,EACF,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,cAAc,EAAE,KAAK,EACrB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,EAEpB,EAAA,cAAc,EAAE,CACX,KAEV,cAAc,EAAE,CACnB,CAAC,CACJ;AAEd,CAAC;;;;"}
@@ -18,39 +18,39 @@
18
18
  --calendar-input-icon-color: var(--color-light-neutral-translucent-700);
19
19
  --calendar-input-popover-border-radius: var(--border-radius-16);
20
20
  }
21
- .calendar-input__component_1xpqt {
21
+ .calendar-input__component_6npof {
22
22
  display: inline-block;
23
23
  outline: none;
24
24
  position: relative;
25
25
  }
26
- .calendar-input__block_1xpqt {
26
+ .calendar-input__block_6npof {
27
27
  width: 100%;
28
28
  }
29
- .calendar-input__calendarContainer_1xpqt {
29
+ .calendar-input__calendarContainer_6npof {
30
30
  display: inline-block;
31
31
  box-sizing: border-box;
32
32
  border-radius: var(--calendar-input-popover-border-radius);
33
33
  border: 1px solid var(--color-light-neutral-300);
34
34
  }
35
35
  @media (max-width: 374px) {
36
- .calendar-input__calendarContainer_1xpqt {
36
+ .calendar-input__calendarContainer_6npof {
37
37
  width: 100%;
38
38
  min-width: 288px;
39
39
  }
40
40
  }
41
- .calendar-input__calendarResponsive_1xpqt {
41
+ .calendar-input__calendarResponsive_6npof {
42
42
  width: var(--calendar-width);
43
43
  }
44
- .calendar-input__calendarIcon_1xpqt {
44
+ .calendar-input__calendarIcon_6npof {
45
45
  width: 24px;
46
46
  height: 24px;
47
47
  display: block;
48
48
  color: var(--calendar-input-icon-color);
49
49
  }
50
- .calendar-input__calendarIcon_1xpqt:not(:only-child) {
50
+ .calendar-input__calendarIcon_6npof:not(:only-child) {
51
51
  margin-right: var(--gap-4);
52
52
  }
53
- .calendar-input__nativeInput_1xpqt {
53
+ .calendar-input__nativeInput_6npof {
54
54
  opacity: 0;
55
55
  position: absolute;
56
56
  top: var(--gap-0);
@@ -62,9 +62,9 @@
62
62
  appearance: none;
63
63
  z-index: 1;
64
64
  }
65
- .calendar-input__nativeInput_1xpqt::-webkit-calendar-picker-indicator {
65
+ .calendar-input__nativeInput_6npof::-webkit-calendar-picker-indicator {
66
66
  display: none;
67
67
  }
68
- .calendar-input__nativeInput_1xpqt::-webkit-inner-spin-button {
68
+ .calendar-input__nativeInput_6npof::-webkit-inner-spin-button {
69
69
  display: none;
70
70
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"component":"calendar-input__component_1xpqt","block":"calendar-input__block_1xpqt","calendarContainer":"calendar-input__calendarContainer_1xpqt","calendarResponsive":"calendar-input__calendarResponsive_1xpqt","calendarIcon":"calendar-input__calendarIcon_1xpqt"};
5
+ var styles = {"component":"calendar-input__component_6npof","block":"calendar-input__block_6npof","calendarContainer":"calendar-input__calendarContainer_6npof","calendarResponsive":"calendar-input__calendarResponsive_6npof","calendarIcon":"calendar-input__calendarIcon_6npof"};
6
6
 
7
7
  module.exports = styles;
8
8
  //# sourceMappingURL=index.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.css.js","sources":["../../src/components/calendar-input/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n@import '../../../../calendar/src/vars.css';\n\n:root {\n --calendar-input-icon-color: var(--color-light-neutral-translucent-700);\n --calendar-input-popover-border-radius: var(--border-radius-16);\n}\n\n.component {\n display: inline-block;\n outline: none;\n position: relative;\n}\n\n.block {\n width: 100%;\n}\n\n.calendarContainer {\n display: inline-block;\n box-sizing: border-box;\n border-radius: var(--calendar-input-popover-border-radius);\n border: 1px solid var(--color-light-neutral-300);\n\n @media (max-width: 374px) {\n width: 100%;\n min-width: 288px;\n }\n}\n\n.calendarResponsive {\n width: var(--calendar-width);\n}\n\n.calendarIcon {\n width: 24px;\n height: 24px;\n display: block;\n color: var(--calendar-input-icon-color);\n\n &:not(:only-child) {\n margin-right: var(--gap-4);\n }\n}\n\n.nativeInput {\n opacity: 0;\n position: absolute;\n top: var(--gap-0);\n left: var(--gap-0);\n width: 100%;\n height: 100%;\n appearance: none;\n z-index: 1;\n\n &::-webkit-calendar-picker-indicator {\n display: none;\n }\n &::-webkit-inner-spin-button {\n display: none;\n }\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,OAAO,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,yCAAyC,CAAC,oBAAoB,CAAC,0CAA0C,CAAC,cAAc,CAAC,oCAAsF,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/calendar-input/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n@import '../../../../calendar/src/vars.css';\n\n:root {\n --calendar-input-icon-color: var(--color-light-neutral-translucent-700);\n --calendar-input-popover-border-radius: var(--border-radius-16);\n}\n\n.component {\n display: inline-block;\n outline: none;\n position: relative;\n}\n\n.block {\n width: 100%;\n}\n\n.calendarContainer {\n display: inline-block;\n box-sizing: border-box;\n border-radius: var(--calendar-input-popover-border-radius);\n border: 1px solid var(--color-light-neutral-300);\n\n @media (max-width: 374px) {\n width: 100%;\n min-width: 288px;\n }\n}\n\n.calendarResponsive {\n width: var(--calendar-width);\n}\n\n.calendarIcon {\n width: 24px;\n height: 24px;\n display: block;\n color: var(--calendar-input-icon-color);\n\n &:not(:only-child) {\n margin-right: var(--gap-4);\n }\n}\n\n.nativeInput {\n opacity: 0;\n position: absolute;\n top: var(--gap-0);\n left: var(--gap-0);\n width: 100%;\n height: 100%;\n appearance: none;\n z-index: 1;\n\n &::-webkit-calendar-picker-indicator {\n display: none;\n }\n &::-webkit-inner-spin-button {\n display: none;\n }\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,OAAO,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,yCAAyC,CAAC,oBAAoB,CAAC,0CAA0C,CAAC,cAAc,CAAC,oCAAsF,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type CalendarInputProps } from './components/calendar-input/Component';
3
- export declare type CalendarInputResponsiveProps = Omit<CalendarInputProps, 'view'> & {
3
+ export type CalendarInputResponsiveProps = Omit<CalendarInputProps, 'view'> & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
6
6
  * @default 1024
@@ -11,7 +11,7 @@ export declare type CalendarInputResponsiveProps = Omit<CalendarInputProps, 'vie
11
11
  */
12
12
  client?: 'desktop' | 'mobile';
13
13
  };
14
- export declare type CalendarInputMedia = 'desktop' | 'mobile';
14
+ export type CalendarInputMedia = 'desktop' | 'mobile';
15
15
  /**
16
16
  * @deprecated
17
17
  * use UniversalDateInput instead
@@ -21,9 +21,9 @@ export declare const CalendarInputResponsive: React.ForwardRefExoticComponent<Om
21
21
  * Контрольная точка, с нее начинается desktop версия
22
22
  * @default 1024
23
23
  */
24
- breakpoint?: number | undefined;
24
+ breakpoint?: number;
25
25
  /**
26
26
  * Версия, которая будет использоваться при серверном рендеринге
27
27
  */
28
- client?: "mobile" | "desktop" | undefined;
28
+ client?: "desktop" | "mobile";
29
29
  } & React.RefAttributes<HTMLInputElement>>;
@@ -3,7 +3,7 @@ import { type CalendarDesktopProps } from '@alfalab/core-components-calendar/css
3
3
  import { type CalendarMobileProps } from '@alfalab/core-components-calendar/cssm/mobile';
4
4
  import { type DateInputProps } from '@alfalab/core-components-date-input/cssm';
5
5
  import { type PopoverProps } from '@alfalab/core-components-popover/cssm';
6
- export declare type CalendarInputProps = Omit<DateInputProps, 'onChange' | 'mobileMode'> & {
6
+ export type CalendarInputProps = Omit<DateInputProps, 'onChange' | 'mobileMode'> & {
7
7
  /**
8
8
  * Дополнительный класс
9
9
  */
@@ -120,129 +120,112 @@ export declare const CalendarInput: React.ForwardRefExoticComponent<Omit<DateInp
120
120
  /**
121
121
  * Дополнительный класс
122
122
  */
123
- className?: string | undefined;
123
+ className?: string;
124
124
  /**
125
125
  * Дополнительный класс для инпута
126
126
  */
127
- inputClassName?: string | undefined;
127
+ inputClassName?: string;
128
128
  /**
129
129
  * Дополнительный класс для поповера
130
130
  */
131
- popoverClassName?: string | undefined;
131
+ popoverClassName?: string;
132
132
  /**
133
133
  * Доп. пропсы для календаря
134
134
  */
135
- calendarProps?: (CalendarDesktopProps & Record<string, unknown>) | ({
136
- title?: string | undefined;
137
- open: boolean; /**
138
- * Дополнительный класс для поповера
139
- */
140
- onClose?: (() => void) | undefined;
141
- allowSelectionFromEmptyRange?: boolean | undefined;
142
- hasHeader?: boolean | undefined;
143
- onApply?: (() => void) | undefined;
144
- clickableMonth?: boolean | undefined;
145
- cancelButtonContent?: string | undefined;
146
- selectButtonContent?: string | undefined;
147
- resetButtonContent?: string | undefined;
148
- } & {
149
- onMonthTitleClick?: ((event: React.MouseEvent<HTMLSpanElement, globalThis.MouseEvent>) => void) | undefined;
150
- yearsAmount?: number | undefined;
151
- scrollableContainer?: HTMLElement | undefined;
152
- } & Omit<CalendarDesktopProps, ("className" | "dataTestId" | "defaultView" | "selectorView" | "rangeComplete" | "onMonthChange" | "onYearClick" | "onPeriodClick" | "hasHeader" | "responsive" | "showCurrentYearSelector") | ("headerClassName" | "contentClassName")> & Pick<CalendarDesktopProps, "className" | "dataTestId" | "defaultView" | "selectorView" | "rangeComplete" | "onMonthChange" | "onYearClick" | "onPeriodClick" | "hasHeader" | "responsive" | "showCurrentYearSelector"> & Pick<import("../../../../modal/src/shared").ModalHeaderProps, "hasBackButton" | "onBack"> & Record<string, unknown>) | undefined;
135
+ calendarProps?: (CalendarDesktopProps & Record<string, unknown>) | (CalendarMobileProps & Record<string, unknown>);
153
136
  /**
154
137
  * Значение инпута (используется и для календаря)
155
138
  */
156
- value?: string | undefined;
139
+ value?: string;
157
140
  /**
158
141
  * Начальное значение инпута
159
142
  */
160
- defaultValue?: string | undefined;
143
+ defaultValue?: string;
161
144
  /**
162
145
  * Состояние открытия по умолчанию
163
146
  */
164
- defaultOpen?: boolean | undefined;
147
+ defaultOpen?: boolean;
165
148
  /**
166
149
  * Месяц в календаре по умолчанию (timestamp)
167
150
  */
168
- defaultMonth?: number | undefined;
151
+ defaultMonth?: number;
169
152
  /**
170
153
  * Минимальная дата, доступная для выбора (timestamp)
171
154
  */
172
- minDate?: number | undefined;
155
+ minDate?: number;
173
156
  /**
174
157
  * Максимальная дата, доступная для выбора (timestamp)
175
158
  */
176
- maxDate?: number | undefined;
159
+ maxDate?: number;
177
160
  /**
178
161
  * Список событий
179
162
  */
180
- events?: (number | Date)[] | undefined;
163
+ events?: Array<Date | number>;
181
164
  /**
182
165
  * Список выходных
183
166
  */
184
- offDays?: (number | Date)[] | undefined;
167
+ offDays?: Array<Date | number>;
185
168
  /**
186
169
  * Определяет, как рендерить календарь — в поповере или снизу инпута
187
170
  */
188
- calendarPosition?: "static" | "popover" | undefined;
171
+ calendarPosition?: "static" | "popover";
189
172
  /**
190
173
  * Запрещает поповеру менять свою позицию.
191
174
  * Например, если места снизу недостаточно,то он все равно будет показан снизу
192
175
  */
193
- preventFlip?: boolean | undefined;
176
+ preventFlip?: boolean;
194
177
  /**
195
178
  * Управление нативным режимом на мобильных устройствах
196
179
  */
197
- mobileMode?: "input" | "popover" | "native" | undefined;
180
+ mobileMode?: "native" | "popover" | "input";
198
181
  /**
199
182
  * Компонент календаря
200
183
  */
201
- Calendar?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
184
+ Calendar?: ElementType;
202
185
  /**
203
186
  * Обработчик изменения значения
204
187
  */
205
- onChange?: ((event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement> | null, payload: {
188
+ onChange?: (event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement> | null, payload: {
206
189
  date: Date;
207
190
  value: string;
208
- }) => void) | undefined;
191
+ }) => void;
209
192
  /**
210
193
  * Обработчик ввода в инпут
211
194
  */
212
- onInputChange?: ((event: ChangeEvent<HTMLInputElement>, payload: {
195
+ onInputChange?: (event: ChangeEvent<HTMLInputElement>, payload: {
213
196
  value: string;
214
197
  date: Date;
215
- }) => void) | undefined;
198
+ }) => void;
216
199
  /**
217
200
  * Обработчик изменения календаря
218
201
  */
219
- onCalendarChange?: CalendarDesktopProps['onChange'];
202
+ onCalendarChange?: CalendarDesktopProps["onChange"];
220
203
  /**
221
204
  * Обработчик открытия календаря
222
205
  */
223
- onCalendarOpen?: (() => void) | undefined;
206
+ onCalendarOpen?: () => void;
224
207
  /**
225
208
  * Обработчик закрытия календаря
226
209
  */
227
- onCalendarClose?: (() => void) | undefined;
210
+ onCalendarClose?: () => void;
228
211
  /**
229
212
  * Позиционирование поповера с календарем
230
213
  */
231
- popoverPosition?: PopoverProps['position'];
214
+ popoverPosition?: PopoverProps["position"];
232
215
  /**
233
216
  * z-index Popover
234
217
  */
235
- zIndexPopover?: PopoverProps['zIndex'];
218
+ zIndexPopover?: PopoverProps["zIndex"];
236
219
  /**
237
220
  * Календарь будет принимать ширину инпута
238
221
  */
239
- useAnchorWidth?: boolean | undefined;
222
+ useAnchorWidth?: boolean;
240
223
  /**
241
224
  * Отображение компонента в мобильном или десктопном виде
242
225
  */
243
- view?: "mobile" | "desktop" | undefined;
226
+ view?: "desktop" | "mobile";
244
227
  /**
245
228
  * Запретить ввод с клавиатуры
246
229
  */
247
- disableUserInput?: boolean | undefined;
230
+ disableUserInput?: boolean;
248
231
  } & React.RefAttributes<HTMLInputElement>>;