@alfalab/core-components-calendar-range 8.0.1 → 8.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/Component.d.ts +2 -2
  2. package/Component.js.map +1 -1
  3. package/components/divider/Component.d.ts +2 -2
  4. package/components/divider/Component.js.map +1 -1
  5. package/components/divider/index.css +8 -8
  6. package/components/divider/index.module.css.js +1 -1
  7. package/components/divider/index.module.css.js.map +1 -1
  8. package/cssm/Component.d.ts +2 -2
  9. package/cssm/Component.js.map +1 -1
  10. package/cssm/components/divider/Component.d.ts +2 -2
  11. package/cssm/components/divider/Component.js.map +1 -1
  12. package/cssm/components/divider/index.module.css +1 -1
  13. package/cssm/hooks.js.map +1 -1
  14. package/cssm/views/index.module.css +2 -2
  15. package/cssm/views/popover.d.ts +2 -2
  16. package/cssm/views/popover.js.map +1 -1
  17. package/cssm/views/static.d.ts +2 -2
  18. package/cssm/views/static.js +3 -1
  19. package/cssm/views/static.js.map +1 -1
  20. package/esm/Component.d.ts +2 -2
  21. package/esm/Component.js.map +1 -1
  22. package/esm/components/divider/Component.d.ts +2 -2
  23. package/esm/components/divider/Component.js.map +1 -1
  24. package/esm/components/divider/index.css +8 -8
  25. package/esm/components/divider/index.module.css.js +1 -1
  26. package/esm/components/divider/index.module.css.js.map +1 -1
  27. package/esm/hooks.js.map +1 -1
  28. package/esm/views/index.css +9 -9
  29. package/esm/views/index.module.css.js +1 -1
  30. package/esm/views/index.module.css.js.map +1 -1
  31. package/esm/views/popover.d.ts +2 -2
  32. package/esm/views/popover.js.map +1 -1
  33. package/esm/views/static.d.ts +2 -2
  34. package/esm/views/static.js +3 -1
  35. package/esm/views/static.js.map +1 -1
  36. package/hooks.js.map +1 -1
  37. package/modern/Component.d.ts +2 -2
  38. package/modern/Component.js.map +1 -1
  39. package/modern/components/divider/Component.d.ts +2 -2
  40. package/modern/components/divider/Component.js.map +1 -1
  41. package/modern/components/divider/index.css +8 -8
  42. package/modern/components/divider/index.module.css.js +1 -1
  43. package/modern/components/divider/index.module.css.js.map +1 -1
  44. package/modern/hooks.js.map +1 -1
  45. package/modern/views/index.css +9 -9
  46. package/modern/views/index.module.css.js +1 -1
  47. package/modern/views/index.module.css.js.map +1 -1
  48. package/modern/views/popover.d.ts +2 -2
  49. package/modern/views/popover.js.map +1 -1
  50. package/modern/views/static.d.ts +2 -2
  51. package/modern/views/static.js +3 -1
  52. package/modern/views/static.js.map +1 -1
  53. package/moderncssm/Component.d.ts +2 -2
  54. package/moderncssm/Component.js.map +1 -1
  55. package/moderncssm/components/divider/Component.d.ts +2 -2
  56. package/moderncssm/components/divider/Component.js.map +1 -1
  57. package/moderncssm/components/divider/index.module.css +7 -1
  58. package/moderncssm/hooks.js.map +1 -1
  59. package/moderncssm/views/index.module.css +9 -2
  60. package/moderncssm/views/popover.d.ts +2 -2
  61. package/moderncssm/views/popover.js.map +1 -1
  62. package/moderncssm/views/static.d.ts +2 -2
  63. package/moderncssm/views/static.js +3 -1
  64. package/moderncssm/views/static.js.map +1 -1
  65. package/package.json +4 -4
  66. package/src/Component.tsx +2 -2
  67. package/src/components/divider/Component.tsx +2 -2
  68. package/src/components/divider/index.module.css +1 -1
  69. package/src/hooks.ts +2 -2
  70. package/src/views/index.module.css +1 -1
  71. package/src/views/popover.tsx +3 -3
  72. package/src/views/static.tsx +4 -3
  73. package/views/index.css +9 -9
  74. package/views/index.module.css.js +1 -1
  75. package/views/index.module.css.js.map +1 -1
  76. package/views/popover.d.ts +2 -2
  77. package/views/popover.js.map +1 -1
  78. package/views/static.d.ts +2 -2
  79. package/views/static.js +3 -1
  80. package/views/static.js.map +1 -1
@@ -1,4 +1,4 @@
1
- import { FC } from 'react';
2
- import { CalendarRangeProps } from '../Component';
1
+ import { type FC } from 'react';
2
+ import { type CalendarRangeProps } from '../Component';
3
3
  export declare type CalendarRangePopoverProps = Omit<CalendarRangeProps, 'calendarPosition'>;
4
4
  export declare const CalendarRangePopover: FC<CalendarRangePopoverProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sources":["../../src/views/popover.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useState } from 'react';\nimport cn from 'classnames';\nimport startOfMonth from 'date-fns/startOfMonth';\n\nimport { CalendarInput, CalendarInputProps } from '@alfalab/core-components-calendar-input';\nimport { isValidInputValue, parseDateString } from '@alfalab/core-components-calendar-input/shared';\nimport { isCompleteDateInput } from '@alfalab/core-components-date-input';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport { CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { usePopoverViewMonthes } from '../hooks';\n\nimport styles from './index.module.css';\n\nexport type CalendarRangePopoverProps = Omit<CalendarRangeProps, 'calendarPosition'>;\n\nexport const CalendarRangePopover: FC<CalendarRangePopoverProps> = ({\n className,\n defaultMonth = startOfMonth(new Date()).getTime(),\n minDate,\n maxDate,\n valueFrom = '',\n valueTo = '',\n onDateFromChange = () => null,\n onDateToChange = () => null,\n onChange = () => null,\n onError,\n inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n /**\n * Ключ для сброса календарей\n * Пользователь открыл календарь, изменил месяц, но ничего не выбрал\n * — при следующем открытии в календаре будет установлен начальный месяц\n */\n const [resetKey, setResetKey] = useState<number>(0);\n\n const dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)\n ? parseDateString(inputFromValue).getTime()\n : null;\n\n const dateTo = isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays)\n ? parseDateString(inputToValue).getTime()\n : null;\n\n const [inputFromInvalid, setInputFromInvalid] = useState<boolean>(\n isCompleteDateInput(inputFromValue) && dateFrom === null,\n );\n const [inputToInvalid, setInputToInvalid] = useState<boolean>(\n isCompleteDateInput(inputToValue) && dateTo === null,\n );\n\n const bothInvalid =\n isCompleteDateInput(inputFromValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();\n\n const hasValidateError = inputFromInvalid || inputToInvalid || bothInvalid;\n\n const { monthFrom, monthTo, handleMonthFromChange, handleMonthToChange } =\n usePopoverViewMonthes({\n dateFrom,\n dateTo,\n defaultMonth,\n resetKey,\n });\n\n const handleValidInputFrom = useCallback(() => {\n setInputFromInvalid(\n inputFromValue !== '' && !isValidInputValue(inputFromValue, minDate, maxDate, offDays),\n );\n }, [inputFromValue, maxDate, minDate, offDays]);\n\n const handleValidInputTo = useCallback(() => {\n setInputToInvalid(\n inputToValue !== '' &&\n !isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays),\n );\n }, [dateFrom, inputToValue, maxDate, minDate, offDays]);\n\n const handleInputFromChange: Required<CalendarInputProps>['onInputChange'] = (\n event,\n payload,\n ) => {\n setInputFromValue(payload.value);\n inputFromProps.onInputChange?.(event, payload);\n };\n\n const handleInputToChange: Required<CalendarInputProps>['onInputChange'] = (event, payload) => {\n setInputToValue(payload.value);\n inputToProps.onInputChange?.(event, payload);\n };\n\n const handleInputFromBlur = useCallback(() => {\n handleValidInputFrom();\n setResetKey(+new Date());\n }, [handleValidInputFrom]);\n\n const handleInputToBlur = useCallback(() => {\n handleValidInputTo();\n setResetKey(+new Date());\n }, [handleValidInputTo]);\n\n const handleFromChange: Required<CalendarInputProps>['onChange'] = useCallback((_, payload) => {\n setInputFromValue(payload.value);\n }, []);\n\n const handleToChange: Required<CalendarInputProps>['onChange'] = useCallback((_, payload) => {\n setInputToValue(payload.value);\n }, []);\n\n useEffect(() => {\n setInputFromValue(valueFrom);\n }, [valueFrom]);\n\n useEffect(() => {\n setInputToValue(valueTo);\n }, [valueTo]);\n\n useDidUpdateEffect(() => {\n onDateFromChange({ value: inputFromValue, date: dateFrom });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo,\n });\n\n if (!inputFromValue || isCompleteDateInput(inputFromValue)) {\n handleValidInputFrom();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputFromValue]);\n\n useDidUpdateEffect(() => {\n onDateToChange({ value: inputToValue, date: dateTo });\n\n // eslint-disable-next-line no-nested-ternary\n const inputDateTo = returnInvalidDates\n ? isCompleteDateInput(inputToValue)\n ? parseDateString(inputToValue).getTime()\n : null\n : dateTo;\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo: inputDateTo,\n });\n\n if (!inputToValue || isCompleteDateInput(inputToValue)) {\n handleValidInputTo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputToValue]);\n\n useEffect(() => {\n if (onError) {\n onError(hasValidateError);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasValidateError]);\n\n return (\n <div className={cn(styles.component, className)} data-test-id={dataTestId}>\n <CalendarInput\n {...inputFromProps}\n useAnchorWidth={false}\n calendarPosition='popover'\n popoverPosition='bottom-start'\n error={inputFromInvalid || bothInvalid || inputFromProps.error}\n onChange={handleFromChange}\n onInputChange={handleInputFromChange}\n onBlur={handleInputFromBlur}\n value={inputFromValue}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n calendarProps={{\n ...inputFromProps.calendarProps,\n month: monthFrom,\n onMonthChange: handleMonthFromChange,\n selectorView: 'full',\n }}\n />\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <CalendarInput\n {...inputToProps}\n useAnchorWidth={false}\n calendarPosition='popover'\n popoverPosition='bottom-end'\n error={inputToInvalid || bothInvalid || inputToProps.error}\n onChange={handleToChange}\n onInputChange={handleInputToChange}\n onBlur={handleInputToBlur}\n value={inputToValue}\n minDate={dateFrom || minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n calendarProps={{\n ...inputToProps.calendarProps,\n month: monthTo,\n onMonthChange: handleMonthToChange,\n selectorView: 'full',\n }}\n />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"popover.js","sources":["../../src/views/popover.tsx"],"sourcesContent":["import React, { type FC, useCallback, useEffect, useState } from 'react';\nimport cn from 'classnames';\nimport startOfMonth from 'date-fns/startOfMonth';\n\nimport { CalendarInput, type CalendarInputProps } from '@alfalab/core-components-calendar-input';\nimport { isValidInputValue, parseDateString } from '@alfalab/core-components-calendar-input/shared';\nimport { isCompleteDateInput } from '@alfalab/core-components-date-input';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport { type CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { usePopoverViewMonthes } from '../hooks';\n\nimport styles from './index.module.css';\n\nexport type CalendarRangePopoverProps = Omit<CalendarRangeProps, 'calendarPosition'>;\n\nexport const CalendarRangePopover: FC<CalendarRangePopoverProps> = ({\n className,\n defaultMonth = startOfMonth(new Date()).getTime(),\n minDate,\n maxDate,\n valueFrom = '',\n valueTo = '',\n onDateFromChange = () => null,\n onDateToChange = () => null,\n onChange = () => null,\n onError,\n inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n /**\n * Ключ для сброса календарей\n * Пользователь открыл календарь, изменил месяц, но ничего не выбрал\n * — при следующем открытии в календаре будет установлен начальный месяц\n */\n const [resetKey, setResetKey] = useState<number>(0);\n\n const dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)\n ? parseDateString(inputFromValue).getTime()\n : null;\n\n const dateTo = isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays)\n ? parseDateString(inputToValue).getTime()\n : null;\n\n const [inputFromInvalid, setInputFromInvalid] = useState<boolean>(\n isCompleteDateInput(inputFromValue) && dateFrom === null,\n );\n const [inputToInvalid, setInputToInvalid] = useState<boolean>(\n isCompleteDateInput(inputToValue) && dateTo === null,\n );\n\n const bothInvalid =\n isCompleteDateInput(inputFromValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();\n\n const hasValidateError = inputFromInvalid || inputToInvalid || bothInvalid;\n\n const { monthFrom, monthTo, handleMonthFromChange, handleMonthToChange } =\n usePopoverViewMonthes({\n dateFrom,\n dateTo,\n defaultMonth,\n resetKey,\n });\n\n const handleValidInputFrom = useCallback(() => {\n setInputFromInvalid(\n inputFromValue !== '' && !isValidInputValue(inputFromValue, minDate, maxDate, offDays),\n );\n }, [inputFromValue, maxDate, minDate, offDays]);\n\n const handleValidInputTo = useCallback(() => {\n setInputToInvalid(\n inputToValue !== '' &&\n !isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays),\n );\n }, [dateFrom, inputToValue, maxDate, minDate, offDays]);\n\n const handleInputFromChange: Required<CalendarInputProps>['onInputChange'] = (\n event,\n payload,\n ) => {\n setInputFromValue(payload.value);\n inputFromProps.onInputChange?.(event, payload);\n };\n\n const handleInputToChange: Required<CalendarInputProps>['onInputChange'] = (event, payload) => {\n setInputToValue(payload.value);\n inputToProps.onInputChange?.(event, payload);\n };\n\n const handleInputFromBlur = useCallback(() => {\n handleValidInputFrom();\n setResetKey(+new Date());\n }, [handleValidInputFrom]);\n\n const handleInputToBlur = useCallback(() => {\n handleValidInputTo();\n setResetKey(+new Date());\n }, [handleValidInputTo]);\n\n const handleFromChange: Required<CalendarInputProps>['onChange'] = useCallback((_, payload) => {\n setInputFromValue(payload.value);\n }, []);\n\n const handleToChange: Required<CalendarInputProps>['onChange'] = useCallback((_, payload) => {\n setInputToValue(payload.value);\n }, []);\n\n useEffect(() => {\n setInputFromValue(valueFrom);\n }, [valueFrom]);\n\n useEffect(() => {\n setInputToValue(valueTo);\n }, [valueTo]);\n\n useDidUpdateEffect(() => {\n onDateFromChange({ value: inputFromValue, date: dateFrom });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo,\n });\n\n if (!inputFromValue || isCompleteDateInput(inputFromValue)) {\n handleValidInputFrom();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputFromValue]);\n\n useDidUpdateEffect(() => {\n onDateToChange({ value: inputToValue, date: dateTo });\n\n // eslint-disable-next-line no-nested-ternary\n const inputDateTo = returnInvalidDates\n ? isCompleteDateInput(inputToValue)\n ? parseDateString(inputToValue).getTime()\n : null\n : dateTo;\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo: inputDateTo,\n });\n\n if (!inputToValue || isCompleteDateInput(inputToValue)) {\n handleValidInputTo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputToValue]);\n\n useEffect(() => {\n if (onError) {\n onError(hasValidateError);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasValidateError]);\n\n return (\n <div className={cn(styles.component, className)} data-test-id={dataTestId}>\n <CalendarInput\n {...inputFromProps}\n useAnchorWidth={false}\n calendarPosition='popover'\n popoverPosition='bottom-start'\n error={inputFromInvalid || bothInvalid || inputFromProps.error}\n onChange={handleFromChange}\n onInputChange={handleInputFromChange}\n onBlur={handleInputFromBlur}\n value={inputFromValue}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n calendarProps={{\n ...inputFromProps.calendarProps,\n month: monthFrom,\n onMonthChange: handleMonthFromChange,\n selectorView: 'full',\n }}\n />\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <CalendarInput\n {...inputToProps}\n useAnchorWidth={false}\n calendarPosition='popover'\n popoverPosition='bottom-end'\n error={inputToInvalid || bothInvalid || inputToProps.error}\n onChange={handleToChange}\n onInputChange={handleInputToChange}\n onBlur={handleInputToBlur}\n value={inputToValue}\n minDate={dateFrom || minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n calendarProps={{\n ...inputToProps.calendarProps,\n month: monthTo,\n onMonthChange: handleMonthToChange,\n selectorView: 'full',\n }}\n />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { FC } from 'react';
2
- import { CalendarRangeProps } from '../Component';
1
+ import { type FC } from 'react';
2
+ import { type CalendarRangeProps } from '../Component';
3
3
  export declare type CalendarRangeStaticProps = Omit<CalendarRangeProps, 'calendarPosition'> & {
4
4
  /**
5
5
  * Отображать начальный месяц слева или справа (влияет только на начальный рендер)
@@ -156,7 +156,9 @@ const CalendarRangeStatic = ({ className, defaultMonth = startOfMonth(new Date()
156
156
  const minMaxInSameMonth = minDate && maxDate && isSameMonth(minDate, maxDate);
157
157
  return (
158
158
  // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
159
- React.createElement("div", { className: cn(styles.component, styles.static, className), onMouseOver: handleMouseOver, "data-test-id": dataTestId },
159
+ React.createElement("div", { className: cn(styles.component, styles.static, className),
160
+ // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
161
+ onMouseOver: handleMouseOver, "data-test-id": dataTestId },
160
162
  React.createElement("div", null,
161
163
  React.createElement(DateInput, { ...dateInputFromProps, mobileMode: dateInputFromProps.mobileMode === 'popover'
162
164
  ? 'input'
@@ -1 +1 @@
1
- {"version":3,"file":"static.js","sources":["../../src/views/static.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React, { FC, MouseEvent, useCallback, useEffect, useState } from 'react';\nimport cn from 'classnames';\nimport addMonths from 'date-fns/addMonths';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport max from 'date-fns/max';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport subMonths from 'date-fns/subMonths';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\nimport { usePeriodWithReset } from '@alfalab/core-components-calendar/shared';\nimport {\n formatDate,\n isValidInputValue,\n parseDateString,\n} from '@alfalab/core-components-calendar-input/shared';\nimport {\n DateInput,\n DateInputProps,\n isCompleteDateInput,\n} from '@alfalab/core-components-date-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { useSelectionProps, useStaticViewMonthes } from '../hooks';\nimport { isDayButton } from '../utils';\n\nimport styles from './index.module.css';\n\nexport type CalendarRangeStaticProps = Omit<CalendarRangeProps, 'calendarPosition'> & {\n /**\n * Отображать начальный месяц слева или справа (влияет только на начальный рендер)\n */\n defaultMonthPosition?: 'left' | 'right';\n};\n\nexport const CalendarRangeStatic: FC<CalendarRangeStaticProps> = ({\n className,\n defaultMonth = startOfMonth(new Date()).getTime(),\n defaultMonthPosition = 'left',\n minDate,\n maxDate,\n valueFrom = '',\n valueTo = '',\n onDateFromChange = () => null,\n onDateToChange = () => null,\n onChange = () => null,\n onError,\n inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n calendarContainerClassName,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n let dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)\n ? parseDateString(inputFromValue).getTime()\n : null;\n\n const dateTo = isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays)\n ? parseDateString(inputToValue).getTime()\n : null;\n\n if (isCompleteDateInput(inputToValue) && !dateTo && !returnInvalidDates) {\n dateFrom = null;\n }\n\n const bothInvalid =\n isCompleteDateInput(inputFromValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();\n\n const [highlightedDate, setHighlightedDate] = useState<number | undefined>(undefined);\n\n const period = usePeriodWithReset({\n initialSelectedFrom: dateFrom ? parseDateString(inputFromValue).getTime() : undefined,\n initialSelectedTo: dateTo ? parseDateString(inputToValue).getTime() : undefined,\n });\n\n const validateInputFromValue = useCallback(\n (value: string) => isValidInputValue(value, minDate, dateFrom || maxDate, offDays),\n [dateFrom, maxDate, minDate, offDays],\n );\n\n const validateInputToValue = useCallback(\n (value: string) => isValidInputValue(value, dateFrom || minDate, maxDate, offDays),\n\n [dateFrom, minDate, maxDate, offDays],\n );\n\n const [inputFromInvalid, setInputFromInvalid] = useState<boolean>(\n isCompleteDateInput(inputFromValue) && dateFrom === null,\n );\n\n const [inputToInvalid, setInputToInvalid] = useState<boolean>(\n isCompleteDateInput(inputToValue) && dateTo === null,\n );\n\n const hasValidateError = bothInvalid || inputFromInvalid || inputToInvalid;\n const {\n calendarProps: calendarFromProps,\n onInputChange: onInputChangeFrom,\n ...dateInputFromProps\n } = inputFromProps;\n const {\n calendarProps: calendarToProps,\n onInputChange: onInputChangeTo,\n ...dateInputToProps\n } = inputToProps;\n\n const { monthFrom, monthTo, handleMonthFromChange, handleMonthToChange } = useStaticViewMonthes(\n {\n selectedFrom: period.selectedFrom,\n selectedTo: period.selectedTo,\n defaultMonth,\n defaultMonthPosition,\n },\n );\n\n const handleValidInputFrom = useCallback(() => {\n setInputFromInvalid(inputFromValue !== '' && !validateInputFromValue(inputFromValue));\n }, [inputFromValue, validateInputFromValue]);\n\n const handleValidInputTo = useCallback(() => {\n setInputToInvalid(inputToValue !== '' && !validateInputToValue(inputToValue));\n }, [inputToValue, validateInputToValue]);\n\n const handleInputFromChange: Required<DateInputProps>['onChange'] = (event, payload) => {\n setInputFromValue(payload.value);\n onInputChangeFrom?.(event, payload);\n };\n\n const handleInputToChange: Required<DateInputProps>['onChange'] = (event, payload) => {\n setInputToValue(payload.value);\n onInputChangeTo?.(event, payload);\n };\n\n const handleMouseOver = useCallback((event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement;\n\n const mouseOverDayButton = isDayButton(target) || isDayButton(target.parentElement);\n\n let date;\n\n if (mouseOverDayButton) {\n const button =\n target.tagName === 'BUTTON' ? target : (target.parentElement as HTMLButtonElement);\n\n if (button.dataset.date) {\n date = +button.dataset.date;\n }\n }\n\n setHighlightedDate(date);\n }, []);\n\n const handleClearFrom = useCallback(() => {\n setInputFromValue('');\n }, []);\n\n const handleClearTo = useCallback(() => {\n setInputToValue('');\n }, []);\n\n useEffect(() => {\n setInputFromValue(period.selectedFrom ? formatDate(period.selectedFrom) : '');\n }, [period.selectedFrom]);\n\n useEffect(() => {\n setInputToValue(period.selectedTo ? formatDate(period.selectedTo) : '');\n }, [period.selectedTo]);\n\n useEffect(() => {\n setInputFromValue(valueFrom);\n }, [valueFrom]);\n\n useEffect(() => {\n setInputToValue(valueTo);\n }, [valueTo]);\n\n useEffect(() => {\n if (!inputFromValue || isCompleteDateInput(inputFromValue)) {\n handleValidInputFrom();\n }\n\n period.setStart(dateFrom || undefined);\n if (dateTo) {\n period.setEnd(dateTo);\n }\n\n if (inputFromValue !== valueFrom) {\n onDateFromChange({\n value: inputFromValue,\n date: dateFrom,\n });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputFromValue]);\n\n useEffect(() => {\n if (!inputToValue || isCompleteDateInput(inputToValue)) {\n handleValidInputTo();\n }\n\n period.setEnd(dateTo || undefined);\n if (dateFrom) {\n period.setStart(dateFrom);\n }\n\n if (inputToValue !== valueTo) {\n // eslint-disable-next-line no-nested-ternary\n const inputDateTo = returnInvalidDates\n ? isCompleteDateInput(inputToValue)\n ? parseDateString(inputToValue).getTime()\n : null\n : dateTo;\n\n onDateToChange({\n value: inputToValue,\n date: inputDateTo,\n });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo: inputDateTo,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputToValue]);\n\n useEffect(() => {\n if (onError) {\n onError(hasValidateError);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasValidateError]);\n\n const rangeProps = useSelectionProps(period.selectedFrom, period.selectedTo, highlightedDate);\n\n const CalendarFromComponent = dateInputFromProps.Calendar || CalendarDesktop;\n const CalendarToComponent = dateInputToProps.Calendar || CalendarDesktop;\n\n const minMaxInSameMonth = minDate && maxDate && isSameMonth(minDate, maxDate);\n\n return (\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n <div\n className={cn(styles.component, styles.static, className)}\n onMouseOver={handleMouseOver}\n data-test-id={dataTestId}\n >\n <div>\n <DateInput\n {...dateInputFromProps}\n mobileMode={\n dateInputFromProps.mobileMode === 'popover'\n ? 'input'\n : dateInputFromProps.mobileMode\n }\n value={inputFromValue}\n onChange={handleInputFromChange}\n onClear={handleClearFrom}\n onBlur={handleValidInputFrom}\n error={bothInvalid || inputFromInvalid || dateInputFromProps.error}\n clear={true}\n block={true}\n />\n <div\n className={cn(styles.calendarContainer, calendarContainerClassName)}\n data-test-id={getDataTestId(dataTestId, 'container-from')}\n >\n <CalendarFromComponent\n {...calendarFromProps}\n className={cn(styles.calendar, calendarFromProps?.className)}\n month={monthFrom}\n selectorView='month-only'\n offDays={offDays}\n events={events}\n onChange={period.updatePeriod}\n onMonthChange={handleMonthFromChange}\n minDate={minDate}\n maxDate={\n minMaxInSameMonth\n ? maxDate\n : maxDate &&\n max([maxDate, endOfMonth(subMonths(maxDate, 1))]).getTime()\n }\n {...rangeProps}\n />\n </div>\n </div>\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <div>\n <DateInput\n {...dateInputToProps}\n mobileMode={\n dateInputToProps.mobileMode === 'popover'\n ? 'input'\n : dateInputToProps.mobileMode\n }\n value={inputToValue}\n onChange={handleInputToChange}\n onClear={handleClearTo}\n onBlur={handleValidInputTo}\n error={bothInvalid || inputToInvalid || dateInputToProps.error}\n clear={true}\n block={true}\n />\n <div data-test-id={getDataTestId(dataTestId, 'container-to')}>\n <CalendarToComponent\n {...calendarToProps}\n className={cn(styles.calendar, calendarToProps?.className)}\n month={monthTo}\n selectorView='month-only'\n offDays={offDays}\n events={events}\n onChange={period.updatePeriod}\n onMonthChange={handleMonthToChange}\n minDate={\n minMaxInSameMonth\n ? minDate\n : minDate && startOfMonth(addMonths(minDate, 1)).getTime()\n }\n maxDate={maxDate}\n {...rangeProps}\n />\n </div>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"static.js","sources":["../../src/views/static.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React, { type FC, type MouseEvent, useCallback, useEffect, useState } from 'react';\nimport cn from 'classnames';\nimport addMonths from 'date-fns/addMonths';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport max from 'date-fns/max';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport subMonths from 'date-fns/subMonths';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\nimport { usePeriodWithReset } from '@alfalab/core-components-calendar/shared';\nimport {\n formatDate,\n isValidInputValue,\n parseDateString,\n} from '@alfalab/core-components-calendar-input/shared';\nimport {\n DateInput,\n type DateInputProps,\n isCompleteDateInput,\n} from '@alfalab/core-components-date-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { type CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { useSelectionProps, useStaticViewMonthes } from '../hooks';\nimport { isDayButton } from '../utils';\n\nimport styles from './index.module.css';\n\nexport type CalendarRangeStaticProps = Omit<CalendarRangeProps, 'calendarPosition'> & {\n /**\n * Отображать начальный месяц слева или справа (влияет только на начальный рендер)\n */\n defaultMonthPosition?: 'left' | 'right';\n};\n\nexport const CalendarRangeStatic: FC<CalendarRangeStaticProps> = ({\n className,\n defaultMonth = startOfMonth(new Date()).getTime(),\n defaultMonthPosition = 'left',\n minDate,\n maxDate,\n valueFrom = '',\n valueTo = '',\n onDateFromChange = () => null,\n onDateToChange = () => null,\n onChange = () => null,\n onError,\n inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n calendarContainerClassName,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n let dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)\n ? parseDateString(inputFromValue).getTime()\n : null;\n\n const dateTo = isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays)\n ? parseDateString(inputToValue).getTime()\n : null;\n\n if (isCompleteDateInput(inputToValue) && !dateTo && !returnInvalidDates) {\n dateFrom = null;\n }\n\n const bothInvalid =\n isCompleteDateInput(inputFromValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();\n\n const [highlightedDate, setHighlightedDate] = useState<number | undefined>(undefined);\n\n const period = usePeriodWithReset({\n initialSelectedFrom: dateFrom ? parseDateString(inputFromValue).getTime() : undefined,\n initialSelectedTo: dateTo ? parseDateString(inputToValue).getTime() : undefined,\n });\n\n const validateInputFromValue = useCallback(\n (value: string) => isValidInputValue(value, minDate, dateFrom || maxDate, offDays),\n [dateFrom, maxDate, minDate, offDays],\n );\n\n const validateInputToValue = useCallback(\n (value: string) => isValidInputValue(value, dateFrom || minDate, maxDate, offDays),\n\n [dateFrom, minDate, maxDate, offDays],\n );\n\n const [inputFromInvalid, setInputFromInvalid] = useState<boolean>(\n isCompleteDateInput(inputFromValue) && dateFrom === null,\n );\n\n const [inputToInvalid, setInputToInvalid] = useState<boolean>(\n isCompleteDateInput(inputToValue) && dateTo === null,\n );\n\n const hasValidateError = bothInvalid || inputFromInvalid || inputToInvalid;\n const {\n calendarProps: calendarFromProps,\n onInputChange: onInputChangeFrom,\n ...dateInputFromProps\n } = inputFromProps;\n const {\n calendarProps: calendarToProps,\n onInputChange: onInputChangeTo,\n ...dateInputToProps\n } = inputToProps;\n\n const { monthFrom, monthTo, handleMonthFromChange, handleMonthToChange } = useStaticViewMonthes(\n {\n selectedFrom: period.selectedFrom,\n selectedTo: period.selectedTo,\n defaultMonth,\n defaultMonthPosition,\n },\n );\n\n const handleValidInputFrom = useCallback(() => {\n setInputFromInvalid(inputFromValue !== '' && !validateInputFromValue(inputFromValue));\n }, [inputFromValue, validateInputFromValue]);\n\n const handleValidInputTo = useCallback(() => {\n setInputToInvalid(inputToValue !== '' && !validateInputToValue(inputToValue));\n }, [inputToValue, validateInputToValue]);\n\n const handleInputFromChange: Required<DateInputProps>['onChange'] = (event, payload) => {\n setInputFromValue(payload.value);\n onInputChangeFrom?.(event, payload);\n };\n\n const handleInputToChange: Required<DateInputProps>['onChange'] = (event, payload) => {\n setInputToValue(payload.value);\n onInputChangeTo?.(event, payload);\n };\n\n const handleMouseOver = useCallback((event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement;\n\n const mouseOverDayButton = isDayButton(target) || isDayButton(target.parentElement);\n\n let date;\n\n if (mouseOverDayButton) {\n const button =\n target.tagName === 'BUTTON' ? target : (target.parentElement as HTMLButtonElement);\n\n if (button.dataset.date) {\n date = +button.dataset.date;\n }\n }\n\n setHighlightedDate(date);\n }, []);\n\n const handleClearFrom = useCallback(() => {\n setInputFromValue('');\n }, []);\n\n const handleClearTo = useCallback(() => {\n setInputToValue('');\n }, []);\n\n useEffect(() => {\n setInputFromValue(period.selectedFrom ? formatDate(period.selectedFrom) : '');\n }, [period.selectedFrom]);\n\n useEffect(() => {\n setInputToValue(period.selectedTo ? formatDate(period.selectedTo) : '');\n }, [period.selectedTo]);\n\n useEffect(() => {\n setInputFromValue(valueFrom);\n }, [valueFrom]);\n\n useEffect(() => {\n setInputToValue(valueTo);\n }, [valueTo]);\n\n useEffect(() => {\n if (!inputFromValue || isCompleteDateInput(inputFromValue)) {\n handleValidInputFrom();\n }\n\n period.setStart(dateFrom || undefined);\n if (dateTo) {\n period.setEnd(dateTo);\n }\n\n if (inputFromValue !== valueFrom) {\n onDateFromChange({\n value: inputFromValue,\n date: dateFrom,\n });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputFromValue]);\n\n useEffect(() => {\n if (!inputToValue || isCompleteDateInput(inputToValue)) {\n handleValidInputTo();\n }\n\n period.setEnd(dateTo || undefined);\n if (dateFrom) {\n period.setStart(dateFrom);\n }\n\n if (inputToValue !== valueTo) {\n // eslint-disable-next-line no-nested-ternary\n const inputDateTo = returnInvalidDates\n ? isCompleteDateInput(inputToValue)\n ? parseDateString(inputToValue).getTime()\n : null\n : dateTo;\n\n onDateToChange({\n value: inputToValue,\n date: inputDateTo,\n });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo: inputDateTo,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputToValue]);\n\n useEffect(() => {\n if (onError) {\n onError(hasValidateError);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasValidateError]);\n\n const rangeProps = useSelectionProps(period.selectedFrom, period.selectedTo, highlightedDate);\n\n const CalendarFromComponent = dateInputFromProps.Calendar || CalendarDesktop;\n const CalendarToComponent = dateInputToProps.Calendar || CalendarDesktop;\n\n const minMaxInSameMonth = minDate && maxDate && isSameMonth(minDate, maxDate);\n\n return (\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n <div\n className={cn(styles.component, styles.static, className)}\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n onMouseOver={handleMouseOver}\n data-test-id={dataTestId}\n >\n <div>\n <DateInput\n {...dateInputFromProps}\n mobileMode={\n dateInputFromProps.mobileMode === 'popover'\n ? 'input'\n : dateInputFromProps.mobileMode\n }\n value={inputFromValue}\n onChange={handleInputFromChange}\n onClear={handleClearFrom}\n onBlur={handleValidInputFrom}\n error={bothInvalid || inputFromInvalid || dateInputFromProps.error}\n clear={true}\n block={true}\n />\n <div\n className={cn(styles.calendarContainer, calendarContainerClassName)}\n data-test-id={getDataTestId(dataTestId, 'container-from')}\n >\n <CalendarFromComponent\n {...calendarFromProps}\n className={cn(styles.calendar, calendarFromProps?.className)}\n month={monthFrom}\n selectorView='month-only'\n offDays={offDays}\n events={events}\n onChange={period.updatePeriod}\n onMonthChange={handleMonthFromChange}\n minDate={minDate}\n maxDate={\n minMaxInSameMonth\n ? maxDate\n : maxDate &&\n max([maxDate, endOfMonth(subMonths(maxDate, 1))]).getTime()\n }\n {...rangeProps}\n />\n </div>\n </div>\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <div>\n <DateInput\n {...dateInputToProps}\n mobileMode={\n dateInputToProps.mobileMode === 'popover'\n ? 'input'\n : dateInputToProps.mobileMode\n }\n value={inputToValue}\n onChange={handleInputToChange}\n onClear={handleClearTo}\n onBlur={handleValidInputTo}\n error={bothInvalid || inputToInvalid || dateInputToProps.error}\n clear={true}\n block={true}\n />\n <div data-test-id={getDataTestId(dataTestId, 'container-to')}>\n <CalendarToComponent\n {...calendarToProps}\n className={cn(styles.calendar, calendarToProps?.className)}\n month={monthTo}\n selectorView='month-only'\n offDays={offDays}\n events={events}\n onChange={period.updatePeriod}\n onMonthChange={handleMonthToChange}\n minDate={\n minMaxInSameMonth\n ? minDate\n : minDate && startOfMonth(addMonths(minDate, 1)).getTime()\n }\n maxDate={maxDate}\n {...rangeProps}\n />\n </div>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { FC } from 'react';
2
- import { CalendarInputProps } from '@alfalab/core-components-calendar-input/moderncssm';
1
+ import { type FC } from 'react';
2
+ import { type CalendarInputProps } from '@alfalab/core-components-calendar-input/moderncssm';
3
3
  export declare type CalendarRangeProps = {
4
4
  /**
5
5
  * Дополнительный класс
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { FC } from 'react';\n\nimport { CalendarInputProps } from '@alfalab/core-components-calendar-input';\n\nimport { CalendarRangePopover } from './views/popover';\nimport { CalendarRangeStatic } from './views/static';\n\nexport type CalendarRangeProps = {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Значение инпута (используется и для календаря)\n */\n valueFrom?: string;\n\n /**\n * Значение инпута (используется и для календаря)\n */\n valueTo?: string;\n\n /**\n * Месяц в календаре по умолчанию\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 onDateFromChange?: (payload: { date: number | null; value: string }) => void;\n\n /**\n * Обработчик изменения даты до\n */\n onDateToChange?: (payload: { date: number | null; value: string }) => void;\n\n /**\n * Обработчик изменения\n */\n onChange?: (payload: {\n dateFrom: number | null;\n valueFrom: string;\n dateTo: number | null;\n valueTo: string;\n }) => void;\n\n /**\n * Коллбэк, срабатывающий при возникновении ошибок валидации дат внутри компонента.\n */\n onError?: (hasError: boolean) => void;\n\n /**\n * Список событий\n */\n events?: Array<Date | number>;\n\n /**\n * Список выходных\n */\n offDays?: Array<Date | number>;\n\n /**\n * Пропсы для инпута даты от\n */\n inputFromProps?: CalendarInputProps;\n\n /**\n * Пропсы для инпута даты до\n */\n inputToProps?: CalendarInputProps;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Определяет, как рендерить календарь — в поповере или снизу инпута\n */\n calendarPosition?: 'static' | 'popover';\n\n /**\n * calendarPosition = static\n * Отображать начальный месяц слева или справа (влияет только на начальный рендер)\n */\n defaultMonthPosition?: 'left' | 'right';\n\n /**\n * Возвращать невалидную дату для кастомной валидации\n */\n returnInvalidDates?: boolean;\n\n /**\n * Дополнительный класс для контейнера календаря\n */\n calendarContainerClassName?: string;\n};\n\nexport const CalendarRange: FC<CalendarRangeProps> = ({\n calendarPosition = 'static',\n ...restProps\n}) => {\n const View = calendarPosition === 'popover' ? CalendarRangePopover : CalendarRangeStatic;\n\n return <View {...restProps} />;\n};\n"],"names":[],"mappings":";;;;AA8GO,MAAM,aAAa,GAA2B,CAAC,EAClD,gBAAgB,GAAG,QAAQ,EAC3B,GAAG,SAAS,EACf,KAAI;AACD,IAAA,MAAM,IAAI,GAAG,gBAAgB,KAAK,SAAS,GAAG,oBAAoB,GAAG,mBAAmB;AAExF,IAAA,OAAO,KAAC,CAAA,aAAA,CAAA,IAAI,EAAK,EAAA,GAAA,SAAS,GAAI;AAClC;;;;"}
1
+ {"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { type FC } from 'react';\n\nimport { type CalendarInputProps } from '@alfalab/core-components-calendar-input';\n\nimport { CalendarRangePopover } from './views/popover';\nimport { CalendarRangeStatic } from './views/static';\n\nexport type CalendarRangeProps = {\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Значение инпута (используется и для календаря)\n */\n valueFrom?: string;\n\n /**\n * Значение инпута (используется и для календаря)\n */\n valueTo?: string;\n\n /**\n * Месяц в календаре по умолчанию\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 onDateFromChange?: (payload: { date: number | null; value: string }) => void;\n\n /**\n * Обработчик изменения даты до\n */\n onDateToChange?: (payload: { date: number | null; value: string }) => void;\n\n /**\n * Обработчик изменения\n */\n onChange?: (payload: {\n dateFrom: number | null;\n valueFrom: string;\n dateTo: number | null;\n valueTo: string;\n }) => void;\n\n /**\n * Коллбэк, срабатывающий при возникновении ошибок валидации дат внутри компонента.\n */\n onError?: (hasError: boolean) => void;\n\n /**\n * Список событий\n */\n events?: Array<Date | number>;\n\n /**\n * Список выходных\n */\n offDays?: Array<Date | number>;\n\n /**\n * Пропсы для инпута даты от\n */\n inputFromProps?: CalendarInputProps;\n\n /**\n * Пропсы для инпута даты до\n */\n inputToProps?: CalendarInputProps;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Определяет, как рендерить календарь — в поповере или снизу инпута\n */\n calendarPosition?: 'static' | 'popover';\n\n /**\n * calendarPosition = static\n * Отображать начальный месяц слева или справа (влияет только на начальный рендер)\n */\n defaultMonthPosition?: 'left' | 'right';\n\n /**\n * Возвращать невалидную дату для кастомной валидации\n */\n returnInvalidDates?: boolean;\n\n /**\n * Дополнительный класс для контейнера календаря\n */\n calendarContainerClassName?: string;\n};\n\nexport const CalendarRange: FC<CalendarRangeProps> = ({\n calendarPosition = 'static',\n ...restProps\n}) => {\n const View = calendarPosition === 'popover' ? CalendarRangePopover : CalendarRangeStatic;\n\n return <View {...restProps} />;\n};\n"],"names":[],"mappings":";;;;AA8GO,MAAM,aAAa,GAA2B,CAAC,EAClD,gBAAgB,GAAG,QAAQ,EAC3B,GAAG,SAAS,EACf,KAAI;AACD,IAAA,MAAM,IAAI,GAAG,gBAAgB,KAAK,SAAS,GAAG,oBAAoB,GAAG,mBAAmB;AAExF,IAAA,OAAO,KAAC,CAAA,aAAA,CAAA,IAAI,EAAK,EAAA,GAAA,SAAS,GAAI;AAClC;;;;"}
@@ -1,5 +1,5 @@
1
- import { FC } from 'react';
2
- import { CalendarRangeProps } from '../../Component';
1
+ import { type FC } from 'react';
2
+ import { type CalendarRangeProps } from '../../Component';
3
3
  declare type Props = {
4
4
  inputFromProps?: CalendarRangeProps['inputFromProps'];
5
5
  inputToProps?: CalendarRangeProps['inputToProps'];
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../../src/components/divider/Component.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport { CalendarRangeProps } from '../../Component';\n\nimport styles from './index.module.css';\n\ntype Props = {\n inputFromProps?: CalendarRangeProps['inputFromProps'];\n inputToProps?: CalendarRangeProps['inputToProps'];\n};\n\nexport const Divider: FC<Props> = ({ inputFromProps, inputToProps }) => {\n const outer =\n inputFromProps?.label &&\n inputFromProps?.labelView === 'outer' &&\n inputToProps?.label &&\n inputToProps?.labelView === 'outer';\n\n const size = inputFromProps?.size || inputToProps?.size || 's';\n\n return <span className={cn(styles.component, styles[size], { [styles.outer]: outer })} />;\n};\n"],"names":[],"mappings":";;;;AAYa,MAAA,OAAO,GAAc,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,KAAI;AACnE,IAAA,MAAM,KAAK,GACP,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,SAAS,KAAK,OAAO;AACrC,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,YAAY,EAAE,SAAS,KAAK,OAAO;IAEvC,MAAM,IAAI,GAAG,cAAc,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI,GAAG;IAE9D,OAAO,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,EAAA,CAAI;AAC7F;;;;"}
1
+ {"version":3,"file":"Component.js","sources":["../../../src/components/divider/Component.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport { type CalendarRangeProps } from '../../Component';\n\nimport styles from './index.module.css';\n\ntype Props = {\n inputFromProps?: CalendarRangeProps['inputFromProps'];\n inputToProps?: CalendarRangeProps['inputToProps'];\n};\n\nexport const Divider: FC<Props> = ({ inputFromProps, inputToProps }) => {\n const outer =\n inputFromProps?.label &&\n inputFromProps?.labelView === 'outer' &&\n inputToProps?.label &&\n inputToProps?.labelView === 'outer';\n\n const size = inputFromProps?.size || inputToProps?.size || 's';\n\n return <span className={cn(styles.component, styles[size], { [styles.outer]: outer })} />;\n};\n"],"names":[],"mappings":";;;;AAYa,MAAA,OAAO,GAAc,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,KAAI;AACnE,IAAA,MAAM,KAAK,GACP,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,SAAS,KAAK,OAAO;AACrC,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,YAAY,EAAE,SAAS,KAAK,OAAO;IAEvC,MAAM,IAAI,GAAG,cAAc,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI,GAAG;IAE9D,OAAO,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,EAAA,CAAI;AAC7F;;;;"}
@@ -3,8 +3,9 @@
3
3
  align-items: center;
4
4
  justify-content: center;
5
5
  width: 16px;
6
- margin: var(--gap-0) var(--gap-8)
6
+ margin: var(--gap-0) var(--gap-8);
7
7
  }
8
+
8
9
  .component:after {
9
10
  content: '';
10
11
  display: block;
@@ -12,19 +13,24 @@
12
13
  height: 1px;
13
14
  background-color: var(--color-light-neutral-translucent-1300);
14
15
  }
16
+
15
17
  .outer {
16
18
  position: relative;
17
19
  top: var(--gap-24);
18
20
  }
21
+
19
22
  .s {
20
23
  height: var(--size-s-height);
21
24
  }
25
+
22
26
  .m {
23
27
  height: var(--size-m-height);
24
28
  }
29
+
25
30
  .l {
26
31
  height: var(--size-l-height);
27
32
  }
33
+
28
34
  .xl {
29
35
  height: var(--size-xl-height);
30
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../src/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport addMonths from 'date-fns/addMonths';\nimport isEqual from 'date-fns/isEqual';\nimport max from 'date-fns/max';\nimport min from 'date-fns/min';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport subMonths from 'date-fns/subMonths';\n\nexport function usePopoverViewMonthes({\n dateFrom,\n dateTo,\n defaultMonth,\n resetKey,\n}: {\n defaultMonth: number;\n dateFrom: number | null;\n dateTo: number | null;\n resetKey?: number;\n}) {\n const [monthFrom, setMonthFrom] = useState<number>();\n const [monthTo, setMonthTo] = useState<number>();\n\n const handleMonthFromChange = useCallback(\n (newMonthFrom: number) => {\n setMonthFrom(newMonthFrom);\n\n if (!dateTo) {\n setMonthTo(newMonthFrom);\n }\n },\n [dateTo],\n );\n\n const handleMonthToChange = useCallback(\n (newMonthTo: number) => {\n setMonthTo(newMonthTo);\n\n if (!dateFrom) {\n setMonthFrom(newMonthTo);\n }\n },\n [dateFrom],\n );\n\n useEffect(() => {\n setMonthFrom(dateFrom ? startOfMonth(dateFrom).getTime() : defaultMonth);\n }, [defaultMonth, dateFrom, resetKey]);\n\n useEffect(() => {\n setMonthTo(dateTo ? startOfMonth(dateTo).getTime() : monthFrom);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dateTo, resetKey]);\n\n return {\n monthFrom,\n monthTo,\n handleMonthFromChange,\n handleMonthToChange,\n };\n}\n\nexport function useStaticViewMonthes({\n selectedFrom,\n selectedTo,\n defaultMonth,\n defaultMonthPosition,\n}: {\n selectedFrom?: number;\n selectedTo?: number;\n defaultMonth: number;\n defaultMonthPosition?: 'left' | 'right';\n}) {\n /**\n * Если указана начальная дата — левый месяц равен ей, иначе используется дата конца.\n * Если обе даты не указаны, то используется дефолтный месяц\n */\n let initialMonthFrom = useMemo(\n () => startOfMonth(selectedFrom || selectedTo || defaultMonth).getTime(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n /**\n * Правый месяц должен быть как минимум на 1 месяц больше левого\n */\n let initialMonthTo = useMemo(\n () =>\n max([\n selectedTo ? startOfMonth(selectedTo) : 0,\n addMonths(initialMonthFrom, 1),\n ]).getTime(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n if (defaultMonthPosition === 'right') {\n initialMonthTo = initialMonthFrom;\n initialMonthFrom = subMonths(initialMonthFrom, 1).getTime();\n }\n\n const [monthFrom, setMonthFrom] = useState<number>(initialMonthFrom);\n const [monthTo, setMonthTo] = useState<number>(initialMonthTo);\n\n const handleMonthFromChange = useCallback(\n (newMonthFrom: number) => {\n setMonthFrom(newMonthFrom);\n\n if (monthTo && isEqual(newMonthFrom, monthTo)) {\n const nextMonth = addMonths(newMonthFrom, 1).getTime();\n\n setMonthTo(nextMonth);\n }\n },\n [monthTo],\n );\n\n const handleMonthToChange = useCallback(\n (newMonthTo: number) => {\n setMonthTo(newMonthTo);\n\n if (monthFrom && isEqual(newMonthTo, monthFrom)) {\n const prevMonth = subMonths(newMonthTo, 1).getTime();\n\n setMonthFrom(prevMonth);\n }\n },\n [monthFrom],\n );\n\n // eslint-disable-next-line complexity\n useEffect(() => {\n const selectedFromMonth = selectedFrom ? startOfMonth(selectedFrom).getTime() : undefined;\n const selectedToMonth = selectedTo ? startOfMonth(selectedTo).getTime() : undefined;\n\n // Проверяем, показываются ли выбранные месяцы в левой или правой части компонента\n const fromMonthOnLeft = selectedFromMonth && selectedFromMonth === monthFrom;\n const fromMonthOnRight = selectedFromMonth && selectedFromMonth === monthTo;\n const toMonthOnRight = selectedToMonth && selectedToMonth === monthTo;\n const toMonthOnLeft = selectedToMonth && selectedToMonth === monthFrom;\n const fromMonthOnScreen = fromMonthOnLeft || fromMonthOnRight;\n const toMonthOnScreen = toMonthOnLeft || toMonthOnRight;\n\n if (fromMonthOnLeft && toMonthOnLeft) {\n setMonthTo(max([addMonths(selectedFromMonth as number, 1), monthTo]).getTime());\n\n return;\n }\n\n if (fromMonthOnRight && toMonthOnRight) {\n setMonthFrom(min([subMonths(selectedToMonth as number, 1), monthFrom]).getTime());\n\n return;\n }\n\n if (selectedFromMonth && selectedToMonth) {\n setMonthFrom(selectedFromMonth);\n setMonthTo(max([addMonths(selectedFromMonth, 1), selectedToMonth]).getTime());\n\n return;\n }\n\n if (selectedFromMonth && !selectedToMonth && !fromMonthOnScreen) {\n setMonthFrom(selectedFromMonth);\n setMonthTo(max([addMonths(selectedFromMonth, 1), monthTo]).getTime());\n }\n\n if (selectedToMonth && !selectedFromMonth && !toMonthOnScreen) {\n setMonthTo(selectedToMonth);\n setMonthFrom(min([subMonths(selectedToMonth, 1), monthFrom]).getTime());\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedFrom, selectedTo]);\n\n return {\n monthFrom,\n monthTo,\n handleMonthFromChange,\n handleMonthToChange,\n };\n}\n\nexport function useSelectionProps(from?: number, to?: number, highlighted?: number) {\n return useMemo(() => {\n if (from && to) {\n return {\n rangeComplete: true,\n selectedFrom: min([from, to]).getTime(),\n selectedTo: max([from, to]).getTime(),\n };\n }\n\n const dates = [from, to, highlighted].filter((date) => date !== undefined) as number[];\n\n return {\n rangeComplete: false,\n selectedFrom: from || dates.length === 2 ? min(dates).getTime() : undefined,\n selectedTo: to || dates.length === 2 ? max(dates).getTime() : undefined,\n };\n }, [from, highlighted, to]);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../src/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport addMonths from 'date-fns/addMonths';\nimport isEqual from 'date-fns/isEqual';\nimport max from 'date-fns/max';\nimport min from 'date-fns/min';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport subMonths from 'date-fns/subMonths';\n\nexport function usePopoverViewMonthes({\n dateFrom,\n dateTo,\n defaultMonth,\n resetKey,\n}: {\n defaultMonth: number;\n dateFrom: number | null;\n dateTo: number | null;\n resetKey?: number;\n}) {\n const [monthFrom, setMonthFrom] = useState<number>();\n const [monthTo, setMonthTo] = useState<number>();\n\n const handleMonthFromChange = useCallback(\n (newMonthFrom: number) => {\n setMonthFrom(newMonthFrom);\n\n if (!dateTo) {\n setMonthTo(newMonthFrom);\n }\n },\n [dateTo],\n );\n\n const handleMonthToChange = useCallback(\n (newMonthTo: number) => {\n setMonthTo(newMonthTo);\n\n if (!dateFrom) {\n setMonthFrom(newMonthTo);\n }\n },\n [dateFrom],\n );\n\n useEffect(() => {\n setMonthFrom(dateFrom ? startOfMonth(dateFrom).getTime() : defaultMonth);\n }, [defaultMonth, dateFrom, resetKey]);\n\n useEffect(() => {\n setMonthTo(dateTo ? startOfMonth(dateTo).getTime() : monthFrom);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dateTo, resetKey]);\n\n return {\n monthFrom,\n monthTo,\n handleMonthFromChange,\n handleMonthToChange,\n };\n}\n\nexport function useStaticViewMonthes({\n selectedFrom,\n selectedTo,\n defaultMonth,\n defaultMonthPosition,\n}: {\n selectedFrom?: number;\n selectedTo?: number;\n defaultMonth: number;\n defaultMonthPosition?: 'left' | 'right';\n}) {\n /**\n * Если указана начальная дата — левый месяц равен ей, иначе используется дата конца.\n * Если обе даты не указаны, то используется дефолтный месяц\n */\n let initialMonthFrom = useMemo(\n () => startOfMonth(selectedFrom || selectedTo || defaultMonth).getTime(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n /**\n * Правый месяц должен быть как минимум на 1 месяц больше левого\n */\n let initialMonthTo = useMemo(\n () =>\n max([\n selectedTo ? startOfMonth(selectedTo) : 0,\n addMonths(initialMonthFrom, 1),\n ]).getTime(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n if (defaultMonthPosition === 'right') {\n initialMonthTo = initialMonthFrom;\n initialMonthFrom = subMonths(initialMonthFrom, 1).getTime();\n }\n\n const [monthFrom, setMonthFrom] = useState<number>(initialMonthFrom);\n const [monthTo, setMonthTo] = useState<number>(initialMonthTo);\n\n const handleMonthFromChange = useCallback(\n (newMonthFrom: number) => {\n setMonthFrom(newMonthFrom);\n\n if (monthTo && isEqual(newMonthFrom, monthTo)) {\n const nextMonth = addMonths(newMonthFrom, 1).getTime();\n\n setMonthTo(nextMonth);\n }\n },\n [monthTo],\n );\n\n const handleMonthToChange = useCallback(\n (newMonthTo: number) => {\n setMonthTo(newMonthTo);\n\n if (monthFrom && isEqual(newMonthTo, monthFrom)) {\n const prevMonth = subMonths(newMonthTo, 1).getTime();\n\n setMonthFrom(prevMonth);\n }\n },\n [monthFrom],\n );\n\n // eslint-disable-next-line complexity\n useEffect(() => {\n const selectedFromMonth = selectedFrom ? startOfMonth(selectedFrom).getTime() : undefined;\n const selectedToMonth = selectedTo ? startOfMonth(selectedTo).getTime() : undefined;\n\n // Проверяем, показываются ли выбранные месяцы в левой или правой части компонента\n const fromMonthOnLeft = selectedFromMonth && selectedFromMonth === monthFrom;\n const fromMonthOnRight = selectedFromMonth && selectedFromMonth === monthTo;\n const toMonthOnRight = selectedToMonth && selectedToMonth === monthTo;\n const toMonthOnLeft = selectedToMonth && selectedToMonth === monthFrom;\n const fromMonthOnScreen = fromMonthOnLeft || fromMonthOnRight;\n const toMonthOnScreen = toMonthOnLeft || toMonthOnRight;\n\n if (fromMonthOnLeft && toMonthOnLeft) {\n setMonthTo(max([addMonths(selectedFromMonth, 1), monthTo]).getTime());\n\n return;\n }\n\n if (fromMonthOnRight && toMonthOnRight) {\n setMonthFrom(min([subMonths(selectedToMonth, 1), monthFrom]).getTime());\n\n return;\n }\n\n if (selectedFromMonth && selectedToMonth) {\n setMonthFrom(selectedFromMonth);\n setMonthTo(max([addMonths(selectedFromMonth, 1), selectedToMonth]).getTime());\n\n return;\n }\n\n if (selectedFromMonth && !selectedToMonth && !fromMonthOnScreen) {\n setMonthFrom(selectedFromMonth);\n setMonthTo(max([addMonths(selectedFromMonth, 1), monthTo]).getTime());\n }\n\n if (selectedToMonth && !selectedFromMonth && !toMonthOnScreen) {\n setMonthTo(selectedToMonth);\n setMonthFrom(min([subMonths(selectedToMonth, 1), monthFrom]).getTime());\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedFrom, selectedTo]);\n\n return {\n monthFrom,\n monthTo,\n handleMonthFromChange,\n handleMonthToChange,\n };\n}\n\nexport function useSelectionProps(from?: number, to?: number, highlighted?: number) {\n return useMemo(() => {\n if (from && to) {\n return {\n rangeComplete: true,\n selectedFrom: min([from, to]).getTime(),\n selectedTo: max([from, to]).getTime(),\n };\n }\n\n const dates = [from, to, highlighted].filter((date) => date !== undefined) as number[];\n\n return {\n rangeComplete: false,\n selectedFrom: from || dates.length === 2 ? min(dates).getTime() : undefined,\n selectedTo: to || dates.length === 2 ? max(dates).getTime() : undefined,\n };\n }, [from, highlighted, to]);\n}\n"],"names":[],"mappings":"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"}
@@ -1,24 +1,31 @@
1
1
  :root {
2
2
  --calendar-inner-width: 280px;
3
3
  }
4
+
4
5
  .component {
5
- display: flex
6
+ display: flex;
6
7
  }
8
+
7
9
  .component button[aria-selected='true'] {
8
10
  cursor: pointer;
9
11
  }
12
+
10
13
  .component *[class*='errorIcon_'] {
11
14
  display: none;
12
15
  }
16
+
13
17
  .component *[class*='calendarIcon_'] {
14
18
  margin-right: var(--gap-0);
15
19
  }
20
+
16
21
  .static .calendar {
17
- width: var(--calendar-inner-width)
22
+ width: var(--calendar-inner-width);
18
23
  }
24
+
19
25
  .static .calendar > div:first-child {
20
26
  padding: var(--gap-16) var(--gap-0) var(--gap-12);
21
27
  }
28
+
22
29
  .calendarContainer {
23
30
  width: var(--calendar-inner-width);
24
31
  display: flex;
@@ -1,4 +1,4 @@
1
- import { FC } from 'react';
2
- import { CalendarRangeProps } from '../Component';
1
+ import { type FC } from 'react';
2
+ import { type CalendarRangeProps } from '../Component';
3
3
  export declare type CalendarRangePopoverProps = Omit<CalendarRangeProps, 'calendarPosition'>;
4
4
  export declare const CalendarRangePopover: FC<CalendarRangePopoverProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sources":["../../src/views/popover.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useState } from 'react';\nimport cn from 'classnames';\nimport startOfMonth from 'date-fns/startOfMonth';\n\nimport { CalendarInput, CalendarInputProps } from '@alfalab/core-components-calendar-input';\nimport { isValidInputValue, parseDateString } from '@alfalab/core-components-calendar-input/shared';\nimport { isCompleteDateInput } from '@alfalab/core-components-date-input';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport { CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { usePopoverViewMonthes } from '../hooks';\n\nimport styles from './index.module.css';\n\nexport type CalendarRangePopoverProps = Omit<CalendarRangeProps, 'calendarPosition'>;\n\nexport const CalendarRangePopover: FC<CalendarRangePopoverProps> = ({\n className,\n defaultMonth = startOfMonth(new Date()).getTime(),\n minDate,\n maxDate,\n valueFrom = '',\n valueTo = '',\n onDateFromChange = () => null,\n onDateToChange = () => null,\n onChange = () => null,\n onError,\n inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n /**\n * Ключ для сброса календарей\n * Пользователь открыл календарь, изменил месяц, но ничего не выбрал\n * — при следующем открытии в календаре будет установлен начальный месяц\n */\n const [resetKey, setResetKey] = useState<number>(0);\n\n const dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)\n ? parseDateString(inputFromValue).getTime()\n : null;\n\n const dateTo = isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays)\n ? parseDateString(inputToValue).getTime()\n : null;\n\n const [inputFromInvalid, setInputFromInvalid] = useState<boolean>(\n isCompleteDateInput(inputFromValue) && dateFrom === null,\n );\n const [inputToInvalid, setInputToInvalid] = useState<boolean>(\n isCompleteDateInput(inputToValue) && dateTo === null,\n );\n\n const bothInvalid =\n isCompleteDateInput(inputFromValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();\n\n const hasValidateError = inputFromInvalid || inputToInvalid || bothInvalid;\n\n const { monthFrom, monthTo, handleMonthFromChange, handleMonthToChange } =\n usePopoverViewMonthes({\n dateFrom,\n dateTo,\n defaultMonth,\n resetKey,\n });\n\n const handleValidInputFrom = useCallback(() => {\n setInputFromInvalid(\n inputFromValue !== '' && !isValidInputValue(inputFromValue, minDate, maxDate, offDays),\n );\n }, [inputFromValue, maxDate, minDate, offDays]);\n\n const handleValidInputTo = useCallback(() => {\n setInputToInvalid(\n inputToValue !== '' &&\n !isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays),\n );\n }, [dateFrom, inputToValue, maxDate, minDate, offDays]);\n\n const handleInputFromChange: Required<CalendarInputProps>['onInputChange'] = (\n event,\n payload,\n ) => {\n setInputFromValue(payload.value);\n inputFromProps.onInputChange?.(event, payload);\n };\n\n const handleInputToChange: Required<CalendarInputProps>['onInputChange'] = (event, payload) => {\n setInputToValue(payload.value);\n inputToProps.onInputChange?.(event, payload);\n };\n\n const handleInputFromBlur = useCallback(() => {\n handleValidInputFrom();\n setResetKey(+new Date());\n }, [handleValidInputFrom]);\n\n const handleInputToBlur = useCallback(() => {\n handleValidInputTo();\n setResetKey(+new Date());\n }, [handleValidInputTo]);\n\n const handleFromChange: Required<CalendarInputProps>['onChange'] = useCallback((_, payload) => {\n setInputFromValue(payload.value);\n }, []);\n\n const handleToChange: Required<CalendarInputProps>['onChange'] = useCallback((_, payload) => {\n setInputToValue(payload.value);\n }, []);\n\n useEffect(() => {\n setInputFromValue(valueFrom);\n }, [valueFrom]);\n\n useEffect(() => {\n setInputToValue(valueTo);\n }, [valueTo]);\n\n useDidUpdateEffect(() => {\n onDateFromChange({ value: inputFromValue, date: dateFrom });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo,\n });\n\n if (!inputFromValue || isCompleteDateInput(inputFromValue)) {\n handleValidInputFrom();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputFromValue]);\n\n useDidUpdateEffect(() => {\n onDateToChange({ value: inputToValue, date: dateTo });\n\n // eslint-disable-next-line no-nested-ternary\n const inputDateTo = returnInvalidDates\n ? isCompleteDateInput(inputToValue)\n ? parseDateString(inputToValue).getTime()\n : null\n : dateTo;\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo: inputDateTo,\n });\n\n if (!inputToValue || isCompleteDateInput(inputToValue)) {\n handleValidInputTo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputToValue]);\n\n useEffect(() => {\n if (onError) {\n onError(hasValidateError);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasValidateError]);\n\n return (\n <div className={cn(styles.component, className)} data-test-id={dataTestId}>\n <CalendarInput\n {...inputFromProps}\n useAnchorWidth={false}\n calendarPosition='popover'\n popoverPosition='bottom-start'\n error={inputFromInvalid || bothInvalid || inputFromProps.error}\n onChange={handleFromChange}\n onInputChange={handleInputFromChange}\n onBlur={handleInputFromBlur}\n value={inputFromValue}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n calendarProps={{\n ...inputFromProps.calendarProps,\n month: monthFrom,\n onMonthChange: handleMonthFromChange,\n selectorView: 'full',\n }}\n />\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <CalendarInput\n {...inputToProps}\n useAnchorWidth={false}\n calendarPosition='popover'\n popoverPosition='bottom-end'\n error={inputToInvalid || bothInvalid || inputToProps.error}\n onChange={handleToChange}\n onInputChange={handleInputToChange}\n onBlur={handleInputToBlur}\n value={inputToValue}\n minDate={dateFrom || minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n calendarProps={{\n ...inputToProps.calendarProps,\n month: monthTo,\n onMonthChange: handleMonthToChange,\n selectorView: 'full',\n }}\n />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"popover.js","sources":["../../src/views/popover.tsx"],"sourcesContent":["import React, { type FC, useCallback, useEffect, useState } from 'react';\nimport cn from 'classnames';\nimport startOfMonth from 'date-fns/startOfMonth';\n\nimport { CalendarInput, type CalendarInputProps } from '@alfalab/core-components-calendar-input';\nimport { isValidInputValue, parseDateString } from '@alfalab/core-components-calendar-input/shared';\nimport { isCompleteDateInput } from '@alfalab/core-components-date-input';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport { type CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { usePopoverViewMonthes } from '../hooks';\n\nimport styles from './index.module.css';\n\nexport type CalendarRangePopoverProps = Omit<CalendarRangeProps, 'calendarPosition'>;\n\nexport const CalendarRangePopover: FC<CalendarRangePopoverProps> = ({\n className,\n defaultMonth = startOfMonth(new Date()).getTime(),\n minDate,\n maxDate,\n valueFrom = '',\n valueTo = '',\n onDateFromChange = () => null,\n onDateToChange = () => null,\n onChange = () => null,\n onError,\n inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n /**\n * Ключ для сброса календарей\n * Пользователь открыл календарь, изменил месяц, но ничего не выбрал\n * — при следующем открытии в календаре будет установлен начальный месяц\n */\n const [resetKey, setResetKey] = useState<number>(0);\n\n const dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)\n ? parseDateString(inputFromValue).getTime()\n : null;\n\n const dateTo = isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays)\n ? parseDateString(inputToValue).getTime()\n : null;\n\n const [inputFromInvalid, setInputFromInvalid] = useState<boolean>(\n isCompleteDateInput(inputFromValue) && dateFrom === null,\n );\n const [inputToInvalid, setInputToInvalid] = useState<boolean>(\n isCompleteDateInput(inputToValue) && dateTo === null,\n );\n\n const bothInvalid =\n isCompleteDateInput(inputFromValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();\n\n const hasValidateError = inputFromInvalid || inputToInvalid || bothInvalid;\n\n const { monthFrom, monthTo, handleMonthFromChange, handleMonthToChange } =\n usePopoverViewMonthes({\n dateFrom,\n dateTo,\n defaultMonth,\n resetKey,\n });\n\n const handleValidInputFrom = useCallback(() => {\n setInputFromInvalid(\n inputFromValue !== '' && !isValidInputValue(inputFromValue, minDate, maxDate, offDays),\n );\n }, [inputFromValue, maxDate, minDate, offDays]);\n\n const handleValidInputTo = useCallback(() => {\n setInputToInvalid(\n inputToValue !== '' &&\n !isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays),\n );\n }, [dateFrom, inputToValue, maxDate, minDate, offDays]);\n\n const handleInputFromChange: Required<CalendarInputProps>['onInputChange'] = (\n event,\n payload,\n ) => {\n setInputFromValue(payload.value);\n inputFromProps.onInputChange?.(event, payload);\n };\n\n const handleInputToChange: Required<CalendarInputProps>['onInputChange'] = (event, payload) => {\n setInputToValue(payload.value);\n inputToProps.onInputChange?.(event, payload);\n };\n\n const handleInputFromBlur = useCallback(() => {\n handleValidInputFrom();\n setResetKey(+new Date());\n }, [handleValidInputFrom]);\n\n const handleInputToBlur = useCallback(() => {\n handleValidInputTo();\n setResetKey(+new Date());\n }, [handleValidInputTo]);\n\n const handleFromChange: Required<CalendarInputProps>['onChange'] = useCallback((_, payload) => {\n setInputFromValue(payload.value);\n }, []);\n\n const handleToChange: Required<CalendarInputProps>['onChange'] = useCallback((_, payload) => {\n setInputToValue(payload.value);\n }, []);\n\n useEffect(() => {\n setInputFromValue(valueFrom);\n }, [valueFrom]);\n\n useEffect(() => {\n setInputToValue(valueTo);\n }, [valueTo]);\n\n useDidUpdateEffect(() => {\n onDateFromChange({ value: inputFromValue, date: dateFrom });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo,\n });\n\n if (!inputFromValue || isCompleteDateInput(inputFromValue)) {\n handleValidInputFrom();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputFromValue]);\n\n useDidUpdateEffect(() => {\n onDateToChange({ value: inputToValue, date: dateTo });\n\n // eslint-disable-next-line no-nested-ternary\n const inputDateTo = returnInvalidDates\n ? isCompleteDateInput(inputToValue)\n ? parseDateString(inputToValue).getTime()\n : null\n : dateTo;\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo: inputDateTo,\n });\n\n if (!inputToValue || isCompleteDateInput(inputToValue)) {\n handleValidInputTo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputToValue]);\n\n useEffect(() => {\n if (onError) {\n onError(hasValidateError);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasValidateError]);\n\n return (\n <div className={cn(styles.component, className)} data-test-id={dataTestId}>\n <CalendarInput\n {...inputFromProps}\n useAnchorWidth={false}\n calendarPosition='popover'\n popoverPosition='bottom-start'\n error={inputFromInvalid || bothInvalid || inputFromProps.error}\n onChange={handleFromChange}\n onInputChange={handleInputFromChange}\n onBlur={handleInputFromBlur}\n value={inputFromValue}\n minDate={minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n calendarProps={{\n ...inputFromProps.calendarProps,\n month: monthFrom,\n onMonthChange: handleMonthFromChange,\n selectorView: 'full',\n }}\n />\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <CalendarInput\n {...inputToProps}\n useAnchorWidth={false}\n calendarPosition='popover'\n popoverPosition='bottom-end'\n error={inputToInvalid || bothInvalid || inputToProps.error}\n onChange={handleToChange}\n onInputChange={handleInputToChange}\n onBlur={handleInputToBlur}\n value={inputToValue}\n minDate={dateFrom || minDate}\n maxDate={maxDate}\n offDays={offDays}\n events={events}\n calendarProps={{\n ...inputToProps.calendarProps,\n month: monthTo,\n onMonthChange: handleMonthToChange,\n selectorView: 'full',\n }}\n />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { FC } from 'react';
2
- import { CalendarRangeProps } from '../Component';
1
+ import { type FC } from 'react';
2
+ import { type CalendarRangeProps } from '../Component';
3
3
  export declare type CalendarRangeStaticProps = Omit<CalendarRangeProps, 'calendarPosition'> & {
4
4
  /**
5
5
  * Отображать начальный месяц слева или справа (влияет только на начальный рендер)
@@ -156,7 +156,9 @@ const CalendarRangeStatic = ({ className, defaultMonth = startOfMonth(new Date()
156
156
  const minMaxInSameMonth = minDate && maxDate && isSameMonth(minDate, maxDate);
157
157
  return (
158
158
  // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
159
- React.createElement("div", { className: cn(styles.component, styles.static, className), onMouseOver: handleMouseOver, "data-test-id": dataTestId },
159
+ React.createElement("div", { className: cn(styles.component, styles.static, className),
160
+ // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
161
+ onMouseOver: handleMouseOver, "data-test-id": dataTestId },
160
162
  React.createElement("div", null,
161
163
  React.createElement(DateInput, { ...dateInputFromProps, mobileMode: dateInputFromProps.mobileMode === 'popover'
162
164
  ? 'input'
@@ -1 +1 @@
1
- {"version":3,"file":"static.js","sources":["../../src/views/static.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React, { FC, MouseEvent, useCallback, useEffect, useState } from 'react';\nimport cn from 'classnames';\nimport addMonths from 'date-fns/addMonths';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport max from 'date-fns/max';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport subMonths from 'date-fns/subMonths';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\nimport { usePeriodWithReset } from '@alfalab/core-components-calendar/shared';\nimport {\n formatDate,\n isValidInputValue,\n parseDateString,\n} from '@alfalab/core-components-calendar-input/shared';\nimport {\n DateInput,\n DateInputProps,\n isCompleteDateInput,\n} from '@alfalab/core-components-date-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { useSelectionProps, useStaticViewMonthes } from '../hooks';\nimport { isDayButton } from '../utils';\n\nimport styles from './index.module.css';\n\nexport type CalendarRangeStaticProps = Omit<CalendarRangeProps, 'calendarPosition'> & {\n /**\n * Отображать начальный месяц слева или справа (влияет только на начальный рендер)\n */\n defaultMonthPosition?: 'left' | 'right';\n};\n\nexport const CalendarRangeStatic: FC<CalendarRangeStaticProps> = ({\n className,\n defaultMonth = startOfMonth(new Date()).getTime(),\n defaultMonthPosition = 'left',\n minDate,\n maxDate,\n valueFrom = '',\n valueTo = '',\n onDateFromChange = () => null,\n onDateToChange = () => null,\n onChange = () => null,\n onError,\n inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n calendarContainerClassName,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n let dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)\n ? parseDateString(inputFromValue).getTime()\n : null;\n\n const dateTo = isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays)\n ? parseDateString(inputToValue).getTime()\n : null;\n\n if (isCompleteDateInput(inputToValue) && !dateTo && !returnInvalidDates) {\n dateFrom = null;\n }\n\n const bothInvalid =\n isCompleteDateInput(inputFromValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();\n\n const [highlightedDate, setHighlightedDate] = useState<number | undefined>(undefined);\n\n const period = usePeriodWithReset({\n initialSelectedFrom: dateFrom ? parseDateString(inputFromValue).getTime() : undefined,\n initialSelectedTo: dateTo ? parseDateString(inputToValue).getTime() : undefined,\n });\n\n const validateInputFromValue = useCallback(\n (value: string) => isValidInputValue(value, minDate, dateFrom || maxDate, offDays),\n [dateFrom, maxDate, minDate, offDays],\n );\n\n const validateInputToValue = useCallback(\n (value: string) => isValidInputValue(value, dateFrom || minDate, maxDate, offDays),\n\n [dateFrom, minDate, maxDate, offDays],\n );\n\n const [inputFromInvalid, setInputFromInvalid] = useState<boolean>(\n isCompleteDateInput(inputFromValue) && dateFrom === null,\n );\n\n const [inputToInvalid, setInputToInvalid] = useState<boolean>(\n isCompleteDateInput(inputToValue) && dateTo === null,\n );\n\n const hasValidateError = bothInvalid || inputFromInvalid || inputToInvalid;\n const {\n calendarProps: calendarFromProps,\n onInputChange: onInputChangeFrom,\n ...dateInputFromProps\n } = inputFromProps;\n const {\n calendarProps: calendarToProps,\n onInputChange: onInputChangeTo,\n ...dateInputToProps\n } = inputToProps;\n\n const { monthFrom, monthTo, handleMonthFromChange, handleMonthToChange } = useStaticViewMonthes(\n {\n selectedFrom: period.selectedFrom,\n selectedTo: period.selectedTo,\n defaultMonth,\n defaultMonthPosition,\n },\n );\n\n const handleValidInputFrom = useCallback(() => {\n setInputFromInvalid(inputFromValue !== '' && !validateInputFromValue(inputFromValue));\n }, [inputFromValue, validateInputFromValue]);\n\n const handleValidInputTo = useCallback(() => {\n setInputToInvalid(inputToValue !== '' && !validateInputToValue(inputToValue));\n }, [inputToValue, validateInputToValue]);\n\n const handleInputFromChange: Required<DateInputProps>['onChange'] = (event, payload) => {\n setInputFromValue(payload.value);\n onInputChangeFrom?.(event, payload);\n };\n\n const handleInputToChange: Required<DateInputProps>['onChange'] = (event, payload) => {\n setInputToValue(payload.value);\n onInputChangeTo?.(event, payload);\n };\n\n const handleMouseOver = useCallback((event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement;\n\n const mouseOverDayButton = isDayButton(target) || isDayButton(target.parentElement);\n\n let date;\n\n if (mouseOverDayButton) {\n const button =\n target.tagName === 'BUTTON' ? target : (target.parentElement as HTMLButtonElement);\n\n if (button.dataset.date) {\n date = +button.dataset.date;\n }\n }\n\n setHighlightedDate(date);\n }, []);\n\n const handleClearFrom = useCallback(() => {\n setInputFromValue('');\n }, []);\n\n const handleClearTo = useCallback(() => {\n setInputToValue('');\n }, []);\n\n useEffect(() => {\n setInputFromValue(period.selectedFrom ? formatDate(period.selectedFrom) : '');\n }, [period.selectedFrom]);\n\n useEffect(() => {\n setInputToValue(period.selectedTo ? formatDate(period.selectedTo) : '');\n }, [period.selectedTo]);\n\n useEffect(() => {\n setInputFromValue(valueFrom);\n }, [valueFrom]);\n\n useEffect(() => {\n setInputToValue(valueTo);\n }, [valueTo]);\n\n useEffect(() => {\n if (!inputFromValue || isCompleteDateInput(inputFromValue)) {\n handleValidInputFrom();\n }\n\n period.setStart(dateFrom || undefined);\n if (dateTo) {\n period.setEnd(dateTo);\n }\n\n if (inputFromValue !== valueFrom) {\n onDateFromChange({\n value: inputFromValue,\n date: dateFrom,\n });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputFromValue]);\n\n useEffect(() => {\n if (!inputToValue || isCompleteDateInput(inputToValue)) {\n handleValidInputTo();\n }\n\n period.setEnd(dateTo || undefined);\n if (dateFrom) {\n period.setStart(dateFrom);\n }\n\n if (inputToValue !== valueTo) {\n // eslint-disable-next-line no-nested-ternary\n const inputDateTo = returnInvalidDates\n ? isCompleteDateInput(inputToValue)\n ? parseDateString(inputToValue).getTime()\n : null\n : dateTo;\n\n onDateToChange({\n value: inputToValue,\n date: inputDateTo,\n });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo: inputDateTo,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputToValue]);\n\n useEffect(() => {\n if (onError) {\n onError(hasValidateError);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasValidateError]);\n\n const rangeProps = useSelectionProps(period.selectedFrom, period.selectedTo, highlightedDate);\n\n const CalendarFromComponent = dateInputFromProps.Calendar || CalendarDesktop;\n const CalendarToComponent = dateInputToProps.Calendar || CalendarDesktop;\n\n const minMaxInSameMonth = minDate && maxDate && isSameMonth(minDate, maxDate);\n\n return (\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n <div\n className={cn(styles.component, styles.static, className)}\n onMouseOver={handleMouseOver}\n data-test-id={dataTestId}\n >\n <div>\n <DateInput\n {...dateInputFromProps}\n mobileMode={\n dateInputFromProps.mobileMode === 'popover'\n ? 'input'\n : dateInputFromProps.mobileMode\n }\n value={inputFromValue}\n onChange={handleInputFromChange}\n onClear={handleClearFrom}\n onBlur={handleValidInputFrom}\n error={bothInvalid || inputFromInvalid || dateInputFromProps.error}\n clear={true}\n block={true}\n />\n <div\n className={cn(styles.calendarContainer, calendarContainerClassName)}\n data-test-id={getDataTestId(dataTestId, 'container-from')}\n >\n <CalendarFromComponent\n {...calendarFromProps}\n className={cn(styles.calendar, calendarFromProps?.className)}\n month={monthFrom}\n selectorView='month-only'\n offDays={offDays}\n events={events}\n onChange={period.updatePeriod}\n onMonthChange={handleMonthFromChange}\n minDate={minDate}\n maxDate={\n minMaxInSameMonth\n ? maxDate\n : maxDate &&\n max([maxDate, endOfMonth(subMonths(maxDate, 1))]).getTime()\n }\n {...rangeProps}\n />\n </div>\n </div>\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <div>\n <DateInput\n {...dateInputToProps}\n mobileMode={\n dateInputToProps.mobileMode === 'popover'\n ? 'input'\n : dateInputToProps.mobileMode\n }\n value={inputToValue}\n onChange={handleInputToChange}\n onClear={handleClearTo}\n onBlur={handleValidInputTo}\n error={bothInvalid || inputToInvalid || dateInputToProps.error}\n clear={true}\n block={true}\n />\n <div data-test-id={getDataTestId(dataTestId, 'container-to')}>\n <CalendarToComponent\n {...calendarToProps}\n className={cn(styles.calendar, calendarToProps?.className)}\n month={monthTo}\n selectorView='month-only'\n offDays={offDays}\n events={events}\n onChange={period.updatePeriod}\n onMonthChange={handleMonthToChange}\n minDate={\n minMaxInSameMonth\n ? minDate\n : minDate && startOfMonth(addMonths(minDate, 1)).getTime()\n }\n maxDate={maxDate}\n {...rangeProps}\n />\n </div>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"static.js","sources":["../../src/views/static.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React, { type FC, type MouseEvent, useCallback, useEffect, useState } from 'react';\nimport cn from 'classnames';\nimport addMonths from 'date-fns/addMonths';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport max from 'date-fns/max';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport subMonths from 'date-fns/subMonths';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\nimport { usePeriodWithReset } from '@alfalab/core-components-calendar/shared';\nimport {\n formatDate,\n isValidInputValue,\n parseDateString,\n} from '@alfalab/core-components-calendar-input/shared';\nimport {\n DateInput,\n type DateInputProps,\n isCompleteDateInput,\n} from '@alfalab/core-components-date-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\n\nimport { type CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { useSelectionProps, useStaticViewMonthes } from '../hooks';\nimport { isDayButton } from '../utils';\n\nimport styles from './index.module.css';\n\nexport type CalendarRangeStaticProps = Omit<CalendarRangeProps, 'calendarPosition'> & {\n /**\n * Отображать начальный месяц слева или справа (влияет только на начальный рендер)\n */\n defaultMonthPosition?: 'left' | 'right';\n};\n\nexport const CalendarRangeStatic: FC<CalendarRangeStaticProps> = ({\n className,\n defaultMonth = startOfMonth(new Date()).getTime(),\n defaultMonthPosition = 'left',\n minDate,\n maxDate,\n valueFrom = '',\n valueTo = '',\n onDateFromChange = () => null,\n onDateToChange = () => null,\n onChange = () => null,\n onError,\n inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n calendarContainerClassName,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n let dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)\n ? parseDateString(inputFromValue).getTime()\n : null;\n\n const dateTo = isValidInputValue(inputToValue, dateFrom || minDate, maxDate, offDays)\n ? parseDateString(inputToValue).getTime()\n : null;\n\n if (isCompleteDateInput(inputToValue) && !dateTo && !returnInvalidDates) {\n dateFrom = null;\n }\n\n const bothInvalid =\n isCompleteDateInput(inputFromValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();\n\n const [highlightedDate, setHighlightedDate] = useState<number | undefined>(undefined);\n\n const period = usePeriodWithReset({\n initialSelectedFrom: dateFrom ? parseDateString(inputFromValue).getTime() : undefined,\n initialSelectedTo: dateTo ? parseDateString(inputToValue).getTime() : undefined,\n });\n\n const validateInputFromValue = useCallback(\n (value: string) => isValidInputValue(value, minDate, dateFrom || maxDate, offDays),\n [dateFrom, maxDate, minDate, offDays],\n );\n\n const validateInputToValue = useCallback(\n (value: string) => isValidInputValue(value, dateFrom || minDate, maxDate, offDays),\n\n [dateFrom, minDate, maxDate, offDays],\n );\n\n const [inputFromInvalid, setInputFromInvalid] = useState<boolean>(\n isCompleteDateInput(inputFromValue) && dateFrom === null,\n );\n\n const [inputToInvalid, setInputToInvalid] = useState<boolean>(\n isCompleteDateInput(inputToValue) && dateTo === null,\n );\n\n const hasValidateError = bothInvalid || inputFromInvalid || inputToInvalid;\n const {\n calendarProps: calendarFromProps,\n onInputChange: onInputChangeFrom,\n ...dateInputFromProps\n } = inputFromProps;\n const {\n calendarProps: calendarToProps,\n onInputChange: onInputChangeTo,\n ...dateInputToProps\n } = inputToProps;\n\n const { monthFrom, monthTo, handleMonthFromChange, handleMonthToChange } = useStaticViewMonthes(\n {\n selectedFrom: period.selectedFrom,\n selectedTo: period.selectedTo,\n defaultMonth,\n defaultMonthPosition,\n },\n );\n\n const handleValidInputFrom = useCallback(() => {\n setInputFromInvalid(inputFromValue !== '' && !validateInputFromValue(inputFromValue));\n }, [inputFromValue, validateInputFromValue]);\n\n const handleValidInputTo = useCallback(() => {\n setInputToInvalid(inputToValue !== '' && !validateInputToValue(inputToValue));\n }, [inputToValue, validateInputToValue]);\n\n const handleInputFromChange: Required<DateInputProps>['onChange'] = (event, payload) => {\n setInputFromValue(payload.value);\n onInputChangeFrom?.(event, payload);\n };\n\n const handleInputToChange: Required<DateInputProps>['onChange'] = (event, payload) => {\n setInputToValue(payload.value);\n onInputChangeTo?.(event, payload);\n };\n\n const handleMouseOver = useCallback((event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement;\n\n const mouseOverDayButton = isDayButton(target) || isDayButton(target.parentElement);\n\n let date;\n\n if (mouseOverDayButton) {\n const button =\n target.tagName === 'BUTTON' ? target : (target.parentElement as HTMLButtonElement);\n\n if (button.dataset.date) {\n date = +button.dataset.date;\n }\n }\n\n setHighlightedDate(date);\n }, []);\n\n const handleClearFrom = useCallback(() => {\n setInputFromValue('');\n }, []);\n\n const handleClearTo = useCallback(() => {\n setInputToValue('');\n }, []);\n\n useEffect(() => {\n setInputFromValue(period.selectedFrom ? formatDate(period.selectedFrom) : '');\n }, [period.selectedFrom]);\n\n useEffect(() => {\n setInputToValue(period.selectedTo ? formatDate(period.selectedTo) : '');\n }, [period.selectedTo]);\n\n useEffect(() => {\n setInputFromValue(valueFrom);\n }, [valueFrom]);\n\n useEffect(() => {\n setInputToValue(valueTo);\n }, [valueTo]);\n\n useEffect(() => {\n if (!inputFromValue || isCompleteDateInput(inputFromValue)) {\n handleValidInputFrom();\n }\n\n period.setStart(dateFrom || undefined);\n if (dateTo) {\n period.setEnd(dateTo);\n }\n\n if (inputFromValue !== valueFrom) {\n onDateFromChange({\n value: inputFromValue,\n date: dateFrom,\n });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputFromValue]);\n\n useEffect(() => {\n if (!inputToValue || isCompleteDateInput(inputToValue)) {\n handleValidInputTo();\n }\n\n period.setEnd(dateTo || undefined);\n if (dateFrom) {\n period.setStart(dateFrom);\n }\n\n if (inputToValue !== valueTo) {\n // eslint-disable-next-line no-nested-ternary\n const inputDateTo = returnInvalidDates\n ? isCompleteDateInput(inputToValue)\n ? parseDateString(inputToValue).getTime()\n : null\n : dateTo;\n\n onDateToChange({\n value: inputToValue,\n date: inputDateTo,\n });\n\n onChange({\n valueFrom: inputFromValue,\n valueTo: inputToValue,\n dateFrom,\n dateTo: inputDateTo,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputToValue]);\n\n useEffect(() => {\n if (onError) {\n onError(hasValidateError);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasValidateError]);\n\n const rangeProps = useSelectionProps(period.selectedFrom, period.selectedTo, highlightedDate);\n\n const CalendarFromComponent = dateInputFromProps.Calendar || CalendarDesktop;\n const CalendarToComponent = dateInputToProps.Calendar || CalendarDesktop;\n\n const minMaxInSameMonth = minDate && maxDate && isSameMonth(minDate, maxDate);\n\n return (\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n <div\n className={cn(styles.component, styles.static, className)}\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n onMouseOver={handleMouseOver}\n data-test-id={dataTestId}\n >\n <div>\n <DateInput\n {...dateInputFromProps}\n mobileMode={\n dateInputFromProps.mobileMode === 'popover'\n ? 'input'\n : dateInputFromProps.mobileMode\n }\n value={inputFromValue}\n onChange={handleInputFromChange}\n onClear={handleClearFrom}\n onBlur={handleValidInputFrom}\n error={bothInvalid || inputFromInvalid || dateInputFromProps.error}\n clear={true}\n block={true}\n />\n <div\n className={cn(styles.calendarContainer, calendarContainerClassName)}\n data-test-id={getDataTestId(dataTestId, 'container-from')}\n >\n <CalendarFromComponent\n {...calendarFromProps}\n className={cn(styles.calendar, calendarFromProps?.className)}\n month={monthFrom}\n selectorView='month-only'\n offDays={offDays}\n events={events}\n onChange={period.updatePeriod}\n onMonthChange={handleMonthFromChange}\n minDate={minDate}\n maxDate={\n minMaxInSameMonth\n ? maxDate\n : maxDate &&\n max([maxDate, endOfMonth(subMonths(maxDate, 1))]).getTime()\n }\n {...rangeProps}\n />\n </div>\n </div>\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <div>\n <DateInput\n {...dateInputToProps}\n mobileMode={\n dateInputToProps.mobileMode === 'popover'\n ? 'input'\n : dateInputToProps.mobileMode\n }\n value={inputToValue}\n onChange={handleInputToChange}\n onClear={handleClearTo}\n onBlur={handleValidInputTo}\n error={bothInvalid || inputToInvalid || dateInputToProps.error}\n clear={true}\n block={true}\n />\n <div data-test-id={getDataTestId(dataTestId, 'container-to')}>\n <CalendarToComponent\n {...calendarToProps}\n className={cn(styles.calendar, calendarToProps?.className)}\n month={monthTo}\n selectorView='month-only'\n offDays={offDays}\n events={events}\n onChange={period.updatePeriod}\n onMonthChange={handleMonthToChange}\n minDate={\n minMaxInSameMonth\n ? minDate\n : minDate && startOfMonth(addMonths(minDate, 1)).getTime()\n }\n maxDate={maxDate}\n {...rangeProps}\n />\n </div>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-calendar-range",
3
- "version": "8.0.1",
3
+ "version": "8.0.2",
4
4
  "description": "Calendar range component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -11,8 +11,8 @@
11
11
  "module": "./esm/index.js",
12
12
  "dependencies": {
13
13
  "@alfalab/core-components-calendar": "^8.0.1",
14
- "@alfalab/core-components-calendar-input": "^11.0.1",
15
- "@alfalab/core-components-date-input": "^5.0.1",
14
+ "@alfalab/core-components-calendar-input": "^11.0.2",
15
+ "@alfalab/core-components-date-input": "^5.0.2",
16
16
  "@alfalab/core-components-shared": "^1.1.0",
17
17
  "@alfalab/hooks": "^1.13.1",
18
18
  "classnames": "^2.5.1",
@@ -27,6 +27,6 @@
27
27
  "access": "public",
28
28
  "directory": "dist"
29
29
  },
30
- "themesVersion": "14.1.0",
30
+ "themesVersion": "14.1.2",
31
31
  "varsVersion": "10.1.0"
32
32
  }