@alfalab/core-components-date-range-input 4.0.1 → 4.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-range-input/Component.d.ts +5 -5
  4. package/components/date-range-input/Component.js +3 -1
  5. package/components/date-range-input/Component.js.map +1 -1
  6. package/components/date-range-input/index.css +8 -8
  7. package/components/date-range-input/index.module.css.js +1 -1
  8. package/components/date-range-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-range-input/Component.d.ts +5 -5
  12. package/cssm/components/date-range-input/Component.js +3 -1
  13. package/cssm/components/date-range-input/Component.js.map +1 -1
  14. package/cssm/components/date-range-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-range-input/Component.d.ts +5 -5
  24. package/esm/components/date-range-input/Component.js +3 -1
  25. package/esm/components/date-range-input/Component.js.map +1 -1
  26. package/esm/components/date-range-input/index.css +8 -8
  27. package/esm/components/date-range-input/index.module.css.js +1 -1
  28. package/esm/components/date-range-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-range-input/Component.d.ts +5 -5
  38. package/modern/components/date-range-input/Component.js +3 -1
  39. package/modern/components/date-range-input/Component.js.map +1 -1
  40. package/modern/components/date-range-input/index.css +8 -8
  41. package/modern/components/date-range-input/index.module.css.js +1 -1
  42. package/modern/components/date-range-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-range-input/Component.d.ts +5 -5
  50. package/moderncssm/components/date-range-input/Component.js +3 -1
  51. package/moderncssm/components/date-range-input/Component.js.map +1 -1
  52. package/moderncssm/components/date-range-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-range-input/Component.tsx +9 -8
  60. package/src/components/date-range-input/index.module.css +1 -1
  61. package/src/desktop/Component.desktop.tsx +2 -2
  62. package/src/mobile/Component.mobile.tsx +2 -2
@@ -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 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';\nimport dateFnsIsValid from 'date-fns/isValid';\nimport startOfMonth from 'date-fns/startOfMonth';\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 { 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 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\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 {picker && (\n <IconButton\n className={styles.calendarIcon}\n ref={iconRef}\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":[],"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 dateFnsIsValid from 'date-fns/isValid';\nimport startOfMonth from 'date-fns/startOfMonth';\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\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 {picker && (\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='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":[],"mappings":"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"}
@@ -1,32 +1,40 @@
1
1
  :root {
2
2
  --calendar-width: 344px;
3
3
  }
4
+
4
5
  :root {
5
6
  --calendar-popover-border-radius: var(--border-radius-8);
6
7
  }
8
+
7
9
  .component {
8
10
  display: inline-block;
9
11
  outline: none;
10
12
  position: relative;
11
13
  }
14
+
12
15
  .calendarContainer {
13
16
  display: inline-block;
14
17
  box-sizing: border-box;
15
18
  border-radius: var(--calendar-popover-border-radius);
16
- border: 1px solid var(--color-light-neutral-300)
19
+ border: 1px solid var(--color-light-neutral-300);
17
20
  }
21
+
18
22
  @media (max-width: 374px) {
23
+
19
24
  .calendarContainer {
20
25
  width: 100%;
21
- min-width: 288px
26
+ min-width: 288px;
22
27
  }
23
28
  }
29
+
24
30
  .calendarResponsive {
25
31
  width: var(--calendar-width);
26
32
  }
33
+
27
34
  .block {
28
35
  width: 100%;
29
36
  }
37
+
30
38
  .calendarIcon {
31
39
  margin-right: var(--gap-12-neg);
32
40
  height: 100%;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ConditionalProps, DateRangeInputProps } from '../components/date-range-input';
2
+ import { type ConditionalProps, type DateRangeInputProps } from '../components/date-range-input';
3
3
  export declare type DateRangeInputDesktopProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
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 {\n ConditionalProps,\n DateRangeInput,\n DateRangeInputProps,\n} from '../components/date-range-input';\n\nexport type DateRangeInputDesktopProps = Omit<\n DateRangeInputProps,\n 'view' | 'picker' | 'onClose' | 'InputComponent'\n> &\n ConditionalProps;\n\n/**\n * @deprecated\n * use UniversalDateInput instead\n */\nexport const DateRangeInputDesktop = forwardRef<HTMLInputElement, DateRangeInputDesktopProps>(\n (props, ref) => (\n <DateRangeInput\n InputComponent={InputDesktop}\n Calendar={CalendarDesktop}\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":[],"mappings":";;;;;AAmBA;;;AAGG;AACI,MAAM,qBAAqB,GAAG,UAAU,CAC3C,CAAC,KAAK,EAAE,GAAG,MACP,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,cAAc,EAAE,YAAY,EAC5B,QAAQ,EAAE,eAAe,EAAA,GACrB,KAAK,EACT,GAAG,EAAE,GAAG,EACV,CAAA,CACL;;;;"}
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 {\n type ConditionalProps,\n DateRangeInput,\n type DateRangeInputProps,\n} from '../components/date-range-input';\n\nexport type DateRangeInputDesktopProps = Omit<\n DateRangeInputProps,\n 'view' | 'picker' | 'onClose' | 'InputComponent'\n> &\n ConditionalProps;\n\n/**\n * @deprecated\n * use UniversalDateInput instead\n */\nexport const DateRangeInputDesktop = forwardRef<HTMLInputElement, DateRangeInputDesktopProps>(\n (props, ref) => (\n <DateRangeInput\n InputComponent={InputDesktop}\n Calendar={CalendarDesktop}\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":[],"mappings":";;;;;AAmBA;;;AAGG;AACI,MAAM,qBAAqB,GAAG,UAAU,CAC3C,CAAC,KAAK,EAAE,GAAG,MACP,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,cAAc,EAAE,YAAY,EAC5B,QAAQ,EAAE,eAAe,EAAA,GACrB,KAAK,EACT,GAAG,EAAE,GAAG,EACV,CAAA,CACL;;;;"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ConditionalProps, DateRangeInputProps } from '../components/date-range-input';
2
+ import { type ConditionalProps, type DateRangeInputProps } from '../components/date-range-input';
3
3
  export declare type DateRangeInputMobileProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
4
4
  /**
5
5
  * @deprecated
@@ -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 {\n ConditionalProps,\n DateRangeInput,\n DateRangeInputProps,\n} from '../components/date-range-input';\n\nexport type DateRangeInputMobileProps = Omit<\n DateRangeInputProps,\n 'view' | 'picker' | 'onClose' | 'InputComponent'\n> &\n ConditionalProps;\n\n/**\n * @deprecated\n * use UniversalDateInput instead\n */\nexport const DateRangeInputMobile = forwardRef<HTMLInputElement, DateRangeInputMobileProps>(\n (props, ref) => (\n <DateRangeInput\n InputComponent={InputMobile}\n Calendar={CalendarMobile}\n view='mobile'\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":[],"mappings":";;;;;AAmBA;;;AAGG;AACU,MAAA,oBAAoB,GAAG,UAAU,CAC1C,CAAC,KAAK,EAAE,GAAG,MACP,KAAA,CAAA,aAAA,CAAC,cAAc,EACX,EAAA,cAAc,EAAE,WAAW,EAC3B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAC,QAAQ,EACT,GAAA,KAAK,EACT,GAAG,EAAE,GAAG,EACV,CAAA,CACL;;;;"}
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 {\n type ConditionalProps,\n DateRangeInput,\n type DateRangeInputProps,\n} from '../components/date-range-input';\n\nexport type DateRangeInputMobileProps = Omit<\n DateRangeInputProps,\n 'view' | 'picker' | 'onClose' | 'InputComponent'\n> &\n ConditionalProps;\n\n/**\n * @deprecated\n * use UniversalDateInput instead\n */\nexport const DateRangeInputMobile = forwardRef<HTMLInputElement, DateRangeInputMobileProps>(\n (props, ref) => (\n <DateRangeInput\n InputComponent={InputMobile}\n Calendar={CalendarMobile}\n view='mobile'\n {...props}\n ref={ref}\n />\n ),\n);\n"],"names":[],"mappings":";;;;;AAmBA;;;AAGG;AACU,MAAA,oBAAoB,GAAG,UAAU,CAC1C,CAAC,KAAK,EAAE,GAAG,MACP,KAAA,CAAA,aAAA,CAAC,cAAc,EACX,EAAA,cAAc,EAAE,WAAW,EAC3B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAC,QAAQ,EACT,GAAA,KAAK,EACT,GAAG,EAAE,GAAG,EACV,CAAA,CACL;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-date-range-input",
3
- "version": "4.0.1",
3
+ "version": "4.0.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "@alfalab/core-components-calendar": "^8.0.1",
14
14
  "@alfalab/core-components-icon-button": "^7.0.1",
15
- "@alfalab/core-components-input": "^16.0.1",
15
+ "@alfalab/core-components-input": "^16.0.2",
16
16
  "@alfalab/core-components-mq": "^5.0.1",
17
17
  "@alfalab/core-components-popover": "^7.1.0",
18
18
  "@alfalab/hooks": "^1.13.1",
@@ -30,6 +30,6 @@
30
30
  "access": "public",
31
31
  "directory": "dist"
32
32
  },
33
- "themesVersion": "14.1.0",
33
+ "themesVersion": "14.1.2",
34
34
  "varsVersion": "10.1.0"
35
35
  }
@@ -4,7 +4,7 @@ import React, { forwardRef } from 'react';
4
4
  import { InputProps } from '@alfalab/core-components-input';
5
5
  import { useIsDesktop } from '@alfalab/core-components-mq';
6
6
 
7
- import { ConditionalProps, DateRangeInputProps } from './components/date-range-input';
7
+ import { type ConditionalProps, type DateRangeInputProps } from './components/date-range-input';
8
8
  import { DateRangeInputDesktop } from './desktop';
9
9
  import { DateRangeInputMobile } from './mobile';
10
10
 
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */
2
2
  import React, {
3
- ChangeEvent,
4
- ElementType,
5
- FocusEvent,
6
- MouseEvent,
3
+ type ChangeEvent,
4
+ type ElementType,
5
+ type FocusEvent,
6
+ type MouseEvent,
7
7
  useEffect,
8
8
  useRef,
9
9
  useState,
@@ -13,12 +13,12 @@ import cn from 'classnames';
13
13
  import dateFnsIsValid from 'date-fns/isValid';
14
14
  import startOfMonth from 'date-fns/startOfMonth';
15
15
 
16
- import type { CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';
17
- import type { CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';
16
+ import { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';
17
+ import { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';
18
18
  import { usePeriod } from '@alfalab/core-components-calendar/shared';
19
19
  import { IconButton } from '@alfalab/core-components-icon-button';
20
- import { InputProps } from '@alfalab/core-components-input';
21
- import { Popover, PopoverProps } from '@alfalab/core-components-popover';
20
+ import { type InputProps } from '@alfalab/core-components-input';
21
+ import { Popover, type PopoverProps } from '@alfalab/core-components-popover';
22
22
  import { useDidUpdateEffect } from '@alfalab/hooks';
23
23
  import { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';
24
24
 
@@ -473,6 +473,7 @@ export const DateRangeInput = React.forwardRef<HTMLInputElement, DateRangeInputP
473
473
  <React.Fragment>
474
474
  {rightAddons}
475
475
  {picker && (
476
+ // eslint-disable-next-line jsx-a11y/control-has-associated-label
476
477
  <IconButton
477
478
  className={styles.calendarIcon}
478
479
  ref={iconRef}
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-vars/src/index.css';
1
+ @import '@alfalab/core-components-vars/src/no-typography-index.css';
2
2
  @import '../../../../calendar/src/vars.css';
3
3
 
4
4
  :root {
@@ -6,9 +6,9 @@ import { InputProps } from '@alfalab/core-components-input';
6
6
  import { InputDesktop } from '@alfalab/core-components-input/desktop';
7
7
 
8
8
  import {
9
- ConditionalProps,
9
+ type ConditionalProps,
10
10
  DateRangeInput,
11
- DateRangeInputProps,
11
+ type DateRangeInputProps,
12
12
  } from '../components/date-range-input';
13
13
 
14
14
  export type DateRangeInputDesktopProps = Omit<
@@ -6,9 +6,9 @@ import { InputProps } from '@alfalab/core-components-input';
6
6
  import { InputMobile } from '@alfalab/core-components-input/mobile';
7
7
 
8
8
  import {
9
- ConditionalProps,
9
+ type ConditionalProps,
10
10
  DateRangeInput,
11
- DateRangeInputProps,
11
+ type DateRangeInputProps,
12
12
  } from '../components/date-range-input';
13
13
 
14
14
  export type DateRangeInputMobileProps = Omit<