@skbkontur/react-ui 6.1.7-c386f.0 → 6.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/components/Checkbox/Checkbox.d.ts +0 -5
- package/components/Checkbox/Checkbox.js +21 -42
- package/components/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.mixins.d.ts +0 -2
- package/components/Checkbox/Checkbox.mixins.js +0 -6
- package/components/Checkbox/Checkbox.mixins.js.map +1 -1
- package/components/Checkbox/Checkbox.styles.d.ts +0 -7
- package/components/Checkbox/Checkbox.styles.js +2 -23
- package/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/components/Group/Group.js +2 -3
- package/components/Group/Group.js.map +1 -1
- package/components/Input/Input.d.ts +4 -1
- package/components/Input/Input.js +4 -1
- package/components/Input/Input.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +1 -1
- package/components/MenuItem/MenuItem.js.map +1 -1
- package/components/PasswordInput/PasswordInput.js +13 -1
- package/components/PasswordInput/PasswordInput.js.map +1 -1
- package/components/Radio/Radio.d.ts +0 -4
- package/components/Radio/Radio.js +1 -20
- package/components/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.mixins.d.ts +0 -2
- package/components/Radio/Radio.mixins.js +0 -6
- package/components/Radio/Radio.mixins.js.map +1 -1
- package/components/Radio/Radio.styles.d.ts +0 -6
- package/components/Radio/Radio.styles.js +4 -22
- package/components/Radio/Radio.styles.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +0 -5
- package/components/Toggle/Toggle.js +22 -46
- package/components/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.mixins.d.ts +0 -2
- package/components/Toggle/Toggle.mixins.js +0 -6
- package/components/Toggle/Toggle.mixins.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +0 -9
- package/components/Toggle/Toggle.styles.js +2 -29
- package/components/Toggle/Toggle.styles.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +2 -0
- package/components/Tooltip/Tooltip.js +25 -4
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +0 -65
- package/internal/themes/BasicTheme.js +0 -253
- package/internal/themes/BasicTheme.js.map +1 -1
- package/internal/themes/DarkTheme6_0.js +0 -1
- package/internal/themes/DarkTheme6_0.js.map +1 -1
- package/lib/locale/types.d.ts +0 -2
- package/lib/locale/types.js.map +1 -1
- package/lib/utils.d.ts +0 -2
- package/lib/utils.js +0 -1
- package/lib/utils.js.map +1 -1
- package/package.json +1 -9
- package/components/TimePicker/TimeClockIcon.d.ts +0 -3
- package/components/TimePicker/TimeClockIcon.js +0 -11
- package/components/TimePicker/TimeClockIcon.js.map +0 -1
- package/components/TimePicker/TimePicker.d.ts +0 -153
- package/components/TimePicker/TimePicker.js +0 -739
- package/components/TimePicker/TimePicker.js.map +0 -1
- package/components/TimePicker/TimePicker.styles.d.ts +0 -13
- package/components/TimePicker/TimePicker.styles.js +0 -42
- package/components/TimePicker/TimePicker.styles.js.map +0 -1
- package/components/TimePicker/TimePickerItems.d.ts +0 -20
- package/components/TimePicker/TimePickerItems.js +0 -115
- package/components/TimePicker/TimePickerItems.js.map +0 -1
- package/components/TimePicker/TimePickerMobilePopup.d.ts +0 -45
- package/components/TimePicker/TimePickerMobilePopup.js +0 -45
- package/components/TimePicker/TimePickerMobilePopup.js.map +0 -1
- package/components/TimePicker/TimePickerPopup.d.ts +0 -23
- package/components/TimePicker/TimePickerPopup.js +0 -18
- package/components/TimePicker/TimePickerPopup.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -29
- package/components/TimePicker/helpers/TimePicker.constants.js +0 -38
- package/components/TimePicker/helpers/TimePicker.constants.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.editing.d.ts +0 -23
- package/components/TimePicker/helpers/TimePicker.editing.js +0 -101
- package/components/TimePicker/helpers/TimePicker.editing.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.layout.d.ts +0 -6
- package/components/TimePicker/helpers/TimePicker.layout.js +0 -49
- package/components/TimePicker/helpers/TimePicker.layout.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.selection.d.ts +0 -5
- package/components/TimePicker/helpers/TimePicker.selection.js +0 -23
- package/components/TimePicker/helpers/TimePicker.selection.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.shared.d.ts +0 -91
- package/components/TimePicker/helpers/TimePicker.shared.js +0 -111
- package/components/TimePicker/helpers/TimePicker.shared.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -80
- package/components/TimePicker/helpers/TimePicker.value.js +0 -237
- package/components/TimePicker/helpers/TimePicker.value.js.map +0 -1
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.d.ts +0 -4
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js +0 -24
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js.map +0 -1
- package/components/TimePicker/helpers/validateTimePicker.d.ts +0 -8
- package/components/TimePicker/helpers/validateTimePicker.js +0 -17
- package/components/TimePicker/helpers/validateTimePicker.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +0 -23
- package/components/TimePicker/hooks/useTimePickerDropdown.js +0 -83
- package/components/TimePicker/hooks/useTimePickerDropdown.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerSelection.d.ts +0 -18
- package/components/TimePicker/hooks/useTimePickerSelection.js +0 -66
- package/components/TimePicker/hooks/useTimePickerSelection.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerSource.d.ts +0 -27
- package/components/TimePicker/hooks/useTimePickerSource.js +0 -59
- package/components/TimePicker/hooks/useTimePickerSource.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerValue.d.ts +0 -33
- package/components/TimePicker/hooks/useTimePickerValue.js +0 -97
- package/components/TimePicker/hooks/useTimePickerValue.js.map +0 -1
- package/components/TimePicker/index.d.ts +0 -4
- package/components/TimePicker/index.js +0 -3
- package/components/TimePicker/index.js.map +0 -1
- package/components/TimePicker/locale/index.d.ts +0 -4
- package/components/TimePicker/locale/index.js +0 -9
- package/components/TimePicker/locale/index.js.map +0 -1
- package/components/TimePicker/locale/locales/en.d.ts +0 -2
- package/components/TimePicker/locale/locales/en.js +0 -5
- package/components/TimePicker/locale/locales/en.js.map +0 -1
- package/components/TimePicker/locale/locales/ru.d.ts +0 -2
- package/components/TimePicker/locale/locales/ru.js +0 -5
- package/components/TimePicker/locale/locales/ru.js.map +0 -1
- package/components/TimePicker/locale/types.d.ts +0 -4
- package/components/TimePicker/locale/types.js +0 -2
- package/components/TimePicker/locale/types.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.d.ts +0 -16
- package/internal/NativeTimeInput/NativeTimeInput.js +0 -25
- package/internal/NativeTimeInput/NativeTimeInput.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
- package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
- package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +0 -7
- package/internal/NativeTimeInput/NativeTimeInput.utils.js +0 -28
- package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +0 -1
- package/internal/NativeTimeInput/index.d.ts +0 -1
- package/internal/NativeTimeInput/index.js +0 -2
- package/internal/NativeTimeInput/index.js.map +0 -1
- package/internal/TimeInput/TimeFragments.d.ts +0 -15
- package/internal/TimeInput/TimeFragments.js +0 -72
- package/internal/TimeInput/TimeFragments.js.map +0 -1
- package/internal/TimeInput/TimeFragments.styles.d.ts +0 -12
- package/internal/TimeInput/TimeFragments.styles.js +0 -43
- package/internal/TimeInput/TimeFragments.styles.js.map +0 -1
- package/internal/TimeInput/TimeInput.d.ts +0 -22
- package/internal/TimeInput/TimeInput.js +0 -103
- package/internal/TimeInput/TimeInput.js.map +0 -1
- package/internal/TimeInput/TimeInput.styles.d.ts +0 -6
- package/internal/TimeInput/TimeInput.styles.js +0 -21
- package/internal/TimeInput/TimeInput.styles.js.map +0 -1
- package/internal/TimeInput/index.d.ts +0 -1
- package/internal/TimeInput/index.js +0 -2
- package/internal/TimeInput/index.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
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 isNavigableMenuElement,\n isTimeItem,\n isTimeItemObject,\n isTimeMenuItem,\n type TimeFormat,\n type TimePickerMenuItem,\n type TimeItemValue,\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 { useTimePickerSource } from './hooks/useTimePickerSource.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\n/** Пустой список для клавиатуры: не создает новую ссылку на каждый рендер. */\nconst EMPTY_MENU_ITEMS: Array<TimePickerMenuItem<TimeItemValue>> = [];\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 * Запрос — это введенные цифры сегментов с сохранением их позиций: `12`, `12:3`, а если заполнены только минуты — `:30`.\n * Элемент задается строкой со временем — `'09:00'` — или объектом `{ value, label?, disabled? }`\n * с любыми дополнительными полями. Выбранный элемент приходит в `onValueChange` в той же форме.\n * Кроме значений времени можно передать React-элементы или функции, возвращающие React-элемент:\n * например, `MenuHeader`, `MenuFooter`, `MenuSeparator` или `MenuItem`.\n * Такие элементы отображаются в меню, но не участвуют в фильтрации и выборе значения.\n * Полученные элементы всегда фильтруются компонентом одинаково для массива и функции:\n * введенные цифры сегмента сравниваются с началом соответствующего сегмента элемента.\n * В выпадающем списке не может быть двух элементов с одинаковым временем:\n * из элементов с одинаковым временем компонент оставляет первый.\n * Пустые элементы из условного рендера — `isVisible && item` — пропускаются.\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`.\n * Если проп не задан, компонент неконтролируемый: он хранит значение сам и сообщает о нем через `onValueChange`. */\n value?: TimePickerValue<T>;\n /** Преобразует время в элемент.\n * Применяется ко временам, которые пользователь не выбрал из `source`:\n * ручной ввод, изменение стрелками, вставка из буфера, нативный пикер.\n * По умолчанию компонент повторяет форму элементов `source` и `value`:\n * для строк отдает строку, для объектов — `{ value }`.\n * Форму элементов функции-источника компонент узнает только после первого ответа,\n * поэтому до него — и всегда в режиме нативного пикера — время без этого пропа уходит строкой.\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 * Пока элементы уже показаны, а новый запрос к функции-источнику еще выполняется,\n * вместо иконки показывается индикатор загрузки. */\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 * в собственном формате: возвращенный элемент коммитится и приходит в `onValueChange`,\n * `null` очищает поле, а `undefined` оставляет значение прежним.\n */\n onUnexpectedInput?(value: string, blink: () => void): void | NoInfer<T> | null;\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 * С опцией `withoutOpenDropdown` фокус не открывает выпадающее меню. */\n focus(options?: { withoutOpenDropdown?: boolean }): void;\n /** Снимает фокус с поля ввода. */\n blur(): void;\n /** Открывает выпадающее меню, установив фокус на поле.\n * В режиме нативного пикера открывает системный пикер. */\n open(): 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 shouldSkipOpenOnFocusRef = useRef(false);\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 hasDropdown = isSourceFunction || (Array.isArray(source) && source.length > 0);\n\n const [isDropdownOpened, setIsDropdownOpened] = useState(false);\n const [isEditedAfterOpen, setIsEditedAfterOpen] = useState(false);\n\n /**\n * Форма элементов функции-источника: последняя, о которой компонент знает.\n * Форма запоминается, потому что элементы функции очищаются при закрытии меню,\n * а коммит значения после закрытия должен отдать наружу элемент той же формы.\n * Для массива форма всегда считается по текущим элементам — запоминать нечего.\n */\n const lastSourceItemShapeRef = useRef<boolean | null>(null);\n\n /**\n * Форма элемента, который компонент собирает для времени без элемента.\n * Повторяет форму элементов источника, а если их нет — форму внешнего `value`,\n * чтобы наружу уходило то же, что пришло внутрь.\n * Значение читается при коммите, поэтому обновляется в эффекте: так его не меняет отброшенный рендер.\n */\n const shouldBuildItemAsObjectRef = useRef(false);\n\n const valueToItemRef = useRef(valueToItem);\n valueToItemRef.current = valueToItem;\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 isValueControlled: value !== undefined,\n onCommitValue: handleCommitValue,\n onInputValueChange,\n });\n\n const filterQuery = isEditedAfterOpen ? getTimeFilterQuery(editingValue, format) : EMPTY_VALUE;\n\n const {\n items: sourceValueItems,\n fetchedQuery: fetchedItemsQuery,\n isLoading: isLoadingItems,\n } = useTimePickerSource<TimeItemValue>({ source, format, isDropdownOpened, filterQuery });\n\n useEffect(() => {\n if (!isSourceFunction || sourceValueItems.some(isTimeItem)) {\n lastSourceItemShapeRef.current = sourceValueItems.some((item) => isTimeItem(item) && isTimeItemObject(item));\n }\n\n shouldBuildItemAsObjectRef.current =\n lastSourceItemShapeRef.current === true || (value !== null && value !== undefined && isTimeItemObject(value));\n }, [isSourceFunction, sourceValueItems, 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 /**\n * Меню с одними лишь заголовками и разделителями показывать не о чем,\n * поэтому при активном фильтре нужен хотя бы один подошедший элемент со временем.\n */\n const hasDropdownContent =\n isLoadingItems || (filterQuery === EMPTY_VALUE ? resolvedItems.length > 0 : resolvedItems.some(isTimeMenuItem));\n\n /**\n * Элементы, с которыми работает клавиатура.\n * Пока меню скрыто, их нет: иначе стрелки ходили бы по невидимому списку,\n * а Enter выбирал бы невидимый элемент вместо коммита введенного времени.\n */\n const menuItems = hasDropdownContent ? resolvedItems : EMPTY_MENU_ITEMS;\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 (hasDropdown && editingValueRef.current !== nextEditingValue) {\n setIsEditedAfterOpen(true);\n }\n\n updateEditingValue(nextEditingValue);\n },\n [editingValueRef, hasDropdown, 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 { highlightedItemIndex, openDropdown, closeDropdown, resetHighlightedItem, tryNavigateItems } =\n useTimePickerDropdown({\n disabled,\n hasDropdown,\n items: menuItems,\n selectedItemIndex: selectedItemIndex >= 0 ? selectedItemIndex : null,\n autoHighlightKey,\n isDropdownOpened,\n setIsDropdownOpened,\n });\n\n /**\n * Фильтрация начинается только после правки значения при открытом меню.\n * Состояние живет ровно столько, сколько открыто меню: правка, которая заново открывает меню,\n * сохраняет свой запрос, а правка при закрытом меню — например стрелками — на список не влияет.\n */\n useEffect(() => {\n if (!isDropdownOpened && isEditedAfterOpen) {\n setIsEditedAfterOpen(false);\n }\n }, [isDropdownOpened, isEditedAfterOpen]);\n\n const popupId = popupIdRef.current;\n const highlightedMenuItem = highlightedItemIndex === null ? undefined : menuItems[highlightedItemIndex];\n\n /** Кастомный `MenuItem` может принести свой `id` — тогда указывать нужно именно на него. */\n const activeDescendantId =\n hasDropdown && highlightedItemIndex !== null && highlightedMenuItem\n ? ((isNavigableMenuElement(highlightedMenuItem) ? highlightedMenuItem.props.id : undefined) ??\n `${popupId}-item-${highlightedItemIndex}`)\n : 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 * элемент коммитится как есть, `null` очищает поле, а `undefined` оставляет значение прежним.\n */\n const handleUnexpectedInput = useCallback(\n (unexpectedValue: string) => {\n if (!onUnexpectedInput) {\n blinkInputValue();\n return;\n }\n\n const returnedValue = onUnexpectedInput(unexpectedValue, blinkInputValue);\n\n if (returnedValue === undefined) {\n return;\n }\n\n if (returnedValue === null) {\n commitValue(EMPTY_VALUE);\n return;\n }\n\n commitItem(returnedValue);\n },\n [blinkInputValue, commitItem, commitValue, 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 (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (highlightedItemIndex === null) {\n return false;\n }\n\n const resolvedItem = menuItems[highlightedItemIndex];\n\n if (!resolvedItem) {\n return true;\n }\n\n if (isNavigableMenuElement(resolvedItem)) {\n resolvedItem.props.onClick?.(event);\n return true;\n }\n\n if (!isTimeMenuItem(resolvedItem) || resolvedItem.disabled) {\n return true;\n }\n\n selectItem(resolvedItem.item);\n return true;\n },\n [highlightedItemIndex, menuItems, selectItem],\n );\n\n const focusInput = useCallback(\n (options?: { withoutOpenDropdown?: boolean }) => {\n if (disabled) {\n return;\n }\n\n shouldSkipOpenOnFocusRef.current = Boolean(options?.withoutOpenDropdown);\n getActiveInput()?.focus();\n shouldSkipOpenOnFocusRef.current = false;\n },\n [disabled, getActiveInput],\n );\n\n /**\n * Открывает выпадающее меню так же, как это делает пользователь: через фокус в поле.\n * Меню закрывается по потере фокуса, поэтому открытое без фокуса меню было бы нечем закрыть.\n * В режиме нативного пикера открывается системный пикер — своего меню в этом режиме нет.\n */\n const openInputDropdown = useCallback(() => {\n if (disabled) {\n return;\n }\n\n if (canUseMobileNativeTimePicker) {\n openNativeTimePicker();\n return;\n }\n\n getActiveInput()?.focus();\n openDropdown();\n }, [canUseMobileNativeTimePicker, disabled, getActiveInput, openDropdown, openNativeTimePicker]);\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 open: openInputDropdown,\n close: closeInputDropdown,\n getRootNode: () => rootRef.current,\n }),\n [blinkInput, blurInput, closeInputDropdown, focusInput, openInputDropdown],\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 /**\n * Блокировка контрола посреди ввода завершает его так же, как потеря фокуса:\n * меню закрывается, а недоведенное значение коммитится, а не остается висеть в поле.\n */\n useEffect(() => {\n if (!disabled) {\n return;\n }\n\n if (canUseMobileDropdownTimePicker && isDropdownOpened) {\n closeOpenedDropdown();\n return;\n }\n\n if (isDropdownOpened) {\n closeDropdown();\n }\n\n if (isInputFocused) {\n setIsInputFocused(false);\n resetMouseInteractionState();\n commitEditingValue();\n }\n }, [\n canUseMobileDropdownTimePicker,\n closeDropdown,\n closeOpenedDropdown,\n commitEditingValue,\n disabled,\n isDropdownOpened,\n isInputFocused,\n resetMouseInteractionState,\n ]);\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 const shouldSkipOpenDropdown = shouldSkipOpenOnFocusRef.current;\n shouldSkipOpenOnFocusRef.current = false;\n\n if (canUseMobileNativeTimePicker) {\n if (!shouldSkipOpenDropdown) {\n openNativeTimePicker();\n }\n onFocus?.(event);\n return;\n }\n\n if (canUseMobileDropdownTimePicker && !isMobilePopupInput) {\n if (!shouldSkipOpenDropdown) {\n openDropdown();\n }\n return;\n }\n\n setIsInputFocused(true);\n\n if (!shouldSkipOpenDropdown) {\n openDropdown();\n }\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 openDropdown();\n updateEditingValueAfterUserEdit(getEmptyDisplayValue(format));\n selectSegment('hours');\n return;\n }\n\n if (DIGIT_REGEXP.test(event.key)) {\n event.preventDefault();\n\n openDropdown();\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 // Отклоненная цифра не меняет ни значение, ни список, поэтому и подсветку трогать нельзя:\n // автоподсветка не восстановится, а Enter выбрал бы не тот элемент, который видит пользователь.\n if (result.shouldBlink) {\n handleUnexpectedInput(event.key);\n return;\n }\n\n resetHighlightedItem();\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 openDropdown();\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 openDropdown();\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(event)) {\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') ?? EMPTY_VALUE;\n\n event.preventDefault();\n\n if (pastedValue.trim() === EMPTY_VALUE) {\n return;\n }\n\n const nextDisplayValue = parsePastedTimeValue(pastedValue, format);\n\n if (isTimeDisplayEmpty(nextDisplayValue)) {\n handleUnexpectedInput(pastedValue);\n return;\n }\n\n openDropdown();\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={resolvedItems.length > 0 || isLoadingItems ? true : undefined}\n aria-controls={resolvedItems.length > 0 || isLoadingItems ? 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"]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Theme } from '../../lib/theming/Theme.js';
|
|
2
|
-
export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGetter<{
|
|
3
|
-
root(): string;
|
|
4
|
-
popup(t: Theme): string;
|
|
5
|
-
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
|
-
itemLabelDisabled(t: Theme): string;
|
|
12
|
-
itemLabelHover(t: Theme): string;
|
|
13
|
-
}>;
|
|
@@ -1,42 +0,0 @@
|
|
|
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
|
-
itemLabelDisabled: function (t) {
|
|
34
|
-
return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.menuItemDisabledColor);
|
|
35
|
-
},
|
|
36
|
-
itemLabelHover: function (t) {
|
|
37
|
-
return css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.menuItemCommentColorHover);
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
|
|
42
|
-
//# sourceMappingURL=TimePicker.styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;QAED,iBAAiB,YAAC,CAAQ;YACxB,OAAO,GAAG,+FAAA,iBACC,EAAuB,SACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QAED,cAAc,YAAC,CAAQ;YACrB,OAAO,GAAG,iGAAA,iBACC,EAA2B,SACrC,KADU,CAAC,CAAC,yBAAyB,EACpC;QACJ,CAAC;KACF,CAAC;AAxE8D,CAwE9D,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 itemLabelDisabled(t: Theme) {\n return css`\n color: ${t.menuItemDisabledColor};\n `;\n },\n\n itemLabelHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n `;\n },\n}));\n"]}
|
|
@@ -1,20 +0,0 @@
|
|
|
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 {};
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
-
var t = {};
|
|
14
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
-
t[p] = s[p];
|
|
16
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
-
t[p[i]] = s[p[i]];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
|
-
import { 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 { isNavigableMenuElement, 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, _b, _c, _d, _e;
|
|
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
|
-
var menuItemProps = element.props;
|
|
72
|
-
// Навигация смотрит на исходный элемент источника, поэтому пункт-функция в нее не попадает:
|
|
73
|
-
// выглядеть как доступная опция он не должен.
|
|
74
|
-
var isNavigable = isNavigableMenuElement(resolvedItem);
|
|
75
|
-
var isHighlighted = isNavigable && highlightedItemIndex === index;
|
|
76
|
-
return React.cloneElement(element, __assign({ key: key, isMobile: disableScrollContainer, size: size, id: (_b = menuItemProps.id) !== null && _b !== void 0 ? _b : (isNavigable && itemIdPrefix ? "".concat(itemIdPrefix, "-item-").concat(index) : undefined), role: (_c = menuItemProps.role) !== null && _c !== void 0 ? _c : 'option', 'aria-selected': (_d = menuItemProps['aria-selected']) !== null && _d !== void 0 ? _d : false, 'aria-disabled': (_e = menuItemProps['aria-disabled']) !== null && _e !== void 0 ? _e : (isNavigable ? undefined : true) }, (isHighlighted ? { state: 'hover' } : null)));
|
|
77
|
-
}
|
|
78
|
-
if (isMenuHeader(element)) {
|
|
79
|
-
return React.cloneElement(element, { key: key, size: size });
|
|
80
|
-
}
|
|
81
|
-
if (isMenuFooter(element)) {
|
|
82
|
-
return React.cloneElement(element, { key: key, size: size });
|
|
83
|
-
}
|
|
84
|
-
return React.cloneElement(element, { key: key });
|
|
85
|
-
}
|
|
86
|
-
var normalizedItem = normalizeTimeValue(resolvedItem.value, format);
|
|
87
|
-
var state;
|
|
88
|
-
if (highlightedItemIndex === index) {
|
|
89
|
-
state = 'hover';
|
|
90
|
-
}
|
|
91
|
-
else if (normalizedItem === normalizedValue) {
|
|
92
|
-
state = 'selected';
|
|
93
|
-
}
|
|
94
|
-
return (React.createElement(MenuItem, { key: "".concat(resolvedItem.value, "-").concat(index), id: itemIdPrefix ? "".concat(itemIdPrefix, "-item-").concat(index) : undefined, role: 'option', "aria-selected": normalizedItem === normalizedValue, "aria-disabled": resolvedItem.disabled || undefined, component: ItemRoot, disabled: resolvedItem.disabled, isNotSelectable: resolvedItem.disabled, size: size, state: state, onClick: resolvedItem.disabled ? undefined : function () { return onSelectItem(resolvedItem.item); } }, function (activeState) {
|
|
95
|
-
var _a;
|
|
96
|
-
return (React.createElement("span", { "data-tid": TimePickerDataTids.item, className: cx(styles.item(), itemSizeClassName), ref: function (node) {
|
|
97
|
-
if (!itemRefs) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
if (node) {
|
|
101
|
-
itemRefs.current.set(index, node);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
itemRefs.current.delete(index);
|
|
105
|
-
}
|
|
106
|
-
} }, renderItem ? (renderItem(resolvedItem.item, activeState !== null && activeState !== void 0 ? activeState : null)) : (React.createElement(React.Fragment, null,
|
|
107
|
-
React.createElement("span", { className: styles.itemValue() }, normalizedItem),
|
|
108
|
-
resolvedItem.label && (React.createElement("span", { className: cx(styles.itemLabel(theme), (_a = {},
|
|
109
|
-
_a[styles.itemLabelDisabled(theme)] = resolvedItem.disabled,
|
|
110
|
-
_a[styles.itemLabelHover(theme)] = activeState === 'hover',
|
|
111
|
-
_a)) }, resolvedItem.label))))));
|
|
112
|
-
}));
|
|
113
|
-
})));
|
|
114
|
-
};
|
|
115
|
-
//# sourceMappingURL=TimePickerItems.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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 isNavigableMenuElement,\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 const menuItemProps = element.props as MenuItemProps;\n // Навигация смотрит на исходный элемент источника, поэтому пункт-функция в нее не попадает:\n // выглядеть как доступная опция он не должен.\n const isNavigable = isNavigableMenuElement(resolvedItem);\n const isHighlighted = isNavigable && highlightedItemIndex === index;\n\n return React.cloneElement(element, {\n key,\n isMobile: disableScrollContainer,\n size,\n id: menuItemProps.id ?? (isNavigable && itemIdPrefix ? `${itemIdPrefix}-item-${index}` : undefined),\n role: menuItemProps.role ?? 'option',\n 'aria-selected': menuItemProps['aria-selected'] ?? false,\n 'aria-disabled': menuItemProps['aria-disabled'] ?? (isNavigable ? undefined : true),\n ...(isHighlighted ? { state: 'hover' } : null),\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 id={itemIdPrefix ? `${itemIdPrefix}-item-${index}` : undefined}\n role={'option'}\n aria-selected={normalizedItem === normalizedValue}\n aria-disabled={resolvedItem.disabled || undefined}\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 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 && (\n <span\n className={cx(styles.itemLabel(theme), {\n [styles.itemLabelDisabled(theme)]: resolvedItem.disabled,\n [styles.itemLabelHover(theme)]: activeState === 'hover',\n })}\n >\n {resolvedItem.label}\n </span>\n )}\n </>\n )}\n </span>\n )}\n </MenuItem>\n );\n })}\n </Menu>\n );\n};\n"]}
|
|
@@ -1,45 +0,0 @@
|
|
|
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 {};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
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({ opened: opened }, themeDependantProps, { onCloseRequest: onCloseRequest }),
|
|
42
|
-
React.createElement("div", { id: id, role: 'listbox', "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
|
|
@@ -1 +0,0 @@
|
|
|
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 opened={opened} {...themeDependantProps} onCloseRequest={onCloseRequest}>\n <div id={id} role={'listbox'} 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"]}
|
|
@@ -1,23 +0,0 @@
|
|
|
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 {};
|
|
@@ -1,18 +0,0 @@
|
|
|
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, { 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", { id: id, role: 'listbox', 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
|
|
@@ -1 +0,0 @@
|
|
|
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,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,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,cAAc,EAAE,EAAtB,CAAsB;YAC1G,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 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 id={id} role={'listbox'} 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"]}
|