@skbkontur/react-ui 5.1.0-next.2 → 5.1.1

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 (217) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +0 -5
  3. package/cjs/components/Autocomplete/locale/types.js +1 -1
  4. package/cjs/components/Calendar/DayCellView.styles.js +17 -1
  5. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  6. package/cjs/components/Calendar/locale/types.js +1 -1
  7. package/cjs/components/DateInput/helpers/DateInputKeyboardActions.js +1 -1
  8. package/cjs/components/DateInput/helpers/DateInputKeyboardActions.js.map +1 -1
  9. package/cjs/components/DatePicker/DatePicker.d.ts +0 -4
  10. package/cjs/components/DatePicker/DatePicker.js +1 -8
  11. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  12. package/cjs/components/DatePicker/locale/types.js +1 -1
  13. package/cjs/components/DateRangePicker/DateRangePicker.d.ts +82 -0
  14. package/cjs/components/DateRangePicker/DateRangePicker.js +490 -0
  15. package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -0
  16. package/cjs/components/DateRangePicker/DateRangePicker.styles.d.ts +17 -0
  17. package/cjs/components/DateRangePicker/DateRangePicker.styles.js +125 -0
  18. package/cjs/components/DateRangePicker/DateRangePicker.styles.js.map +1 -0
  19. package/cjs/components/DateRangePicker/DateRangePickerContext.d.ts +31 -0
  20. package/cjs/components/DateRangePicker/DateRangePickerContext.js +37 -0
  21. package/cjs/components/DateRangePicker/DateRangePickerContext.js.map +1 -0
  22. package/cjs/components/DateRangePicker/DateRangePickerInput.d.ts +11 -0
  23. package/cjs/components/DateRangePicker/DateRangePickerInput.js +162 -0
  24. package/cjs/components/DateRangePicker/DateRangePickerInput.js.map +1 -0
  25. package/cjs/components/DateRangePicker/DateRangePickerSeparator.d.ts +2 -0
  26. package/cjs/components/DateRangePicker/DateRangePickerSeparator.js +3 -0
  27. package/cjs/components/DateRangePicker/DateRangePickerSeparator.js.map +1 -0
  28. package/cjs/components/DateRangePicker/DateRangePickerTheme.d.ts +3 -0
  29. package/cjs/components/DateRangePicker/DateRangePickerTheme.js +33 -0
  30. package/cjs/components/DateRangePicker/DateRangePickerTheme.js.map +1 -0
  31. package/cjs/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +155 -0
  32. package/cjs/components/DateRangePicker/__docs__/DateRangePicker.mdx +127 -0
  33. package/cjs/components/DateRangePicker/helpers/getStateForValue.d.ts +9 -0
  34. package/cjs/components/DateRangePicker/helpers/getStateForValue.js +122 -0
  35. package/cjs/components/DateRangePicker/helpers/getStateForValue.js.map +1 -0
  36. package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.d.ts +9 -0
  37. package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.js +67 -0
  38. package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.js.map +1 -0
  39. package/cjs/components/DateRangePicker/index.d.ts +1 -0
  40. package/cjs/components/DateRangePicker/index.js +1 -0
  41. package/cjs/components/DateRangePicker/index.js.map +1 -0
  42. package/cjs/components/DateRangePicker/locale/index.d.ts +4 -0
  43. package/cjs/components/DateRangePicker/locale/index.js +12 -0
  44. package/cjs/components/DateRangePicker/locale/index.js.map +1 -0
  45. package/cjs/components/DateRangePicker/locale/locales/en.d.ts +2 -0
  46. package/cjs/components/DateRangePicker/locale/locales/en.js +9 -0
  47. package/cjs/components/DateRangePicker/locale/locales/en.js.map +1 -0
  48. package/cjs/components/DateRangePicker/locale/locales/ru.d.ts +2 -0
  49. package/cjs/components/DateRangePicker/locale/locales/ru.js +9 -0
  50. package/cjs/components/DateRangePicker/locale/locales/ru.js.map +1 -0
  51. package/cjs/components/DateRangePicker/locale/types.d.ts +7 -0
  52. package/cjs/components/DateRangePicker/locale/types.js +1 -0
  53. package/cjs/components/DateRangePicker/locale/types.js.map +1 -0
  54. package/cjs/components/FileUploader/locale/types.js +1 -1
  55. package/cjs/components/Input/Input.typings.js +1 -1
  56. package/cjs/components/Modal/locale/types.js +1 -1
  57. package/cjs/components/Paging/locale/types.js +1 -1
  58. package/cjs/components/PasswordInput/locale/types.js +1 -1
  59. package/cjs/components/ResponsiveLayout/types.js +1 -1
  60. package/cjs/components/Select/locale/types.js +1 -1
  61. package/cjs/components/SidePage/locale/types.js +1 -1
  62. package/cjs/components/Toast/locale/types.js +1 -1
  63. package/cjs/components/Token/locale/types.js +1 -1
  64. package/cjs/components/TokenInput/TokenInput.js +1 -1
  65. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  66. package/cjs/components/TokenInput/locale/types.js +1 -1
  67. package/cjs/index.d.ts +1 -0
  68. package/cjs/index.js +1 -0
  69. package/cjs/index.js.map +1 -1
  70. package/cjs/internal/CommonWrapper/types.js +1 -1
  71. package/cjs/internal/CustomComboBox/CustomComboBoxTypes.js +1 -1
  72. package/cjs/internal/CustomComboBox/CustomComboBoxTypes.js.map +1 -1
  73. package/cjs/internal/CustomComboBox/locale/types.js +1 -1
  74. package/cjs/internal/DateSelect/locale/types.js +1 -1
  75. package/cjs/internal/FileUploaderControl/fileUtils.js +1 -1
  76. package/cjs/internal/FileUploaderControl/fileUtils.js.map +1 -1
  77. package/cjs/internal/Popup/types.js +1 -1
  78. package/cjs/internal/RenderContainer/RenderContainerTypes.js +1 -1
  79. package/cjs/internal/ThemePlayground/constants.js +1 -1
  80. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  81. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  82. package/cjs/internal/themes/BasicTheme.d.ts +9 -0
  83. package/cjs/internal/themes/BasicTheme.js +18 -2
  84. package/cjs/internal/themes/BasicTheme.js.map +1 -1
  85. package/cjs/internal/themes/DarkTheme5_0.js +9 -1
  86. package/cjs/internal/themes/DarkTheme5_0.js.map +1 -1
  87. package/cjs/lib/Upgrades.js +2 -2
  88. package/cjs/lib/Upgrades.js.map +1 -1
  89. package/cjs/lib/date/types.js +6 -6
  90. package/cjs/lib/date/types.js.map +1 -1
  91. package/cjs/lib/events/MouseDrag.js +1 -1
  92. package/cjs/lib/events/MouseDrag.js.map +1 -1
  93. package/cjs/lib/events/keyboard/KeyboardEventCodes.js +1 -1
  94. package/cjs/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
  95. package/cjs/lib/locale/types.js +1 -1
  96. package/cjs/lib/locale/types.js.map +1 -1
  97. package/cjs/lib/types/button-link.js +1 -1
  98. package/cjs/lib/types/polymorphic-component.js +1 -1
  99. package/cjs/lib/types/props.js +1 -1
  100. package/components/Autocomplete/locale/types/types.js +1 -0
  101. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +1 -1
  102. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  103. package/components/Calendar/locale/types/types.js +1 -0
  104. package/components/DateInput/helpers/DateInputKeyboardActions/DateInputKeyboardActions.js +3 -3
  105. package/components/DateInput/helpers/DateInputKeyboardActions/DateInputKeyboardActions.js.map +1 -1
  106. package/components/DatePicker/DatePicker/DatePicker.js +0 -4
  107. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  108. package/components/DatePicker/DatePicker.d.ts +0 -4
  109. package/components/DatePicker/locale/types/types.js +1 -0
  110. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +454 -0
  111. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -0
  112. package/components/DateRangePicker/DateRangePicker/package.json +6 -0
  113. package/components/DateRangePicker/DateRangePicker.d.ts +82 -0
  114. package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js +53 -0
  115. package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js.map +1 -0
  116. package/components/DateRangePicker/DateRangePicker.styles/package.json +6 -0
  117. package/components/DateRangePicker/DateRangePicker.styles.d.ts +17 -0
  118. package/components/DateRangePicker/DateRangePickerContext/DateRangePickerContext.js +3 -0
  119. package/components/DateRangePicker/DateRangePickerContext/DateRangePickerContext.js.map +1 -0
  120. package/components/DateRangePicker/DateRangePickerContext/package.json +6 -0
  121. package/components/DateRangePicker/DateRangePickerContext.d.ts +31 -0
  122. package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js +145 -0
  123. package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js.map +1 -0
  124. package/components/DateRangePicker/DateRangePickerInput/package.json +6 -0
  125. package/components/DateRangePicker/DateRangePickerInput.d.ts +11 -0
  126. package/components/DateRangePicker/DateRangePickerSeparator/DateRangePickerSeparator.js +4 -0
  127. package/components/DateRangePicker/DateRangePickerSeparator/DateRangePickerSeparator.js.map +1 -0
  128. package/components/DateRangePicker/DateRangePickerSeparator/package.json +6 -0
  129. package/components/DateRangePicker/DateRangePickerSeparator.d.ts +2 -0
  130. package/components/DateRangePicker/DateRangePickerTheme/DateRangePickerTheme.js +24 -0
  131. package/components/DateRangePicker/DateRangePickerTheme/DateRangePickerTheme.js.map +1 -0
  132. package/components/DateRangePicker/DateRangePickerTheme/package.json +6 -0
  133. package/components/DateRangePicker/DateRangePickerTheme.d.ts +3 -0
  134. package/components/DateRangePicker/__creevey__/DateRangePicker.creevey.d.mts +1 -0
  135. package/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +155 -0
  136. package/components/DateRangePicker/__docs__/DateRangePicker.mdx +127 -0
  137. package/components/DateRangePicker/helpers/getStateForValue/getStateForValue.js +108 -0
  138. package/components/DateRangePicker/helpers/getStateForValue/getStateForValue.js.map +1 -0
  139. package/components/DateRangePicker/helpers/getStateForValue/package.json +6 -0
  140. package/components/DateRangePicker/helpers/getStateForValue.d.ts +9 -0
  141. package/components/DateRangePicker/helpers/validateDateRangePicker/package.json +6 -0
  142. package/components/DateRangePicker/helpers/validateDateRangePicker/validateDateRangePicker.js +49 -0
  143. package/components/DateRangePicker/helpers/validateDateRangePicker/validateDateRangePicker.js.map +1 -0
  144. package/components/DateRangePicker/helpers/validateDateRangePicker.d.ts +9 -0
  145. package/components/DateRangePicker/index/index.js +1 -0
  146. package/components/DateRangePicker/index/index.js.map +1 -0
  147. package/components/DateRangePicker/index/package.json +6 -0
  148. package/components/DateRangePicker/index.d.ts +1 -0
  149. package/components/DateRangePicker/locale/index/index.js +8 -0
  150. package/components/DateRangePicker/locale/index/index.js.map +1 -0
  151. package/components/DateRangePicker/locale/index/package.json +6 -0
  152. package/components/DateRangePicker/locale/index.d.ts +4 -0
  153. package/components/DateRangePicker/locale/locales/en/en.js +8 -0
  154. package/components/DateRangePicker/locale/locales/en/en.js.map +1 -0
  155. package/components/DateRangePicker/locale/locales/en/package.json +6 -0
  156. package/components/DateRangePicker/locale/locales/en.d.ts +2 -0
  157. package/components/DateRangePicker/locale/locales/ru/package.json +6 -0
  158. package/components/DateRangePicker/locale/locales/ru/ru.js +8 -0
  159. package/components/DateRangePicker/locale/locales/ru/ru.js.map +1 -0
  160. package/components/DateRangePicker/locale/locales/ru.d.ts +2 -0
  161. package/components/DateRangePicker/locale/package.json +6 -0
  162. package/components/DateRangePicker/locale/types/package.json +6 -0
  163. package/components/DateRangePicker/locale/types/types.js +1 -0
  164. package/components/DateRangePicker/locale/types/types.js.map +1 -0
  165. package/components/DateRangePicker/locale/types.d.ts +7 -0
  166. package/components/DateRangePicker/package.json +6 -0
  167. package/components/FileUploader/locale/types/types.js +1 -0
  168. package/components/Input/Input.typings/Input.typings.js +1 -0
  169. package/components/Modal/locale/types/types.js +1 -0
  170. package/components/Paging/locale/types/types.js +1 -0
  171. package/components/PasswordInput/locale/types/types.js +1 -0
  172. package/components/ResponsiveLayout/types/types.js +1 -0
  173. package/components/Select/locale/types/types.js +1 -0
  174. package/components/SidePage/locale/types/types.js +1 -0
  175. package/components/Toast/locale/types/types.js +1 -0
  176. package/components/Token/locale/types/types.js +1 -0
  177. package/components/TokenInput/TokenInput/TokenInput.js +3 -3
  178. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  179. package/components/TokenInput/locale/types/types.js +1 -0
  180. package/index.d.ts +1 -0
  181. package/index.js +1 -0
  182. package/index.js.map +1 -1
  183. package/internal/CommonWrapper/index/index.js +2 -1
  184. package/internal/CommonWrapper/index/index.js.map +1 -1
  185. package/internal/CommonWrapper/types/types.js +1 -0
  186. package/internal/CustomComboBox/CustomComboBoxTypes/CustomComboBoxTypes.js +3 -3
  187. package/internal/CustomComboBox/CustomComboBoxTypes/CustomComboBoxTypes.js.map +1 -1
  188. package/internal/CustomComboBox/locale/types/types.js +1 -0
  189. package/internal/DateSelect/locale/types/types.js +1 -0
  190. package/internal/FileUploaderControl/fileUtils/fileUtils.js +3 -3
  191. package/internal/FileUploaderControl/fileUtils/fileUtils.js.map +1 -1
  192. package/internal/Popup/types/types.js +1 -0
  193. package/internal/RenderContainer/RenderContainerTypes/RenderContainerTypes.js +1 -0
  194. package/internal/ThemePlayground/constants/constants.js +3 -3
  195. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  196. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  197. package/internal/ZIndex/index/index.js +2 -1
  198. package/internal/ZIndex/index/index.js.map +1 -1
  199. package/internal/themes/BasicTheme/BasicTheme.js +13 -2
  200. package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
  201. package/internal/themes/BasicTheme.d.ts +9 -0
  202. package/internal/themes/DarkTheme5_0/DarkTheme5_0.js +1 -1
  203. package/internal/themes/DarkTheme5_0/DarkTheme5_0.js.map +1 -1
  204. package/lib/Upgrades/Upgrades.js +2 -2
  205. package/lib/Upgrades/Upgrades.js.map +1 -1
  206. package/lib/date/types/types.js +18 -18
  207. package/lib/date/types/types.js.map +1 -1
  208. package/lib/events/MouseDrag/MouseDrag.js +3 -3
  209. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  210. package/lib/events/keyboard/KeyboardEventCodes/KeyboardEventCodes.js +3 -3
  211. package/lib/events/keyboard/KeyboardEventCodes/KeyboardEventCodes.js.map +1 -1
  212. package/lib/locale/types/types.js +3 -3
  213. package/lib/locale/types/types.js.map +1 -1
  214. package/lib/types/button-link/button-link.js +1 -0
  215. package/lib/types/polymorphic-component/polymorphic-component.js +1 -0
  216. package/lib/types/props/props.js +1 -0
  217. package/package.json +8 -6
@@ -0,0 +1,454 @@
1
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
+ var _templateObject, _templateObject2;
3
+ import React, { useImperativeHandle, useRef, useState, useLayoutEffect } from 'react';
4
+ import { MobilePopup } from "../../../internal/MobilePopup";
5
+ import { useLocaleForControl } from "../../../lib/locale/useLocaleForControl";
6
+ import { css, cx } from "../../../lib/theming/Emotion";
7
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
8
+ import { CommonWrapper } from "../../../internal/CommonWrapper";
9
+ import { Calendar, CalendarDay } from "../../Calendar";
10
+ import { Popup } from "../../../internal/Popup";
11
+ import { DateInput } from "../../DateInput";
12
+ import { isBetween, isGreater, isGreaterOrEqual, isLess, isLessOrEqual } from "../../../lib/date/comparison";
13
+ import { ZIndex } from "../../../internal/ZIndex";
14
+ import { getRootNode } from "../../../lib/rootNode";
15
+ import { getMenuPositions } from "../../../lib/getMenuPositions";
16
+ import { Button } from "../../Button";
17
+ import { useResponsiveLayout } from "../../ResponsiveLayout";
18
+ import { InternalDate } from "../../../lib/date/InternalDate";
19
+ import { InternalDateGetter } from "../../../lib/date/InternalDateGetter";
20
+ import { ArrowAUpIcon16Light } from "../../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light";
21
+ import { NativeDateInput } from "../../../internal/NativeDateInput";
22
+ import { forwardRefAndName } from "../../../lib/forwardRefAndName";
23
+ import { LocaleContext } from "../../../lib/locale";
24
+ import { isIOS } from "../../../lib/client";
25
+ import { getFontSize, styles } from "../DateRangePicker.styles";
26
+ import { DateRangePickerSeparator } from "../DateRangePickerSeparator";
27
+ import { DateRangePickerContext } from "../DateRangePickerContext";
28
+ import { DateRangePickerEnd, DateRangePickerStart } from "../DateRangePickerInput";
29
+ import { getDateRangePickerTheme, getMobileDateRangePickerTheme } from "../DateRangePickerTheme";
30
+ import { DateRangePickerLocaleHelper } from "../locale";
31
+ import { validateDateRangePicker } from "../helpers/validateDateRangePicker";
32
+ import { getStateForValue } from "../helpers/getStateForValue";
33
+ export var DateRangePickerDataTids = {
34
+ root: 'DateRangePicker__root',
35
+ start: 'DateRangePicker__start',
36
+ end: 'DateRangePicker__end',
37
+ popup: 'DateRangePicker__popup',
38
+ calendar: 'DateRangePicker__calendar',
39
+ todayButton: 'DateRangePicker__todayButton',
40
+ startOptionalButton: 'DateRangePicker__startOptionalButton',
41
+ endOptionalButton: 'DateRangePicker__endOptionalButton',
42
+ mobileStart: 'DateRangePicker__mobileStart',
43
+ mobileEnd: 'DateRangePicker__mobileEnd'
44
+ };
45
+ export var DateRangePicker = Object.assign({
46
+ Start: DateRangePickerStart,
47
+ End: DateRangePickerEnd,
48
+ Separator: DateRangePickerSeparator,
49
+ validate: validateDateRangePicker
50
+ }, forwardRefAndName('DateRangePicker', function (props, ref) {
51
+ var _useResponsiveLayout = useResponsiveLayout(),
52
+ isMobile = _useResponsiveLayout.isMobile;
53
+ var locale = useLocaleForControl('DateRangePicker', DateRangePickerLocaleHelper);
54
+ var _useState = useState(),
55
+ startValue = _useState[0],
56
+ setStartValue = _useState[1];
57
+ var _useState2 = useState(false),
58
+ startOptional = _useState2[0],
59
+ setStartOptional = _useState2[1];
60
+ var _useState3 = useState(false),
61
+ startDisabled = _useState3[0],
62
+ setStartDisabled = _useState3[1];
63
+ var _useState4 = useState(),
64
+ endValue = _useState4[0],
65
+ setEndValue = _useState4[1];
66
+ var _useState5 = useState(false),
67
+ endOptional = _useState5[0],
68
+ setEndOptional = _useState5[1];
69
+ var _useState6 = useState(false),
70
+ endDisabled = _useState6[0],
71
+ setEndDisabled = _useState6[1];
72
+ var _useState7 = useState(''),
73
+ minDate = _useState7[0],
74
+ setMinDate = _useState7[1];
75
+ var _useState8 = useState(''),
76
+ maxDate = _useState8[0],
77
+ setMaxDate = _useState8[1];
78
+ var _useState9 = useState(null),
79
+ hoveredDay = _useState9[0],
80
+ setHoveredDay = _useState9[1];
81
+ var _useState10 = useState(false),
82
+ showCalendar = _useState10[0],
83
+ setShowCalendar = _useState10[1];
84
+ var _useState11 = useState(null),
85
+ focusInput = _useState11[0],
86
+ setFocusInput = _useState11[1];
87
+ var dateRangePickerRef = useRef(null);
88
+ var calendarRef = useRef(null);
89
+ var startRef = useRef(null);
90
+ var endRef = useRef(null);
91
+ var mobileStartRef = useRef(null);
92
+ var mobileEndRef = useRef(null);
93
+ var mobileNativeStartRef = useRef(null);
94
+ var mobileNativeEndRef = useRef(null);
95
+ var isCalendarOpen = !startDisabled && !endDisabled && showCalendar;
96
+ var updateDateRangeValues = function updateDateRangeValues(value) {
97
+ if (value === void 0) {
98
+ value = '';
99
+ }
100
+ var currentValues = {
101
+ currentStart: startValue,
102
+ currentEnd: endValue,
103
+ minDate: minDate,
104
+ maxDate: maxDate
105
+ };
106
+ var updatedState = getStateForValue(focusInput, value, currentValues);
107
+ setStartValue(updatedState.start);
108
+ setEndValue(updatedState.end);
109
+ if (updatedState.isOpen && updatedState.focus) {
110
+ focus(updatedState.focus);
111
+ }
112
+ if (!updatedState.isOpen) {
113
+ close();
114
+ }
115
+ };
116
+ var open = function open(inputType) {
117
+ if (inputType === void 0) {
118
+ inputType = 'start';
119
+ }
120
+ setFocusInput(inputType);
121
+ setShowCalendar(true);
122
+ };
123
+ var close = function close() {
124
+ setShowCalendar(false);
125
+ setHoveredDay(null);
126
+ };
127
+ var focus = function focus(inputType) {
128
+ if (inputType === void 0) {
129
+ inputType = 'start';
130
+ }
131
+ setFocusInput(inputType);
132
+ };
133
+ var setEmpty = function setEmpty(type) {
134
+ switch (type) {
135
+ case 'start':
136
+ setStartValue('');
137
+ focus('end');
138
+ break;
139
+ case 'end':
140
+ setEndValue('');
141
+ close();
142
+ break;
143
+ }
144
+ };
145
+ useImperativeHandle(ref, function () {
146
+ var _calendarRef$current;
147
+ return {
148
+ open: open,
149
+ close: close,
150
+ scrollToMonth: (_calendarRef$current = calendarRef.current) == null ? void 0 : _calendarRef$current.scrollToMonth,
151
+ getRootNode: function getRootNode() {
152
+ return dateRangePickerRef.current;
153
+ }
154
+ };
155
+ }, []);
156
+ useLayoutEffect(function () {
157
+ if (!focusInput) {
158
+ return;
159
+ }
160
+
161
+ // fix DateInput flushSync warning in React 18
162
+ setTimeout(function () {
163
+ var _currentFieldRef$curr4;
164
+ var isStart = focusInput === 'start';
165
+ var currentFieldRef;
166
+
167
+ // Mobile Native Picker
168
+ if (isMobile && props.useMobileNativeDatePicker) {
169
+ currentFieldRef = isStart ? mobileNativeStartRef : mobileNativeEndRef;
170
+ if (isIOS) {
171
+ var _currentFieldRef$curr;
172
+ (_currentFieldRef$curr = currentFieldRef.current) == null || _currentFieldRef$curr.focus();
173
+ } else {
174
+ var _currentFieldRef$curr2;
175
+ // Android open native datepicker only via click
176
+ (_currentFieldRef$curr2 = currentFieldRef.current) == null || _currentFieldRef$curr2.click();
177
+ }
178
+ return;
179
+ }
180
+
181
+ // Mobile
182
+ if (isMobile) {
183
+ var _currentFieldRef$curr3;
184
+ currentFieldRef = isStart ? mobileStartRef : mobileEndRef;
185
+ (_currentFieldRef$curr3 = currentFieldRef.current) == null || _currentFieldRef$curr3.focus();
186
+ return;
187
+ }
188
+
189
+ // Desktop
190
+ currentFieldRef = isStart ? startRef : endRef;
191
+ (_currentFieldRef$curr4 = currentFieldRef.current) == null || _currentFieldRef$curr4.focus();
192
+ });
193
+ }, [focusInput]);
194
+ var dateRangePickerContextProps = {
195
+ startValue: startValue,
196
+ startOptional: startOptional,
197
+ startDisabled: startDisabled,
198
+ endValue: endValue,
199
+ endOptional: endOptional,
200
+ endDisabled: endDisabled,
201
+ minDate: minDate,
202
+ maxDate: maxDate,
203
+ size: props.size,
204
+ setStartValue: setStartValue,
205
+ setStartOptional: setStartOptional,
206
+ setStartDisabled: setStartDisabled,
207
+ setEndValue: setEndValue,
208
+ setEndOptional: setEndOptional,
209
+ setEndDisabled: setEndDisabled,
210
+ setMinDate: setMinDate,
211
+ setMaxDate: setMaxDate,
212
+ setFocusInput: setFocusInput,
213
+ open: open,
214
+ close: close,
215
+ dateRangePickerRef: dateRangePickerRef,
216
+ startRef: startRef,
217
+ endRef: endRef
218
+ };
219
+ var renderCalendar = function renderCalendar(theme, widthAuto) {
220
+ var _cx;
221
+ if (widthAuto === void 0) {
222
+ widthAuto = false;
223
+ }
224
+ return /*#__PURE__*/(
225
+ React.createElement(LocaleContext.Provider, {
226
+ value: {
227
+ locale: {
228
+ Calendar: {
229
+ months: locale.months,
230
+ dayCellChooseDateAriaLabel: locale.dayCellChooseDateAriaLabel,
231
+ selectMonthAriaLabel: locale.selectMonthAriaLabel,
232
+ selectYearAriaLabel: locale.selectYearAriaLabel,
233
+ selectChosenAriaLabel: locale.selectChosenAriaLabel
234
+ }
235
+ }
236
+ }
237
+ }, /*#__PURE__*/
238
+
239
+ React.createElement(Calendar, {
240
+ value: focusInput === 'start' ? startValue : endValue,
241
+ minDate: minDate,
242
+ maxDate: maxDate,
243
+ renderDay: function renderDay(dayProps) {
244
+ return renderCalendarRange(dayProps, theme, props.renderDay);
245
+ },
246
+ onValueChange: function onValueChange(value) {
247
+ return updateDateRangeValues(value);
248
+ },
249
+ ref: calendarRef,
250
+ onMonthChange: props.onMonthChange,
251
+ className: cx((_cx = {}, _cx[styles.calendarWidthAuto()] = widthAuto, _cx))
252
+ }))
253
+ );
254
+ };
255
+ var renderMobileCalendar = function renderMobileCalendar(theme) {
256
+ var _cx2, _cx3;
257
+ return /*#__PURE__*/(
258
+ React.createElement(MobilePopup, {
259
+ opened: true,
260
+ headerChildComponent: /*#__PURE__*/
261
+ React.createElement("div", {
262
+ className: cx(styles.inputWrapper(), styles.inputWrapperWidthFull())
263
+ }, /*#__PURE__*/
264
+ React.createElement(DateInput, {
265
+ withIcon: true,
266
+ value: startValue,
267
+ width: "auto",
268
+ size: "medium",
269
+ className: cx((_cx2 = {}, _cx2[styles.inputVisuallyFocus(theme)] = focusInput === 'start', _cx2)),
270
+ disabled: startDisabled,
271
+ onValueChange: setStartValue,
272
+ onFocus: function onFocus() {
273
+ return setFocusInput('start');
274
+ },
275
+ ref: mobileStartRef,
276
+ "data-tid": DateRangePickerDataTids.mobileStart
277
+ }), /*#__PURE__*/
278
+ React.createElement(DateRangePicker.Separator, null), /*#__PURE__*/
279
+ React.createElement(DateInput, {
280
+ withIcon: true,
281
+ value: endValue,
282
+ width: "auto",
283
+ size: "medium",
284
+ className: cx((_cx3 = {}, _cx3[styles.inputVisuallyFocus(theme)] = focusInput === 'end', _cx3)),
285
+ disabled: endDisabled,
286
+ onValueChange: setEndValue,
287
+ onFocus: function onFocus() {
288
+ return setFocusInput('end');
289
+ },
290
+ ref: mobileEndRef,
291
+ "data-tid": DateRangePickerDataTids.mobileEnd
292
+ })),
293
+ onCloseRequest: function onCloseRequest() {
294
+ return close();
295
+ },
296
+ footerChildComponent: renderButtons()
297
+ }, /*#__PURE__*/
298
+
299
+ React.createElement(ThemeContext.Provider, {
300
+ value: getMobileDateRangePickerTheme(theme)
301
+ }, renderCalendar(theme, true)))
302
+ );
303
+ };
304
+ var renderDesktopCalendar = function renderDesktopCalendar(theme) {
305
+ return /*#__PURE__*/(
306
+ React.createElement(Popup, {
307
+ opened: true,
308
+ hasShadow: true,
309
+ priority: ZIndex.priorities.PopupMenu,
310
+ positions: getMenuPositions(props.menuPos, props.menuAlign),
311
+ "data-tid": DateRangePickerDataTids.root,
312
+ anchorElement: getRootNode(dateRangePickerRef.current),
313
+ margin: parseInt(theme.datePickerMenuOffsetY)
314
+ }, /*#__PURE__*/
315
+
316
+ React.createElement("div", {
317
+ className: styles.calendarWrapper(theme),
318
+ onMouseDown: function onMouseDown(e) {
319
+ return e.preventDefault();
320
+ }
321
+ }, renderCalendar(theme), renderButtons()))
322
+ );
323
+ };
324
+ var renderButtons = function renderButtons() {
325
+ var today = new InternalDate(locale).setComponents(InternalDateGetter.getTodayComponents()).toString({
326
+ withPad: true,
327
+ withSeparator: true
328
+ });
329
+ var hasOptionalButtons = startOptional || endOptional;
330
+ return /*#__PURE__*/(
331
+ React.createElement("div", {
332
+ className: cx(styles.buttonWrap())
333
+ }, hasOptionalButtons && /*#__PURE__*/
334
+ React.createElement(React.Fragment, null, focusInput === 'start' && startOptional && /*#__PURE__*/
335
+ React.createElement(Button, {
336
+ width: "100%",
337
+ "data-tid": DateRangePickerDataTids.startOptionalButton,
338
+ onClick: function onClick() {
339
+ return setEmpty('start');
340
+ }
341
+ }, locale.startDateEmpty), focusInput === 'end' && endOptional && /*#__PURE__*/
342
+ React.createElement(Button, {
343
+ width: "100%",
344
+ "data-tid": DateRangePickerDataTids.endOptionalButton,
345
+ onClick: function onClick() {
346
+ return setEmpty('end');
347
+ }
348
+ }, locale.endDateEmpty)), props.enableTodayLink && /*#__PURE__*/
349
+ React.createElement(Button, {
350
+ icon: /*#__PURE__*/React.createElement(ArrowAUpIcon16Light, null),
351
+ "aria-label": locale.todayAriaLabel,
352
+ "data-tid": DateRangePickerDataTids.todayButton,
353
+ onClick: function onClick() {
354
+ return updateDateRangeValues(today);
355
+ }
356
+ }, !hasOptionalButtons && locale.today))
357
+ );
358
+ };
359
+ var renderMobileNativeDateInput = function renderMobileNativeDateInput() {
360
+ return /*#__PURE__*/(
361
+ React.createElement(React.Fragment, null, /*#__PURE__*/
362
+ React.createElement(NativeDateInput, {
363
+ value: startValue,
364
+ minDate: minDate,
365
+ maxDate: maxDate,
366
+ onValueChange: setStartValue,
367
+ disabled: startDisabled,
368
+ ref: mobileNativeStartRef
369
+ }), /*#__PURE__*/
370
+ React.createElement(NativeDateInput, {
371
+ value: endValue,
372
+ minDate: minDate,
373
+ maxDate: maxDate,
374
+ onValueChange: setEndValue,
375
+ disabled: endDisabled,
376
+ ref: mobileNativeEndRef
377
+ }))
378
+ );
379
+ };
380
+ return /*#__PURE__*/(
381
+ React.createElement(ThemeContext.Consumer, null, function (theme) {
382
+ return /*#__PURE__*/(
383
+ React.createElement(ThemeContext.Provider, {
384
+ value: getDateRangePickerTheme(theme)
385
+ }, /*#__PURE__*/
386
+ React.createElement(CommonWrapper, props, /*#__PURE__*/
387
+ React.createElement("div", {
388
+ className: styles.root(theme),
389
+ role: "group",
390
+ "aria-describedby": props['aria-describedby'],
391
+ "aria-label": props['aria-label'],
392
+ "aria-labelledby": props['aria-labelledby'],
393
+ "data-tid": DateRangePickerDataTids.root,
394
+ ref: dateRangePickerRef
395
+ }, /*#__PURE__*/
396
+
397
+ React.createElement(DateRangePickerContext.Provider, {
398
+ value: dateRangePickerContextProps
399
+ }, /*#__PURE__*/
400
+ React.createElement("div", {
401
+ className: cx(styles.inputWrapper(), styles.inputWrapperWidth(theme), css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n "])), getFontSize(theme, props.size)))
402
+ }, props.children), props.useMobileNativeDatePicker && isMobile ? renderMobileNativeDateInput() : isCalendarOpen && (isMobile ? renderMobileCalendar(theme) : renderDesktopCalendar(theme))))))
403
+ );
404
+ })
405
+ );
406
+ function renderCalendarRange(props, t, renderDayFn) {
407
+ var _cx4;
408
+ var day = props.date;
409
+ var isDayFirst = startValue === day;
410
+ var isDayLast = endValue === day;
411
+ var isDayInPeriod = Boolean(startValue && endValue && isBetween(day, startValue, endValue));
412
+ var hasHoveredDay = hoveredDay !== null;
413
+ var isDayInHoveredPeriod = hasHoveredDay && Boolean(focusInput === 'start' && endValue && isBetween(day, hoveredDay, endValue) || focusInput === 'end' && startValue && isBetween(day, startValue, hoveredDay));
414
+ var hasLeftRoundings;
415
+ var hasRightRoundings;
416
+ if (hasHoveredDay) {
417
+ var isDayBeforeFirstInPeriod = startValue ? isLess(hoveredDay, startValue) : endValue;
418
+ var isDayAfterLastInPeriod = endValue ? isGreater(hoveredDay, endValue) : startValue;
419
+ if (isDayFirst && (isGreaterOrEqual(hoveredDay, startValue) || focusInput === 'end')) {
420
+ hasLeftRoundings = true;
421
+ }
422
+ if (isDayLast && (isLessOrEqual(hoveredDay, endValue) || focusInput === 'start')) {
423
+ hasRightRoundings = true;
424
+ }
425
+ var isDayHovered = hoveredDay === day;
426
+ if (isDayHovered) {
427
+ if (isDayBeforeFirstInPeriod) {
428
+ hasLeftRoundings = true;
429
+ }
430
+ if (isDayAfterLastInPeriod) {
431
+ hasRightRoundings = true;
432
+ }
433
+ }
434
+ } else {
435
+ if (isDayFirst) {
436
+ hasLeftRoundings = true;
437
+ }
438
+ if (isDayLast) {
439
+ hasRightRoundings = true;
440
+ }
441
+ }
442
+ return /*#__PURE__*/(
443
+ React.createElement("div", {
444
+ onMouseOver: function onMouseOver() {
445
+ return setHoveredDay(day);
446
+ },
447
+ onMouseOut: function onMouseOut() {
448
+ return setHoveredDay(null);
449
+ },
450
+ className: cx(styles.rangeCalendarDay(), css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n background: ", ";\n border-top-left-radius: ", ";\n border-bottom-left-radius: ", ";\n border-top-right-radius: ", ";\n border-bottom-right-radius: ", ";\n "])), isDayInPeriod && t.rangeCalendarCellBg, hasLeftRoundings && t.calendarCellBorderRadius, hasLeftRoundings && t.calendarCellBorderRadius, hasRightRoundings && t.calendarCellBorderRadius, hasRightRoundings && t.calendarCellBorderRadius), (_cx4 = {}, _cx4[styles.rangeCalendarDayEnd(t)] = isDayFirst || isDayLast, _cx4[styles.rangeCalendarDayHoverInPeriod(t)] = isDayInPeriod, _cx4[styles.rangeCalendarDayInHoveredPeriod(t)] = isDayInHoveredPeriod, _cx4))
451
+ }, renderDayFn ? renderDayFn(props) : /*#__PURE__*/React.createElement(CalendarDay, props))
452
+ );
453
+ }
454
+ }));
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useImperativeHandle","useRef","useState","useLayoutEffect","MobilePopup","useLocaleForControl","css","cx","ThemeContext","CommonWrapper","Calendar","CalendarDay","Popup","DateInput","isBetween","isGreater","isGreaterOrEqual","isLess","isLessOrEqual","ZIndex","getRootNode","getMenuPositions","Button","useResponsiveLayout","InternalDate","InternalDateGetter","ArrowAUpIcon16Light","NativeDateInput","forwardRefAndName","LocaleContext","isIOS","getFontSize","styles","DateRangePickerSeparator","DateRangePickerContext","DateRangePickerEnd","DateRangePickerStart","getDateRangePickerTheme","getMobileDateRangePickerTheme","DateRangePickerLocaleHelper","validateDateRangePicker","getStateForValue","DateRangePickerDataTids","root","start","end","popup","calendar","todayButton","startOptionalButton","endOptionalButton","mobileStart","mobileEnd","DateRangePicker","Object","assign","Start","End","Separator","validate","props","ref","_useResponsiveLayout","isMobile","locale","_useState","startValue","setStartValue","_useState2","startOptional","setStartOptional","_useState3","startDisabled","setStartDisabled","_useState4","endValue","setEndValue","_useState5","endOptional","setEndOptional","_useState6","endDisabled","setEndDisabled","_useState7","minDate","setMinDate","_useState8","maxDate","setMaxDate","_useState9","hoveredDay","setHoveredDay","_useState10","showCalendar","setShowCalendar","_useState11","focusInput","setFocusInput","dateRangePickerRef","calendarRef","startRef","endRef","mobileStartRef","mobileEndRef","mobileNativeStartRef","mobileNativeEndRef","isCalendarOpen","updateDateRangeValues","value","currentValues","currentStart","currentEnd","updatedState","isOpen","focus","close","open","inputType","setEmpty","type","_calendarRef$current","scrollToMonth","current","setTimeout","_currentFieldRef$curr4","isStart","currentFieldRef","useMobileNativeDatePicker","_currentFieldRef$curr","_currentFieldRef$curr2","click","_currentFieldRef$curr3","dateRangePickerContextProps","size","renderCalendar","theme","widthAuto","_cx","createElement","Provider","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","renderDay","dayProps","renderCalendarRange","onValueChange","onMonthChange","className","calendarWidthAuto","renderMobileCalendar","_cx2","_cx3","opened","headerChildComponent","inputWrapper","inputWrapperWidthFull","withIcon","width","inputVisuallyFocus","disabled","onFocus","onCloseRequest","footerChildComponent","renderButtons","renderDesktopCalendar","hasShadow","priority","priorities","PopupMenu","positions","menuPos","menuAlign","anchorElement","margin","parseInt","datePickerMenuOffsetY","calendarWrapper","onMouseDown","e","preventDefault","today","setComponents","getTodayComponents","toString","withPad","withSeparator","hasOptionalButtons","buttonWrap","Fragment","onClick","startDateEmpty","endDateEmpty","enableTodayLink","icon","todayAriaLabel","renderMobileNativeDateInput","Consumer","role","inputWrapperWidth","_templateObject","_taggedTemplateLiteralLoose","children","t","renderDayFn","_cx4","day","date","isDayFirst","isDayLast","isDayInPeriod","Boolean","hasHoveredDay","isDayInHoveredPeriod","hasLeftRoundings","hasRightRoundings","isDayBeforeFirstInPeriod","isDayAfterLastInPeriod","isDayHovered","onMouseOver","onMouseOut","rangeCalendarDay","_templateObject2","rangeCalendarCellBg","calendarCellBorderRadius","rangeCalendarDayEnd","rangeCalendarDayHoverInPeriod","rangeCalendarDayInHoveredPeriod"],"sources":["DateRangePicker.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useLayoutEffect, type AriaAttributes } from 'react';\n\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { css, cx } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Calendar, CalendarDay, CalendarDayProps } from '../Calendar';\nimport { Popup } from '../../internal/Popup';\nimport { DateInput } from '../DateInput';\nimport { isBetween, isGreater, isGreaterOrEqual, isLess, isLessOrEqual } from '../../lib/date/comparison';\nimport { DatePickerProps } from '../DatePicker';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { getRootNode } from '../../lib/rootNode';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { Button } from '../Button';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { LocaleContext } from '../../lib/locale';\nimport { isIOS } from '../../lib/client';\n\nimport { getFontSize, styles } from './DateRangePicker.styles';\nimport { DateRangePickerSeparator } from './DateRangePickerSeparator';\nimport { DateRangePickerContext, DateRangePickerContextProps } from './DateRangePickerContext';\nimport { DateRangePickerEnd, DateRangePickerInputType, DateRangePickerStart } from './DateRangePickerInput';\nimport { getDateRangePickerTheme, getMobileDateRangePickerTheme } from './DateRangePickerTheme';\nimport { DateRangePickerLocaleHelper } from './locale';\nimport { validateDateRangePicker } from './helpers/validateDateRangePicker';\nimport { getStateForValue } from './helpers/getStateForValue';\n\nexport const DateRangePickerDataTids = {\n root: 'DateRangePicker__root',\n start: 'DateRangePicker__start',\n end: 'DateRangePicker__end',\n popup: 'DateRangePicker__popup',\n calendar: 'DateRangePicker__calendar',\n todayButton: 'DateRangePicker__todayButton',\n startOptionalButton: 'DateRangePicker__startOptionalButton',\n endOptionalButton: 'DateRangePicker__endOptionalButton',\n mobileStart: 'DateRangePicker__mobileStart',\n mobileEnd: 'DateRangePicker__mobileEnd',\n} as const;\n\nexport interface DateRangePickerProps\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>,\n Pick<\n DatePickerProps,\n 'size' | 'renderDay' | 'menuPos' | 'menuAlign' | 'useMobileNativeDatePicker' | 'enableTodayLink' | 'onMonthChange'\n > {\n /**\n * Элементы DateRangePicker:\n * `<DateRangePicker.Start />`\n * `<DateRangePicker.Separator />`\n * `<DateRangePicker.End />`\n */\n children: React.ReactNode;\n}\n\nexport const DateRangePicker = Object.assign(\n {\n Start: DateRangePickerStart,\n End: DateRangePickerEnd,\n Separator: DateRangePickerSeparator,\n validate: validateDateRangePicker,\n },\n forwardRefAndName('DateRangePicker', (props: DateRangePickerProps, ref) => {\n const { isMobile } = useResponsiveLayout();\n const locale = useLocaleForControl('DateRangePicker', DateRangePickerLocaleHelper);\n\n const [startValue, setStartValue] = useState<string>();\n const [startOptional, setStartOptional] = useState(false);\n const [startDisabled, setStartDisabled] = useState(false);\n\n const [endValue, setEndValue] = useState<string>();\n const [endOptional, setEndOptional] = useState(false);\n const [endDisabled, setEndDisabled] = useState(false);\n\n const [minDate, setMinDate] = useState('');\n const [maxDate, setMaxDate] = useState('');\n\n const [hoveredDay, setHoveredDay] = useState<string | null>(null);\n const [showCalendar, setShowCalendar] = useState<boolean>(false);\n const [focusInput, setFocusInput] = useState<DateRangePickerInputType | null>(null);\n\n const dateRangePickerRef = useRef<HTMLDivElement>(null);\n const calendarRef = useRef<Calendar>(null);\n const startRef = useRef<DateInput>(null);\n const endRef = useRef<DateInput>(null);\n const mobileStartRef = useRef<DateInput>(null);\n const mobileEndRef = useRef<DateInput>(null);\n const mobileNativeStartRef = useRef<NativeDateInput>(null);\n const mobileNativeEndRef = useRef<NativeDateInput>(null);\n const isCalendarOpen = !startDisabled && !endDisabled && showCalendar;\n\n const updateDateRangeValues = (value = '') => {\n const currentValues = {\n currentStart: startValue,\n currentEnd: endValue,\n minDate,\n maxDate,\n };\n const updatedState = getStateForValue(focusInput, value, currentValues);\n\n setStartValue(updatedState.start);\n setEndValue(updatedState.end);\n\n if (updatedState.isOpen && updatedState.focus) {\n focus(updatedState.focus);\n }\n\n if (!updatedState.isOpen) {\n close();\n }\n };\n\n const open = (inputType: DateRangePickerInputType = 'start') => {\n setFocusInput(inputType);\n setShowCalendar(true);\n };\n\n const close = () => {\n setShowCalendar(false);\n setHoveredDay(null);\n };\n\n const focus = (inputType: DateRangePickerInputType = 'start') => {\n setFocusInput(inputType);\n };\n\n const setEmpty = (type: DateRangePickerInputType) => {\n switch (type) {\n case 'start':\n setStartValue('');\n focus('end');\n break;\n\n case 'end':\n setEndValue('');\n close();\n break;\n }\n };\n\n useImperativeHandle(\n ref,\n () => ({\n open,\n close,\n scrollToMonth: calendarRef.current?.scrollToMonth,\n getRootNode: () => dateRangePickerRef.current,\n }),\n [],\n );\n\n useLayoutEffect(() => {\n if (!focusInput) {\n return;\n }\n\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n const isStart = focusInput === 'start';\n let currentFieldRef;\n\n // Mobile Native Picker\n if (isMobile && props.useMobileNativeDatePicker) {\n currentFieldRef = isStart ? mobileNativeStartRef : mobileNativeEndRef;\n if (isIOS) {\n currentFieldRef.current?.focus();\n } else {\n // Android open native datepicker only via click\n currentFieldRef.current?.click();\n }\n return;\n }\n\n // Mobile\n if (isMobile) {\n currentFieldRef = isStart ? mobileStartRef : mobileEndRef;\n currentFieldRef.current?.focus();\n return;\n }\n\n // Desktop\n currentFieldRef = isStart ? startRef : endRef;\n currentFieldRef.current?.focus();\n });\n }, [focusInput]);\n\n const dateRangePickerContextProps: DateRangePickerContextProps = {\n startValue,\n startOptional,\n startDisabled,\n endValue,\n endOptional,\n endDisabled,\n minDate,\n maxDate,\n size: props.size,\n setStartValue,\n setStartOptional,\n setStartDisabled,\n setEndValue,\n setEndOptional,\n setEndDisabled,\n setMinDate,\n setMaxDate,\n setFocusInput,\n open,\n close,\n dateRangePickerRef,\n startRef,\n endRef,\n };\n\n const renderCalendar = (theme: Theme, widthAuto = false) => (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: locale.months,\n dayCellChooseDateAriaLabel: locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: locale.selectMonthAriaLabel,\n selectYearAriaLabel: locale.selectYearAriaLabel,\n selectChosenAriaLabel: locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <Calendar\n value={focusInput === 'start' ? startValue : endValue}\n minDate={minDate}\n maxDate={maxDate}\n renderDay={(dayProps) => renderCalendarRange(dayProps, theme, props.renderDay)}\n onValueChange={(value) => updateDateRangeValues(value)}\n ref={calendarRef}\n onMonthChange={props.onMonthChange}\n className={cx({ [styles.calendarWidthAuto()]: widthAuto })}\n />\n </LocaleContext.Provider>\n );\n\n const renderMobileCalendar = (theme: Theme) => (\n <MobilePopup\n opened\n headerChildComponent={\n <div className={cx(styles.inputWrapper(), styles.inputWrapperWidthFull())}>\n <DateInput\n withIcon\n value={startValue}\n width=\"auto\"\n size=\"medium\"\n className={cx({ [styles.inputVisuallyFocus(theme)]: focusInput === 'start' })}\n disabled={startDisabled}\n onValueChange={setStartValue}\n onFocus={() => setFocusInput('start')}\n ref={mobileStartRef}\n data-tid={DateRangePickerDataTids.mobileStart}\n />\n <DateRangePicker.Separator />\n <DateInput\n withIcon\n value={endValue}\n width=\"auto\"\n size=\"medium\"\n className={cx({ [styles.inputVisuallyFocus(theme)]: focusInput === 'end' })}\n disabled={endDisabled}\n onValueChange={setEndValue}\n onFocus={() => setFocusInput('end')}\n ref={mobileEndRef}\n data-tid={DateRangePickerDataTids.mobileEnd}\n />\n </div>\n }\n onCloseRequest={() => close()}\n footerChildComponent={renderButtons()}\n >\n <ThemeContext.Provider value={getMobileDateRangePickerTheme(theme)}>\n {renderCalendar(theme, true)}\n </ThemeContext.Provider>\n </MobilePopup>\n );\n\n const renderDesktopCalendar = (theme: Theme) => (\n <Popup\n opened\n hasShadow\n priority={ZIndex.priorities.PopupMenu}\n positions={getMenuPositions(props.menuPos, props.menuAlign)}\n data-tid={DateRangePickerDataTids.root}\n anchorElement={getRootNode(dateRangePickerRef.current)}\n margin={parseInt(theme.datePickerMenuOffsetY)}\n >\n <div className={styles.calendarWrapper(theme)} onMouseDown={(e) => e.preventDefault()}>\n {renderCalendar(theme)}\n {renderButtons()}\n </div>\n </Popup>\n );\n\n const renderButtons = () => {\n const today = new InternalDate(locale)\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n const hasOptionalButtons = startOptional || endOptional;\n return (\n <div className={cx(styles.buttonWrap())}>\n {hasOptionalButtons && (\n <>\n {focusInput === 'start' && startOptional && (\n <Button\n width=\"100%\"\n data-tid={DateRangePickerDataTids.startOptionalButton}\n onClick={() => setEmpty('start')}\n >\n {locale.startDateEmpty}\n </Button>\n )}\n {focusInput === 'end' && endOptional && (\n <Button\n width=\"100%\"\n data-tid={DateRangePickerDataTids.endOptionalButton}\n onClick={() => setEmpty('end')}\n >\n {locale.endDateEmpty}\n </Button>\n )}\n </>\n )}\n\n {props.enableTodayLink && (\n <Button\n icon={<ArrowAUpIcon16Light />}\n aria-label={locale.todayAriaLabel}\n data-tid={DateRangePickerDataTids.todayButton}\n onClick={() => updateDateRangeValues(today)}\n >\n {!hasOptionalButtons && locale.today}\n </Button>\n )}\n </div>\n );\n };\n\n const renderMobileNativeDateInput = () => (\n <>\n <NativeDateInput\n value={startValue}\n minDate={minDate}\n maxDate={maxDate}\n onValueChange={setStartValue}\n disabled={startDisabled}\n ref={mobileNativeStartRef}\n />\n <NativeDateInput\n value={endValue}\n minDate={minDate}\n maxDate={maxDate}\n onValueChange={setEndValue}\n disabled={endDisabled}\n ref={mobileNativeEndRef}\n />\n </>\n );\n\n return (\n <ThemeContext.Consumer>\n {(theme) => (\n <ThemeContext.Provider value={getDateRangePickerTheme(theme)}>\n <CommonWrapper {...props}>\n <div\n className={styles.root(theme)}\n role=\"group\"\n aria-describedby={props['aria-describedby']}\n aria-label={props['aria-label']}\n aria-labelledby={props['aria-labelledby']}\n data-tid={DateRangePickerDataTids.root}\n ref={dateRangePickerRef}\n >\n <DateRangePickerContext.Provider value={dateRangePickerContextProps}>\n <div\n className={cx(\n styles.inputWrapper(),\n styles.inputWrapperWidth(theme),\n css`\n font-size: ${getFontSize(theme, props.size)};\n `,\n )}\n >\n {props.children}\n </div>\n\n {props.useMobileNativeDatePicker && isMobile\n ? renderMobileNativeDateInput()\n : isCalendarOpen && (isMobile ? renderMobileCalendar(theme) : renderDesktopCalendar(theme))}\n </DateRangePickerContext.Provider>\n </div>\n </CommonWrapper>\n </ThemeContext.Provider>\n )}\n </ThemeContext.Consumer>\n );\n\n function renderCalendarRange(\n props: CalendarDayProps,\n t: Theme,\n renderDayFn: ((props: CalendarDayProps) => React.ReactElement) | undefined,\n ) {\n const day = props.date;\n\n const isDayFirst = startValue === day;\n const isDayLast = endValue === day;\n const isDayInPeriod = Boolean(startValue && endValue && isBetween(day, startValue, endValue));\n\n const hasHoveredDay = hoveredDay !== null;\n const isDayInHoveredPeriod =\n hasHoveredDay &&\n Boolean(\n (focusInput === 'start' && endValue && isBetween(day, hoveredDay, endValue)) ||\n (focusInput === 'end' && startValue && isBetween(day, startValue, hoveredDay)),\n );\n\n let hasLeftRoundings;\n let hasRightRoundings;\n\n if (hasHoveredDay) {\n const isDayBeforeFirstInPeriod = startValue ? isLess(hoveredDay, startValue) : endValue;\n const isDayAfterLastInPeriod = endValue ? isGreater(hoveredDay, endValue) : startValue;\n\n if (isDayFirst && (isGreaterOrEqual(hoveredDay, startValue) || focusInput === 'end')) {\n hasLeftRoundings = true;\n }\n\n if (isDayLast && (isLessOrEqual(hoveredDay, endValue) || focusInput === 'start')) {\n hasRightRoundings = true;\n }\n\n const isDayHovered = hoveredDay === day;\n if (isDayHovered) {\n if (isDayBeforeFirstInPeriod) {\n hasLeftRoundings = true;\n }\n\n if (isDayAfterLastInPeriod) {\n hasRightRoundings = true;\n }\n }\n } else {\n if (isDayFirst) {\n hasLeftRoundings = true;\n }\n\n if (isDayLast) {\n hasRightRoundings = true;\n }\n }\n\n return (\n <div\n onMouseOver={() => setHoveredDay(day)}\n onMouseOut={() => setHoveredDay(null)}\n className={cx(\n styles.rangeCalendarDay(),\n css`\n background: ${isDayInPeriod && t.rangeCalendarCellBg};\n border-top-left-radius: ${hasLeftRoundings && t.calendarCellBorderRadius};\n border-bottom-left-radius: ${hasLeftRoundings && t.calendarCellBorderRadius};\n border-top-right-radius: ${hasRightRoundings && t.calendarCellBorderRadius};\n border-bottom-right-radius: ${hasRightRoundings && t.calendarCellBorderRadius};\n `,\n {\n [styles.rangeCalendarDayEnd(t)]: isDayFirst || isDayLast,\n [styles.rangeCalendarDayHoverInPeriod(t)]: isDayInPeriod,\n [styles.rangeCalendarDayInHoveredPeriod(t)]: isDayInHoveredPeriod,\n },\n )}\n >\n {renderDayFn ? renderDayFn(props) : <CalendarDay {...props} />}\n </div>\n );\n }\n }),\n);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../cjs/components/DateRangePicker/DateRangePicker.js",
3
+ "module": "DateRangePicker",
4
+ "types": "../DateRangePicker.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,82 @@
1
+ import React, { type AriaAttributes } from 'react';
2
+ import { CommonProps } from '../../internal/CommonWrapper';
3
+ import { DateInput } from '../DateInput';
4
+ import { DatePickerProps } from '../DatePicker';
5
+ import { validateDateRangePicker } from './helpers/validateDateRangePicker';
6
+ export declare const DateRangePickerDataTids: {
7
+ readonly root: "DateRangePicker__root";
8
+ readonly start: "DateRangePicker__start";
9
+ readonly end: "DateRangePicker__end";
10
+ readonly popup: "DateRangePicker__popup";
11
+ readonly calendar: "DateRangePicker__calendar";
12
+ readonly todayButton: "DateRangePicker__todayButton";
13
+ readonly startOptionalButton: "DateRangePicker__startOptionalButton";
14
+ readonly endOptionalButton: "DateRangePicker__endOptionalButton";
15
+ readonly mobileStart: "DateRangePicker__mobileStart";
16
+ readonly mobileEnd: "DateRangePicker__mobileEnd";
17
+ };
18
+ export interface DateRangePickerProps extends CommonProps, Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>, Pick<DatePickerProps, 'size' | 'renderDay' | 'menuPos' | 'menuAlign' | 'useMobileNativeDatePicker' | 'enableTodayLink' | 'onMonthChange'> {
19
+ /**
20
+ * Элементы DateRangePicker:
21
+ * `<DateRangePicker.Start />`
22
+ * `<DateRangePicker.Separator />`
23
+ * `<DateRangePicker.End />`
24
+ */
25
+ children: React.ReactNode;
26
+ }
27
+ export declare const DateRangePicker: {
28
+ Start: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<DateInput, {
29
+ style?: React.CSSProperties | undefined;
30
+ children?: React.ReactNode;
31
+ className?: string | undefined;
32
+ onValueChange?: ((value: string) => void) | undefined;
33
+ disabled?: boolean | undefined;
34
+ size?: import("../..").SizeProp | undefined;
35
+ value?: string | null | undefined;
36
+ width?: string | number | undefined;
37
+ autoFocus?: boolean | undefined;
38
+ id?: string | undefined;
39
+ "aria-describedby"?: string | undefined;
40
+ "aria-label"?: string | undefined;
41
+ "aria-labelledby"?: string | undefined;
42
+ onFocus?: ((x0: React.FocusEvent<HTMLElement, Element>) => void) | undefined;
43
+ onBlur?: ((x0: React.FocusEvent<HTMLElement, Element>) => void) | undefined;
44
+ onKeyDown?: ((x0: React.KeyboardEvent<HTMLElement>) => void) | undefined;
45
+ onClick?: ((x0: React.MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
46
+ 'data-tid'?: string | undefined;
47
+ error?: boolean | undefined;
48
+ warning?: boolean | undefined;
49
+ minDate?: string | undefined;
50
+ maxDate?: string | undefined;
51
+ withIcon?: boolean | undefined;
52
+ optional?: boolean | undefined;
53
+ }> & Record<never, never>;
54
+ End: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<DateInput, {
55
+ style?: React.CSSProperties | undefined;
56
+ children?: React.ReactNode;
57
+ className?: string | undefined;
58
+ onValueChange?: ((value: string) => void) | undefined;
59
+ disabled?: boolean | undefined;
60
+ size?: import("../..").SizeProp | undefined;
61
+ value?: string | null | undefined;
62
+ width?: string | number | undefined;
63
+ autoFocus?: boolean | undefined;
64
+ id?: string | undefined;
65
+ "aria-describedby"?: string | undefined;
66
+ "aria-label"?: string | undefined;
67
+ "aria-labelledby"?: string | undefined;
68
+ onFocus?: ((x0: React.FocusEvent<HTMLElement, Element>) => void) | undefined;
69
+ onBlur?: ((x0: React.FocusEvent<HTMLElement, Element>) => void) | undefined;
70
+ onKeyDown?: ((x0: React.KeyboardEvent<HTMLElement>) => void) | undefined;
71
+ onClick?: ((x0: React.MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
72
+ 'data-tid'?: string | undefined;
73
+ error?: boolean | undefined;
74
+ warning?: boolean | undefined;
75
+ minDate?: string | undefined;
76
+ maxDate?: string | undefined;
77
+ withIcon?: boolean | undefined;
78
+ optional?: boolean | undefined;
79
+ }> & Record<never, never>;
80
+ Separator: () => React.JSX.Element;
81
+ validate: typeof validateDateRangePicker;
82
+ } & import("../../lib/forwardRefAndName").ReactUIComponentWithRef<unknown, DateRangePickerProps> & Record<never, never>;