@alfalab/core-components-date-time-input 5.0.1 → 5.0.2

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 (62) hide show
  1. package/Component.responsive.d.ts +1 -1
  2. package/Component.responsive.js.map +1 -1
  3. package/components/date-time-input/Component.d.ts +6 -8
  4. package/components/date-time-input/Component.js +3 -1
  5. package/components/date-time-input/Component.js.map +1 -1
  6. package/components/date-time-input/index.css +8 -8
  7. package/components/date-time-input/index.module.css.js +1 -1
  8. package/components/date-time-input/index.module.css.js.map +1 -1
  9. package/cssm/Component.responsive.d.ts +1 -1
  10. package/cssm/Component.responsive.js.map +1 -1
  11. package/cssm/components/date-time-input/Component.d.ts +6 -8
  12. package/cssm/components/date-time-input/Component.js +3 -1
  13. package/cssm/components/date-time-input/Component.js.map +1 -1
  14. package/cssm/components/date-time-input/index.module.css +2 -2
  15. package/cssm/desktop/Component.desktop.d.ts +1 -1
  16. package/cssm/desktop/Component.desktop.js.map +1 -1
  17. package/cssm/mobile/Component.mobile.d.ts +1 -1
  18. package/cssm/mobile/Component.mobile.js.map +1 -1
  19. package/desktop/Component.desktop.d.ts +1 -1
  20. package/desktop/Component.desktop.js.map +1 -1
  21. package/esm/Component.responsive.d.ts +1 -1
  22. package/esm/Component.responsive.js.map +1 -1
  23. package/esm/components/date-time-input/Component.d.ts +6 -8
  24. package/esm/components/date-time-input/Component.js +3 -1
  25. package/esm/components/date-time-input/Component.js.map +1 -1
  26. package/esm/components/date-time-input/index.css +8 -8
  27. package/esm/components/date-time-input/index.module.css.js +1 -1
  28. package/esm/components/date-time-input/index.module.css.js.map +1 -1
  29. package/esm/desktop/Component.desktop.d.ts +1 -1
  30. package/esm/desktop/Component.desktop.js.map +1 -1
  31. package/esm/mobile/Component.mobile.d.ts +1 -1
  32. package/esm/mobile/Component.mobile.js.map +1 -1
  33. package/mobile/Component.mobile.d.ts +1 -1
  34. package/mobile/Component.mobile.js.map +1 -1
  35. package/modern/Component.responsive.d.ts +1 -1
  36. package/modern/Component.responsive.js.map +1 -1
  37. package/modern/components/date-time-input/Component.d.ts +6 -8
  38. package/modern/components/date-time-input/Component.js +3 -1
  39. package/modern/components/date-time-input/Component.js.map +1 -1
  40. package/modern/components/date-time-input/index.css +8 -8
  41. package/modern/components/date-time-input/index.module.css.js +1 -1
  42. package/modern/components/date-time-input/index.module.css.js.map +1 -1
  43. package/modern/desktop/Component.desktop.d.ts +1 -1
  44. package/modern/desktop/Component.desktop.js.map +1 -1
  45. package/modern/mobile/Component.mobile.d.ts +1 -1
  46. package/modern/mobile/Component.mobile.js.map +1 -1
  47. package/moderncssm/Component.responsive.d.ts +1 -1
  48. package/moderncssm/Component.responsive.js.map +1 -1
  49. package/moderncssm/components/date-time-input/Component.d.ts +6 -8
  50. package/moderncssm/components/date-time-input/Component.js +3 -1
  51. package/moderncssm/components/date-time-input/Component.js.map +1 -1
  52. package/moderncssm/components/date-time-input/index.module.css +10 -2
  53. package/moderncssm/desktop/Component.desktop.d.ts +1 -1
  54. package/moderncssm/desktop/Component.desktop.js.map +1 -1
  55. package/moderncssm/mobile/Component.mobile.d.ts +1 -1
  56. package/moderncssm/mobile/Component.mobile.js.map +1 -1
  57. package/package.json +3 -3
  58. package/src/Component.responsive.tsx +1 -1
  59. package/src/components/date-time-input/Component.tsx +9 -8
  60. package/src/components/date-time-input/index.module.css +1 -1
  61. package/src/desktop/Component.desktop.tsx +1 -1
  62. package/src/mobile/Component.mobile.tsx +1 -1
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { DateTimeInputProps } from './components/date-time-input/Component';
2
+ import { type DateTimeInputProps } from './components/date-time-input/Component';
3
3
  export declare type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
@@ -1 +1 @@
1
- {"version":3,"file":"Component.responsive.js","sources":["src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { DateTimeInputProps } from './components/date-time-input/Component';\nimport { DateTimeInputDesktop } from './desktop';\nimport { DateTimeInputMobile } from './mobile';\n\nexport type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {\n /**\n * Контрольная точка, с нее начинается desktop версия\n * @default 1024\n */\n breakpoint?: number;\n\n /**\n * Версия, которая будет использоваться при серверном рендеринге\n */\n client?: 'desktop' | 'mobile';\n};\n\nexport type DateTimeInputMedia = 'desktop' | 'mobile';\n\nexport const DateTimeInputResponsive = forwardRef<HTMLInputElement, DateTimeInputResponsiveProps>(\n ({ breakpoint, client, ...restProps }, ref) => {\n const isDesktop = useIsDesktop(breakpoint, client === 'desktop');\n\n return isDesktop ? (\n <DateTimeInputDesktop {...restProps} ref={ref} />\n ) : (\n <DateTimeInputMobile {...restProps} ref={ref} />\n );\n },\n);\n"],"names":["forwardRef","__rest","useIsDesktop","React","DateTimeInputDesktop","__assign","DateTimeInputMobile"],"mappings":";;;;;;;;;;;;;;IAyBa,uBAAuB,GAAGA,gBAAU,CAC7C,UAAC,EAAoC,EAAE,GAAG,EAAA;IAAvC,IAAA,UAAU,gBAAA,EAAE,MAAM,YAAA,EAAK,SAAS,GAAlCC,YAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAoC,CAAF;IAC/B,IAAM,SAAS,GAAGC,6BAAY,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;AAEhE,IAAA,OAAO,SAAS,IACZC,sBAAA,CAAA,aAAA,CAACC,sCAAoB,EAAAC,cAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,KAEjDF,sBAAA,CAAA,aAAA,CAACG,oCAAmB,EAAAD,cAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,CACnD;AACL,CAAC;;;;"}
1
+ {"version":3,"file":"Component.responsive.js","sources":["src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { type DateTimeInputProps } from './components/date-time-input/Component';\nimport { DateTimeInputDesktop } from './desktop';\nimport { DateTimeInputMobile } from './mobile';\n\nexport type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {\n /**\n * Контрольная точка, с нее начинается desktop версия\n * @default 1024\n */\n breakpoint?: number;\n\n /**\n * Версия, которая будет использоваться при серверном рендеринге\n */\n client?: 'desktop' | 'mobile';\n};\n\nexport type DateTimeInputMedia = 'desktop' | 'mobile';\n\nexport const DateTimeInputResponsive = forwardRef<HTMLInputElement, DateTimeInputResponsiveProps>(\n ({ breakpoint, client, ...restProps }, ref) => {\n const isDesktop = useIsDesktop(breakpoint, client === 'desktop');\n\n return isDesktop ? (\n <DateTimeInputDesktop {...restProps} ref={ref} />\n ) : (\n <DateTimeInputMobile {...restProps} ref={ref} />\n );\n },\n);\n"],"names":["forwardRef","__rest","useIsDesktop","React","DateTimeInputDesktop","__assign","DateTimeInputMobile"],"mappings":";;;;;;;;;;;;;;IAyBa,uBAAuB,GAAGA,gBAAU,CAC7C,UAAC,EAAoC,EAAE,GAAG,EAAA;IAAvC,IAAA,UAAU,gBAAA,EAAE,MAAM,YAAA,EAAK,SAAS,GAAlCC,YAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAoC,CAAF;IAC/B,IAAM,SAAS,GAAGC,6BAAY,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;AAEhE,IAAA,OAAO,SAAS,IACZC,sBAAA,CAAA,aAAA,CAACC,sCAAoB,EAAAC,cAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,KAEjDF,sBAAA,CAAA,aAAA,CAACG,oCAAmB,EAAAD,cAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,CACnD;AACL,CAAC;;;;"}
@@ -1,8 +1,8 @@
1
- import React, { ChangeEvent, ElementType } from 'react';
2
- import type { CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';
3
- import type { CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';
4
- import { InputProps } from '@alfalab/core-components-input';
5
- import { PopoverProps } from '@alfalab/core-components-popover';
1
+ import React, { type ChangeEvent, type ElementType } from 'react';
2
+ import { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';
3
+ import { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';
4
+ import { type InputProps } from '@alfalab/core-components-input';
5
+ import { type PopoverProps } from '@alfalab/core-components-popover';
6
6
  export declare type DateTimeInputProps = Omit<InputProps, 'onChange'> & {
7
7
  /**
8
8
  * Дополнительный класс
@@ -148,9 +148,7 @@ export declare const DateTimeInput: React.ForwardRefExoticComponent<Omit<InputPr
148
148
  clickableMonth?: boolean | undefined;
149
149
  cancelButtonContent?: string | undefined;
150
150
  selectButtonContent?: string | undefined;
151
- resetButtonContent?: string | undefined; /**
152
- * Доп. пропсы для календаря
153
- */
151
+ resetButtonContent?: string | undefined;
154
152
  } & {
155
153
  onMonthTitleClick?: ((event: React.MouseEvent<HTMLSpanElement, globalThis.MouseEvent>) => void) | undefined;
156
154
  yearsAmount?: number | undefined;
@@ -145,7 +145,9 @@ var DateTimeInput = React__default.default.forwardRef(function (_a, ref) {
145
145
  _b)), onFocus: inputDisabled ? undefined : handleInputWrapperFocus, onBlur: handleBlur },
146
146
  InputComponent ? (React__default.default.createElement(InputComponent, tslib.__assign({ autoComplete: picker ? 'off' : undefined }, restProps, { block: block, ref: mergeRefs__default.default([ref, inputRef]), value: value, onChange: handleChange, disabled: disabled, readOnly: readOnly, className: inputClassName, onClear: handleClear, disableUserInput: disableUserInput, error: error, rightAddons: React__default.default.createElement(React__default.default.Fragment, null,
147
147
  rightAddons,
148
- picker && (React__default.default.createElement(coreComponentsIconButton.IconButton, { className: index_module.calendarIcon, onClick: inputDisabled ? undefined : handleIconButtonClick, icon: CalendarMIcon.CalendarMIcon, size: 's' }))) }))) : null,
148
+ picker && (
149
+ // eslint-disable-next-line jsx-a11y/control-has-associated-label
150
+ React__default.default.createElement(coreComponentsIconButton.IconButton, { className: index_module.calendarIcon, onClick: inputDisabled ? undefined : handleIconButtonClick, icon: CalendarMIcon.CalendarMIcon, size: 's' }))) }))) : null,
149
151
  picker &&
150
152
  (view === 'desktop' ? (React__default.default.createElement(coreComponentsPopover.Popover, { open: open, useAnchorWidth: useAnchorWidth, anchorElement: inputRef.current, popperClassName: cn__default.default(index_module.calendarContainer, (_c = {},
151
153
  _c[index_module.calendarResponsive] = calendarResponsive,
@@ -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 ChangeEvent,\n ElementType,\n FocusEvent,\n 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 { InputProps } from '@alfalab/core-components-input';\nimport { Popover, 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\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 {picker && (\n <IconButton\n className={styles.calendarIcon}\n onClick={inputDisabled ? undefined : handleIconButtonClick}\n icon={CalendarMIcon}\n size='s'\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\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 {picker && (\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='s'\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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"}
@@ -10,24 +10,24 @@
10
10
  --calendar-width: 344px;
11
11
  } :root {
12
12
  --calendar-popover-border-radius: var(--border-radius-8);
13
- } .date-time-input__component_1hayl {
13
+ } .date-time-input__component_bqcuh {
14
14
  display: inline-block;
15
15
  outline: none;
16
16
  position: relative;
17
- } .date-time-input__calendarContainer_1hayl {
17
+ } .date-time-input__calendarContainer_bqcuh {
18
18
  display: inline-block;
19
19
  box-sizing: border-box;
20
20
  border-radius: var(--calendar-popover-border-radius);
21
- border: 1px solid var(--color-light-neutral-300)
22
- } @media (max-width: 374px) { .date-time-input__calendarContainer_1hayl {
21
+ border: 1px solid var(--color-light-neutral-300);
22
+ } @media (max-width: 374px) { .date-time-input__calendarContainer_bqcuh {
23
23
  width: 100%;
24
- min-width: 288px
24
+ min-width: 288px;
25
25
  }
26
- } .date-time-input__calendarResponsive_1hayl {
26
+ } .date-time-input__calendarResponsive_bqcuh {
27
27
  width: var(--calendar-width);
28
- } .date-time-input__block_1hayl {
28
+ } .date-time-input__block_bqcuh {
29
29
  width: 100%;
30
- } .date-time-input__calendarIcon_1hayl {
30
+ } .date-time-input__calendarIcon_bqcuh {
31
31
  margin-right: var(--gap-12-neg);
32
32
  height: 100%;
33
33
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"component":"date-time-input__component_1hayl","calendarContainer":"date-time-input__calendarContainer_1hayl","calendarResponsive":"date-time-input__calendarResponsive_1hayl","block":"date-time-input__block_1hayl","calendarIcon":"date-time-input__calendarIcon_1hayl"};
5
+ var styles = {"component":"date-time-input__component_bqcuh","calendarContainer":"date-time-input__calendarContainer_bqcuh","calendarResponsive":"date-time-input__calendarResponsive_bqcuh","block":"date-time-input__block_bqcuh","calendarIcon":"date-time-input__calendarIcon_bqcuh"};
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/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/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,5 +1,5 @@
1
1
  import React from 'react';
2
- import { DateTimeInputProps } from './components/date-time-input/Component';
2
+ import { type DateTimeInputProps } from './components/date-time-input/Component';
3
3
  export declare type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
@@ -1 +1 @@
1
- {"version":3,"file":"Component.responsive.js","sources":["../src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { DateTimeInputProps } from './components/date-time-input/Component';\nimport { DateTimeInputDesktop } from './desktop';\nimport { DateTimeInputMobile } from './mobile';\n\nexport type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {\n /**\n * Контрольная точка, с нее начинается desktop версия\n * @default 1024\n */\n breakpoint?: number;\n\n /**\n * Версия, которая будет использоваться при серверном рендеринге\n */\n client?: 'desktop' | 'mobile';\n};\n\nexport type DateTimeInputMedia = 'desktop' | 'mobile';\n\nexport const DateTimeInputResponsive = forwardRef<HTMLInputElement, DateTimeInputResponsiveProps>(\n ({ breakpoint, client, ...restProps }, ref) => {\n const isDesktop = useIsDesktop(breakpoint, client === 'desktop');\n\n return isDesktop ? (\n <DateTimeInputDesktop {...restProps} ref={ref} />\n ) : (\n <DateTimeInputMobile {...restProps} ref={ref} />\n );\n },\n);\n"],"names":["forwardRef","__rest","useIsDesktop","React","DateTimeInputDesktop","__assign","DateTimeInputMobile"],"mappings":";;;;;;;;;;;;;;IAyBa,uBAAuB,GAAGA,gBAAU,CAC7C,UAAC,EAAoC,EAAE,GAAG,EAAA;IAAvC,IAAA,UAAU,gBAAA,EAAE,MAAM,YAAA,EAAK,SAAS,GAAlCC,YAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAoC,CAAF;IAC/B,IAAM,SAAS,GAAGC,iBAAY,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;AAEhE,IAAA,OAAO,SAAS,IACZC,sBAAA,CAAA,aAAA,CAACC,sCAAoB,EAAAC,cAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,KAEjDF,sBAAA,CAAA,aAAA,CAACG,oCAAmB,EAAAD,cAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,CACnD;AACL,CAAC;;;;"}
1
+ {"version":3,"file":"Component.responsive.js","sources":["../src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { type DateTimeInputProps } from './components/date-time-input/Component';\nimport { DateTimeInputDesktop } from './desktop';\nimport { DateTimeInputMobile } from './mobile';\n\nexport type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {\n /**\n * Контрольная точка, с нее начинается desktop версия\n * @default 1024\n */\n breakpoint?: number;\n\n /**\n * Версия, которая будет использоваться при серверном рендеринге\n */\n client?: 'desktop' | 'mobile';\n};\n\nexport type DateTimeInputMedia = 'desktop' | 'mobile';\n\nexport const DateTimeInputResponsive = forwardRef<HTMLInputElement, DateTimeInputResponsiveProps>(\n ({ breakpoint, client, ...restProps }, ref) => {\n const isDesktop = useIsDesktop(breakpoint, client === 'desktop');\n\n return isDesktop ? (\n <DateTimeInputDesktop {...restProps} ref={ref} />\n ) : (\n <DateTimeInputMobile {...restProps} ref={ref} />\n );\n },\n);\n"],"names":["forwardRef","__rest","useIsDesktop","React","DateTimeInputDesktop","__assign","DateTimeInputMobile"],"mappings":";;;;;;;;;;;;;;IAyBa,uBAAuB,GAAGA,gBAAU,CAC7C,UAAC,EAAoC,EAAE,GAAG,EAAA;IAAvC,IAAA,UAAU,gBAAA,EAAE,MAAM,YAAA,EAAK,SAAS,GAAlCC,YAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAoC,CAAF;IAC/B,IAAM,SAAS,GAAGC,iBAAY,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;AAEhE,IAAA,OAAO,SAAS,IACZC,sBAAA,CAAA,aAAA,CAACC,sCAAoB,EAAAC,cAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,KAEjDF,sBAAA,CAAA,aAAA,CAACG,oCAAmB,EAAAD,cAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,CACnD;AACL,CAAC;;;;"}
@@ -1,8 +1,8 @@
1
- import React, { ChangeEvent, ElementType } from 'react';
2
- import type { CalendarDesktopProps } from '@alfalab/core-components-calendar/cssm/desktop';
3
- import type { CalendarMobileProps } from '@alfalab/core-components-calendar/cssm/mobile';
4
- import { InputProps } from '@alfalab/core-components-input/cssm';
5
- import { PopoverProps } from '@alfalab/core-components-popover/cssm';
1
+ import React, { type ChangeEvent, type ElementType } from 'react';
2
+ import { type CalendarDesktopProps } from '@alfalab/core-components-calendar/cssm/desktop';
3
+ import { type CalendarMobileProps } from '@alfalab/core-components-calendar/cssm/mobile';
4
+ import { type InputProps } from '@alfalab/core-components-input/cssm';
5
+ import { type PopoverProps } from '@alfalab/core-components-popover/cssm';
6
6
  export declare type DateTimeInputProps = Omit<InputProps, 'onChange'> & {
7
7
  /**
8
8
  * Дополнительный класс
@@ -148,9 +148,7 @@ export declare const DateTimeInput: React.ForwardRefExoticComponent<Omit<InputPr
148
148
  clickableMonth?: boolean | undefined;
149
149
  cancelButtonContent?: string | undefined;
150
150
  selectButtonContent?: string | undefined;
151
- resetButtonContent?: string | undefined; /**
152
- * Доп. пропсы для календаря
153
- */
151
+ resetButtonContent?: string | undefined;
154
152
  } & {
155
153
  onMonthTitleClick?: ((event: React.MouseEvent<HTMLSpanElement, globalThis.MouseEvent>) => void) | undefined;
156
154
  yearsAmount?: number | undefined;
@@ -146,7 +146,9 @@ var DateTimeInput = React__default.default.forwardRef(function (_a, ref) {
146
146
  _b)), onFocus: inputDisabled ? undefined : handleInputWrapperFocus, onBlur: handleBlur },
147
147
  InputComponent ? (React__default.default.createElement(InputComponent, tslib.__assign({ autoComplete: picker ? 'off' : undefined }, restProps, { block: block, ref: mergeRefs__default.default([ref, inputRef]), value: value, onChange: handleChange, disabled: disabled, readOnly: readOnly, className: inputClassName, onClear: handleClear, disableUserInput: disableUserInput, error: error, rightAddons: React__default.default.createElement(React__default.default.Fragment, null,
148
148
  rightAddons,
149
- picker && (React__default.default.createElement(cssm.IconButton, { className: styles__default.default.calendarIcon, onClick: inputDisabled ? undefined : handleIconButtonClick, icon: CalendarMIcon.CalendarMIcon, size: 's' }))) }))) : null,
149
+ picker && (
150
+ // eslint-disable-next-line jsx-a11y/control-has-associated-label
151
+ React__default.default.createElement(cssm.IconButton, { className: styles__default.default.calendarIcon, onClick: inputDisabled ? undefined : handleIconButtonClick, icon: CalendarMIcon.CalendarMIcon, size: 's' }))) }))) : null,
150
152
  picker &&
151
153
  (view === 'desktop' ? (React__default.default.createElement(cssm$1.Popover, { open: open, useAnchorWidth: useAnchorWidth, anchorElement: inputRef.current, popperClassName: cn__default.default(styles__default.default.calendarContainer, (_c = {},
152
154
  _c[styles__default.default.calendarResponsive] = calendarResponsive,
@@ -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 ChangeEvent,\n ElementType,\n FocusEvent,\n 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 { InputProps } from '@alfalab/core-components-input';\nimport { Popover, 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\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 {picker && (\n <IconButton\n className={styles.calendarIcon}\n onClick={inputDisabled ? undefined : handleIconButtonClick}\n icon={CalendarMIcon}\n size='s'\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\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 {picker && (\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='s'\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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"}
@@ -18,10 +18,10 @@
18
18
  display: inline-block;
19
19
  box-sizing: border-box;
20
20
  border-radius: var(--calendar-popover-border-radius);
21
- border: 1px solid var(--color-light-neutral-300)
21
+ border: 1px solid var(--color-light-neutral-300);
22
22
  } @media (max-width: 374px) { .calendarContainer {
23
23
  width: 100%;
24
- min-width: 288px
24
+ min-width: 288px;
25
25
  }
26
26
  } .calendarResponsive {
27
27
  width: var(--calendar-width);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { DateTimeInputProps } from '../components/date-time-input/Component';
2
+ import { type DateTimeInputProps } from '../components/date-time-input/Component';
3
3
  export declare type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
4
4
  /**
5
5
  * @deprecated
@@ -1 +1 @@
1
- {"version":3,"file":"Component.desktop.js","sources":["../../src/desktop/Component.desktop.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\n\nimport { DateTimeInput, DateTimeInputProps } from '../components/date-time-input/Component';\n\nexport type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;\n\n/**\n * @deprecated\n * use UniversalDateInput instead\n */\nexport const DateTimeInputDesktop = forwardRef<HTMLInputElement, DateTimeInputDesktopProps>(\n (props, ref) => (\n <DateTimeInput\n Calendar={CalendarDesktop}\n InputComponent={InputDesktop}\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":["forwardRef","React","DateTimeInput","__assign","CalendarDesktop","InputDesktop"],"mappings":";;;;;;;;;;;;;;AAWA;;;AAGG;AACI,IAAM,oBAAoB,GAAGA,gBAAU,CAC1C,UAAC,KAAK,EAAE,GAAG,EAAK,EAAA,QACZC,sBAAA,CAAA,aAAA,CAACC,uBAAa,EACVC,cAAA,CAAA,EAAA,QAAQ,EAAEC,yBAAe,EACzB,cAAc,EAAEC,oBAAY,IACxB,KAAK,EAAA,EACT,GAAG,EAAE,GAAG,EACV,CAAA,CAAA,EANU,EAOf;;;;"}
1
+ {"version":3,"file":"Component.desktop.js","sources":["../../src/desktop/Component.desktop.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\n\nimport { DateTimeInput, type DateTimeInputProps } from '../components/date-time-input/Component';\n\nexport type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;\n\n/**\n * @deprecated\n * use UniversalDateInput instead\n */\nexport const DateTimeInputDesktop = forwardRef<HTMLInputElement, DateTimeInputDesktopProps>(\n (props, ref) => (\n <DateTimeInput\n Calendar={CalendarDesktop}\n InputComponent={InputDesktop}\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":["forwardRef","React","DateTimeInput","__assign","CalendarDesktop","InputDesktop"],"mappings":";;;;;;;;;;;;;;AAWA;;;AAGG;AACI,IAAM,oBAAoB,GAAGA,gBAAU,CAC1C,UAAC,KAAK,EAAE,GAAG,EAAK,EAAA,QACZC,sBAAA,CAAA,aAAA,CAACC,uBAAa,EACVC,cAAA,CAAA,EAAA,QAAQ,EAAEC,yBAAe,EACzB,cAAc,EAAEC,oBAAY,IACxB,KAAK,EAAA,EACT,GAAG,EAAE,GAAG,EACV,CAAA,CAAA,EANU,EAOf;;;;"}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { DateTimeInputProps } from '../components/date-time-input/Component';
2
+ import { type DateTimeInputProps } from '../components/date-time-input/Component';
3
3
  export declare type DateTimeInputMobileProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
4
4
  export declare const DateTimeInputMobile: React.ForwardRefExoticComponent<DateTimeInputMobileProps & React.RefAttributes<HTMLInputElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Component.mobile.js","sources":["../../src/mobile/Component.mobile.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { CalendarMobile } from '@alfalab/core-components-calendar/mobile';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { InputMobile } from '@alfalab/core-components-input/mobile';\n\nimport { DateTimeInput, DateTimeInputProps } from '../components/date-time-input/Component';\n\nexport type DateTimeInputMobileProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;\n\nexport const DateTimeInputMobile = forwardRef<HTMLInputElement, DateTimeInputMobileProps>(\n (props, ref) => (\n <DateTimeInput\n InputComponent={InputMobile}\n Calendar={CalendarMobile}\n view='mobile'\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":["forwardRef","React","DateTimeInput","__assign","InputMobile","CalendarMobile"],"mappings":";;;;;;;;;;;;;;AAWa,IAAA,mBAAmB,GAAGA,gBAAU,CACzC,UAAC,KAAK,EAAE,GAAG,IAAK,QACZC,qCAACC,uBAAa,EAAAC,cAAA,CAAA,EACV,cAAc,EAAEC,oBAAW,EAC3B,QAAQ,EAAEC,qBAAc,EACxB,IAAI,EAAC,QAAQ,EACT,EAAA,KAAK,EACT,EAAA,GAAG,EAAE,GAAG,EAAA,CAAA,CACV,EAPU,EAQf;;;;"}
1
+ {"version":3,"file":"Component.mobile.js","sources":["../../src/mobile/Component.mobile.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { CalendarMobile } from '@alfalab/core-components-calendar/mobile';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { InputMobile } from '@alfalab/core-components-input/mobile';\n\nimport { DateTimeInput, type DateTimeInputProps } from '../components/date-time-input/Component';\n\nexport type DateTimeInputMobileProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;\n\nexport const DateTimeInputMobile = forwardRef<HTMLInputElement, DateTimeInputMobileProps>(\n (props, ref) => (\n <DateTimeInput\n InputComponent={InputMobile}\n Calendar={CalendarMobile}\n view='mobile'\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":["forwardRef","React","DateTimeInput","__assign","InputMobile","CalendarMobile"],"mappings":";;;;;;;;;;;;;;AAWa,IAAA,mBAAmB,GAAGA,gBAAU,CACzC,UAAC,KAAK,EAAE,GAAG,IAAK,QACZC,qCAACC,uBAAa,EAAAC,cAAA,CAAA,EACV,cAAc,EAAEC,oBAAW,EAC3B,QAAQ,EAAEC,qBAAc,EACxB,IAAI,EAAC,QAAQ,EACT,EAAA,KAAK,EACT,EAAA,GAAG,EAAE,GAAG,EAAA,CAAA,CACV,EAPU,EAQf;;;;"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { DateTimeInputProps } from '../components/date-time-input/Component';
2
+ import { type DateTimeInputProps } from '../components/date-time-input/Component';
3
3
  export declare type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
4
4
  /**
5
5
  * @deprecated
@@ -1 +1 @@
1
- {"version":3,"file":"Component.desktop.js","sources":["../src/desktop/Component.desktop.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\n\nimport { DateTimeInput, DateTimeInputProps } from '../components/date-time-input/Component';\n\nexport type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;\n\n/**\n * @deprecated\n * use UniversalDateInput instead\n */\nexport const DateTimeInputDesktop = forwardRef<HTMLInputElement, DateTimeInputDesktopProps>(\n (props, ref) => (\n <DateTimeInput\n Calendar={CalendarDesktop}\n InputComponent={InputDesktop}\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":["forwardRef","React","DateTimeInput","__assign","CalendarDesktop","InputDesktop"],"mappings":";;;;;;;;;;;;;;AAWA;;;AAGG;AACI,IAAM,oBAAoB,GAAGA,gBAAU,CAC1C,UAAC,KAAK,EAAE,GAAG,EAAK,EAAA,QACZC,sBAAA,CAAA,aAAA,CAACC,uBAAa,EACVC,cAAA,CAAA,EAAA,QAAQ,EAAEC,yBAAe,EACzB,cAAc,EAAEC,oBAAY,IACxB,KAAK,EAAA,EACT,GAAG,EAAE,GAAG,EACV,CAAA,CAAA,EANU,EAOf;;;;"}
1
+ {"version":3,"file":"Component.desktop.js","sources":["../src/desktop/Component.desktop.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { InputDesktop } from '@alfalab/core-components-input/desktop';\n\nimport { DateTimeInput, type DateTimeInputProps } from '../components/date-time-input/Component';\n\nexport type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;\n\n/**\n * @deprecated\n * use UniversalDateInput instead\n */\nexport const DateTimeInputDesktop = forwardRef<HTMLInputElement, DateTimeInputDesktopProps>(\n (props, ref) => (\n <DateTimeInput\n Calendar={CalendarDesktop}\n InputComponent={InputDesktop}\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":["forwardRef","React","DateTimeInput","__assign","CalendarDesktop","InputDesktop"],"mappings":";;;;;;;;;;;;;;AAWA;;;AAGG;AACI,IAAM,oBAAoB,GAAGA,gBAAU,CAC1C,UAAC,KAAK,EAAE,GAAG,EAAK,EAAA,QACZC,sBAAA,CAAA,aAAA,CAACC,uBAAa,EACVC,cAAA,CAAA,EAAA,QAAQ,EAAEC,yBAAe,EACzB,cAAc,EAAEC,oBAAY,IACxB,KAAK,EAAA,EACT,GAAG,EAAE,GAAG,EACV,CAAA,CAAA,EANU,EAOf;;;;"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { DateTimeInputProps } from './components/date-time-input/Component';
2
+ import { type DateTimeInputProps } from './components/date-time-input/Component';
3
3
  export declare type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
@@ -1 +1 @@
1
- {"version":3,"file":"Component.responsive.js","sources":["../src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { DateTimeInputProps } from './components/date-time-input/Component';\nimport { DateTimeInputDesktop } from './desktop';\nimport { DateTimeInputMobile } from './mobile';\n\nexport type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {\n /**\n * Контрольная точка, с нее начинается desktop версия\n * @default 1024\n */\n breakpoint?: number;\n\n /**\n * Версия, которая будет использоваться при серверном рендеринге\n */\n client?: 'desktop' | 'mobile';\n};\n\nexport type DateTimeInputMedia = 'desktop' | 'mobile';\n\nexport const DateTimeInputResponsive = forwardRef<HTMLInputElement, DateTimeInputResponsiveProps>(\n ({ breakpoint, client, ...restProps }, ref) => {\n const isDesktop = useIsDesktop(breakpoint, client === 'desktop');\n\n return isDesktop ? (\n <DateTimeInputDesktop {...restProps} ref={ref} />\n ) : (\n <DateTimeInputMobile {...restProps} ref={ref} />\n );\n },\n);\n"],"names":[],"mappings":";;;;;;IAyBa,uBAAuB,GAAG,UAAU,CAC7C,UAAC,EAAoC,EAAE,GAAG,EAAA;IAAvC,IAAA,UAAU,gBAAA,EAAE,MAAM,YAAA,EAAK,SAAS,GAAlC,MAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAoC,CAAF;IAC/B,IAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;AAEhE,IAAA,OAAO,SAAS,IACZ,KAAA,CAAA,aAAA,CAAC,oBAAoB,EAAA,QAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,KAEjD,KAAA,CAAA,aAAA,CAAC,mBAAmB,EAAA,QAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,CACnD;AACL,CAAC;;;;"}
1
+ {"version":3,"file":"Component.responsive.js","sources":["../src/Component.responsive.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { InputProps } from '@alfalab/core-components-input';\nimport { useIsDesktop } from '@alfalab/core-components-mq';\n\nimport { type DateTimeInputProps } from './components/date-time-input/Component';\nimport { DateTimeInputDesktop } from './desktop';\nimport { DateTimeInputMobile } from './mobile';\n\nexport type DateTimeInputResponsiveProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'> & {\n /**\n * Контрольная точка, с нее начинается desktop версия\n * @default 1024\n */\n breakpoint?: number;\n\n /**\n * Версия, которая будет использоваться при серверном рендеринге\n */\n client?: 'desktop' | 'mobile';\n};\n\nexport type DateTimeInputMedia = 'desktop' | 'mobile';\n\nexport const DateTimeInputResponsive = forwardRef<HTMLInputElement, DateTimeInputResponsiveProps>(\n ({ breakpoint, client, ...restProps }, ref) => {\n const isDesktop = useIsDesktop(breakpoint, client === 'desktop');\n\n return isDesktop ? (\n <DateTimeInputDesktop {...restProps} ref={ref} />\n ) : (\n <DateTimeInputMobile {...restProps} ref={ref} />\n );\n },\n);\n"],"names":[],"mappings":";;;;;;IAyBa,uBAAuB,GAAG,UAAU,CAC7C,UAAC,EAAoC,EAAE,GAAG,EAAA;IAAvC,IAAA,UAAU,gBAAA,EAAE,MAAM,YAAA,EAAK,SAAS,GAAlC,MAAA,CAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAoC,CAAF;IAC/B,IAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;AAEhE,IAAA,OAAO,SAAS,IACZ,KAAA,CAAA,aAAA,CAAC,oBAAoB,EAAA,QAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,KAEjD,KAAA,CAAA,aAAA,CAAC,mBAAmB,EAAA,QAAA,CAAA,EAAA,EAAK,SAAS,EAAA,EAAE,GAAG,EAAE,GAAG,EAAA,CAAA,CAAI,CACnD;AACL,CAAC;;;;"}
@@ -1,8 +1,8 @@
1
- import React, { ChangeEvent, ElementType } from 'react';
2
- import type { CalendarDesktopProps } from '@alfalab/core-components-calendar/esm/desktop';
3
- import type { CalendarMobileProps } from '@alfalab/core-components-calendar/esm/mobile';
4
- import { InputProps } from '@alfalab/core-components-input/esm';
5
- import { PopoverProps } from '@alfalab/core-components-popover/esm';
1
+ import React, { type ChangeEvent, type ElementType } from 'react';
2
+ import { type CalendarDesktopProps } from '@alfalab/core-components-calendar/esm/desktop';
3
+ import { type CalendarMobileProps } from '@alfalab/core-components-calendar/esm/mobile';
4
+ import { type InputProps } from '@alfalab/core-components-input/esm';
5
+ import { type PopoverProps } from '@alfalab/core-components-popover/esm';
6
6
  export declare type DateTimeInputProps = Omit<InputProps, 'onChange'> & {
7
7
  /**
8
8
  * Дополнительный класс
@@ -148,9 +148,7 @@ export declare const DateTimeInput: React.ForwardRefExoticComponent<Omit<InputPr
148
148
  clickableMonth?: boolean | undefined;
149
149
  cancelButtonContent?: string | undefined;
150
150
  selectButtonContent?: string | undefined;
151
- resetButtonContent?: string | undefined; /**
152
- * Доп. пропсы для календаря
153
- */
151
+ resetButtonContent?: string | undefined;
154
152
  } & {
155
153
  onMonthTitleClick?: ((event: React.MouseEvent<HTMLSpanElement, globalThis.MouseEvent>) => void) | undefined;
156
154
  yearsAmount?: number | undefined;
@@ -135,7 +135,9 @@ var DateTimeInput = React.forwardRef(function (_a, ref) {
135
135
  _b)), onFocus: inputDisabled ? undefined : handleInputWrapperFocus, onBlur: handleBlur },
136
136
  InputComponent ? (React.createElement(InputComponent, __assign({ autoComplete: picker ? 'off' : undefined }, restProps, { block: block, ref: mergeRefs([ref, inputRef]), value: value, onChange: handleChange, disabled: disabled, readOnly: readOnly, className: inputClassName, onClear: handleClear, disableUserInput: disableUserInput, error: error, rightAddons: React.createElement(React.Fragment, null,
137
137
  rightAddons,
138
- picker && (React.createElement(IconButton, { className: styles.calendarIcon, onClick: inputDisabled ? undefined : handleIconButtonClick, icon: CalendarMIcon, size: 's' }))) }))) : null,
138
+ picker && (
139
+ // eslint-disable-next-line jsx-a11y/control-has-associated-label
140
+ React.createElement(IconButton, { className: styles.calendarIcon, onClick: inputDisabled ? undefined : handleIconButtonClick, icon: CalendarMIcon, size: 's' }))) }))) : null,
139
141
  picker &&
140
142
  (view === 'desktop' ? (React.createElement(Popover, { open: open, useAnchorWidth: useAnchorWidth, anchorElement: inputRef.current, popperClassName: cn(styles.calendarContainer, (_c = {},
141
143
  _c[styles.calendarResponsive] = calendarResponsive,