@alfalab/core-components-date-time-input 6.0.5 → 6.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 (41) hide show
  1. package/Component.responsive.d.ts +4 -4
  2. package/components/date-time-input/Component.d.ts +25 -40
  3. package/components/date-time-input/Component.js.map +1 -1
  4. package/components/date-time-input/index.css +6 -6
  5. package/components/date-time-input/index.module.css.js +1 -1
  6. package/components/date-time-input/index.module.css.js.map +1 -1
  7. package/cssm/Component.responsive.d.ts +4 -4
  8. package/cssm/components/date-time-input/Component.d.ts +25 -40
  9. package/cssm/components/date-time-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/cssm/utils/format.js.map +1 -1
  13. package/desktop/Component.desktop.d.ts +1 -1
  14. package/esm/Component.responsive.d.ts +4 -4
  15. package/esm/components/date-time-input/Component.d.ts +25 -40
  16. package/esm/components/date-time-input/Component.js.map +1 -1
  17. package/esm/components/date-time-input/index.css +6 -6
  18. package/esm/components/date-time-input/index.module.css.js +1 -1
  19. package/esm/components/date-time-input/index.module.css.js.map +1 -1
  20. package/esm/desktop/Component.desktop.d.ts +1 -1
  21. package/esm/mobile/Component.mobile.d.ts +1 -1
  22. package/esm/utils/format.js.map +1 -1
  23. package/mobile/Component.mobile.d.ts +1 -1
  24. package/modern/Component.responsive.d.ts +4 -4
  25. package/modern/components/date-time-input/Component.d.ts +25 -40
  26. package/modern/components/date-time-input/Component.js.map +1 -1
  27. package/modern/components/date-time-input/index.css +6 -6
  28. package/modern/components/date-time-input/index.module.css.js +1 -1
  29. package/modern/components/date-time-input/index.module.css.js.map +1 -1
  30. package/modern/desktop/Component.desktop.d.ts +1 -1
  31. package/modern/mobile/Component.mobile.d.ts +1 -1
  32. package/modern/utils/format.js.map +1 -1
  33. package/moderncssm/Component.responsive.d.ts +4 -4
  34. package/moderncssm/components/date-time-input/Component.d.ts +25 -40
  35. package/moderncssm/components/date-time-input/Component.js.map +1 -1
  36. package/moderncssm/desktop/Component.desktop.d.ts +1 -1
  37. package/moderncssm/mobile/Component.mobile.d.ts +1 -1
  38. package/moderncssm/utils/format.js.map +1 -1
  39. package/package.json +7 -7
  40. package/src/components/date-time-input/index.module.css +1 -1
  41. package/utils/format.js.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type DateTimeInputProps } from './components/date-time-input/Component';
3
- export declare type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {
3
+ export type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
6
6
  * @default 1024
@@ -11,15 +11,15 @@ export declare type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'vie
11
11
  */
12
12
  client?: 'desktop' | 'mobile';
13
13
  };
14
- export declare type DateTimeInputMedia = 'desktop' | 'mobile';
14
+ export type DateTimeInputMedia = 'desktop' | 'mobile';
15
15
  export declare const DateTimeInputResponsive: React.ForwardRefExoticComponent<Omit<DateTimeInputProps, "view" | "InputComponent"> & {
16
16
  /**
17
17
  * Контрольная точка, с нее начинается desktop версия
18
18
  * @default 1024
19
19
  */
20
- breakpoint?: number | undefined;
20
+ breakpoint?: number;
21
21
  /**
22
22
  * Версия, которая будет использоваться при серверном рендеринге
23
23
  */
24
- client?: "mobile" | "desktop" | undefined;
24
+ client?: "desktop" | "mobile";
25
25
  } & 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 InputProps } from '@alfalab/core-components-input';
5
5
  import { type PopoverProps } from '@alfalab/core-components-popover';
6
- export declare type DateTimeInputProps = Omit<InputProps, 'onChange'> & {
6
+ export type DateTimeInputProps = Omit<InputProps, 'onChange'> & {
7
7
  /**
8
8
  * Дополнительный класс
9
9
  */
@@ -104,111 +104,96 @@ export declare const DateTimeInput: React.ForwardRefExoticComponent<Omit<InputPr
104
104
  /**
105
105
  * Дополнительный класс
106
106
  */
107
- className?: string | undefined;
107
+ className?: string;
108
108
  /**
109
109
  * Дополнительный класс для инпута
110
110
  */
111
- inputClassName?: string | undefined;
111
+ inputClassName?: string;
112
112
  /**
113
113
  * Дополнительный класс для поповера
114
114
  */
115
- popoverClassName?: string | undefined;
115
+ popoverClassName?: string;
116
116
  /**
117
117
  * Обработчик изменения значения
118
118
  */
119
- picker?: boolean | undefined;
119
+ picker?: boolean;
120
120
  /**
121
121
  * Обработчик изменения значения
122
122
  */
123
- onChange?: ((event: ChangeEvent<HTMLInputElement> | null, payload: {
123
+ onChange?: (event: ChangeEvent<HTMLInputElement> | null, payload: {
124
124
  date: Date;
125
125
  value: string;
126
- }) => void) | undefined;
126
+ }) => void;
127
127
  /**
128
128
  * Обработчик окончания ввода
129
129
  */
130
- onComplete?: ((event: ChangeEvent<HTMLInputElement> | null, payload: {
130
+ onComplete?: (event: ChangeEvent<HTMLInputElement> | null, payload: {
131
131
  date: Date;
132
132
  value: string;
133
- }) => void) | undefined;
133
+ }) => void;
134
134
  /**
135
135
  * Компонент календаря
136
136
  */
137
- Calendar?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
137
+ Calendar?: ElementType;
138
138
  /**
139
139
  * Доп. пропсы для календаря
140
140
  */
141
- calendarProps?: (CalendarDesktopProps & Record<string, unknown>) | ({
142
- title?: string | undefined;
143
- open: boolean;
144
- onClose?: (() => void) | undefined;
145
- allowSelectionFromEmptyRange?: boolean | undefined;
146
- hasHeader?: boolean | undefined;
147
- onApply?: (() => void) | undefined;
148
- clickableMonth?: boolean | undefined;
149
- cancelButtonContent?: string | undefined;
150
- selectButtonContent?: string | undefined;
151
- resetButtonContent?: string | undefined;
152
- } & {
153
- onMonthTitleClick?: ((event: React.MouseEvent<HTMLSpanElement, globalThis.MouseEvent>) => void) | undefined;
154
- yearsAmount?: number | undefined;
155
- scrollableContainer?: HTMLElement | undefined;
156
- } & 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;
141
+ calendarProps?: (CalendarDesktopProps & Record<string, unknown>) | (CalendarMobileProps & Record<string, unknown>);
157
142
  /**
158
143
  * Месяц в календаре по умолчанию (timestamp)
159
144
  */
160
- defaultMonth?: number | undefined;
145
+ defaultMonth?: number;
161
146
  /**
162
147
  * Минимальная дата, доступная для выбора (timestamp)
163
148
  */
164
- minDate?: number | undefined;
149
+ minDate?: number;
165
150
  /**
166
151
  * Максимальная дата, доступная для выбора (timestamp)
167
152
  */
168
- maxDate?: number | undefined;
153
+ maxDate?: number;
169
154
  /**
170
155
  * Список событий
171
156
  */
172
- events?: (number | Date)[] | undefined;
157
+ events?: Array<Date | number>;
173
158
  /**
174
159
  * Список выходных
175
160
  */
176
- offDays?: (number | Date)[] | undefined;
161
+ offDays?: Array<Date | number>;
177
162
  /**
178
163
  * Состояние открытия по умолчанию
179
164
  */
180
- defaultOpen?: boolean | undefined;
165
+ defaultOpen?: boolean;
181
166
  /**
182
167
  * Позиционирование поповера с календарем
183
168
  */
184
- popoverPosition?: PopoverProps['position'];
169
+ popoverPosition?: PopoverProps["position"];
185
170
  /**
186
171
  * z-index Popover
187
172
  */
188
- zIndexPopover?: PopoverProps['zIndex'];
173
+ zIndexPopover?: PopoverProps["zIndex"];
189
174
  /**
190
175
  * Запрещает поповеру менять свою позицию.
191
176
  * Например, если места снизу недостаточно,то он все равно будет показан снизу
192
177
  */
193
- preventFlip?: boolean | undefined;
178
+ preventFlip?: boolean;
194
179
  /**
195
180
  * Календарь будет принимать ширину инпута
196
181
  */
197
- useAnchorWidth?: boolean | undefined;
182
+ useAnchorWidth?: boolean;
198
183
  /**
199
184
  * Растягивает компонент на ширину контейнера
200
185
  */
201
- block?: boolean | undefined;
186
+ block?: boolean;
202
187
  /**
203
188
  * Отображение компонента в мобильном или десктопном виде
204
189
  */
205
- view?: "mobile" | "desktop" | undefined;
190
+ view?: "desktop" | "mobile";
206
191
  /**
207
192
  * Компонент инпута
208
193
  */
209
- InputComponent?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
194
+ InputComponent?: ElementType;
210
195
  /**
211
196
  * Запретить ввод с клавиатуры
212
197
  */
213
- disableUserInput?: boolean | undefined;
198
+ disableUserInput?: boolean;
214
199
  } & React.RefAttributes<HTMLInputElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../src/components/date-time-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\n\nimport React, {\n type ChangeEvent,\n type ElementType,\n type FocusEvent,\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 { IconButton } from '@alfalab/core-components-icon-button';\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { Popover, type PopoverProps } from '@alfalab/core-components-popover';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\nimport { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';\n\nimport {\n addTimeToDate,\n DATE_WITH_TIME_LENGTH,\n format,\n getDateWithoutTime,\n getFullDateTime,\n isCompleteDateInput,\n isValid,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type DateTimeInputProps = Omit<InputProps, 'onChange'> & {\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 picker?: boolean;\n\n /**\n * Обработчик изменения значения\n */\n onChange?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Компонент календаря\n */\n Calendar?: ElementType;\n\n /**\n * Доп. пропсы для календаря\n */\n calendarProps?:\n | (CalendarDesktopProps & Record<string, unknown>)\n | (CalendarMobileProps & Record<string, unknown>);\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 defaultOpen?: boolean;\n\n /**\n * Позиционирование поповера с календарем\n */\n popoverPosition?: PopoverProps['position'];\n\n /**\n * z-index Popover\n */\n zIndexPopover?: PopoverProps['zIndex'];\n\n /**\n * Запрещает поповеру менять свою позицию.\n * Например, если места снизу недостаточно,то он все равно будет показан снизу\n */\n preventFlip?: boolean;\n\n /**\n * Календарь будет принимать ширину инпута\n */\n useAnchorWidth?: boolean;\n\n /**\n * Растягивает компонент на ширину контейнера\n */\n block?: boolean;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n InputComponent?: ElementType;\n\n /**\n * Запретить ввод с клавиатуры\n */\n disableUserInput?: boolean;\n};\n\nexport const DateTimeInput = React.forwardRef<HTMLInputElement, DateTimeInputProps>(\n (\n {\n className,\n inputClassName,\n popoverClassName,\n disabled,\n readOnly,\n disableUserInput = false,\n picker,\n defaultValue = '',\n value: propValue,\n onChange,\n onComplete,\n rightAddons,\n useAnchorWidth,\n block,\n popoverPosition = 'bottom-start',\n zIndexPopover,\n preventFlip,\n InputComponent,\n Calendar,\n calendarProps = {},\n defaultMonth,\n minDate = calendarProps.minDate,\n maxDate = calendarProps.maxDate,\n offDays = calendarProps.offDays || [],\n events = calendarProps.events || [],\n defaultOpen = false,\n error,\n view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(false);\n\n const calendarValue = value ? getDateWithoutTime(value).getTime() : undefined;\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => (prevValue === propValue ? prevValue : newPropValue));\n }, [propValue]);\n\n const checkInputValueIsValid = (newInputValue?: string) => {\n if (!newInputValue || error) return false;\n\n const dateValue = getDateWithoutTime(newInputValue).getTime();\n\n return (\n dateValue &&\n dateInLimits(dateValue, minDate, maxDate) &&\n !offDays.includes(dateValue)\n );\n };\n\n const setTimeToDate = () => {\n setValue((prevValue) => {\n const dateWithTime = addTimeToDate(prevValue);\n\n if (dateWithTime !== prevValue && dateWithTime.length === DATE_WITH_TIME_LENGTH) {\n onComplete?.(null, {\n date: getFullDateTime(dateWithTime),\n value: dateWithTime,\n });\n }\n\n return dateWithTime;\n });\n };\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\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 (calendarRef.current && calendarRef.current.contains(target) === false) {\n setOpen(false);\n setTimeToDate();\n }\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_WITH_TIME_LENGTH) return;\n\n // Позволяем вводить только цифры, точки, запятую, двоеточие и пробел\n if (/[^\\d., :]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const colon = newValue.match(/:/g);\n const comma = newValue.match(/,/g);\n\n // Не даем вводить больше, чем 2 точки, 1 двоеточие и 1 запятую\n if (\n (dots && dots.length > 2) ||\n (colon && colon.length > 1) ||\n (comma && comma.length > 1)\n ) {\n return;\n }\n\n const formattedValue = format(newValue);\n const date = getFullDateTime(formattedValue);\n\n setValue(formattedValue);\n\n if (onChange) onChange(event, { date, value: formattedValue });\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue);\n\n if (!valid) return;\n\n if (onComplete) {\n onComplete(event, { date, value: formattedValue });\n }\n }\n };\n\n const handleMobileCalendarClose = () => {\n setOpen(false);\n setTimeToDate();\n };\n\n const handleClear = () => {\n setValue('');\n };\n\n const handleCalendarChange = (date?: number) => {\n if (date) {\n const newValue = parseTimestampToDate(date);\n\n setValue(newValue);\n onChange?.(null, { date: getFullDateTime(newValue), value: newValue });\n }\n };\n\n const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n // Не дает инпуту терять фокус при выборе даты\n event.preventDefault();\n };\n\n const handleIconButtonClick = () => {\n if (!open) setOpen(true);\n\n if (view === 'desktop' && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const renderCalendar = () =>\n Calendar ? (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onMouseDown={handleCalendarWrapperMouseDown}>\n <Calendar\n {...calendarProps}\n responsive={calendarResponsive}\n open={open}\n onClose={handleMobileCalendarClose}\n ref={calendarRef}\n defaultMonth={defaultMonth}\n value={checkInputValueIsValid(value) ? calendarValue : undefined}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n\n return (\n <div\n className={cn(styles.component, className, {\n [styles.block]: block,\n })}\n onFocus={inputDisabled ? undefined : handleInputWrapperFocus}\n onBlur={handleBlur}\n >\n {InputComponent ? (\n <InputComponent\n autoComplete={picker ? 'off' : undefined}\n {...restProps}\n block={block}\n ref={mergeRefs([ref, inputRef])}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n className={inputClassName}\n onClear={handleClear}\n disableUserInput={disableUserInput}\n error={error}\n rightAddons={\n <React.Fragment>\n {rightAddons}\n {shouldShowPicker && (\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <IconButton\n className={styles.calendarIcon}\n onClick={inputDisabled ? undefined : handleIconButtonClick}\n icon={CalendarMIcon}\n size={48}\n />\n )}\n </React.Fragment>\n }\n />\n ) : null}\n {picker &&\n (view === 'desktop' ? (\n <Popover\n open={open}\n useAnchorWidth={useAnchorWidth}\n anchorElement={inputRef.current as HTMLElement}\n popperClassName={cn(styles.calendarContainer, {\n [styles.calendarResponsive]: calendarResponsive,\n })}\n className={popoverClassName}\n position={popoverPosition}\n offset={[0, 8]}\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":["React","__rest","useRef","useState","getDateWithoutTime","useEffect","useDidUpdateEffect","dateInLimits","addTimeToDate","DATE_WITH_TIME_LENGTH","getFullDateTime","format","isCompleteDateInput","isValid","parseTimestampToDate","__assign","cn","styles","mergeRefs","IconButton","CalendarMIcon","Popover"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../src/components/date-time-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\n\nimport React, {\n type ChangeEvent,\n type ElementType,\n type FocusEvent,\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 { IconButton } from '@alfalab/core-components-icon-button';\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { Popover, type PopoverProps } from '@alfalab/core-components-popover';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\nimport { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';\n\nimport {\n addTimeToDate,\n DATE_WITH_TIME_LENGTH,\n format,\n getDateWithoutTime,\n getFullDateTime,\n isCompleteDateInput,\n isValid,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type DateTimeInputProps = Omit<InputProps, 'onChange'> & {\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 picker?: boolean;\n\n /**\n * Обработчик изменения значения\n */\n onChange?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Компонент календаря\n */\n Calendar?: ElementType;\n\n /**\n * Доп. пропсы для календаря\n */\n calendarProps?:\n | (CalendarDesktopProps & Record<string, unknown>)\n | (CalendarMobileProps & Record<string, unknown>);\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 defaultOpen?: boolean;\n\n /**\n * Позиционирование поповера с календарем\n */\n popoverPosition?: PopoverProps['position'];\n\n /**\n * z-index Popover\n */\n zIndexPopover?: PopoverProps['zIndex'];\n\n /**\n * Запрещает поповеру менять свою позицию.\n * Например, если места снизу недостаточно,то он все равно будет показан снизу\n */\n preventFlip?: boolean;\n\n /**\n * Календарь будет принимать ширину инпута\n */\n useAnchorWidth?: boolean;\n\n /**\n * Растягивает компонент на ширину контейнера\n */\n block?: boolean;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n InputComponent?: ElementType;\n\n /**\n * Запретить ввод с клавиатуры\n */\n disableUserInput?: boolean;\n};\n\nexport const DateTimeInput = React.forwardRef<HTMLInputElement, DateTimeInputProps>(\n (\n {\n className,\n inputClassName,\n popoverClassName,\n disabled,\n readOnly,\n disableUserInput = false,\n picker,\n defaultValue = '',\n value: propValue,\n onChange,\n onComplete,\n rightAddons,\n useAnchorWidth,\n block,\n popoverPosition = 'bottom-start',\n zIndexPopover,\n preventFlip,\n InputComponent,\n Calendar,\n calendarProps = {},\n defaultMonth,\n minDate = calendarProps.minDate,\n maxDate = calendarProps.maxDate,\n offDays = calendarProps.offDays || [],\n events = calendarProps.events || [],\n defaultOpen = false,\n error,\n view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(false);\n\n const calendarValue = value ? getDateWithoutTime(value).getTime() : undefined;\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => (prevValue === propValue ? prevValue : newPropValue));\n }, [propValue]);\n\n const checkInputValueIsValid = (newInputValue?: string) => {\n if (!newInputValue || error) return false;\n\n const dateValue = getDateWithoutTime(newInputValue).getTime();\n\n return (\n dateValue &&\n dateInLimits(dateValue, minDate, maxDate) &&\n !offDays.includes(dateValue)\n );\n };\n\n const setTimeToDate = () => {\n setValue((prevValue) => {\n const dateWithTime = addTimeToDate(prevValue);\n\n if (dateWithTime !== prevValue && dateWithTime.length === DATE_WITH_TIME_LENGTH) {\n onComplete?.(null, {\n date: getFullDateTime(dateWithTime),\n value: dateWithTime,\n });\n }\n\n return dateWithTime;\n });\n };\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\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 (calendarRef.current && calendarRef.current.contains(target) === false) {\n setOpen(false);\n setTimeToDate();\n }\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_WITH_TIME_LENGTH) return;\n\n // Позволяем вводить только цифры, точки, запятую, двоеточие и пробел\n if (/[^\\d., :]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const colon = newValue.match(/:/g);\n const comma = newValue.match(/,/g);\n\n // Не даем вводить больше, чем 2 точки, 1 двоеточие и 1 запятую\n if (\n (dots && dots.length > 2) ||\n (colon && colon.length > 1) ||\n (comma && comma.length > 1)\n ) {\n return;\n }\n\n const formattedValue = format(newValue);\n const date = getFullDateTime(formattedValue);\n\n setValue(formattedValue);\n\n if (onChange) onChange(event, { date, value: formattedValue });\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue);\n\n if (!valid) return;\n\n if (onComplete) {\n onComplete(event, { date, value: formattedValue });\n }\n }\n };\n\n const handleMobileCalendarClose = () => {\n setOpen(false);\n setTimeToDate();\n };\n\n const handleClear = () => {\n setValue('');\n };\n\n const handleCalendarChange = (date?: number) => {\n if (date) {\n const newValue = parseTimestampToDate(date);\n\n setValue(newValue);\n onChange?.(null, { date: getFullDateTime(newValue), value: newValue });\n }\n };\n\n const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n // Не дает инпуту терять фокус при выборе даты\n event.preventDefault();\n };\n\n const handleIconButtonClick = () => {\n if (!open) setOpen(true);\n\n if (view === 'desktop' && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const renderCalendar = () =>\n Calendar ? (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onMouseDown={handleCalendarWrapperMouseDown}>\n <Calendar\n {...calendarProps}\n responsive={calendarResponsive}\n open={open}\n onClose={handleMobileCalendarClose}\n ref={calendarRef}\n defaultMonth={defaultMonth}\n value={checkInputValueIsValid(value) ? calendarValue : undefined}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n\n return (\n <div\n className={cn(styles.component, className, {\n [styles.block]: block,\n })}\n onFocus={inputDisabled ? undefined : handleInputWrapperFocus}\n onBlur={handleBlur}\n >\n {InputComponent ? (\n <InputComponent\n autoComplete={picker ? 'off' : undefined}\n {...restProps}\n block={block}\n ref={mergeRefs([ref, inputRef])}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n className={inputClassName}\n onClear={handleClear}\n disableUserInput={disableUserInput}\n error={error}\n rightAddons={\n <React.Fragment>\n {rightAddons}\n {shouldShowPicker && (\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <IconButton\n className={styles.calendarIcon}\n onClick={inputDisabled ? undefined : handleIconButtonClick}\n icon={CalendarMIcon}\n size={48}\n />\n )}\n </React.Fragment>\n }\n />\n ) : null}\n {picker &&\n (view === 'desktop' ? (\n <Popover\n open={open}\n useAnchorWidth={useAnchorWidth}\n anchorElement={inputRef.current as HTMLElement}\n popperClassName={cn(styles.calendarContainer, {\n [styles.calendarResponsive]: calendarResponsive,\n })}\n className={popoverClassName}\n position={popoverPosition}\n offset={[0, 8]}\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":["React","__rest","useRef","useState","getDateWithoutTime","useEffect","useDidUpdateEffect","dateInLimits","addTimeToDate","DATE_WITH_TIME_LENGTH","getFullDateTime","format","isCompleteDateInput","isValid","parseTimestampToDate","__assign","cn","styles","mergeRefs","IconButton","CalendarMIcon","Popover"],"mappings":"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"}
@@ -15,30 +15,30 @@
15
15
  :root {
16
16
  --calendar-popover-border-radius: var(--border-radius-8);
17
17
  }
18
- .date-time-input__component_5irkc {
18
+ .date-time-input__component_3b2q2 {
19
19
  display: inline-block;
20
20
  outline: none;
21
21
  position: relative;
22
22
  }
23
- .date-time-input__calendarContainer_5irkc {
23
+ .date-time-input__calendarContainer_3b2q2 {
24
24
  display: inline-block;
25
25
  box-sizing: border-box;
26
26
  border-radius: var(--calendar-popover-border-radius);
27
27
  border: 1px solid var(--color-light-neutral-300);
28
28
  }
29
29
  @media (max-width: 374px) {
30
- .date-time-input__calendarContainer_5irkc {
30
+ .date-time-input__calendarContainer_3b2q2 {
31
31
  width: 100%;
32
32
  min-width: 288px;
33
33
  }
34
34
  }
35
- .date-time-input__calendarResponsive_5irkc {
35
+ .date-time-input__calendarResponsive_3b2q2 {
36
36
  width: var(--calendar-width);
37
37
  }
38
- .date-time-input__block_5irkc {
38
+ .date-time-input__block_3b2q2 {
39
39
  width: 100%;
40
40
  }
41
- .date-time-input__calendarIcon_5irkc {
41
+ .date-time-input__calendarIcon_3b2q2 {
42
42
  margin-right: var(--gap-12-neg);
43
43
  height: 100%;
44
44
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"component":"date-time-input__component_5irkc","calendarContainer":"date-time-input__calendarContainer_5irkc","calendarResponsive":"date-time-input__calendarResponsive_5irkc","block":"date-time-input__block_5irkc","calendarIcon":"date-time-input__calendarIcon_5irkc"};
5
+ var styles = {"component":"date-time-input__component_3b2q2","calendarContainer":"date-time-input__calendarContainer_3b2q2","calendarResponsive":"date-time-input__calendarResponsive_3b2q2","block":"date-time-input__block_3b2q2","calendarIcon":"date-time-input__calendarIcon_3b2q2"};
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/date-time-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-popover-border-radius: var(--border-radius-8);\n}\n\n.component {\n display: inline-block;\n outline: none;\n position: relative;\n}\n\n.calendarContainer {\n display: inline-block;\n box-sizing: border-box;\n border-radius: var(--calendar-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.block {\n width: 100%;\n}\n\n.calendarIcon {\n margin-right: var(--gap-12-neg);\n height: 100%;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,kCAAkC,CAAC,mBAAmB,CAAC,0CAA0C,CAAC,oBAAoB,CAAC,2CAA2C,CAAC,OAAO,CAAC,8BAA8B,CAAC,cAAc,CAAC,qCAAqC,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/date-time-input/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n@import '../../../../calendar/src/vars.css';\n\n:root {\n --calendar-popover-border-radius: var(--border-radius-8);\n}\n\n.component {\n display: inline-block;\n outline: none;\n position: relative;\n}\n\n.calendarContainer {\n display: inline-block;\n box-sizing: border-box;\n border-radius: var(--calendar-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.block {\n width: 100%;\n}\n\n.calendarIcon {\n margin-right: var(--gap-12-neg);\n height: 100%;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,kCAAkC,CAAC,mBAAmB,CAAC,0CAA0C,CAAC,oBAAoB,CAAC,2CAA2C,CAAC,OAAO,CAAC,8BAA8B,CAAC,cAAc,CAAC,qCAAqC,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type DateTimeInputProps } from './components/date-time-input/Component';
3
- export declare type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {
3
+ export type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
6
6
  * @default 1024
@@ -11,15 +11,15 @@ export declare type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'vie
11
11
  */
12
12
  client?: 'desktop' | 'mobile';
13
13
  };
14
- export declare type DateTimeInputMedia = 'desktop' | 'mobile';
14
+ export type DateTimeInputMedia = 'desktop' | 'mobile';
15
15
  export declare const DateTimeInputResponsive: React.ForwardRefExoticComponent<Omit<DateTimeInputProps, "view" | "InputComponent"> & {
16
16
  /**
17
17
  * Контрольная точка, с нее начинается desktop версия
18
18
  * @default 1024
19
19
  */
20
- breakpoint?: number | undefined;
20
+ breakpoint?: number;
21
21
  /**
22
22
  * Версия, которая будет использоваться при серверном рендеринге
23
23
  */
24
- client?: "mobile" | "desktop" | undefined;
24
+ client?: "desktop" | "mobile";
25
25
  } & 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 InputProps } from '@alfalab/core-components-input/cssm';
5
5
  import { type PopoverProps } from '@alfalab/core-components-popover/cssm';
6
- export declare type DateTimeInputProps = Omit<InputProps, 'onChange'> & {
6
+ export type DateTimeInputProps = Omit<InputProps, 'onChange'> & {
7
7
  /**
8
8
  * Дополнительный класс
9
9
  */
@@ -104,111 +104,96 @@ export declare const DateTimeInput: React.ForwardRefExoticComponent<Omit<InputPr
104
104
  /**
105
105
  * Дополнительный класс
106
106
  */
107
- className?: string | undefined;
107
+ className?: string;
108
108
  /**
109
109
  * Дополнительный класс для инпута
110
110
  */
111
- inputClassName?: string | undefined;
111
+ inputClassName?: string;
112
112
  /**
113
113
  * Дополнительный класс для поповера
114
114
  */
115
- popoverClassName?: string | undefined;
115
+ popoverClassName?: string;
116
116
  /**
117
117
  * Обработчик изменения значения
118
118
  */
119
- picker?: boolean | undefined;
119
+ picker?: boolean;
120
120
  /**
121
121
  * Обработчик изменения значения
122
122
  */
123
- onChange?: ((event: ChangeEvent<HTMLInputElement> | null, payload: {
123
+ onChange?: (event: ChangeEvent<HTMLInputElement> | null, payload: {
124
124
  date: Date;
125
125
  value: string;
126
- }) => void) | undefined;
126
+ }) => void;
127
127
  /**
128
128
  * Обработчик окончания ввода
129
129
  */
130
- onComplete?: ((event: ChangeEvent<HTMLInputElement> | null, payload: {
130
+ onComplete?: (event: ChangeEvent<HTMLInputElement> | null, payload: {
131
131
  date: Date;
132
132
  value: string;
133
- }) => void) | undefined;
133
+ }) => void;
134
134
  /**
135
135
  * Компонент календаря
136
136
  */
137
- Calendar?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
137
+ Calendar?: ElementType;
138
138
  /**
139
139
  * Доп. пропсы для календаря
140
140
  */
141
- calendarProps?: (CalendarDesktopProps & Record<string, unknown>) | ({
142
- title?: string | undefined;
143
- open: boolean;
144
- onClose?: (() => void) | undefined;
145
- allowSelectionFromEmptyRange?: boolean | undefined;
146
- hasHeader?: boolean | undefined;
147
- onApply?: (() => void) | undefined;
148
- clickableMonth?: boolean | undefined;
149
- cancelButtonContent?: string | undefined;
150
- selectButtonContent?: string | undefined;
151
- resetButtonContent?: string | undefined;
152
- } & {
153
- onMonthTitleClick?: ((event: React.MouseEvent<HTMLSpanElement, globalThis.MouseEvent>) => void) | undefined;
154
- yearsAmount?: number | undefined;
155
- scrollableContainer?: HTMLElement | undefined;
156
- } & 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;
141
+ calendarProps?: (CalendarDesktopProps & Record<string, unknown>) | (CalendarMobileProps & Record<string, unknown>);
157
142
  /**
158
143
  * Месяц в календаре по умолчанию (timestamp)
159
144
  */
160
- defaultMonth?: number | undefined;
145
+ defaultMonth?: number;
161
146
  /**
162
147
  * Минимальная дата, доступная для выбора (timestamp)
163
148
  */
164
- minDate?: number | undefined;
149
+ minDate?: number;
165
150
  /**
166
151
  * Максимальная дата, доступная для выбора (timestamp)
167
152
  */
168
- maxDate?: number | undefined;
153
+ maxDate?: number;
169
154
  /**
170
155
  * Список событий
171
156
  */
172
- events?: (number | Date)[] | undefined;
157
+ events?: Array<Date | number>;
173
158
  /**
174
159
  * Список выходных
175
160
  */
176
- offDays?: (number | Date)[] | undefined;
161
+ offDays?: Array<Date | number>;
177
162
  /**
178
163
  * Состояние открытия по умолчанию
179
164
  */
180
- defaultOpen?: boolean | undefined;
165
+ defaultOpen?: boolean;
181
166
  /**
182
167
  * Позиционирование поповера с календарем
183
168
  */
184
- popoverPosition?: PopoverProps['position'];
169
+ popoverPosition?: PopoverProps["position"];
185
170
  /**
186
171
  * z-index Popover
187
172
  */
188
- zIndexPopover?: PopoverProps['zIndex'];
173
+ zIndexPopover?: PopoverProps["zIndex"];
189
174
  /**
190
175
  * Запрещает поповеру менять свою позицию.
191
176
  * Например, если места снизу недостаточно,то он все равно будет показан снизу
192
177
  */
193
- preventFlip?: boolean | undefined;
178
+ preventFlip?: boolean;
194
179
  /**
195
180
  * Календарь будет принимать ширину инпута
196
181
  */
197
- useAnchorWidth?: boolean | undefined;
182
+ useAnchorWidth?: boolean;
198
183
  /**
199
184
  * Растягивает компонент на ширину контейнера
200
185
  */
201
- block?: boolean | undefined;
186
+ block?: boolean;
202
187
  /**
203
188
  * Отображение компонента в мобильном или десктопном виде
204
189
  */
205
- view?: "mobile" | "desktop" | undefined;
190
+ view?: "desktop" | "mobile";
206
191
  /**
207
192
  * Компонент инпута
208
193
  */
209
- InputComponent?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
194
+ InputComponent?: ElementType;
210
195
  /**
211
196
  * Запретить ввод с клавиатуры
212
197
  */
213
- disableUserInput?: boolean | undefined;
198
+ disableUserInput?: boolean;
214
199
  } & React.RefAttributes<HTMLInputElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../../src/components/date-time-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\n\nimport React, {\n type ChangeEvent,\n type ElementType,\n type FocusEvent,\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 { IconButton } from '@alfalab/core-components-icon-button';\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { Popover, type PopoverProps } from '@alfalab/core-components-popover';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\nimport { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';\n\nimport {\n addTimeToDate,\n DATE_WITH_TIME_LENGTH,\n format,\n getDateWithoutTime,\n getFullDateTime,\n isCompleteDateInput,\n isValid,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type DateTimeInputProps = Omit<InputProps, 'onChange'> & {\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 picker?: boolean;\n\n /**\n * Обработчик изменения значения\n */\n onChange?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Компонент календаря\n */\n Calendar?: ElementType;\n\n /**\n * Доп. пропсы для календаря\n */\n calendarProps?:\n | (CalendarDesktopProps & Record<string, unknown>)\n | (CalendarMobileProps & Record<string, unknown>);\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 defaultOpen?: boolean;\n\n /**\n * Позиционирование поповера с календарем\n */\n popoverPosition?: PopoverProps['position'];\n\n /**\n * z-index Popover\n */\n zIndexPopover?: PopoverProps['zIndex'];\n\n /**\n * Запрещает поповеру менять свою позицию.\n * Например, если места снизу недостаточно,то он все равно будет показан снизу\n */\n preventFlip?: boolean;\n\n /**\n * Календарь будет принимать ширину инпута\n */\n useAnchorWidth?: boolean;\n\n /**\n * Растягивает компонент на ширину контейнера\n */\n block?: boolean;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n InputComponent?: ElementType;\n\n /**\n * Запретить ввод с клавиатуры\n */\n disableUserInput?: boolean;\n};\n\nexport const DateTimeInput = React.forwardRef<HTMLInputElement, DateTimeInputProps>(\n (\n {\n className,\n inputClassName,\n popoverClassName,\n disabled,\n readOnly,\n disableUserInput = false,\n picker,\n defaultValue = '',\n value: propValue,\n onChange,\n onComplete,\n rightAddons,\n useAnchorWidth,\n block,\n popoverPosition = 'bottom-start',\n zIndexPopover,\n preventFlip,\n InputComponent,\n Calendar,\n calendarProps = {},\n defaultMonth,\n minDate = calendarProps.minDate,\n maxDate = calendarProps.maxDate,\n offDays = calendarProps.offDays || [],\n events = calendarProps.events || [],\n defaultOpen = false,\n error,\n view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(false);\n\n const calendarValue = value ? getDateWithoutTime(value).getTime() : undefined;\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => (prevValue === propValue ? prevValue : newPropValue));\n }, [propValue]);\n\n const checkInputValueIsValid = (newInputValue?: string) => {\n if (!newInputValue || error) return false;\n\n const dateValue = getDateWithoutTime(newInputValue).getTime();\n\n return (\n dateValue &&\n dateInLimits(dateValue, minDate, maxDate) &&\n !offDays.includes(dateValue)\n );\n };\n\n const setTimeToDate = () => {\n setValue((prevValue) => {\n const dateWithTime = addTimeToDate(prevValue);\n\n if (dateWithTime !== prevValue && dateWithTime.length === DATE_WITH_TIME_LENGTH) {\n onComplete?.(null, {\n date: getFullDateTime(dateWithTime),\n value: dateWithTime,\n });\n }\n\n return dateWithTime;\n });\n };\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\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 (calendarRef.current && calendarRef.current.contains(target) === false) {\n setOpen(false);\n setTimeToDate();\n }\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_WITH_TIME_LENGTH) return;\n\n // Позволяем вводить только цифры, точки, запятую, двоеточие и пробел\n if (/[^\\d., :]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const colon = newValue.match(/:/g);\n const comma = newValue.match(/,/g);\n\n // Не даем вводить больше, чем 2 точки, 1 двоеточие и 1 запятую\n if (\n (dots && dots.length > 2) ||\n (colon && colon.length > 1) ||\n (comma && comma.length > 1)\n ) {\n return;\n }\n\n const formattedValue = format(newValue);\n const date = getFullDateTime(formattedValue);\n\n setValue(formattedValue);\n\n if (onChange) onChange(event, { date, value: formattedValue });\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue);\n\n if (!valid) return;\n\n if (onComplete) {\n onComplete(event, { date, value: formattedValue });\n }\n }\n };\n\n const handleMobileCalendarClose = () => {\n setOpen(false);\n setTimeToDate();\n };\n\n const handleClear = () => {\n setValue('');\n };\n\n const handleCalendarChange = (date?: number) => {\n if (date) {\n const newValue = parseTimestampToDate(date);\n\n setValue(newValue);\n onChange?.(null, { date: getFullDateTime(newValue), value: newValue });\n }\n };\n\n const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n // Не дает инпуту терять фокус при выборе даты\n event.preventDefault();\n };\n\n const handleIconButtonClick = () => {\n if (!open) setOpen(true);\n\n if (view === 'desktop' && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const renderCalendar = () =>\n Calendar ? (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onMouseDown={handleCalendarWrapperMouseDown}>\n <Calendar\n {...calendarProps}\n responsive={calendarResponsive}\n open={open}\n onClose={handleMobileCalendarClose}\n ref={calendarRef}\n defaultMonth={defaultMonth}\n value={checkInputValueIsValid(value) ? calendarValue : undefined}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n\n return (\n <div\n className={cn(styles.component, className, {\n [styles.block]: block,\n })}\n onFocus={inputDisabled ? undefined : handleInputWrapperFocus}\n onBlur={handleBlur}\n >\n {InputComponent ? (\n <InputComponent\n autoComplete={picker ? 'off' : undefined}\n {...restProps}\n block={block}\n ref={mergeRefs([ref, inputRef])}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n className={inputClassName}\n onClear={handleClear}\n disableUserInput={disableUserInput}\n error={error}\n rightAddons={\n <React.Fragment>\n {rightAddons}\n {shouldShowPicker && (\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <IconButton\n className={styles.calendarIcon}\n onClick={inputDisabled ? undefined : handleIconButtonClick}\n icon={CalendarMIcon}\n size={48}\n />\n )}\n </React.Fragment>\n }\n />\n ) : null}\n {picker &&\n (view === 'desktop' ? (\n <Popover\n open={open}\n useAnchorWidth={useAnchorWidth}\n anchorElement={inputRef.current as HTMLElement}\n popperClassName={cn(styles.calendarContainer, {\n [styles.calendarResponsive]: calendarResponsive,\n })}\n className={popoverClassName}\n position={popoverPosition}\n offset={[0, 8]}\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":["React","__rest","useRef","useState","getDateWithoutTime","useEffect","useDidUpdateEffect","dateInLimits","addTimeToDate","DATE_WITH_TIME_LENGTH","getFullDateTime","format","isCompleteDateInput","isValid","parseTimestampToDate","__assign","cn","styles","mergeRefs","IconButton","CalendarMIcon","Popover"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../../src/components/date-time-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\n\nimport React, {\n type ChangeEvent,\n type ElementType,\n type FocusEvent,\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 { IconButton } from '@alfalab/core-components-icon-button';\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { Popover, type PopoverProps } from '@alfalab/core-components-popover';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\nimport { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';\n\nimport {\n addTimeToDate,\n DATE_WITH_TIME_LENGTH,\n format,\n getDateWithoutTime,\n getFullDateTime,\n isCompleteDateInput,\n isValid,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type DateTimeInputProps = Omit<InputProps, 'onChange'> & {\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 picker?: boolean;\n\n /**\n * Обработчик изменения значения\n */\n onChange?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Компонент календаря\n */\n Calendar?: ElementType;\n\n /**\n * Доп. пропсы для календаря\n */\n calendarProps?:\n | (CalendarDesktopProps & Record<string, unknown>)\n | (CalendarMobileProps & Record<string, unknown>);\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 defaultOpen?: boolean;\n\n /**\n * Позиционирование поповера с календарем\n */\n popoverPosition?: PopoverProps['position'];\n\n /**\n * z-index Popover\n */\n zIndexPopover?: PopoverProps['zIndex'];\n\n /**\n * Запрещает поповеру менять свою позицию.\n * Например, если места снизу недостаточно,то он все равно будет показан снизу\n */\n preventFlip?: boolean;\n\n /**\n * Календарь будет принимать ширину инпута\n */\n useAnchorWidth?: boolean;\n\n /**\n * Растягивает компонент на ширину контейнера\n */\n block?: boolean;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n InputComponent?: ElementType;\n\n /**\n * Запретить ввод с клавиатуры\n */\n disableUserInput?: boolean;\n};\n\nexport const DateTimeInput = React.forwardRef<HTMLInputElement, DateTimeInputProps>(\n (\n {\n className,\n inputClassName,\n popoverClassName,\n disabled,\n readOnly,\n disableUserInput = false,\n picker,\n defaultValue = '',\n value: propValue,\n onChange,\n onComplete,\n rightAddons,\n useAnchorWidth,\n block,\n popoverPosition = 'bottom-start',\n zIndexPopover,\n preventFlip,\n InputComponent,\n Calendar,\n calendarProps = {},\n defaultMonth,\n minDate = calendarProps.minDate,\n maxDate = calendarProps.maxDate,\n offDays = calendarProps.offDays || [],\n events = calendarProps.events || [],\n defaultOpen = false,\n error,\n view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(false);\n\n const calendarValue = value ? getDateWithoutTime(value).getTime() : undefined;\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => (prevValue === propValue ? prevValue : newPropValue));\n }, [propValue]);\n\n const checkInputValueIsValid = (newInputValue?: string) => {\n if (!newInputValue || error) return false;\n\n const dateValue = getDateWithoutTime(newInputValue).getTime();\n\n return (\n dateValue &&\n dateInLimits(dateValue, minDate, maxDate) &&\n !offDays.includes(dateValue)\n );\n };\n\n const setTimeToDate = () => {\n setValue((prevValue) => {\n const dateWithTime = addTimeToDate(prevValue);\n\n if (dateWithTime !== prevValue && dateWithTime.length === DATE_WITH_TIME_LENGTH) {\n onComplete?.(null, {\n date: getFullDateTime(dateWithTime),\n value: dateWithTime,\n });\n }\n\n return dateWithTime;\n });\n };\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\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 (calendarRef.current && calendarRef.current.contains(target) === false) {\n setOpen(false);\n setTimeToDate();\n }\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_WITH_TIME_LENGTH) return;\n\n // Позволяем вводить только цифры, точки, запятую, двоеточие и пробел\n if (/[^\\d., :]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const colon = newValue.match(/:/g);\n const comma = newValue.match(/,/g);\n\n // Не даем вводить больше, чем 2 точки, 1 двоеточие и 1 запятую\n if (\n (dots && dots.length > 2) ||\n (colon && colon.length > 1) ||\n (comma && comma.length > 1)\n ) {\n return;\n }\n\n const formattedValue = format(newValue);\n const date = getFullDateTime(formattedValue);\n\n setValue(formattedValue);\n\n if (onChange) onChange(event, { date, value: formattedValue });\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue);\n\n if (!valid) return;\n\n if (onComplete) {\n onComplete(event, { date, value: formattedValue });\n }\n }\n };\n\n const handleMobileCalendarClose = () => {\n setOpen(false);\n setTimeToDate();\n };\n\n const handleClear = () => {\n setValue('');\n };\n\n const handleCalendarChange = (date?: number) => {\n if (date) {\n const newValue = parseTimestampToDate(date);\n\n setValue(newValue);\n onChange?.(null, { date: getFullDateTime(newValue), value: newValue });\n }\n };\n\n const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n // Не дает инпуту терять фокус при выборе даты\n event.preventDefault();\n };\n\n const handleIconButtonClick = () => {\n if (!open) setOpen(true);\n\n if (view === 'desktop' && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const renderCalendar = () =>\n Calendar ? (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onMouseDown={handleCalendarWrapperMouseDown}>\n <Calendar\n {...calendarProps}\n responsive={calendarResponsive}\n open={open}\n onClose={handleMobileCalendarClose}\n ref={calendarRef}\n defaultMonth={defaultMonth}\n value={checkInputValueIsValid(value) ? calendarValue : undefined}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n\n return (\n <div\n className={cn(styles.component, className, {\n [styles.block]: block,\n })}\n onFocus={inputDisabled ? undefined : handleInputWrapperFocus}\n onBlur={handleBlur}\n >\n {InputComponent ? (\n <InputComponent\n autoComplete={picker ? 'off' : undefined}\n {...restProps}\n block={block}\n ref={mergeRefs([ref, inputRef])}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n className={inputClassName}\n onClear={handleClear}\n disableUserInput={disableUserInput}\n error={error}\n rightAddons={\n <React.Fragment>\n {rightAddons}\n {shouldShowPicker && (\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <IconButton\n className={styles.calendarIcon}\n onClick={inputDisabled ? undefined : handleIconButtonClick}\n icon={CalendarMIcon}\n size={48}\n />\n )}\n </React.Fragment>\n }\n />\n ) : null}\n {picker &&\n (view === 'desktop' ? (\n <Popover\n open={open}\n useAnchorWidth={useAnchorWidth}\n anchorElement={inputRef.current as HTMLElement}\n popperClassName={cn(styles.calendarContainer, {\n [styles.calendarResponsive]: calendarResponsive,\n })}\n className={popoverClassName}\n position={popoverPosition}\n offset={[0, 8]}\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":["React","__rest","useRef","useState","getDateWithoutTime","useEffect","useDidUpdateEffect","dateInLimits","addTimeToDate","DATE_WITH_TIME_LENGTH","getFullDateTime","format","isCompleteDateInput","isValid","parseTimestampToDate","__assign","cn","styles","mergeRefs","IconButton","CalendarMIcon","Popover"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type DateTimeInputProps } from '../components/date-time-input/Component';
3
- export declare type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
3
+ export type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
4
4
  /**
5
5
  * @deprecated
6
6
  * use UniversalDateInput instead