@skbkontur/react-ui 6.1.6 → 6.1.7-1c902.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 (152) hide show
  1. package/components/Checkbox/Checkbox.d.ts +5 -0
  2. package/components/Checkbox/Checkbox.js +42 -21
  3. package/components/Checkbox/Checkbox.js.map +1 -1
  4. package/components/Checkbox/Checkbox.mixins.d.ts +2 -0
  5. package/components/Checkbox/Checkbox.mixins.js +6 -0
  6. package/components/Checkbox/Checkbox.mixins.js.map +1 -1
  7. package/components/Checkbox/Checkbox.styles.d.ts +7 -0
  8. package/components/Checkbox/Checkbox.styles.js +23 -2
  9. package/components/Checkbox/Checkbox.styles.js.map +1 -1
  10. package/components/Group/Group.js +3 -2
  11. package/components/Group/Group.js.map +1 -1
  12. package/components/Input/Input.d.ts +1 -1
  13. package/components/Input/Input.js.map +1 -1
  14. package/components/MenuItem/MenuItem.js +1 -0
  15. package/components/MenuItem/MenuItem.js.map +1 -1
  16. package/components/MenuItem/MenuItem.styles.d.ts +1 -0
  17. package/components/MenuItem/MenuItem.styles.js +10 -7
  18. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  19. package/components/Radio/Radio.d.ts +4 -0
  20. package/components/Radio/Radio.js +20 -1
  21. package/components/Radio/Radio.js.map +1 -1
  22. package/components/Radio/Radio.mixins.d.ts +2 -0
  23. package/components/Radio/Radio.mixins.js +6 -0
  24. package/components/Radio/Radio.mixins.js.map +1 -1
  25. package/components/Radio/Radio.styles.d.ts +6 -0
  26. package/components/Radio/Radio.styles.js +22 -4
  27. package/components/Radio/Radio.styles.js.map +1 -1
  28. package/components/TimePicker/TimeClockIcon.d.ts +3 -0
  29. package/components/TimePicker/TimeClockIcon.js +11 -0
  30. package/components/TimePicker/TimeClockIcon.js.map +1 -0
  31. package/components/TimePicker/TimePicker.d.ts +137 -0
  32. package/components/TimePicker/TimePicker.js +648 -0
  33. package/components/TimePicker/TimePicker.js.map +1 -0
  34. package/components/TimePicker/TimePicker.styles.d.ts +11 -0
  35. package/components/TimePicker/TimePicker.styles.js +36 -0
  36. package/components/TimePicker/TimePicker.styles.js.map +1 -0
  37. package/components/TimePicker/TimePickerItems.d.ts +20 -0
  38. package/components/TimePicker/TimePickerItems.js +108 -0
  39. package/components/TimePicker/TimePickerItems.js.map +1 -0
  40. package/components/TimePicker/TimePickerMobilePopup.d.ts +45 -0
  41. package/components/TimePicker/TimePickerMobilePopup.js +45 -0
  42. package/components/TimePicker/TimePickerMobilePopup.js.map +1 -0
  43. package/components/TimePicker/TimePickerPopup.d.ts +23 -0
  44. package/components/TimePicker/TimePickerPopup.js +18 -0
  45. package/components/TimePicker/TimePickerPopup.js.map +1 -0
  46. package/components/TimePicker/helpers/TimePicker.constants.d.ts +24 -0
  47. package/components/TimePicker/helpers/TimePicker.constants.js +33 -0
  48. package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -0
  49. package/components/TimePicker/helpers/TimePicker.editing.d.ts +23 -0
  50. package/components/TimePicker/helpers/TimePicker.editing.js +101 -0
  51. package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -0
  52. package/components/TimePicker/helpers/TimePicker.layout.d.ts +6 -0
  53. package/components/TimePicker/helpers/TimePicker.layout.js +49 -0
  54. package/components/TimePicker/helpers/TimePicker.layout.js.map +1 -0
  55. package/components/TimePicker/helpers/TimePicker.selection.d.ts +5 -0
  56. package/components/TimePicker/helpers/TimePicker.selection.js +23 -0
  57. package/components/TimePicker/helpers/TimePicker.selection.js.map +1 -0
  58. package/components/TimePicker/helpers/TimePicker.shared.d.ts +82 -0
  59. package/components/TimePicker/helpers/TimePicker.shared.js +94 -0
  60. package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -0
  61. package/components/TimePicker/helpers/TimePicker.value.d.ts +59 -0
  62. package/components/TimePicker/helpers/TimePicker.value.js +175 -0
  63. package/components/TimePicker/helpers/TimePicker.value.js.map +1 -0
  64. package/components/TimePicker/helpers/scrollSelectedItemIntoView.d.ts +4 -0
  65. package/components/TimePicker/helpers/scrollSelectedItemIntoView.js +24 -0
  66. package/components/TimePicker/helpers/scrollSelectedItemIntoView.js.map +1 -0
  67. package/components/TimePicker/helpers/validateTimePicker.d.ts +8 -0
  68. package/components/TimePicker/helpers/validateTimePicker.js +17 -0
  69. package/components/TimePicker/helpers/validateTimePicker.js.map +1 -0
  70. package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +18 -0
  71. package/components/TimePicker/hooks/useTimePickerDropdown.js +85 -0
  72. package/components/TimePicker/hooks/useTimePickerDropdown.js.map +1 -0
  73. package/components/TimePicker/hooks/useTimePickerSelection.d.ts +18 -0
  74. package/components/TimePicker/hooks/useTimePickerSelection.js +66 -0
  75. package/components/TimePicker/hooks/useTimePickerSelection.js.map +1 -0
  76. package/components/TimePicker/hooks/useTimePickerValue.d.ts +27 -0
  77. package/components/TimePicker/hooks/useTimePickerValue.js +76 -0
  78. package/components/TimePicker/hooks/useTimePickerValue.js.map +1 -0
  79. package/components/TimePicker/index.d.ts +2 -0
  80. package/components/TimePicker/index.js +2 -0
  81. package/components/TimePicker/index.js.map +1 -0
  82. package/components/TimePicker/locale/index.d.ts +4 -0
  83. package/components/TimePicker/locale/index.js +9 -0
  84. package/components/TimePicker/locale/index.js.map +1 -0
  85. package/components/TimePicker/locale/locales/en.d.ts +2 -0
  86. package/components/TimePicker/locale/locales/en.js +5 -0
  87. package/components/TimePicker/locale/locales/en.js.map +1 -0
  88. package/components/TimePicker/locale/locales/ru.d.ts +2 -0
  89. package/components/TimePicker/locale/locales/ru.js +5 -0
  90. package/components/TimePicker/locale/locales/ru.js.map +1 -0
  91. package/components/TimePicker/locale/types.d.ts +4 -0
  92. package/components/TimePicker/locale/types.js +2 -0
  93. package/components/TimePicker/locale/types.js.map +1 -0
  94. package/components/Toggle/Toggle.d.ts +5 -0
  95. package/components/Toggle/Toggle.js +46 -22
  96. package/components/Toggle/Toggle.js.map +1 -1
  97. package/components/Toggle/Toggle.mixins.d.ts +2 -0
  98. package/components/Toggle/Toggle.mixins.js +6 -0
  99. package/components/Toggle/Toggle.mixins.js.map +1 -1
  100. package/components/Toggle/Toggle.styles.d.ts +9 -0
  101. package/components/Toggle/Toggle.styles.js +29 -2
  102. package/components/Toggle/Toggle.styles.js.map +1 -1
  103. package/index.d.ts +1 -0
  104. package/index.js +1 -0
  105. package/index.js.map +1 -1
  106. package/internal/NativeTimeInput/NativeTimeInput.d.ts +16 -0
  107. package/internal/NativeTimeInput/NativeTimeInput.js +25 -0
  108. package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -0
  109. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -0
  110. package/internal/NativeTimeInput/NativeTimeInput.styles.js +15 -0
  111. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -0
  112. package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +7 -0
  113. package/internal/NativeTimeInput/NativeTimeInput.utils.js +28 -0
  114. package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +1 -0
  115. package/internal/NativeTimeInput/index.d.ts +1 -0
  116. package/internal/NativeTimeInput/index.js +2 -0
  117. package/internal/NativeTimeInput/index.js.map +1 -0
  118. package/internal/TimeInput/TimeFragments.d.ts +15 -0
  119. package/internal/TimeInput/TimeFragments.js +72 -0
  120. package/internal/TimeInput/TimeFragments.js.map +1 -0
  121. package/internal/TimeInput/TimeFragments.styles.d.ts +12 -0
  122. package/internal/TimeInput/TimeFragments.styles.js +43 -0
  123. package/internal/TimeInput/TimeFragments.styles.js.map +1 -0
  124. package/internal/TimeInput/TimeInput.d.ts +22 -0
  125. package/internal/TimeInput/TimeInput.js +103 -0
  126. package/internal/TimeInput/TimeInput.js.map +1 -0
  127. package/internal/TimeInput/TimeInput.styles.d.ts +6 -0
  128. package/internal/TimeInput/TimeInput.styles.js +21 -0
  129. package/internal/TimeInput/TimeInput.styles.js.map +1 -0
  130. package/internal/TimeInput/index.d.ts +1 -0
  131. package/internal/TimeInput/index.js +2 -0
  132. package/internal/TimeInput/index.js.map +1 -0
  133. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +2 -0
  134. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +20 -0
  135. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +1 -0
  136. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +2 -0
  137. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +20 -0
  138. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +1 -0
  139. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +2 -0
  140. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +20 -0
  141. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +1 -0
  142. package/internal/themes/BasicTheme.d.ts +65 -0
  143. package/internal/themes/BasicTheme.js +253 -0
  144. package/internal/themes/BasicTheme.js.map +1 -1
  145. package/internal/themes/DarkTheme6_0.js +1 -0
  146. package/internal/themes/DarkTheme6_0.js.map +1 -1
  147. package/lib/locale/types.d.ts +2 -0
  148. package/lib/locale/types.js.map +1 -1
  149. package/lib/utils.d.ts +2 -0
  150. package/lib/utils.js +1 -0
  151. package/lib/utils.js.map +1 -1
  152. package/package.json +9 -1
@@ -0,0 +1,648 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import React, { useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, } from 'react';
24
+ import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
25
+ import { LoadingIcon } from '../../internal/icons2022/LoadingIcon.js';
26
+ import { NativeTimeInput } from '../../internal/NativeTimeInput/index.js';
27
+ import { TimeInput } from '../../internal/TimeInput/index.js';
28
+ import { isIOS, isMobile } from '../../lib/client.js';
29
+ import { isKeyArrowDown, isKeyArrowLeft, isKeyArrowRight, isKeyArrowUp, isKeyBackspace, isKeyChar, isKeyDelete, isKeyEnter, isKeyEscape, isKeySpace, isKeyTab, isModShift, isShortcutSelectAll, } from '../../lib/events/keyboard/identifiers.js';
30
+ import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
31
+ import { useLocaleForControl } from '../../lib/locale/useLocaleForControl.js';
32
+ import { useStyles } from '../../lib/renderEnvironment/index.js';
33
+ import { ThemeContext } from '../../lib/theming/ThemeContext.js';
34
+ import { getRandomID } from '../../lib/utils.js';
35
+ import { scrollSelectedItemIntoView } from './helpers/scrollSelectedItemIntoView.js';
36
+ import { DIGIT_REGEXP, EMPTY_SEGMENT, EMPTY_VALUE, TimePickerDataTids } from './helpers/TimePicker.constants.js';
37
+ import { commitTimeSegmentOnLeave, deleteTimeSegmentDigit, formatDigitToTimeSegment, shiftTimeSegmentValue, } from './helpers/TimePicker.editing.js';
38
+ import { getTimePickerPopupMaxHeight } from './helpers/TimePicker.layout.js';
39
+ import { getNextTimeSegment, getPreviousTimeSegment } from './helpers/TimePicker.selection.js';
40
+ import { isTimeItem, isTimeItemObject, isTimeMenuItem, timeValueToItem, } from './helpers/TimePicker.shared.js';
41
+ import { dedupeTimeItems, filterTimeItems, getEmptyDisplayValue, getTimeFilterQuery, getTimeValueString, isTimeDisplayEmpty, normalizeTimeValue, parsePastedTimeValue, replaceTimeSegment, resolveTimeItems, } from './helpers/TimePicker.value.js';
42
+ import { validateTimePicker } from './helpers/validateTimePicker.js';
43
+ import { useTimePickerDropdown } from './hooks/useTimePickerDropdown.js';
44
+ import { useTimePickerSelection } from './hooks/useTimePickerSelection.js';
45
+ import { useTimePickerValue } from './hooks/useTimePickerValue.js';
46
+ import { TimePickerLocaleHelper } from './locale/index.js';
47
+ import { getStyles } from './TimePicker.styles.js';
48
+ import { TimePickerMobilePopup } from './TimePickerMobilePopup.js';
49
+ import { TimePickerPopup } from './TimePickerPopup.js';
50
+ /** Поле с временем помогает пользователю быстро и удобно указать время в правильном формате.
51
+ * В поле можно ввести время с клавиатуры либо выбрать из выпадающего списка,
52
+ * передав массив или функцию в проп `source`.
53
+ */
54
+ export var TimePicker = Object.assign(forwardRefAndName('TimePicker', function (props, ref) {
55
+ var disabled = props.disabled, _a = props.useMobileNativeTimePicker, useMobileNativeTimePicker = _a === void 0 ? false : _a, _b = props.format, format = _b === void 0 ? 'HH:mm' : _b, _c = props.size, size = _c === void 0 ? 'small' : _c, source = props.source, renderItem = props.renderItem, menuPos = props.menuPos, menuAlign = props.menuAlign, menuWidth = props.menuWidth, minTime = props.minTime, maxTime = props.maxTime, rightIcon = props.rightIcon, suffix = props.suffix, corners = props.corners, value = props.value, valueToItem = props.valueToItem, onValueChange = props.onValueChange, onInputValueChange = props.onInputValueChange, onUnexpectedInput = props.onUnexpectedInput, onFocus = props.onFocus, onBlur = props.onBlur, onClick = props.onClick, onKeyDown = props.onKeyDown, onPaste = props.onPaste, inputProps = __rest(props, ["disabled", "useMobileNativeTimePicker", "format", "size", "source", "renderItem", "menuPos", "menuAlign", "menuWidth", "minTime", "maxTime", "rightIcon", "suffix", "corners", "value", "valueToItem", "onValueChange", "onInputValueChange", "onUnexpectedInput", "onFocus", "onBlur", "onClick", "onKeyDown", "onPaste"]);
56
+ var theme = useContext(ThemeContext);
57
+ var styles = useStyles(getStyles);
58
+ var locale = useLocaleForControl('TimePicker', TimePickerLocaleHelper);
59
+ var _d = useState(false), isInputFocused = _d[0], setIsInputFocused = _d[1];
60
+ var inputRef = useRef(null);
61
+ var mobileInputRef = useRef(null);
62
+ var nativeInputRef = useRef(null);
63
+ var rootRef = useRef(null);
64
+ var itemRefs = useRef(new Map());
65
+ var isMouseFocusRef = useRef(false);
66
+ var isMouseDownOnFragmentRef = useRef(false);
67
+ var mouseDownSegmentRef = useRef(null);
68
+ var mobileBlurEventRef = useRef(null);
69
+ var popupIdRef = useRef(TimePickerDataTids.popup + getRandomID());
70
+ var _e = useState(false), isMobileDevice = _e[0], setIsMobileDevice = _e[1];
71
+ var _f = useState(false), canUseMobileNativeTimePicker = _f[0], setCanUseMobileNativeTimePicker = _f[1];
72
+ var isSourceFunction = typeof source === 'function';
73
+ var sourceItems = useMemo(function () { return (Array.isArray(source) ? source : []); }, [source]);
74
+ var hasDropdown = isSourceFunction || sourceItems.length > 0;
75
+ var _g = useState([]), fetchedItems = _g[0], setFetchedItems = _g[1];
76
+ var _h = useState(null), fetchedItemsQuery = _h[0], setFetchedItemsQuery = _h[1];
77
+ var _j = useState(false), isLoadingItems = _j[0], setIsLoadingItems = _j[1];
78
+ var _k = useState(false), isEditedAfterOpen = _k[0], setIsEditedAfterOpen = _k[1];
79
+ var sourceValueItems = isSourceFunction ? fetchedItems : sourceItems;
80
+ /**
81
+ * Форма элемента, который компонент собирает для времени без элемента.
82
+ * Повторяет форму элементов источника, а если их нет — форму внешнего `value`,
83
+ * чтобы наружу уходило то же, что пришло внутрь.
84
+ */
85
+ var shouldBuildItemAsObject = sourceValueItems.some(function (item) { return isTimeItem(item) && isTimeItemObject(item); }) ||
86
+ (value !== null && value !== undefined && isTimeItemObject(value));
87
+ var valueToItemRef = useRef(valueToItem);
88
+ valueToItemRef.current = valueToItem;
89
+ var shouldBuildItemAsObjectRef = useRef(shouldBuildItemAsObject);
90
+ shouldBuildItemAsObjectRef.current = shouldBuildItemAsObject;
91
+ var handleCommitValue = useCallback(function (committedValue, item) {
92
+ var _a, _b;
93
+ if (!onValueChange) {
94
+ return;
95
+ }
96
+ if (committedValue === EMPTY_VALUE) {
97
+ onValueChange(null, EMPTY_VALUE);
98
+ return;
99
+ }
100
+ var nextItem = (_b = item !== null && item !== void 0 ? item : (_a = valueToItemRef.current) === null || _a === void 0 ? void 0 : _a.call(valueToItemRef, committedValue)) !== null && _b !== void 0 ? _b : timeValueToItem(committedValue, shouldBuildItemAsObjectRef.current);
101
+ onValueChange(nextItem, committedValue);
102
+ }, [onValueChange]);
103
+ var _l = useTimePickerValue({
104
+ isInputFocused: isInputFocused,
105
+ format: format,
106
+ externalValue: getTimeValueString(value),
107
+ onCommitValue: handleCommitValue,
108
+ onInputValueChange: onInputValueChange,
109
+ }), editingValue = _l.editingValue, editingValueRef = _l.editingValueRef, updateEditingValue = _l.updateEditingValue, commitEditingValue = _l.commitEditingValue, commitValue = _l.commitValue, commitItem = _l.commitItem;
110
+ var filterQuery = isEditedAfterOpen ? getTimeFilterQuery(editingValue, format) : EMPTY_VALUE;
111
+ var filteredItems = useMemo(function () { return filterTimeItems(dedupeTimeItems(sourceValueItems, format), filterQuery, format); }, [filterQuery, format, sourceValueItems]);
112
+ /**
113
+ * Элементы для отрисовки: время и подпись достаются из элемента,
114
+ * а `disabled` дополняется проверкой диапазона `minTime`/`maxTime`.
115
+ * Исходный элемент сохраняется как есть — именно он уходит в `onValueChange`.
116
+ */
117
+ var resolvedItems = useMemo(function () { return resolveTimeItems(filteredItems, format, minTime, maxTime); }, [maxTime, minTime, format, filteredItems]);
118
+ var popupMaxHeight = getTimePickerPopupMaxHeight(size, theme);
119
+ var ariaPlaceholder = format === 'HH:mm' ? locale.ariaPlaceholderHHMM : locale.ariaPlaceholderHHMMSS;
120
+ var normalizedValue = normalizeTimeValue(editingValue, format);
121
+ var selectedItemIndex = resolvedItems.findIndex(function (item) { return isTimeMenuItem(item) && normalizeTimeValue(item.value, format) === normalizedValue; });
122
+ var autoHighlightKey = null;
123
+ if (filterQuery !== EMPTY_VALUE) {
124
+ if (isSourceFunction) {
125
+ if (!isLoadingItems && fetchedItemsQuery === filterQuery) {
126
+ autoHighlightKey = "source-function:".concat(filterQuery);
127
+ }
128
+ }
129
+ else {
130
+ autoHighlightKey = "source-array:".concat(filterQuery);
131
+ }
132
+ }
133
+ var canUseMobileDropdownTimePicker = hasDropdown && isMobileDevice && !canUseMobileNativeTimePicker;
134
+ var hasDropdownContent = resolvedItems.length > 0 || isLoadingItems;
135
+ var inputRightIcon = isLoadingItems && resolvedItems.length > 0 ? (React.createElement("span", { "data-tid": TimePickerDataTids.inputLoading },
136
+ React.createElement(LoadingIcon, { size: size }))) : (rightIcon);
137
+ var displayValue = editingValue;
138
+ if (isInputFocused) {
139
+ displayValue = editingValue === EMPTY_VALUE ? getEmptyDisplayValue(format) : editingValue;
140
+ }
141
+ else if (isTimeDisplayEmpty(editingValue)) {
142
+ displayValue = EMPTY_VALUE;
143
+ }
144
+ var resetMouseInteractionState = useCallback(function () {
145
+ isMouseFocusRef.current = false;
146
+ isMouseDownOnFragmentRef.current = false;
147
+ mouseDownSegmentRef.current = null;
148
+ }, []);
149
+ var updateEditingValueAfterUserEdit = useCallback(function (nextEditingValue) {
150
+ if (editingValueRef.current !== nextEditingValue) {
151
+ setIsEditedAfterOpen(true);
152
+ }
153
+ updateEditingValue(nextEditingValue);
154
+ }, [editingValueRef, updateEditingValue]);
155
+ var normalizeCurrentSegmentIfNeeded = useCallback(function (segment) {
156
+ var nextDisplayValue = commitTimeSegmentOnLeave(editingValue === EMPTY_VALUE ? getEmptyDisplayValue(format) : editingValue, segment, format);
157
+ updateEditingValueAfterUserEdit(nextDisplayValue);
158
+ }, [editingValue, format, updateEditingValueAfterUserEdit]);
159
+ var openNativeTimePicker = useCallback(function () {
160
+ var _a, _b;
161
+ if (!canUseMobileNativeTimePicker || disabled) {
162
+ return;
163
+ }
164
+ if (isIOS) {
165
+ (_a = nativeInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
166
+ }
167
+ else {
168
+ (_b = nativeInputRef.current) === null || _b === void 0 ? void 0 : _b.click();
169
+ }
170
+ }, [canUseMobileNativeTimePicker, disabled]);
171
+ var _m = useTimePickerDropdown({
172
+ disabled: disabled,
173
+ hasDropdown: hasDropdown,
174
+ items: resolvedItems,
175
+ selectedItemIndex: selectedItemIndex >= 0 ? selectedItemIndex : null,
176
+ autoHighlightKey: autoHighlightKey,
177
+ }), isDropdownOpened = _m.isDropdownOpened, highlightedItemIndex = _m.highlightedItemIndex, openDropdown = _m.openDropdown, closeDropdown = _m.closeDropdown, resetHighlightedItem = _m.resetHighlightedItem, tryNavigateItems = _m.tryNavigateItems;
178
+ var sourceRef = useRef(source);
179
+ sourceRef.current = source;
180
+ useEffect(function () {
181
+ var currentSource = sourceRef.current;
182
+ if (typeof currentSource !== 'function' || !isDropdownOpened) {
183
+ setIsLoadingItems(false);
184
+ return;
185
+ }
186
+ var cancelled = false;
187
+ setIsLoadingItems(true);
188
+ new Promise(function (resolve) { return resolve(currentSource(filterQuery)); }).then(function (nextItems) {
189
+ if (!cancelled) {
190
+ setFetchedItems(nextItems);
191
+ setFetchedItemsQuery(filterQuery);
192
+ setIsLoadingItems(false);
193
+ }
194
+ }, function () {
195
+ if (!cancelled) {
196
+ setFetchedItems([]);
197
+ setFetchedItemsQuery(filterQuery);
198
+ setIsLoadingItems(false);
199
+ }
200
+ });
201
+ return function () {
202
+ cancelled = true;
203
+ };
204
+ }, [filterQuery, isDropdownOpened, isSourceFunction]);
205
+ useEffect(function () {
206
+ setIsEditedAfterOpen(false);
207
+ if (!isDropdownOpened && isSourceFunction) {
208
+ setFetchedItems([]);
209
+ setFetchedItemsQuery(null);
210
+ }
211
+ }, [isDropdownOpened, isSourceFunction]);
212
+ var popupId = popupIdRef.current;
213
+ var activeDescendantId = hasDropdown && highlightedItemIndex !== null ? "".concat(popupId, "-item-").concat(highlightedItemIndex) : undefined;
214
+ var isMobileDropdownActive = canUseMobileDropdownTimePicker && isDropdownOpened;
215
+ var getActiveInput = useCallback(function () { return (canUseMobileDropdownTimePicker && isDropdownOpened ? mobileInputRef.current : inputRef.current); }, [canUseMobileDropdownTimePicker, isDropdownOpened]);
216
+ var _o = useTimePickerSelection({
217
+ isInputFocused: isInputFocused,
218
+ format: format,
219
+ displayValue: displayValue,
220
+ getInput: getActiveInput,
221
+ }), selection = _o.selection, selectedSegment = _o.selectedSegment, selectSegment = _o.selectSegment, selectAll = _o.selectAll, syncSelectionWithDOM = _o.syncSelectionWithDOM;
222
+ var blinkInputValue = useCallback(function () {
223
+ var _a;
224
+ (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.blink();
225
+ }, [getActiveInput]);
226
+ /**
227
+ * Сообщает о некорректном вводе: нажатой клавише или вставленном значении, которое не может быть временем.
228
+ * Если обработчик не задан, поле вспыхивает само.
229
+ */
230
+ var handleUnexpectedInput = useCallback(function (unexpectedValue) {
231
+ if (onUnexpectedInput) {
232
+ onUnexpectedInput(unexpectedValue, blinkInputValue);
233
+ return;
234
+ }
235
+ blinkInputValue();
236
+ }, [blinkInputValue, onUnexpectedInput]);
237
+ var closeOpenedDropdown = useCallback(function () {
238
+ var _a;
239
+ if (canUseMobileDropdownTimePicker && isDropdownOpened) {
240
+ (_a = mobileInputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
241
+ setIsInputFocused(false);
242
+ resetMouseInteractionState();
243
+ closeDropdown();
244
+ commitEditingValue();
245
+ var blurEvent = mobileBlurEventRef.current;
246
+ mobileBlurEventRef.current = null;
247
+ if (blurEvent) {
248
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(blurEvent);
249
+ }
250
+ return;
251
+ }
252
+ closeDropdown();
253
+ }, [
254
+ canUseMobileDropdownTimePicker,
255
+ closeDropdown,
256
+ commitEditingValue,
257
+ isDropdownOpened,
258
+ onBlur,
259
+ resetMouseInteractionState,
260
+ ]);
261
+ var selectItem = useCallback(function (item) {
262
+ commitItem(item);
263
+ if (canUseMobileDropdownTimePicker) {
264
+ closeOpenedDropdown();
265
+ }
266
+ else {
267
+ closeDropdown();
268
+ }
269
+ }, [canUseMobileDropdownTimePicker, closeDropdown, closeOpenedDropdown, commitItem]);
270
+ var isSelectHighlightedItem = useCallback(function () {
271
+ if (highlightedItemIndex === null) {
272
+ return false;
273
+ }
274
+ var resolvedItem = resolvedItems[highlightedItemIndex];
275
+ if (!resolvedItem || !isTimeMenuItem(resolvedItem) || resolvedItem.disabled) {
276
+ return true;
277
+ }
278
+ selectItem(resolvedItem.item);
279
+ return true;
280
+ }, [highlightedItemIndex, resolvedItems, selectItem]);
281
+ var focusInput = useCallback(function () {
282
+ var _a;
283
+ (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.focus();
284
+ }, [getActiveInput]);
285
+ var blurInput = useCallback(function () {
286
+ var _a;
287
+ if (canUseMobileDropdownTimePicker && isDropdownOpened) {
288
+ closeOpenedDropdown();
289
+ return;
290
+ }
291
+ (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.blur();
292
+ }, [canUseMobileDropdownTimePicker, closeOpenedDropdown, getActiveInput, isDropdownOpened]);
293
+ var closeInputDropdown = useCallback(function () {
294
+ closeOpenedDropdown();
295
+ }, [closeOpenedDropdown]);
296
+ var blinkInput = useCallback(function () {
297
+ var _a;
298
+ (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.blink();
299
+ }, [getActiveInput]);
300
+ useImperativeHandle(ref, function () { return ({
301
+ focus: focusInput,
302
+ blur: blurInput,
303
+ blink: blinkInput,
304
+ close: closeInputDropdown,
305
+ getRootNode: function () { return rootRef.current; },
306
+ }); }, [blinkInput, blurInput, closeInputDropdown, focusInput, getActiveInput]);
307
+ useLayoutEffect(function () {
308
+ if (!isDropdownOpened) {
309
+ return;
310
+ }
311
+ var selectedIndex = highlightedItemIndex !== null && highlightedItemIndex !== void 0 ? highlightedItemIndex : selectedItemIndex;
312
+ if (selectedIndex < 0) {
313
+ return;
314
+ }
315
+ var targetNode = itemRefs.current.get(selectedIndex);
316
+ if (targetNode) {
317
+ scrollSelectedItemIntoView(targetNode);
318
+ }
319
+ }, [highlightedItemIndex, isDropdownOpened, selectedItemIndex]);
320
+ useEffect(function () {
321
+ if (disabled && isDropdownOpened) {
322
+ closeOpenedDropdown();
323
+ }
324
+ }, [closeOpenedDropdown, disabled, isDropdownOpened]);
325
+ useEffect(function () {
326
+ setIsMobileDevice(Boolean(isMobile));
327
+ setCanUseMobileNativeTimePicker(useMobileNativeTimePicker && Boolean(isMobile));
328
+ }, [useMobileNativeTimePicker]);
329
+ var handleCloseMobileDropdown = useCallback(function () {
330
+ closeOpenedDropdown();
331
+ }, [closeOpenedDropdown]);
332
+ var handleFocusBySource = function (event, isMobilePopupInput) {
333
+ if (canUseMobileNativeTimePicker) {
334
+ openNativeTimePicker();
335
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
336
+ return;
337
+ }
338
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
339
+ openDropdown();
340
+ return;
341
+ }
342
+ setIsInputFocused(true);
343
+ openDropdown();
344
+ if (isMouseDownOnFragmentRef.current && !isInputFocused) {
345
+ if (isTimeDisplayEmpty(editingValueRef.current)) {
346
+ selectSegment('hours');
347
+ }
348
+ else if (mouseDownSegmentRef.current) {
349
+ selectSegment(mouseDownSegmentRef.current);
350
+ }
351
+ }
352
+ else {
353
+ selectSegment('hours');
354
+ }
355
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
356
+ };
357
+ var handleFocus = function (event) { return handleFocusBySource(event, false); };
358
+ var handleMobileFocus = function (event) { return handleFocusBySource(event, true); };
359
+ var handleBlurBySource = function (event, isMobilePopupInput) {
360
+ if (canUseMobileNativeTimePicker) {
361
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
362
+ return;
363
+ }
364
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
365
+ return;
366
+ }
367
+ if (isMobilePopupInput) {
368
+ event.persist();
369
+ mobileBlurEventRef.current = event;
370
+ return;
371
+ }
372
+ setIsInputFocused(false);
373
+ resetMouseInteractionState();
374
+ closeDropdown();
375
+ commitEditingValue();
376
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
377
+ };
378
+ var handleBlur = function (event) { return handleBlurBySource(event, false); };
379
+ var handleMobileBlur = function (event) { return handleBlurBySource(event, true); };
380
+ var handleClickBySource = function (event, isMobilePopupInput) {
381
+ if (canUseMobileNativeTimePicker) {
382
+ openNativeTimePicker();
383
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
384
+ return;
385
+ }
386
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
387
+ openDropdown();
388
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
389
+ return;
390
+ }
391
+ openDropdown();
392
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
393
+ };
394
+ var handleClick = function (event) { return handleClickBySource(event, false); };
395
+ var handleMobileClick = function (event) { return handleClickBySource(event, true); };
396
+ var handleMouseDownCaptureBySource = function (event, isMobilePopupInput) {
397
+ var _a, _b;
398
+ if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {
399
+ return;
400
+ }
401
+ var currentInputRef = isMobilePopupInput ? mobileInputRef : inputRef;
402
+ var segment = (_b = (_a = currentInputRef.current) === null || _a === void 0 ? void 0 : _a.getSegment(event.target)) !== null && _b !== void 0 ? _b : null;
403
+ var isFragment = segment !== null;
404
+ if (isInputFocused && !isFragment) {
405
+ event.preventDefault();
406
+ }
407
+ isMouseFocusRef.current = !isInputFocused;
408
+ isMouseDownOnFragmentRef.current = isFragment;
409
+ mouseDownSegmentRef.current = segment;
410
+ };
411
+ var handleMouseDownCapture = function (event) {
412
+ return handleMouseDownCaptureBySource(event, false);
413
+ };
414
+ var handleMobileMouseDownCapture = function (event) {
415
+ return handleMouseDownCaptureBySource(event, true);
416
+ };
417
+ var handleMouseUpBySource = function (_event, isMobilePopupInput) {
418
+ if (disabled || canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {
419
+ return;
420
+ }
421
+ syncSelectionWithDOM();
422
+ };
423
+ var handleMouseUp = function (event) { return handleMouseUpBySource(event, false); };
424
+ var handleMobileMouseUp = function (event) { return handleMouseUpBySource(event, true); };
425
+ var handleSelectSegmentByMouseBySource = function (segment, isMobilePopupInput) {
426
+ if (canUseMobileNativeTimePicker) {
427
+ openNativeTimePicker();
428
+ return;
429
+ }
430
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
431
+ openDropdown();
432
+ return;
433
+ }
434
+ openDropdown();
435
+ if (disabled) {
436
+ return;
437
+ }
438
+ if (!(isMouseFocusRef.current && isTimeDisplayEmpty(editingValueRef.current)) && selectedSegment !== segment) {
439
+ normalizeCurrentSegmentIfNeeded(selectedSegment);
440
+ selectSegment(segment);
441
+ }
442
+ resetMouseInteractionState();
443
+ };
444
+ var handleSelectSegmentByMouse = function (segment) { return handleSelectSegmentByMouseBySource(segment, false); };
445
+ var handleMobileSelectSegmentByMouse = function (segment) {
446
+ return handleSelectSegmentByMouseBySource(segment, true);
447
+ };
448
+ var handleKeyDownBySource = function (event, isMobilePopupInput) {
449
+ var _a, _b, _c, _d;
450
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
451
+ if (event.defaultPrevented || disabled) {
452
+ return;
453
+ }
454
+ if (canUseMobileNativeTimePicker) {
455
+ openNativeTimePicker();
456
+ return;
457
+ }
458
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
459
+ openDropdown();
460
+ return;
461
+ }
462
+ if (isShortcutSelectAll(event)) {
463
+ event.preventDefault();
464
+ selectAll();
465
+ return;
466
+ }
467
+ if (event.altKey || event.ctrlKey || event.metaKey) {
468
+ return;
469
+ }
470
+ var currentDisplayValue = displayValue;
471
+ var currentSegment = selectedSegment;
472
+ var hasAllSelectionInState = selection === 'all';
473
+ var hasAllSelectionInDOM = (_b = (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.isAllSelected()) !== null && _b !== void 0 ? _b : false;
474
+ var shouldHandleAsAllSelection = hasAllSelectionInState || hasAllSelectionInDOM;
475
+ if (hasAllSelectionInDOM && !hasAllSelectionInState) {
476
+ syncSelectionWithDOM();
477
+ }
478
+ if (shouldHandleAsAllSelection && (isKeyBackspace(event) || isKeyDelete(event))) {
479
+ event.preventDefault();
480
+ updateEditingValueAfterUserEdit(getEmptyDisplayValue(format));
481
+ selectSegment('hours');
482
+ return;
483
+ }
484
+ if (DIGIT_REGEXP.test(event.key)) {
485
+ event.preventDefault();
486
+ resetHighlightedItem();
487
+ var nextDigitInputValue = shouldHandleAsAllSelection ? getEmptyDisplayValue(format) : currentDisplayValue;
488
+ var nextDigitInputSegment = shouldHandleAsAllSelection ? 'hours' : currentSegment;
489
+ var result = formatDigitToTimeSegment(nextDigitInputValue, nextDigitInputSegment, event.key, format);
490
+ if (result.shouldBlink) {
491
+ handleUnexpectedInput(event.key);
492
+ return;
493
+ }
494
+ updateEditingValueAfterUserEdit(result.nextValue);
495
+ selectSegment(result.selectedSegment);
496
+ return;
497
+ }
498
+ if (isKeyArrowLeft(event)) {
499
+ event.preventDefault();
500
+ normalizeCurrentSegmentIfNeeded(currentSegment);
501
+ selectSegment((_c = getPreviousTimeSegment(currentSegment)) !== null && _c !== void 0 ? _c : currentSegment);
502
+ return;
503
+ }
504
+ if (isModShift(isKeyTab)(event)) {
505
+ var previousSegment = getPreviousTimeSegment(currentSegment);
506
+ if (previousSegment) {
507
+ event.preventDefault();
508
+ normalizeCurrentSegmentIfNeeded(currentSegment);
509
+ selectSegment(previousSegment);
510
+ }
511
+ return;
512
+ }
513
+ if (isKeyArrowRight(event)) {
514
+ event.preventDefault();
515
+ normalizeCurrentSegmentIfNeeded(currentSegment);
516
+ selectSegment((_d = getNextTimeSegment(currentSegment, format)) !== null && _d !== void 0 ? _d : currentSegment);
517
+ return;
518
+ }
519
+ if (isKeyTab(event)) {
520
+ var nextSegment = getNextTimeSegment(currentSegment, format);
521
+ if (nextSegment) {
522
+ event.preventDefault();
523
+ normalizeCurrentSegmentIfNeeded(currentSegment);
524
+ selectSegment(nextSegment);
525
+ }
526
+ return;
527
+ }
528
+ if (isKeyArrowUp(event) || isKeyArrowDown(event)) {
529
+ event.preventDefault();
530
+ var itemStep = isKeyArrowUp(event) ? -1 : 1;
531
+ if (tryNavigateItems(itemStep)) {
532
+ return;
533
+ }
534
+ var step = isKeyArrowUp(event) ? 1 : -1;
535
+ updateEditingValueAfterUserEdit(shiftTimeSegmentValue(currentDisplayValue, currentSegment, step, format));
536
+ selectSegment(currentSegment);
537
+ return;
538
+ }
539
+ if (isKeyBackspace(event)) {
540
+ event.preventDefault();
541
+ var nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, currentSegment, format);
542
+ var nextSegment = currentSegment;
543
+ if (nextDisplayValue === currentDisplayValue) {
544
+ var previousSegment = getPreviousTimeSegment(currentSegment);
545
+ if (previousSegment) {
546
+ nextSegment = previousSegment;
547
+ nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, previousSegment, format);
548
+ }
549
+ }
550
+ updateEditingValueAfterUserEdit(nextDisplayValue);
551
+ selectSegment(nextSegment);
552
+ return;
553
+ }
554
+ if (isKeyDelete(event)) {
555
+ event.preventDefault();
556
+ updateEditingValueAfterUserEdit(replaceTimeSegment(currentDisplayValue, currentSegment, EMPTY_SEGMENT, format));
557
+ selectSegment(currentSegment);
558
+ return;
559
+ }
560
+ if (isKeyEscape(event)) {
561
+ if (isDropdownOpened) {
562
+ event.preventDefault();
563
+ if (canUseMobileDropdownTimePicker) {
564
+ closeOpenedDropdown();
565
+ }
566
+ else {
567
+ closeDropdown();
568
+ }
569
+ }
570
+ return;
571
+ }
572
+ if (isKeyEnter(event)) {
573
+ if (isSelectHighlightedItem()) {
574
+ event.preventDefault();
575
+ return;
576
+ }
577
+ if (canUseMobileDropdownTimePicker && isDropdownOpened) {
578
+ event.preventDefault();
579
+ closeOpenedDropdown();
580
+ return;
581
+ }
582
+ // Enter не выбирает элемент, а лишь подтверждает введенное значение,
583
+ // поэтому коммитим значение как при потере фокуса и подсвечиваем поле.
584
+ commitEditingValue();
585
+ blinkInputValue();
586
+ if (isDropdownOpened) {
587
+ event.preventDefault();
588
+ closeDropdown();
589
+ }
590
+ return;
591
+ }
592
+ if (isKeySpace(event)) {
593
+ event.preventDefault();
594
+ var nextSegment = getNextTimeSegment(currentSegment, format);
595
+ var nextDisplayValue = commitTimeSegmentOnLeave(currentDisplayValue, currentSegment, format);
596
+ updateEditingValueAfterUserEdit(nextDisplayValue);
597
+ if (nextSegment) {
598
+ selectSegment(nextSegment);
599
+ }
600
+ else {
601
+ selectSegment(currentSegment);
602
+ }
603
+ return;
604
+ }
605
+ if (isKeyChar(event)) {
606
+ event.preventDefault();
607
+ handleUnexpectedInput(event.key);
608
+ }
609
+ };
610
+ var handleKeyDown = function (event) { return handleKeyDownBySource(event, false); };
611
+ var handleMobileKeyDown = function (event) { return handleKeyDownBySource(event, true); };
612
+ var handlePasteBySource = function (event, isMobilePopupInput) {
613
+ var _a;
614
+ onPaste === null || onPaste === void 0 ? void 0 : onPaste(event);
615
+ if (event.defaultPrevented || disabled) {
616
+ return;
617
+ }
618
+ if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {
619
+ return;
620
+ }
621
+ var pastedValue = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');
622
+ var nextDisplayValue = parsePastedTimeValue(pastedValue, format);
623
+ event.preventDefault();
624
+ if (isTimeDisplayEmpty(nextDisplayValue)) {
625
+ handleUnexpectedInput(pastedValue);
626
+ return;
627
+ }
628
+ updateEditingValueAfterUserEdit(nextDisplayValue);
629
+ selectSegment('hours');
630
+ };
631
+ var handlePaste = function (event) { return handlePasteBySource(event, false); };
632
+ var handleMobilePaste = function (event) { return handlePasteBySource(event, true); };
633
+ var handleNativeValueChange = useCallback(function (nextValue) {
634
+ commitValue(nextValue);
635
+ }, [commitValue]);
636
+ return (React.createElement(CommonWrapper, __assign({}, props),
637
+ React.createElement("span", { ref: rootRef, className: styles.root(), "data-tid": TimePickerDataTids.root },
638
+ React.createElement(TimeInput, __assign({}, inputProps, { "data-tid": TimePickerDataTids.input, ref: inputRef, disabled: disabled, hasDropdown: hasDropdown, size: size, format: format, corners: corners, rightIcon: inputRightIcon, suffix: suffix, value: displayValue, "aria-haspopup": hasDropdown ? 'listbox' : undefined, "aria-expanded": !isMobileDropdownActive && hasDropdown && isDropdownOpened && hasDropdownContent ? true : undefined, "aria-controls": !isMobileDropdownActive && hasDropdown && isDropdownOpened && hasDropdownContent ? popupId : undefined, "aria-activedescendant": isMobileDropdownActive ? undefined : activeDescendantId, "aria-placeholder": ariaPlaceholder, "aria-busy": isLoadingItems || undefined, onClick: handleClick, onBlur: handleBlur, onFocus: handleFocus, onMouseDownCapture: handleMouseDownCapture, onMouseUp: handleMouseUp, onKeyDown: handleKeyDown, onSelectSegment: handleSelectSegmentByMouse, onPaste: handlePaste })),
639
+ canUseMobileNativeTimePicker && (React.createElement(NativeTimeInput, { "data-tid": TimePickerDataTids.nativeInput, disabled: disabled, ref: nativeInputRef, format: format, minTime: minTime, maxTime: maxTime, value: editingValue, onValueChange: handleNativeValueChange })),
640
+ canUseMobileDropdownTimePicker && isDropdownOpened && (React.createElement(TimePickerMobilePopup, { id: popupId, opened: isDropdownOpened, value: displayValue, inputRef: mobileInputRef, disabled: disabled, format: format, size: size, rightIcon: inputRightIcon, suffix: suffix, resolvedItems: resolvedItems, renderItem: renderItem, isLoading: isLoadingItems, highlightedItemIndex: highlightedItemIndex, normalizedValue: normalizedValue, itemRefs: itemRefs, error: props.error, warning: props.warning, "aria-describedby": props['aria-describedby'], "aria-label": props['aria-label'], "aria-placeholder": ariaPlaceholder, "aria-haspopup": 'listbox', "aria-expanded": hasDropdownContent ? true : undefined, "aria-controls": hasDropdownContent ? popupId : undefined, "aria-activedescendant": activeDescendantId, onFocus: handleMobileFocus, onBlur: handleMobileBlur, onClick: handleMobileClick, onKeyDown: handleMobileKeyDown, onMouseDownCapture: handleMobileMouseDownCapture, onMouseUp: handleMobileMouseUp, onPaste: handleMobilePaste, onSelectSegment: handleMobileSelectSegmentByMouse, onSelectItem: selectItem, onCloseRequest: handleCloseMobileDropdown })),
641
+ hasDropdown &&
642
+ !canUseMobileNativeTimePicker &&
643
+ !canUseMobileDropdownTimePicker &&
644
+ isDropdownOpened &&
645
+ hasDropdownContent &&
646
+ rootRef.current && (React.createElement(TimePickerPopup, { id: popupId, anchorElement: rootRef.current, menuPos: menuPos, menuAlign: menuAlign, menuWidth: menuWidth, popupMaxHeight: popupMaxHeight, format: format, size: size, resolvedItems: resolvedItems, renderItem: renderItem, isLoading: isLoadingItems, highlightedItemIndex: highlightedItemIndex, normalizedValue: normalizedValue, itemRefs: itemRefs, onSelectItem: selectItem })))));
647
+ }), { validate: validateTimePicker });
648
+ //# sourceMappingURL=TimePicker.js.map