@alfalab/core-components-date-range-input 5.0.5 → 5.0.6-alfasans

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 +2 -2
  2. package/components/date-range-input/Component.d.ts +2 -2
  3. package/components/date-range-input/Component.js.map +1 -1
  4. package/components/date-range-input/index.css +6 -6
  5. package/components/date-range-input/index.module.css.js +1 -1
  6. package/components/date-range-input/index.module.css.js.map +1 -1
  7. package/cssm/Component.responsive.d.ts +2 -2
  8. package/cssm/components/date-range-input/Component.d.ts +2 -2
  9. package/cssm/components/date-range-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 +2 -2
  15. package/esm/components/date-range-input/Component.d.ts +2 -2
  16. package/esm/components/date-range-input/Component.js.map +1 -1
  17. package/esm/components/date-range-input/index.css +6 -6
  18. package/esm/components/date-range-input/index.module.css.js +1 -1
  19. package/esm/components/date-range-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 +2 -2
  25. package/modern/components/date-range-input/Component.d.ts +2 -2
  26. package/modern/components/date-range-input/Component.js.map +1 -1
  27. package/modern/components/date-range-input/index.css +6 -6
  28. package/modern/components/date-range-input/index.module.css.js +1 -1
  29. package/modern/components/date-range-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 +2 -2
  34. package/moderncssm/components/date-range-input/Component.d.ts +2 -2
  35. package/moderncssm/components/date-range-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 +8 -8
  40. package/src/components/date-range-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 ConditionalProps, type DateRangeInputProps } from './components/date-range-input';
3
- export declare type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps & {
3
+ export type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
6
6
  * @default 1024
@@ -11,7 +11,7 @@ export declare type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'v
11
11
  */
12
12
  client?: 'desktop' | 'mobile';
13
13
  };
14
- export declare type DateRangeInputMedia = 'desktop' | 'mobile';
14
+ export type DateRangeInputMedia = 'desktop' | 'mobile';
15
15
  /**
16
16
  * @deprecated
17
17
  * use UniversalDateInput instead
@@ -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 ConditionalProps = {
6
+ export type ConditionalProps = {
7
7
  /**
8
8
  * Обработчик изменения значения
9
9
  */
@@ -16,7 +16,7 @@ export declare type ConditionalProps = {
16
16
  picker?: false;
17
17
  onClose?: never;
18
18
  };
19
- export declare type DateRangeInputProps = Omit<InputProps, 'onChange'> & ConditionalProps & {
19
+ export type DateRangeInputProps = Omit<InputProps, 'onChange'> & ConditionalProps & {
20
20
  /**
21
21
  * Дополнительный класс
22
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../src/components/date-range-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\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';\nimport { isValid as dateFnsIsValid, startOfMonth } from 'date-fns';\n\nimport { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';\nimport { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';\nimport { usePeriod } 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 DATE_FORMAT,\n DATE_MASK,\n format,\n isCompleteDateInput,\n isValid,\n parseDateString,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type ConditionalProps =\n | {\n /**\n * Обработчик изменения значения\n */\n picker: true;\n\n /**\n * Обработчик закрытия календаря\n */\n onClose?: () => void;\n }\n | { picker?: false; onClose?: never };\n\nexport type DateRangeInputProps = Omit<InputProps, 'onChange'> &\n ConditionalProps & {\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 onChange?: (\n payload: { dateFrom?: Date; dateTo?: Date; value: string },\n event?: ChangeEvent<HTMLInputElement>,\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n payload: { dateFrom: Date; dateTo: Date; value: string },\n event?: ChangeEvent<HTMLInputElement>,\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\ntype GetDatesRet = { formattedValue: string; dateFrom?: Date; dateTo?: Date; dateArr: string[] };\n\nexport const DateRangeInput = React.forwardRef<HTMLInputElement, DateRangeInputProps>(\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 onClose,\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 view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const iconRef = useRef<HTMLButtonElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(defaultOpen);\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n const { selectedFrom, selectedTo, updatePeriod, resetPeriod, setStart, setEnd } = usePeriod(\n { onPeriodChange: handlePeriodChange },\n );\n\n useEffect(() => {\n if (value) {\n setCalendarPeriod(getDates(value));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setValue((prevValue) => {\n if (selectedFrom && selectedTo) {\n const from = parseTimestampToDate(selectedFrom);\n const to = parseTimestampToDate(selectedTo);\n\n return `${from} - ${to}`;\n }\n if (selectedFrom && prevValue.length < DATE_FORMAT.length) {\n return parseTimestampToDate(selectedFrom);\n }\n\n return prevValue;\n });\n }, [selectedFrom, selectedTo]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => {\n if (prevValue === newPropValue) {\n return prevValue;\n }\n\n const dates = getDates(newPropValue);\n\n setCalendarPeriod(dates);\n\n return dates.formattedValue;\n });\n }, [propValue]);\n\n function getDates(val: string): GetDatesRet {\n const formattedValue = format(val);\n\n const dateArr = formattedValue.split('-').map((v) => v.trim());\n const dateFrom = dateArr[0] ? parseDateString(dateArr[0]) : undefined;\n const dateTo = dateArr[1] ? parseDateString(dateArr[1]) : undefined;\n\n return { formattedValue, dateFrom, dateTo, dateArr };\n }\n\n function setCalendarPeriod({ dateFrom, dateTo }: GetDatesRet) {\n setStart(dateFrom?.getTime());\n setEnd(dateTo?.getTime());\n }\n\n function handlePeriodChange(from?: number, to?: number) {\n if (from && !to && value.length === DATE_MASK.length) {\n setValue(parseTimestampToDate(from));\n } else if (\n (!from && !to && value.length === DATE_FORMAT.length) ||\n (from === to && value.length === DATE_MASK.length)\n ) {\n setValue('');\n }\n\n const dateFrom = from ? new Date(from) : undefined;\n const dateTo = to ? new Date(to) : undefined;\n\n const newValue = ([from, to].filter(Boolean) as number[])\n .map((timestamp) => parseTimestampToDate(timestamp))\n .join(' - ');\n\n onChange?.({\n dateFrom,\n dateTo,\n value: newValue,\n });\n\n if (dateFrom && dateTo) {\n onComplete?.({\n dateFrom,\n dateTo,\n value: newValue,\n });\n }\n }\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\n }\n\n if (!open && event.target.tagName !== 'INPUT' && calendarRef.current) {\n calendarRef.current.focus();\n }\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n const target = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (\n calendarRef.current?.contains(target) === false &&\n inputRef.current?.contains(target) === false &&\n iconRef.current?.contains(target) === false\n ) {\n setOpen(false);\n\n if (onClose) {\n onClose();\n }\n }\n }\n };\n\n // eslint-disable-next-line complexity\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_MASK.length) return;\n\n // Позволяем вводить только цифры, точки, дефис и пробелы\n if (/[^\\d. -]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const hyphen = newValue.match(/\\-/g);\n\n // Не даем вводить больше, чем 4 точки и 1 дефис\n if ((dots && dots.length > 4) || (hyphen && hyphen.length > 1)) {\n return;\n }\n\n const { formattedValue, dateFrom, dateTo, dateArr } = getDates(newValue);\n\n if (!dateFrom && !dateTo) {\n resetPeriod();\n } else if (selectedFrom && formattedValue.length < DATE_FORMAT.length) {\n setStart();\n } else if (selectedFrom && selectedTo) {\n setEnd();\n } else if (\n dateFrom &&\n dateFnsIsValid(dateFrom) &&\n dateArr[0]?.length === DATE_FORMAT.length &&\n dateFrom.getTime() !== selectedFrom\n ) {\n setStart(dateFrom.getTime());\n } else if (\n dateTo &&\n dateFnsIsValid(dateTo) &&\n dateArr[1]?.length === DATE_FORMAT.length &&\n dateTo.getTime() !== selectedTo\n ) {\n setEnd(dateTo.getTime());\n }\n\n setValue(formattedValue);\n\n onChange?.({ dateFrom, dateTo, value: formattedValue }, event);\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue, dateArr[0], dateArr[1]);\n\n if (!valid) return;\n\n if (dateFrom && dateTo) {\n onComplete?.({ dateFrom, dateTo, value: formattedValue }, event);\n }\n }\n };\n\n const handleCalendarClose = () => {\n if (view === 'mobile' && onClose) {\n onClose();\n }\n\n setOpen(false);\n };\n\n const handleClear = () => {\n setValue('');\n resetPeriod();\n };\n\n const handleCalendarChange = (date?: number) => {\n updatePeriod(date);\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 const activeMonth =\n (selectedTo && startOfMonth(selectedTo)) ||\n (selectedFrom && startOfMonth(selectedFrom));\n\n return 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={handleCalendarClose}\n ref={calendarRef}\n defaultMonth={activeMonth || defaultMonth}\n selectedFrom={selectedFrom}\n selectedTo={selectedTo}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n };\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 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 ref={iconRef}\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","usePeriod","useEffect","parseTimestampToDate","DATE_FORMAT","useDidUpdateEffect","format","parseDateString","DATE_MASK","dateFnsIsValid","isCompleteDateInput","isValid","startOfMonth","__assign","cn","styles","mergeRefs","IconButton","CalendarMIcon","Popover"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../src/components/date-range-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\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';\nimport { isValid as dateFnsIsValid, startOfMonth } from 'date-fns';\n\nimport { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';\nimport { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';\nimport { usePeriod } 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 DATE_FORMAT,\n DATE_MASK,\n format,\n isCompleteDateInput,\n isValid,\n parseDateString,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type ConditionalProps =\n | {\n /**\n * Обработчик изменения значения\n */\n picker: true;\n\n /**\n * Обработчик закрытия календаря\n */\n onClose?: () => void;\n }\n | { picker?: false; onClose?: never };\n\nexport type DateRangeInputProps = Omit<InputProps, 'onChange'> &\n ConditionalProps & {\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 onChange?: (\n payload: { dateFrom?: Date; dateTo?: Date; value: string },\n event?: ChangeEvent<HTMLInputElement>,\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n payload: { dateFrom: Date; dateTo: Date; value: string },\n event?: ChangeEvent<HTMLInputElement>,\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\ntype GetDatesRet = { formattedValue: string; dateFrom?: Date; dateTo?: Date; dateArr: string[] };\n\nexport const DateRangeInput = React.forwardRef<HTMLInputElement, DateRangeInputProps>(\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 onClose,\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 view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const iconRef = useRef<HTMLButtonElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(defaultOpen);\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n const { selectedFrom, selectedTo, updatePeriod, resetPeriod, setStart, setEnd } = usePeriod(\n { onPeriodChange: handlePeriodChange },\n );\n\n useEffect(() => {\n if (value) {\n setCalendarPeriod(getDates(value));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setValue((prevValue) => {\n if (selectedFrom && selectedTo) {\n const from = parseTimestampToDate(selectedFrom);\n const to = parseTimestampToDate(selectedTo);\n\n return `${from} - ${to}`;\n }\n if (selectedFrom && prevValue.length < DATE_FORMAT.length) {\n return parseTimestampToDate(selectedFrom);\n }\n\n return prevValue;\n });\n }, [selectedFrom, selectedTo]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => {\n if (prevValue === newPropValue) {\n return prevValue;\n }\n\n const dates = getDates(newPropValue);\n\n setCalendarPeriod(dates);\n\n return dates.formattedValue;\n });\n }, [propValue]);\n\n function getDates(val: string): GetDatesRet {\n const formattedValue = format(val);\n\n const dateArr = formattedValue.split('-').map((v) => v.trim());\n const dateFrom = dateArr[0] ? parseDateString(dateArr[0]) : undefined;\n const dateTo = dateArr[1] ? parseDateString(dateArr[1]) : undefined;\n\n return { formattedValue, dateFrom, dateTo, dateArr };\n }\n\n function setCalendarPeriod({ dateFrom, dateTo }: GetDatesRet) {\n setStart(dateFrom?.getTime());\n setEnd(dateTo?.getTime());\n }\n\n function handlePeriodChange(from?: number, to?: number) {\n if (from && !to && value.length === DATE_MASK.length) {\n setValue(parseTimestampToDate(from));\n } else if (\n (!from && !to && value.length === DATE_FORMAT.length) ||\n (from === to && value.length === DATE_MASK.length)\n ) {\n setValue('');\n }\n\n const dateFrom = from ? new Date(from) : undefined;\n const dateTo = to ? new Date(to) : undefined;\n\n const newValue = ([from, to].filter(Boolean) as number[])\n .map((timestamp) => parseTimestampToDate(timestamp))\n .join(' - ');\n\n onChange?.({\n dateFrom,\n dateTo,\n value: newValue,\n });\n\n if (dateFrom && dateTo) {\n onComplete?.({\n dateFrom,\n dateTo,\n value: newValue,\n });\n }\n }\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\n }\n\n if (!open && event.target.tagName !== 'INPUT' && calendarRef.current) {\n calendarRef.current.focus();\n }\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n const target = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (\n calendarRef.current?.contains(target) === false &&\n inputRef.current?.contains(target) === false &&\n iconRef.current?.contains(target) === false\n ) {\n setOpen(false);\n\n if (onClose) {\n onClose();\n }\n }\n }\n };\n\n // eslint-disable-next-line complexity\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_MASK.length) return;\n\n // Позволяем вводить только цифры, точки, дефис и пробелы\n if (/[^\\d. -]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const hyphen = newValue.match(/\\-/g);\n\n // Не даем вводить больше, чем 4 точки и 1 дефис\n if ((dots && dots.length > 4) || (hyphen && hyphen.length > 1)) {\n return;\n }\n\n const { formattedValue, dateFrom, dateTo, dateArr } = getDates(newValue);\n\n if (!dateFrom && !dateTo) {\n resetPeriod();\n } else if (selectedFrom && formattedValue.length < DATE_FORMAT.length) {\n setStart();\n } else if (selectedFrom && selectedTo) {\n setEnd();\n } else if (\n dateFrom &&\n dateFnsIsValid(dateFrom) &&\n dateArr[0]?.length === DATE_FORMAT.length &&\n dateFrom.getTime() !== selectedFrom\n ) {\n setStart(dateFrom.getTime());\n } else if (\n dateTo &&\n dateFnsIsValid(dateTo) &&\n dateArr[1]?.length === DATE_FORMAT.length &&\n dateTo.getTime() !== selectedTo\n ) {\n setEnd(dateTo.getTime());\n }\n\n setValue(formattedValue);\n\n onChange?.({ dateFrom, dateTo, value: formattedValue }, event);\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue, dateArr[0], dateArr[1]);\n\n if (!valid) return;\n\n if (dateFrom && dateTo) {\n onComplete?.({ dateFrom, dateTo, value: formattedValue }, event);\n }\n }\n };\n\n const handleCalendarClose = () => {\n if (view === 'mobile' && onClose) {\n onClose();\n }\n\n setOpen(false);\n };\n\n const handleClear = () => {\n setValue('');\n resetPeriod();\n };\n\n const handleCalendarChange = (date?: number) => {\n updatePeriod(date);\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 const activeMonth =\n (selectedTo && startOfMonth(selectedTo)) ||\n (selectedFrom && startOfMonth(selectedFrom));\n\n return 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={handleCalendarClose}\n ref={calendarRef}\n defaultMonth={activeMonth || defaultMonth}\n selectedFrom={selectedFrom}\n selectedTo={selectedTo}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n };\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 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 ref={iconRef}\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","usePeriod","useEffect","parseTimestampToDate","DATE_FORMAT","useDidUpdateEffect","format","parseDateString","DATE_MASK","dateFnsIsValid","isCompleteDateInput","isValid","startOfMonth","__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-range-input__component_128jh {
18
+ .date-range-input__component_1ulhi {
19
19
  display: inline-block;
20
20
  outline: none;
21
21
  position: relative;
22
22
  }
23
- .date-range-input__calendarContainer_128jh {
23
+ .date-range-input__calendarContainer_1ulhi {
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-range-input__calendarContainer_128jh {
30
+ .date-range-input__calendarContainer_1ulhi {
31
31
  width: 100%;
32
32
  min-width: 288px;
33
33
  }
34
34
  }
35
- .date-range-input__calendarResponsive_128jh {
35
+ .date-range-input__calendarResponsive_1ulhi {
36
36
  width: var(--calendar-width);
37
37
  }
38
- .date-range-input__block_128jh {
38
+ .date-range-input__block_1ulhi {
39
39
  width: 100%;
40
40
  }
41
- .date-range-input__calendarIcon_128jh {
41
+ .date-range-input__calendarIcon_1ulhi {
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-range-input__component_128jh","calendarContainer":"date-range-input__calendarContainer_128jh","calendarResponsive":"date-range-input__calendarResponsive_128jh","block":"date-range-input__block_128jh","calendarIcon":"date-range-input__calendarIcon_128jh"};
5
+ var styles = {"component":"date-range-input__component_1ulhi","calendarContainer":"date-range-input__calendarContainer_1ulhi","calendarResponsive":"date-range-input__calendarResponsive_1ulhi","block":"date-range-input__block_1ulhi","calendarIcon":"date-range-input__calendarIcon_1ulhi"};
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-range-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,mCAAmC,CAAC,mBAAmB,CAAC,2CAA2C,CAAC,oBAAoB,CAAC,4CAA4C,CAAC,OAAO,CAAC,+BAA+B,CAAC,cAAc,CAAC,sCAAsC,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../../src/components/date-range-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,mCAAmC,CAAC,mBAAmB,CAAC,2CAA2C,CAAC,oBAAoB,CAAC,4CAA4C,CAAC,OAAO,CAAC,+BAA+B,CAAC,cAAc,CAAC,sCAAsC,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type ConditionalProps, type DateRangeInputProps } from './components/date-range-input';
3
- export declare type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps & {
3
+ export type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
6
6
  * @default 1024
@@ -11,7 +11,7 @@ export declare type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'v
11
11
  */
12
12
  client?: 'desktop' | 'mobile';
13
13
  };
14
- export declare type DateRangeInputMedia = 'desktop' | 'mobile';
14
+ export type DateRangeInputMedia = 'desktop' | 'mobile';
15
15
  /**
16
16
  * @deprecated
17
17
  * use UniversalDateInput instead
@@ -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 ConditionalProps = {
6
+ export type ConditionalProps = {
7
7
  /**
8
8
  * Обработчик изменения значения
9
9
  */
@@ -16,7 +16,7 @@ export declare type ConditionalProps = {
16
16
  picker?: false;
17
17
  onClose?: never;
18
18
  };
19
- export declare type DateRangeInputProps = Omit<InputProps, 'onChange'> & ConditionalProps & {
19
+ export type DateRangeInputProps = Omit<InputProps, 'onChange'> & ConditionalProps & {
20
20
  /**
21
21
  * Дополнительный класс
22
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../../src/components/date-range-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\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';\nimport { isValid as dateFnsIsValid, startOfMonth } from 'date-fns';\n\nimport { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';\nimport { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';\nimport { usePeriod } 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 DATE_FORMAT,\n DATE_MASK,\n format,\n isCompleteDateInput,\n isValid,\n parseDateString,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type ConditionalProps =\n | {\n /**\n * Обработчик изменения значения\n */\n picker: true;\n\n /**\n * Обработчик закрытия календаря\n */\n onClose?: () => void;\n }\n | { picker?: false; onClose?: never };\n\nexport type DateRangeInputProps = Omit<InputProps, 'onChange'> &\n ConditionalProps & {\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 onChange?: (\n payload: { dateFrom?: Date; dateTo?: Date; value: string },\n event?: ChangeEvent<HTMLInputElement>,\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n payload: { dateFrom: Date; dateTo: Date; value: string },\n event?: ChangeEvent<HTMLInputElement>,\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\ntype GetDatesRet = { formattedValue: string; dateFrom?: Date; dateTo?: Date; dateArr: string[] };\n\nexport const DateRangeInput = React.forwardRef<HTMLInputElement, DateRangeInputProps>(\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 onClose,\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 view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const iconRef = useRef<HTMLButtonElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(defaultOpen);\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n const { selectedFrom, selectedTo, updatePeriod, resetPeriod, setStart, setEnd } = usePeriod(\n { onPeriodChange: handlePeriodChange },\n );\n\n useEffect(() => {\n if (value) {\n setCalendarPeriod(getDates(value));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setValue((prevValue) => {\n if (selectedFrom && selectedTo) {\n const from = parseTimestampToDate(selectedFrom);\n const to = parseTimestampToDate(selectedTo);\n\n return `${from} - ${to}`;\n }\n if (selectedFrom && prevValue.length < DATE_FORMAT.length) {\n return parseTimestampToDate(selectedFrom);\n }\n\n return prevValue;\n });\n }, [selectedFrom, selectedTo]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => {\n if (prevValue === newPropValue) {\n return prevValue;\n }\n\n const dates = getDates(newPropValue);\n\n setCalendarPeriod(dates);\n\n return dates.formattedValue;\n });\n }, [propValue]);\n\n function getDates(val: string): GetDatesRet {\n const formattedValue = format(val);\n\n const dateArr = formattedValue.split('-').map((v) => v.trim());\n const dateFrom = dateArr[0] ? parseDateString(dateArr[0]) : undefined;\n const dateTo = dateArr[1] ? parseDateString(dateArr[1]) : undefined;\n\n return { formattedValue, dateFrom, dateTo, dateArr };\n }\n\n function setCalendarPeriod({ dateFrom, dateTo }: GetDatesRet) {\n setStart(dateFrom?.getTime());\n setEnd(dateTo?.getTime());\n }\n\n function handlePeriodChange(from?: number, to?: number) {\n if (from && !to && value.length === DATE_MASK.length) {\n setValue(parseTimestampToDate(from));\n } else if (\n (!from && !to && value.length === DATE_FORMAT.length) ||\n (from === to && value.length === DATE_MASK.length)\n ) {\n setValue('');\n }\n\n const dateFrom = from ? new Date(from) : undefined;\n const dateTo = to ? new Date(to) : undefined;\n\n const newValue = ([from, to].filter(Boolean) as number[])\n .map((timestamp) => parseTimestampToDate(timestamp))\n .join(' - ');\n\n onChange?.({\n dateFrom,\n dateTo,\n value: newValue,\n });\n\n if (dateFrom && dateTo) {\n onComplete?.({\n dateFrom,\n dateTo,\n value: newValue,\n });\n }\n }\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\n }\n\n if (!open && event.target.tagName !== 'INPUT' && calendarRef.current) {\n calendarRef.current.focus();\n }\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n const target = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (\n calendarRef.current?.contains(target) === false &&\n inputRef.current?.contains(target) === false &&\n iconRef.current?.contains(target) === false\n ) {\n setOpen(false);\n\n if (onClose) {\n onClose();\n }\n }\n }\n };\n\n // eslint-disable-next-line complexity\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_MASK.length) return;\n\n // Позволяем вводить только цифры, точки, дефис и пробелы\n if (/[^\\d. -]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const hyphen = newValue.match(/\\-/g);\n\n // Не даем вводить больше, чем 4 точки и 1 дефис\n if ((dots && dots.length > 4) || (hyphen && hyphen.length > 1)) {\n return;\n }\n\n const { formattedValue, dateFrom, dateTo, dateArr } = getDates(newValue);\n\n if (!dateFrom && !dateTo) {\n resetPeriod();\n } else if (selectedFrom && formattedValue.length < DATE_FORMAT.length) {\n setStart();\n } else if (selectedFrom && selectedTo) {\n setEnd();\n } else if (\n dateFrom &&\n dateFnsIsValid(dateFrom) &&\n dateArr[0]?.length === DATE_FORMAT.length &&\n dateFrom.getTime() !== selectedFrom\n ) {\n setStart(dateFrom.getTime());\n } else if (\n dateTo &&\n dateFnsIsValid(dateTo) &&\n dateArr[1]?.length === DATE_FORMAT.length &&\n dateTo.getTime() !== selectedTo\n ) {\n setEnd(dateTo.getTime());\n }\n\n setValue(formattedValue);\n\n onChange?.({ dateFrom, dateTo, value: formattedValue }, event);\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue, dateArr[0], dateArr[1]);\n\n if (!valid) return;\n\n if (dateFrom && dateTo) {\n onComplete?.({ dateFrom, dateTo, value: formattedValue }, event);\n }\n }\n };\n\n const handleCalendarClose = () => {\n if (view === 'mobile' && onClose) {\n onClose();\n }\n\n setOpen(false);\n };\n\n const handleClear = () => {\n setValue('');\n resetPeriod();\n };\n\n const handleCalendarChange = (date?: number) => {\n updatePeriod(date);\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 const activeMonth =\n (selectedTo && startOfMonth(selectedTo)) ||\n (selectedFrom && startOfMonth(selectedFrom));\n\n return 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={handleCalendarClose}\n ref={calendarRef}\n defaultMonth={activeMonth || defaultMonth}\n selectedFrom={selectedFrom}\n selectedTo={selectedTo}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n };\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 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 ref={iconRef}\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","usePeriod","useEffect","parseTimestampToDate","DATE_FORMAT","useDidUpdateEffect","format","parseDateString","DATE_MASK","dateFnsIsValid","isCompleteDateInput","isValid","startOfMonth","__assign","cn","styles","mergeRefs","IconButton","CalendarMIcon","Popover"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../../src/components/date-range-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\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';\nimport { isValid as dateFnsIsValid, startOfMonth } from 'date-fns';\n\nimport { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';\nimport { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';\nimport { usePeriod } 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 DATE_FORMAT,\n DATE_MASK,\n format,\n isCompleteDateInput,\n isValid,\n parseDateString,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type ConditionalProps =\n | {\n /**\n * Обработчик изменения значения\n */\n picker: true;\n\n /**\n * Обработчик закрытия календаря\n */\n onClose?: () => void;\n }\n | { picker?: false; onClose?: never };\n\nexport type DateRangeInputProps = Omit<InputProps, 'onChange'> &\n ConditionalProps & {\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 onChange?: (\n payload: { dateFrom?: Date; dateTo?: Date; value: string },\n event?: ChangeEvent<HTMLInputElement>,\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n payload: { dateFrom: Date; dateTo: Date; value: string },\n event?: ChangeEvent<HTMLInputElement>,\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\ntype GetDatesRet = { formattedValue: string; dateFrom?: Date; dateTo?: Date; dateArr: string[] };\n\nexport const DateRangeInput = React.forwardRef<HTMLInputElement, DateRangeInputProps>(\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 onClose,\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 view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const iconRef = useRef<HTMLButtonElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(defaultOpen);\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n const { selectedFrom, selectedTo, updatePeriod, resetPeriod, setStart, setEnd } = usePeriod(\n { onPeriodChange: handlePeriodChange },\n );\n\n useEffect(() => {\n if (value) {\n setCalendarPeriod(getDates(value));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setValue((prevValue) => {\n if (selectedFrom && selectedTo) {\n const from = parseTimestampToDate(selectedFrom);\n const to = parseTimestampToDate(selectedTo);\n\n return `${from} - ${to}`;\n }\n if (selectedFrom && prevValue.length < DATE_FORMAT.length) {\n return parseTimestampToDate(selectedFrom);\n }\n\n return prevValue;\n });\n }, [selectedFrom, selectedTo]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => {\n if (prevValue === newPropValue) {\n return prevValue;\n }\n\n const dates = getDates(newPropValue);\n\n setCalendarPeriod(dates);\n\n return dates.formattedValue;\n });\n }, [propValue]);\n\n function getDates(val: string): GetDatesRet {\n const formattedValue = format(val);\n\n const dateArr = formattedValue.split('-').map((v) => v.trim());\n const dateFrom = dateArr[0] ? parseDateString(dateArr[0]) : undefined;\n const dateTo = dateArr[1] ? parseDateString(dateArr[1]) : undefined;\n\n return { formattedValue, dateFrom, dateTo, dateArr };\n }\n\n function setCalendarPeriod({ dateFrom, dateTo }: GetDatesRet) {\n setStart(dateFrom?.getTime());\n setEnd(dateTo?.getTime());\n }\n\n function handlePeriodChange(from?: number, to?: number) {\n if (from && !to && value.length === DATE_MASK.length) {\n setValue(parseTimestampToDate(from));\n } else if (\n (!from && !to && value.length === DATE_FORMAT.length) ||\n (from === to && value.length === DATE_MASK.length)\n ) {\n setValue('');\n }\n\n const dateFrom = from ? new Date(from) : undefined;\n const dateTo = to ? new Date(to) : undefined;\n\n const newValue = ([from, to].filter(Boolean) as number[])\n .map((timestamp) => parseTimestampToDate(timestamp))\n .join(' - ');\n\n onChange?.({\n dateFrom,\n dateTo,\n value: newValue,\n });\n\n if (dateFrom && dateTo) {\n onComplete?.({\n dateFrom,\n dateTo,\n value: newValue,\n });\n }\n }\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\n }\n\n if (!open && event.target.tagName !== 'INPUT' && calendarRef.current) {\n calendarRef.current.focus();\n }\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n const target = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (\n calendarRef.current?.contains(target) === false &&\n inputRef.current?.contains(target) === false &&\n iconRef.current?.contains(target) === false\n ) {\n setOpen(false);\n\n if (onClose) {\n onClose();\n }\n }\n }\n };\n\n // eslint-disable-next-line complexity\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_MASK.length) return;\n\n // Позволяем вводить только цифры, точки, дефис и пробелы\n if (/[^\\d. -]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const hyphen = newValue.match(/\\-/g);\n\n // Не даем вводить больше, чем 4 точки и 1 дефис\n if ((dots && dots.length > 4) || (hyphen && hyphen.length > 1)) {\n return;\n }\n\n const { formattedValue, dateFrom, dateTo, dateArr } = getDates(newValue);\n\n if (!dateFrom && !dateTo) {\n resetPeriod();\n } else if (selectedFrom && formattedValue.length < DATE_FORMAT.length) {\n setStart();\n } else if (selectedFrom && selectedTo) {\n setEnd();\n } else if (\n dateFrom &&\n dateFnsIsValid(dateFrom) &&\n dateArr[0]?.length === DATE_FORMAT.length &&\n dateFrom.getTime() !== selectedFrom\n ) {\n setStart(dateFrom.getTime());\n } else if (\n dateTo &&\n dateFnsIsValid(dateTo) &&\n dateArr[1]?.length === DATE_FORMAT.length &&\n dateTo.getTime() !== selectedTo\n ) {\n setEnd(dateTo.getTime());\n }\n\n setValue(formattedValue);\n\n onChange?.({ dateFrom, dateTo, value: formattedValue }, event);\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue, dateArr[0], dateArr[1]);\n\n if (!valid) return;\n\n if (dateFrom && dateTo) {\n onComplete?.({ dateFrom, dateTo, value: formattedValue }, event);\n }\n }\n };\n\n const handleCalendarClose = () => {\n if (view === 'mobile' && onClose) {\n onClose();\n }\n\n setOpen(false);\n };\n\n const handleClear = () => {\n setValue('');\n resetPeriod();\n };\n\n const handleCalendarChange = (date?: number) => {\n updatePeriod(date);\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 const activeMonth =\n (selectedTo && startOfMonth(selectedTo)) ||\n (selectedFrom && startOfMonth(selectedFrom));\n\n return 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={handleCalendarClose}\n ref={calendarRef}\n defaultMonth={activeMonth || defaultMonth}\n selectedFrom={selectedFrom}\n selectedTo={selectedTo}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n };\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 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 ref={iconRef}\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","usePeriod","useEffect","parseTimestampToDate","DATE_FORMAT","useDidUpdateEffect","format","parseDateString","DATE_MASK","dateFnsIsValid","isCompleteDateInput","isValid","startOfMonth","__assign","cn","styles","mergeRefs","IconButton","CalendarMIcon","Popover"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwKa,IAAA,cAAc,GAAGA,sBAAK,CAAC,UAAU,CAC1C,UACI,EA8BC,EACD,GAAG,EAAA;;;AA9BC,IAAA,IAAA,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAwB,GAAA,EAAA,CAAA,gBAAA,EAAxB,gBAAgB,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EACxB,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAA,GAAA,EAAA,CAAA,YAAiB,EAAjB,YAAY,GAAG,EAAA,KAAA,MAAA,GAAA,EAAE,KAAA,EACV,SAAS,GAAA,EAAA,CAAA,KAAA,EAChB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,UAAU,gBAAA,EACV,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,cAAc,oBAAA,EACd,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,EAAgC,GAAA,EAAA,CAAA,eAAA,EAAhC,eAAe,GAAA,EAAA,KAAA,MAAA,GAAG,cAAc,GAAA,EAAA,EAChC,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAA,GAAA,EAAA,CAAA,aAAkB,EAAlB,aAAa,mBAAG,EAAE,GAAA,EAAA,EAClB,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,EAA+B,GAAA,EAAA,CAAA,OAAA,EAA/B,OAAO,GAAG,EAAA,KAAA,MAAA,GAAA,aAAa,CAAC,OAAO,GAAA,EAAA,EAC/B,EAA+B,GAAA,EAAA,CAAA,OAAA,EAA/B,OAAO,GAAG,EAAA,KAAA,MAAA,GAAA,aAAa,CAAC,OAAO,GAAA,EAAA,EAC/B,EAAqC,GAAA,EAAA,CAAA,OAAA,EAArC,OAAO,GAAG,EAAA,KAAA,MAAA,GAAA,aAAa,CAAC,OAAO,IAAI,EAAE,GAAA,EAAA,EACrC,cAAmC,EAAnC,MAAM,GAAG,EAAA,KAAA,MAAA,GAAA,aAAa,CAAC,MAAM,IAAI,EAAE,KAAA,EACnC,EAAA,GAAA,EAAA,CAAA,WAAmB,EAAnB,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,KAAK,GAAA,EAAA,EACnB,YAAgB,EAAhB,IAAI,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,GAAA,EAAA,EACb,SAAS,GAAAC,YAAA,CAAA,EAAA,EA7BhB,qYA8BC,CADe;AAIhB,IAAA,IAAM,QAAQ,GAAGC,YAAM,CAAmB,IAAI,CAAC;AAC/C,IAAA,IAAM,OAAO,GAAGA,YAAM,CAAoB,IAAI,CAAC;AAC/C,IAAA,IAAM,WAAW,GAAGA,YAAM,CAAiB,IAAI,CAAC;AAE1C,IAAA,IAAA,EAAoB,GAAAC,cAAQ,CAAC,SAAS,IAAI,YAAY,CAAC,EAAtD,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,QAAuC;IACvD,IAAA,EAAA,GAAkBA,cAAQ,CAAC,WAAW,CAAC,EAAtC,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,OAAO,GAAA,EAAA,CAAA,CAAA,CAAyB;AAE7C,IAAA,IAAM,aAAa,GAAG,QAAQ,IAAI,QAAQ;IAC1C,IAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;AAEzD,IAAA,IAAM,kBAAkB,GAAG,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,MAAA,GAAA,MAAA,GAAA,aAAa,CAAE,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;IAEtD,IAAA,EAAA,GAA4EC,gBAAS,CACvF,EAAE,cAAc,EAAE,kBAAkB,EAAE,CACzC,EAFO,YAAY,GAAA,EAAA,CAAA,YAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,YAAY,GAAA,EAAA,CAAA,YAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAE5E;AAED,IAAAC,eAAS,CAAC,YAAA;QACN,IAAI,KAAK,EAAE;AACP,YAAA,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;;KAGzC,EAAE,EAAE,CAAC;AAEN,IAAAA,eAAS,CAAC,YAAA;QACN,QAAQ,CAAC,UAAC,SAAS,EAAA;AACf,YAAA,IAAI,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAA,IAAM,IAAI,GAAGC,2BAAoB,CAAC,YAAY,CAAC;AAC/C,gBAAA,IAAM,EAAE,GAAGA,2BAAoB,CAAC,UAAU,CAAC;AAE3C,gBAAA,OAAO,EAAG,CAAA,MAAA,CAAA,IAAI,EAAM,KAAA,CAAA,CAAA,MAAA,CAAA,EAAE,CAAE;;YAE5B,IAAI,YAAY,IAAI,SAAS,CAAC,MAAM,GAAGC,kBAAW,CAAC,MAAM,EAAE;AACvD,gBAAA,OAAOD,2BAAoB,CAAC,YAAY,CAAC;;AAG7C,YAAA,OAAO,SAAS;AACpB,SAAC,CAAC;AACN,KAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAE9B,IAAAE,wBAAkB,CAAC,YAAA;AACf,QAAA,IAAM,YAAY,GAAG,SAAS,IAAI,EAAE;QAEpC,QAAQ,CAAC,UAAC,SAAS,EAAA;AACf,YAAA,IAAI,SAAS,KAAK,YAAY,EAAE;AAC5B,gBAAA,OAAO,SAAS;;AAGpB,YAAA,IAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;YAEpC,iBAAiB,CAAC,KAAK,CAAC;YAExB,OAAO,KAAK,CAAC,cAAc;AAC/B,SAAC,CAAC;AACN,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAEf,SAAS,QAAQ,CAAC,GAAW,EAAA;AACzB,QAAA,IAAM,cAAc,GAAGC,aAAM,CAAC,GAAG,CAAC;QAElC,IAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,IAAI,EAAE,CAAA,EAAA,CAAC;QAC9D,IAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAGC,sBAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;QACrE,IAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAGA,sBAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;AAEnE,QAAA,OAAO,EAAE,cAAc,EAAA,cAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,MAAM,EAAA,MAAA,EAAE,OAAO,EAAA,OAAA,EAAE;;IAGxD,SAAS,iBAAiB,CAAC,EAAiC,EAAA;YAA/B,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAA;QACzC,QAAQ,CAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,OAAO,EAAE,CAAC;;AAG7B,IAAA,SAAS,kBAAkB,CAAC,IAAa,EAAE,EAAW,EAAA;AAClD,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,KAAKC,gBAAS,CAAC,MAAM,EAAE;AAClD,YAAA,QAAQ,CAACL,2BAAoB,CAAC,IAAI,CAAC,CAAC;;AACjC,aAAA,IACH,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,KAAKC,kBAAW,CAAC,MAAM;AACpD,aAAC,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,KAAKI,gBAAS,CAAC,MAAM,CAAC,EACpD;YACE,QAAQ,CAAC,EAAE,CAAC;;AAGhB,QAAA,IAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS;AAClD,QAAA,IAAM,MAAM,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS;QAE5C,IAAM,QAAQ,GAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;aACtC,GAAG,CAAC,UAAC,SAAS,EAAK,EAAA,OAAAL,2BAAoB,CAAC,SAAS,CAAC,CAA/B,EAA+B;aAClD,IAAI,CAAC,KAAK,CAAC;AAEhB,QAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAG;AACP,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,MAAM,EAAA,MAAA;AACN,YAAA,KAAK,EAAE,QAAQ;AAClB,SAAA,CAAC;AAEF,QAAA,IAAI,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,MAAA,GAAA,MAAA,GAAA,UAAU,CAAG;AACT,gBAAA,QAAQ,EAAA,QAAA;AACR,gBAAA,MAAM,EAAA,MAAA;AACN,gBAAA,KAAK,EAAE,QAAQ;AAClB,aAAA,CAAC;;;IAIV,IAAM,uBAAuB,GAAG,UAAC,KAAiC,EAAA;AAC9D,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,IAAI,MAAM,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC;;AAGjB,YAAA,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE;AAClE,gBAAA,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE;;;AAGvC,KAAC;IAED,IAAM,UAAU,GAAG,UAAC,KAAiC,EAAA;;AACjD,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,IAAM,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAgB;YAE7E,IACI,CAAA,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,MAAM,CAAC,MAAK,KAAK;gBAC/C,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,MAAM,CAAC,MAAK,KAAK;AAC5C,gBAAA,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,MAAM,CAAC,MAAK,KAAK,EAC7C;gBACE,OAAO,CAAC,KAAK,CAAC;gBAEd,IAAI,OAAO,EAAE;AACT,oBAAA,OAAO,EAAE;;;;AAIzB,KAAC;;IAGD,IAAM,YAAY,GAAG,UAAC,KAAoC,EAAA;;AAC9C,QAAA,IAAO,QAAQ,GAAK,KAAK,CAAC,MAAM,MAAjB;AAEvB,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAGK,gBAAS,CAAC,MAAM;YAAE;;AAGxC,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3B;;QAGJ,IAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,IAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;;QAGpC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YAC5D;;AAGE,QAAA,IAAA,KAAgD,QAAQ,CAAC,QAAQ,CAAC,EAAhE,cAAc,GAAA,EAAA,CAAA,cAAA,EAAE,QAAQ,cAAA,EAAE,MAAM,YAAA,EAAE,OAAO,aAAuB;AAExE,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE;AACtB,YAAA,WAAW,EAAE;;aACV,IAAI,YAAY,IAAI,cAAc,CAAC,MAAM,GAAGJ,kBAAW,CAAC,MAAM,EAAE;AACnE,YAAA,QAAQ,EAAE;;AACP,aAAA,IAAI,YAAY,IAAI,UAAU,EAAE;AACnC,YAAA,MAAM,EAAE;;AACL,aAAA,IACH,QAAQ;YACRK,eAAc,CAAC,QAAQ,CAAC;YACxB,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,MAAM,MAAKL,kBAAW,CAAC,MAAM;AACzC,YAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,YAAY,EACrC;AACE,YAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;;AACzB,aAAA,IACH,MAAM;YACNK,eAAc,CAAC,MAAM,CAAC;YACtB,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,MAAM,MAAKL,kBAAW,CAAC,MAAM;AACzC,YAAA,MAAM,CAAC,OAAO,EAAE,KAAK,UAAU,EACjC;AACE,YAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;;QAG5B,QAAQ,CAAC,cAAc,CAAC;AAExB,QAAA,QAAQ,aAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAG,EAAE,QAAQ,EAAA,QAAA,EAAE,MAAM,EAAA,MAAA,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,CAAC;AAE9D,QAAA,IAAIM,0BAAmB,CAAC,cAAc,CAAC,EAAE;AACrC,YAAA,IAAM,KAAK,GAAGC,cAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7D,YAAA,IAAI,CAAC,KAAK;gBAAE;AAEZ,YAAA,IAAI,QAAQ,IAAI,MAAM,EAAE;AACpB,gBAAA,UAAU,aAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAG,EAAE,QAAQ,EAAA,QAAA,EAAE,MAAM,EAAA,MAAA,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,CAAC;;;AAG5E,KAAC;AAED,IAAA,IAAM,mBAAmB,GAAG,YAAA;AACxB,QAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,EAAE;AAC9B,YAAA,OAAO,EAAE;;QAGb,OAAO,CAAC,KAAK,CAAC;AAClB,KAAC;AAED,IAAA,IAAM,WAAW,GAAG,YAAA;QAChB,QAAQ,CAAC,EAAE,CAAC;AACZ,QAAA,WAAW,EAAE;AACjB,KAAC;IAED,IAAM,oBAAoB,GAAG,UAAC,IAAa,EAAA;QACvC,YAAY,CAAC,IAAI,CAAC;AACtB,KAAC;IAED,IAAM,8BAA8B,GAAG,UAAC,KAAiC,EAAA;;QAErE,KAAK,CAAC,cAAc,EAAE;AAC1B,KAAC;AAED,IAAA,IAAM,qBAAqB,GAAG,YAAA;AAC1B,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC;QAExB,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE;AACxC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;;AAEhC,KAAC;AAED,IAAA,IAAM,cAAc,GAAG,YAAA;QACnB,IAAM,WAAW,GACb,CAAC,UAAU,IAAIC,oBAAY,CAAC,UAAU,CAAC;AACvC,aAAC,YAAY,IAAIA,oBAAY,CAAC,YAAY,CAAC,CAAC;QAEhD,OAAO,QAAQ;;QAEXf,sBAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,WAAW,EAAE,8BAA8B,EAAA;AAC5C,YAAAA,sBAAA,CAAA,aAAA,CAAC,QAAQ,EAAAgB,cAAA,CAAA,EAAA,EACD,aAAa,EAAA,EACjB,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,WAAW,IAAI,YAAY,EACzC,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EAAA,CAAA,CAChB,CACA,IACN,IAAI;AACZ,KAAC;IAED,QACIhB,sBACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEiB,mBAAE,CAACC,uBAAM,CAAC,SAAS,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACrC,YAAA,EAAA,CAACA,uBAAM,CAAC,KAAK,CAAA,GAAG,KAAK;AACvB,YAAA,EAAA,EAAA,EACF,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,uBAAuB,EAC5D,MAAM,EAAE,UAAU,EAAA;AAEjB,QAAA,cAAc,IACXlB,qCAAC,cAAc,EAAAgB,cAAA,CAAA,EACX,YAAY,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,EACpC,EAAA,SAAS,EACb,EAAA,KAAK,EAAE,KAAK,EACZ,GAAG,EAAEG,0BAAS,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAC/B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,WAAW,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EACPnB,sBAAC,CAAA,aAAA,CAAAA,sBAAK,CAAC,QAAQ,EAAA,IAAA;gBACV,WAAW;AACX,gBAAA,gBAAgB;;AAEb,gBAAAA,sBAAA,CAAA,aAAA,CAACoB,eAAU,EACP,EAAA,SAAS,EAAEF,uBAAM,CAAC,YAAY,EAC9B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,qBAAqB,EAC1D,IAAI,EAAEG,2BAAa,EACnB,IAAI,EAAE,EAAE,EAAA,CACV,CACL,CACY,EAAA,CAAA,CAEvB,IACF,IAAI;QACP,MAAM;AACH,aAAC,IAAI,KAAK,SAAS,IACfrB,sBAAA,CAAA,aAAA,CAACsB,cAAO,EAAA,EACJ,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,QAAQ,CAAC,OAAsB,EAC9C,eAAe,EAAEL,mBAAE,CAACC,uBAAM,CAAC,iBAAiB,GAAA,EAAA,GAAA,EAAA;AACxC,oBAAA,EAAA,CAACA,uBAAM,CAAC,kBAAkB,CAAA,GAAG,kBAAkB;AACjD,oBAAA,EAAA,EAAA,EACF,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,cAAc,EAAE,KAAK,EACrB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,EAEpB,EAAA,cAAc,EAAE,CACX,KAEV,cAAc,EAAE,CACnB,CAAC,CACJ;AAEd,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type ConditionalProps, type DateRangeInputProps } from '../components/date-range-input';
3
- export declare type DateRangeInputDesktopProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
3
+ export type DateRangeInputDesktopProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
4
4
  /**
5
5
  * @deprecated
6
6
  * use UniversalDateInput instead
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type ConditionalProps, type DateRangeInputProps } from '../components/date-range-input';
3
- export declare type DateRangeInputMobileProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
3
+ export type DateRangeInputMobileProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
4
4
  /**
5
5
  * @deprecated
6
6
  * use UniversalDateInput instead
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sources":["../../src/utils/format.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\n\nimport { isValid as dateFnsIsValid, parse } from 'date-fns';\n\nexport const DATE_FORMAT = 'dd.MM.yyyy';\nexport const DATE_MASK = [\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n '-',\n ' ',\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n];\n\nexport const isCompleteDateInput = (input: string) => input.length === DATE_MASK.length;\n\nexport const parseDateString = (value: string, dateFormat = DATE_FORMAT) =>\n parse(value, dateFormat, new Date());\n\nexport const isValid = (inputValue: string, dateFrom: string, dateTo: string) =>\n !inputValue ||\n (isCompleteDateInput(inputValue) &&\n dateFnsIsValid(parseDateString(dateFrom)) &&\n dateFnsIsValid(parseDateString(dateTo)));\n\nexport const format = (value: string): string =>\n value\n .replace(/^(\\d\\d)(\\d)$/, '$1.$2') // 121 => 12.1\n .replace(/^(\\d\\d)\\.(\\d\\d)(\\d)$/, '$1.$2.$3') // 12.122 => 12.12.2\n .replace(/^(\\d\\d)\\d\\.(.*)/, '$1.$2') // 123.12.2005 => 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d)\\d\\.(.*)/, '$1.$2') // 12.123.2005 => 12.12.2005\n .replace(/\\.$/, '') // 12. => 12\n .replace(/\\ $/, '') // 1 2 => 12\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)(\\d) - (\\d.*)/, '$1 - $3') // 12.12.20051 - 12.12.200 => 12.12.2005 - 12.12.200\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) (\\d)- (\\d.*)/, '$1 - $3') // 12.12.2005 1- 12.12.200 => 12.12.2005 - 12.12.200\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) -(\\d) (\\d.*)/, '$1 - $3') // 12.12.2005 -1 12.12.200 => 12.12.2005 - 12.12.200\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) - (\\d)(\\d\\d.\\d\\d.\\d\\d\\d)/, '$1 - $3') // 12.12.2005 - 112.12.200 => 12.12.2005 - 12.12.200\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) - (\\d)(\\d\\d.\\d.\\d\\d\\d\\d)/, '$1 - $3') // 12.12.2005 - 112.1.2001 => 12.12.2005 - 12.1.2001\n .replace(/^(\\d\\d\\.\\d\\d)(\\d\\d\\d\\d)/, '$1.$2') // 12.122005 => 12.12.2005\n .replace(/^(\\d\\d)(\\d\\d\\.\\d\\d\\d\\d)/, '$1.$2') // 1212.2005 => 12.12.2005\n .replace(/^(\\d\\d)(\\d.*)/, '$1.$2') // 1212 => 12.12\n .replace(/^(\\d\\d.\\d\\d)(\\d.*)/, '$1.$2') // 12.122 => 12.12.2\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)(\\d)/, '$1 - $2') // 12.12.20056 => 12.12.2005 - 6\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) - (\\d\\d)(\\d)/, '$1 - $2.$3') // 12.12.2005 - 123 => 12.12.2005 - 12.3\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) - (\\d\\d).(\\d\\d)(\\d)/, '$1 - $2.$3.$4') // 12.12.2005 - 12.123 => 12.12.2005 - 12.12.3\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)- (\\d.*)/, '$1 - $2') // 12.12.2005- 12.12.2005 => 12.12.2005 - 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) -(\\d.*)/, '$1 - $2') // 12.12.2005 -12.12.2005 => 12.12.2005 - 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) -/, '$1') // 12.12.2005 - => 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) (\\d.*)/, '$1 - $2') // 12.12.2005 12.12.2005 => 12.12.2005 - 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) {2}(\\d.*)/, '$1 - $2') // 12.12.2005 12.12.2005 => 12.12.2005 - 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)-/, '$1') // 12.12.2005- => 12.12.2005\n .replace(/^(\\d\\.\\d\\d\\.\\d\\d\\d\\d)([0-9]*)/, '$1') // 1.12.2005123123 => 1.12.2005\n .replace(/^(\\d\\d\\.\\d\\.\\d\\d\\d\\d)([0-9]*)/, '$1') // 01.2.20055125125 => 01.2.2005\n .replace(/^(\\d)\\.(\\d\\d)([0-9]*)\\.(\\d\\d\\d\\d)/, '$1.$2.$4') // 1.123123.2005 => 1.12.2005\n .replace(/^(\\d\\.\\d\\.\\d\\d\\d\\d)([0-9]*)/, '$1') // 1.2.20055125125 => 1.2.2005\n .replace(/^()\\.(\\d)\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3'); // .2.2005123123 => .2.2005\n\nexport const parseTimestampToDate = (timestamp: number): string => {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n\n let month: number | string = date.getMonth() + 1;\n let day: number | string = date.getDate();\n\n if (month < 10) {\n month = `0${month}`;\n }\n if (day < 10) {\n day = `0${day}`;\n }\n\n return `${day}.${month}.${year}`;\n};\n"],"names":["parse","dateFnsIsValid"],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sources":["../../src/utils/format.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\n\nimport { isValid as dateFnsIsValid, parse } from 'date-fns';\n\nexport const DATE_FORMAT = 'dd.MM.yyyy';\nexport const DATE_MASK = [\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n '-',\n ' ',\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n '.',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n];\n\nexport const isCompleteDateInput = (input: string) => input.length === DATE_MASK.length;\n\nexport const parseDateString = (value: string, dateFormat = DATE_FORMAT) =>\n parse(value, dateFormat, new Date());\n\nexport const isValid = (inputValue: string, dateFrom: string, dateTo: string) =>\n !inputValue ||\n (isCompleteDateInput(inputValue) &&\n dateFnsIsValid(parseDateString(dateFrom)) &&\n dateFnsIsValid(parseDateString(dateTo)));\n\nexport const format = (value: string): string =>\n value\n .replace(/^(\\d\\d)(\\d)$/, '$1.$2') // 121 => 12.1\n .replace(/^(\\d\\d)\\.(\\d\\d)(\\d)$/, '$1.$2.$3') // 12.122 => 12.12.2\n .replace(/^(\\d\\d)\\d\\.(.*)/, '$1.$2') // 123.12.2005 => 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d)\\d\\.(.*)/, '$1.$2') // 12.123.2005 => 12.12.2005\n .replace(/\\.$/, '') // 12. => 12\n .replace(/\\ $/, '') // 1 2 => 12\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)(\\d) - (\\d.*)/, '$1 - $3') // 12.12.20051 - 12.12.200 => 12.12.2005 - 12.12.200\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) (\\d)- (\\d.*)/, '$1 - $3') // 12.12.2005 1- 12.12.200 => 12.12.2005 - 12.12.200\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) -(\\d) (\\d.*)/, '$1 - $3') // 12.12.2005 -1 12.12.200 => 12.12.2005 - 12.12.200\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) - (\\d)(\\d\\d.\\d\\d.\\d\\d\\d)/, '$1 - $3') // 12.12.2005 - 112.12.200 => 12.12.2005 - 12.12.200\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) - (\\d)(\\d\\d.\\d.\\d\\d\\d\\d)/, '$1 - $3') // 12.12.2005 - 112.1.2001 => 12.12.2005 - 12.1.2001\n .replace(/^(\\d\\d\\.\\d\\d)(\\d\\d\\d\\d)/, '$1.$2') // 12.122005 => 12.12.2005\n .replace(/^(\\d\\d)(\\d\\d\\.\\d\\d\\d\\d)/, '$1.$2') // 1212.2005 => 12.12.2005\n .replace(/^(\\d\\d)(\\d.*)/, '$1.$2') // 1212 => 12.12\n .replace(/^(\\d\\d.\\d\\d)(\\d.*)/, '$1.$2') // 12.122 => 12.12.2\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)(\\d)/, '$1 - $2') // 12.12.20056 => 12.12.2005 - 6\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) - (\\d\\d)(\\d)/, '$1 - $2.$3') // 12.12.2005 - 123 => 12.12.2005 - 12.3\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) - (\\d\\d).(\\d\\d)(\\d)/, '$1 - $2.$3.$4') // 12.12.2005 - 12.123 => 12.12.2005 - 12.12.3\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)- (\\d.*)/, '$1 - $2') // 12.12.2005- 12.12.2005 => 12.12.2005 - 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) -(\\d.*)/, '$1 - $2') // 12.12.2005 -12.12.2005 => 12.12.2005 - 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) -/, '$1') // 12.12.2005 - => 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) (\\d.*)/, '$1 - $2') // 12.12.2005 12.12.2005 => 12.12.2005 - 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d) {2}(\\d.*)/, '$1 - $2') // 12.12.2005 12.12.2005 => 12.12.2005 - 12.12.2005\n .replace(/^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)-/, '$1') // 12.12.2005- => 12.12.2005\n .replace(/^(\\d\\.\\d\\d\\.\\d\\d\\d\\d)([0-9]*)/, '$1') // 1.12.2005123123 => 1.12.2005\n .replace(/^(\\d\\d\\.\\d\\.\\d\\d\\d\\d)([0-9]*)/, '$1') // 01.2.20055125125 => 01.2.2005\n .replace(/^(\\d)\\.(\\d\\d)([0-9]*)\\.(\\d\\d\\d\\d)/, '$1.$2.$4') // 1.123123.2005 => 1.12.2005\n .replace(/^(\\d\\.\\d\\.\\d\\d\\d\\d)([0-9]*)/, '$1') // 1.2.20055125125 => 1.2.2005\n .replace(/^()\\.(\\d)\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3'); // .2.2005123123 => .2.2005\n\nexport const parseTimestampToDate = (timestamp: number): string => {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n\n let month: number | string = date.getMonth() + 1;\n let day: number | string = date.getDate();\n\n if (month < 10) {\n month = `0${month}`;\n }\n if (day < 10) {\n day = `0${day}`;\n }\n\n return `${day}.${month}.${year}`;\n};\n"],"names":["parse","dateFnsIsValid"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type ConditionalProps, type DateRangeInputProps } from '../components/date-range-input';
3
- export declare type DateRangeInputDesktopProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
3
+ export type DateRangeInputDesktopProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
4
4
  /**
5
5
  * @deprecated
6
6
  * use UniversalDateInput instead
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type ConditionalProps, type DateRangeInputProps } from './components/date-range-input';
3
- export declare type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps & {
3
+ export type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps & {
4
4
  /**
5
5
  * Контрольная точка, с нее начинается desktop версия
6
6
  * @default 1024
@@ -11,7 +11,7 @@ export declare type DateRangeInputResponsiveProps = Omit<DateRangeInputProps, 'v
11
11
  */
12
12
  client?: 'desktop' | 'mobile';
13
13
  };
14
- export declare type DateRangeInputMedia = 'desktop' | 'mobile';
14
+ export type DateRangeInputMedia = 'desktop' | 'mobile';
15
15
  /**
16
16
  * @deprecated
17
17
  * use UniversalDateInput instead
@@ -3,7 +3,7 @@ import { type CalendarDesktopProps } from '@alfalab/core-components-calendar/esm
3
3
  import { type CalendarMobileProps } from '@alfalab/core-components-calendar/esm/mobile';
4
4
  import { type InputProps } from '@alfalab/core-components-input/esm';
5
5
  import { type PopoverProps } from '@alfalab/core-components-popover/esm';
6
- export declare type ConditionalProps = {
6
+ export type ConditionalProps = {
7
7
  /**
8
8
  * Обработчик изменения значения
9
9
  */
@@ -16,7 +16,7 @@ export declare type ConditionalProps = {
16
16
  picker?: false;
17
17
  onClose?: never;
18
18
  };
19
- export declare type DateRangeInputProps = Omit<InputProps, 'onChange'> & ConditionalProps & {
19
+ export type DateRangeInputProps = Omit<InputProps, 'onChange'> & ConditionalProps & {
20
20
  /**
21
21
  * Дополнительный класс
22
22
  */