@alfalab/core-components-date-time-input 6.0.5 → 6.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/Component.responsive.d.ts +4 -4
  2. package/components/date-time-input/Component.d.ts +25 -40
  3. package/components/date-time-input/Component.js.map +1 -1
  4. package/components/date-time-input/index.css +6 -6
  5. package/components/date-time-input/index.module.css.js +1 -1
  6. package/components/date-time-input/index.module.css.js.map +1 -1
  7. package/cssm/Component.responsive.d.ts +4 -4
  8. package/cssm/components/date-time-input/Component.d.ts +25 -40
  9. package/cssm/components/date-time-input/Component.js.map +1 -1
  10. package/cssm/desktop/Component.desktop.d.ts +1 -1
  11. package/cssm/mobile/Component.mobile.d.ts +1 -1
  12. package/cssm/utils/format.js.map +1 -1
  13. package/desktop/Component.desktop.d.ts +1 -1
  14. package/esm/Component.responsive.d.ts +4 -4
  15. package/esm/components/date-time-input/Component.d.ts +25 -40
  16. package/esm/components/date-time-input/Component.js.map +1 -1
  17. package/esm/components/date-time-input/index.css +6 -6
  18. package/esm/components/date-time-input/index.module.css.js +1 -1
  19. package/esm/components/date-time-input/index.module.css.js.map +1 -1
  20. package/esm/desktop/Component.desktop.d.ts +1 -1
  21. package/esm/mobile/Component.mobile.d.ts +1 -1
  22. package/esm/utils/format.js.map +1 -1
  23. package/mobile/Component.mobile.d.ts +1 -1
  24. package/modern/Component.responsive.d.ts +4 -4
  25. package/modern/components/date-time-input/Component.d.ts +25 -40
  26. package/modern/components/date-time-input/Component.js.map +1 -1
  27. package/modern/components/date-time-input/index.css +6 -6
  28. package/modern/components/date-time-input/index.module.css.js +1 -1
  29. package/modern/components/date-time-input/index.module.css.js.map +1 -1
  30. package/modern/desktop/Component.desktop.d.ts +1 -1
  31. package/modern/mobile/Component.mobile.d.ts +1 -1
  32. package/modern/utils/format.js.map +1 -1
  33. package/moderncssm/Component.responsive.d.ts +4 -4
  34. package/moderncssm/components/date-time-input/Component.d.ts +25 -40
  35. package/moderncssm/components/date-time-input/Component.js.map +1 -1
  36. package/moderncssm/desktop/Component.desktop.d.ts +1 -1
  37. package/moderncssm/mobile/Component.mobile.d.ts +1 -1
  38. package/moderncssm/utils/format.js.map +1 -1
  39. package/package.json +7 -7
  40. package/src/components/date-time-input/index.module.css +1 -1
  41. package/utils/format.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../../src/components/date-time-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\n\nimport React, {\n type ChangeEvent,\n type ElementType,\n type FocusEvent,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\n\nimport { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';\nimport { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';\nimport { dateInLimits } from '@alfalab/core-components-calendar/shared';\nimport { IconButton } from '@alfalab/core-components-icon-button';\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { Popover, type PopoverProps } from '@alfalab/core-components-popover';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\nimport { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';\n\nimport {\n addTimeToDate,\n DATE_WITH_TIME_LENGTH,\n format,\n getDateWithoutTime,\n getFullDateTime,\n isCompleteDateInput,\n isValid,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type DateTimeInputProps = Omit<InputProps, 'onChange'> & {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для инпута\n */\n inputClassName?: string;\n\n /**\n * Дополнительный класс для поповера\n */\n popoverClassName?: string;\n\n /**\n * Обработчик изменения значения\n */\n picker?: boolean;\n\n /**\n * Обработчик изменения значения\n */\n onChange?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Компонент календаря\n */\n Calendar?: ElementType;\n\n /**\n * Доп. пропсы для календаря\n */\n calendarProps?:\n | (CalendarDesktopProps & Record<string, unknown>)\n | (CalendarMobileProps & Record<string, unknown>);\n\n /**\n * Месяц в календаре по умолчанию (timestamp)\n */\n defaultMonth?: number;\n\n /**\n * Минимальная дата, доступная для выбора (timestamp)\n */\n minDate?: number;\n\n /**\n * Максимальная дата, доступная для выбора (timestamp)\n */\n maxDate?: number;\n\n /**\n * Список событий\n */\n events?: Array<Date | number>;\n\n /**\n * Список выходных\n */\n offDays?: Array<Date | number>;\n\n /**\n * Состояние открытия по умолчанию\n */\n defaultOpen?: boolean;\n\n /**\n * Позиционирование поповера с календарем\n */\n popoverPosition?: PopoverProps['position'];\n\n /**\n * z-index Popover\n */\n zIndexPopover?: PopoverProps['zIndex'];\n\n /**\n * Запрещает поповеру менять свою позицию.\n * Например, если места снизу недостаточно,то он все равно будет показан снизу\n */\n preventFlip?: boolean;\n\n /**\n * Календарь будет принимать ширину инпута\n */\n useAnchorWidth?: boolean;\n\n /**\n * Растягивает компонент на ширину контейнера\n */\n block?: boolean;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n InputComponent?: ElementType;\n\n /**\n * Запретить ввод с клавиатуры\n */\n disableUserInput?: boolean;\n};\n\nexport const DateTimeInput = React.forwardRef<HTMLInputElement, DateTimeInputProps>(\n (\n {\n className,\n inputClassName,\n popoverClassName,\n disabled,\n readOnly,\n disableUserInput = false,\n picker,\n defaultValue = '',\n value: propValue,\n onChange,\n onComplete,\n rightAddons,\n useAnchorWidth,\n block,\n popoverPosition = 'bottom-start',\n zIndexPopover,\n preventFlip,\n InputComponent,\n Calendar,\n calendarProps = {},\n defaultMonth,\n minDate = calendarProps.minDate,\n maxDate = calendarProps.maxDate,\n offDays = calendarProps.offDays || [],\n events = calendarProps.events || [],\n defaultOpen = false,\n error,\n view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(false);\n\n const calendarValue = value ? getDateWithoutTime(value).getTime() : undefined;\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => (prevValue === propValue ? prevValue : newPropValue));\n }, [propValue]);\n\n const checkInputValueIsValid = (newInputValue?: string) => {\n if (!newInputValue || error) return false;\n\n const dateValue = getDateWithoutTime(newInputValue).getTime();\n\n return (\n dateValue &&\n dateInLimits(dateValue, minDate, maxDate) &&\n !offDays.includes(dateValue)\n );\n };\n\n const setTimeToDate = () => {\n setValue((prevValue) => {\n const dateWithTime = addTimeToDate(prevValue);\n\n if (dateWithTime !== prevValue && dateWithTime.length === DATE_WITH_TIME_LENGTH) {\n onComplete?.(null, {\n date: getFullDateTime(dateWithTime),\n value: dateWithTime,\n });\n }\n\n return dateWithTime;\n });\n };\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\n }\n if (!open && event.target.tagName !== 'INPUT' && calendarRef.current) {\n calendarRef.current.focus();\n }\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n const target = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (calendarRef.current && calendarRef.current.contains(target) === false) {\n setOpen(false);\n setTimeToDate();\n }\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_WITH_TIME_LENGTH) return;\n\n // Позволяем вводить только цифры, точки, запятую, двоеточие и пробел\n if (/[^\\d., :]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const colon = newValue.match(/:/g);\n const comma = newValue.match(/,/g);\n\n // Не даем вводить больше, чем 2 точки, 1 двоеточие и 1 запятую\n if (\n (dots && dots.length > 2) ||\n (colon && colon.length > 1) ||\n (comma && comma.length > 1)\n ) {\n return;\n }\n\n const formattedValue = format(newValue);\n const date = getFullDateTime(formattedValue);\n\n setValue(formattedValue);\n\n if (onChange) onChange(event, { date, value: formattedValue });\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue);\n\n if (!valid) return;\n\n if (onComplete) {\n onComplete(event, { date, value: formattedValue });\n }\n }\n };\n\n const handleMobileCalendarClose = () => {\n setOpen(false);\n setTimeToDate();\n };\n\n const handleClear = () => {\n setValue('');\n };\n\n const handleCalendarChange = (date?: number) => {\n if (date) {\n const newValue = parseTimestampToDate(date);\n\n setValue(newValue);\n onChange?.(null, { date: getFullDateTime(newValue), value: newValue });\n }\n };\n\n const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n // Не дает инпуту терять фокус при выборе даты\n event.preventDefault();\n };\n\n const handleIconButtonClick = () => {\n if (!open) setOpen(true);\n\n if (view === 'desktop' && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const renderCalendar = () =>\n Calendar ? (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onMouseDown={handleCalendarWrapperMouseDown}>\n <Calendar\n {...calendarProps}\n responsive={calendarResponsive}\n open={open}\n onClose={handleMobileCalendarClose}\n ref={calendarRef}\n defaultMonth={defaultMonth}\n value={checkInputValueIsValid(value) ? calendarValue : undefined}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n\n return (\n <div\n className={cn(styles.component, className, {\n [styles.block]: block,\n })}\n onFocus={inputDisabled ? undefined : handleInputWrapperFocus}\n onBlur={handleBlur}\n >\n {InputComponent ? (\n <InputComponent\n autoComplete={picker ? 'off' : undefined}\n {...restProps}\n block={block}\n ref={mergeRefs([ref, inputRef])}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n className={inputClassName}\n onClear={handleClear}\n disableUserInput={disableUserInput}\n error={error}\n rightAddons={\n <React.Fragment>\n {rightAddons}\n {shouldShowPicker && (\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <IconButton\n className={styles.calendarIcon}\n onClick={inputDisabled ? undefined : handleIconButtonClick}\n icon={CalendarMIcon}\n size={48}\n />\n )}\n </React.Fragment>\n }\n />\n ) : null}\n {picker &&\n (view === 'desktop' ? (\n <Popover\n open={open}\n useAnchorWidth={useAnchorWidth}\n anchorElement={inputRef.current as HTMLElement}\n popperClassName={cn(styles.calendarContainer, {\n [styles.calendarResponsive]: calendarResponsive,\n })}\n className={popoverClassName}\n position={popoverPosition}\n offset={[0, 8]}\n withTransition={false}\n preventFlip={preventFlip}\n zIndex={zIndexPopover}\n >\n {renderCalendar()}\n </Popover>\n ) : (\n renderCalendar()\n ))}\n </div>\n );\n },\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../../src/components/date-time-input/Component.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape, jsx-a11y/click-events-have-key-events */\n\nimport React, {\n type ChangeEvent,\n type ElementType,\n type FocusEvent,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport cn from 'classnames';\n\nimport { type CalendarDesktopProps } from '@alfalab/core-components-calendar/desktop';\nimport { type CalendarMobileProps } from '@alfalab/core-components-calendar/mobile';\nimport { dateInLimits } from '@alfalab/core-components-calendar/shared';\nimport { IconButton } from '@alfalab/core-components-icon-button';\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { Popover, type PopoverProps } from '@alfalab/core-components-popover';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\nimport { CalendarMIcon } from '@alfalab/icons-glyph/CalendarMIcon';\n\nimport {\n addTimeToDate,\n DATE_WITH_TIME_LENGTH,\n format,\n getDateWithoutTime,\n getFullDateTime,\n isCompleteDateInput,\n isValid,\n parseTimestampToDate,\n} from '../../utils';\n\nimport styles from './index.module.css';\n\nexport type DateTimeInputProps = Omit<InputProps, 'onChange'> & {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для инпута\n */\n inputClassName?: string;\n\n /**\n * Дополнительный класс для поповера\n */\n popoverClassName?: string;\n\n /**\n * Обработчик изменения значения\n */\n picker?: boolean;\n\n /**\n * Обработчик изменения значения\n */\n onChange?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Обработчик окончания ввода\n */\n onComplete?: (\n event: ChangeEvent<HTMLInputElement> | null,\n payload: { date: Date; value: string },\n ) => void;\n\n /**\n * Компонент календаря\n */\n Calendar?: ElementType;\n\n /**\n * Доп. пропсы для календаря\n */\n calendarProps?:\n | (CalendarDesktopProps & Record<string, unknown>)\n | (CalendarMobileProps & Record<string, unknown>);\n\n /**\n * Месяц в календаре по умолчанию (timestamp)\n */\n defaultMonth?: number;\n\n /**\n * Минимальная дата, доступная для выбора (timestamp)\n */\n minDate?: number;\n\n /**\n * Максимальная дата, доступная для выбора (timestamp)\n */\n maxDate?: number;\n\n /**\n * Список событий\n */\n events?: Array<Date | number>;\n\n /**\n * Список выходных\n */\n offDays?: Array<Date | number>;\n\n /**\n * Состояние открытия по умолчанию\n */\n defaultOpen?: boolean;\n\n /**\n * Позиционирование поповера с календарем\n */\n popoverPosition?: PopoverProps['position'];\n\n /**\n * z-index Popover\n */\n zIndexPopover?: PopoverProps['zIndex'];\n\n /**\n * Запрещает поповеру менять свою позицию.\n * Например, если места снизу недостаточно,то он все равно будет показан снизу\n */\n preventFlip?: boolean;\n\n /**\n * Календарь будет принимать ширину инпута\n */\n useAnchorWidth?: boolean;\n\n /**\n * Растягивает компонент на ширину контейнера\n */\n block?: boolean;\n\n /**\n * Отображение компонента в мобильном или десктопном виде\n */\n view?: 'desktop' | 'mobile';\n\n /**\n * Компонент инпута\n */\n InputComponent?: ElementType;\n\n /**\n * Запретить ввод с клавиатуры\n */\n disableUserInput?: boolean;\n};\n\nexport const DateTimeInput = React.forwardRef<HTMLInputElement, DateTimeInputProps>(\n (\n {\n className,\n inputClassName,\n popoverClassName,\n disabled,\n readOnly,\n disableUserInput = false,\n picker,\n defaultValue = '',\n value: propValue,\n onChange,\n onComplete,\n rightAddons,\n useAnchorWidth,\n block,\n popoverPosition = 'bottom-start',\n zIndexPopover,\n preventFlip,\n InputComponent,\n Calendar,\n calendarProps = {},\n defaultMonth,\n minDate = calendarProps.minDate,\n maxDate = calendarProps.maxDate,\n offDays = calendarProps.offDays || [],\n events = calendarProps.events || [],\n defaultOpen = false,\n error,\n view = 'desktop',\n ...restProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useState(propValue || defaultValue);\n const [open, setOpen] = useState(false);\n\n const calendarValue = value ? getDateWithoutTime(value).getTime() : undefined;\n\n const inputDisabled = disabled || readOnly;\n const shouldShowPicker = picker && !disabled && !readOnly;\n\n const calendarResponsive = calendarProps?.responsive ?? true;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useDidUpdateEffect(() => {\n const newPropValue = propValue || '';\n\n setValue((prevValue) => (prevValue === propValue ? prevValue : newPropValue));\n }, [propValue]);\n\n const checkInputValueIsValid = (newInputValue?: string) => {\n if (!newInputValue || error) return false;\n\n const dateValue = getDateWithoutTime(newInputValue).getTime();\n\n return (\n dateValue &&\n dateInLimits(dateValue, minDate, maxDate) &&\n !offDays.includes(dateValue)\n );\n };\n\n const setTimeToDate = () => {\n setValue((prevValue) => {\n const dateWithTime = addTimeToDate(prevValue);\n\n if (dateWithTime !== prevValue && dateWithTime.length === DATE_WITH_TIME_LENGTH) {\n onComplete?.(null, {\n date: getFullDateTime(dateWithTime),\n value: dateWithTime,\n });\n }\n\n return dateWithTime;\n });\n };\n\n const handleInputWrapperFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n if (picker) {\n setOpen(true);\n }\n if (!open && event.target.tagName !== 'INPUT' && calendarRef.current) {\n calendarRef.current.focus();\n }\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (view === 'desktop') {\n const target = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (calendarRef.current && calendarRef.current.contains(target) === false) {\n setOpen(false);\n setTimeToDate();\n }\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: newValue } = event.target;\n\n if (newValue.length > DATE_WITH_TIME_LENGTH) return;\n\n // Позволяем вводить только цифры, точки, запятую, двоеточие и пробел\n if (/[^\\d., :]/.test(newValue)) {\n return;\n }\n\n const dots = newValue.match(/\\./g);\n const colon = newValue.match(/:/g);\n const comma = newValue.match(/,/g);\n\n // Не даем вводить больше, чем 2 точки, 1 двоеточие и 1 запятую\n if (\n (dots && dots.length > 2) ||\n (colon && colon.length > 1) ||\n (comma && comma.length > 1)\n ) {\n return;\n }\n\n const formattedValue = format(newValue);\n const date = getFullDateTime(formattedValue);\n\n setValue(formattedValue);\n\n if (onChange) onChange(event, { date, value: formattedValue });\n\n if (isCompleteDateInput(formattedValue)) {\n const valid = isValid(formattedValue);\n\n if (!valid) return;\n\n if (onComplete) {\n onComplete(event, { date, value: formattedValue });\n }\n }\n };\n\n const handleMobileCalendarClose = () => {\n setOpen(false);\n setTimeToDate();\n };\n\n const handleClear = () => {\n setValue('');\n };\n\n const handleCalendarChange = (date?: number) => {\n if (date) {\n const newValue = parseTimestampToDate(date);\n\n setValue(newValue);\n onChange?.(null, { date: getFullDateTime(newValue), value: newValue });\n }\n };\n\n const handleCalendarWrapperMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n // Не дает инпуту терять фокус при выборе даты\n event.preventDefault();\n };\n\n const handleIconButtonClick = () => {\n if (!open) setOpen(true);\n\n if (view === 'desktop' && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const renderCalendar = () =>\n Calendar ? (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onMouseDown={handleCalendarWrapperMouseDown}>\n <Calendar\n {...calendarProps}\n responsive={calendarResponsive}\n open={open}\n onClose={handleMobileCalendarClose}\n ref={calendarRef}\n defaultMonth={defaultMonth}\n value={checkInputValueIsValid(value) ? calendarValue : undefined}\n onChange={handleCalendarChange}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n />\n </div>\n ) : null;\n\n return (\n <div\n className={cn(styles.component, className, {\n [styles.block]: block,\n })}\n onFocus={inputDisabled ? undefined : handleInputWrapperFocus}\n onBlur={handleBlur}\n >\n {InputComponent ? (\n <InputComponent\n autoComplete={picker ? 'off' : undefined}\n {...restProps}\n block={block}\n ref={mergeRefs([ref, inputRef])}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n className={inputClassName}\n onClear={handleClear}\n disableUserInput={disableUserInput}\n error={error}\n rightAddons={\n <React.Fragment>\n {rightAddons}\n {shouldShowPicker && (\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <IconButton\n className={styles.calendarIcon}\n onClick={inputDisabled ? undefined : handleIconButtonClick}\n icon={CalendarMIcon}\n size={48}\n />\n )}\n </React.Fragment>\n }\n />\n ) : null}\n {picker &&\n (view === 'desktop' ? (\n <Popover\n open={open}\n useAnchorWidth={useAnchorWidth}\n anchorElement={inputRef.current as HTMLElement}\n popperClassName={cn(styles.calendarContainer, {\n [styles.calendarResponsive]: calendarResponsive,\n })}\n className={popoverClassName}\n position={popoverPosition}\n offset={[0, 8]}\n withTransition={false}\n preventFlip={preventFlip}\n zIndex={zIndexPopover}\n >\n {renderCalendar()}\n </Popover>\n ) : (\n renderCalendar()\n ))}\n </div>\n );\n },\n);\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type DateTimeInputProps } from '../components/date-time-input/Component';
3
- export declare type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
3
+ export type DateTimeInputDesktopProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
4
4
  /**
5
5
  * @deprecated
6
6
  * use UniversalDateInput instead
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { type DateTimeInputProps } from '../components/date-time-input/Component';
3
- export declare type DateTimeInputMobileProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
3
+ export type DateTimeInputMobileProps = Omit<DateTimeInputProps, 'view' | 'InputComponent'>;
4
4
  export declare const DateTimeInputMobile: React.ForwardRefExoticComponent<DateTimeInputMobileProps & React.RefAttributes<HTMLInputElement>>;
@@ -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 /\\d/,\n /\\d/,\n ':',\n /\\d/,\n /\\d/,\n];\n\nexport const DATE_WITH_TIME_LENGTH = DATE_MASK.length;\nexport const isCompleteDateInput = (input: string) => input.length === DATE_WITH_TIME_LENGTH;\nexport const parseDateString = (value: string, dateFormat = DATE_FORMAT) =>\n parse(value, dateFormat, new Date());\nexport const isValidTimeFormat = (value: string): boolean => {\n const timeArr = value.split(':');\n const hours = timeArr[0];\n const mins = timeArr[1];\n\n if (hours.length !== 2 || Number(hours) > 23) {\n return false;\n }\n\n if (mins.length !== 2 || Number(mins) > 59) {\n return false;\n }\n\n return true;\n};\n\nexport const isValid = (inputValue: string) => {\n const inputValueArr = inputValue.split(', ');\n const date = inputValueArr[0];\n const time = inputValueArr[1];\n\n return (\n !inputValue ||\n (isCompleteDateInput(inputValue) &&\n dateFnsIsValid(parseDateString(date)) &&\n isValidTimeFormat(time))\n );\n};\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(/\\:$/, '') // 1:2 => 12\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)/, '$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\\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.20050 => 12.12.2005, 0\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d),(\\d.*)/, '$1, $2') // 12.12.2005,00:00 => 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d) (\\d.*)/, '$1, $2') // 12.12.2005 00:00 => 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d)(\\d.*)/, '$1, $2') // 12.12.200500:00=> 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d), (\\d\\d):/, '$1, $2') // 12.12.2005, 00: => 12.12.2005, 00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d), (\\d\\d)(\\d)/, '$1, $2:$3') // 12.12.2005, 000 => 12.12.2005, 00:0\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\\d)([0-9]*)/, '$1.$2.$3') // 01..2005123123 => 01..2005\n .replace(/^(\\d)\\.()\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3') // 1..2005123123 => 1..2005\n .replace(/^()\\.()\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3') // ..2005123123 => ..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\nexport const getDateWithoutTime = (value: string): Date => {\n const valueArr = value.split(', ');\n\n let day;\n let month;\n let year;\n\n if (valueArr[0]) {\n const date = valueArr[0].split('.');\n\n [day, month, year] = date;\n }\n\n const date = new Date();\n\n date.setFullYear(Number(year), Number(month) - 1, Number(day));\n date.setHours(0, 0, 0, 0);\n\n return date;\n};\n\nexport const getFullDateTime = (value: string): Date => {\n const valueArr = value.split(', ');\n\n let day;\n let month;\n let year;\n let hours;\n let mins;\n\n if (valueArr[0]) {\n const date = valueArr[0].split('.');\n\n [day, month, year] = date;\n }\n if (valueArr[1]) {\n const time = valueArr[1].split(':');\n\n hours = Number(time[0]);\n mins = Number(time[1]);\n }\n\n const fullDate = new Date();\n\n fullDate.setFullYear(Number(year), Number(month) - 1, Number(day));\n fullDate.setHours(Number(hours) || 0);\n fullDate.setMinutes(Number(mins) || 0);\n fullDate.setSeconds(0);\n fullDate.setMilliseconds(0);\n\n return fullDate;\n};\n\nexport const addTimeToDate = (value: string): string => {\n if (value.length === 10 && dateFnsIsValid(parseDateString(value))) {\n return `${value}, 00:00`;\n }\n\n return value;\n};\n"],"names":["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 /\\d/,\n /\\d/,\n ':',\n /\\d/,\n /\\d/,\n];\n\nexport const DATE_WITH_TIME_LENGTH = DATE_MASK.length;\nexport const isCompleteDateInput = (input: string) => input.length === DATE_WITH_TIME_LENGTH;\nexport const parseDateString = (value: string, dateFormat = DATE_FORMAT) =>\n parse(value, dateFormat, new Date());\nexport const isValidTimeFormat = (value: string): boolean => {\n const timeArr = value.split(':');\n const hours = timeArr[0];\n const mins = timeArr[1];\n\n if (hours.length !== 2 || Number(hours) > 23) {\n return false;\n }\n\n if (mins.length !== 2 || Number(mins) > 59) {\n return false;\n }\n\n return true;\n};\n\nexport const isValid = (inputValue: string) => {\n const inputValueArr = inputValue.split(', ');\n const date = inputValueArr[0];\n const time = inputValueArr[1];\n\n return (\n !inputValue ||\n (isCompleteDateInput(inputValue) &&\n dateFnsIsValid(parseDateString(date)) &&\n isValidTimeFormat(time))\n );\n};\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(/\\:$/, '') // 1:2 => 12\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)/, '$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\\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.20050 => 12.12.2005, 0\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d),(\\d.*)/, '$1, $2') // 12.12.2005,00:00 => 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d) (\\d.*)/, '$1, $2') // 12.12.2005 00:00 => 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d)(\\d.*)/, '$1, $2') // 12.12.200500:00=> 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d), (\\d\\d):/, '$1, $2') // 12.12.2005, 00: => 12.12.2005, 00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d), (\\d\\d)(\\d)/, '$1, $2:$3') // 12.12.2005, 000 => 12.12.2005, 00:0\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\\d)([0-9]*)/, '$1.$2.$3') // 01..2005123123 => 01..2005\n .replace(/^(\\d)\\.()\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3') // 1..2005123123 => 1..2005\n .replace(/^()\\.()\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3') // ..2005123123 => ..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\nexport const getDateWithoutTime = (value: string): Date => {\n const valueArr = value.split(', ');\n\n let day;\n let month;\n let year;\n\n if (valueArr[0]) {\n const date = valueArr[0].split('.');\n\n [day, month, year] = date;\n }\n\n const date = new Date();\n\n date.setFullYear(Number(year), Number(month) - 1, Number(day));\n date.setHours(0, 0, 0, 0);\n\n return date;\n};\n\nexport const getFullDateTime = (value: string): Date => {\n const valueArr = value.split(', ');\n\n let day;\n let month;\n let year;\n let hours;\n let mins;\n\n if (valueArr[0]) {\n const date = valueArr[0].split('.');\n\n [day, month, year] = date;\n }\n if (valueArr[1]) {\n const time = valueArr[1].split(':');\n\n hours = Number(time[0]);\n mins = Number(time[1]);\n }\n\n const fullDate = new Date();\n\n fullDate.setFullYear(Number(year), Number(month) - 1, Number(day));\n fullDate.setHours(Number(hours) || 0);\n fullDate.setMinutes(Number(mins) || 0);\n fullDate.setSeconds(0);\n fullDate.setMilliseconds(0);\n\n return fullDate;\n};\n\nexport const addTimeToDate = (value: string): string => {\n if (value.length === 10 && dateFnsIsValid(parseDateString(value))) {\n return `${value}, 00:00`;\n }\n\n return value;\n};\n"],"names":["dateFnsIsValid"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-date-time-input",
3
- "version": "6.0.5",
3
+ "version": "6.0.6",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -10,11 +10,11 @@
10
10
  "main": "index.js",
11
11
  "module": "./esm/index.js",
12
12
  "dependencies": {
13
- "@alfalab/core-components-calendar": "^9.1.0",
14
- "@alfalab/core-components-icon-button": "^8.0.3",
15
- "@alfalab/core-components-input": "^17.1.2",
16
- "@alfalab/core-components-mq": "^6.0.2",
17
- "@alfalab/core-components-popover": "^8.0.2",
13
+ "@alfalab/core-components-calendar": "^9.1.1",
14
+ "@alfalab/core-components-icon-button": "^8.0.4",
15
+ "@alfalab/core-components-input": "^17.1.3",
16
+ "@alfalab/core-components-mq": "^6.0.3",
17
+ "@alfalab/core-components-popover": "^8.0.3",
18
18
  "@alfalab/hooks": "^1.13.1",
19
19
  "@alfalab/icons-glyph": "^2.260.0",
20
20
  "classnames": "^2.5.1",
@@ -31,5 +31,5 @@
31
31
  "directory": "dist"
32
32
  },
33
33
  "themesVersion": "15.0.2",
34
- "varsVersion": "11.0.1"
34
+ "varsVersion": "11.0.2"
35
35
  }
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-vars/src/no-typography-index.css';
1
+ @import '@alfalab/core-components-vars/src/index.css';
2
2
  @import '../../../../calendar/src/vars.css';
3
3
 
4
4
  :root {
@@ -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 /\\d/,\n /\\d/,\n ':',\n /\\d/,\n /\\d/,\n];\n\nexport const DATE_WITH_TIME_LENGTH = DATE_MASK.length;\nexport const isCompleteDateInput = (input: string) => input.length === DATE_WITH_TIME_LENGTH;\nexport const parseDateString = (value: string, dateFormat = DATE_FORMAT) =>\n parse(value, dateFormat, new Date());\nexport const isValidTimeFormat = (value: string): boolean => {\n const timeArr = value.split(':');\n const hours = timeArr[0];\n const mins = timeArr[1];\n\n if (hours.length !== 2 || Number(hours) > 23) {\n return false;\n }\n\n if (mins.length !== 2 || Number(mins) > 59) {\n return false;\n }\n\n return true;\n};\n\nexport const isValid = (inputValue: string) => {\n const inputValueArr = inputValue.split(', ');\n const date = inputValueArr[0];\n const time = inputValueArr[1];\n\n return (\n !inputValue ||\n (isCompleteDateInput(inputValue) &&\n dateFnsIsValid(parseDateString(date)) &&\n isValidTimeFormat(time))\n );\n};\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(/\\:$/, '') // 1:2 => 12\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)/, '$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\\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.20050 => 12.12.2005, 0\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d),(\\d.*)/, '$1, $2') // 12.12.2005,00:00 => 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d) (\\d.*)/, '$1, $2') // 12.12.2005 00:00 => 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d)(\\d.*)/, '$1, $2') // 12.12.200500:00=> 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d), (\\d\\d):/, '$1, $2') // 12.12.2005, 00: => 12.12.2005, 00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d), (\\d\\d)(\\d)/, '$1, $2:$3') // 12.12.2005, 000 => 12.12.2005, 00:0\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\\d)([0-9]*)/, '$1.$2.$3') // 01..2005123123 => 01..2005\n .replace(/^(\\d)\\.()\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3') // 1..2005123123 => 1..2005\n .replace(/^()\\.()\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3') // ..2005123123 => ..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\nexport const getDateWithoutTime = (value: string): Date => {\n const valueArr = value.split(', ');\n\n let day;\n let month;\n let year;\n\n if (valueArr[0]) {\n const date = valueArr[0].split('.');\n\n [day, month, year] = date;\n }\n\n const date = new Date();\n\n date.setFullYear(Number(year), Number(month) - 1, Number(day));\n date.setHours(0, 0, 0, 0);\n\n return date;\n};\n\nexport const getFullDateTime = (value: string): Date => {\n const valueArr = value.split(', ');\n\n let day;\n let month;\n let year;\n let hours;\n let mins;\n\n if (valueArr[0]) {\n const date = valueArr[0].split('.');\n\n [day, month, year] = date;\n }\n if (valueArr[1]) {\n const time = valueArr[1].split(':');\n\n hours = Number(time[0]);\n mins = Number(time[1]);\n }\n\n const fullDate = new Date();\n\n fullDate.setFullYear(Number(year), Number(month) - 1, Number(day));\n fullDate.setHours(Number(hours) || 0);\n fullDate.setMinutes(Number(mins) || 0);\n fullDate.setSeconds(0);\n fullDate.setMilliseconds(0);\n\n return fullDate;\n};\n\nexport const addTimeToDate = (value: string): string => {\n if (value.length === 10 && dateFnsIsValid(parseDateString(value))) {\n return `${value}, 00:00`;\n }\n\n return value;\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 /\\d/,\n /\\d/,\n ':',\n /\\d/,\n /\\d/,\n];\n\nexport const DATE_WITH_TIME_LENGTH = DATE_MASK.length;\nexport const isCompleteDateInput = (input: string) => input.length === DATE_WITH_TIME_LENGTH;\nexport const parseDateString = (value: string, dateFormat = DATE_FORMAT) =>\n parse(value, dateFormat, new Date());\nexport const isValidTimeFormat = (value: string): boolean => {\n const timeArr = value.split(':');\n const hours = timeArr[0];\n const mins = timeArr[1];\n\n if (hours.length !== 2 || Number(hours) > 23) {\n return false;\n }\n\n if (mins.length !== 2 || Number(mins) > 59) {\n return false;\n }\n\n return true;\n};\n\nexport const isValid = (inputValue: string) => {\n const inputValueArr = inputValue.split(', ');\n const date = inputValueArr[0];\n const time = inputValueArr[1];\n\n return (\n !inputValue ||\n (isCompleteDateInput(inputValue) &&\n dateFnsIsValid(parseDateString(date)) &&\n isValidTimeFormat(time))\n );\n};\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(/\\:$/, '') // 1:2 => 12\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)/, '$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\\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.20050 => 12.12.2005, 0\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d),(\\d.*)/, '$1, $2') // 12.12.2005,00:00 => 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d) (\\d.*)/, '$1, $2') // 12.12.2005 00:00 => 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d)(\\d.*)/, '$1, $2') // 12.12.200500:00=> 12.12.2005, 00:00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d), (\\d\\d):/, '$1, $2') // 12.12.2005, 00: => 12.12.2005, 00\n .replace(/^(\\d\\d.\\d\\d\\.\\d\\d\\d\\d), (\\d\\d)(\\d)/, '$1, $2:$3') // 12.12.2005, 000 => 12.12.2005, 00:0\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\\d)([0-9]*)/, '$1.$2.$3') // 01..2005123123 => 01..2005\n .replace(/^(\\d)\\.()\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3') // 1..2005123123 => 1..2005\n .replace(/^()\\.()\\.(\\d\\d\\d\\d)([0-9]*)/, '$1.$2.$3') // ..2005123123 => ..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\nexport const getDateWithoutTime = (value: string): Date => {\n const valueArr = value.split(', ');\n\n let day;\n let month;\n let year;\n\n if (valueArr[0]) {\n const date = valueArr[0].split('.');\n\n [day, month, year] = date;\n }\n\n const date = new Date();\n\n date.setFullYear(Number(year), Number(month) - 1, Number(day));\n date.setHours(0, 0, 0, 0);\n\n return date;\n};\n\nexport const getFullDateTime = (value: string): Date => {\n const valueArr = value.split(', ');\n\n let day;\n let month;\n let year;\n let hours;\n let mins;\n\n if (valueArr[0]) {\n const date = valueArr[0].split('.');\n\n [day, month, year] = date;\n }\n if (valueArr[1]) {\n const time = valueArr[1].split(':');\n\n hours = Number(time[0]);\n mins = Number(time[1]);\n }\n\n const fullDate = new Date();\n\n fullDate.setFullYear(Number(year), Number(month) - 1, Number(day));\n fullDate.setHours(Number(hours) || 0);\n fullDate.setMinutes(Number(mins) || 0);\n fullDate.setSeconds(0);\n fullDate.setMilliseconds(0);\n\n return fullDate;\n};\n\nexport const addTimeToDate = (value: string): string => {\n if (value.length === 10 && dateFnsIsValid(parseDateString(value))) {\n return `${value}, 00:00`;\n }\n\n return value;\n};\n"],"names":["parse","dateFnsIsValid"],"mappings":";;;;;;AAAA;AAIO,IAAM,WAAW,GAAG;AACd,IAAA,SAAS,GAAG;IACrB,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;;AAGK,IAAA,qBAAqB,GAAG,SAAS,CAAC;AACxC,IAAM,mBAAmB,GAAG,UAAC,KAAa,EAAA,EAAK,OAAA,KAAK,CAAC,MAAM,KAAK,qBAAqB,CAAA;AAC/E,IAAA,eAAe,GAAG,UAAC,KAAa,EAAE,UAAwB,EAAA;AAAxB,IAAA,IAAA,UAAA,KAAA,MAAA,EAAA,EAAA,UAAwB,GAAA,WAAA,CAAA;IACnE,OAAAA,aAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC;AAApC;AACG,IAAM,iBAAiB,GAAG,UAAC,KAAa,EAAA;IAC3C,IAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,IAAA,IAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AACxB,IAAA,IAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC;AAEvB,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE;AAC1C,QAAA,OAAO,KAAK;;AAGhB,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;AACxC,QAAA,OAAO,KAAK;;AAGhB,IAAA,OAAO,IAAI;AACf;AAEO,IAAM,OAAO,GAAG,UAAC,UAAkB,EAAA;IACtC,IAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5C,IAAA,IAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;AAC7B,IAAA,IAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;IAE7B,QACI,CAAC,UAAU;SACV,mBAAmB,CAAC,UAAU,CAAC;AAC5B,YAAAC,eAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAEpC;AAEO,IAAM,MAAM,GAAG,UAAC,KAAa,EAAA;AAChC,IAAA,OAAA;AACK,SAAA,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC;AAChC,SAAA,OAAO,CAAC,sBAAsB,EAAE,UAAU,CAAC;AAC3C,SAAA,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;AACnC,SAAA,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;AACzC,SAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,SAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,SAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,SAAA,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC;AACjC,SAAA,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;AACtC,SAAA,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC;AAC3C,SAAA,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC;AAC3C,SAAA,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC;AACxC,SAAA,OAAO,CAAC,4BAA4B,EAAE,QAAQ,CAAC;AAC/C,SAAA,OAAO,CAAC,+BAA+B,EAAE,QAAQ,CAAC;AAClD,SAAA,OAAO,CAAC,+BAA+B,EAAE,QAAQ,CAAC;AAClD,SAAA,OAAO,CAAC,8BAA8B,EAAE,QAAQ,CAAC;AACjD,SAAA,OAAO,CAAC,iCAAiC,EAAE,QAAQ,CAAC;AACpD,SAAA,OAAO,CAAC,oCAAoC,EAAE,WAAW,CAAC;AAC1D,SAAA,OAAO,CAAC,+BAA+B,EAAE,IAAI,CAAC;AAC9C,SAAA,OAAO,CAAC,+BAA+B,EAAE,IAAI,CAAC;AAC9C,SAAA,OAAO,CAAC,mCAAmC,EAAE,UAAU,CAAC;AACxD,SAAA,OAAO,CAAC,6BAA6B,EAAE,IAAI,CAAC;AAC5C,SAAA,OAAO,CAAC,iCAAiC,EAAE,UAAU,CAAC;AACtD,SAAA,OAAO,CAAC,+BAA+B,EAAE,UAAU,CAAC;AACpD,SAAA,OAAO,CAAC,6BAA6B,EAAE,UAAU,CAAC;AAClD,SAAA,OAAO,CAAC,+BAA+B,EAAE,UAAU,CAAC;AA1BzD,EA0B0D;AAEvD,IAAM,oBAAoB,GAAG,UAAC,SAAiB,EAAA;AAClD,IAAA,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAChC,IAAA,IAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;IAE/B,IAAI,KAAK,GAAoB,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AAChD,IAAA,IAAI,GAAG,GAAoB,IAAI,CAAC,OAAO,EAAE;AAEzC,IAAA,IAAI,KAAK,GAAG,EAAE,EAAE;AACZ,QAAA,KAAK,GAAG,GAAA,CAAA,MAAA,CAAI,KAAK,CAAE;;AAEvB,IAAA,IAAI,GAAG,GAAG,EAAE,EAAE;AACV,QAAA,GAAG,GAAG,GAAA,CAAA,MAAA,CAAI,GAAG,CAAE;;AAGnB,IAAA,OAAO,UAAG,GAAG,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,KAAK,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,IAAI,CAAE;AACpC;AAEO,IAAM,kBAAkB,GAAG,UAAC,KAAa,EAAA;IAC5C,IAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAElC,IAAA,IAAI,GAAG;AACP,IAAA,IAAI,KAAK;AACT,IAAA,IAAI,IAAI;AAER,IAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;QACb,IAAM,MAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAElC,QAAA,GAAG,GAAiB,MAAI,CAArB,CAAA,CAAA,EAAE,KAAK,GAAU,MAAI,CAAA,CAAA,CAAd,EAAE,IAAI,GAAI,MAAI,GAAR;;AAGrB,IAAA,IAAM,IAAI,GAAG,IAAI,IAAI,EAAE;IAEvB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAEzB,IAAA,OAAO,IAAI;AACf;AAEO,IAAM,eAAe,GAAG,UAAC,KAAa,EAAA;IACzC,IAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAElC,IAAA,IAAI,GAAG;AACP,IAAA,IAAI,KAAK;AACT,IAAA,IAAI,IAAI;AACR,IAAA,IAAI,KAAK;AACT,IAAA,IAAI,IAAI;AAER,IAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;QACb,IAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAElC,QAAA,GAAG,GAAiB,IAAI,CAArB,CAAA,CAAA,EAAE,KAAK,GAAU,IAAI,CAAA,CAAA,CAAd,EAAE,IAAI,GAAI,IAAI,GAAR;;AAErB,IAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;QACb,IAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAEnC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAG1B,IAAA,IAAM,QAAQ,GAAG,IAAI,IAAI,EAAE;IAE3B,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,IAAA,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACtB,IAAA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAE3B,IAAA,OAAO,QAAQ;AACnB;AAEO,IAAM,aAAa,GAAG,UAAC,KAAa,EAAA;AACvC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAIA,eAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/D,OAAO,EAAA,CAAA,MAAA,CAAG,KAAK,EAAA,SAAA,CAAS;;AAG5B,IAAA,OAAO,KAAK;AAChB;;;;;;;;;;;;;;;"}