@skbkontur/react-ui 6.0.7-b5d2c.0 → 6.0.7-eab55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/components/Autocomplete/Autocomplete.js +15 -4
  2. package/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/components/Calendar/Calendar.d.ts +14 -14
  4. package/components/Calendar/Calendar.js +2 -2
  5. package/components/Calendar/Calendar.js.map +1 -1
  6. package/components/Calendar/CalendarDay.d.ts +2 -2
  7. package/components/Calendar/CalendarDay.js +4 -1
  8. package/components/Calendar/CalendarDay.js.map +1 -1
  9. package/components/Calendar/DayCellView.styles.d.ts +1 -0
  10. package/components/Calendar/DayCellView.styles.js +6 -3
  11. package/components/Calendar/DayCellView.styles.js.map +1 -1
  12. package/components/Center/Center.d.ts +3 -3
  13. package/components/Center/Center.js +2 -2
  14. package/components/Center/Center.js.map +1 -1
  15. package/components/Checkbox/Checkbox.d.ts +14 -11
  16. package/components/Checkbox/Checkbox.js +6 -3
  17. package/components/Checkbox/Checkbox.js.map +1 -1
  18. package/components/ComboBox/ComboBox.d.ts +3 -3
  19. package/components/ComboBox/ComboBox.js.map +1 -1
  20. package/components/DateInput/DateInput.d.ts +15 -15
  21. package/components/DateInput/DateInput.js +1 -1
  22. package/components/DateInput/DateInput.js.map +1 -1
  23. package/components/DatePicker/DatePicker.d.ts +16 -14
  24. package/components/DatePicker/DatePicker.js +5 -4
  25. package/components/DatePicker/DatePicker.js.map +1 -1
  26. package/components/DatePicker/MobilePicker.js +1 -1
  27. package/components/DatePicker/MobilePicker.js.map +1 -1
  28. package/components/DateRangePicker/DateRangePicker.d.ts +3 -4
  29. package/components/DateRangePicker/DateRangePicker.js +4 -6
  30. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  31. package/components/DateRangePicker/DateRangePickerInput.js +4 -6
  32. package/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
  33. package/components/Dropdown/Dropdown.d.ts +15 -8
  34. package/components/Dropdown/Dropdown.js +8 -1
  35. package/components/Dropdown/Dropdown.js.map +1 -1
  36. package/components/DropdownMenu/DropdownMenu.d.ts +1 -2
  37. package/components/DropdownMenu/DropdownMenu.js +1 -2
  38. package/components/DropdownMenu/DropdownMenu.js.map +1 -1
  39. package/components/FileUploader/FileUploader.d.ts +6 -4
  40. package/components/FileUploader/FileUploader.js +3 -1
  41. package/components/FileUploader/FileUploader.js.map +1 -1
  42. package/components/FileUploader/FileUploaderFile.d.ts +3 -3
  43. package/components/FileUploader/FileUploaderFile.js +1 -1
  44. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  45. package/components/Input/Input.d.ts +2 -2
  46. package/components/Input/Input.js.map +1 -1
  47. package/components/Loader/Loader.d.ts +12 -4
  48. package/components/Loader/Loader.js +18 -7
  49. package/components/Loader/Loader.js.map +1 -1
  50. package/components/MenuFooter/MenuFooter.d.ts +1 -1
  51. package/components/MenuFooter/MenuFooter.js +1 -1
  52. package/components/MenuFooter/MenuFooter.js.map +1 -1
  53. package/components/MenuHeader/MenuHeader.d.ts +2 -2
  54. package/components/MenuHeader/MenuHeader.js +1 -1
  55. package/components/MenuHeader/MenuHeader.js.map +1 -1
  56. package/components/MenuItem/MenuItem.d.ts +1 -0
  57. package/components/MenuItem/MenuItem.js +17 -1
  58. package/components/MenuItem/MenuItem.js.map +1 -1
  59. package/components/MenuItem/MenuItem.styles.d.ts +3 -0
  60. package/components/MenuItem/MenuItem.styles.js +25 -16
  61. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  62. package/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  63. package/components/MenuSeparator/MenuSeparator.js +1 -1
  64. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  65. package/components/MiniModal/MiniModal.d.ts +1 -1
  66. package/components/MiniModal/MiniModal.js +1 -1
  67. package/components/MiniModal/MiniModal.js.map +1 -1
  68. package/components/MiniModal/MiniModalBody.d.ts +1 -1
  69. package/components/MiniModal/MiniModalBody.js +1 -1
  70. package/components/MiniModal/MiniModalBody.js.map +1 -1
  71. package/components/MiniModal/MiniModalFooter.d.ts +1 -1
  72. package/components/MiniModal/MiniModalFooter.js +1 -1
  73. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  74. package/components/MiniModal/MiniModalHeader.d.ts +1 -1
  75. package/components/MiniModal/MiniModalHeader.js +1 -1
  76. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  77. package/components/Paging/Paging.d.ts +2 -2
  78. package/components/Paging/Paging.js.map +1 -1
  79. package/components/Radio/Radio.d.ts +7 -7
  80. package/components/Radio/Radio.js.map +1 -1
  81. package/components/RadioGroup/RadioGroup.d.ts +2 -2
  82. package/components/RadioGroup/RadioGroup.js.map +1 -1
  83. package/components/Select/Select.d.ts +4 -4
  84. package/components/Select/Select.js +11 -1
  85. package/components/Select/Select.js.map +1 -1
  86. package/components/SingleToast/SingleToast.d.ts +10 -7
  87. package/components/SingleToast/SingleToast.js +10 -7
  88. package/components/SingleToast/SingleToast.js.map +1 -1
  89. package/components/Spinner/Spinner.d.ts +23 -33
  90. package/components/Spinner/Spinner.js +23 -19
  91. package/components/Spinner/Spinner.js.map +1 -1
  92. package/components/Spinner/Spinner.styles.d.ts +0 -3
  93. package/components/Spinner/Spinner.styles.js +6 -15
  94. package/components/Spinner/Spinner.styles.js.map +1 -1
  95. package/components/Sticky/Sticky.d.ts +4 -0
  96. package/components/Sticky/Sticky.js +4 -0
  97. package/components/Sticky/Sticky.js.map +1 -1
  98. package/components/Switcher/Switcher.d.ts +10 -8
  99. package/components/Switcher/Switcher.js +3 -1
  100. package/components/Switcher/Switcher.js.map +1 -1
  101. package/components/Textarea/Textarea.js +1 -1
  102. package/components/Textarea/Textarea.js.map +1 -1
  103. package/components/Textarea/Textarea.styles.d.ts +1 -0
  104. package/components/Textarea/Textarea.styles.js +7 -4
  105. package/components/Textarea/Textarea.styles.js.map +1 -1
  106. package/components/Textarea/TextareaCounter.d.ts +2 -0
  107. package/components/Textarea/TextareaCounter.js +22 -4
  108. package/components/Textarea/TextareaCounter.js.map +1 -1
  109. package/components/TimePicker/TimeFragmentsView.js.map +1 -1
  110. package/components/TimePicker/TimeFragmentsView.styles.js +4 -4
  111. package/components/TimePicker/TimeFragmentsView.styles.js.map +1 -1
  112. package/components/TimePicker/TimeInput.d.ts +5 -7
  113. package/components/TimePicker/TimeInput.js +19 -7
  114. package/components/TimePicker/TimeInput.js.map +1 -1
  115. package/components/TimePicker/TimePicker.d.ts +39 -7
  116. package/components/TimePicker/TimePicker.js +275 -148
  117. package/components/TimePicker/TimePicker.js.map +1 -1
  118. package/components/TimePicker/TimePicker.styles.d.ts +3 -4
  119. package/components/TimePicker/TimePicker.styles.js +11 -14
  120. package/components/TimePicker/TimePicker.styles.js.map +1 -1
  121. package/components/TimePicker/TimePickerMobilePopup.d.ts +31 -0
  122. package/components/TimePicker/TimePickerMobilePopup.js +21 -0
  123. package/components/TimePicker/TimePickerMobilePopup.js.map +1 -0
  124. package/components/TimePicker/TimePickerPopup.d.ts +19 -0
  125. package/components/TimePicker/TimePickerPopup.js +18 -0
  126. package/components/TimePicker/TimePickerPopup.js.map +1 -0
  127. package/components/TimePicker/TimePickerSlots.d.ts +16 -0
  128. package/components/TimePicker/TimePickerSlots.js +67 -0
  129. package/components/TimePicker/TimePickerSlots.js.map +1 -0
  130. package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -1
  131. package/components/TimePicker/helpers/TimePicker.constants.js +0 -1
  132. package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -1
  133. package/components/TimePicker/helpers/TimePicker.editing.js +10 -1
  134. package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -1
  135. package/components/TimePicker/helpers/TimePicker.shared.d.ts +1 -2
  136. package/components/TimePicker/helpers/TimePicker.shared.js +4 -4
  137. package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -1
  138. package/components/TimePicker/helpers/TimePicker.value.d.ts +3 -5
  139. package/components/TimePicker/helpers/TimePicker.value.js +21 -7
  140. package/components/TimePicker/helpers/TimePicker.value.js.map +1 -1
  141. package/components/TimePicker/hooks/useTimePickerValue.d.ts +1 -1
  142. package/components/TimePicker/hooks/useTimePickerValue.js +8 -7
  143. package/components/TimePicker/hooks/useTimePickerValue.js.map +1 -1
  144. package/components/Toast/Toast.d.ts +13 -14
  145. package/components/Toast/Toast.js +3 -3
  146. package/components/Toast/Toast.js.map +1 -1
  147. package/components/Toast/ToastView.d.ts +8 -5
  148. package/components/Toast/ToastView.js +28 -8
  149. package/components/Toast/ToastView.js.map +1 -1
  150. package/components/Toast/ToastView.styles.d.ts +7 -0
  151. package/components/Toast/ToastView.styles.js +30 -8
  152. package/components/Toast/ToastView.styles.js.map +1 -1
  153. package/components/Tooltip/Tooltip.d.ts +4 -4
  154. package/components/Tooltip/Tooltip.js.map +1 -1
  155. package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
  156. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  157. package/internal/CommonWrapper/CommonWrapper.js +5 -0
  158. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  159. package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  160. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  161. package/internal/CustomComboBox/ComboBoxView.js +13 -2
  162. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  163. package/internal/Menu/Menu.js +3 -0
  164. package/internal/Menu/Menu.js.map +1 -1
  165. package/internal/Menu/Menu.styles.d.ts +1 -0
  166. package/internal/Menu/Menu.styles.js +13 -10
  167. package/internal/Menu/Menu.styles.js.map +1 -1
  168. package/internal/MenuMessage/MenuMessage.js +17 -1
  169. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  170. package/internal/MenuMessage/MenuMessage.styles.d.ts +3 -0
  171. package/internal/MenuMessage/MenuMessage.styles.js +13 -4
  172. package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
  173. package/internal/MobilePopup/MobilePopup.d.ts +8 -0
  174. package/internal/MobilePopup/MobilePopup.js +34 -11
  175. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  176. package/internal/MobilePopup/MobilePopup.styles.d.ts +7 -0
  177. package/internal/MobilePopup/MobilePopup.styles.js +34 -10
  178. package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  179. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
  180. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +18 -1
  181. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  182. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
  183. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +14 -4
  184. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
  185. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +4 -0
  186. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +48 -11
  187. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  188. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +6 -0
  189. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +28 -8
  190. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  191. package/internal/NativeTimeInput/NativeTimeInput.d.ts +16 -0
  192. package/internal/NativeTimeInput/NativeTimeInput.js +25 -0
  193. package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -0
  194. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -0
  195. package/internal/NativeTimeInput/NativeTimeInput.styles.js +15 -0
  196. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -0
  197. package/internal/NativeTimeInput/index.d.ts +1 -0
  198. package/internal/NativeTimeInput/index.js +2 -0
  199. package/internal/NativeTimeInput/index.js.map +1 -0
  200. package/internal/NativeTimeInput/utils.d.ts +7 -0
  201. package/internal/NativeTimeInput/utils.js +28 -0
  202. package/internal/NativeTimeInput/utils.js.map +1 -0
  203. package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
  204. package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
  205. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  206. package/internal/icons2022/LoadingIcon.js +1 -1
  207. package/internal/icons2022/LoadingIcon.js.map +1 -1
  208. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +2 -0
  209. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +21 -0
  210. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +1 -0
  211. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +2 -0
  212. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +21 -0
  213. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +1 -0
  214. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +2 -0
  215. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +21 -0
  216. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +1 -0
  217. package/internal/themes/BasicTheme.d.ts +48 -4
  218. package/internal/themes/BasicTheme.js +139 -5
  219. package/internal/themes/BasicTheme.js.map +1 -1
  220. package/internal/themes/DarkTheme6_1.d.ts +1 -0
  221. package/internal/themes/DarkTheme6_1.js +164 -0
  222. package/internal/themes/DarkTheme6_1.js.map +1 -0
  223. package/internal/themes/LightTheme6_1.d.ts +1 -0
  224. package/internal/themes/LightTheme6_1.js +164 -0
  225. package/internal/themes/LightTheme6_1.js.map +1 -0
  226. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  227. package/lib/theming/themes/DarkTheme.js +3 -1
  228. package/lib/theming/themes/DarkTheme.js.map +1 -1
  229. package/lib/theming/themes/LightTheme.d.ts +1 -0
  230. package/lib/theming/themes/LightTheme.js +3 -1
  231. package/lib/theming/themes/LightTheme.js.map +1 -1
  232. package/package.json +3 -1
@@ -20,91 +20,125 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import React, { useCallback, useContext, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';
23
+ import React, { useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, } from 'react';
24
24
  import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
25
- import { Menu } from '../../internal/Menu/index.js';
26
- import { Popup } from '../../internal/Popup/index.js';
27
- import { ZIndex } from '../../internal/ZIndex/index.js';
28
- import { isShortcutSelectAll } from '../../lib/events/keyboard/identifiers.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, isKeySpace, isKeyTab, isModShift, isShortcutSelectAll, } from '../../lib/events/keyboard/identifiers.js';
29
28
  import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
30
- import { getMenuPositions } from '../../lib/getMenuPositions.js';
31
29
  import { useStyles } from '../../lib/renderEnvironment/index.js';
32
30
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
33
- import { MenuItem } from '../MenuItem/index.js';
34
31
  import { scrollSelectedSlotIntoView } from './helpers/scrollSelectedSlotIntoView.js';
35
- import { DIGIT_REGEXP } from './helpers/TimePicker.constants.js';
32
+ import { DIGIT_REGEXP, EMPTY_VALUE } from './helpers/TimePicker.constants.js';
36
33
  import { clearTimeSegment, commitTimeSegmentOnLeave, deleteTimeSegmentDigit, formatDigitToTimeSegment, shiftTimeSegmentValue, } from './helpers/TimePicker.editing.js';
37
34
  import { DEFAULT_TIME_PICKER_SLOTS, getTimePickerPopupMaxHeight } from './helpers/TimePicker.layout.js';
38
35
  import { getNextTimeSegment, getPreviousTimeSegment } from './helpers/TimePicker.selection.js';
39
- import { getEmptyDisplayValue, isTimeDisplayEmpty, normalizeSlotValue, normalizeTimeValue, parsePastedTimeValue, } from './helpers/TimePicker.value.js';
36
+ import { getEmptyDisplayValue, isTimeDisplayEmpty, isTimeValueInRange, normalizeTimeValue, parsePastedTimeValue, } from './helpers/TimePicker.value.js';
40
37
  import { useTimePickerDropdown } from './hooks/useTimePickerDropdown.js';
41
38
  import { useTimePickerSelection } from './hooks/useTimePickerSelection.js';
42
39
  import { useTimePickerValue } from './hooks/useTimePickerValue.js';
43
40
  import { TimeInput } from './TimeInput.js';
44
41
  import { getStyles } from './TimePicker.styles.js';
42
+ import { TimePickerMobilePopup } from './TimePickerMobilePopup.js';
43
+ import { TimePickerPopup } from './TimePickerPopup.js';
45
44
  export var TimePickerDataTids = {
46
45
  root: 'TimePicker__root',
47
46
  input: 'TimePicker__input',
47
+ mobileInput: 'TimePicker__mobileInput',
48
+ nativeInput: 'TimePicker__nativeInput',
48
49
  popup: 'TimePicker__popup',
50
+ mobilePopup: 'TimePicker__mobilePopup',
49
51
  slot: 'TimePicker__slot',
50
- rightContent: 'TimePicker__rightContent',
51
52
  };
53
+ /** Поле с временем помогает вводить время с клавиатуры или выбирать его с помощью мыши */
52
54
  export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
53
- var disabled = props.disabled, _a = props.dropdown, dropdown = _a === void 0 ? false : _a, _b = props.precision, precision = _b === void 0 ? 'minute' : _b, _c = props.size, size = _c === void 0 ? 'small' : _c, slots = props.slots, menuPos = props.menuPos, menuAlign = props.menuAlign, rightContent = props.rightContent, valueProp = props.value, onValueChange = props.onValueChange, onFocus = props.onFocus, onBlur = props.onBlur, onClick = props.onClick, onKeyDown = props.onKeyDown, onPaste = props.onPaste, inputProps = __rest(props, ["disabled", "dropdown", "precision", "size", "slots", "menuPos", "menuAlign", "rightContent", "value", "onValueChange", "onFocus", "onBlur", "onClick", "onKeyDown", "onPaste"]);
55
+ var disabled = props.disabled, _a = props.useMobileNativeTimePicker, useMobileNativeTimePicker = _a === void 0 ? false : _a, _b = props.dropdown, dropdown = _b === void 0 ? false : _b, _c = props.precision, precision = _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, minValue = props.minValue, maxValue = props.maxValue, 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", "dropdown", "precision", "size", "slots", "menuPos", "menuAlign", "menuWidth", "minValue", "maxValue", "value", "onValueChange", "onFocus", "onBlur", "onClick", "onKeyDown", "onPaste"]);
54
56
  var theme = useContext(ThemeContext);
55
57
  var styles = useStyles(getStyles);
56
- var _d = useState(false), isInputFocused = _d[0], setIsInputFocused = _d[1];
58
+ var _e = useState(false), isInputFocused = _e[0], setIsInputFocused = _e[1];
57
59
  var inputRef = useRef(null);
60
+ var mobileInputRef = useRef(null);
61
+ var activeInputRef = useRef(null);
62
+ var nativeInputRef = useRef(null);
58
63
  var rootRef = useRef(null);
59
64
  var slotRefs = useRef(new Map());
60
65
  var isMouseFocusRef = useRef(false);
61
66
  var isMouseDownOnFragmentRef = useRef(false);
62
67
  var mouseDownSegmentRef = useRef(null);
63
- var resolvedSlots = useMemo(function () { return slots !== null && slots !== void 0 ? slots : DEFAULT_TIME_PICKER_SLOTS; }, [slots]);
64
- var _e = useTimePickerValue({ isInputFocused: isInputFocused, precision: precision, value: valueProp, onValueChange: onValueChange }), editingValue = _e.editingValue, editingValueRef = _e.editingValueRef, setEditingValue = _e.setEditingValue, updateEditingValue = _e.updateEditingValue, commitEditingValue = _e.commitEditingValue, clearEditingValue = _e.clearEditingValue;
68
+ var _f = useState(false), isMobileDevice = _f[0], setIsMobileDevice = _f[1];
69
+ var _g = useState(false), canUseMobileNativeTimePicker = _g[0], setCanUseMobileNativeTimePicker = _g[1];
70
+ var _h = useTimePickerValue({ isInputFocused: isInputFocused, precision: precision, value: value, onValueChange: onValueChange }), editingValue = _h.editingValue, editingValueRef = _h.editingValueRef, setEditingValue = _h.setEditingValue, updateEditingValue = _h.updateEditingValue, commitEditingValue = _h.commitEditingValue, clearEditingValue = _h.clearEditingValue;
71
+ var resolvedSlots = useMemo(function () {
72
+ return (slots !== null && slots !== void 0 ? slots : DEFAULT_TIME_PICKER_SLOTS).map(function (slot) { return (__assign(__assign({}, slot), { disabled: Boolean(slot.disabled) || !isTimeValueInRange(slot.time, precision, minValue, maxValue) })); });
73
+ }, [maxValue, minValue, precision, slots]);
74
+ var popupMaxHeight = getTimePickerPopupMaxHeight(size, theme);
75
+ var normalizedValue = normalizeTimeValue(editingValue, precision);
76
+ var selectedSlotIndex = resolvedSlots.findIndex(function (slot) { return normalizeTimeValue(slot.time, precision) === normalizedValue; });
77
+ var canUseMobileDropdownTimePicker = dropdown && isMobileDevice && !canUseMobileNativeTimePicker;
65
78
  var displayValue = editingValue;
66
79
  if (isInputFocused) {
67
- displayValue = editingValue || getEmptyDisplayValue(precision);
80
+ displayValue = editingValue === EMPTY_VALUE ? getEmptyDisplayValue(precision) : editingValue;
68
81
  }
69
82
  else if (isTimeDisplayEmpty(editingValue)) {
70
- displayValue = '';
83
+ displayValue = EMPTY_VALUE;
71
84
  }
72
- var _f = useTimePickerSelection({
85
+ var _j = useTimePickerSelection({
73
86
  isInputFocused: isInputFocused,
74
87
  precision: precision,
75
88
  displayValue: displayValue,
76
- inputRef: inputRef,
77
- }), selectedSegment = _f.selectedSegment, selectSegment = _f.selectSegment;
78
- var popupMaxHeight = getTimePickerPopupMaxHeight(size, theme);
79
- var normalizedValue = normalizeTimeValue(editingValue || valueProp || '', precision);
80
- var selectedSlotIndex = resolvedSlots.findIndex(function (slot) { return normalizeSlotValue(slot.time, precision) === normalizedValue; });
89
+ inputRef: activeInputRef,
90
+ }), selectedSegment = _j.selectedSegment, selectSegment = _j.selectSegment;
91
+ var resetMouseInteractionState = useCallback(function () {
92
+ isMouseFocusRef.current = false;
93
+ isMouseDownOnFragmentRef.current = false;
94
+ mouseDownSegmentRef.current = null;
95
+ }, []);
81
96
  var normalizeCurrentSegmentIfNeeded = useCallback(function (segment) {
82
- var nextDisplayValue = commitTimeSegmentOnLeave(editingValue || getEmptyDisplayValue(precision), segment, precision);
97
+ var nextDisplayValue = commitTimeSegmentOnLeave(editingValue === EMPTY_VALUE ? getEmptyDisplayValue(precision) : editingValue, segment, precision);
83
98
  updateEditingValue(nextDisplayValue);
84
99
  }, [editingValue, precision, updateEditingValue]);
85
- var focusInput = useCallback(function () {
86
- var _a;
87
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
88
- }, []);
89
- var blurInput = useCallback(function () {
90
- var _a;
91
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
92
- }, []);
93
- var _g = useTimePickerDropdown({
100
+ var openNativeTimePicker = useCallback(function () {
101
+ var _a, _b;
102
+ if (!canUseMobileNativeTimePicker || disabled) {
103
+ return;
104
+ }
105
+ if (isIOS) {
106
+ (_a = nativeInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
107
+ }
108
+ else {
109
+ (_b = nativeInputRef.current) === null || _b === void 0 ? void 0 : _b.click();
110
+ }
111
+ }, [canUseMobileNativeTimePicker, disabled]);
112
+ var _k = useTimePickerDropdown({
94
113
  disabled: disabled,
95
114
  dropdown: dropdown,
96
115
  slots: resolvedSlots,
97
116
  selectedSlotIndex: selectedSlotIndex >= 0 ? selectedSlotIndex : null,
98
- }), isDropdownOpened = _g.isDropdownOpened, highlightedSlotIndex = _g.highlightedSlotIndex, openDropdown = _g.openDropdown, closeDropdown = _g.closeDropdown, resetHighlightedSlot = _g.resetHighlightedSlot, tryNavigateSlots = _g.tryNavigateSlots;
117
+ }), isDropdownOpened = _k.isDropdownOpened, highlightedSlotIndex = _k.highlightedSlotIndex, openDropdown = _k.openDropdown, closeDropdown = _k.closeDropdown, resetHighlightedSlot = _k.resetHighlightedSlot, tryNavigateSlots = _k.tryNavigateSlots;
118
+ useEffect(function () {
119
+ activeInputRef.current =
120
+ canUseMobileDropdownTimePicker && isDropdownOpened ? mobileInputRef.current : inputRef.current;
121
+ }, [canUseMobileDropdownTimePicker, isDropdownOpened]);
99
122
  var selectSlot = useCallback(function (slot) {
100
123
  if (slot.disabled) {
101
124
  return;
102
125
  }
103
- var nextValue = normalizeSlotValue(slot.time, precision);
126
+ var nextValue = normalizeTimeValue(slot.time, precision);
104
127
  setEditingValue(nextValue);
105
128
  onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(nextValue);
129
+ if (canUseMobileDropdownTimePicker) {
130
+ setIsInputFocused(false);
131
+ resetMouseInteractionState();
132
+ }
106
133
  closeDropdown();
107
- }, [closeDropdown, onValueChange, precision, setEditingValue]);
134
+ }, [
135
+ canUseMobileDropdownTimePicker,
136
+ closeDropdown,
137
+ onValueChange,
138
+ precision,
139
+ resetMouseInteractionState,
140
+ setEditingValue,
141
+ ]);
108
142
  var isSelectHighlightedSlot = useCallback(function () {
109
143
  if (highlightedSlotIndex === null) {
110
144
  return false;
@@ -116,6 +150,25 @@ export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
116
150
  selectSlot(slot);
117
151
  return true;
118
152
  }, [highlightedSlotIndex, resolvedSlots, selectSlot]);
153
+ var focusInput = useCallback(function () {
154
+ var _a;
155
+ (_a = activeInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
156
+ }, []);
157
+ var blurInput = useCallback(function () {
158
+ var _a;
159
+ (_a = activeInputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
160
+ }, []);
161
+ var blinkInput = useCallback(function () {
162
+ var _a;
163
+ (_a = activeInputRef.current) === null || _a === void 0 ? void 0 : _a.blink();
164
+ }, []);
165
+ useImperativeHandle(ref, function () { return ({
166
+ focus: focusInput,
167
+ blur: blurInput,
168
+ blink: blinkInput,
169
+ getNode: function () { var _a, _b; return (_b = (_a = activeInputRef.current) === null || _a === void 0 ? void 0 : _a.getNode()) !== null && _b !== void 0 ? _b : null; },
170
+ getRootNode: function () { return rootRef.current; },
171
+ }); }, [blinkInput, blurInput, focusInput]);
119
172
  useLayoutEffect(function () {
120
173
  if (!isDropdownOpened) {
121
174
  return;
@@ -129,13 +182,32 @@ export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
129
182
  scrollSelectedSlotIntoView(targetNode);
130
183
  }
131
184
  }, [highlightedSlotIndex, isDropdownOpened, selectedSlotIndex]);
132
- useImperativeHandle(ref, function () { return ({
133
- focus: focusInput,
134
- blur: blurInput,
135
- getNode: function () { var _a, _b; return (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.getNode()) !== null && _b !== void 0 ? _b : null; },
136
- getRootNode: function () { return rootRef.current; },
137
- }); }, [blurInput, focusInput]);
138
- var handleFocus = function (event) {
185
+ useEffect(function () {
186
+ setIsMobileDevice(Boolean(isMobile));
187
+ setCanUseMobileNativeTimePicker(useMobileNativeTimePicker && Boolean(isMobile));
188
+ }, [useMobileNativeTimePicker]);
189
+ var handleCloseMobileDropdown = useCallback(function () {
190
+ setIsInputFocused(false);
191
+ resetMouseInteractionState();
192
+ if (isTimeDisplayEmpty(editingValueRef.current)) {
193
+ clearEditingValue();
194
+ }
195
+ else {
196
+ commitEditingValue();
197
+ }
198
+ closeDropdown();
199
+ }, [clearEditingValue, closeDropdown, commitEditingValue, editingValueRef, resetMouseInteractionState]);
200
+ var handleFocusBySource = function (event, isMobilePopupInput) {
201
+ if (canUseMobileNativeTimePicker) {
202
+ openNativeTimePicker();
203
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
204
+ return;
205
+ }
206
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
207
+ openDropdown();
208
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
209
+ return;
210
+ }
139
211
  setIsInputFocused(true);
140
212
  openDropdown();
141
213
  if (isMouseDownOnFragmentRef.current && !isInputFocused) {
@@ -151,11 +223,23 @@ export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
151
223
  }
152
224
  onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
153
225
  };
154
- var handleBlur = function (event) {
226
+ var handleFocus = function (event) { return handleFocusBySource(event, false); };
227
+ var handleMobileFocus = function (event) { return handleFocusBySource(event, true); };
228
+ var handleBlurBySource = function (event, isMobilePopupInput) {
229
+ if (canUseMobileNativeTimePicker) {
230
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
231
+ return;
232
+ }
233
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
234
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
235
+ return;
236
+ }
155
237
  setIsInputFocused(false);
156
- isMouseFocusRef.current = false;
157
- isMouseDownOnFragmentRef.current = false;
158
- mouseDownSegmentRef.current = null;
238
+ resetMouseInteractionState();
239
+ if (isMobilePopupInput) {
240
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
241
+ return;
242
+ }
159
243
  closeDropdown();
160
244
  if (isTimeDisplayEmpty(editingValueRef.current)) {
161
245
  clearEditingValue();
@@ -165,13 +249,31 @@ export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
165
249
  commitEditingValue();
166
250
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
167
251
  };
168
- var handleClick = function (event) {
252
+ var handleBlur = function (event) { return handleBlurBySource(event, false); };
253
+ var handleMobileBlur = function (event) { return handleBlurBySource(event, true); };
254
+ var handleClickBySource = function (event, isMobilePopupInput) {
255
+ if (canUseMobileNativeTimePicker) {
256
+ openNativeTimePicker();
257
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
258
+ return;
259
+ }
260
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
261
+ openDropdown();
262
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
263
+ return;
264
+ }
169
265
  openDropdown();
170
266
  onClick === null || onClick === void 0 ? void 0 : onClick(event);
171
267
  };
172
- var handleMouseDownCapture = function (event) {
268
+ var handleClick = function (event) { return handleClickBySource(event, false); };
269
+ var handleMobileClick = function (event) { return handleClickBySource(event, true); };
270
+ var handleMouseDownCaptureBySource = function (event, isMobilePopupInput) {
173
271
  var _a, _b;
174
- var segment = (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.getSegment(event.target)) !== null && _b !== void 0 ? _b : null;
272
+ if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {
273
+ return;
274
+ }
275
+ var currentInputRef = isMobilePopupInput ? mobileInputRef : inputRef;
276
+ var segment = (_b = (_a = currentInputRef.current) === null || _a === void 0 ? void 0 : _a.getSegment(event.target)) !== null && _b !== void 0 ? _b : null;
175
277
  var isFragment = segment !== null;
176
278
  if (isInputFocused && !isFragment) {
177
279
  event.preventDefault();
@@ -180,7 +282,21 @@ export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
180
282
  isMouseDownOnFragmentRef.current = isFragment;
181
283
  mouseDownSegmentRef.current = segment;
182
284
  };
183
- var handleSelectSegmentByMouse = function (segment) {
285
+ var handleMouseDownCapture = function (event) {
286
+ return handleMouseDownCaptureBySource(event, false);
287
+ };
288
+ var handleMobileMouseDownCapture = function (event) {
289
+ return handleMouseDownCaptureBySource(event, true);
290
+ };
291
+ var handleSelectSegmentByMouseBySource = function (segment, isMobilePopupInput) {
292
+ if (canUseMobileNativeTimePicker) {
293
+ openNativeTimePicker();
294
+ return;
295
+ }
296
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
297
+ openDropdown();
298
+ return;
299
+ }
184
300
  openDropdown();
185
301
  if (disabled) {
186
302
  return;
@@ -189,27 +305,27 @@ export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
189
305
  normalizeCurrentSegmentIfNeeded(selectedSegment);
190
306
  selectSegment(segment);
191
307
  }
192
- isMouseFocusRef.current = false;
193
- isMouseDownOnFragmentRef.current = false;
194
- mouseDownSegmentRef.current = null;
308
+ resetMouseInteractionState();
195
309
  };
196
- var handleRightContentMouseDown = function (event) {
197
- if (disabled) {
198
- return;
199
- }
200
- event.preventDefault();
201
- openDropdown();
202
- focusInput();
203
- };
204
- var handleKeyDown = function (event) {
205
- var _a, _b, _c, _d, _e, _f;
310
+ var handleSelectSegmentByMouse = function (segment) { return handleSelectSegmentByMouseBySource(segment, false); };
311
+ var handleMobileSelectSegmentByMouse = function (segment) { return handleSelectSegmentByMouseBySource(segment, true); };
312
+ var handleKeyDownBySource = function (event, isMobilePopupInput) {
313
+ var _a, _b, _c, _d, _e, _f, _g;
206
314
  onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
207
315
  if (event.defaultPrevented || disabled) {
208
316
  return;
209
317
  }
318
+ if (canUseMobileNativeTimePicker) {
319
+ openNativeTimePicker();
320
+ return;
321
+ }
322
+ if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {
323
+ openDropdown();
324
+ return;
325
+ }
210
326
  if (isShortcutSelectAll(event)) {
211
327
  event.preventDefault();
212
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectAll();
328
+ (_a = activeInputRef.current) === null || _a === void 0 ? void 0 : _a.selectAll();
213
329
  return;
214
330
  }
215
331
  if (event.altKey || event.ctrlKey || event.metaKey) {
@@ -217,8 +333,8 @@ export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
217
333
  }
218
334
  var currentDisplayValue = displayValue;
219
335
  var currentSegment = selectedSegment;
220
- var isAllSelected = (_c = (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.isAllSelected()) !== null && _c !== void 0 ? _c : false;
221
- if (isAllSelected && (event.key === 'Backspace' || event.key === 'Delete')) {
336
+ var isAllSelected = (_c = (_b = activeInputRef.current) === null || _b === void 0 ? void 0 : _b.isAllSelected()) !== null && _c !== void 0 ? _c : false;
337
+ if (isAllSelected && (isKeyBackspace(event) || isKeyDelete(event))) {
222
338
  event.preventDefault();
223
339
  updateEditingValue(getEmptyDisplayValue(precision));
224
340
  selectSegment('hours');
@@ -229,123 +345,134 @@ export var TimePicker = forwardRefAndName('TimePicker', function (props, ref) {
229
345
  resetHighlightedSlot();
230
346
  var result = formatDigitToTimeSegment(currentDisplayValue, currentSegment, event.key, precision);
231
347
  if (result.shouldBlink) {
232
- (_d = inputRef.current) === null || _d === void 0 ? void 0 : _d.blink();
348
+ (_d = activeInputRef.current) === null || _d === void 0 ? void 0 : _d.blink();
233
349
  return;
234
350
  }
235
351
  updateEditingValue(result.nextValue);
236
352
  selectSegment(result.selectedSegment);
237
353
  return;
238
354
  }
239
- switch (event.key) {
240
- case 'ArrowLeft': {
355
+ if (isKeyArrowLeft(event)) {
356
+ event.preventDefault();
357
+ normalizeCurrentSegmentIfNeeded(currentSegment);
358
+ selectSegment((_e = getPreviousTimeSegment(currentSegment)) !== null && _e !== void 0 ? _e : currentSegment);
359
+ return;
360
+ }
361
+ if (isModShift(isKeyTab)(event)) {
362
+ var previousSegment = getPreviousTimeSegment(currentSegment);
363
+ if (previousSegment) {
241
364
  event.preventDefault();
242
365
  normalizeCurrentSegmentIfNeeded(currentSegment);
243
- selectSegment((_e = getPreviousTimeSegment(currentSegment)) !== null && _e !== void 0 ? _e : currentSegment);
244
- return;
366
+ selectSegment(previousSegment);
245
367
  }
246
- case 'ArrowRight': {
368
+ return;
369
+ }
370
+ if (isKeyArrowRight(event)) {
371
+ event.preventDefault();
372
+ normalizeCurrentSegmentIfNeeded(currentSegment);
373
+ selectSegment((_f = getNextTimeSegment(currentSegment, precision)) !== null && _f !== void 0 ? _f : currentSegment);
374
+ return;
375
+ }
376
+ if (isKeyTab(event)) {
377
+ var nextSegment = getNextTimeSegment(currentSegment, precision);
378
+ if (nextSegment) {
247
379
  event.preventDefault();
248
380
  normalizeCurrentSegmentIfNeeded(currentSegment);
249
- selectSegment((_f = getNextTimeSegment(currentSegment, precision)) !== null && _f !== void 0 ? _f : currentSegment);
250
- return;
381
+ selectSegment(nextSegment);
251
382
  }
252
- case 'ArrowUp':
253
- case 'ArrowDown': {
254
- event.preventDefault();
255
- var slotStep = event.key === 'ArrowUp' ? -1 : 1;
256
- if (tryNavigateSlots(slotStep)) {
257
- return;
258
- }
259
- var step = event.key === 'ArrowUp' ? 1 : -1;
260
- updateEditingValue(shiftTimeSegmentValue(currentDisplayValue, currentSegment, step, precision));
261
- selectSegment(currentSegment);
383
+ return;
384
+ }
385
+ if (isKeyArrowUp(event) || isKeyArrowDown(event)) {
386
+ event.preventDefault();
387
+ var slotStep = isKeyArrowUp(event) ? -1 : 1;
388
+ if (tryNavigateSlots(slotStep)) {
262
389
  return;
263
390
  }
264
- case 'Backspace': {
265
- event.preventDefault();
266
- var nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, currentSegment, precision);
267
- var nextSegment = currentSegment;
268
- if (nextDisplayValue === currentDisplayValue) {
269
- var previousSegment = getPreviousTimeSegment(currentSegment);
270
- if (previousSegment) {
271
- nextSegment = previousSegment;
272
- nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, previousSegment, precision);
273
- }
391
+ var step = isKeyArrowUp(event) ? 1 : -1;
392
+ updateEditingValue(shiftTimeSegmentValue(currentDisplayValue, currentSegment, step, precision));
393
+ selectSegment(currentSegment);
394
+ return;
395
+ }
396
+ if (isKeyBackspace(event)) {
397
+ event.preventDefault();
398
+ var nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, currentSegment, precision);
399
+ var nextSegment = currentSegment;
400
+ if (nextDisplayValue === currentDisplayValue) {
401
+ var previousSegment = getPreviousTimeSegment(currentSegment);
402
+ if (previousSegment) {
403
+ nextSegment = previousSegment;
404
+ nextDisplayValue = deleteTimeSegmentDigit(currentDisplayValue, previousSegment, precision);
274
405
  }
275
- updateEditingValue(nextDisplayValue);
276
- selectSegment(nextSegment);
277
- return;
278
406
  }
279
- case 'Delete': {
407
+ updateEditingValue(nextDisplayValue);
408
+ selectSegment(nextSegment);
409
+ return;
410
+ }
411
+ if (isKeyDelete(event)) {
412
+ event.preventDefault();
413
+ updateEditingValue(clearTimeSegment(currentDisplayValue, currentSegment, precision));
414
+ selectSegment(currentSegment);
415
+ return;
416
+ }
417
+ if (isKeyEnter(event)) {
418
+ if (isSelectHighlightedSlot()) {
280
419
  event.preventDefault();
281
- updateEditingValue(clearTimeSegment(currentDisplayValue, currentSegment, precision));
282
- selectSegment(currentSegment);
283
- return;
284
420
  }
285
- case 'Enter': {
286
- if (isSelectHighlightedSlot()) {
287
- event.preventDefault();
288
- }
289
- return;
421
+ return;
422
+ }
423
+ if (isKeySpace(event)) {
424
+ event.preventDefault();
425
+ var nextSegment = getNextTimeSegment(currentSegment, precision);
426
+ var nextDisplayValue = commitTimeSegmentOnLeave(currentDisplayValue, currentSegment, precision);
427
+ updateEditingValue(nextDisplayValue);
428
+ if (nextSegment) {
429
+ selectSegment(nextSegment);
290
430
  }
291
- case ' ': {
292
- event.preventDefault();
293
- var nextSegment = getNextTimeSegment(currentSegment, precision);
294
- var nextDisplayValue = commitTimeSegmentOnLeave(currentDisplayValue, currentSegment, precision);
295
- updateEditingValue(nextDisplayValue);
296
- if (nextSegment) {
297
- selectSegment(nextSegment);
298
- }
299
- else {
300
- selectSegment(currentSegment);
301
- }
302
- return;
431
+ else {
432
+ selectSegment(currentSegment);
303
433
  }
304
- default:
305
- return;
434
+ return;
435
+ }
436
+ if (isKeyChar(event)) {
437
+ (_g = activeInputRef.current) === null || _g === void 0 ? void 0 : _g.blink();
306
438
  }
307
439
  };
308
- var handlePaste = function (event) {
309
- var _a, _b, _c;
440
+ var handleKeyDown = function (event) { return handleKeyDownBySource(event, false); };
441
+ var handleMobileKeyDown = function (event) { return handleKeyDownBySource(event, true); };
442
+ var handlePasteBySource = function (event, isMobilePopupInput) {
443
+ var _a, _b;
310
444
  onPaste === null || onPaste === void 0 ? void 0 : onPaste(event);
311
445
  if (event.defaultPrevented || disabled) {
312
446
  return;
313
447
  }
314
- var pastedValue = (_b = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text')) !== null && _b !== void 0 ? _b : '';
448
+ if (canUseMobileNativeTimePicker || (canUseMobileDropdownTimePicker && !isMobilePopupInput)) {
449
+ return;
450
+ }
451
+ var pastedValue = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');
315
452
  var nextDisplayValue = parsePastedTimeValue(pastedValue, precision);
316
453
  event.preventDefault();
317
454
  if (isTimeDisplayEmpty(nextDisplayValue)) {
318
- (_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.blink();
455
+ (_b = activeInputRef.current) === null || _b === void 0 ? void 0 : _b.blink();
319
456
  return;
320
457
  }
321
458
  updateEditingValue(nextDisplayValue);
322
459
  selectSegment('hours');
323
460
  };
461
+ var handlePaste = function (event) { return handlePasteBySource(event, false); };
462
+ var handleMobilePaste = function (event) { return handlePasteBySource(event, true); };
463
+ var handleNativeValueChange = useCallback(function (nextValue) {
464
+ setEditingValue(nextValue);
465
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(nextValue);
466
+ }, [onValueChange, setEditingValue]);
324
467
  return (React.createElement(CommonWrapper, __assign({}, props),
325
468
  React.createElement("span", { ref: rootRef, className: styles.root(), "data-tid": TimePickerDataTids.root },
326
- React.createElement(TimeInput, __assign({}, inputProps, { "data-tid": TimePickerDataTids.input, ref: inputRef, disabled: disabled, size: size, precision: precision, rightContent: rightContent, value: displayValue, onClick: handleClick, onBlur: handleBlur, onFocus: handleFocus, onRightContentMouseDown: handleRightContentMouseDown, onMouseDownCapture: handleMouseDownCapture, onKeyDown: handleKeyDown, onSelectSegment: handleSelectSegmentByMouse, onPaste: handlePaste })),
327
- dropdown && isDropdownOpened && rootRef.current && (React.createElement(Popup, { opened: true, hasShadow: true, "data-tid": TimePickerDataTids.popup, anchorElement: rootRef.current, priority: ZIndex.priorities.PopupMenu, positions: getMenuPositions(menuPos, menuAlign), margin: parseInt(theme.menuOffsetY) - 1 },
328
- React.createElement("div", { className: styles.popup(theme), onMouseDown: function (event) { return event.preventDefault(); } },
329
- React.createElement(Menu, { hasMargin: false, width: 'auto', maxHeight: popupMaxHeight }, resolvedSlots.map(function (slot, index) {
330
- var normalizedSlot = normalizeSlotValue(slot.time, precision);
331
- var state;
332
- if (highlightedSlotIndex === index) {
333
- state = 'hover';
334
- }
335
- else if (normalizedSlot === normalizedValue) {
336
- state = 'selected';
337
- }
338
- return (React.createElement(MenuItem, { key: "".concat(slot.time, "-").concat(index), disabled: slot.disabled, size: size, state: state, onClick: function () { return selectSlot(slot); } },
339
- React.createElement("span", { ref: function (node) {
340
- if (node) {
341
- slotRefs.current.set(index, node);
342
- }
343
- else {
344
- slotRefs.current.delete(index);
345
- }
346
- }, "data-tid": TimePickerDataTids.slot, className: styles.slot() },
347
- React.createElement("span", { className: styles.slotTime() }, normalizedSlot),
348
- slot.info && React.createElement("span", { className: styles.slotInfo(theme) }, slot.info))));
349
- }))))))));
469
+ React.createElement(TimeInput, __assign({}, inputProps, { "data-tid": TimePickerDataTids.input, ref: inputRef, disabled: disabled, dropdown: dropdown, size: size, precision: precision, value: displayValue, onClick: handleClick, onBlur: handleBlur, onFocus: handleFocus, onMouseDownCapture: handleMouseDownCapture, onKeyDown: handleKeyDown, onSelectSegment: handleSelectSegmentByMouse, onPaste: handlePaste })),
470
+ canUseMobileNativeTimePicker && (React.createElement(NativeTimeInput, { "data-tid": TimePickerDataTids.nativeInput, disabled: disabled, ref: nativeInputRef, precision: precision, minValue: minValue, maxValue: maxValue, value: editingValue, onValueChange: handleNativeValueChange })),
471
+ canUseMobileDropdownTimePicker && isDropdownOpened && (React.createElement(TimePickerMobilePopup, { opened: isDropdownOpened, value: displayValue, inputRef: mobileInputRef, disabled: disabled, precision: precision, size: size, resolvedSlots: resolvedSlots, highlightedSlotIndex: highlightedSlotIndex, normalizedValue: normalizedValue, slotRefs: slotRefs, error: props.error, warning: props.warning, "aria-describedby": props['aria-describedby'], "aria-label": props['aria-label'], onFocus: handleMobileFocus, onBlur: handleMobileBlur, onClick: handleMobileClick, onKeyDown: handleMobileKeyDown, onMouseDownCapture: handleMobileMouseDownCapture, onPaste: handleMobilePaste, onSelectSegment: handleMobileSelectSegmentByMouse, onSelectSlot: selectSlot, onCloseRequest: handleCloseMobileDropdown })),
472
+ dropdown &&
473
+ !canUseMobileNativeTimePicker &&
474
+ !canUseMobileDropdownTimePicker &&
475
+ isDropdownOpened &&
476
+ rootRef.current && (React.createElement(TimePickerPopup, { anchorElement: rootRef.current, menuPos: menuPos, menuAlign: menuAlign, menuWidth: menuWidth, popupMaxHeight: popupMaxHeight, precision: precision, size: size, resolvedSlots: resolvedSlots, highlightedSlotIndex: highlightedSlotIndex, normalizedValue: normalizedValue, slotRefs: slotRefs, onSelectSlot: selectSlot })))));
350
477
  });
351
478
  //# sourceMappingURL=TimePicker.js.map