@skbkontur/react-ui 6.1.7-65057.0 → 6.1.7-8e9d5.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.
- package/components/TimePicker/TimePicker.d.ts +36 -29
- package/components/TimePicker/TimePicker.js +234 -132
- package/components/TimePicker/TimePicker.js.map +1 -1
- package/components/TimePicker/TimePicker.styles.d.ts +2 -2
- package/components/TimePicker/TimePicker.styles.js +4 -4
- package/components/TimePicker/TimePicker.styles.js.map +1 -1
- package/components/TimePicker/TimePickerItems.d.ts +5 -1
- package/components/TimePicker/TimePickerItems.js +16 -13
- package/components/TimePicker/TimePickerItems.js.map +1 -1
- package/components/TimePicker/TimePickerMobilePopup.d.ts +5 -2
- package/components/TimePicker/TimePickerMobilePopup.js +3 -3
- package/components/TimePicker/TimePickerMobilePopup.js.map +1 -1
- package/components/TimePicker/TimePickerPopup.d.ts +5 -1
- package/components/TimePicker/TimePickerPopup.js +2 -2
- package/components/TimePicker/TimePickerPopup.js.map +1 -1
- package/components/TimePicker/helpers/TimePicker.constants.d.ts +3 -1
- package/components/TimePicker/helpers/TimePicker.constants.js +3 -7
- package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -1
- package/components/TimePicker/helpers/TimePicker.editing.d.ts +1 -5
- package/components/TimePicker/helpers/TimePicker.editing.js +8 -35
- package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -1
- package/components/TimePicker/helpers/TimePicker.shared.d.ts +15 -24
- package/components/TimePicker/helpers/TimePicker.shared.js +13 -27
- package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -1
- package/components/TimePicker/helpers/TimePicker.value.d.ts +3 -13
- package/components/TimePicker/helpers/TimePicker.value.js +13 -43
- package/components/TimePicker/helpers/TimePicker.value.js.map +1 -1
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.d.ts +2 -0
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js +2 -0
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js.map +1 -1
- package/components/TimePicker/helpers/validateTimePicker.js +2 -4
- package/components/TimePicker/helpers/validateTimePicker.js.map +1 -1
- package/components/TimePicker/hooks/useTimePickerDropdown.js +9 -25
- package/components/TimePicker/hooks/useTimePickerDropdown.js.map +1 -1
- package/components/TimePicker/hooks/useTimePickerSource.d.ts +3 -1
- package/components/TimePicker/hooks/useTimePickerSource.js +14 -6
- package/components/TimePicker/hooks/useTimePickerSource.js.map +1 -1
- package/components/TimePicker/hooks/useTimePickerValue.d.ts +9 -4
- package/components/TimePicker/hooks/useTimePickerValue.js +22 -23
- package/components/TimePicker/hooks/useTimePickerValue.js.map +1 -1
- package/components/TimePicker/index.d.ts +1 -1
- package/components/TimePicker/index.js.map +1 -1
- package/components/TimePicker/locale/locales/en.js +2 -0
- package/components/TimePicker/locale/locales/en.js.map +1 -1
- package/components/TimePicker/locale/locales/ru.js +2 -0
- package/components/TimePicker/locale/locales/ru.js.map +1 -1
- package/components/TimePicker/locale/types.d.ts +2 -0
- package/components/TimePicker/locale/types.js.map +1 -1
- package/internal/NativeTimeInput/NativeTimeInput.d.ts +4 -0
- package/internal/NativeTimeInput/NativeTimeInput.js +7 -2
- package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -1
- package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +2 -0
- package/internal/NativeTimeInput/NativeTimeInput.utils.js +4 -8
- package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +1 -1
- package/internal/TimeInput/TimeFragments.d.ts +0 -1
- package/internal/TimeInput/TimeFragments.js +30 -8
- package/internal/TimeInput/TimeFragments.js.map +1 -1
- package/internal/TimeInput/TimeFragments.styles.d.ts +15 -0
- package/internal/TimeInput/TimeFragments.styles.js +39 -9
- package/internal/TimeInput/TimeFragments.styles.js.map +1 -1
- package/internal/TimeInput/TimeInput.d.ts +0 -1
- package/internal/TimeInput/TimeInput.js +0 -1
- package/internal/TimeInput/TimeInput.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,28 +4,23 @@ import type { CommonProps } from '../../internal/CommonWrapper/index.js';
|
|
|
4
4
|
import type { SizeProp } from '../../lib/types/props.js';
|
|
5
5
|
import { type NoInfer } from '../../lib/utils.js';
|
|
6
6
|
import type { MenuItemState } from '../MenuItem/index.js';
|
|
7
|
-
import { type TimeFormat, type TimeItemValue, type TimePickerSource, type TimePickerValue, type TimePickerValueToItem } from './helpers/TimePicker.shared.js';
|
|
7
|
+
import { type TimeFormat, type TimeItem, type TimePickerEmptyItem, type TimeItemValue, type TimePickerSource, type TimePickerValue, type TimePickerValueToItem } from './helpers/TimePicker.shared.js';
|
|
8
8
|
import { validateTimePicker } from './helpers/validateTimePicker.js';
|
|
9
9
|
export interface TimePickerProps<T extends TimeItemValue = string> extends CommonProps, Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'> {
|
|
10
10
|
/** Устанавливает формат времени @default HH:mm */
|
|
11
11
|
format?: TimeFormat;
|
|
12
|
-
/** Задает источник элементов выпадающего
|
|
13
|
-
*
|
|
12
|
+
/** Задает источник элементов выпадающего списка: массив либо функцию запроса,
|
|
13
|
+
* которая возвращает массив или Promise с массивом.
|
|
14
14
|
* Запрос — это введенные цифры сегментов с сохранением их позиций: `12`, `12:3`, а если заполнены только минуты — `:30`.
|
|
15
|
-
*
|
|
16
|
-
* с любыми дополнительными
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* Пустые элементы из условного рендера — `isVisible && item` — пропускаются.
|
|
25
|
-
* Пока Promise не разрешился и предыдущих результатов нет, в выпадающем меню показывается спиннер загрузки.
|
|
26
|
-
* Если предыдущие результаты есть, подходящие элементы остаются видимыми до прихода новых,
|
|
27
|
-
* а индикация загрузки показывается в правой иконке поля.
|
|
28
|
-
* Замена функции не перезапрашивает уже открытый список: актуальная функция используется при следующем запросе. */
|
|
15
|
+
* Элементы задаются либо строками со временем — `'09:00'`, — либо объектами `{ value, label?, disabled? }`
|
|
16
|
+
* с любыми дополнительными полями; смешивать формы в одном источнике нельзя, это ошибка типов.
|
|
17
|
+
* Выбранный элемент приходит в `onValueChange` в той же форме.
|
|
18
|
+
* Кроме значений времени можно передать React-элементы — например `MenuHeader` или `MenuItem`:
|
|
19
|
+
* они отображаются в меню, но не участвуют в фильтрации и выборе значения.
|
|
20
|
+
* Фильтрацию, индикацию загрузки и повторные запросы компонент берет на себя,
|
|
21
|
+
* подробности — в разделе документации про выпадающий список.
|
|
22
|
+
* Замена самой функции уже открытый список не перезапрашивает: как в `ComboBox`,
|
|
23
|
+
* актуальная функция используется при следующем запросе. */
|
|
29
24
|
source?: TimePickerSource<T>;
|
|
30
25
|
/** Отрисовывает значение времени в выпадающем списке. Не применяется к React-элементам из `source`. */
|
|
31
26
|
renderItem?: (item: T, state: MenuItemState) => ReactNode;
|
|
@@ -43,9 +38,8 @@ export interface TimePickerProps<T extends TimeItemValue = string> extends Commo
|
|
|
43
38
|
* ручной ввод, изменение стрелками, вставка из буфера, нативный пикер.
|
|
44
39
|
* По умолчанию компонент повторяет форму элементов `source` и `value`:
|
|
45
40
|
* для строк отдает строку, для объектов — `{ value }`.
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* Задавайте этот проп, если элементы содержат поля, кроме `value`, `label` и `disabled`.
|
|
41
|
+
* Задавайте этот проп, если элементы содержат поля, кроме `value`, `label` и `disabled`:
|
|
42
|
+
* форму элементов функции-источника компонент узнает только после ее первого ответа.
|
|
49
43
|
* @default (value) => value | ({ value }) */
|
|
50
44
|
valueToItem?: TimePickerValueToItem<T>;
|
|
51
45
|
/** Устанавливает фокус на поле ввода после окончания загрузки страницы @default false */
|
|
@@ -56,7 +50,8 @@ export interface TimePickerProps<T extends TimeItemValue = string> extends Commo
|
|
|
56
50
|
error?: boolean;
|
|
57
51
|
/** Переводит контрол в состояние валидации предупреждения. */
|
|
58
52
|
warning?: boolean;
|
|
59
|
-
/** Включает нативный системный выбор времени
|
|
53
|
+
/** Включает нативный системный выбор времени в мобильной верстке.
|
|
54
|
+
* Мобильная верстка определяется медиавыражением темы, как в остальных адаптивных контролах. */
|
|
60
55
|
useMobileNativeTimePicker?: boolean;
|
|
61
56
|
/** Расположение выпадающего меню. */
|
|
62
57
|
menuPos?: 'top' | 'bottom';
|
|
@@ -83,14 +78,15 @@ export interface TimePickerProps<T extends TimeItemValue = string> extends Commo
|
|
|
83
78
|
* Событие изменения значения `value`.
|
|
84
79
|
* Вызывается при коммите значения: потере фокуса, нажатии Enter, выборе элемента из списка
|
|
85
80
|
* или изменении в нативном пикере.
|
|
86
|
-
*
|
|
87
|
-
* при выборе из выпадающего списка — тот же элемент, в остальных случаях — результат `valueToItem
|
|
88
|
-
*
|
|
89
|
-
*
|
|
81
|
+
* Элемент приходит в той же форме, в которой элементы переданы в `source`:
|
|
82
|
+
* при выборе из выпадающего списка — тот же элемент, в остальных случаях — результат `valueToItem`.
|
|
83
|
+
* Пустое значение приходит пустой строкой в строковой форме и `null` — в объектной.
|
|
84
|
+
* Время элемента полностью нормализовано до формата `HH:mm[:ss]`,
|
|
85
|
+
* у элемента-объекта его можно прочитать из `item.value`.
|
|
90
86
|
* Тип элемента выводится из `source` и `value`, но не из этого обработчика,
|
|
91
87
|
* иначе `onValueChange={setItem}` сузил бы его до `TimeItem`.
|
|
92
88
|
*/
|
|
93
|
-
onValueChange?(item: NoInfer<T> |
|
|
89
|
+
onValueChange?(item: NoInfer<T> | TimePickerEmptyItem<T>): void;
|
|
94
90
|
/**
|
|
95
91
|
* Событие изменения значения в процессе ввода.
|
|
96
92
|
* Значение частично нормализуется по сегментам, например `1` => `01`, незаполненный хвост отбрасывается.
|
|
@@ -105,9 +101,17 @@ export interface TimePickerProps<T extends TimeItemValue = string> extends Commo
|
|
|
105
101
|
* его можно проверить через `TimePicker.validate`.
|
|
106
102
|
* Вторым аргументом передается метод вспыхивания рамки поля.
|
|
107
103
|
* Если обработчик не задан, поле вспыхивает само.
|
|
104
|
+
* Обработчик может подставить значение вместо некорректного ввода — например разобрать вставку
|
|
105
|
+
* в собственном формате: возвращенный элемент коммитится и приходит в `onValueChange`,
|
|
106
|
+
* `null` очищает поле, а `undefined` оставляет значение прежним.
|
|
107
|
+
*/
|
|
108
|
+
onUnexpectedInput?(value: string, blink: () => void): void | NoInfer<T> | null;
|
|
109
|
+
/**
|
|
110
|
+
* Событие потери фокуса.
|
|
111
|
+
* Вызывается после коммита значения и следующего за ним рендера,
|
|
112
|
+
* поэтому обработчик видит уже измененное значение — например при выборе элемента в мобильном попапе.
|
|
113
|
+
* Из-за этого событие приходит отложенно и его `currentTarget` уже пуст: элемент читайте из `target`.
|
|
108
114
|
*/
|
|
109
|
-
onUnexpectedInput?(value: string, blink: () => void): void;
|
|
110
|
-
/** Событие потери фокуса. */
|
|
111
115
|
onBlur?(event: React.FocusEvent<HTMLElement>): void;
|
|
112
116
|
/** Событие получения фокуса. */
|
|
113
117
|
onFocus?(event: React.FocusEvent<HTMLElement>): void;
|
|
@@ -136,7 +140,10 @@ export interface TimePickerRef {
|
|
|
136
140
|
}
|
|
137
141
|
export type TimePicker = TimePickerRef;
|
|
138
142
|
interface TimePickerComponent {
|
|
139
|
-
|
|
143
|
+
/** Строковый режим: элементы source — строки со временем. */
|
|
144
|
+
(props: TimePickerProps<string> & React.RefAttributes<TimePickerRef>): React.ReactElement | null;
|
|
145
|
+
/** Объектный режим: элементы source — объекты, расширяющие `{ value: string }`. */
|
|
146
|
+
<T extends TimeItem>(props: TimePickerProps<T> & React.RefAttributes<TimePickerRef>): React.ReactElement | null;
|
|
140
147
|
displayName?: string;
|
|
141
148
|
__KONTUR_REACT_UI__: string;
|
|
142
149
|
/** Проверяет, что значение полностью заполнено, соответствует формату и попадает в диапазон `minTime`/`maxTime`. */
|