@skbkontur/react-ui 6.1.6 → 6.1.7-1c902.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/components/Checkbox/Checkbox.d.ts +5 -0
  2. package/components/Checkbox/Checkbox.js +42 -21
  3. package/components/Checkbox/Checkbox.js.map +1 -1
  4. package/components/Checkbox/Checkbox.mixins.d.ts +2 -0
  5. package/components/Checkbox/Checkbox.mixins.js +6 -0
  6. package/components/Checkbox/Checkbox.mixins.js.map +1 -1
  7. package/components/Checkbox/Checkbox.styles.d.ts +7 -0
  8. package/components/Checkbox/Checkbox.styles.js +23 -2
  9. package/components/Checkbox/Checkbox.styles.js.map +1 -1
  10. package/components/Group/Group.js +3 -2
  11. package/components/Group/Group.js.map +1 -1
  12. package/components/Input/Input.d.ts +1 -1
  13. package/components/Input/Input.js.map +1 -1
  14. package/components/MenuItem/MenuItem.js +1 -0
  15. package/components/MenuItem/MenuItem.js.map +1 -1
  16. package/components/MenuItem/MenuItem.styles.d.ts +1 -0
  17. package/components/MenuItem/MenuItem.styles.js +10 -7
  18. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  19. package/components/Radio/Radio.d.ts +4 -0
  20. package/components/Radio/Radio.js +20 -1
  21. package/components/Radio/Radio.js.map +1 -1
  22. package/components/Radio/Radio.mixins.d.ts +2 -0
  23. package/components/Radio/Radio.mixins.js +6 -0
  24. package/components/Radio/Radio.mixins.js.map +1 -1
  25. package/components/Radio/Radio.styles.d.ts +6 -0
  26. package/components/Radio/Radio.styles.js +22 -4
  27. package/components/Radio/Radio.styles.js.map +1 -1
  28. package/components/TimePicker/TimeClockIcon.d.ts +3 -0
  29. package/components/TimePicker/TimeClockIcon.js +11 -0
  30. package/components/TimePicker/TimeClockIcon.js.map +1 -0
  31. package/components/TimePicker/TimePicker.d.ts +137 -0
  32. package/components/TimePicker/TimePicker.js +648 -0
  33. package/components/TimePicker/TimePicker.js.map +1 -0
  34. package/components/TimePicker/TimePicker.styles.d.ts +11 -0
  35. package/components/TimePicker/TimePicker.styles.js +36 -0
  36. package/components/TimePicker/TimePicker.styles.js.map +1 -0
  37. package/components/TimePicker/TimePickerItems.d.ts +20 -0
  38. package/components/TimePicker/TimePickerItems.js +108 -0
  39. package/components/TimePicker/TimePickerItems.js.map +1 -0
  40. package/components/TimePicker/TimePickerMobilePopup.d.ts +45 -0
  41. package/components/TimePicker/TimePickerMobilePopup.js +45 -0
  42. package/components/TimePicker/TimePickerMobilePopup.js.map +1 -0
  43. package/components/TimePicker/TimePickerPopup.d.ts +23 -0
  44. package/components/TimePicker/TimePickerPopup.js +18 -0
  45. package/components/TimePicker/TimePickerPopup.js.map +1 -0
  46. package/components/TimePicker/helpers/TimePicker.constants.d.ts +24 -0
  47. package/components/TimePicker/helpers/TimePicker.constants.js +33 -0
  48. package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -0
  49. package/components/TimePicker/helpers/TimePicker.editing.d.ts +23 -0
  50. package/components/TimePicker/helpers/TimePicker.editing.js +101 -0
  51. package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -0
  52. package/components/TimePicker/helpers/TimePicker.layout.d.ts +6 -0
  53. package/components/TimePicker/helpers/TimePicker.layout.js +49 -0
  54. package/components/TimePicker/helpers/TimePicker.layout.js.map +1 -0
  55. package/components/TimePicker/helpers/TimePicker.selection.d.ts +5 -0
  56. package/components/TimePicker/helpers/TimePicker.selection.js +23 -0
  57. package/components/TimePicker/helpers/TimePicker.selection.js.map +1 -0
  58. package/components/TimePicker/helpers/TimePicker.shared.d.ts +82 -0
  59. package/components/TimePicker/helpers/TimePicker.shared.js +94 -0
  60. package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -0
  61. package/components/TimePicker/helpers/TimePicker.value.d.ts +59 -0
  62. package/components/TimePicker/helpers/TimePicker.value.js +175 -0
  63. package/components/TimePicker/helpers/TimePicker.value.js.map +1 -0
  64. package/components/TimePicker/helpers/scrollSelectedItemIntoView.d.ts +4 -0
  65. package/components/TimePicker/helpers/scrollSelectedItemIntoView.js +24 -0
  66. package/components/TimePicker/helpers/scrollSelectedItemIntoView.js.map +1 -0
  67. package/components/TimePicker/helpers/validateTimePicker.d.ts +8 -0
  68. package/components/TimePicker/helpers/validateTimePicker.js +17 -0
  69. package/components/TimePicker/helpers/validateTimePicker.js.map +1 -0
  70. package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +18 -0
  71. package/components/TimePicker/hooks/useTimePickerDropdown.js +85 -0
  72. package/components/TimePicker/hooks/useTimePickerDropdown.js.map +1 -0
  73. package/components/TimePicker/hooks/useTimePickerSelection.d.ts +18 -0
  74. package/components/TimePicker/hooks/useTimePickerSelection.js +66 -0
  75. package/components/TimePicker/hooks/useTimePickerSelection.js.map +1 -0
  76. package/components/TimePicker/hooks/useTimePickerValue.d.ts +27 -0
  77. package/components/TimePicker/hooks/useTimePickerValue.js +76 -0
  78. package/components/TimePicker/hooks/useTimePickerValue.js.map +1 -0
  79. package/components/TimePicker/index.d.ts +2 -0
  80. package/components/TimePicker/index.js +2 -0
  81. package/components/TimePicker/index.js.map +1 -0
  82. package/components/TimePicker/locale/index.d.ts +4 -0
  83. package/components/TimePicker/locale/index.js +9 -0
  84. package/components/TimePicker/locale/index.js.map +1 -0
  85. package/components/TimePicker/locale/locales/en.d.ts +2 -0
  86. package/components/TimePicker/locale/locales/en.js +5 -0
  87. package/components/TimePicker/locale/locales/en.js.map +1 -0
  88. package/components/TimePicker/locale/locales/ru.d.ts +2 -0
  89. package/components/TimePicker/locale/locales/ru.js +5 -0
  90. package/components/TimePicker/locale/locales/ru.js.map +1 -0
  91. package/components/TimePicker/locale/types.d.ts +4 -0
  92. package/components/TimePicker/locale/types.js +2 -0
  93. package/components/TimePicker/locale/types.js.map +1 -0
  94. package/components/Toggle/Toggle.d.ts +5 -0
  95. package/components/Toggle/Toggle.js +46 -22
  96. package/components/Toggle/Toggle.js.map +1 -1
  97. package/components/Toggle/Toggle.mixins.d.ts +2 -0
  98. package/components/Toggle/Toggle.mixins.js +6 -0
  99. package/components/Toggle/Toggle.mixins.js.map +1 -1
  100. package/components/Toggle/Toggle.styles.d.ts +9 -0
  101. package/components/Toggle/Toggle.styles.js +29 -2
  102. package/components/Toggle/Toggle.styles.js.map +1 -1
  103. package/index.d.ts +1 -0
  104. package/index.js +1 -0
  105. package/index.js.map +1 -1
  106. package/internal/NativeTimeInput/NativeTimeInput.d.ts +16 -0
  107. package/internal/NativeTimeInput/NativeTimeInput.js +25 -0
  108. package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -0
  109. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -0
  110. package/internal/NativeTimeInput/NativeTimeInput.styles.js +15 -0
  111. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -0
  112. package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +7 -0
  113. package/internal/NativeTimeInput/NativeTimeInput.utils.js +28 -0
  114. package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +1 -0
  115. package/internal/NativeTimeInput/index.d.ts +1 -0
  116. package/internal/NativeTimeInput/index.js +2 -0
  117. package/internal/NativeTimeInput/index.js.map +1 -0
  118. package/internal/TimeInput/TimeFragments.d.ts +15 -0
  119. package/internal/TimeInput/TimeFragments.js +72 -0
  120. package/internal/TimeInput/TimeFragments.js.map +1 -0
  121. package/internal/TimeInput/TimeFragments.styles.d.ts +12 -0
  122. package/internal/TimeInput/TimeFragments.styles.js +43 -0
  123. package/internal/TimeInput/TimeFragments.styles.js.map +1 -0
  124. package/internal/TimeInput/TimeInput.d.ts +22 -0
  125. package/internal/TimeInput/TimeInput.js +103 -0
  126. package/internal/TimeInput/TimeInput.js.map +1 -0
  127. package/internal/TimeInput/TimeInput.styles.d.ts +6 -0
  128. package/internal/TimeInput/TimeInput.styles.js +21 -0
  129. package/internal/TimeInput/TimeInput.styles.js.map +1 -0
  130. package/internal/TimeInput/index.d.ts +1 -0
  131. package/internal/TimeInput/index.js +2 -0
  132. package/internal/TimeInput/index.js.map +1 -0
  133. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +2 -0
  134. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +20 -0
  135. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +1 -0
  136. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +2 -0
  137. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +20 -0
  138. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +1 -0
  139. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +2 -0
  140. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +20 -0
  141. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +1 -0
  142. package/internal/themes/BasicTheme.d.ts +65 -0
  143. package/internal/themes/BasicTheme.js +253 -0
  144. package/internal/themes/BasicTheme.js.map +1 -1
  145. package/internal/themes/DarkTheme6_0.js +1 -0
  146. package/internal/themes/DarkTheme6_0.js.map +1 -1
  147. package/lib/locale/types.d.ts +2 -0
  148. package/lib/locale/types.js.map +1 -1
  149. package/lib/utils.d.ts +2 -0
  150. package/lib/utils.js +1 -0
  151. package/lib/utils.js.map +1 -1
  152. package/package.json +9 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker.js","sourceRoot":"","sources":["TimePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { AriaAttributes, HTMLAttributes, ReactNode } from 'react';\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon.js';\nimport type { NativeTimeInputRef } from '../../internal/NativeTimeInput/index.js';\nimport { NativeTimeInput } from '../../internal/NativeTimeInput/index.js';\nimport type { TimeInputRef } from '../../internal/TimeInput/index.js';\nimport { TimeInput } from '../../internal/TimeInput/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 { useLocaleForControl } from '../../lib/locale/useLocaleForControl.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, type NoInfer } from '../../lib/utils.js';\nimport type { MenuItemState } from '../MenuItem/index.js';\nimport { scrollSelectedItemIntoView } from './helpers/scrollSelectedItemIntoView.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 {\n isTimeItem,\n isTimeItemObject,\n isTimeMenuItem,\n type TimeFormat,\n type TimeItemValue,\n type TimePickerExtendedItem,\n type TimePickerSource,\n type TimePickerValue,\n type TimePickerValueToItem,\n type TimeSegment,\n timeValueToItem,\n} from './helpers/TimePicker.shared.js';\nimport {\n dedupeTimeItems,\n filterTimeItems,\n getEmptyDisplayValue,\n getTimeFilterQuery,\n getTimeValueString,\n isTimeDisplayEmpty,\n normalizeTimeValue,\n parsePastedTimeValue,\n replaceTimeSegment,\n resolveTimeItems,\n} from './helpers/TimePicker.value.js';\nimport { validateTimePicker } from './helpers/validateTimePicker.js';\nimport { useTimePickerDropdown } from './hooks/useTimePickerDropdown.js';\nimport { useTimePickerSelection } from './hooks/useTimePickerSelection.js';\nimport { useTimePickerValue } from './hooks/useTimePickerValue.js';\nimport { TimePickerLocaleHelper } from './locale/index.js';\nimport { getStyles } from './TimePicker.styles.js';\nimport { TimePickerMobilePopup } from './TimePickerMobilePopup.js';\nimport { TimePickerPopup } from './TimePickerPopup.js';\n\nexport interface TimePickerProps<T extends TimeItemValue = string>\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Устанавливает формат времени @default HH:mm */\n format?: TimeFormat;\n /** Задает источник элементов выпадающего списка.\n * Можно передать массив или функцию, которая получает текущий запрос и возвращает массив либо Promise с массивом.\n * Элемент задается строкой со временем — `'09:00'` — или объектом `{ value, label?, disabled? }`\n * с любыми дополнительными полями. Выбранный элемент приходит в `onValueChange` в той же форме.\n * Кроме значений времени можно передать React-элементы или функции, возвращающие React-элемент:\n * например, `MenuHeader`, `MenuFooter`, `MenuSeparator` или `MenuItem`.\n * Такие элементы отображаются в меню, но не участвуют в фильтрации и выборе значения.\n * Полученные элементы всегда фильтруются компонентом одинаково для массива и функции:\n * введенные цифры сегмента сравниваются с началом соответствующего сегмента элемента.\n * В выпадающем списке не может быть двух элементов с одинаковым временем:\n * из элементов с одинаковым временем компонент оставляет первый.\n * Пока Promise не разрешился и предыдущих результатов нет, в выпадающем меню показывается спиннер загрузки.\n * Если предыдущие результаты есть, подходящие элементы остаются видимыми до прихода новых,\n * а индикация загрузки показывается в правой иконке поля.\n * Замена функции не перезапрашивает уже открытый список: актуальная функция используется при следующем запросе. */\n source?: TimePickerSource<T>;\n /** Отрисовывает значение времени в выпадающем списке. Не применяется к React-элементам из `source`. */\n renderItem?: (item: T, state: MenuItemState) => ReactNode;\n /** Задает нижнюю границу времени. Элементы за границей становятся заблокированными. */\n minTime?: string;\n /** Задает верхнюю границу времени. Элементы за границей становятся заблокированными. */\n maxTime?: string;\n /** Задает значение поля: элемент того же типа, что в `source`, либо строку в формате `HH:mm[:ss]`.\n * Из элемента-объекта используется только время `value`, `label` в поле не отображается.\n * Пустое значение можно передать как `''`, `null` или `undefined`. */\n value?: TimePickerValue<T>;\n /** Преобразует время в элемент.\n * Применяется ко временам, которые пользователь не выбрал из `source`:\n * ручной ввод, изменение стрелками, вставка из буфера, нативный пикер.\n * По умолчанию компонент повторяет форму элементов `source` и `value`:\n * для строк отдает строку, для объектов — `{ value }`.\n * Задавайте этот проп, если элементы содержат поля, кроме `value`, `label` и `disabled`.\n * @default (value) => value | ({ value }) */\n valueToItem?: TimePickerValueToItem<T>;\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 * @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n /** Задает функцию, которая вызывается при нажатии на контрол. */\n onClick?(event: React.MouseEvent<HTMLElement>): void;\n /**\n * Событие изменения значения `value`.\n * Вызывается при коммите значения: потере фокуса, нажатии Enter, выборе элемента из списка\n * или изменении в нативном пикере.\n * Первым аргументом приходит элемент в той же форме, в которой элементы переданы в `source`:\n * при выборе из выпадающего списка — тот же элемент, в остальных случаях — результат `valueToItem`,\n * а при пустом значении — `null`.\n * Вторым аргументом приходит полностью нормализованное время в формате `HH:mm[:ss]` или пустая строка.\n * Тип элемента выводится из `source` и `value`, но не из этого обработчика,\n * иначе `onValueChange={setItem}` сузил бы его до `TimeItem`.\n */\n onValueChange?(item: NoInfer<T> | null, value: string): void;\n /**\n * Событие изменения значения в процессе ввода.\n * Значение частично нормализуется по сегментам, например `1` => `01`, незаполненный хвост отбрасывается.\n * Промежуточное значение может не соответствовать полной форме `HH:mm[:ss]`, поэтому тип — произвольная строка.\n */\n onInputValueChange?(value: string): void;\n /**\n * Событие некорректного ввода: пользователь ввел или вставил значение, которое не может быть временем.\n * Вызывается с нажатой клавишей — например `а` или `,` — либо со значением из буфера,\n * из которого не получилось собрать время.\n * Значение вне диапазона `minTime`/`maxTime` некорректным вводом не считается,\n * его можно проверить через `TimePicker.validate`.\n * Вторым аргументом передается метод вспыхивания рамки поля.\n * Если обработчик не задан, поле вспыхивает само.\n */\n onUnexpectedInput?(value: string, blink: () => void): 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 getRootNode(): HTMLElement | null;\n}\n\nexport type TimePicker = TimePickerRef;\n\ninterface TimePickerComponent {\n <T extends TimeItemValue = string>(\n props: TimePickerProps<T> & React.RefAttributes<TimePickerRef>,\n ): React.ReactElement | null;\n displayName?: string;\n __KONTUR_REACT_UI__: string;\n /** Проверяет, что значение полностью заполнено, соответствует формату и попадает в диапазон `minTime`/`maxTime`. */\n validate: typeof validateTimePicker;\n}\n\n/** Поле с временем помогает пользователю быстро и удобно указать время в правильном формате.\n * В поле можно ввести время с клавиатуры либо выбрать из выпадающего списка,\n * передав массив или функцию в проп `source`.\n */\nexport const TimePicker = Object.assign(\n forwardRefAndName<TimePickerRef, TimePickerProps<TimeItemValue>>('TimePicker', (props, ref) => {\n const {\n disabled,\n useMobileNativeTimePicker = false,\n format = 'HH:mm',\n size = 'small',\n source,\n renderItem,\n menuPos,\n menuAlign,\n menuWidth,\n minTime,\n maxTime,\n rightIcon,\n suffix,\n corners,\n value,\n valueToItem,\n onValueChange,\n onInputValueChange,\n onUnexpectedInput,\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 const locale = useLocaleForControl('TimePicker', TimePickerLocaleHelper);\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 itemRefs = useRef(new Map<number, HTMLSpanElement>());\n const isMouseFocusRef = useRef(false);\n const isMouseDownOnFragmentRef = useRef(false);\n const mouseDownSegmentRef = useRef<TimeSegment | null>(null);\n const mobileBlurEventRef = useRef<React.FocusEvent<HTMLInputElement> | 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 isSourceFunction = typeof source === 'function';\n const sourceItems = useMemo(() => (Array.isArray(source) ? source : []), [source]);\n const hasDropdown = isSourceFunction || sourceItems.length > 0;\n\n const [fetchedItems, setFetchedItems] = useState<Array<TimePickerExtendedItem<TimeItemValue>>>([]);\n const [fetchedItemsQuery, setFetchedItemsQuery] = useState<string | null>(null);\n const [isLoadingItems, setIsLoadingItems] = useState(false);\n const [isEditedAfterOpen, setIsEditedAfterOpen] = useState(false);\n\n const sourceValueItems = isSourceFunction ? fetchedItems : sourceItems;\n\n /**\n * Форма элемента, который компонент собирает для времени без элемента.\n * Повторяет форму элементов источника, а если их нет — форму внешнего `value`,\n * чтобы наружу уходило то же, что пришло внутрь.\n */\n const shouldBuildItemAsObject =\n sourceValueItems.some((item) => isTimeItem(item) && isTimeItemObject(item)) ||\n (value !== null && value !== undefined && isTimeItemObject(value));\n\n const valueToItemRef = useRef(valueToItem);\n valueToItemRef.current = valueToItem;\n\n const shouldBuildItemAsObjectRef = useRef(shouldBuildItemAsObject);\n shouldBuildItemAsObjectRef.current = shouldBuildItemAsObject;\n\n const handleCommitValue = useCallback(\n (committedValue: string, item: TimeItemValue | null) => {\n if (!onValueChange) {\n return;\n }\n\n if (committedValue === EMPTY_VALUE) {\n onValueChange(null, EMPTY_VALUE);\n return;\n }\n\n const nextItem =\n item ??\n valueToItemRef.current?.(committedValue) ??\n timeValueToItem<TimeItemValue>(committedValue, shouldBuildItemAsObjectRef.current);\n\n onValueChange(nextItem, committedValue);\n },\n [onValueChange],\n );\n\n const { editingValue, editingValueRef, updateEditingValue, commitEditingValue, commitValue, commitItem } =\n useTimePickerValue({\n isInputFocused,\n format,\n externalValue: getTimeValueString(value),\n onCommitValue: handleCommitValue,\n onInputValueChange,\n });\n\n const filterQuery = isEditedAfterOpen ? getTimeFilterQuery(editingValue, format) : EMPTY_VALUE;\n\n const filteredItems = useMemo(\n () => filterTimeItems(dedupeTimeItems(sourceValueItems, format), filterQuery, format),\n [filterQuery, format, sourceValueItems],\n );\n\n /**\n * Элементы для отрисовки: время и подпись достаются из элемента,\n * а `disabled` дополняется проверкой диапазона `minTime`/`maxTime`.\n * Исходный элемент сохраняется как есть — именно он уходит в `onValueChange`.\n */\n const resolvedItems = useMemo(\n () => resolveTimeItems(filteredItems, format, minTime, maxTime),\n [maxTime, minTime, format, filteredItems],\n );\n\n const popupMaxHeight = getTimePickerPopupMaxHeight(size, theme);\n\n const ariaPlaceholder = format === 'HH:mm' ? locale.ariaPlaceholderHHMM : locale.ariaPlaceholderHHMMSS;\n\n const normalizedValue = normalizeTimeValue(editingValue, format);\n\n const selectedItemIndex = resolvedItems.findIndex(\n (item) => isTimeMenuItem(item) && normalizeTimeValue(item.value, format) === normalizedValue,\n );\n\n let autoHighlightKey: string | null = null;\n\n if (filterQuery !== EMPTY_VALUE) {\n if (isSourceFunction) {\n if (!isLoadingItems && fetchedItemsQuery === filterQuery) {\n autoHighlightKey = `source-function:${filterQuery}`;\n }\n } else {\n autoHighlightKey = `source-array:${filterQuery}`;\n }\n }\n\n const canUseMobileDropdownTimePicker = hasDropdown && isMobileDevice && !canUseMobileNativeTimePicker;\n\n const hasDropdownContent = resolvedItems.length > 0 || isLoadingItems;\n\n const inputRightIcon =\n isLoadingItems && resolvedItems.length > 0 ? (\n <span data-tid={TimePickerDataTids.inputLoading}>\n <LoadingIcon size={size} />\n </span>\n ) : (\n rightIcon\n );\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 updateEditingValueAfterUserEdit = useCallback(\n (nextEditingValue: string) => {\n if (editingValueRef.current !== nextEditingValue) {\n setIsEditedAfterOpen(true);\n }\n\n updateEditingValue(nextEditingValue);\n },\n [editingValueRef, updateEditingValue],\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 updateEditingValueAfterUserEdit(nextDisplayValue);\n },\n [editingValue, format, updateEditingValueAfterUserEdit],\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 highlightedItemIndex,\n openDropdown,\n closeDropdown,\n resetHighlightedItem,\n tryNavigateItems,\n } = useTimePickerDropdown({\n disabled,\n hasDropdown,\n items: resolvedItems,\n selectedItemIndex: selectedItemIndex >= 0 ? selectedItemIndex : null,\n autoHighlightKey,\n });\n\n const sourceRef = useRef(source);\n sourceRef.current = source;\n\n useEffect(() => {\n const currentSource = sourceRef.current;\n\n if (typeof currentSource !== 'function' || !isDropdownOpened) {\n setIsLoadingItems(false);\n return;\n }\n\n let cancelled = false;\n\n setIsLoadingItems(true);\n\n new Promise<Array<TimePickerExtendedItem<TimeItemValue>>>((resolve) => resolve(currentSource(filterQuery))).then(\n (nextItems) => {\n if (!cancelled) {\n setFetchedItems(nextItems);\n setFetchedItemsQuery(filterQuery);\n setIsLoadingItems(false);\n }\n },\n () => {\n if (!cancelled) {\n setFetchedItems([]);\n setFetchedItemsQuery(filterQuery);\n setIsLoadingItems(false);\n }\n },\n );\n\n return () => {\n cancelled = true;\n };\n }, [filterQuery, isDropdownOpened, isSourceFunction]);\n\n useEffect(() => {\n setIsEditedAfterOpen(false);\n\n if (!isDropdownOpened && isSourceFunction) {\n setFetchedItems([]);\n setFetchedItemsQuery(null);\n }\n }, [isDropdownOpened, isSourceFunction]);\n\n const popupId = popupIdRef.current;\n const activeDescendantId =\n hasDropdown && highlightedItemIndex !== null ? `${popupId}-item-${highlightedItemIndex}` : undefined;\n const isMobileDropdownActive = canUseMobileDropdownTimePicker && isDropdownOpened;\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 blinkInputValue = useCallback(() => {\n getActiveInput()?.blink();\n }, [getActiveInput]);\n\n /**\n * Сообщает о некорректном вводе: нажатой клавише или вставленном значении, которое не может быть временем.\n * Если обработчик не задан, поле вспыхивает само.\n */\n const handleUnexpectedInput = useCallback(\n (unexpectedValue: string) => {\n if (onUnexpectedInput) {\n onUnexpectedInput(unexpectedValue, blinkInputValue);\n return;\n }\n\n blinkInputValue();\n },\n [blinkInputValue, onUnexpectedInput],\n );\n\n const closeOpenedDropdown = useCallback(() => {\n if (canUseMobileDropdownTimePicker && isDropdownOpened) {\n mobileInputRef.current?.blur();\n setIsInputFocused(false);\n resetMouseInteractionState();\n closeDropdown();\n commitEditingValue();\n const blurEvent = mobileBlurEventRef.current;\n mobileBlurEventRef.current = null;\n if (blurEvent) {\n onBlur?.(blurEvent);\n }\n return;\n }\n\n closeDropdown();\n }, [\n canUseMobileDropdownTimePicker,\n closeDropdown,\n commitEditingValue,\n isDropdownOpened,\n onBlur,\n resetMouseInteractionState,\n ]);\n\n const selectItem = useCallback(\n (item: TimeItemValue) => {\n commitItem(item);\n\n if (canUseMobileDropdownTimePicker) {\n closeOpenedDropdown();\n } else {\n closeDropdown();\n }\n },\n [canUseMobileDropdownTimePicker, closeDropdown, closeOpenedDropdown, commitItem],\n );\n\n const isSelectHighlightedItem = useCallback(() => {\n if (highlightedItemIndex === null) {\n return false;\n }\n\n const resolvedItem = resolvedItems[highlightedItemIndex];\n\n if (!resolvedItem || !isTimeMenuItem(resolvedItem) || resolvedItem.disabled) {\n return true;\n }\n\n selectItem(resolvedItem.item);\n return true;\n }, [highlightedItemIndex, resolvedItems, selectItem]);\n\n const focusInput = useCallback(() => {\n getActiveInput()?.focus();\n }, [getActiveInput]);\n\n const blurInput = useCallback(() => {\n if (canUseMobileDropdownTimePicker && isDropdownOpened) {\n closeOpenedDropdown();\n return;\n }\n\n getActiveInput()?.blur();\n }, [canUseMobileDropdownTimePicker, closeOpenedDropdown, getActiveInput, isDropdownOpened]);\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 getRootNode: () => rootRef.current,\n }),\n [blinkInput, blurInput, closeInputDropdown, focusInput, getActiveInput],\n );\n\n useLayoutEffect(() => {\n if (!isDropdownOpened) {\n return;\n }\n\n const selectedIndex = highlightedItemIndex ?? selectedItemIndex;\n\n if (selectedIndex < 0) {\n return;\n }\n\n const targetNode = itemRefs.current.get(selectedIndex);\n\n if (targetNode) {\n scrollSelectedItemIntoView(targetNode);\n }\n }, [highlightedItemIndex, isDropdownOpened, selectedItemIndex]);\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 if (isMobilePopupInput) {\n event.persist();\n mobileBlurEventRef.current = event;\n return;\n }\n\n setIsInputFocused(false);\n resetMouseInteractionState();\n closeDropdown();\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) =>\n 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 updateEditingValueAfterUserEdit(getEmptyDisplayValue(format));\n selectSegment('hours');\n return;\n }\n\n if (DIGIT_REGEXP.test(event.key)) {\n event.preventDefault();\n\n resetHighlightedItem();\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 handleUnexpectedInput(event.key);\n return;\n }\n\n updateEditingValueAfterUserEdit(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 itemStep = isKeyArrowUp(event) ? -1 : 1;\n\n if (tryNavigateItems(itemStep)) {\n return;\n }\n\n const step = isKeyArrowUp(event) ? 1 : -1;\n\n updateEditingValueAfterUserEdit(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 updateEditingValueAfterUserEdit(nextDisplayValue);\n selectSegment(nextSegment);\n return;\n }\n\n if (isKeyDelete(event)) {\n event.preventDefault();\n updateEditingValueAfterUserEdit(replaceTimeSegment(currentDisplayValue, currentSegment, EMPTY_SEGMENT, format));\n selectSegment(currentSegment);\n return;\n }\n\n if (isKeyEscape(event)) {\n if (isDropdownOpened) {\n event.preventDefault();\n\n if (canUseMobileDropdownTimePicker) {\n closeOpenedDropdown();\n } else {\n closeDropdown();\n }\n }\n return;\n }\n\n if (isKeyEnter(event)) {\n if (isSelectHighlightedItem()) {\n event.preventDefault();\n return;\n }\n\n if (canUseMobileDropdownTimePicker && isDropdownOpened) {\n event.preventDefault();\n closeOpenedDropdown();\n return;\n }\n\n // Enter не выбирает элемент, а лишь подтверждает введенное значение,\n // поэтому коммитим значение как при потере фокуса и подсвечиваем поле.\n commitEditingValue();\n blinkInputValue();\n\n if (isDropdownOpened) {\n event.preventDefault();\n closeDropdown();\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 updateEditingValueAfterUserEdit(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 handleUnexpectedInput(event.key);\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 handleUnexpectedInput(pastedValue);\n return;\n }\n\n updateEditingValueAfterUserEdit(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 commitValue(nextValue);\n },\n [commitValue],\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 corners={corners}\n rightIcon={inputRightIcon}\n suffix={suffix}\n value={displayValue}\n aria-haspopup={hasDropdown ? 'listbox' : undefined}\n aria-expanded={\n !isMobileDropdownActive && hasDropdown && isDropdownOpened && hasDropdownContent ? true : undefined\n }\n aria-controls={\n !isMobileDropdownActive && hasDropdown && isDropdownOpened && hasDropdownContent ? popupId : undefined\n }\n aria-activedescendant={isMobileDropdownActive ? undefined : activeDescendantId}\n aria-placeholder={ariaPlaceholder}\n aria-busy={isLoadingItems || undefined}\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={inputRightIcon}\n suffix={suffix}\n resolvedItems={resolvedItems}\n renderItem={renderItem}\n isLoading={isLoadingItems}\n highlightedItemIndex={highlightedItemIndex}\n normalizedValue={normalizedValue}\n itemRefs={itemRefs}\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 aria-haspopup={'listbox'}\n aria-expanded={hasDropdownContent ? true : undefined}\n aria-controls={hasDropdownContent ? popupId : undefined}\n aria-activedescendant={activeDescendantId}\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 onSelectItem={selectItem}\n onCloseRequest={handleCloseMobileDropdown}\n />\n )}\n\n {hasDropdown &&\n !canUseMobileNativeTimePicker &&\n !canUseMobileDropdownTimePicker &&\n isDropdownOpened &&\n hasDropdownContent &&\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 resolvedItems={resolvedItems}\n renderItem={renderItem}\n isLoading={isLoadingItems}\n highlightedItemIndex={highlightedItemIndex}\n normalizedValue={normalizedValue}\n itemRefs={itemRefs}\n onSelectItem={selectItem}\n />\n )}\n </span>\n </CommonWrapper>\n );\n }),\n { validate: validateTimePicker },\n) as unknown as TimePickerComponent;\n"]}
@@ -0,0 +1,11 @@
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
+ item(): string;
6
+ itemSmall(t: Theme): string;
7
+ itemMedium(t: Theme): string;
8
+ itemLarge(t: Theme): string;
9
+ itemValue(): string;
10
+ itemLabel(t: Theme): string;
11
+ }>;
@@ -0,0 +1,36 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import { memoizeGetStyles } from '../../lib/theming/Emotion.js';
6
+ export var getStyles = memoizeGetStyles(function (_a) {
7
+ var css = _a.css;
8
+ return ({
9
+ root: function () {
10
+ return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: inline-block;\n position: relative;\n line-height: normal;\n "], ["\n display: inline-block;\n position: relative;\n line-height: normal;\n "])));
11
+ },
12
+ popup: function (t) {
13
+ return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n "], ["\n background: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n "])), t.timePickerPopupBg, t.timePickerPopupBorderRadius, t.timePickerPopupShadow);
14
+ },
15
+ item: function () {
16
+ return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n width: 100%;\n font-variant-numeric: tabular-nums;\n "], ["\n display: flex;\n align-items: center;\n width: 100%;\n font-variant-numeric: tabular-nums;\n "])));
17
+ },
18
+ itemSmall: function (t) {
19
+ return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n gap: ", ";\n "], ["\n gap: ", ";\n "])), t.timePickerItemGapSmall);
20
+ },
21
+ itemMedium: function (t) {
22
+ return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n gap: ", ";\n "], ["\n gap: ", ";\n "])), t.timePickerItemGapMedium);
23
+ },
24
+ itemLarge: function (t) {
25
+ return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n gap: ", ";\n "], ["\n gap: ", ";\n "])), t.timePickerItemGapLarge);
26
+ },
27
+ itemValue: function () {
28
+ return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])));
29
+ },
30
+ itemLabel: function (t) {
31
+ return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n color: ", ";\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n color: ", ";\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])), t.menuItemCommentColor);
32
+ },
33
+ });
34
+ });
35
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
36
+ //# sourceMappingURL=TimePicker.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker.styles.js","sourceRoot":"","sources":["TimePicker.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,gKAAA,6FAIT,KAAC;QACJ,CAAC;QAED,KAAK,YAAC,CAAQ;YACZ,OAAO,GAAG,6NAAA,sBACM,EAAmB,0BAChB,EAA6B,uBAChC,EAAuB,6EAGtC,KALe,CAAC,CAAC,iBAAiB,EAChB,CAAC,CAAC,2BAA2B,EAChC,CAAC,CAAC,qBAAqB,EAGrC;QACJ,CAAC;QAED,IAAI;YACF,OAAO,GAAG,4LAAA,yHAKT,KAAC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,6FAAA,eACD,EAAwB,SAChC,KADQ,CAAC,CAAC,sBAAsB,EAC/B;QACJ,CAAC;QAED,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,6FAAA,eACD,EAAyB,SACjC,KADQ,CAAC,CAAC,uBAAuB,EAChC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,6FAAA,eACD,EAAwB,SAChC,KADQ,CAAC,CAAC,sBAAsB,EAC/B;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,kJAAA,+EAGT,KAAC;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,sKAAA,iBACC,EAAsB,gFAGhC,KAHU,CAAC,CAAC,oBAAoB,EAG/B;QACJ,CAAC;KACF,CAAC;AA5D8D,CA4D9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n display: inline-block;\n position: relative;\n line-height: normal;\n `;\n },\n\n popup(t: Theme) {\n return css`\n background: ${t.timePickerPopupBg};\n border-radius: ${t.timePickerPopupBorderRadius};\n box-shadow: ${t.timePickerPopupShadow};\n font-variant-numeric: tabular-nums;\n overflow: hidden;\n `;\n },\n\n item() {\n return css`\n display: flex;\n align-items: center;\n width: 100%;\n font-variant-numeric: tabular-nums;\n `;\n },\n\n itemSmall(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapSmall};\n `;\n },\n\n itemMedium(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapMedium};\n `;\n },\n\n itemLarge(t: Theme) {\n return css`\n gap: ${t.timePickerItemGapLarge};\n `;\n },\n\n itemValue() {\n return css`\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n itemLabel(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n}));\n"]}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import type { SizeProp } from '../../lib/types/props.js';
3
+ import { type MenuItemState } from '../MenuItem/index.js';
4
+ import { type TimeFormat, type TimeItemValue, type TimePickerMenuItem } from './helpers/TimePicker.shared.js';
5
+ interface TimePickerItemsProps<T extends TimeItemValue> {
6
+ itemIdPrefix?: string;
7
+ format: TimeFormat;
8
+ size: SizeProp;
9
+ resolvedItems: Array<TimePickerMenuItem<T>>;
10
+ renderItem?: (item: T, state: MenuItemState) => React.ReactNode;
11
+ highlightedItemIndex: number | null;
12
+ normalizedValue: string;
13
+ itemRefs?: React.RefObject<Map<number, HTMLSpanElement>>;
14
+ maxHeight?: React.CSSProperties['maxHeight'];
15
+ disableScrollContainer?: boolean;
16
+ isLoading?: boolean;
17
+ onSelectItem(item: T): void;
18
+ }
19
+ export declare const TimePickerItems: <T extends TimeItemValue>(props: TimePickerItemsProps<T>) => React.JSX.Element;
20
+ export {};
@@ -0,0 +1,108 @@
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 { cx } from '@emotion/css';
24
+ import React, { useContext } from 'react';
25
+ import { Menu } from '../../internal/Menu/index.js';
26
+ import { MenuMessage } from '../../internal/MenuMessage/index.js';
27
+ import { useStyles } from '../../lib/renderEnvironment/index.js';
28
+ import { ThemeContext } from '../../lib/theming/ThemeContext.js';
29
+ import { isMenuFooter } from '../MenuFooter/index.js';
30
+ import { isMenuHeader } from '../MenuHeader/index.js';
31
+ import { isMenuItem, MenuItem } from '../MenuItem/index.js';
32
+ import { Spinner } from '../Spinner/index.js';
33
+ import { TimePickerDataTids } from './helpers/TimePicker.constants.js';
34
+ import { isTimeMenuItem, } from './helpers/TimePicker.shared.js';
35
+ import { normalizeTimeValue } from './helpers/TimePicker.value.js';
36
+ import { getStyles } from './TimePicker.styles.js';
37
+ var getItemSizeClassName = function (styles, theme, size) {
38
+ switch (size) {
39
+ case 'large':
40
+ return styles.itemLarge(theme);
41
+ case 'medium':
42
+ return styles.itemMedium(theme);
43
+ case 'small':
44
+ default:
45
+ return styles.itemSmall(theme);
46
+ }
47
+ };
48
+ var ItemRoot = React.forwardRef(function (_a, ref) {
49
+ var _b = _a.disabled, disabled = _b === void 0 ? false : _b, _state = _a.state, props = __rest(_a, ["disabled", "state"]);
50
+ if (disabled) {
51
+ return React.createElement("div", __assign({}, props, { ref: ref }));
52
+ }
53
+ return React.createElement("button", __assign({}, props, { ref: ref, type: 'button', disabled: disabled }));
54
+ });
55
+ export var TimePickerItems = function (props) {
56
+ var itemIdPrefix = props.itemIdPrefix, format = props.format, size = props.size, resolvedItems = props.resolvedItems, renderItem = props.renderItem, highlightedItemIndex = props.highlightedItemIndex, normalizedValue = props.normalizedValue, itemRefs = props.itemRefs, maxHeight = props.maxHeight, disableScrollContainer = props.disableScrollContainer, isLoading = props.isLoading, onSelectItem = props.onSelectItem;
57
+ var theme = useContext(ThemeContext);
58
+ var styles = useStyles(getStyles);
59
+ var itemSizeClassName = getItemSizeClassName(styles, theme, size);
60
+ if (isLoading && resolvedItems.length === 0) {
61
+ return (React.createElement(Menu, { hasMargin: false, width: '100%', maxHeight: maxHeight, disableScrollContainer: disableScrollContainer, "data-tid": TimePickerDataTids.loading },
62
+ React.createElement(MenuMessage, { size: size, as: 'div' },
63
+ React.createElement(Spinner, { size: 'small', dimmed: true }))));
64
+ }
65
+ return (React.createElement(Menu, { hasMargin: false, width: '100%', maxHeight: maxHeight, disableScrollContainer: disableScrollContainer }, resolvedItems.map(function (resolvedItem, index) {
66
+ var _a;
67
+ if (!isTimeMenuItem(resolvedItem)) {
68
+ var element = typeof resolvedItem === 'function' ? resolvedItem() : resolvedItem;
69
+ var key = (_a = element.key) !== null && _a !== void 0 ? _a : index;
70
+ if (isMenuItem(element)) {
71
+ return React.cloneElement(element, {
72
+ key: key,
73
+ isMobile: disableScrollContainer,
74
+ size: size,
75
+ });
76
+ }
77
+ if (isMenuHeader(element)) {
78
+ return React.cloneElement(element, { key: key, size: size });
79
+ }
80
+ if (isMenuFooter(element)) {
81
+ return React.cloneElement(element, { key: key, size: size });
82
+ }
83
+ return React.cloneElement(element, { key: key });
84
+ }
85
+ var normalizedItem = normalizeTimeValue(resolvedItem.value, format);
86
+ var state;
87
+ if (highlightedItemIndex === index) {
88
+ state = 'hover';
89
+ }
90
+ else if (normalizedItem === normalizedValue) {
91
+ state = 'selected';
92
+ }
93
+ return (React.createElement(MenuItem, { key: "".concat(resolvedItem.value, "-").concat(index), component: ItemRoot, disabled: resolvedItem.disabled, isNotSelectable: resolvedItem.disabled, size: size, state: state, onClick: resolvedItem.disabled ? undefined : function () { return onSelectItem(resolvedItem.item); } }, function (activeState) { return (React.createElement("span", { id: itemIdPrefix ? "".concat(itemIdPrefix, "-item-").concat(index) : undefined, "data-tid": TimePickerDataTids.item, className: cx(styles.item(), itemSizeClassName), ref: function (node) {
94
+ if (!itemRefs) {
95
+ return;
96
+ }
97
+ if (node) {
98
+ itemRefs.current.set(index, node);
99
+ }
100
+ else {
101
+ itemRefs.current.delete(index);
102
+ }
103
+ } }, renderItem ? (renderItem(resolvedItem.item, activeState !== null && activeState !== void 0 ? activeState : null)) : (React.createElement(React.Fragment, null,
104
+ React.createElement("span", { className: styles.itemValue() }, normalizedItem),
105
+ resolvedItem.label && React.createElement("span", { className: styles.itemLabel(theme) }, resolvedItem.label))))); }));
106
+ })));
107
+ };
108
+ //# sourceMappingURL=TimePickerItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePickerItems.js","sourceRoot":"","sources":["TimePickerItems.tsx"],"names":[],"mappings":"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","sourcesContent":["import { cx } from '@emotion/css';\nimport React, { useContext } from 'react';\n\nimport { Menu } from '../../internal/Menu/index.js';\nimport { MenuMessage } from '../../internal/MenuMessage/index.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isMenuFooter } from '../MenuFooter/index.js';\nimport { isMenuHeader } from '../MenuHeader/index.js';\nimport { isMenuItem, MenuItem, type MenuItemProps, type MenuItemState } from '../MenuItem/index.js';\nimport { Spinner } from '../Spinner/index.js';\nimport { TimePickerDataTids } from './helpers/TimePicker.constants.js';\nimport {\n isTimeMenuItem,\n type TimeFormat,\n type TimeItemValue,\n type TimePickerMenuItem,\n} from './helpers/TimePicker.shared.js';\nimport { normalizeTimeValue } from './helpers/TimePicker.value.js';\nimport { getStyles } from './TimePicker.styles.js';\n\nconst getItemSizeClassName = (styles: ReturnType<typeof getStyles>, theme: Theme, size: SizeProp): string => {\n switch (size) {\n case 'large':\n return styles.itemLarge(theme);\n case 'medium':\n return styles.itemMedium(theme);\n case 'small':\n default:\n return styles.itemSmall(theme);\n }\n};\n\nconst ItemRoot = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement> & { disabled?: boolean; state?: MenuItemState }\n>(({ disabled = false, state: _state, ...props }, ref) => {\n if (disabled) {\n return <div {...props} ref={ref as React.Ref<HTMLDivElement>} />;\n }\n\n return <button {...props} ref={ref as React.Ref<HTMLButtonElement>} type={'button'} disabled={disabled} />;\n});\n\ninterface TimePickerItemsProps<T extends TimeItemValue> {\n itemIdPrefix?: string;\n format: TimeFormat;\n size: SizeProp;\n resolvedItems: Array<TimePickerMenuItem<T>>;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n highlightedItemIndex: number | null;\n normalizedValue: string;\n itemRefs?: React.RefObject<Map<number, HTMLSpanElement>>;\n maxHeight?: React.CSSProperties['maxHeight'];\n disableScrollContainer?: boolean;\n isLoading?: boolean;\n onSelectItem(item: T): void;\n}\n\nexport const TimePickerItems = <T extends TimeItemValue>(props: TimePickerItemsProps<T>) => {\n const {\n itemIdPrefix,\n format,\n size,\n resolvedItems,\n renderItem,\n highlightedItemIndex,\n normalizedValue,\n itemRefs,\n maxHeight,\n disableScrollContainer,\n isLoading,\n onSelectItem,\n } = props;\n\n const theme = useContext(ThemeContext);\n const styles = useStyles(getStyles);\n const itemSizeClassName = getItemSizeClassName(styles, theme, size);\n\n if (isLoading && resolvedItems.length === 0) {\n return (\n <Menu\n hasMargin={false}\n width={'100%'}\n maxHeight={maxHeight}\n disableScrollContainer={disableScrollContainer}\n data-tid={TimePickerDataTids.loading}\n >\n <MenuMessage size={size} as={'div'}>\n <Spinner size={'small'} dimmed />\n </MenuMessage>\n </Menu>\n );\n }\n\n return (\n <Menu hasMargin={false} width={'100%'} maxHeight={maxHeight} disableScrollContainer={disableScrollContainer}>\n {resolvedItems.map((resolvedItem, index) => {\n if (!isTimeMenuItem(resolvedItem)) {\n const element = typeof resolvedItem === 'function' ? resolvedItem() : resolvedItem;\n const key = element.key ?? index;\n\n if (isMenuItem(element)) {\n return React.cloneElement(element, {\n key,\n isMobile: disableScrollContainer,\n size,\n } as MenuItemProps);\n }\n\n if (isMenuHeader(element)) {\n return React.cloneElement(element, { key, size });\n }\n\n if (isMenuFooter(element)) {\n return React.cloneElement(element, { key, size });\n }\n\n return React.cloneElement(element, { key });\n }\n\n const normalizedItem = normalizeTimeValue(resolvedItem.value, format);\n\n let state: 'hover' | 'selected' | undefined;\n\n if (highlightedItemIndex === index) {\n state = 'hover';\n } else if (normalizedItem === normalizedValue) {\n state = 'selected';\n }\n\n return (\n <MenuItem\n key={`${resolvedItem.value}-${index}`}\n component={ItemRoot}\n disabled={resolvedItem.disabled}\n isNotSelectable={resolvedItem.disabled}\n size={size}\n state={state}\n onClick={resolvedItem.disabled ? undefined : () => onSelectItem(resolvedItem.item)}\n >\n {(activeState) => (\n <span\n id={itemIdPrefix ? `${itemIdPrefix}-item-${index}` : undefined}\n data-tid={TimePickerDataTids.item}\n className={cx(styles.item(), itemSizeClassName)}\n ref={(node) => {\n if (!itemRefs) {\n return;\n }\n\n if (node) {\n itemRefs.current.set(index, node);\n } else {\n itemRefs.current.delete(index);\n }\n }}\n >\n {renderItem ? (\n renderItem(resolvedItem.item, activeState ?? null)\n ) : (\n <>\n <span className={styles.itemValue()}>{normalizedItem}</span>\n {resolvedItem.label && <span className={styles.itemLabel(theme)}>{resolvedItem.label}</span>}\n </>\n )}\n </span>\n )}\n </MenuItem>\n );\n })}\n </Menu>\n );\n};\n"]}
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import type { ReactNode } from 'react';
3
+ import type { TimeInputRef } from '../../internal/TimeInput/index.js';
4
+ import type { SizeProp } from '../../lib/types/props.js';
5
+ import type { InputIconType } from '../Input/index.js';
6
+ import type { MenuItemState } from '../MenuItem/index.js';
7
+ import type { TimeSegment, TimeFormat, TimeItemValue, TimePickerMenuItem } from './helpers/TimePicker.shared.js';
8
+ interface TimePickerMobilePopupProps<T extends TimeItemValue> {
9
+ id?: string;
10
+ opened: boolean;
11
+ value: string;
12
+ inputRef: React.RefObject<TimeInputRef | null>;
13
+ disabled?: boolean;
14
+ format: TimeFormat;
15
+ size: SizeProp;
16
+ rightIcon?: InputIconType;
17
+ suffix?: ReactNode;
18
+ resolvedItems: Array<TimePickerMenuItem<T>>;
19
+ renderItem?: (item: T, state: MenuItemState) => ReactNode;
20
+ isLoading?: boolean;
21
+ highlightedItemIndex: number | null;
22
+ normalizedValue: string;
23
+ itemRefs: React.RefObject<Map<number, HTMLSpanElement>>;
24
+ error?: boolean;
25
+ warning?: boolean;
26
+ 'aria-describedby'?: string;
27
+ 'aria-label'?: string;
28
+ 'aria-placeholder'?: string;
29
+ 'aria-activedescendant'?: string;
30
+ 'aria-controls'?: string;
31
+ 'aria-expanded'?: boolean;
32
+ 'aria-haspopup'?: React.AriaAttributes['aria-haspopup'];
33
+ onFocus(event: React.FocusEvent<HTMLInputElement>): void;
34
+ onBlur(event: React.FocusEvent<HTMLInputElement>): void;
35
+ onClick(event: React.MouseEvent<HTMLInputElement>): void;
36
+ onKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void;
37
+ onMouseDownCapture(event: React.MouseEvent<HTMLInputElement>): void;
38
+ onMouseUp(event: React.MouseEvent<HTMLInputElement>): void;
39
+ onPaste(event: React.ClipboardEvent<HTMLInputElement>): void;
40
+ onSelectSegment(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;
41
+ onSelectItem(item: T): void;
42
+ onCloseRequest(): void;
43
+ }
44
+ export declare const TimePickerMobilePopup: <T extends TimeItemValue>(props: TimePickerMobilePopupProps<T>) => React.JSX.Element;
45
+ export {};
@@ -0,0 +1,45 @@
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
+ import React, { useContext, useLayoutEffect } from 'react';
13
+ import { MobilePopup } from '../../internal/MobilePopup/index.js';
14
+ import { TimeInput } from '../../internal/TimeInput/index.js';
15
+ import { ThemeContext } from '../../lib/theming/ThemeContext.js';
16
+ import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
17
+ import { TimePickerDataTids } from './helpers/TimePicker.constants.js';
18
+ import { TimePickerItems } from './TimePickerItems.js';
19
+ export var TimePickerMobilePopup = function (props) {
20
+ var id = props.id, opened = props.opened, value = props.value, inputRef = props.inputRef, disabled = props.disabled, format = props.format, size = props.size, rightIcon = props.rightIcon, suffix = props.suffix, resolvedItems = props.resolvedItems, renderItem = props.renderItem, isLoading = props.isLoading, highlightedItemIndex = props.highlightedItemIndex, normalizedValue = props.normalizedValue, itemRefs = props.itemRefs, error = props.error, warning = props.warning, ariaDescribedby = props["aria-describedby"], ariaLabel = props["aria-label"], ariaPlaceholder = props["aria-placeholder"], ariaActiveDescendant = props["aria-activedescendant"], ariaControls = props["aria-controls"], ariaExpanded = props["aria-expanded"], ariaHasPopup = props["aria-haspopup"], onFocus = props.onFocus, onBlur = props.onBlur, onClick = props.onClick, onKeyDown = props.onKeyDown, onMouseDownCapture = props.onMouseDownCapture, onMouseUp = props.onMouseUp, onPaste = props.onPaste, onSelectSegment = props.onSelectSegment, onSelectItem = props.onSelectItem, onCloseRequest = props.onCloseRequest;
21
+ var theme = useContext(ThemeContext);
22
+ var themeGTE6_1 = isThemeGTE(theme, '6.1');
23
+ useLayoutEffect(function () {
24
+ var timer = setTimeout(function () {
25
+ var _a;
26
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
27
+ });
28
+ return function () {
29
+ clearTimeout(timer);
30
+ };
31
+ }, [inputRef]);
32
+ var input = (React.createElement(TimeInput, { ref: inputRef, "data-tid": TimePickerDataTids.mobileInput, width: '100%', disabled: disabled, format: format, size: themeGTE6_1 ? size : undefined, rightIcon: rightIcon, suffix: suffix, value: value, error: error, warning: warning, "aria-describedby": ariaDescribedby, "aria-label": ariaLabel, "aria-placeholder": ariaPlaceholder, "aria-busy": isLoading || undefined, "aria-activedescendant": ariaActiveDescendant, "aria-controls": ariaControls, "aria-expanded": ariaExpanded, "aria-haspopup": ariaHasPopup, onFocus: onFocus, onBlur: onBlur, onClick: onClick, onKeyDown: onKeyDown, onMouseDownCapture: onMouseDownCapture, onMouseUp: onMouseUp, onPaste: onPaste, onSelectSegment: onSelectSegment }));
33
+ var themeDependantProps = themeGTE6_1
34
+ ? {
35
+ footerChildComponent: input,
36
+ size: size,
37
+ }
38
+ : {
39
+ headerChildComponent: input,
40
+ };
41
+ return (React.createElement(MobilePopup, __assign({ id: id, opened: opened }, themeDependantProps, { onCloseRequest: onCloseRequest }),
42
+ React.createElement("div", { "data-tid": TimePickerDataTids.mobilePopup },
43
+ React.createElement(TimePickerItems, { itemIdPrefix: id, format: format, size: size, resolvedItems: resolvedItems, renderItem: renderItem, isLoading: isLoading, highlightedItemIndex: highlightedItemIndex, normalizedValue: normalizedValue, itemRefs: itemRefs, maxHeight: 'auto', disableScrollContainer: true, onSelectItem: onSelectItem }))));
44
+ };
45
+ //# sourceMappingURL=TimePickerMobilePopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePickerMobilePopup.js","sourceRoot":"","sources":["TimePickerMobilePopup.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useLayoutEffect } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport type { TimeInputRef } from '../../internal/TimeInput/index.js';\nimport { TimeInput } from '../../internal/TimeInput/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { InputIconType } from '../Input/index.js';\nimport type { MenuItemState } from '../MenuItem/index.js';\nimport { TimePickerDataTids } from './helpers/TimePicker.constants.js';\nimport type { TimeSegment, TimeFormat, TimeItemValue, TimePickerMenuItem } from './helpers/TimePicker.shared.js';\nimport { TimePickerItems } from './TimePickerItems.js';\n\ninterface TimePickerMobilePopupProps<T extends TimeItemValue> {\n id?: string;\n opened: boolean;\n value: string;\n inputRef: React.RefObject<TimeInputRef | null>;\n disabled?: boolean;\n format: TimeFormat;\n size: SizeProp;\n rightIcon?: InputIconType;\n suffix?: ReactNode;\n resolvedItems: Array<TimePickerMenuItem<T>>;\n renderItem?: (item: T, state: MenuItemState) => ReactNode;\n isLoading?: boolean;\n highlightedItemIndex: number | null;\n normalizedValue: string;\n itemRefs: React.RefObject<Map<number, HTMLSpanElement>>;\n error?: boolean;\n warning?: boolean;\n 'aria-describedby'?: string;\n 'aria-label'?: string;\n 'aria-placeholder'?: string;\n 'aria-activedescendant'?: string;\n 'aria-controls'?: string;\n 'aria-expanded'?: boolean;\n 'aria-haspopup'?: React.AriaAttributes['aria-haspopup'];\n onFocus(event: React.FocusEvent<HTMLInputElement>): void;\n onBlur(event: React.FocusEvent<HTMLInputElement>): void;\n onClick(event: React.MouseEvent<HTMLInputElement>): void;\n onKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void;\n onMouseDownCapture(event: React.MouseEvent<HTMLInputElement>): void;\n onMouseUp(event: React.MouseEvent<HTMLInputElement>): void;\n onPaste(event: React.ClipboardEvent<HTMLInputElement>): void;\n onSelectSegment(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;\n onSelectItem(item: T): void;\n onCloseRequest(): void;\n}\n\nexport const TimePickerMobilePopup = <T extends TimeItemValue>(props: TimePickerMobilePopupProps<T>) => {\n const {\n id,\n opened,\n value,\n inputRef,\n disabled,\n format,\n size,\n rightIcon,\n suffix,\n resolvedItems,\n renderItem,\n isLoading,\n highlightedItemIndex,\n normalizedValue,\n itemRefs,\n error,\n warning,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n 'aria-placeholder': ariaPlaceholder,\n 'aria-activedescendant': ariaActiveDescendant,\n 'aria-controls': ariaControls,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHasPopup,\n onFocus,\n onBlur,\n onClick,\n onKeyDown,\n onMouseDownCapture,\n onMouseUp,\n onPaste,\n onSelectSegment,\n onSelectItem,\n onCloseRequest,\n } = props;\n\n const theme = useContext(ThemeContext);\n const themeGTE6_1 = isThemeGTE(theme, '6.1');\n\n useLayoutEffect(() => {\n const timer = setTimeout(() => {\n inputRef.current?.focus();\n });\n\n return () => {\n clearTimeout(timer);\n };\n }, [inputRef]);\n\n const input = (\n <TimeInput\n ref={inputRef}\n data-tid={TimePickerDataTids.mobileInput}\n width={'100%'}\n disabled={disabled}\n format={format}\n size={themeGTE6_1 ? size : undefined}\n rightIcon={rightIcon}\n suffix={suffix}\n value={value}\n error={error}\n warning={warning}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n aria-placeholder={ariaPlaceholder}\n aria-busy={isLoading || undefined}\n aria-activedescendant={ariaActiveDescendant}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHasPopup}\n onFocus={onFocus}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onMouseDownCapture={onMouseDownCapture}\n onMouseUp={onMouseUp}\n onPaste={onPaste}\n onSelectSegment={onSelectSegment}\n />\n );\n\n const themeDependantProps = themeGTE6_1\n ? {\n footerChildComponent: input,\n size,\n }\n : {\n headerChildComponent: input,\n };\n\n return (\n <MobilePopup id={id} opened={opened} {...themeDependantProps} onCloseRequest={onCloseRequest}>\n <div data-tid={TimePickerDataTids.mobilePopup}>\n <TimePickerItems\n itemIdPrefix={id}\n format={format}\n size={size}\n resolvedItems={resolvedItems}\n renderItem={renderItem}\n isLoading={isLoading}\n highlightedItemIndex={highlightedItemIndex}\n normalizedValue={normalizedValue}\n itemRefs={itemRefs}\n maxHeight={'auto'}\n disableScrollContainer\n onSelectItem={onSelectItem}\n />\n </div>\n </MobilePopup>\n );\n};\n"]}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import type { SizeProp } from '../../lib/types/props.js';
3
+ import type { MenuItemState } from '../MenuItem/index.js';
4
+ import type { TimeFormat, TimeItemValue, TimePickerMenuItem } from './helpers/TimePicker.shared.js';
5
+ interface TimePickerPopupProps<T extends TimeItemValue> {
6
+ id?: string;
7
+ anchorElement: HTMLElement;
8
+ menuPos?: 'top' | 'bottom';
9
+ menuAlign?: 'left' | 'right';
10
+ menuWidth?: React.CSSProperties['width'];
11
+ popupMaxHeight: string;
12
+ format: TimeFormat;
13
+ size: SizeProp;
14
+ resolvedItems: Array<TimePickerMenuItem<T>>;
15
+ renderItem?: (item: T, state: MenuItemState) => React.ReactNode;
16
+ isLoading?: boolean;
17
+ highlightedItemIndex: number | null;
18
+ normalizedValue: string;
19
+ itemRefs: React.RefObject<Map<number, HTMLSpanElement>>;
20
+ onSelectItem(item: T): void;
21
+ }
22
+ export declare const TimePickerPopup: <T extends TimeItemValue>(props: TimePickerPopupProps<T>) => React.JSX.Element;
23
+ export {};
@@ -0,0 +1,18 @@
1
+ import React, { useContext } from 'react';
2
+ import { Popup } from '../../internal/Popup/index.js';
3
+ import { ZIndex } from '../../internal/ZIndex/index.js';
4
+ import { getMenuPositions } from '../../lib/getMenuPositions.js';
5
+ import { useStyles } from '../../lib/renderEnvironment/index.js';
6
+ import { ThemeContext } from '../../lib/theming/ThemeContext.js';
7
+ import { TimePickerDataTids } from './helpers/TimePicker.constants.js';
8
+ import { getStyles } from './TimePicker.styles.js';
9
+ import { TimePickerItems } from './TimePickerItems.js';
10
+ export var TimePickerPopup = function (props) {
11
+ var id = props.id, anchorElement = props.anchorElement, menuPos = props.menuPos, menuAlign = props.menuAlign, menuWidth = props.menuWidth, popupMaxHeight = props.popupMaxHeight, format = props.format, size = props.size, resolvedItems = props.resolvedItems, renderItem = props.renderItem, isLoading = props.isLoading, highlightedItemIndex = props.highlightedItemIndex, normalizedValue = props.normalizedValue, itemRefs = props.itemRefs, onSelectItem = props.onSelectItem;
12
+ var theme = useContext(ThemeContext);
13
+ var styles = useStyles(getStyles);
14
+ return (React.createElement(Popup, { id: id, opened: true, hasShadow: true, anchorElement: anchorElement, "data-tid": TimePickerDataTids.popup, priority: ZIndex.priorities.PopupMenu, margin: parseInt(theme.timePickerMenuOffsetY), width: menuWidth, minWidth: menuWidth === undefined ? '100%' : undefined, positions: getMenuPositions(menuPos, menuAlign) },
15
+ React.createElement("div", { className: styles.popup(theme), onMouseDown: function (event) { return event.preventDefault(); } },
16
+ React.createElement(TimePickerItems, { itemIdPrefix: id, format: format, size: size, resolvedItems: resolvedItems, renderItem: renderItem, isLoading: isLoading, highlightedItemIndex: highlightedItemIndex, normalizedValue: normalizedValue, itemRefs: itemRefs, maxHeight: popupMaxHeight, onSelectItem: onSelectItem }))));
17
+ };
18
+ //# sourceMappingURL=TimePickerPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePickerPopup.js","sourceRoot":"","sources":["TimePickerPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAoBvD,MAAM,CAAC,IAAM,eAAe,GAAG,UAA0B,KAA8B;IAEnF,IAAA,EAAE,GAeA,KAAK,GAfL,EACF,aAAa,GAcX,KAAK,cAdM,EACb,OAAO,GAaL,KAAK,QAbA,EACP,SAAS,GAYP,KAAK,UAZE,EACT,SAAS,GAWP,KAAK,UAXE,EACT,cAAc,GAUZ,KAAK,eAVO,EACd,MAAM,GASJ,KAAK,OATD,EACN,IAAI,GAQF,KAAK,KARH,EACJ,aAAa,GAOX,KAAK,cAPM,EACb,UAAU,GAMR,KAAK,WANG,EACV,SAAS,GAKP,KAAK,UALE,EACT,oBAAoB,GAIlB,KAAK,qBAJa,EACpB,eAAe,GAGb,KAAK,gBAHQ,EACf,QAAQ,GAEN,KAAK,SAFC,EACR,YAAY,GACV,KAAK,aADK,CACJ;IAEV,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,CACL,oBAAC,KAAK,IACJ,EAAE,EAAE,EAAE,EACN,MAAM,QACN,SAAS,QACT,aAAa,EAAE,aAAa,cAClB,kBAAkB,CAAC,KAAK,EAClC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,EACrC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAC7C,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACtD,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC;QAE/C,6BAAK,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,cAAc,EAAE,EAAtB,CAAsB;YACjF,oBAAC,eAAe,IACd,YAAY,EAAE,EAAE,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,YAAY,GAC1B,CACE,CACA,CACT,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { Popup } from '../../internal/Popup/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { MenuItemState } from '../MenuItem/index.js';\nimport { TimePickerDataTids } from './helpers/TimePicker.constants.js';\nimport type { TimeFormat, TimeItemValue, TimePickerMenuItem } from './helpers/TimePicker.shared.js';\nimport { getStyles } from './TimePicker.styles.js';\nimport { TimePickerItems } from './TimePickerItems.js';\n\ninterface TimePickerPopupProps<T extends TimeItemValue> {\n id?: string;\n anchorElement: HTMLElement;\n menuPos?: 'top' | 'bottom';\n menuAlign?: 'left' | 'right';\n menuWidth?: React.CSSProperties['width'];\n popupMaxHeight: string;\n format: TimeFormat;\n size: SizeProp;\n resolvedItems: Array<TimePickerMenuItem<T>>;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n isLoading?: boolean;\n highlightedItemIndex: number | null;\n normalizedValue: string;\n itemRefs: React.RefObject<Map<number, HTMLSpanElement>>;\n onSelectItem(item: T): void;\n}\n\nexport const TimePickerPopup = <T extends TimeItemValue>(props: TimePickerPopupProps<T>) => {\n const {\n id,\n anchorElement,\n menuPos,\n menuAlign,\n menuWidth,\n popupMaxHeight,\n format,\n size,\n resolvedItems,\n renderItem,\n isLoading,\n highlightedItemIndex,\n normalizedValue,\n itemRefs,\n onSelectItem,\n } = props;\n\n const theme = useContext(ThemeContext);\n const styles = useStyles(getStyles);\n\n return (\n <Popup\n id={id}\n opened\n hasShadow\n anchorElement={anchorElement}\n data-tid={TimePickerDataTids.popup}\n priority={ZIndex.priorities.PopupMenu}\n margin={parseInt(theme.timePickerMenuOffsetY)}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n positions={getMenuPositions(menuPos, menuAlign)}\n >\n <div className={styles.popup(theme)} onMouseDown={(event) => event.preventDefault()}>\n <TimePickerItems\n itemIdPrefix={id}\n format={format}\n size={size}\n resolvedItems={resolvedItems}\n renderItem={renderItem}\n isLoading={isLoading}\n highlightedItemIndex={highlightedItemIndex}\n normalizedValue={normalizedValue}\n itemRefs={itemRefs}\n maxHeight={popupMaxHeight}\n onSelectItem={onSelectItem}\n />\n </div>\n </Popup>\n );\n};\n"]}
@@ -0,0 +1,24 @@
1
+ import type { TimeFormat, TimeSegment } from './TimePicker.shared.js';
2
+ export declare const TimePickerDataTids: {
3
+ readonly root: "TimePicker__root";
4
+ readonly input: "TimePicker__input";
5
+ readonly mobileInput: "TimePicker__mobileInput";
6
+ readonly nativeInput: "TimePicker__nativeInput";
7
+ readonly popup: "TimePicker__popup";
8
+ readonly mobilePopup: "TimePicker__mobilePopup";
9
+ readonly item: "TimePicker__item";
10
+ readonly loading: "TimePicker__loading";
11
+ readonly inputLoading: "TimePicker__inputLoading";
12
+ };
13
+ export declare const TIME_PLACEHOLDER_CHAR = "\u2212";
14
+ export declare const TIME_SEPARATOR = ":";
15
+ export declare const TIME_SEGMENT_LENGTH = 2;
16
+ export declare const HOURS_MAX_VALUE = 23;
17
+ export declare const MINUTES_AND_SECONDS_MAX_VALUE = 59;
18
+ export declare const ZERO_PAD_CHAR = "0";
19
+ export declare const EMPTY_VALUE = "";
20
+ export declare const DIGIT_REGEXP: RegExp;
21
+ export declare const NON_DIGIT_REGEXP: RegExp;
22
+ export declare const EMPTY_SEGMENT: string;
23
+ export declare const TIME_SEGMENTS_BY_FORMAT: Record<TimeFormat, TimeSegment[]>;
24
+ export declare const FIRST_DIGIT_MAX_BY_SEGMENT: Record<TimeSegment, number>;