@skbkontur/react-ui 6.1.2-bea94.0 → 6.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/components/Button/Button.d.ts +5 -0
  3. package/components/Button/Button.js +7 -5
  4. package/components/Button/Button.js.map +1 -1
  5. package/components/Input/Input.d.ts +1 -1
  6. package/components/Input/Input.js.map +1 -1
  7. package/components/Input/Input.styles.js +1 -1
  8. package/components/Input/Input.styles.js.map +1 -1
  9. package/components/Input/InputLayout/InputLayoutAsideCounter.js +2 -1
  10. package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -1
  11. package/components/Select/Select.d.ts +1 -0
  12. package/components/Select/Select.js +14 -7
  13. package/components/Select/Select.js.map +1 -1
  14. package/components/Select/selectTheme.js +2 -0
  15. package/components/Select/selectTheme.js.map +1 -1
  16. package/components/Textarea/TextareaCounter.js +2 -1
  17. package/components/Textarea/TextareaCounter.js.map +1 -1
  18. package/index.d.ts +0 -1
  19. package/index.js +0 -1
  20. package/index.js.map +1 -1
  21. package/internal/InputLikeText/InputLikeText.js +1 -1
  22. package/internal/InputLikeText/InputLikeText.js.map +1 -1
  23. package/internal/themes/BasicTheme.d.ts +0 -34
  24. package/internal/themes/BasicTheme.js +0 -96
  25. package/internal/themes/BasicTheme.js.map +1 -1
  26. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  27. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  28. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  29. package/package.json +1 -5
  30. package/components/TimePicker/TimeClockIcon.d.ts +0 -3
  31. package/components/TimePicker/TimeClockIcon.js +0 -11
  32. package/components/TimePicker/TimeClockIcon.js.map +0 -1
  33. package/components/TimePicker/TimeFragmentsView.d.ts +0 -15
  34. package/components/TimePicker/TimeFragmentsView.js +0 -72
  35. package/components/TimePicker/TimeFragmentsView.js.map +0 -1
  36. package/components/TimePicker/TimeFragmentsView.styles.d.ts +0 -12
  37. package/components/TimePicker/TimeFragmentsView.styles.js +0 -43
  38. package/components/TimePicker/TimeFragmentsView.styles.js.map +0 -1
  39. package/components/TimePicker/TimeInput.d.ts +0 -22
  40. package/components/TimePicker/TimeInput.js +0 -103
  41. package/components/TimePicker/TimeInput.js.map +0 -1
  42. package/components/TimePicker/TimePicker.d.ts +0 -70
  43. package/components/TimePicker/TimePicker.js +0 -506
  44. package/components/TimePicker/TimePicker.js.map +0 -1
  45. package/components/TimePicker/TimePicker.styles.d.ts +0 -14
  46. package/components/TimePicker/TimePicker.styles.js +0 -45
  47. package/components/TimePicker/TimePicker.styles.js.map +0 -1
  48. package/components/TimePicker/TimePickerMobilePopup.d.ts +0 -38
  49. package/components/TimePicker/TimePickerMobilePopup.js +0 -21
  50. package/components/TimePicker/TimePickerMobilePopup.js.map +0 -1
  51. package/components/TimePicker/TimePickerPopup.d.ts +0 -20
  52. package/components/TimePicker/TimePickerPopup.js +0 -18
  53. package/components/TimePicker/TimePickerPopup.js.map +0 -1
  54. package/components/TimePicker/TimePickerSlots.d.ts +0 -17
  55. package/components/TimePicker/TimePickerSlots.js +0 -80
  56. package/components/TimePicker/TimePickerSlots.js.map +0 -1
  57. package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -22
  58. package/components/TimePicker/helpers/TimePicker.constants.js +0 -31
  59. package/components/TimePicker/helpers/TimePicker.constants.js.map +0 -1
  60. package/components/TimePicker/helpers/TimePicker.editing.d.ts +0 -23
  61. package/components/TimePicker/helpers/TimePicker.editing.js +0 -101
  62. package/components/TimePicker/helpers/TimePicker.editing.js.map +0 -1
  63. package/components/TimePicker/helpers/TimePicker.layout.d.ts +0 -6
  64. package/components/TimePicker/helpers/TimePicker.layout.js +0 -49
  65. package/components/TimePicker/helpers/TimePicker.layout.js.map +0 -1
  66. package/components/TimePicker/helpers/TimePicker.selection.d.ts +0 -5
  67. package/components/TimePicker/helpers/TimePicker.selection.js +0 -23
  68. package/components/TimePicker/helpers/TimePicker.selection.js.map +0 -1
  69. package/components/TimePicker/helpers/TimePicker.shared.d.ts +0 -47
  70. package/components/TimePicker/helpers/TimePicker.shared.js +0 -70
  71. package/components/TimePicker/helpers/TimePicker.shared.js.map +0 -1
  72. package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -23
  73. package/components/TimePicker/helpers/TimePicker.value.js +0 -71
  74. package/components/TimePicker/helpers/TimePicker.value.js.map +0 -1
  75. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.d.ts +0 -4
  76. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js +0 -24
  77. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js.map +0 -1
  78. package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +0 -17
  79. package/components/TimePicker/hooks/useTimePickerDropdown.js +0 -62
  80. package/components/TimePicker/hooks/useTimePickerDropdown.js.map +0 -1
  81. package/components/TimePicker/hooks/useTimePickerSelection.d.ts +0 -18
  82. package/components/TimePicker/hooks/useTimePickerSelection.js +0 -66
  83. package/components/TimePicker/hooks/useTimePickerSelection.js.map +0 -1
  84. package/components/TimePicker/hooks/useTimePickerValue.d.ts +0 -18
  85. package/components/TimePicker/hooks/useTimePickerValue.js +0 -58
  86. package/components/TimePicker/hooks/useTimePickerValue.js.map +0 -1
  87. package/components/TimePicker/index.d.ts +0 -2
  88. package/components/TimePicker/index.js +0 -2
  89. package/components/TimePicker/index.js.map +0 -1
  90. package/internal/NativeTimeInput/NativeTimeInput.d.ts +0 -16
  91. package/internal/NativeTimeInput/NativeTimeInput.js +0 -25
  92. package/internal/NativeTimeInput/NativeTimeInput.js.map +0 -1
  93. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
  94. package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
  95. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
  96. package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +0 -7
  97. package/internal/NativeTimeInput/NativeTimeInput.utils.js +0 -28
  98. package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +0 -1
  99. package/internal/NativeTimeInput/index.d.ts +0 -1
  100. package/internal/NativeTimeInput/index.js +0 -2
  101. package/internal/NativeTimeInput/index.js.map +0 -1
  102. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +0 -2
  103. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +0 -20
  104. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +0 -1
  105. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +0 -2
  106. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +0 -20
  107. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +0 -1
  108. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +0 -2
  109. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +0 -20
  110. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +0 -1
@@ -1,506 +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 { NativeTimeInput } from '../../internal/NativeTimeInput/index.js';
26
- import { isIOS, isMobile } from '../../lib/client.js';
27
- import { isKeyArrowDown, isKeyArrowLeft, isKeyArrowRight, isKeyArrowUp, isKeyBackspace, isKeyChar, isKeyDelete, isKeyEnter, isKeyEscape, isKeySpace, isKeyTab, isModShift, isShortcutSelectAll, } from '../../lib/events/keyboard/identifiers.js';
28
- import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
29
- import { useStyles } from '../../lib/renderEnvironment/index.js';
30
- import { ThemeContext } from '../../lib/theming/ThemeContext.js';
31
- import { getRandomID } from '../../lib/utils.js';
32
- import { scrollSelectedSlotIntoView } from './helpers/scrollSelectedSlotIntoView.js';
33
- import { DIGIT_REGEXP, EMPTY_SEGMENT, EMPTY_VALUE, TimePickerDataTids } from './helpers/TimePicker.constants.js';
34
- import { commitTimeSegmentOnLeave, deleteTimeSegmentDigit, formatDigitToTimeSegment, shiftTimeSegmentValue, } from './helpers/TimePicker.editing.js';
35
- import { getTimePickerPopupMaxHeight } from './helpers/TimePicker.layout.js';
36
- import { getNextTimeSegment, getPreviousTimeSegment } from './helpers/TimePicker.selection.js';
37
- import { getEmptyDisplayValue, isTimeDisplayEmpty, isTimeValueOutOfRange, normalizeTimeValue, parsePastedTimeValue, replaceTimeSegment, } from './helpers/TimePicker.value.js';
38
- import { useTimePickerDropdown } from './hooks/useTimePickerDropdown.js';
39
- import { useTimePickerSelection } from './hooks/useTimePickerSelection.js';
40
- import { useTimePickerValue } from './hooks/useTimePickerValue.js';
41
- import { TimeInput } from './TimeInput.js';
42
- import { getStyles } from './TimePicker.styles.js';
43
- import { TimePickerMobilePopup } from './TimePickerMobilePopup.js';
44
- import { TimePickerPopup } from './TimePickerPopup.js';
45
- /** Поле с временем помогает вводить время с клавиатуры или выбирать его с помощью мыши */
46
- export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
47
- var _a;
48
- var disabled = props.disabled, _b = props.useMobileNativeTimePicker, useMobileNativeTimePicker = _b === void 0 ? false : _b, _c = props.format, format = _c === void 0 ? 'minute' : _c, _d = props.size, size = _d === void 0 ? 'small' : _d, slots = props.slots, menuPos = props.menuPos, menuAlign = props.menuAlign, menuWidth = props.menuWidth, minTime = props.minTime, maxTime = props.maxTime, rightIcon = props.rightIcon, suffix = props.suffix, value = props.value, onValueChange = props.onValueChange, onFocus = props.onFocus, onBlur = props.onBlur, onClick = props.onClick, onKeyDown = props.onKeyDown, onPaste = props.onPaste, inputProps = __rest(props, ["disabled", "useMobileNativeTimePicker", "format", "size", "slots", "menuPos", "menuAlign", "menuWidth", "minTime", "maxTime", "rightIcon", "suffix", "value", "onValueChange", "onFocus", "onBlur", "onClick", "onKeyDown", "onPaste"]);
49
- var theme = useContext(ThemeContext);
50
- var styles = useStyles(getStyles);
51
- var _e = useState(false), isInputFocused = _e[0], setIsInputFocused = _e[1];
52
- var inputRef = useRef(null);
53
- var mobileInputRef = useRef(null);
54
- var nativeInputRef = useRef(null);
55
- var rootRef = useRef(null);
56
- var slotRefs = useRef(new Map());
57
- var isMouseFocusRef = useRef(false);
58
- var isMouseDownOnFragmentRef = useRef(false);
59
- var mouseDownSegmentRef = useRef(null);
60
- var popupIdRef = useRef(TimePickerDataTids.popup + getRandomID());
61
- var _f = useState(false), isMobileDevice = _f[0], setIsMobileDevice = _f[1];
62
- var _g = useState(false), canUseMobileNativeTimePicker = _g[0], setCanUseMobileNativeTimePicker = _g[1];
63
- var _h = useTimePickerValue({ isInputFocused: isInputFocused, format: format, value: value, onValueChange: onValueChange }), editingValue = _h.editingValue, editingValueRef = _h.editingValueRef, setEditingValue = _h.setEditingValue, updateEditingValue = _h.updateEditingValue, commitEditingValue = _h.commitEditingValue, clearEditingValue = _h.clearEditingValue;
64
- var hasDropdown = ((_a = slots === null || slots === void 0 ? void 0 : slots.length) !== null && _a !== void 0 ? _a : 0) > 0;
65
- var resolvedSlots = useMemo(function () {
66
- return (slots !== null && slots !== void 0 ? slots : []).map(function (slot) { return (__assign(__assign({}, slot), { disabled: Boolean(slot.disabled) || isTimeValueOutOfRange(slot.value, format, minTime, maxTime) })); });
67
- }, [maxTime, minTime, format, slots]);
68
- var popupMaxHeight = getTimePickerPopupMaxHeight(size, theme);
69
- var ariaPlaceholder = format === 'minute' ? 'чч:мм' : 'чч:мм:сс';
70
- var normalizedValue = normalizeTimeValue(editingValue, format);
71
- var selectedSlotIndex = resolvedSlots.findIndex(function (slot) { return normalizeTimeValue(slot.value, format) === normalizedValue; });
72
- var canUseMobileDropdownTimePicker = hasDropdown && isMobileDevice && !canUseMobileNativeTimePicker;
73
- var displayValue = editingValue;
74
- if (isInputFocused) {
75
- displayValue = editingValue === EMPTY_VALUE ? getEmptyDisplayValue(format) : editingValue;
76
- }
77
- else if (isTimeDisplayEmpty(editingValue)) {
78
- displayValue = EMPTY_VALUE;
79
- }
80
- var resetMouseInteractionState = useCallback(function () {
81
- isMouseFocusRef.current = false;
82
- isMouseDownOnFragmentRef.current = false;
83
- mouseDownSegmentRef.current = null;
84
- }, []);
85
- var normalizeCurrentSegmentIfNeeded = useCallback(function (segment) {
86
- var nextDisplayValue = commitTimeSegmentOnLeave(editingValue === EMPTY_VALUE ? getEmptyDisplayValue(format) : editingValue, segment, format);
87
- updateEditingValue(nextDisplayValue);
88
- }, [editingValue, format, updateEditingValue]);
89
- var openNativeTimePicker = useCallback(function () {
90
- var _a, _b;
91
- if (!canUseMobileNativeTimePicker || disabled) {
92
- return;
93
- }
94
- if (isIOS) {
95
- (_a = nativeInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
96
- }
97
- else {
98
- (_b = nativeInputRef.current) === null || _b === void 0 ? void 0 : _b.click();
99
- }
100
- }, [canUseMobileNativeTimePicker, disabled]);
101
- var _j = useTimePickerDropdown({
102
- disabled: disabled,
103
- hasDropdown: hasDropdown,
104
- slots: resolvedSlots,
105
- selectedSlotIndex: selectedSlotIndex >= 0 ? selectedSlotIndex : null,
106
- }), isDropdownOpened = _j.isDropdownOpened, highlightedSlotIndex = _j.highlightedSlotIndex, openDropdown = _j.openDropdown, closeDropdown = _j.closeDropdown, resetHighlightedSlot = _j.resetHighlightedSlot, tryNavigateSlots = _j.tryNavigateSlots;
107
- var popupId = popupIdRef.current;
108
- var activeDescendantId = hasDropdown && highlightedSlotIndex !== null ? "".concat(popupId, "-slot-").concat(highlightedSlotIndex) : undefined;
109
- var getActiveInput = useCallback(function () { return (canUseMobileDropdownTimePicker && isDropdownOpened ? mobileInputRef.current : inputRef.current); }, [canUseMobileDropdownTimePicker, isDropdownOpened]);
110
- var _k = useTimePickerSelection({
111
- isInputFocused: isInputFocused,
112
- format: format,
113
- displayValue: displayValue,
114
- getInput: getActiveInput,
115
- }), selection = _k.selection, selectedSegment = _k.selectedSegment, selectSegment = _k.selectSegment, selectAll = _k.selectAll, syncSelectionWithDOM = _k.syncSelectionWithDOM;
116
- var closeOpenedDropdown = useCallback(function () {
117
- if (canUseMobileDropdownTimePicker && isDropdownOpened) {
118
- setIsInputFocused(false);
119
- resetMouseInteractionState();
120
- if (isTimeDisplayEmpty(editingValueRef.current)) {
121
- clearEditingValue();
122
- }
123
- else {
124
- commitEditingValue();
125
- }
126
- }
127
- closeDropdown();
128
- }, [
129
- canUseMobileDropdownTimePicker,
130
- clearEditingValue,
131
- closeDropdown,
132
- commitEditingValue,
133
- editingValueRef,
134
- isDropdownOpened,
135
- resetMouseInteractionState,
136
- ]);
137
- var selectSlot = useCallback(function (slot) {
138
- if (slot.disabled) {
139
- return;
140
- }
141
- if (canUseMobileDropdownTimePicker) {
142
- setIsInputFocused(false);
143
- resetMouseInteractionState();
144
- }
145
- updateEditingValue(slot.value);
146
- closeDropdown();
147
- }, [canUseMobileDropdownTimePicker, closeDropdown, resetMouseInteractionState, updateEditingValue]);
148
- var isSelectHighlightedSlot = useCallback(function () {
149
- if (highlightedSlotIndex === null) {
150
- return false;
151
- }
152
- var slot = resolvedSlots[highlightedSlotIndex];
153
- if (!slot || slot.disabled) {
154
- return true;
155
- }
156
- selectSlot(slot);
157
- return true;
158
- }, [highlightedSlotIndex, resolvedSlots, selectSlot]);
159
- var focusInput = useCallback(function () {
160
- var _a;
161
- (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.focus();
162
- }, [getActiveInput]);
163
- var blurInput = useCallback(function () {
164
- var _a;
165
- (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.blur();
166
- }, [getActiveInput]);
167
- var closeInputDropdown = useCallback(function () {
168
- closeOpenedDropdown();
169
- }, [closeOpenedDropdown]);
170
- var blinkInput = useCallback(function () {
171
- var _a;
172
- (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.blink();
173
- }, [getActiveInput]);
174
- useImperativeHandle(ref, function () { return ({
175
- focus: focusInput,
176
- blur: blurInput,
177
- blink: blinkInput,
178
- close: closeInputDropdown,
179
- getNode: function () { var _a, _b; return (_b = (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.getNode()) !== null && _b !== void 0 ? _b : null; },
180
- getRootNode: function () { return rootRef.current; },
181
- }); }, [blinkInput, blurInput, closeInputDropdown, focusInput, getActiveInput]);
182
- useLayoutEffect(function () {
183
- if (!isDropdownOpened) {
184
- return;
185
- }
186
- var selectedIndex = highlightedSlotIndex !== null && highlightedSlotIndex !== void 0 ? highlightedSlotIndex : selectedSlotIndex;
187
- if (selectedIndex < 0) {
188
- return;
189
- }
190
- var targetNode = slotRefs.current.get(selectedIndex);
191
- if (targetNode) {
192
- scrollSelectedSlotIntoView(targetNode);
193
- }
194
- }, [highlightedSlotIndex, isDropdownOpened, selectedSlotIndex]);
195
- useEffect(function () {
196
- if (disabled && isDropdownOpened) {
197
- closeOpenedDropdown();
198
- }
199
- }, [closeOpenedDropdown, disabled, isDropdownOpened]);
200
- useEffect(function () {
201
- setIsMobileDevice(Boolean(isMobile));
202
- setCanUseMobileNativeTimePicker(useMobileNativeTimePicker && Boolean(isMobile));
203
- }, [useMobileNativeTimePicker]);
204
- var handleCloseMobileDropdown = useCallback(function () {
205
- closeOpenedDropdown();
206
- }, [closeOpenedDropdown]);
207
- var handleFocusBySource = function (event, isMobilePopupInput) {
208
- if (canUseMobileNativeTimePicker) {
209
- openNativeTimePicker();
210
- onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
211
- return;
212
- }
213
- if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
214
- openDropdown();
215
- return;
216
- }
217
- setIsInputFocused(true);
218
- openDropdown();
219
- if (isMouseDownOnFragmentRef.current && !isInputFocused) {
220
- if (isTimeDisplayEmpty(editingValueRef.current)) {
221
- selectSegment('hours');
222
- }
223
- else if (mouseDownSegmentRef.current) {
224
- selectSegment(mouseDownSegmentRef.current);
225
- }
226
- }
227
- else {
228
- selectSegment('hours');
229
- }
230
- onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
231
- };
232
- var handleFocus = function (event) { return handleFocusBySource(event, false); };
233
- var handleMobileFocus = function (event) { return handleFocusBySource(event, true); };
234
- var handleBlurBySource = function (event, isMobilePopupInput) {
235
- if (canUseMobileNativeTimePicker) {
236
- onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
237
- return;
238
- }
239
- if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
240
- return;
241
- }
242
- setIsInputFocused(false);
243
- resetMouseInteractionState();
244
- if (isMobilePopupInput) {
245
- onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
246
- return;
247
- }
248
- closeDropdown();
249
- if (isTimeDisplayEmpty(editingValueRef.current)) {
250
- clearEditingValue();
251
- onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
252
- return;
253
- }
254
- commitEditingValue();
255
- onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
256
- };
257
- var handleBlur = function (event) { return handleBlurBySource(event, false); };
258
- var handleMobileBlur = function (event) { return handleBlurBySource(event, true); };
259
- var handleClickBySource = function (event, isMobilePopupInput) {
260
- if (canUseMobileNativeTimePicker) {
261
- openNativeTimePicker();
262
- onClick === null || onClick === void 0 ? void 0 : onClick(event);
263
- return;
264
- }
265
- if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
266
- openDropdown();
267
- onClick === null || onClick === void 0 ? void 0 : onClick(event);
268
- return;
269
- }
270
- openDropdown();
271
- onClick === null || onClick === void 0 ? void 0 : onClick(event);
272
- };
273
- var handleClick = function (event) { return handleClickBySource(event, false); };
274
- var handleMobileClick = function (event) { return handleClickBySource(event, true); };
275
- var handleMouseDownCaptureBySource = function (event, isMobilePopupInput) {
276
- var _a, _b;
277
- if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {
278
- return;
279
- }
280
- var currentInputRef = isMobilePopupInput ? mobileInputRef : inputRef;
281
- var segment = (_b = (_a = currentInputRef.current) === null || _a === void 0 ? void 0 : _a.getSegment(event.target)) !== null && _b !== void 0 ? _b : null;
282
- var isFragment = segment !== null;
283
- if (isInputFocused && !isFragment) {
284
- event.preventDefault();
285
- }
286
- isMouseFocusRef.current = !isInputFocused;
287
- isMouseDownOnFragmentRef.current = isFragment;
288
- mouseDownSegmentRef.current = segment;
289
- };
290
- var handleMouseDownCapture = function (event) {
291
- return handleMouseDownCaptureBySource(event, false);
292
- };
293
- var handleMobileMouseDownCapture = function (event) {
294
- return handleMouseDownCaptureBySource(event, true);
295
- };
296
- var handleMouseUpBySource = function (_event, isMobilePopupInput) {
297
- if (disabled || canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {
298
- return;
299
- }
300
- syncSelectionWithDOM();
301
- };
302
- var handleMouseUp = function (event) { return handleMouseUpBySource(event, false); };
303
- var handleMobileMouseUp = function (event) { return handleMouseUpBySource(event, true); };
304
- var handleSelectSegmentByMouseBySource = function (segment, isMobilePopupInput) {
305
- if (canUseMobileNativeTimePicker) {
306
- openNativeTimePicker();
307
- return;
308
- }
309
- if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
310
- openDropdown();
311
- return;
312
- }
313
- openDropdown();
314
- if (disabled) {
315
- return;
316
- }
317
- if (!(isMouseFocusRef.current && isTimeDisplayEmpty(editingValueRef.current)) && selectedSegment !== segment) {
318
- normalizeCurrentSegmentIfNeeded(selectedSegment);
319
- selectSegment(segment);
320
- }
321
- resetMouseInteractionState();
322
- };
323
- var handleSelectSegmentByMouse = function (segment) { return handleSelectSegmentByMouseBySource(segment, false); };
324
- var handleMobileSelectSegmentByMouse = function (segment) { return handleSelectSegmentByMouseBySource(segment, true); };
325
- var handleKeyDownBySource = function (event, isMobilePopupInput) {
326
- var _a, _b, _c, _d, _e, _f;
327
- onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
328
- if (event.defaultPrevented || disabled) {
329
- return;
330
- }
331
- if (canUseMobileNativeTimePicker) {
332
- openNativeTimePicker();
333
- return;
334
- }
335
- if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
336
- openDropdown();
337
- return;
338
- }
339
- if (isShortcutSelectAll(event)) {
340
- event.preventDefault();
341
- selectAll();
342
- return;
343
- }
344
- if (event.altKey || event.ctrlKey || event.metaKey) {
345
- return;
346
- }
347
- var currentDisplayValue = displayValue;
348
- var currentSegment = selectedSegment;
349
- var hasAllSelectionInState = selection === 'all';
350
- var hasAllSelectionInDOM = (_b = (_a = getActiveInput()) === null || _a === void 0 ? void 0 : _a.isAllSelected()) !== null && _b !== void 0 ? _b : false;
351
- var shouldHandleAsAllSelection = hasAllSelectionInState || hasAllSelectionInDOM;
352
- if (hasAllSelectionInDOM && !hasAllSelectionInState) {
353
- syncSelectionWithDOM();
354
- }
355
- if (shouldHandleAsAllSelection && (isKeyBackspace(event) || isKeyDelete(event))) {
356
- event.preventDefault();
357
- updateEditingValue(getEmptyDisplayValue(format));
358
- selectSegment('hours');
359
- return;
360
- }
361
- if (DIGIT_REGEXP.test(event.key)) {
362
- event.preventDefault();
363
- resetHighlightedSlot();
364
- var nextDigitInputValue = shouldHandleAsAllSelection ? getEmptyDisplayValue(format) : currentDisplayValue;
365
- var nextDigitInputSegment = shouldHandleAsAllSelection ? 'hours' : currentSegment;
366
- var result = formatDigitToTimeSegment(nextDigitInputValue, nextDigitInputSegment, event.key, format);
367
- if (result.shouldBlink) {
368
- (_c = getActiveInput()) === null || _c === void 0 ? void 0 : _c.blink();
369
- return;
370
- }
371
- updateEditingValue(result.nextValue);
372
- selectSegment(result.selectedSegment);
373
- return;
374
- }
375
- if (isKeyArrowLeft(event)) {
376
- event.preventDefault();
377
- normalizeCurrentSegmentIfNeeded(currentSegment);
378
- selectSegment((_d = getPreviousTimeSegment(currentSegment)) !== null && _d !== void 0 ? _d : currentSegment);
379
- return;
380
- }
381
- if (isModShift(isKeyTab)(event)) {
382
- var previousSegment = getPreviousTimeSegment(currentSegment);
383
- if (previousSegment) {
384
- event.preventDefault();
385
- normalizeCurrentSegmentIfNeeded(currentSegment);
386
- selectSegment(previousSegment);
387
- }
388
- return;
389
- }
390
- if (isKeyArrowRight(event)) {
391
- event.preventDefault();
392
- normalizeCurrentSegmentIfNeeded(currentSegment);
393
- selectSegment((_e = getNextTimeSegment(currentSegment, format)) !== null && _e !== void 0 ? _e : currentSegment);
394
- return;
395
- }
396
- if (isKeyTab(event)) {
397
- var nextSegment = getNextTimeSegment(currentSegment, format);
398
- if (nextSegment) {
399
- event.preventDefault();
400
- normalizeCurrentSegmentIfNeeded(currentSegment);
401
- selectSegment(nextSegment);
402
- }
403
- return;
404
- }
405
- if (isKeyArrowUp(event) || isKeyArrowDown(event)) {
406
- event.preventDefault();
407
- var slotStep = isKeyArrowUp(event) ? -1 : 1;
408
- if (tryNavigateSlots(slotStep)) {
409
- return;
410
- }
411
- var step = isKeyArrowUp(event) ? 1 : -1;
412
- updateEditingValue(shiftTimeSegmentValue(currentDisplayValue, currentSegment, step, format));
413
- selectSegment(currentSegment);
414
- return;
415
- }
416
- if (isKeyBackspace(event)) {
417
- event.preventDefault();
418
- var nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, currentSegment, format);
419
- var nextSegment = currentSegment;
420
- if (nextDisplayValue === currentDisplayValue) {
421
- var previousSegment = getPreviousTimeSegment(currentSegment);
422
- if (previousSegment) {
423
- nextSegment = previousSegment;
424
- nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, previousSegment, format);
425
- }
426
- }
427
- updateEditingValue(nextDisplayValue);
428
- selectSegment(nextSegment);
429
- return;
430
- }
431
- if (isKeyDelete(event)) {
432
- event.preventDefault();
433
- updateEditingValue(replaceTimeSegment(currentDisplayValue, currentSegment, EMPTY_SEGMENT, format));
434
- selectSegment(currentSegment);
435
- return;
436
- }
437
- if (isKeyEscape(event)) {
438
- if (isDropdownOpened) {
439
- event.preventDefault();
440
- closeDropdown();
441
- }
442
- return;
443
- }
444
- if (isKeyEnter(event)) {
445
- if (isSelectHighlightedSlot()) {
446
- event.preventDefault();
447
- }
448
- return;
449
- }
450
- if (isKeySpace(event)) {
451
- event.preventDefault();
452
- var nextSegment = getNextTimeSegment(currentSegment, format);
453
- var nextDisplayValue = commitTimeSegmentOnLeave(currentDisplayValue, currentSegment, format);
454
- updateEditingValue(nextDisplayValue);
455
- if (nextSegment) {
456
- selectSegment(nextSegment);
457
- }
458
- else {
459
- selectSegment(currentSegment);
460
- }
461
- return;
462
- }
463
- if (isKeyChar(event)) {
464
- event.preventDefault();
465
- (_f = getActiveInput()) === null || _f === void 0 ? void 0 : _f.blink();
466
- }
467
- };
468
- var handleKeyDown = function (event) { return handleKeyDownBySource(event, false); };
469
- var handleMobileKeyDown = function (event) { return handleKeyDownBySource(event, true); };
470
- var handlePasteBySource = function (event, isMobilePopupInput) {
471
- var _a, _b;
472
- onPaste === null || onPaste === void 0 ? void 0 : onPaste(event);
473
- if (event.defaultPrevented || disabled) {
474
- return;
475
- }
476
- if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {
477
- return;
478
- }
479
- var pastedValue = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');
480
- var nextDisplayValue = parsePastedTimeValue(pastedValue, format);
481
- event.preventDefault();
482
- if (isTimeDisplayEmpty(nextDisplayValue)) {
483
- (_b = getActiveInput()) === null || _b === void 0 ? void 0 : _b.blink();
484
- return;
485
- }
486
- updateEditingValue(nextDisplayValue);
487
- selectSegment('hours');
488
- };
489
- var handlePaste = function (event) { return handlePasteBySource(event, false); };
490
- var handleMobilePaste = function (event) { return handlePasteBySource(event, true); };
491
- var handleNativeValueChange = useCallback(function (nextValue) {
492
- setEditingValue(nextValue);
493
- onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(nextValue);
494
- }, [onValueChange, setEditingValue]);
495
- return (React.createElement(CommonWrapper, __assign({}, props),
496
- React.createElement("span", { ref: rootRef, className: styles.root(), "data-tid": TimePickerDataTids.root },
497
- React.createElement(TimeInput, __assign({}, inputProps, { "data-tid": TimePickerDataTids.input, ref: inputRef, disabled: disabled, hasDropdown: hasDropdown, size: size, format: format, rightIcon: rightIcon, suffix: suffix, value: displayValue, "aria-haspopup": hasDropdown ? 'listbox' : undefined, "aria-expanded": hasDropdown && isDropdownOpened ? true : undefined, "aria-controls": hasDropdown && isDropdownOpened ? popupId : undefined, "aria-activedescendant": activeDescendantId, "aria-placeholder": ariaPlaceholder, onClick: handleClick, onBlur: handleBlur, onFocus: handleFocus, onMouseDownCapture: handleMouseDownCapture, onMouseUp: handleMouseUp, onKeyDown: handleKeyDown, onSelectSegment: handleSelectSegmentByMouse, onPaste: handlePaste })),
498
- canUseMobileNativeTimePicker && (React.createElement(NativeTimeInput, { "data-tid": TimePickerDataTids.nativeInput, disabled: disabled, ref: nativeInputRef, format: format, minTime: minTime, maxTime: maxTime, value: editingValue, onValueChange: handleNativeValueChange })),
499
- canUseMobileDropdownTimePicker && isDropdownOpened && (React.createElement(TimePickerMobilePopup, { id: popupId, opened: isDropdownOpened, value: displayValue, inputRef: mobileInputRef, disabled: disabled, format: format, size: size, rightIcon: rightIcon, suffix: suffix, resolvedSlots: resolvedSlots, highlightedSlotIndex: highlightedSlotIndex, normalizedValue: normalizedValue, slotRefs: slotRefs, error: props.error, warning: props.warning, "aria-describedby": props['aria-describedby'], "aria-label": props['aria-label'], "aria-placeholder": ariaPlaceholder, onFocus: handleMobileFocus, onBlur: handleMobileBlur, onClick: handleMobileClick, onKeyDown: handleMobileKeyDown, onMouseDownCapture: handleMobileMouseDownCapture, onMouseUp: handleMobileMouseUp, onPaste: handleMobilePaste, onSelectSegment: handleMobileSelectSegmentByMouse, onSelectSlot: selectSlot, onCloseRequest: handleCloseMobileDropdown })),
500
- hasDropdown &&
501
- !canUseMobileNativeTimePicker &&
502
- !canUseMobileDropdownTimePicker &&
503
- isDropdownOpened &&
504
- rootRef.current && (React.createElement(TimePickerPopup, { id: popupId, anchorElement: rootRef.current, menuPos: menuPos, menuAlign: menuAlign, menuWidth: menuWidth, popupMaxHeight: popupMaxHeight, format: format, size: size, resolvedSlots: resolvedSlots, highlightedSlotIndex: highlightedSlotIndex, normalizedValue: normalizedValue, slotRefs: slotRefs, onSelectSlot: selectSlot })))));
505
- });
506
- //# sourceMappingURL=TimePicker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimePicker.js","sourceRoot":"","sources":["TimePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { AriaAttributes, HTMLAttributes, ReactNode } from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { NativeTimeInput } from '../../internal/NativeTimeInput/index.js';\nimport type { NativeTimeInputRef } from '../../internal/NativeTimeInput/index.js';\nimport { isIOS, isMobile } from '../../lib/client.js';\nimport {\n isKeyArrowDown,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyBackspace,\n isKeyChar,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n isKeyTab,\n isModShift,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getRandomID } from '../../lib/utils.js';\nimport { scrollSelectedSlotIntoView } from './helpers/scrollSelectedSlotIntoView.js';\nimport { DIGIT_REGEXP, EMPTY_SEGMENT, EMPTY_VALUE, TimePickerDataTids } from './helpers/TimePicker.constants.js';\nimport {\n commitTimeSegmentOnLeave,\n deleteTimeSegmentDigit,\n formatDigitToTimeSegment,\n shiftTimeSegmentValue,\n} from './helpers/TimePicker.editing.js';\nimport { getTimePickerPopupMaxHeight } from './helpers/TimePicker.layout.js';\nimport { getNextTimeSegment, getPreviousTimeSegment } from './helpers/TimePicker.selection.js';\nimport type { TimeFormat, TimeSegment, TimeSlot } from './helpers/TimePicker.shared.js';\nimport {\n getEmptyDisplayValue,\n isTimeDisplayEmpty,\n isTimeValueOutOfRange,\n normalizeTimeValue,\n parsePastedTimeValue,\n replaceTimeSegment,\n} from './helpers/TimePicker.value.js';\nimport { useTimePickerDropdown } from './hooks/useTimePickerDropdown.js';\nimport { useTimePickerSelection } from './hooks/useTimePickerSelection.js';\nimport { useTimePickerValue } from './hooks/useTimePickerValue.js';\nimport type { TimeInputRef } from './TimeInput.js';\nimport { TimeInput } from './TimeInput.js';\nimport { getStyles } from './TimePicker.styles.js';\nimport { TimePickerMobilePopup } from './TimePickerMobilePopup.js';\nimport { TimePickerPopup } from './TimePickerPopup.js';\n\nexport interface TimePickerProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Устанавливает формат времени @default minute */\n format?: TimeFormat;\n /** Определяет массив объектов со слотами в формате TimeSlot */\n slots?: TimeSlot[];\n /** Задает нижнюю границу времени. Слоты за границей становятся disabled */\n minTime?: string;\n /** Задает верхнюю границу времени. Слоты за границей становятся disabled */\n maxTime?: string;\n /** Значение поля @param value 'hh:mm:[:ss]' */\n value?: string;\n /** Устанавливает фокус на поле ввода после окончания загрузки страницы @default false */\n autoFocus?: boolean;\n /** Делает компонент недоступным. */\n disabled?: boolean;\n /** Переводит контрол в состояние валидации 'ошибка'. */\n error?: boolean;\n /** Переводит контрол в состояние валидации 'предупреждение'. */\n warning?: boolean;\n /** Включает нативный системный выбор времени на мобильных устройствах */\n useMobileNativeTimePicker?: boolean;\n /** Расположение выпадающего меню */\n menuPos?: 'top' | 'bottom';\n /** Выравнивание выпадающего меню */\n menuAlign?: 'left' | 'right';\n /** Ширина выпадающего меню. По умолчанию — минимум ширина поля ввода, расширяется по контенту. */\n menuWidth?: string | number;\n /** Задает ширину поля. */\n width?: string | number;\n /** Переопределяет иконку или скрывает, если передать `null`. */\n rightIcon?: React.ReactNode | (() => React.ReactNode);\n /** Устанавливает суффикс после значения и перед иконкой. */\n suffix?: ReactNode;\n /** Размер поля ввода и выпадающего меню */\n size?: SizeProp;\n /** Задает функцию, которая вызывается при клике на контрол. */\n onClick?(event: React.MouseEvent<HTMLElement>): void;\n /** Событие изменения значения `value` в поле @param value - 'hh:mm:[:ss]' */\n onValueChange?(value: string): void;\n /** Задает функцию, которая вызывается при потере фокуса. */\n onBlur?(event: React.FocusEvent<HTMLElement>): void;\n /** Задает функцию, которая вызывается при получении фокуса. */\n onFocus?(event: React.FocusEvent<HTMLElement>): void;\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown?(event: React.KeyboardEvent<HTMLElement>): void;\n /** Задает функцию, которая вызывается при вставке значения. */\n onPaste?(event: React.ClipboardEvent<HTMLElement>): void;\n}\n\nexport interface TimePickerRef {\n /** Устанавливает фокус на поле ввода */\n focus(): void;\n /** Снимает фокус с поля ввода */\n blur(): void;\n /** Закрывает выпадающее меню */\n close(): void;\n /** Запускает анимацию blink у поля ввода времени */\n blink(): void;\n /** Возвращает DOM-узел поля ввода */\n getNode(): HTMLElement | null;\n /** Возвращает корневой DOM-узел компонента */\n getRootNode(): HTMLElement | null;\n}\n\nexport type TimePicker = TimePickerRef;\n\n/** Поле с временем помогает вводить время с клавиатуры или выбирать его с помощью мыши */\nexport const TimePicker = forwardRefAndName<TimePickerRef, TimePickerProps>('TimePicker', (props, ref) => {\n const {\n disabled,\n useMobileNativeTimePicker = false,\n format = 'minute',\n size = 'small',\n slots,\n menuPos,\n menuAlign,\n menuWidth,\n minTime,\n maxTime,\n rightIcon,\n suffix,\n value,\n onValueChange,\n onFocus,\n onBlur,\n onClick,\n onKeyDown,\n onPaste,\n ...inputProps\n } = props;\n\n const theme = useContext(ThemeContext);\n\n const styles = useStyles(getStyles);\n\n const [isInputFocused, setIsInputFocused] = useState(false);\n\n const inputRef = useRef<TimeInputRef>(null);\n const mobileInputRef = useRef<TimeInputRef>(null);\n const nativeInputRef = useRef<NativeTimeInputRef>(null);\n const rootRef = useRef<HTMLSpanElement>(null);\n const slotRefs = useRef(new Map<number, HTMLSpanElement>());\n const isMouseFocusRef = useRef(false);\n const isMouseDownOnFragmentRef = useRef(false);\n const mouseDownSegmentRef = useRef<TimeSegment | null>(null);\n const popupIdRef = useRef(TimePickerDataTids.popup + getRandomID());\n\n const [isMobileDevice, setIsMobileDevice] = useState(false);\n const [canUseMobileNativeTimePicker, setCanUseMobileNativeTimePicker] = useState(false);\n\n const { editingValue, editingValueRef, setEditingValue, updateEditingValue, commitEditingValue, clearEditingValue } =\n useTimePickerValue({ isInputFocused, format, value, onValueChange });\n\n const hasDropdown = (slots?.length ?? 0) > 0;\n\n const resolvedSlots = useMemo(\n () =>\n (slots ?? []).map((slot) => ({\n ...slot,\n disabled: Boolean(slot.disabled) || isTimeValueOutOfRange(slot.value, format, minTime, maxTime),\n })),\n [maxTime, minTime, format, slots],\n );\n\n const popupMaxHeight = getTimePickerPopupMaxHeight(size, theme);\n\n const ariaPlaceholder = format === 'minute' ? 'чч:мм' : 'чч:мм:сс';\n\n const normalizedValue = normalizeTimeValue(editingValue, format);\n\n const selectedSlotIndex = resolvedSlots.findIndex(\n (slot) => normalizeTimeValue(slot.value, format) === normalizedValue,\n );\n\n const canUseMobileDropdownTimePicker = hasDropdown && isMobileDevice && !canUseMobileNativeTimePicker;\n\n let displayValue = editingValue;\n\n if (isInputFocused) {\n displayValue = editingValue === EMPTY_VALUE ? getEmptyDisplayValue(format) : editingValue;\n } else if (isTimeDisplayEmpty(editingValue)) {\n displayValue = EMPTY_VALUE;\n }\n\n const resetMouseInteractionState = useCallback(() => {\n isMouseFocusRef.current = false;\n isMouseDownOnFragmentRef.current = false;\n mouseDownSegmentRef.current = null;\n }, []);\n\n const normalizeCurrentSegmentIfNeeded = useCallback(\n (segment: TimeSegment) => {\n const nextDisplayValue = commitTimeSegmentOnLeave(\n editingValue === EMPTY_VALUE ? getEmptyDisplayValue(format) : editingValue,\n segment,\n format,\n );\n\n updateEditingValue(nextDisplayValue);\n },\n [editingValue, format, updateEditingValue],\n );\n\n const openNativeTimePicker = useCallback(() => {\n if (!canUseMobileNativeTimePicker || disabled) {\n return;\n }\n\n if (isIOS) {\n nativeInputRef.current?.focus();\n } else {\n nativeInputRef.current?.click();\n }\n }, [canUseMobileNativeTimePicker, disabled]);\n\n const {\n isDropdownOpened,\n highlightedSlotIndex,\n openDropdown,\n closeDropdown,\n resetHighlightedSlot,\n tryNavigateSlots,\n } = useTimePickerDropdown({\n disabled,\n hasDropdown,\n slots: resolvedSlots,\n selectedSlotIndex: selectedSlotIndex >= 0 ? selectedSlotIndex : null,\n });\n\n const popupId = popupIdRef.current;\n const activeDescendantId =\n hasDropdown && highlightedSlotIndex !== null ? `${popupId}-slot-${highlightedSlotIndex}` : undefined;\n\n const getActiveInput = useCallback(\n () => (canUseMobileDropdownTimePicker && isDropdownOpened ? mobileInputRef.current : inputRef.current),\n [canUseMobileDropdownTimePicker, isDropdownOpened],\n );\n\n const { selection, selectedSegment, selectSegment, selectAll, syncSelectionWithDOM } = useTimePickerSelection({\n isInputFocused,\n format,\n displayValue,\n getInput: getActiveInput,\n });\n\n const closeOpenedDropdown = useCallback(() => {\n if (canUseMobileDropdownTimePicker && isDropdownOpened) {\n setIsInputFocused(false);\n resetMouseInteractionState();\n\n if (isTimeDisplayEmpty(editingValueRef.current)) {\n clearEditingValue();\n } else {\n commitEditingValue();\n }\n }\n\n closeDropdown();\n }, [\n canUseMobileDropdownTimePicker,\n clearEditingValue,\n closeDropdown,\n commitEditingValue,\n editingValueRef,\n isDropdownOpened,\n resetMouseInteractionState,\n ]);\n\n const selectSlot = useCallback(\n (slot: TimeSlot) => {\n if (slot.disabled) {\n return;\n }\n\n if (canUseMobileDropdownTimePicker) {\n setIsInputFocused(false);\n resetMouseInteractionState();\n }\n\n updateEditingValue(slot.value);\n closeDropdown();\n },\n [canUseMobileDropdownTimePicker, closeDropdown, resetMouseInteractionState, updateEditingValue],\n );\n\n const isSelectHighlightedSlot = useCallback(() => {\n if (highlightedSlotIndex === null) {\n return false;\n }\n\n const slot = resolvedSlots[highlightedSlotIndex];\n\n if (!slot || slot.disabled) {\n return true;\n }\n\n selectSlot(slot);\n return true;\n }, [highlightedSlotIndex, resolvedSlots, selectSlot]);\n\n const focusInput = useCallback(() => {\n getActiveInput()?.focus();\n }, [getActiveInput]);\n\n const blurInput = useCallback(() => {\n getActiveInput()?.blur();\n }, [getActiveInput]);\n\n const closeInputDropdown = useCallback(() => {\n closeOpenedDropdown();\n }, [closeOpenedDropdown]);\n\n const blinkInput = useCallback(() => {\n getActiveInput()?.blink();\n }, [getActiveInput]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: focusInput,\n blur: blurInput,\n blink: blinkInput,\n close: closeInputDropdown,\n getNode: () => getActiveInput()?.getNode() ?? null,\n getRootNode: () => rootRef.current,\n }),\n [blinkInput, blurInput, closeInputDropdown, focusInput, getActiveInput],\n );\n\n useLayoutEffect(() => {\n if (!isDropdownOpened) {\n return;\n }\n\n const selectedIndex = highlightedSlotIndex ?? selectedSlotIndex;\n\n if (selectedIndex < 0) {\n return;\n }\n\n const targetNode = slotRefs.current.get(selectedIndex);\n\n if (targetNode) {\n scrollSelectedSlotIntoView(targetNode);\n }\n }, [highlightedSlotIndex, isDropdownOpened, selectedSlotIndex]);\n\n useEffect(() => {\n if (disabled && isDropdownOpened) {\n closeOpenedDropdown();\n }\n }, [closeOpenedDropdown, disabled, isDropdownOpened]);\n\n useEffect(() => {\n setIsMobileDevice(Boolean(isMobile));\n setCanUseMobileNativeTimePicker(useMobileNativeTimePicker && Boolean(isMobile));\n }, [useMobileNativeTimePicker]);\n\n const handleCloseMobileDropdown = useCallback(() => {\n closeOpenedDropdown();\n }, [closeOpenedDropdown]);\n\n const handleFocusBySource = (event: React.FocusEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n onFocus?.(event);\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n openDropdown();\n return;\n }\n\n setIsInputFocused(true);\n openDropdown();\n\n if (isMouseDownOnFragmentRef.current && !isInputFocused) {\n if (isTimeDisplayEmpty(editingValueRef.current)) {\n selectSegment('hours');\n } else if (mouseDownSegmentRef.current) {\n selectSegment(mouseDownSegmentRef.current);\n }\n } else {\n selectSegment('hours');\n }\n\n onFocus?.(event);\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => handleFocusBySource(event, false);\n\n const handleMobileFocus = (event: React.FocusEvent<HTMLInputElement>) => handleFocusBySource(event, true);\n\n const handleBlurBySource = (event: React.FocusEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker) {\n onBlur?.(event);\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n return;\n }\n\n setIsInputFocused(false);\n resetMouseInteractionState();\n\n if (isMobilePopupInput) {\n onBlur?.(event);\n return;\n }\n\n closeDropdown();\n\n if (isTimeDisplayEmpty(editingValueRef.current)) {\n clearEditingValue();\n onBlur?.(event);\n return;\n }\n\n commitEditingValue();\n onBlur?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => handleBlurBySource(event, false);\n\n const handleMobileBlur = (event: React.FocusEvent<HTMLInputElement>) => handleBlurBySource(event, true);\n\n const handleClickBySource = (event: React.MouseEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n onClick?.(event);\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n openDropdown();\n onClick?.(event);\n return;\n }\n\n openDropdown();\n\n onClick?.(event);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLInputElement>) => handleClickBySource(event, false);\n\n const handleMobileClick = (event: React.MouseEvent<HTMLInputElement>) => handleClickBySource(event, true);\n\n const handleMouseDownCaptureBySource = (event: React.MouseEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {\n return;\n }\n\n const currentInputRef = isMobilePopupInput ? mobileInputRef : inputRef;\n const segment = currentInputRef.current?.getSegment(event.target) ?? null;\n const isFragment = segment !== null;\n\n if (isInputFocused && !isFragment) {\n event.preventDefault();\n }\n\n isMouseFocusRef.current = !isInputFocused;\n isMouseDownOnFragmentRef.current = isFragment;\n mouseDownSegmentRef.current = segment;\n };\n\n const handleMouseDownCapture = (event: React.MouseEvent<HTMLInputElement>) =>\n handleMouseDownCaptureBySource(event, false);\n\n const handleMobileMouseDownCapture = (event: React.MouseEvent<HTMLInputElement>) =>\n handleMouseDownCaptureBySource(event, true);\n\n const handleMouseUpBySource = (_event: React.MouseEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n if (disabled || canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {\n return;\n }\n\n syncSelectionWithDOM();\n };\n\n const handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => handleMouseUpBySource(event, false);\n\n const handleMobileMouseUp = (event: React.MouseEvent<HTMLInputElement>) => handleMouseUpBySource(event, true);\n\n const handleSelectSegmentByMouseBySource = (segment: TimeSegment, isMobilePopupInput: boolean) => {\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n openDropdown();\n return;\n }\n\n openDropdown();\n\n if (disabled) {\n return;\n }\n\n if (!(isMouseFocusRef.current && isTimeDisplayEmpty(editingValueRef.current)) && selectedSegment !== segment) {\n normalizeCurrentSegmentIfNeeded(selectedSegment);\n selectSegment(segment);\n }\n\n resetMouseInteractionState();\n };\n\n const handleSelectSegmentByMouse = (segment: TimeSegment) => handleSelectSegmentByMouseBySource(segment, false);\n\n const handleMobileSelectSegmentByMouse = (segment: TimeSegment) => handleSelectSegmentByMouseBySource(segment, true);\n\n const handleKeyDownBySource = (event: React.KeyboardEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n openDropdown();\n return;\n }\n\n if (isShortcutSelectAll(event)) {\n event.preventDefault();\n selectAll();\n return;\n }\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n const currentDisplayValue = displayValue;\n const currentSegment = selectedSegment;\n const hasAllSelectionInState = selection === 'all';\n const hasAllSelectionInDOM = getActiveInput()?.isAllSelected() ?? false;\n const shouldHandleAsAllSelection = hasAllSelectionInState || hasAllSelectionInDOM;\n\n if (hasAllSelectionInDOM && !hasAllSelectionInState) {\n syncSelectionWithDOM();\n }\n\n if (shouldHandleAsAllSelection && (isKeyBackspace(event) || isKeyDelete(event))) {\n event.preventDefault();\n updateEditingValue(getEmptyDisplayValue(format));\n selectSegment('hours');\n return;\n }\n\n if (DIGIT_REGEXP.test(event.key)) {\n event.preventDefault();\n\n resetHighlightedSlot();\n\n const nextDigitInputValue = shouldHandleAsAllSelection ? getEmptyDisplayValue(format) : currentDisplayValue;\n\n const nextDigitInputSegment = shouldHandleAsAllSelection ? 'hours' : currentSegment;\n\n const result = formatDigitToTimeSegment(nextDigitInputValue, nextDigitInputSegment, event.key, format);\n\n if (result.shouldBlink) {\n getActiveInput()?.blink();\n return;\n }\n\n updateEditingValue(result.nextValue);\n selectSegment(result.selectedSegment);\n return;\n }\n\n if (isKeyArrowLeft(event)) {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(getPreviousTimeSegment(currentSegment) ?? currentSegment);\n return;\n }\n\n if (isModShift(isKeyTab)(event)) {\n const previousSegment = getPreviousTimeSegment(currentSegment);\n\n if (previousSegment) {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(previousSegment);\n }\n return;\n }\n\n if (isKeyArrowRight(event)) {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(getNextTimeSegment(currentSegment, format) ?? currentSegment);\n return;\n }\n\n if (isKeyTab(event)) {\n const nextSegment = getNextTimeSegment(currentSegment, format);\n\n if (nextSegment) {\n event.preventDefault();\n normalizeCurrentSegmentIfNeeded(currentSegment);\n selectSegment(nextSegment);\n }\n return;\n }\n\n if (isKeyArrowUp(event) || isKeyArrowDown(event)) {\n event.preventDefault();\n\n const slotStep = isKeyArrowUp(event) ? -1 : 1;\n\n if (tryNavigateSlots(slotStep)) {\n return;\n }\n\n const step = isKeyArrowUp(event) ? 1 : -1;\n\n updateEditingValue(shiftTimeSegmentValue(currentDisplayValue, currentSegment, step, format));\n selectSegment(currentSegment);\n return;\n }\n\n if (isKeyBackspace(event)) {\n event.preventDefault();\n\n let nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, currentSegment, format);\n let nextSegment = currentSegment;\n\n if (nextDisplayValue === currentDisplayValue) {\n const previousSegment = getPreviousTimeSegment(currentSegment);\n\n if (previousSegment) {\n nextSegment = previousSegment;\n nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, previousSegment, format);\n }\n }\n\n updateEditingValue(nextDisplayValue);\n selectSegment(nextSegment);\n return;\n }\n\n if (isKeyDelete(event)) {\n event.preventDefault();\n updateEditingValue(replaceTimeSegment(currentDisplayValue, currentSegment, EMPTY_SEGMENT, format));\n selectSegment(currentSegment);\n return;\n }\n\n if (isKeyEscape(event)) {\n if (isDropdownOpened) {\n event.preventDefault();\n closeDropdown();\n }\n return;\n }\n\n if (isKeyEnter(event)) {\n if (isSelectHighlightedSlot()) {\n event.preventDefault();\n }\n return;\n }\n\n if (isKeySpace(event)) {\n event.preventDefault();\n\n const nextSegment = getNextTimeSegment(currentSegment, format);\n const nextDisplayValue = commitTimeSegmentOnLeave(currentDisplayValue, currentSegment, format);\n\n updateEditingValue(nextDisplayValue);\n\n if (nextSegment) {\n selectSegment(nextSegment);\n } else {\n selectSegment(currentSegment);\n }\n return;\n }\n\n if (isKeyChar(event)) {\n event.preventDefault();\n getActiveInput()?.blink();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => handleKeyDownBySource(event, false);\n\n const handleMobileKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => handleKeyDownBySource(event, true);\n\n const handlePasteBySource = (event: React.ClipboardEvent<HTMLInputElement>, isMobilePopupInput: boolean) => {\n onPaste?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {\n return;\n }\n\n const pastedValue = event.clipboardData?.getData('text');\n const nextDisplayValue = parsePastedTimeValue(pastedValue, format);\n\n event.preventDefault();\n\n if (isTimeDisplayEmpty(nextDisplayValue)) {\n getActiveInput()?.blink();\n return;\n }\n\n updateEditingValue(nextDisplayValue);\n selectSegment('hours');\n };\n\n const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => handlePasteBySource(event, false);\n\n const handleMobilePaste = (event: React.ClipboardEvent<HTMLInputElement>) => handlePasteBySource(event, true);\n\n const handleNativeValueChange = useCallback(\n (nextValue: string) => {\n setEditingValue(nextValue);\n onValueChange?.(nextValue);\n },\n [onValueChange, setEditingValue],\n );\n\n return (\n <CommonWrapper {...props}>\n <span ref={rootRef} className={styles.root()} data-tid={TimePickerDataTids.root}>\n <TimeInput\n {...inputProps}\n data-tid={TimePickerDataTids.input}\n ref={inputRef}\n disabled={disabled}\n hasDropdown={hasDropdown}\n size={size}\n format={format}\n rightIcon={rightIcon}\n suffix={suffix}\n value={displayValue}\n aria-haspopup={hasDropdown ? 'listbox' : undefined}\n aria-expanded={hasDropdown && isDropdownOpened ? true : undefined}\n aria-controls={hasDropdown && isDropdownOpened ? popupId : undefined}\n aria-activedescendant={activeDescendantId}\n aria-placeholder={ariaPlaceholder}\n onClick={handleClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onMouseDownCapture={handleMouseDownCapture}\n onMouseUp={handleMouseUp}\n onKeyDown={handleKeyDown}\n onSelectSegment={handleSelectSegmentByMouse}\n onPaste={handlePaste}\n />\n\n {canUseMobileNativeTimePicker && (\n <NativeTimeInput\n data-tid={TimePickerDataTids.nativeInput}\n disabled={disabled}\n ref={nativeInputRef}\n format={format}\n minTime={minTime}\n maxTime={maxTime}\n value={editingValue}\n onValueChange={handleNativeValueChange}\n />\n )}\n\n {canUseMobileDropdownTimePicker && isDropdownOpened && (\n <TimePickerMobilePopup\n id={popupId}\n opened={isDropdownOpened}\n value={displayValue}\n inputRef={mobileInputRef}\n disabled={disabled}\n format={format}\n size={size}\n rightIcon={rightIcon}\n suffix={suffix}\n resolvedSlots={resolvedSlots}\n highlightedSlotIndex={highlightedSlotIndex}\n normalizedValue={normalizedValue}\n slotRefs={slotRefs}\n error={props.error}\n warning={props.warning}\n aria-describedby={props['aria-describedby']}\n aria-label={props['aria-label']}\n aria-placeholder={ariaPlaceholder}\n onFocus={handleMobileFocus}\n onBlur={handleMobileBlur}\n onClick={handleMobileClick}\n onKeyDown={handleMobileKeyDown}\n onMouseDownCapture={handleMobileMouseDownCapture}\n onMouseUp={handleMobileMouseUp}\n onPaste={handleMobilePaste}\n onSelectSegment={handleMobileSelectSegmentByMouse}\n onSelectSlot={selectSlot}\n onCloseRequest={handleCloseMobileDropdown}\n />\n )}\n\n {hasDropdown &&\n !canUseMobileNativeTimePicker &&\n !canUseMobileDropdownTimePicker &&\n isDropdownOpened &&\n rootRef.current && (\n <TimePickerPopup\n id={popupId}\n anchorElement={rootRef.current}\n menuPos={menuPos}\n menuAlign={menuAlign}\n menuWidth={menuWidth}\n popupMaxHeight={popupMaxHeight}\n format={format}\n size={size}\n resolvedSlots={resolvedSlots}\n highlightedSlotIndex={highlightedSlotIndex}\n normalizedValue={normalizedValue}\n slotRefs={slotRefs}\n onSelectSlot={selectSlot}\n />\n )}\n </span>\n </CommonWrapper>\n );\n});\n"]}
@@ -1,14 +0,0 @@
1
- import type { Theme } from '../../lib/theming/Theme.js';
2
- export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGetter<{
3
- root(): string;
4
- popup(t: Theme): string;
5
- rightIcon(): string;
6
- rightIconInteractive(): string;
7
- rightIconDefault(t: Theme): string;
8
- slot(): string;
9
- slotSmall(t: Theme): string;
10
- slotMedium(t: Theme): string;
11
- slotLarge(t: Theme): string;
12
- slotValue(): string;
13
- slotLabel(t: Theme): string;
14
- }>;