@alfalab/core-components-calendar-range 9.0.14 → 9.1.0

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 (68) hide show
  1. package/Component.d.ts +4 -0
  2. package/Component.js.map +1 -1
  3. package/components/divider/index.css +8 -8
  4. package/components/divider/index.module.css.js +1 -1
  5. package/components/divider/index.module.css.js.map +1 -1
  6. package/cssm/Component.d.ts +4 -0
  7. package/cssm/Component.js.map +1 -1
  8. package/cssm/components/divider/index.module.css +1 -1
  9. package/cssm/hooks.d.ts +31 -0
  10. package/cssm/hooks.js +84 -0
  11. package/cssm/hooks.js.map +1 -1
  12. package/cssm/views/index.module.css +12 -0
  13. package/cssm/views/static.d.ts +13 -2
  14. package/cssm/views/static.js +93 -50
  15. package/cssm/views/static.js.map +1 -1
  16. package/esm/Component.d.ts +4 -0
  17. package/esm/Component.js.map +1 -1
  18. package/esm/components/divider/index.css +8 -8
  19. package/esm/components/divider/index.module.css.js +1 -1
  20. package/esm/components/divider/index.module.css.js.map +1 -1
  21. package/esm/hooks.d.ts +31 -0
  22. package/esm/hooks.js +84 -2
  23. package/esm/hooks.js.map +1 -1
  24. package/esm/views/index.css +19 -7
  25. package/esm/views/index.module.css.js +1 -1
  26. package/esm/views/index.module.css.js.map +1 -1
  27. package/esm/views/static.d.ts +13 -2
  28. package/esm/views/static.js +93 -50
  29. package/esm/views/static.js.map +1 -1
  30. package/hooks.d.ts +31 -0
  31. package/hooks.js +84 -0
  32. package/hooks.js.map +1 -1
  33. package/modern/Component.d.ts +4 -0
  34. package/modern/Component.js.map +1 -1
  35. package/modern/components/divider/index.css +8 -8
  36. package/modern/components/divider/index.module.css.js +1 -1
  37. package/modern/components/divider/index.module.css.js.map +1 -1
  38. package/modern/hooks.d.ts +31 -0
  39. package/modern/hooks.js +79 -2
  40. package/modern/hooks.js.map +1 -1
  41. package/modern/views/index.css +19 -7
  42. package/modern/views/index.module.css.js +1 -1
  43. package/modern/views/index.module.css.js.map +1 -1
  44. package/modern/views/static.d.ts +13 -2
  45. package/modern/views/static.js +88 -45
  46. package/modern/views/static.js.map +1 -1
  47. package/moderncssm/Component.d.ts +4 -0
  48. package/moderncssm/Component.js.map +1 -1
  49. package/moderncssm/components/divider/index.module.css +1 -1
  50. package/moderncssm/hooks.d.ts +31 -0
  51. package/moderncssm/hooks.js +79 -2
  52. package/moderncssm/hooks.js.map +1 -1
  53. package/moderncssm/views/index.module.css +13 -0
  54. package/moderncssm/views/static.d.ts +13 -2
  55. package/moderncssm/views/static.js +88 -45
  56. package/moderncssm/views/static.js.map +1 -1
  57. package/package.json +2 -1
  58. package/src/Component.tsx +5 -0
  59. package/src/components/divider/index.module.css +1 -1
  60. package/src/hooks.ts +150 -1
  61. package/src/views/index.module.css +11 -0
  62. package/src/views/static.tsx +188 -92
  63. package/views/index.css +19 -7
  64. package/views/index.module.css.js +1 -1
  65. package/views/index.module.css.js.map +1 -1
  66. package/views/static.d.ts +13 -2
  67. package/views/static.js +90 -47
  68. package/views/static.js.map +1 -1
package/esm/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../src/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { addMonths, isEqual, max, min, startOfMonth, subMonths } from 'date-fns';\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);\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 { type RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { addMonths, isEqual, max, min, startOfMonth, subMonths } from 'date-fns';\n\nimport { isValidInputValue, parseDateString } from '@alfalab/core-components-calendar-input/shared';\nimport { isCompleteDateInput } from '@alfalab/core-components-date-input';\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);\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\ninterface UseStaticRangeAutoSwapParams {\n autoSwap: boolean;\n setInputFromValue: React.Dispatch<React.SetStateAction<string>>;\n setInputToValue: React.Dispatch<React.SetStateAction<string>>;\n toggleCorrectionFromRef: RefObject<CorrectionToggleRef>;\n toggleCorrectionToRef: RefObject<CorrectionToggleRef>;\n inputFromRef: RefObject<HTMLInputElement>;\n inputToRef: RefObject<HTMLInputElement>;\n}\n\ntype CorrectionToggleRef = { handleCorrection: () => void };\n\nexport const useStaticRangeAutoSwap = ({\n autoSwap,\n setInputFromValue,\n setInputToValue,\n toggleCorrectionFromRef,\n toggleCorrectionToRef,\n inputFromRef,\n inputToRef,\n}: UseStaticRangeAutoSwapParams) => {\n const isInternalUpdate = useRef(false);\n\n const swapDates = (newValue: string, inputFromValue: string, inputToValue: string) => {\n if (!autoSwap) return;\n\n if (\n isCompleteDateInput(newValue) &&\n isCompleteDateInput(inputToValue) &&\n parseDateString(newValue).getTime() > parseDateString(inputToValue).getTime()\n ) {\n if (inputFromValue !== inputToValue) {\n isInternalUpdate.current = true;\n setInputFromValue(inputToValue);\n setInputToValue(newValue);\n\n toggleCorrectionFromRef.current?.handleCorrection();\n toggleCorrectionToRef.current?.handleCorrection();\n\n setTimeout(() => {\n inputToRef.current?.focus();\n }, 0);\n }\n }\n if (\n isCompleteDateInput(newValue) &&\n isCompleteDateInput(inputFromValue) &&\n parseDateString(newValue).getTime() < parseDateString(inputFromValue).getTime()\n ) {\n if (inputToValue !== inputFromValue) {\n isInternalUpdate.current = true;\n setInputToValue(inputFromValue);\n setInputFromValue(newValue);\n\n toggleCorrectionFromRef.current?.handleCorrection();\n toggleCorrectionToRef.current?.handleCorrection();\n\n setTimeout(() => {\n inputFromRef.current?.focus();\n }, 0);\n }\n }\n };\n\n return { swapDates, isInternalUpdate };\n};\n\ninterface UseInputValidationParams {\n inputFromValue: string;\n inputToValue: string;\n minDate: number;\n maxDate: number;\n offDays: Array<number | Date>;\n}\n\ninterface InputValidationResult {\n inputFromError: boolean;\n inputToError: boolean;\n rangeError: boolean;\n}\n\nexport const useInputValidation = ({\n inputFromValue,\n inputToValue,\n minDate,\n maxDate,\n offDays,\n}: UseInputValidationParams): InputValidationResult => {\n const [validationResult, setValidationResult] = useState<InputValidationResult>({\n inputFromError: false,\n inputToError: false,\n rangeError: false,\n });\n\n useEffect(() => {\n const isInputFromValueComplete = isCompleteDateInput(inputFromValue);\n const isInputToValueComplete = isCompleteDateInput(inputToValue);\n\n let individualInputFromError = false;\n let individualInputToError = false;\n\n if (isInputFromValueComplete) {\n individualInputFromError = !isValidInputValue(\n inputFromValue,\n minDate,\n maxDate,\n offDays,\n );\n }\n\n if (isInputToValueComplete) {\n individualInputToError = !isValidInputValue(inputToValue, minDate, maxDate, offDays);\n }\n\n let rangeError = false;\n\n const parsedDateFrom = isInputFromValueComplete ? parseDateString(inputFromValue) : null;\n const parsedDateTo = isInputToValueComplete ? parseDateString(inputToValue) : null;\n\n const isParsedDateFromValid =\n parsedDateFrom &&\n !Number.isNaN(parsedDateFrom.getTime()) &&\n isValidInputValue(inputFromValue, minDate, maxDate, offDays);\n const isParsedDateToValid =\n parsedDateTo &&\n !Number.isNaN(parsedDateTo.getTime()) &&\n isValidInputValue(inputToValue, minDate, maxDate, offDays);\n\n if (\n isParsedDateFromValid &&\n isParsedDateToValid &&\n parsedDateFrom.getTime() > parsedDateTo.getTime()\n ) {\n rangeError = true;\n }\n\n setValidationResult({\n inputFromError: individualInputFromError || rangeError,\n inputToError: individualInputToError || rangeError,\n rangeError,\n });\n }, [inputFromValue, inputToValue, minDate, maxDate, offDays]);\n\n return validationResult;\n};\n"],"names":[],"mappings":"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"}
@@ -1,32 +1,44 @@
1
1
  :root {
2
2
  --gap-s: 12px;
3
3
  --gap-m: 16px;
4
+ --gap-2xl: 32px;
4
5
  --gap-0: 0px;
5
6
  --gap-12: var(--gap-s);
6
7
  --gap-16: var(--gap-m);
8
+ --gap-32: var(--gap-2xl);
7
9
  }
8
10
  :root {
9
11
  --calendar-inner-width: 280px;
10
12
  }
11
- .calendar-range__component_cda4k {
13
+ .calendar-range__component_q8vzh {
12
14
  display: flex;
13
15
  }
14
- .calendar-range__component_cda4k button[aria-selected='true'] {
16
+ .calendar-range__component_q8vzh button[aria-selected='true'] {
15
17
  cursor: pointer;
16
18
  }
17
- .calendar-range__component_cda4k *[class*='errorIcon_'] {
19
+ .calendar-range__component_q8vzh *[class*='errorIcon_'] {
18
20
  display: none;
19
21
  }
20
- .calendar-range__component_cda4k *[class*='calendarIcon_'] {
22
+ .calendar-range__component_q8vzh *[class*='calendarIcon_'] {
21
23
  margin-right: var(--gap-0);
22
24
  }
23
- .calendar-range__static_cda4k .calendar-range__calendar_cda4k {
25
+ .calendar-range__static_q8vzh {
26
+ flex-direction: column;
27
+ }
28
+ .calendar-range__static_q8vzh .calendar-range__calendar_q8vzh {
24
29
  width: var(--calendar-inner-width);
25
30
  }
26
- .calendar-range__static_cda4k .calendar-range__calendar_cda4k > div:first-child {
31
+ .calendar-range__static_q8vzh .calendar-range__calendar_q8vzh > div:first-child {
27
32
  padding: var(--gap-16) var(--gap-0) var(--gap-12);
28
33
  }
29
- .calendar-range__calendarContainer_cda4k {
34
+ .calendar-range__inputsContainer_q8vzh {
35
+ display: flex;
36
+ }
37
+ .calendar-range__calendarContainers_q8vzh {
38
+ display: flex;
39
+ gap: var(--gap-32);
40
+ }
41
+ .calendar-range__calendarContainer_q8vzh {
30
42
  width: var(--calendar-inner-width);
31
43
  display: flex;
32
44
  justify-content: center;
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- var styles = {"component":"calendar-range__component_cda4k","static":"calendar-range__static_cda4k","calendar":"calendar-range__calendar_cda4k","calendarContainer":"calendar-range__calendarContainer_cda4k"};
3
+ var styles = {"component":"calendar-range__component_q8vzh","static":"calendar-range__static_q8vzh","calendar":"calendar-range__calendar_q8vzh","inputsContainer":"calendar-range__inputsContainer_q8vzh","calendarContainers":"calendar-range__calendarContainers_q8vzh","calendarContainer":"calendar-range__calendarContainer_q8vzh"};
4
4
 
5
5
  export { styles as default };
6
6
  //# sourceMappingURL=index.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.css.js","sources":["../src/views/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n@import '../../../calendar/src/vars.css';\n\n.component {\n display: flex;\n\n & button[aria-selected='true'] {\n cursor: pointer;\n }\n\n & *[class*='errorIcon_'] {\n display: none;\n }\n\n & *[class*='calendarIcon_'] {\n margin-right: var(--gap-0);\n }\n}\n\n.static {\n & .calendar {\n width: var(--calendar-inner-width);\n\n & > div:first-child {\n padding: var(--gap-16) var(--gap-0) var(--gap-12);\n }\n }\n}\n\n.calendarContainer {\n width: var(--calendar-inner-width);\n display: flex;\n justify-content: center;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,mBAAmB,CAAC,yCAAyC,CAAC;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":["../src/views/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n@import '../../../calendar/src/vars.css';\n\n.component {\n display: flex;\n\n & button[aria-selected='true'] {\n cursor: pointer;\n }\n\n & *[class*='errorIcon_'] {\n display: none;\n }\n\n & *[class*='calendarIcon_'] {\n margin-right: var(--gap-0);\n }\n}\n\n.static {\n flex-direction: column;\n\n & .calendar {\n width: var(--calendar-inner-width);\n\n & > div:first-child {\n padding: var(--gap-16) var(--gap-0) var(--gap-12);\n }\n }\n}\n\n.inputsContainer {\n display: flex;\n}\n\n.calendarContainers {\n display: flex;\n gap: var(--gap-32);\n}\n\n.calendarContainer {\n width: var(--calendar-inner-width);\n display: flex;\n justify-content: center;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,iCAAiC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,gCAAgC,CAAC,iBAAiB,CAAC,uCAAuC,CAAC,oBAAoB,CAAC,0CAA0C,CAAC,mBAAmB,CAAC,yCAAyC,CAAC;;;;"}
@@ -1,9 +1,20 @@
1
1
  import { type FC } from 'react';
2
+ import { type CalendarInputProps } from '@alfalab/core-components-calendar-input/esm';
2
3
  import { type CalendarRangeProps } from '../Component';
3
- export type CalendarRangeStaticProps = Omit<CalendarRangeProps, 'calendarPosition'> & {
4
+ type DateInputProps = Omit<CalendarInputProps, 'onCalendarOpen' | 'onCalendarClose' | 'onChange'>;
5
+ interface CalendarRangeStaticProps extends Omit<CalendarRangeProps, 'calendarPosition' | 'inputFromProps' | 'inputToProps'> {
4
6
  /**
5
7
  * Отображать начальный месяц слева или справа (влияет только на начальный рендер)
6
8
  */
7
9
  defaultMonthPosition?: 'left' | 'right';
8
- };
10
+ /**
11
+ * Пропсы для инпута начальной даты диапазона
12
+ */
13
+ inputFromProps?: DateInputProps;
14
+ /**
15
+ * Пропсы для инпута конечной даты диапазона
16
+ */
17
+ inputToProps?: DateInputProps;
18
+ }
9
19
  export declare const CalendarRangeStatic: FC<CalendarRangeStaticProps>;
20
+ export {};
@@ -1,21 +1,38 @@
1
1
  import { __rest, __assign } from 'tslib';
2
- import React, { useState, useCallback, useEffect } from 'react';
2
+ import React, { useState, useRef, useCallback, useEffect } from 'react';
3
3
  import cn from 'classnames';
4
4
  import { startOfMonth, isSameMonth, max, endOfMonth, subMonths, addMonths } from 'date-fns';
5
5
  import { CalendarDesktop } from '@alfalab/core-components-calendar/esm/desktop';
6
6
  import { usePeriodWithReset } from '@alfalab/core-components-calendar/esm/shared';
7
7
  import { isValidInputValue, parseDateString, formatDate } from '@alfalab/core-components-calendar-input/esm/shared';
8
- import { isCompleteDateInput, DateInput } from '@alfalab/core-components-date-input/esm';
8
+ import { isCompleteDateInput } from '@alfalab/core-components-date-input/esm';
9
9
  import { getDataTestId } from '@alfalab/core-components-shared/esm';
10
+ import { UniversalDateInput } from '@alfalab/core-components-universal-date-input/esm';
10
11
  import { Divider } from '../components/divider/Component.js';
11
- import { useStaticViewMonthes, useSelectionProps } from '../hooks.js';
12
+ import { useStaticRangeAutoSwap, useStaticViewMonthes, useSelectionProps } from '../hooks.js';
12
13
  import { isDayButton } from '../utils.js';
13
14
  import styles from './index.module.css.js';
14
15
 
15
16
  var CalendarRangeStatic = function (_a) {
16
- var className = _a.className, _b = _a.defaultMonth, defaultMonth = _b === void 0 ? startOfMonth(new Date()).getTime() : _b, _c = _a.defaultMonthPosition, defaultMonthPosition = _c === void 0 ? 'left' : _c, minDate = _a.minDate, maxDate = _a.maxDate, _d = _a.valueFrom, valueFrom = _d === void 0 ? '' : _d, _e = _a.valueTo, valueTo = _e === void 0 ? '' : _e, _f = _a.onDateFromChange, onDateFromChange = _f === void 0 ? function () { return null; } : _f, _g = _a.onDateToChange, onDateToChange = _g === void 0 ? function () { return null; } : _g, _h = _a.onChange, onChange = _h === void 0 ? function () { return null; } : _h, onError = _a.onError, _j = _a.inputFromProps, inputFromProps = _j === void 0 ? {} : _j, _k = _a.inputToProps, inputToProps = _k === void 0 ? {} : _k, offDays = _a.offDays, events = _a.events, _l = _a.returnInvalidDates, returnInvalidDates = _l === void 0 ? false : _l, dataTestId = _a.dataTestId, calendarContainerClassName = _a.calendarContainerClassName;
17
- var _m = useState(valueFrom), inputFromValue = _m[0], setInputFromValue = _m[1];
18
- var _o = useState(valueTo), inputToValue = _o[0], setInputToValue = _o[1];
17
+ var className = _a.className, _b = _a.defaultMonth, defaultMonth = _b === void 0 ? startOfMonth(new Date()).getTime() : _b, _c = _a.defaultMonthPosition, defaultMonthPosition = _c === void 0 ? 'left' : _c, minDate = _a.minDate, maxDate = _a.maxDate, _d = _a.valueFrom, valueFrom = _d === void 0 ? '' : _d, _e = _a.valueTo, valueTo = _e === void 0 ? '' : _e, _f = _a.onDateFromChange, onDateFromChange = _f === void 0 ? function () { return null; } : _f, _g = _a.onDateToChange, onDateToChange = _g === void 0 ? function () { return null; } : _g, _h = _a.onChange, onChange = _h === void 0 ? function () { return null; } : _h, _j = _a.inputFromProps, inputFromProps = _j === void 0 ? {} : _j, _k = _a.inputToProps, inputToProps = _k === void 0 ? {} : _k, offDays = _a.offDays, events = _a.events, _l = _a.returnInvalidDates, returnInvalidDates = _l === void 0 ? false : _l, dataTestId = _a.dataTestId, calendarContainerClassName = _a.calendarContainerClassName, _m = _a.autoSwap, autoSwap = _m === void 0 ? false : _m, onError = _a.onError;
18
+ var _o = useState(valueFrom), inputFromValue = _o[0], setInputFromValue = _o[1];
19
+ var _p = useState(valueTo), inputToValue = _p[0], setInputToValue = _p[1];
20
+ var _q = useState(false), inputFromError = _q[0], setInputFromError = _q[1];
21
+ var _r = useState(false), inputToError = _r[0], setInputToError = _r[1];
22
+ var toggleCorrectionFromRef = useRef(null);
23
+ var toggleCorrectionToRef = useRef(null);
24
+ var inputToRef = useRef(null);
25
+ var inputFromRef = useRef(null);
26
+ var _s = useStaticRangeAutoSwap({
27
+ autoSwap: autoSwap,
28
+ setInputFromValue: setInputFromValue,
29
+ setInputToValue: setInputToValue,
30
+ toggleCorrectionFromRef: toggleCorrectionFromRef,
31
+ toggleCorrectionToRef: toggleCorrectionToRef,
32
+ inputFromRef: inputFromRef,
33
+ inputToRef: inputToRef,
34
+ }), swapDates = _s.swapDates, isInternalUpdate = _s.isInternalUpdate;
35
+ var _t = useState(false), rangeValidationError = _t[0], setRangeValidationError = _t[1];
19
36
  var dateFrom = isValidInputValue(inputFromValue, minDate, maxDate, offDays)
20
37
  ? parseDateString(inputFromValue).getTime()
21
38
  : null;
@@ -25,40 +42,40 @@ var CalendarRangeStatic = function (_a) {
25
42
  if (isCompleteDateInput(inputToValue) && !dateTo && !returnInvalidDates) {
26
43
  dateFrom = null;
27
44
  }
28
- var bothInvalid = isCompleteDateInput(inputFromValue) &&
29
- isCompleteDateInput(inputToValue) &&
30
- parseDateString(inputFromValue).getTime() > parseDateString(inputToValue).getTime();
31
- var _p = useState(undefined), highlightedDate = _p[0], setHighlightedDate = _p[1];
45
+ var _u = useState(undefined), highlightedDate = _u[0], setHighlightedDate = _u[1];
32
46
  var period = usePeriodWithReset({
33
47
  initialSelectedFrom: dateFrom ? parseDateString(inputFromValue).getTime() : undefined,
34
48
  initialSelectedTo: dateTo ? parseDateString(inputToValue).getTime() : undefined,
35
49
  });
36
- var validateInputFromValue = useCallback(function (value) { return isValidInputValue(value, minDate, dateFrom || maxDate, offDays); }, [dateFrom, maxDate, minDate, offDays]);
37
- var validateInputToValue = useCallback(function (value) { return isValidInputValue(value, dateFrom || minDate, maxDate, offDays); }, [dateFrom, minDate, maxDate, offDays]);
38
- var _q = useState(isCompleteDateInput(inputFromValue) && dateFrom === null), inputFromInvalid = _q[0], setInputFromInvalid = _q[1];
39
- var _r = useState(isCompleteDateInput(inputToValue) && dateTo === null), inputToInvalid = _r[0], setInputToInvalid = _r[1];
40
- var hasValidateError = bothInvalid || inputFromInvalid || inputToInvalid;
41
50
  var calendarFromProps = inputFromProps.calendarProps, onInputChangeFrom = inputFromProps.onInputChange, dateInputFromProps = __rest(inputFromProps, ["calendarProps", "onInputChange"]);
42
51
  var calendarToProps = inputToProps.calendarProps, onInputChangeTo = inputToProps.onInputChange, dateInputToProps = __rest(inputToProps, ["calendarProps", "onInputChange"]);
43
- var _s = useStaticViewMonthes({
52
+ var _v = useStaticViewMonthes({
44
53
  selectedFrom: period.selectedFrom,
45
54
  selectedTo: period.selectedTo,
46
55
  defaultMonth: defaultMonth,
47
56
  defaultMonthPosition: defaultMonthPosition,
48
- }), monthFrom = _s.monthFrom, monthTo = _s.monthTo, handleMonthFromChange = _s.handleMonthFromChange, handleMonthToChange = _s.handleMonthToChange;
49
- var handleValidInputFrom = useCallback(function () {
50
- setInputFromInvalid(inputFromValue !== '' && !validateInputFromValue(inputFromValue));
51
- }, [inputFromValue, validateInputFromValue]);
52
- var handleValidInputTo = useCallback(function () {
53
- setInputToInvalid(inputToValue !== '' && !validateInputToValue(inputToValue));
54
- }, [inputToValue, validateInputToValue]);
57
+ }), monthFrom = _v.monthFrom, monthTo = _v.monthTo, handleMonthFromChange = _v.handleMonthFromChange, handleMonthToChange = _v.handleMonthToChange;
55
58
  var handleInputFromChange = function (event, payload) {
56
- setInputFromValue(payload.value);
57
- onInputChangeFrom === null || onInputChangeFrom === void 0 ? void 0 : onInputChangeFrom(event, payload);
59
+ var newValue = payload.value;
60
+ setInputFromValue(newValue);
61
+ if (isValidInputValue(newValue, minDate, maxDate, offDays)) {
62
+ swapDates(newValue, inputFromValue, inputToValue);
63
+ }
64
+ var payloadWithDate = { date: parseDateString(payload.value), value: payload.value };
65
+ if (onInputChangeFrom) {
66
+ onInputChangeFrom(event === null ? {} : event, payloadWithDate);
67
+ }
58
68
  };
59
69
  var handleInputToChange = function (event, payload) {
60
- setInputToValue(payload.value);
61
- onInputChangeTo === null || onInputChangeTo === void 0 ? void 0 : onInputChangeTo(event, payload);
70
+ var newValue = payload.value;
71
+ setInputToValue(newValue);
72
+ if (isValidInputValue(newValue, minDate, maxDate, offDays)) {
73
+ swapDates(newValue, inputFromValue, inputToValue);
74
+ }
75
+ var payloadWithDate = { date: parseDateString(payload.value), value: payload.value };
76
+ if (onInputChangeTo) {
77
+ onInputChangeTo(event === null ? {} : event, payloadWithDate);
78
+ }
62
79
  };
63
80
  var handleMouseOver = useCallback(function (event) {
64
81
  var target = event.target;
@@ -91,19 +108,20 @@ var CalendarRangeStatic = function (_a) {
91
108
  setInputToValue(valueTo);
92
109
  }, [valueTo]);
93
110
  useEffect(function () {
94
- if (!inputFromValue || isCompleteDateInput(inputFromValue)) {
95
- handleValidInputFrom();
96
- }
97
111
  period.setStart(dateFrom || undefined);
98
112
  if (dateTo) {
99
113
  period.setEnd(dateTo);
100
114
  }
115
+ if (isInternalUpdate.current) {
116
+ isInternalUpdate.current = false;
117
+ return;
118
+ }
101
119
  if (inputFromValue !== valueFrom) {
102
- onDateFromChange({
120
+ onDateFromChange === null || onDateFromChange === void 0 ? void 0 : onDateFromChange({
103
121
  value: inputFromValue,
104
122
  date: dateFrom,
105
123
  });
106
- onChange({
124
+ onChange === null || onChange === void 0 ? void 0 : onChange({
107
125
  valueFrom: inputFromValue,
108
126
  valueTo: inputToValue,
109
127
  dateFrom: dateFrom,
@@ -113,13 +131,14 @@ var CalendarRangeStatic = function (_a) {
113
131
  // eslint-disable-next-line react-hooks/exhaustive-deps
114
132
  }, [inputFromValue]);
115
133
  useEffect(function () {
116
- if (!inputToValue || isCompleteDateInput(inputToValue)) {
117
- handleValidInputTo();
118
- }
119
134
  period.setEnd(dateTo || undefined);
120
135
  if (dateFrom) {
121
136
  period.setStart(dateFrom);
122
137
  }
138
+ if (isInternalUpdate.current) {
139
+ isInternalUpdate.current = false;
140
+ return;
141
+ }
123
142
  if (inputToValue !== valueTo) {
124
143
  // eslint-disable-next-line no-nested-ternary
125
144
  var inputDateTo = returnInvalidDates
@@ -127,11 +146,11 @@ var CalendarRangeStatic = function (_a) {
127
146
  ? parseDateString(inputToValue).getTime()
128
147
  : null
129
148
  : dateTo;
130
- onDateToChange({
149
+ onDateToChange === null || onDateToChange === void 0 ? void 0 : onDateToChange({
131
150
  value: inputToValue,
132
151
  date: inputDateTo,
133
152
  });
134
- onChange({
153
+ onChange === null || onChange === void 0 ? void 0 : onChange({
135
154
  valueFrom: inputFromValue,
136
155
  valueTo: inputToValue,
137
156
  dateFrom: dateFrom,
@@ -140,12 +159,36 @@ var CalendarRangeStatic = function (_a) {
140
159
  }
141
160
  // eslint-disable-next-line react-hooks/exhaustive-deps
142
161
  }, [inputToValue]);
162
+ useEffect(function () {
163
+ var isInputFromValueComplete = isCompleteDateInput(inputFromValue);
164
+ var isInputToValueComplete = isCompleteDateInput(inputToValue);
165
+ var individualInputFromError = false;
166
+ var individualInputToError = false;
167
+ if (isInputFromValueComplete) {
168
+ individualInputFromError = !isValidInputValue(inputFromValue, minDate, maxDate, offDays);
169
+ }
170
+ if (isInputToValueComplete) {
171
+ individualInputToError = !isValidInputValue(inputToValue, minDate, maxDate, offDays);
172
+ }
173
+ var isRangeError = false;
174
+ var isValidInputFromValueStandalone = isInputFromValueComplete && individualInputFromError === false;
175
+ var isValidInputToValueStandalone = isInputToValueComplete && individualInputToError === false;
176
+ if (isValidInputFromValueStandalone && isValidInputToValueStandalone) {
177
+ var parsedDateFrom = parseDateString(inputFromValue).getTime();
178
+ var parsedDateTo = parseDateString(inputToValue).getTime();
179
+ if (parsedDateFrom > parsedDateTo) {
180
+ isRangeError = true;
181
+ }
182
+ }
183
+ setInputFromError(individualInputFromError || isRangeError);
184
+ setInputToError(individualInputToError || isRangeError);
185
+ setRangeValidationError(isRangeError);
186
+ }, [inputFromValue, inputToValue, minDate, maxDate, offDays]);
143
187
  useEffect(function () {
144
188
  if (onError) {
145
- onError(hasValidateError);
189
+ onError(rangeValidationError);
146
190
  }
147
- // eslint-disable-next-line react-hooks/exhaustive-deps
148
- }, [hasValidateError]);
191
+ }, [onError, rangeValidationError]);
149
192
  var rangeProps = useSelectionProps(period.selectedFrom, period.selectedTo, highlightedDate);
150
193
  var CalendarFromComponent = dateInputFromProps.Calendar || CalendarDesktop;
151
194
  var CalendarToComponent = dateInputToProps.Calendar || CalendarDesktop;
@@ -155,20 +198,20 @@ var CalendarRangeStatic = function (_a) {
155
198
  React.createElement("div", { className: cn(styles.component, styles.static, className),
156
199
  // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
157
200
  onMouseOver: handleMouseOver, "data-test-id": dataTestId },
158
- React.createElement("div", null,
159
- React.createElement(DateInput, __assign({}, dateInputFromProps, { mobileMode: dateInputFromProps.mobileMode === 'popover'
160
- ? 'input'
161
- : dateInputFromProps.mobileMode, value: inputFromValue, onChange: handleInputFromChange, onClear: handleClearFrom, onBlur: handleValidInputFrom, error: bothInvalid || inputFromInvalid || dateInputFromProps.error, clear: true, block: true })),
201
+ React.createElement("div", { className: cn(styles.inputsContainer) },
202
+ React.createElement(UniversalDateInput, __assign({}, dateInputFromProps, { Calendar: undefined, view: 'date', picker: false, value: inputFromValue, onInputChange: handleInputFromChange, onClear: handleClearFrom, correctionRef: toggleCorrectionFromRef, error: inputFromError ? 'Укажите корректную дату' : dateInputFromProps.error, clear: true, block: true, minDate: minDate, autoCorrection: false, maxDate: minMaxInSameMonth
203
+ ? maxDate
204
+ : maxDate && max([maxDate, endOfMonth(subMonths(maxDate, 1))]).getTime(), ref: inputFromRef })),
205
+ React.createElement(Divider, { inputFromProps: inputFromProps, inputToProps: inputToProps }),
206
+ React.createElement(UniversalDateInput, __assign({}, dateInputToProps, { Calendar: undefined, view: 'date', picker: false, value: inputToValue, onInputChange: handleInputToChange, onClear: handleClearTo, error: inputToError ? 'Укажите корректную дату' : dateInputToProps.error, correctionRef: toggleCorrectionToRef, clear: true, block: true, autoCorrection: false, minDate: minMaxInSameMonth
207
+ ? minDate
208
+ : minDate && startOfMonth(addMonths(minDate, 1)).getTime(), maxDate: maxDate, ref: inputToRef }))),
209
+ React.createElement("div", { className: cn(styles.calendarContainers) },
162
210
  React.createElement("div", { className: cn(styles.calendarContainer, calendarContainerClassName), "data-test-id": getDataTestId(dataTestId, 'container-from') },
163
211
  React.createElement(CalendarFromComponent, __assign({}, calendarFromProps, { className: cn(styles.calendar, calendarFromProps === null || calendarFromProps === void 0 ? void 0 : calendarFromProps.className), month: monthFrom, selectorView: 'month-only', offDays: offDays, events: events, onChange: period.updatePeriod, onMonthChange: handleMonthFromChange, minDate: minDate, maxDate: minMaxInSameMonth
164
212
  ? maxDate
165
213
  : maxDate &&
166
- max([maxDate, endOfMonth(subMonths(maxDate, 1))]).getTime() }, rangeProps)))),
167
- React.createElement(Divider, { inputFromProps: inputFromProps, inputToProps: inputToProps }),
168
- React.createElement("div", null,
169
- React.createElement(DateInput, __assign({}, dateInputToProps, { mobileMode: dateInputToProps.mobileMode === 'popover'
170
- ? 'input'
171
- : dateInputToProps.mobileMode, value: inputToValue, onChange: handleInputToChange, onClear: handleClearTo, onBlur: handleValidInputTo, error: bothInvalid || inputToInvalid || dateInputToProps.error, clear: true, block: true })),
214
+ max([maxDate, endOfMonth(subMonths(maxDate, 1))]).getTime() }, rangeProps))),
172
215
  React.createElement("div", { "data-test-id": getDataTestId(dataTestId, 'container-to') },
173
216
  React.createElement(CalendarToComponent, __assign({}, calendarToProps, { className: cn(styles.calendar, calendarToProps === null || calendarToProps === void 0 ? void 0 : calendarToProps.className), month: monthTo, selectorView: 'month-only', offDays: offDays, events: events, onChange: period.updatePeriod, onMonthChange: handleMonthToChange, minDate: minMaxInSameMonth
174
217
  ? minDate
@@ -1 +1 @@
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, endOfMonth, isSameMonth, max, startOfMonth, subMonths } from 'date-fns';\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
+ {"version":3,"file":"static.js","sources":["../../src/views/static.tsx"],"sourcesContent":["/* eslint-disable complexity */\nimport React, { type FC, type MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\nimport { addMonths, endOfMonth, isSameMonth, max, startOfMonth, subMonths } from 'date-fns';\n\nimport { CalendarDesktop } from '@alfalab/core-components-calendar/desktop';\nimport { usePeriodWithReset } from '@alfalab/core-components-calendar/shared';\nimport { type CalendarInputProps } from '@alfalab/core-components-calendar-input';\nimport {\n formatDate,\n isValidInputValue,\n parseDateString,\n} from '@alfalab/core-components-calendar-input/shared';\nimport { isCompleteDateInput } from '@alfalab/core-components-date-input';\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport {\n UniversalDateInput,\n type UniversalDateInputProps,\n} from '@alfalab/core-components-universal-date-input';\n\nimport { type CalendarRangeProps } from '../Component';\nimport { Divider } from '../components/divider';\nimport { useSelectionProps, useStaticRangeAutoSwap, useStaticViewMonthes } from '../hooks';\nimport { isDayButton } from '../utils';\n\nimport styles from './index.module.css';\n\ntype DateInputProps = Omit<CalendarInputProps, 'onCalendarOpen' | 'onCalendarClose' | 'onChange'>;\n\ninterface CalendarRangeStaticProps\n extends Omit<CalendarRangeProps, 'calendarPosition' | 'inputFromProps' | 'inputToProps'> {\n /**\n * Отображать начальный месяц слева или справа (влияет только на начальный рендер)\n */\n defaultMonthPosition?: 'left' | 'right';\n\n /**\n * Пропсы для инпута начальной даты диапазона\n */\n inputFromProps?: DateInputProps;\n\n /**\n * Пропсы для инпута конечной даты диапазона\n */\n inputToProps?: DateInputProps;\n}\n\ntype CorrectionToggleRef = { handleCorrection: () => void };\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 inputFromProps = {},\n inputToProps = {},\n offDays,\n events,\n returnInvalidDates = false,\n dataTestId,\n calendarContainerClassName,\n autoSwap = false,\n onError,\n}) => {\n const [inputFromValue, setInputFromValue] = useState<string>(valueFrom);\n const [inputToValue, setInputToValue] = useState<string>(valueTo);\n\n const [inputFromError, setInputFromError] = useState(false);\n const [inputToError, setInputToError] = useState(false);\n\n const toggleCorrectionFromRef = useRef<CorrectionToggleRef>(null);\n const toggleCorrectionToRef = useRef<CorrectionToggleRef>(null);\n\n const inputToRef = useRef<HTMLInputElement>(null);\n const inputFromRef = useRef<HTMLInputElement>(null);\n\n const { swapDates, isInternalUpdate } = useStaticRangeAutoSwap({\n autoSwap,\n setInputFromValue,\n setInputToValue,\n toggleCorrectionFromRef,\n toggleCorrectionToRef,\n inputFromRef,\n inputToRef,\n });\n\n const [rangeValidationError, setRangeValidationError] = useState(false);\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 [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 {\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 handleInputFromChange: Required<UniversalDateInputProps>['onInputChange'] = (\n event,\n payload,\n ) => {\n const newValue = payload.value;\n\n setInputFromValue(newValue);\n\n if (isValidInputValue(newValue, minDate, maxDate, offDays)) {\n swapDates(newValue, inputFromValue, inputToValue);\n }\n\n const payloadWithDate = { date: parseDateString(payload.value), value: payload.value };\n\n if (onInputChangeFrom) {\n onInputChangeFrom(\n event === null ? ({} as React.ChangeEvent<HTMLInputElement>) : event,\n payloadWithDate,\n );\n }\n };\n\n const handleInputToChange: Required<UniversalDateInputProps>['onInputChange'] = (\n event,\n payload,\n ) => {\n const newValue = payload.value;\n\n setInputToValue(newValue);\n\n if (isValidInputValue(newValue, minDate, maxDate, offDays)) {\n swapDates(newValue, inputFromValue, inputToValue);\n }\n\n const payloadWithDate = { date: parseDateString(payload.value), value: payload.value };\n\n if (onInputChangeTo) {\n onInputChangeTo(\n event === null ? ({} as React.ChangeEvent<HTMLInputElement>) : event,\n payloadWithDate,\n );\n }\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 period.setStart(dateFrom || undefined);\n if (dateTo) {\n period.setEnd(dateTo);\n }\n\n if (isInternalUpdate.current) {\n isInternalUpdate.current = false;\n\n return;\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 period.setEnd(dateTo || undefined);\n if (dateFrom) {\n period.setStart(dateFrom);\n }\n\n if (isInternalUpdate.current) {\n isInternalUpdate.current = false;\n\n return;\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 const isInputFromValueComplete = isCompleteDateInput(inputFromValue);\n const isInputToValueComplete = isCompleteDateInput(inputToValue);\n\n let individualInputFromError = false;\n let individualInputToError = false;\n\n if (isInputFromValueComplete) {\n individualInputFromError = !isValidInputValue(\n inputFromValue,\n minDate,\n maxDate,\n offDays,\n );\n }\n\n if (isInputToValueComplete) {\n individualInputToError = !isValidInputValue(inputToValue, minDate, maxDate, offDays);\n }\n\n let isRangeError = false;\n\n const isValidInputFromValueStandalone =\n isInputFromValueComplete && individualInputFromError === false;\n const isValidInputToValueStandalone =\n isInputToValueComplete && individualInputToError === false;\n\n if (isValidInputFromValueStandalone && isValidInputToValueStandalone) {\n const parsedDateFrom = parseDateString(inputFromValue).getTime();\n const parsedDateTo = parseDateString(inputToValue).getTime();\n\n if (parsedDateFrom > parsedDateTo) {\n isRangeError = true;\n }\n }\n\n setInputFromError(individualInputFromError || isRangeError);\n setInputToError(individualInputToError || isRangeError);\n\n setRangeValidationError(isRangeError);\n }, [inputFromValue, inputToValue, minDate, maxDate, offDays]);\n\n useEffect(() => {\n if (onError) {\n onError(rangeValidationError);\n }\n }, [onError, rangeValidationError]);\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 className={cn(styles.inputsContainer)}>\n <UniversalDateInput\n {...dateInputFromProps}\n Calendar={undefined}\n view='date'\n picker={false}\n value={inputFromValue}\n onInputChange={handleInputFromChange}\n onClear={handleClearFrom}\n correctionRef={toggleCorrectionFromRef}\n error={inputFromError ? 'Укажите корректную дату' : dateInputFromProps.error}\n clear={true}\n block={true}\n minDate={minDate}\n autoCorrection={false}\n maxDate={\n minMaxInSameMonth\n ? maxDate\n : maxDate && max([maxDate, endOfMonth(subMonths(maxDate, 1))]).getTime()\n }\n ref={inputFromRef}\n />\n\n <Divider inputFromProps={inputFromProps} inputToProps={inputToProps} />\n\n <UniversalDateInput\n {...dateInputToProps}\n Calendar={undefined}\n view='date'\n picker={false}\n value={inputToValue}\n onInputChange={handleInputToChange}\n onClear={handleClearTo}\n error={inputToError ? 'Укажите корректную дату' : dateInputToProps.error}\n correctionRef={toggleCorrectionToRef}\n clear={true}\n block={true}\n autoCorrection={false}\n minDate={\n minMaxInSameMonth\n ? minDate\n : minDate && startOfMonth(addMonths(minDate, 1)).getTime()\n }\n maxDate={maxDate}\n ref={inputToRef}\n />\n </div>\n <div className={cn(styles.calendarContainers)}>\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 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":";;;;;;;;;;;;;;;AAiDO,IAAM,mBAAmB,GAAiC,UAAC,EAoBjE,EAAA;QAnBG,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,EAAA,GAAA,EAAA,CAAA,YAAiD,EAAjD,YAAY,GAAG,EAAA,KAAA,MAAA,GAAA,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAA,EAAA,EACjD,EAAA,GAAA,EAAA,CAAA,oBAA6B,EAA7B,oBAAoB,GAAG,EAAA,KAAA,MAAA,GAAA,MAAM,GAAA,EAAA,EAC7B,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,OAAO,aAAA,EACP,EAAA,GAAA,EAAA,CAAA,SAAc,EAAd,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,EAAE,GAAA,EAAA,EACd,EAAY,GAAA,EAAA,CAAA,OAAA,EAAZ,OAAO,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACZ,EAAA,GAAA,EAAA,CAAA,gBAA6B,EAA7B,gBAAgB,GAAG,EAAA,KAAA,MAAA,GAAA,YAAA,EAAM,OAAA,IAAI,CAAJ,EAAI,GAAA,EAAA,EAC7B,EAA2B,GAAA,EAAA,CAAA,cAAA,EAA3B,cAAc,GAAA,EAAA,KAAA,MAAA,GAAG,cAAM,OAAA,IAAI,CAAJ,EAAI,GAAA,EAAA,EAC3B,EAAqB,GAAA,EAAA,CAAA,QAAA,EAArB,QAAQ,GAAA,EAAA,KAAA,MAAA,GAAG,YAAM,EAAA,OAAA,IAAI,CAAA,EAAA,GAAA,EAAA,EACrB,EAAmB,GAAA,EAAA,CAAA,cAAA,EAAnB,cAAc,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACnB,EAAA,GAAA,EAAA,CAAA,YAAiB,EAAjB,YAAY,GAAG,EAAA,KAAA,MAAA,GAAA,EAAE,KAAA,EACjB,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAA,GAAA,EAAA,CAAA,kBAA0B,EAA1B,kBAAkB,GAAG,EAAA,KAAA,MAAA,GAAA,KAAK,GAAA,EAAA,EAC1B,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,0BAA0B,GAAA,EAAA,CAAA,0BAAA,EAC1B,EAAgB,GAAA,EAAA,CAAA,QAAA,EAAhB,QAAQ,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EAChB,OAAO,GAAA,EAAA,CAAA,OAAA;IAED,IAAA,EAAA,GAAsC,QAAQ,CAAS,SAAS,CAAC,EAAhE,cAAc,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAA+B;IACjE,IAAA,EAAA,GAAkC,QAAQ,CAAS,OAAO,CAAC,EAA1D,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAA6B;IAE3D,IAAA,EAAA,GAAsC,QAAQ,CAAC,KAAK,CAAC,EAApD,cAAc,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAAmB;IACrD,IAAA,EAAA,GAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAmB;AAEvD,IAAA,IAAM,uBAAuB,GAAG,MAAM,CAAsB,IAAI,CAAC;AACjE,IAAA,IAAM,qBAAqB,GAAG,MAAM,CAAsB,IAAI,CAAC;AAE/D,IAAA,IAAM,UAAU,GAAG,MAAM,CAAmB,IAAI,CAAC;AACjD,IAAA,IAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC;IAE7C,IAAA,EAAA,GAAkC,sBAAsB,CAAC;AAC3D,QAAA,QAAQ,EAAA,QAAA;AACR,QAAA,iBAAiB,EAAA,iBAAA;AACjB,QAAA,eAAe,EAAA,eAAA;AACf,QAAA,uBAAuB,EAAA,uBAAA;AACvB,QAAA,qBAAqB,EAAA,qBAAA;AACrB,QAAA,YAAY,EAAA,YAAA;AACZ,QAAA,UAAU,EAAA,UAAA;AACb,KAAA,CAAC,EARM,SAAS,GAAA,EAAA,CAAA,SAAA,EAAE,gBAAgB,sBAQjC;IAEI,IAAA,EAAA,GAAkD,QAAQ,CAAC,KAAK,CAAC,EAAhE,oBAAoB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,uBAAuB,GAAA,EAAA,CAAA,CAAA,CAAmB;IAEvE,IAAI,QAAQ,GAAG,iBAAiB,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AACtE,UAAE,eAAe,CAAC,cAAc,CAAC,CAAC,OAAO;UACvC,IAAI;AAEV,IAAA,IAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO;AAChF,UAAE,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO;UACrC,IAAI;IAEV,IAAI,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE;QACrE,QAAQ,GAAG,IAAI;;IAGb,IAAA,EAAA,GAAwC,QAAQ,CAAqB,SAAS,CAAC,EAA9E,eAAe,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,kBAAkB,GAAA,EAAA,CAAA,CAAA,CAA2C;IAErF,IAAM,MAAM,GAAG,kBAAkB,CAAC;AAC9B,QAAA,mBAAmB,EAAE,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS;AACrF,QAAA,iBAAiB,EAAE,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS;AAClF,KAAA,CAAC;AAGE,IAAA,IAAe,iBAAiB,GAGhC,cAAc,CAHkB,aAAA,EACjB,iBAAiB,GAEhC,cAAc,CAFkB,aAAA,EAC7B,kBAAkB,GACrB,MAAA,CAAA,cAAc,EAJZ,CAAA,eAAA,EAAA,eAAA,CAIL,CADwB;AAGrB,IAAA,IAAe,eAAe,GAG9B,YAAY,CAHkB,aAAA,EACf,eAAe,GAE9B,YAAY,CAFkB,aAAA,EAC3B,gBAAgB,GACnB,MAAA,CAAA,YAAY,EAJV,CAAA,eAAA,EAAA,eAAA,CAIL,CADsB;IAGjB,IAAA,EAAA,GAAqE,oBAAoB,CAC3F;QACI,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;AAC7B,QAAA,YAAY,EAAA,YAAA;AACZ,QAAA,oBAAoB,EAAA,oBAAA;AACvB,KAAA,CACJ,EAPO,SAAS,GAAA,EAAA,CAAA,SAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,qBAAqB,GAAA,EAAA,CAAA,qBAAA,EAAE,mBAAmB,GAAA,EAAA,CAAA,mBAOrE;AAED,IAAA,IAAM,qBAAqB,GAAuD,UAC9E,KAAK,EACL,OAAO,EAAA;AAEP,QAAA,IAAM,QAAQ,GAAG,OAAO,CAAC,KAAK;QAE9B,iBAAiB,CAAC,QAAQ,CAAC;QAE3B,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;AACxD,YAAA,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC;;AAGrD,QAAA,IAAM,eAAe,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;QAEtF,IAAI,iBAAiB,EAAE;AACnB,YAAA,iBAAiB,CACb,KAAK,KAAK,IAAI,GAAI,EAA0C,GAAG,KAAK,EACpE,eAAe,CAClB;;AAET,KAAC;AAED,IAAA,IAAM,mBAAmB,GAAuD,UAC5E,KAAK,EACL,OAAO,EAAA;AAEP,QAAA,IAAM,QAAQ,GAAG,OAAO,CAAC,KAAK;QAE9B,eAAe,CAAC,QAAQ,CAAC;QAEzB,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;AACxD,YAAA,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC;;AAGrD,QAAA,IAAM,eAAe,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;QAEtF,IAAI,eAAe,EAAE;AACjB,YAAA,eAAe,CACX,KAAK,KAAK,IAAI,GAAI,EAA0C,GAAG,KAAK,EACpE,eAAe,CAClB;;AAET,KAAC;AAED,IAAA,IAAM,eAAe,GAAG,WAAW,CAAC,UAAC,KAAiC,EAAA;AAClE,QAAA,IAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAE1C,QAAA,IAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC;AAEnF,QAAA,IAAI,IAAI;QAER,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAM,MAAM,GACR,MAAM,CAAC,OAAO,KAAK,QAAQ,GAAG,MAAM,GAAI,MAAM,CAAC,aAAmC;AAEtF,YAAA,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;AACrB,gBAAA,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;;;QAInC,kBAAkB,CAAC,IAAI,CAAC;KAC3B,EAAE,EAAE,CAAC;IAEN,IAAM,eAAe,GAAG,WAAW,CAAC,YAAA;QAChC,iBAAiB,CAAC,EAAE,CAAC;KACxB,EAAE,EAAE,CAAC;IAEN,IAAM,aAAa,GAAG,WAAW,CAAC,YAAA;QAC9B,eAAe,CAAC,EAAE,CAAC;KACtB,EAAE,EAAE,CAAC;AAEN,IAAA,SAAS,CAAC,YAAA;AACN,QAAA,iBAAiB,CAAC,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AACjF,KAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAEzB,IAAA,SAAS,CAAC,YAAA;AACN,QAAA,eAAe,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC3E,KAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEvB,IAAA,SAAS,CAAC,YAAA;QACN,iBAAiB,CAAC,SAAS,CAAC;AAChC,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,SAAS,CAAC,YAAA;QACN,eAAe,CAAC,OAAO,CAAC;AAC5B,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAEb,IAAA,SAAS,CAAC,YAAA;AACN,QAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC;QACtC,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGzB,QAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC1B,YAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;YAEhC;;AAGJ,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAC9B,YAAA,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,KAAhB,MAAA,GAAA,MAAA,GAAA,gBAAgB,CAAG;AACf,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA,CAAC;AAEF,YAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAG;AACP,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,QAAQ,EAAA,QAAA;AACR,gBAAA,MAAM,EAAA,MAAA;AACT,aAAA,CAAC;;;AAGV,KAAC,EAAE,CAAC,cAAc,CAAC,CAAC;AAEpB,IAAA,SAAS,CAAC,YAAA;AACN,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;QAClC,IAAI,QAAQ,EAAE;AACV,YAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAG7B,QAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC1B,YAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;YAEhC;;AAGJ,QAAA,IAAI,YAAY,KAAK,OAAO,EAAE;;YAE1B,IAAM,WAAW,GAAG;AAChB,kBAAE,mBAAmB,CAAC,YAAY;AAC9B,sBAAE,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO;AACvC,sBAAE;kBACJ,MAAM;AAEZ,YAAA,cAAc,KAAd,IAAA,IAAA,cAAc,KAAd,MAAA,GAAA,MAAA,GAAA,cAAc,CAAG;AACb,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,IAAI,EAAE,WAAW;AACpB,aAAA,CAAC;AAEF,YAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAG;AACP,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,QAAQ,EAAA,QAAA;AACR,gBAAA,MAAM,EAAE,WAAW;AACtB,aAAA,CAAC;;;AAGV,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAElB,IAAA,SAAS,CAAC,YAAA;AACN,QAAA,IAAM,wBAAwB,GAAG,mBAAmB,CAAC,cAAc,CAAC;AACpE,QAAA,IAAM,sBAAsB,GAAG,mBAAmB,CAAC,YAAY,CAAC;QAEhE,IAAI,wBAAwB,GAAG,KAAK;QACpC,IAAI,sBAAsB,GAAG,KAAK;QAElC,IAAI,wBAAwB,EAAE;AAC1B,YAAA,wBAAwB,GAAG,CAAC,iBAAiB,CACzC,cAAc,EACd,OAAO,EACP,OAAO,EACP,OAAO,CACV;;QAGL,IAAI,sBAAsB,EAAE;AACxB,YAAA,sBAAsB,GAAG,CAAC,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;;QAGxF,IAAI,YAAY,GAAG,KAAK;AAExB,QAAA,IAAM,+BAA+B,GACjC,wBAAwB,IAAI,wBAAwB,KAAK,KAAK;AAClE,QAAA,IAAM,6BAA6B,GAC/B,sBAAsB,IAAI,sBAAsB,KAAK,KAAK;AAE9D,QAAA,IAAI,+BAA+B,IAAI,6BAA6B,EAAE;YAClE,IAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;YAChE,IAAM,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;AAE5D,YAAA,IAAI,cAAc,GAAG,YAAY,EAAE;gBAC/B,YAAY,GAAG,IAAI;;;AAI3B,QAAA,iBAAiB,CAAC,wBAAwB,IAAI,YAAY,CAAC;AAC3D,QAAA,eAAe,CAAC,sBAAsB,IAAI,YAAY,CAAC;QAEvD,uBAAuB,CAAC,YAAY,CAAC;AACzC,KAAC,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAE7D,IAAA,SAAS,CAAC,YAAA;QACN,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,oBAAoB,CAAC;;AAErC,KAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAEnC,IAAA,IAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC;AAE7F,IAAA,IAAM,qBAAqB,GAAG,kBAAkB,CAAC,QAAQ,IAAI,eAAe;AAC5E,IAAA,IAAM,mBAAmB,GAAG,gBAAgB,CAAC,QAAQ,IAAI,eAAe;AAExE,IAAA,IAAM,iBAAiB,GAAG,OAAO,IAAI,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;IAE7E;;AAEI,IAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;;QAEzD,WAAW,EAAE,eAAe,EAAA,cAAA,EACd,UAAU,EAAA;AAExB,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAAA;AACtC,YAAA,KAAA,CAAA,aAAA,CAAC,kBAAkB,EAAA,QAAA,CAAA,EAAA,EACX,kBAAkB,EAAA,EACtB,QAAQ,EAAE,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,uBAAuB,EACtC,KAAK,EAAE,cAAc,GAAG,yBAAyB,GAAG,kBAAkB,CAAC,KAAK,EAC5E,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,KAAK,EACrB,OAAO,EACH;AACI,sBAAE;sBACA,OAAO,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAEhF,GAAG,EAAE,YAAY,EACnB,CAAA,CAAA;YAEF,KAAC,CAAA,aAAA,CAAA,OAAO,IAAC,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAI,CAAA;AAEvE,YAAA,KAAA,CAAA,aAAA,CAAC,kBAAkB,EAAA,QAAA,CAAA,EAAA,EACX,gBAAgB,EAAA,EACpB,QAAQ,EAAE,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,mBAAmB,EAClC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,YAAY,GAAG,yBAAyB,GAAG,gBAAgB,CAAC,KAAK,EACxE,aAAa,EAAE,qBAAqB,EACpC,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,IAAI,EACX,cAAc,EAAE,KAAK,EACrB,OAAO,EACH;AACI,sBAAE;sBACA,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAElE,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,UAAU,EAAA,CAAA,CACjB,CACA;AACN,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAA;AACzC,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,kBACrD,aAAa,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAA;gBAEzD,KAAC,CAAA,aAAA,CAAA,qBAAqB,EACd,QAAA,CAAA,EAAA,EAAA,iBAAiB,EACrB,EAAA,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,KAAjB,IAAA,IAAA,iBAAiB,KAAjB,MAAA,GAAA,MAAA,GAAA,iBAAiB,CAAE,SAAS,CAAC,EAC5D,KAAK,EAAE,SAAS,EAChB,YAAY,EAAC,YAAY,EACzB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EACH;AACI,0BAAE;AACF,0BAAE,OAAO;4BACP,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAA,EAEjE,UAAU,CAAA,CAChB,CACA;AACN,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,cAAA,EAAmB,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,EAAA;gBACxD,KAAC,CAAA,aAAA,CAAA,mBAAmB,eACZ,eAAe,EAAA,EACnB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,KAAA,IAAA,IAAf,eAAe,KAAf,MAAA,GAAA,MAAA,GAAA,eAAe,CAAE,SAAS,CAAC,EAC1D,KAAK,EAAE,OAAO,EACd,YAAY,EAAC,YAAY,EACzB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,aAAa,EAAE,mBAAmB,EAClC,OAAO,EACH;AACI,0BAAE;0BACA,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAElE,OAAO,EAAE,OAAO,EAAA,EACZ,UAAU,CAAA,CAChB,CACA,CACJ,CACJ;AAEd;;;;"}
package/hooks.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type RefObject } from 'react';
1
2
  export declare function usePopoverViewMonthes({ dateFrom, dateTo, defaultMonth, resetKey, }: {
2
3
  defaultMonth: number;
3
4
  dateFrom: number | null;
@@ -25,3 +26,33 @@ export declare function useSelectionProps(from?: number, to?: number, highlighte
25
26
  selectedFrom: number | undefined;
26
27
  selectedTo: number | undefined;
27
28
  };
29
+ interface UseStaticRangeAutoSwapParams {
30
+ autoSwap: boolean;
31
+ setInputFromValue: React.Dispatch<React.SetStateAction<string>>;
32
+ setInputToValue: React.Dispatch<React.SetStateAction<string>>;
33
+ toggleCorrectionFromRef: RefObject<CorrectionToggleRef>;
34
+ toggleCorrectionToRef: RefObject<CorrectionToggleRef>;
35
+ inputFromRef: RefObject<HTMLInputElement>;
36
+ inputToRef: RefObject<HTMLInputElement>;
37
+ }
38
+ type CorrectionToggleRef = {
39
+ handleCorrection: () => void;
40
+ };
41
+ export declare const useStaticRangeAutoSwap: ({ autoSwap, setInputFromValue, setInputToValue, toggleCorrectionFromRef, toggleCorrectionToRef, inputFromRef, inputToRef, }: UseStaticRangeAutoSwapParams) => {
42
+ swapDates: (newValue: string, inputFromValue: string, inputToValue: string) => void;
43
+ isInternalUpdate: import("react").MutableRefObject<boolean>;
44
+ };
45
+ interface UseInputValidationParams {
46
+ inputFromValue: string;
47
+ inputToValue: string;
48
+ minDate: number;
49
+ maxDate: number;
50
+ offDays: Array<number | Date>;
51
+ }
52
+ interface InputValidationResult {
53
+ inputFromError: boolean;
54
+ inputToError: boolean;
55
+ rangeError: boolean;
56
+ }
57
+ export declare const useInputValidation: ({ inputFromValue, inputToValue, minDate, maxDate, offDays, }: UseInputValidationParams) => InputValidationResult;
58
+ export {};