@skbkontur/react-ui 6.1.7-c386f.0 → 6.1.7

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