@alfalab/core-components-date-range-input 5.0.5 → 5.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Component.responsive.d.ts +2 -2
- package/components/date-range-input/Component.d.ts +2 -2
- package/components/date-range-input/Component.js.map +1 -1
- package/components/date-range-input/index.css +6 -6
- package/components/date-range-input/index.module.css.js +1 -1
- package/components/date-range-input/index.module.css.js.map +1 -1
- package/cssm/Component.responsive.d.ts +2 -2
- package/cssm/components/date-range-input/Component.d.ts +2 -2
- package/cssm/components/date-range-input/Component.js.map +1 -1
- package/cssm/desktop/Component.desktop.d.ts +1 -1
- package/cssm/mobile/Component.mobile.d.ts +1 -1
- package/cssm/utils/format.js.map +1 -1
- package/desktop/Component.desktop.d.ts +1 -1
- package/esm/Component.responsive.d.ts +2 -2
- package/esm/components/date-range-input/Component.d.ts +2 -2
- package/esm/components/date-range-input/Component.js.map +1 -1
- package/esm/components/date-range-input/index.css +6 -6
- package/esm/components/date-range-input/index.module.css.js +1 -1
- package/esm/components/date-range-input/index.module.css.js.map +1 -1
- package/esm/desktop/Component.desktop.d.ts +1 -1
- package/esm/mobile/Component.mobile.d.ts +1 -1
- package/esm/utils/format.js.map +1 -1
- package/mobile/Component.mobile.d.ts +1 -1
- package/modern/Component.responsive.d.ts +2 -2
- package/modern/components/date-range-input/Component.d.ts +2 -2
- package/modern/components/date-range-input/Component.js.map +1 -1
- package/modern/components/date-range-input/index.css +6 -6
- package/modern/components/date-range-input/index.module.css.js +1 -1
- package/modern/components/date-range-input/index.module.css.js.map +1 -1
- package/modern/desktop/Component.desktop.d.ts +1 -1
- package/modern/mobile/Component.mobile.d.ts +1 -1
- package/modern/utils/format.js.map +1 -1
- package/moderncssm/Component.responsive.d.ts +2 -2
- package/moderncssm/components/date-range-input/Component.d.ts +2 -2
- package/moderncssm/components/date-range-input/Component.js.map +1 -1
- package/moderncssm/desktop/Component.desktop.d.ts +1 -1
- package/moderncssm/mobile/Component.mobile.d.ts +1 -1
- package/moderncssm/utils/format.js.map +1 -1
- package/package.json +7 -7
- package/src/components/date-range-input/index.module.css +1 -1
- 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
|
|
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
|
|
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
|
|
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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;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;AACN,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrC;;KAEJ,EAAE,EAAE,CAAC;AAEN,IAAAA,eAAS,CAAC,YAAA;QACN,QAAQ,CAAC,UAAC,SAAS,EAAA;YACf,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;AAC3B;YACD,IAAI,YAAY,IAAI,SAAS,CAAC,MAAM,GAAGC,kBAAW,CAAC,MAAM,EAAE;AACvD,gBAAA,OAAOD,2BAAoB,CAAC,YAAY,CAAC;AAC5C;AAED,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;YACf,IAAI,SAAS,KAAK,YAAY,EAAE;AAC5B,gBAAA,OAAO,SAAS;AACnB;AAED,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;AACvC;AAAM,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;AACf;AAED,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;QAEF,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;AACL;;IAGL,IAAM,uBAAuB,GAAG,UAAC,KAAiC,EAAA;QAC9D,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,YAAA,IAAI,MAAM,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC;AAChB;AAED,YAAA,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE;AAClE,gBAAA,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE;AAC9B;AACJ;AACL,KAAC;IAED,IAAM,UAAU,GAAG,UAAC,KAAiC,EAAA;;QACjD,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;gBAC5C,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,MAAM,CAAC,MAAK,KAAK,EAC7C;gBACE,OAAO,CAAC,KAAK,CAAC;AAEd,gBAAA,IAAI,OAAO,EAAE;AACT,oBAAA,OAAO,EAAE;AACZ;AACJ;AACJ;AACL,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;AACH;QAED,IAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,IAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;;AAGpC,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YAC5D;AACH;AAEK,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;AAChB;aAAM,IAAI,YAAY,IAAI,cAAc,CAAC,MAAM,GAAGJ,kBAAW,CAAC,MAAM,EAAE;AACnE,YAAA,QAAQ,EAAE;AACb;aAAM,IAAI,YAAY,IAAI,UAAU,EAAE;AACnC,YAAA,MAAM,EAAE;AACX;AAAM,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;AAC/B;AAAM,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;AAC3B;QAED,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;YAEZ,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;AACnE;AACJ;AACL,KAAC;AAED,IAAA,IAAM,mBAAmB,GAAG,YAAA;AACxB,QAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,EAAE;AAC9B,YAAA,OAAO,EAAE;AACZ;QAED,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;AAExB,QAAA,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE;AACxC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;AAC3B;AACL,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,YAAM,CAAC,SAAS,EAAE,SAAS,GAAA,EAAA,GAAA,EAAA;AACrC,YAAA,EAAA,CAACA,YAAM,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,mCAAU,EACP,EAAA,SAAS,EAAEF,YAAM,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,6BAAO,EAAA,EACJ,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,QAAQ,CAAC,OAAsB,EAC9C,eAAe,EAAEL,mBAAE,CAACC,YAAM,CAAC,iBAAiB,GAAA,EAAA,GAAA,EAAA;AACxC,oBAAA,EAAA,CAACA,YAAM,CAAC,kBAAkB,CAAA,GAAG,kBAAkB;AACjD,oBAAA,EAAA,EAAA,EACF,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,cAAc,EAAE,KAAK,EACrB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,EAEpB,EAAA,cAAc,EAAE,CACX,KAEV,cAAc,EAAE,CACnB,CAAC,CACJ;AAEd,CAAC;;;;"}
|
|
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-
|
|
18
|
+
.date-range-input__component_1lbgw {
|
|
19
19
|
display: inline-block;
|
|
20
20
|
outline: none;
|
|
21
21
|
position: relative;
|
|
22
22
|
}
|
|
23
|
-
.date-range-
|
|
23
|
+
.date-range-input__calendarContainer_1lbgw {
|
|
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-
|
|
30
|
+
.date-range-input__calendarContainer_1lbgw {
|
|
31
31
|
width: 100%;
|
|
32
32
|
min-width: 288px;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
.date-range-
|
|
35
|
+
.date-range-input__calendarResponsive_1lbgw {
|
|
36
36
|
width: var(--calendar-width);
|
|
37
37
|
}
|
|
38
|
-
.date-range-
|
|
38
|
+
.date-range-input__block_1lbgw {
|
|
39
39
|
width: 100%;
|
|
40
40
|
}
|
|
41
|
-
.date-range-
|
|
41
|
+
.date-range-input__calendarIcon_1lbgw {
|
|
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-
|
|
5
|
+
var styles = {"component":"date-range-input__component_1lbgw","calendarContainer":"date-range-input__calendarContainer_1lbgw","calendarResponsive":"date-range-input__calendarResponsive_1lbgw","block":"date-range-input__block_1lbgw","calendarIcon":"date-range-input__calendarIcon_1lbgw"};
|
|
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/
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type ConditionalProps, type DateRangeInputProps } from '../components/date-range-input';
|
|
3
|
-
export
|
|
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
|
|
3
|
+
export type DateRangeInputMobileProps = Omit<DateRangeInputProps, 'view' | 'picker' | 'onClose' | 'InputComponent'> & ConditionalProps;
|
|
4
4
|
/**
|
|
5
5
|
* @deprecated
|
|
6
6
|
* use UniversalDateInput instead
|
package/cssm/utils/format.js.map
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
19
|
+
export type DateRangeInputProps = Omit<InputProps, 'onChange'> & ConditionalProps & {
|
|
20
20
|
/**
|
|
21
21
|
* Дополнительный класс
|
|
22
22
|
*/
|