@skbkontur/react-ui 6.2.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/components/Group/Group.js +3 -2
  3. package/components/Group/Group.js.map +1 -1
  4. package/components/Input/Input.d.ts +1 -1
  5. package/components/Input/Input.js.map +1 -1
  6. package/components/MenuItem/MenuItem.d.ts +1 -1
  7. package/components/MenuItem/MenuItem.js.map +1 -1
  8. package/components/Switcher/Switcher.d.ts +1 -1
  9. package/components/Switcher/Switcher.js +1 -1
  10. package/components/Switcher/Switcher.js.map +1 -1
  11. package/components/TimePicker/TimeClockIcon.d.ts +3 -0
  12. package/components/TimePicker/TimeClockIcon.js +11 -0
  13. package/components/TimePicker/TimeClockIcon.js.map +1 -0
  14. package/components/TimePicker/TimePicker.d.ts +144 -0
  15. package/components/TimePicker/TimePicker.js +795 -0
  16. package/components/TimePicker/TimePicker.js.map +1 -0
  17. package/components/TimePicker/TimePicker.styles.d.ts +12 -0
  18. package/components/TimePicker/TimePicker.styles.js +39 -0
  19. package/components/TimePicker/TimePicker.styles.js.map +1 -0
  20. package/components/TimePicker/TimePickerItems.d.ts +23 -0
  21. package/components/TimePicker/TimePickerItems.js +115 -0
  22. package/components/TimePicker/TimePickerItems.js.map +1 -0
  23. package/components/TimePicker/TimePickerMobilePopup.d.ts +48 -0
  24. package/components/TimePicker/TimePickerMobilePopup.js +45 -0
  25. package/components/TimePicker/TimePickerMobilePopup.js.map +1 -0
  26. package/components/TimePicker/TimePickerPopup.d.ts +26 -0
  27. package/components/TimePicker/TimePickerPopup.js +18 -0
  28. package/components/TimePicker/TimePickerPopup.js.map +1 -0
  29. package/components/TimePicker/helpers/TimePicker.constants.d.ts +31 -0
  30. package/components/TimePicker/helpers/TimePicker.constants.js +34 -0
  31. package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -0
  32. package/components/TimePicker/helpers/TimePicker.editing.d.ts +19 -0
  33. package/components/TimePicker/helpers/TimePicker.editing.js +74 -0
  34. package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -0
  35. package/components/TimePicker/helpers/TimePicker.layout.d.ts +6 -0
  36. package/components/TimePicker/helpers/TimePicker.layout.js +49 -0
  37. package/components/TimePicker/helpers/TimePicker.layout.js.map +1 -0
  38. package/components/TimePicker/helpers/TimePicker.selection.d.ts +5 -0
  39. package/components/TimePicker/helpers/TimePicker.selection.js +23 -0
  40. package/components/TimePicker/helpers/TimePicker.selection.js.map +1 -0
  41. package/components/TimePicker/helpers/TimePicker.shared.d.ts +71 -0
  42. package/components/TimePicker/helpers/TimePicker.shared.js +90 -0
  43. package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -0
  44. package/components/TimePicker/helpers/TimePicker.value.d.ts +69 -0
  45. package/components/TimePicker/helpers/TimePicker.value.js +225 -0
  46. package/components/TimePicker/helpers/TimePicker.value.js.map +1 -0
  47. package/components/TimePicker/helpers/scrollSelectedItemIntoView.d.ts +6 -0
  48. package/components/TimePicker/helpers/scrollSelectedItemIntoView.js +26 -0
  49. package/components/TimePicker/helpers/scrollSelectedItemIntoView.js.map +1 -0
  50. package/components/TimePicker/helpers/validateTimePicker.d.ts +8 -0
  51. package/components/TimePicker/helpers/validateTimePicker.js +16 -0
  52. package/components/TimePicker/helpers/validateTimePicker.js.map +1 -0
  53. package/components/TimePicker/index.d.ts +4 -0
  54. package/components/TimePicker/index.js +3 -0
  55. package/components/TimePicker/index.js.map +1 -0
  56. package/components/TimePicker/locale/index.d.ts +4 -0
  57. package/components/TimePicker/locale/index.js +9 -0
  58. package/components/TimePicker/locale/index.js.map +1 -0
  59. package/components/TimePicker/locale/locales/en.d.ts +2 -0
  60. package/components/TimePicker/locale/locales/en.js +7 -0
  61. package/components/TimePicker/locale/locales/en.js.map +1 -0
  62. package/components/TimePicker/locale/locales/ru.d.ts +2 -0
  63. package/components/TimePicker/locale/locales/ru.js +7 -0
  64. package/components/TimePicker/locale/locales/ru.js.map +1 -0
  65. package/components/TimePicker/locale/types.d.ts +6 -0
  66. package/components/TimePicker/locale/types.js +2 -0
  67. package/components/TimePicker/locale/types.js.map +1 -0
  68. package/index.d.ts +1 -0
  69. package/index.js +1 -0
  70. package/index.js.map +1 -1
  71. package/internal/NativeTimeInput/NativeTimeInput.d.ts +20 -0
  72. package/internal/NativeTimeInput/NativeTimeInput.js +30 -0
  73. package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -0
  74. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -0
  75. package/internal/NativeTimeInput/NativeTimeInput.styles.js +15 -0
  76. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -0
  77. package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +9 -0
  78. package/internal/NativeTimeInput/NativeTimeInput.utils.js +24 -0
  79. package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +1 -0
  80. package/internal/NativeTimeInput/index.d.ts +1 -0
  81. package/internal/NativeTimeInput/index.js +2 -0
  82. package/internal/NativeTimeInput/index.js.map +1 -0
  83. package/internal/TimeInput/TimeFragments.d.ts +14 -0
  84. package/internal/TimeInput/TimeFragments.js +94 -0
  85. package/internal/TimeInput/TimeFragments.js.map +1 -0
  86. package/internal/TimeInput/TimeFragments.styles.d.ts +32 -0
  87. package/internal/TimeInput/TimeFragments.styles.js +78 -0
  88. package/internal/TimeInput/TimeFragments.styles.js.map +1 -0
  89. package/internal/TimeInput/TimeInput.d.ts +21 -0
  90. package/internal/TimeInput/TimeInput.js +104 -0
  91. package/internal/TimeInput/TimeInput.js.map +1 -0
  92. package/internal/TimeInput/TimeInput.styles.d.ts +7 -0
  93. package/internal/TimeInput/TimeInput.styles.js +24 -0
  94. package/internal/TimeInput/TimeInput.styles.js.map +1 -0
  95. package/internal/TimeInput/index.d.ts +1 -0
  96. package/internal/TimeInput/index.js +2 -0
  97. package/internal/TimeInput/index.js.map +1 -0
  98. package/internal/TimePicker/useTimePickerDropdown.d.ts +23 -0
  99. package/internal/TimePicker/useTimePickerDropdown.js +67 -0
  100. package/internal/TimePicker/useTimePickerDropdown.js.map +1 -0
  101. package/internal/TimePicker/useTimePickerSelection.d.ts +18 -0
  102. package/internal/TimePicker/useTimePickerSelection.js +66 -0
  103. package/internal/TimePicker/useTimePickerSelection.js.map +1 -0
  104. package/internal/TimePicker/useTimePickerSource.d.ts +29 -0
  105. package/internal/TimePicker/useTimePickerSource.js +67 -0
  106. package/internal/TimePicker/useTimePickerSource.js.map +1 -0
  107. package/internal/TimePicker/useTimePickerValue.d.ts +35 -0
  108. package/internal/TimePicker/useTimePickerValue.js +94 -0
  109. package/internal/TimePicker/useTimePickerValue.js.map +1 -0
  110. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +2 -0
  111. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +20 -0
  112. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +1 -0
  113. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +2 -0
  114. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +20 -0
  115. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +1 -0
  116. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +2 -0
  117. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +20 -0
  118. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +1 -0
  119. package/internal/themes/BasicTheme.d.ts +34 -0
  120. package/internal/themes/BasicTheme.js +90 -0
  121. package/internal/themes/BasicTheme.js.map +1 -1
  122. package/internal/themes/DarkTheme6_0.js +3 -0
  123. package/internal/themes/DarkTheme6_0.js.map +1 -1
  124. package/internal/themes/DarkTheme6_2.d.ts +1 -0
  125. package/internal/themes/DarkTheme6_2.js +30 -0
  126. package/internal/themes/DarkTheme6_2.js.map +1 -0
  127. package/internal/themes/DarkTheme6_3.d.ts +1 -0
  128. package/internal/themes/DarkTheme6_3.js +30 -0
  129. package/internal/themes/DarkTheme6_3.js.map +1 -0
  130. package/internal/themes/LightTheme6_2.d.ts +1 -0
  131. package/internal/themes/LightTheme6_2.js +30 -0
  132. package/internal/themes/LightTheme6_2.js.map +1 -0
  133. package/internal/themes/LightTheme6_3.d.ts +1 -0
  134. package/internal/themes/LightTheme6_3.js +30 -0
  135. package/internal/themes/LightTheme6_3.js.map +1 -0
  136. package/lib/locale/types.d.ts +2 -0
  137. package/lib/locale/types.js.map +1 -1
  138. package/lib/theming/ThemeVersions.d.ts +1 -1
  139. package/lib/theming/ThemeVersions.js.map +1 -1
  140. package/lib/theming/themes/DarkTheme.d.ts +2 -0
  141. package/lib/theming/themes/DarkTheme.js +5 -1
  142. package/lib/theming/themes/DarkTheme.js.map +1 -1
  143. package/lib/theming/themes/LightTheme.d.ts +2 -0
  144. package/lib/theming/themes/LightTheme.js +5 -1
  145. package/lib/theming/themes/LightTheme.js.map +1 -1
  146. package/lib/utils.d.ts +2 -0
  147. package/lib/utils.js +1 -0
  148. package/lib/utils.js.map +1 -1
  149. package/package.json +11 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimePickerDropdown.js","sourceRoot":"","sources":["useTimePickerDropdown.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport {\n isHighlightableMenuItem,\n isTimeMenuItem,\n type TimeItemValue,\n type TimePickerMenuItem,\n} from '../../components/TimePicker/helpers/TimePicker.shared.js';\n\ninterface UseTimePickerDropdownOptions<T extends TimeItemValue> {\n hasDropdown: boolean;\n disabled?: boolean;\n items: Array<TimePickerMenuItem<T>>;\n selectedItemIndex: number | null;\n autoHighlightKey: string | null;\n /**\n * Состоянием открытости владеет компонент: от него зависит запрос элементов,\n * а элементы, в свою очередь, нужны этому хуку для навигации.\n */\n isDropdownOpened: boolean;\n setIsDropdownOpened(isOpened: boolean): void;\n}\n\ninterface UseTimePickerDropdownResult {\n highlightedItemIndex: number | null;\n openDropdown(): void;\n closeDropdown(): void;\n resetHighlightedItem(): void;\n tryNavigateItems(step: 1 | -1): boolean;\n}\n\nexport const useTimePickerDropdown = <T extends TimeItemValue>(\n options: UseTimePickerDropdownOptions<T>,\n): UseTimePickerDropdownResult => {\n const { hasDropdown, disabled, items, selectedItemIndex, autoHighlightKey, isDropdownOpened, setIsDropdownOpened } =\n options;\n\n const [highlightedItemIndex, setHighlightedItemIndex] = useState<number | null>(null);\n const lastAutoHighlightKeyRef = useRef<string | null>(null);\n\n const openDropdown = useCallback(() => {\n if (!hasDropdown || disabled) {\n return;\n }\n\n setIsDropdownOpened(true);\n }, [disabled, hasDropdown, setIsDropdownOpened]);\n\n const closeDropdown = useCallback(() => {\n setIsDropdownOpened(false);\n setHighlightedItemIndex(null);\n }, [setIsDropdownOpened]);\n\n const resetHighlightedItem = useCallback(() => {\n setHighlightedItemIndex(null);\n }, []);\n\n useEffect(() => {\n if (lastAutoHighlightKeyRef.current === autoHighlightKey) {\n return;\n }\n\n lastAutoHighlightKeyRef.current = autoHighlightKey;\n\n if (autoHighlightKey === null) {\n setHighlightedItemIndex(null);\n return;\n }\n\n const firstEnabledItemIndex = items.findIndex((item) => isTimeMenuItem(item) && !item.disabled);\n setHighlightedItemIndex(firstEnabledItemIndex >= 0 ? firstEnabledItemIndex : null);\n }, [autoHighlightKey, items]);\n\n useEffect(() => {\n setHighlightedItemIndex((current) => {\n if (current === null) {\n return current;\n }\n\n const item = items[current];\n\n return !item || !isHighlightableMenuItem(item) ? null : current;\n });\n }, [items]);\n\n const tryNavigateItems = useCallback(\n (step: 1 | -1) => {\n if (!hasDropdown || !isDropdownOpened) {\n return false;\n }\n\n const enabledIndexes = items.flatMap((item, index) => (isHighlightableMenuItem(item) ? index : []));\n\n if (enabledIndexes.length === 0) {\n return false;\n }\n\n /**\n * Навигация идет от выделенного элемента, а если его нет — от выбранного значения.\n * Отсутствующий и заблокированный элементы дают `-1`, и тогда шаг вниз попадает на первый элемент,\n * а шаг вверх выходит за начало и по фолбэку ниже уходит на последний.\n */\n const currentIndex = enabledIndexes.indexOf(highlightedItemIndex ?? selectedItemIndex ?? -1);\n\n setHighlightedItemIndex(\n enabledIndexes[currentIndex + step] ??\n (step > 0 ? enabledIndexes[0] : enabledIndexes[enabledIndexes.length - 1]),\n );\n\n return true;\n },\n [hasDropdown, highlightedItemIndex, isDropdownOpened, selectedItemIndex, items],\n );\n\n return {\n highlightedItemIndex,\n openDropdown,\n closeDropdown,\n resetHighlightedItem,\n tryNavigateItems,\n };\n};\n"]}
@@ -0,0 +1,18 @@
1
+ import type { TimeFormat, TimeSegment } from '../../components/TimePicker/helpers/TimePicker.shared.js';
2
+ import type { TimeInputRef } from '../TimeInput/index.js';
3
+ type TimePickerSelection = TimeSegment | 'all';
4
+ interface UseTimePickerSelectionOptions {
5
+ isInputFocused: boolean;
6
+ format: TimeFormat;
7
+ getInput: () => TimeInputRef | null;
8
+ displayValue: string;
9
+ }
10
+ interface UseTimePickerSelectionResult {
11
+ selection: TimePickerSelection;
12
+ selectedSegment: TimeSegment;
13
+ selectSegment: (segment: TimeSegment) => void;
14
+ selectAll: () => void;
15
+ syncSelectionWithDOM: () => boolean;
16
+ }
17
+ export declare const useTimePickerSelection: (options: UseTimePickerSelectionOptions) => UseTimePickerSelectionResult;
18
+ export {};
@@ -0,0 +1,66 @@
1
+ import { useCallback, useLayoutEffect, useState } from 'react';
2
+ export var useTimePickerSelection = function (options) {
3
+ var isInputFocused = options.isInputFocused, format = options.format, displayValue = options.displayValue, getInput = options.getInput;
4
+ var _a = useState('hours'), selection = _a[0], setSelectionState = _a[1];
5
+ var selectedSegment = selection === 'all' ? 'hours' : selection;
6
+ var applySelectionToInput = useCallback(function (nextSelection) {
7
+ var currentInput = getInput();
8
+ if (!currentInput) {
9
+ return;
10
+ }
11
+ var node = currentInput.getNode();
12
+ var isInputActive = (node === null || node === void 0 ? void 0 : node.ownerDocument.activeElement) === node;
13
+ var applySelection = function (input) {
14
+ if (nextSelection === 'all') {
15
+ input.selectAll();
16
+ return;
17
+ }
18
+ input.selectSegment(nextSelection);
19
+ };
20
+ if (isInputActive) {
21
+ applySelection(currentInput);
22
+ return;
23
+ }
24
+ setTimeout(function () {
25
+ var nextInput = getInput();
26
+ if (!nextInput) {
27
+ return;
28
+ }
29
+ nextInput.focus();
30
+ applySelection(nextInput);
31
+ }, 0);
32
+ }, [getInput]);
33
+ var selectSegment = useCallback(function (segment) {
34
+ if (segment === 'seconds' && format === 'HH:mm') {
35
+ return;
36
+ }
37
+ setSelectionState(segment);
38
+ applySelectionToInput(segment);
39
+ }, [applySelectionToInput, format]);
40
+ var selectAll = useCallback(function () {
41
+ setSelectionState('all');
42
+ applySelectionToInput('all');
43
+ }, [applySelectionToInput]);
44
+ var syncSelectionWithDOM = useCallback(function () {
45
+ var _a;
46
+ if (!((_a = getInput()) === null || _a === void 0 ? void 0 : _a.isAllSelected())) {
47
+ return false;
48
+ }
49
+ setSelectionState('all');
50
+ return true;
51
+ }, [getInput]);
52
+ useLayoutEffect(function () {
53
+ if (!isInputFocused || !getInput()) {
54
+ return;
55
+ }
56
+ applySelectionToInput(selection);
57
+ }, [applySelectionToInput, displayValue, getInput, isInputFocused, selection]);
58
+ return {
59
+ selection: selection,
60
+ selectedSegment: selectedSegment,
61
+ selectSegment: selectSegment,
62
+ selectAll: selectAll,
63
+ syncSelectionWithDOM: syncSelectionWithDOM,
64
+ };
65
+ };
66
+ //# sourceMappingURL=useTimePickerSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimePickerSelection.js","sourceRoot":"","sources":["useTimePickerSelection.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useLayoutEffect, useState } from 'react';\n\nimport type { TimeFormat, TimeSegment } from '../../components/TimePicker/helpers/TimePicker.shared.js';\nimport type { TimeInputRef } from '../TimeInput/index.js';\n\ntype TimePickerSelection = TimeSegment | 'all';\n\ninterface UseTimePickerSelectionOptions {\n isInputFocused: boolean;\n format: TimeFormat;\n getInput: () => TimeInputRef | null;\n displayValue: string;\n}\ninterface UseTimePickerSelectionResult {\n selection: TimePickerSelection;\n selectedSegment: TimeSegment;\n selectSegment: (segment: TimeSegment) => void;\n selectAll: () => void;\n syncSelectionWithDOM: () => boolean;\n}\nexport const useTimePickerSelection = (options: UseTimePickerSelectionOptions): UseTimePickerSelectionResult => {\n const { isInputFocused, format, displayValue, getInput } = options;\n\n const [selection, setSelectionState] = useState<TimePickerSelection>('hours');\n\n const selectedSegment = selection === 'all' ? 'hours' : selection;\n\n const applySelectionToInput = useCallback(\n (nextSelection: TimePickerSelection) => {\n const currentInput = getInput();\n\n if (!currentInput) {\n return;\n }\n\n const node = currentInput.getNode();\n const isInputActive = node?.ownerDocument.activeElement === node;\n\n const applySelection = (input: TimeInputRef) => {\n if (nextSelection === 'all') {\n input.selectAll();\n return;\n }\n\n input.selectSegment(nextSelection);\n };\n\n if (isInputActive) {\n applySelection(currentInput);\n return;\n }\n\n setTimeout(() => {\n const nextInput = getInput();\n\n if (!nextInput) {\n return;\n }\n\n nextInput.focus();\n applySelection(nextInput);\n }, 0);\n },\n [getInput],\n );\n\n const selectSegment = useCallback(\n (segment: TimeSegment) => {\n if (segment === 'seconds' && format === 'HH:mm') {\n return;\n }\n\n setSelectionState(segment);\n applySelectionToInput(segment);\n },\n [applySelectionToInput, format],\n );\n\n const selectAll = useCallback(() => {\n setSelectionState('all');\n applySelectionToInput('all');\n }, [applySelectionToInput]);\n\n const syncSelectionWithDOM = useCallback(() => {\n if (!getInput()?.isAllSelected()) {\n return false;\n }\n\n setSelectionState('all');\n return true;\n }, [getInput]);\n\n useLayoutEffect(() => {\n if (!isInputFocused || !getInput()) {\n return;\n }\n\n applySelectionToInput(selection);\n }, [applySelectionToInput, displayValue, getInput, isInputFocused, selection]);\n\n return {\n selection,\n selectedSegment,\n selectSegment,\n selectAll,\n syncSelectionWithDOM,\n };\n};\n"]}
@@ -0,0 +1,29 @@
1
+ import type { TimeFormat, TimeItemValue, TimePickerExtendedItem, TimePickerSource } from '../../components/TimePicker/helpers/TimePicker.shared.js';
2
+ interface UseTimePickerSourceOptions<T extends TimeItemValue> {
3
+ source?: TimePickerSource<T>;
4
+ format: TimeFormat;
5
+ isDropdownOpened: boolean;
6
+ /** Текущий запрос: введенные цифры сегментов с сохранением их позиций. */
7
+ filterQuery: string;
8
+ }
9
+ interface UseTimePickerSourceResult<T extends TimeItemValue> {
10
+ /** Элементы источника, готовые к фильтрации и отрисовке. */
11
+ items: Array<TimePickerExtendedItem<T>>;
12
+ /** Запрос, для которого получены текущие элементы функции-источника. */
13
+ fetchedQuery: string | null;
14
+ isLoading: boolean;
15
+ isFailed: boolean;
16
+ retry: () => void;
17
+ }
18
+ /**
19
+ * Отдает элементы выпадающего списка из массива или функции-источника.
20
+ *
21
+ * Функция вызывается только для открытого меню и на каждый новый запрос;
22
+ * ответ на устаревший запрос отбрасывается, а отказ можно повторить через `retry`.
23
+ * При закрытии меню результаты функции сбрасываются, чтобы следующее открытие
24
+ * не показывало элементы для старого запроса.
25
+ * Замена самой функции уже открытый список не перезапрашивает: актуальная функция
26
+ * используется при следующем запросе.
27
+ */
28
+ export declare const useTimePickerSource: <T extends TimeItemValue>(options: UseTimePickerSourceOptions<T>) => UseTimePickerSourceResult<T>;
29
+ export {};
@@ -0,0 +1,67 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { sanitizeTimeItems } from '../../components/TimePicker/helpers/TimePicker.value.js';
3
+ /** Общая пустая коллекция элементов: не создает новую ссылку на каждый рендер. */
4
+ var EMPTY_ITEMS = [];
5
+ /**
6
+ * Отдает элементы выпадающего списка из массива или функции-источника.
7
+ *
8
+ * Функция вызывается только для открытого меню и на каждый новый запрос;
9
+ * ответ на устаревший запрос отбрасывается, а отказ можно повторить через `retry`.
10
+ * При закрытии меню результаты функции сбрасываются, чтобы следующее открытие
11
+ * не показывало элементы для старого запроса.
12
+ * Замена самой функции уже открытый список не перезапрашивает: актуальная функция
13
+ * используется при следующем запросе.
14
+ */
15
+ export var useTimePickerSource = function (options) {
16
+ var source = options.source, format = options.format, isDropdownOpened = options.isDropdownOpened, filterQuery = options.filterQuery;
17
+ var isSourceFunction = typeof source === 'function';
18
+ var _a = useState([]), fetchedItems = _a[0], setFetchedItems = _a[1];
19
+ var _b = useState(null), fetchedQuery = _b[0], setFetchedQuery = _b[1];
20
+ var _c = useState(false), isLoading = _c[0], setIsLoading = _c[1];
21
+ var _d = useState(false), isFailed = _d[0], setIsFailed = _d[1];
22
+ var _e = useState(0), requestVersion = _e[0], setRequestVersion = _e[1];
23
+ var sourceRef = useRef(source);
24
+ sourceRef.current = source;
25
+ useEffect(function () {
26
+ var currentSource = sourceRef.current;
27
+ if (typeof currentSource !== 'function' || !isDropdownOpened) {
28
+ setIsLoading(false);
29
+ setIsFailed(false);
30
+ return;
31
+ }
32
+ var cancelled = false;
33
+ setIsLoading(true);
34
+ setIsFailed(false);
35
+ new Promise(function (resolve) { return resolve(currentSource(filterQuery)); }).then(function (nextItems) {
36
+ if (!cancelled) {
37
+ setFetchedItems(nextItems);
38
+ setFetchedQuery(filterQuery);
39
+ setIsLoading(false);
40
+ setIsFailed(false);
41
+ }
42
+ }, function () {
43
+ if (!cancelled) {
44
+ setFetchedItems([]);
45
+ setFetchedQuery(null);
46
+ setIsLoading(false);
47
+ setIsFailed(true);
48
+ }
49
+ });
50
+ return function () {
51
+ cancelled = true;
52
+ };
53
+ }, [filterQuery, isDropdownOpened, isSourceFunction, requestVersion]);
54
+ useEffect(function () {
55
+ if (isDropdownOpened || !isSourceFunction) {
56
+ return;
57
+ }
58
+ setFetchedItems(EMPTY_ITEMS);
59
+ setFetchedQuery(null);
60
+ }, [isDropdownOpened, isSourceFunction]);
61
+ // Ссылка стабильна и без мемоизации: у массива это он сам, у функции — общая пустая коллекция.
62
+ var sourceItems = Array.isArray(source) ? source : EMPTY_ITEMS;
63
+ var items = useMemo(function () { return sanitizeTimeItems(isSourceFunction ? fetchedItems : sourceItems, format); }, [fetchedItems, format, isSourceFunction, sourceItems]);
64
+ var retry = useCallback(function () { return setRequestVersion(function (version) { return version + 1; }); }, []);
65
+ return { items: items, fetchedQuery: fetchedQuery, isLoading: isLoading, isFailed: isFailed, retry: retry };
66
+ };
67
+ //# sourceMappingURL=useTimePickerSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimePickerSource.js","sourceRoot":"","sources":["useTimePickerSource.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n TimeFormat,\n TimeItemValue,\n TimePickerExtendedItem,\n TimePickerSource,\n} from '../../components/TimePicker/helpers/TimePicker.shared.js';\nimport { sanitizeTimeItems } from '../../components/TimePicker/helpers/TimePicker.value.js';\n\n/** Общая пустая коллекция элементов: не создает новую ссылку на каждый рендер. */\nconst EMPTY_ITEMS: never[] = [];\n\ninterface UseTimePickerSourceOptions<T extends TimeItemValue> {\n source?: TimePickerSource<T>;\n format: TimeFormat;\n isDropdownOpened: boolean;\n /** Текущий запрос: введенные цифры сегментов с сохранением их позиций. */\n filterQuery: string;\n}\n\ninterface UseTimePickerSourceResult<T extends TimeItemValue> {\n /** Элементы источника, готовые к фильтрации и отрисовке. */\n items: Array<TimePickerExtendedItem<T>>;\n /** Запрос, для которого получены текущие элементы функции-источника. */\n fetchedQuery: string | null;\n isLoading: boolean;\n isFailed: boolean;\n retry: () => void;\n}\n\n/**\n * Отдает элементы выпадающего списка из массива или функции-источника.\n *\n * Функция вызывается только для открытого меню и на каждый новый запрос;\n * ответ на устаревший запрос отбрасывается, а отказ можно повторить через `retry`.\n * При закрытии меню результаты функции сбрасываются, чтобы следующее открытие\n * не показывало элементы для старого запроса.\n * Замена самой функции уже открытый список не перезапрашивает: актуальная функция\n * используется при следующем запросе.\n */\nexport const useTimePickerSource = <T extends TimeItemValue>(\n options: UseTimePickerSourceOptions<T>,\n): UseTimePickerSourceResult<T> => {\n const { source, format, isDropdownOpened, filterQuery } = options;\n\n const isSourceFunction = typeof source === 'function';\n\n const [fetchedItems, setFetchedItems] = useState<Array<TimePickerExtendedItem<T>>>([]);\n const [fetchedQuery, setFetchedQuery] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isFailed, setIsFailed] = useState(false);\n const [requestVersion, setRequestVersion] = useState(0);\n\n const sourceRef = useRef(source);\n sourceRef.current = source;\n\n useEffect(() => {\n const currentSource = sourceRef.current;\n\n if (typeof currentSource !== 'function' || !isDropdownOpened) {\n setIsLoading(false);\n setIsFailed(false);\n return;\n }\n\n let cancelled = false;\n\n setIsLoading(true);\n setIsFailed(false);\n\n new Promise<Array<TimePickerExtendedItem<T>>>((resolve) => resolve(currentSource(filterQuery))).then(\n (nextItems) => {\n if (!cancelled) {\n setFetchedItems(nextItems);\n setFetchedQuery(filterQuery);\n setIsLoading(false);\n setIsFailed(false);\n }\n },\n () => {\n if (!cancelled) {\n setFetchedItems([]);\n setFetchedQuery(null);\n setIsLoading(false);\n setIsFailed(true);\n }\n },\n );\n\n return () => {\n cancelled = true;\n };\n }, [filterQuery, isDropdownOpened, isSourceFunction, requestVersion]);\n\n useEffect(() => {\n if (isDropdownOpened || !isSourceFunction) {\n return;\n }\n\n setFetchedItems(EMPTY_ITEMS);\n setFetchedQuery(null);\n }, [isDropdownOpened, isSourceFunction]);\n\n // Ссылка стабильна и без мемоизации: у массива это он сам, у функции — общая пустая коллекция.\n const sourceItems = Array.isArray(source) ? source : EMPTY_ITEMS;\n\n const items = useMemo(\n () => sanitizeTimeItems(isSourceFunction ? fetchedItems : sourceItems, format),\n [fetchedItems, format, isSourceFunction, sourceItems],\n );\n\n const retry = useCallback(() => setRequestVersion((version) => version + 1), []);\n\n return { items, fetchedQuery, isLoading, isFailed, retry };\n};\n"]}
@@ -0,0 +1,35 @@
1
+ import type { RefObject } from 'react';
2
+ import type { TimeFormat } from '../../components/TimePicker/helpers/TimePicker.shared.js';
3
+ interface UseTimePickerValueOptions {
4
+ isInputFocused: boolean;
5
+ /** Внешнее значение, приведенное к строке времени. */
6
+ externalValue: string;
7
+ /**
8
+ * Значением управляет родитель: проп `value` задан.
9
+ * Если проп не задан, компонент неконтролируемый и хранит значение сам,
10
+ * поэтому внешнее пустое значение не должно затирать введенное пользователем.
11
+ */
12
+ isValueControlled: boolean;
13
+ format: TimeFormat;
14
+ /** Вызывается при коммите значения: получает нормализованное время. */
15
+ onCommitValue?(value: string): void;
16
+ onInputValueChange?(value: string): void;
17
+ }
18
+ interface UseTimePickerValueResult {
19
+ editingValue: string;
20
+ editingValueRef: RefObject<string>;
21
+ /**
22
+ * Последнее закоммиченное время в нормализованной форме.
23
+ * Правка значения его не меняет, поэтому в меню отмечено выбранным именно значение поля,
24
+ * а не время, которое пользователь набирает.
25
+ */
26
+ committedValue: string;
27
+ updateEditingValue(value: string): void;
28
+ commitEditingValue(): void;
29
+ /** Коммитит значение, введенное пользователем. Не эмитит повторно то же самое время. */
30
+ commitValue(value: string): void;
31
+ /** Коммитит время, выбранное в выпадающем меню. Эмитит всегда, так как это явное действие пользователя. */
32
+ commitSelectedValue(value: string): void;
33
+ }
34
+ export declare const useTimePickerValue: (options: UseTimePickerValueOptions) => UseTimePickerValueResult;
35
+ export {};
@@ -0,0 +1,94 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import warning from 'warning';
3
+ import { getExternalTimeDisplayValue, normalizeTimeValue, serializeTimeValue, } from '../../components/TimePicker/helpers/TimePicker.value.js';
4
+ export var useTimePickerValue = function (options) {
5
+ var externalValue = options.externalValue, isValueControlled = options.isValueControlled, format = options.format, isInputFocused = options.isInputFocused, onCommitValue = options.onCommitValue, onInputValueChange = options.onInputValueChange;
6
+ var externalEditingValue = getExternalTimeDisplayValue(externalValue, format);
7
+ var _a = useState(externalEditingValue), editingValue = _a[0], setEditingValueState = _a[1];
8
+ var _b = useState(function () { return normalizeTimeValue(externalValue, format); }), committedValue = _b[0], setCommittedValue = _b[1];
9
+ var editingValueRef = useRef(editingValue);
10
+ /** Последнее значение, отданное в `onInputValueChange`, — как есть, без нормализации. */
11
+ var emittedInputValueRef = useRef(externalValue);
12
+ /**
13
+ * Последнее закоммиченное время в нормализованной форме.
14
+ * Форма именно нормализованная, иначе внешнее `9:00` или `09:00:00` в формате `HH:mm`
15
+ * выглядело бы как изменение и поле коммитило бы его заново, собирая элемент вместо исходного.
16
+ */
17
+ var emittedValueRef = useRef(externalValue);
18
+ var syncEmittedValues = useCallback(function (nextValue) {
19
+ emittedInputValueRef.current = nextValue;
20
+ emittedValueRef.current = normalizeTimeValue(nextValue, format);
21
+ }, [format]);
22
+ var setEditingValue = useCallback(function (nextEditingValue) {
23
+ editingValueRef.current = nextEditingValue;
24
+ setEditingValueState(nextEditingValue);
25
+ }, []);
26
+ var emitInputValue = useCallback(function (nextValue) {
27
+ if (emittedInputValueRef.current !== nextValue) {
28
+ emittedInputValueRef.current = nextValue;
29
+ onInputValueChange === null || onInputValueChange === void 0 ? void 0 : onInputValueChange(nextValue);
30
+ }
31
+ }, [onInputValueChange]);
32
+ var emitValue = useCallback(function (nextValue) {
33
+ emittedInputValueRef.current = nextValue;
34
+ emittedValueRef.current = nextValue;
35
+ onCommitValue === null || onCommitValue === void 0 ? void 0 : onCommitValue(nextValue);
36
+ }, [onCommitValue]);
37
+ var updateEditingValue = useCallback(function (nextEditingValue) {
38
+ setEditingValue(nextEditingValue);
39
+ emitInputValue(serializeTimeValue(nextEditingValue, format));
40
+ }, [emitInputValue, format, setEditingValue]);
41
+ var commitValue = useCallback(function (nextValue) {
42
+ var normalizedValue = normalizeTimeValue(nextValue, format);
43
+ setEditingValue(normalizedValue);
44
+ setCommittedValue(normalizedValue);
45
+ if (emittedValueRef.current !== normalizedValue) {
46
+ emitValue(normalizedValue);
47
+ }
48
+ }, [emitValue, format, setEditingValue]);
49
+ var commitSelectedValue = useCallback(function (nextValue) {
50
+ var normalizedValue = normalizeTimeValue(nextValue, format);
51
+ setEditingValue(normalizedValue);
52
+ setCommittedValue(normalizedValue);
53
+ emitValue(normalizedValue);
54
+ }, [emitValue, format, setEditingValue]);
55
+ var commitEditingValue = useCallback(function () {
56
+ commitValue(editingValueRef.current);
57
+ }, [commitValue, editingValueRef]);
58
+ var initialIsValueControlledRef = useRef(isValueControlled);
59
+ useEffect(function () {
60
+ warning(initialIsValueControlledRef.current === isValueControlled, isValueControlled
61
+ ? '[TimePicker]: a component is changing an uncontrolled value to be controlled. ' +
62
+ 'Decide between using a controlled or uncontrolled value for the lifetime of the component.'
63
+ : '[TimePicker]: a component is changing a controlled value to be uncontrolled. ' +
64
+ 'Pass an empty string or null instead of undefined to keep the value controlled.');
65
+ }, [isValueControlled]);
66
+ useEffect(function () {
67
+ if (!isValueControlled) {
68
+ return;
69
+ }
70
+ if (!isInputFocused || externalValue !== emittedInputValueRef.current) {
71
+ setEditingValue(externalEditingValue);
72
+ }
73
+ setCommittedValue(normalizeTimeValue(externalValue, format));
74
+ syncEmittedValues(externalValue);
75
+ }, [
76
+ externalEditingValue,
77
+ externalValue,
78
+ format,
79
+ isInputFocused,
80
+ isValueControlled,
81
+ setEditingValue,
82
+ syncEmittedValues,
83
+ ]);
84
+ return {
85
+ editingValue: editingValue,
86
+ editingValueRef: editingValueRef,
87
+ committedValue: committedValue,
88
+ updateEditingValue: updateEditingValue,
89
+ commitEditingValue: commitEditingValue,
90
+ commitValue: commitValue,
91
+ commitSelectedValue: commitSelectedValue,
92
+ };
93
+ };
94
+ //# sourceMappingURL=useTimePickerValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimePickerValue.js","sourceRoot":"","sources":["useTimePickerValue.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RefObject } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport warning from 'warning';\n\nimport type { TimeFormat } from '../../components/TimePicker/helpers/TimePicker.shared.js';\nimport {\n getExternalTimeDisplayValue,\n normalizeTimeValue,\n serializeTimeValue,\n} from '../../components/TimePicker/helpers/TimePicker.value.js';\n\ninterface UseTimePickerValueOptions {\n isInputFocused: boolean;\n /** Внешнее значение, приведенное к строке времени. */\n externalValue: string;\n /**\n * Значением управляет родитель: проп `value` задан.\n * Если проп не задан, компонент неконтролируемый и хранит значение сам,\n * поэтому внешнее пустое значение не должно затирать введенное пользователем.\n */\n isValueControlled: boolean;\n format: TimeFormat;\n /** Вызывается при коммите значения: получает нормализованное время. */\n onCommitValue?(value: string): void;\n onInputValueChange?(value: string): void;\n}\n\ninterface UseTimePickerValueResult {\n editingValue: string;\n editingValueRef: RefObject<string>;\n /**\n * Последнее закоммиченное время в нормализованной форме.\n * Правка значения его не меняет, поэтому в меню отмечено выбранным именно значение поля,\n * а не время, которое пользователь набирает.\n */\n committedValue: string;\n updateEditingValue(value: string): void;\n commitEditingValue(): void;\n /** Коммитит значение, введенное пользователем. Не эмитит повторно то же самое время. */\n commitValue(value: string): void;\n /** Коммитит время, выбранное в выпадающем меню. Эмитит всегда, так как это явное действие пользователя. */\n commitSelectedValue(value: string): void;\n}\n\nexport const useTimePickerValue = (options: UseTimePickerValueOptions): UseTimePickerValueResult => {\n const { externalValue, isValueControlled, format, isInputFocused, onCommitValue, onInputValueChange } = options;\n\n const externalEditingValue = getExternalTimeDisplayValue(externalValue, format);\n\n const [editingValue, setEditingValueState] = useState<string>(externalEditingValue);\n const [committedValue, setCommittedValue] = useState<string>(() => normalizeTimeValue(externalValue, format));\n\n const editingValueRef = useRef(editingValue);\n /** Последнее значение, отданное в `onInputValueChange`, — как есть, без нормализации. */\n const emittedInputValueRef = useRef(externalValue);\n /**\n * Последнее закоммиченное время в нормализованной форме.\n * Форма именно нормализованная, иначе внешнее `9:00` или `09:00:00` в формате `HH:mm`\n * выглядело бы как изменение и поле коммитило бы его заново, собирая элемент вместо исходного.\n */\n const emittedValueRef = useRef(externalValue);\n\n const syncEmittedValues = useCallback(\n (nextValue: string) => {\n emittedInputValueRef.current = nextValue;\n emittedValueRef.current = normalizeTimeValue(nextValue, format);\n },\n [format],\n );\n\n const setEditingValue = useCallback((nextEditingValue: string) => {\n editingValueRef.current = nextEditingValue;\n setEditingValueState(nextEditingValue);\n }, []);\n\n const emitInputValue = useCallback(\n (nextValue: string) => {\n if (emittedInputValueRef.current !== nextValue) {\n emittedInputValueRef.current = nextValue;\n onInputValueChange?.(nextValue);\n }\n },\n [onInputValueChange],\n );\n\n const emitValue = useCallback(\n (nextValue: string) => {\n emittedInputValueRef.current = nextValue;\n emittedValueRef.current = nextValue;\n onCommitValue?.(nextValue);\n },\n [onCommitValue],\n );\n\n const updateEditingValue = useCallback(\n (nextEditingValue: string) => {\n setEditingValue(nextEditingValue);\n emitInputValue(serializeTimeValue(nextEditingValue, format));\n },\n [emitInputValue, format, setEditingValue],\n );\n\n const commitValue = useCallback(\n (nextValue: string) => {\n const normalizedValue = normalizeTimeValue(nextValue, format);\n\n setEditingValue(normalizedValue);\n setCommittedValue(normalizedValue);\n\n if (emittedValueRef.current !== normalizedValue) {\n emitValue(normalizedValue);\n }\n },\n [emitValue, format, setEditingValue],\n );\n\n const commitSelectedValue = useCallback(\n (nextValue: string) => {\n const normalizedValue = normalizeTimeValue(nextValue, format);\n\n setEditingValue(normalizedValue);\n setCommittedValue(normalizedValue);\n emitValue(normalizedValue);\n },\n [emitValue, format, setEditingValue],\n );\n\n const commitEditingValue = useCallback(() => {\n commitValue(editingValueRef.current);\n }, [commitValue, editingValueRef]);\n\n const initialIsValueControlledRef = useRef(isValueControlled);\n\n useEffect(() => {\n warning(\n initialIsValueControlledRef.current === isValueControlled,\n isValueControlled\n ? '[TimePicker]: a component is changing an uncontrolled value to be controlled. ' +\n 'Decide between using a controlled or uncontrolled value for the lifetime of the component.'\n : '[TimePicker]: a component is changing a controlled value to be uncontrolled. ' +\n 'Pass an empty string or null instead of undefined to keep the value controlled.',\n );\n }, [isValueControlled]);\n\n useEffect(() => {\n if (!isValueControlled) {\n return;\n }\n\n if (!isInputFocused || externalValue !== emittedInputValueRef.current) {\n setEditingValue(externalEditingValue);\n }\n\n setCommittedValue(normalizeTimeValue(externalValue, format));\n syncEmittedValues(externalValue);\n }, [\n externalEditingValue,\n externalValue,\n format,\n isInputFocused,\n isValueControlled,\n setEditingValue,\n syncEmittedValues,\n ]);\n\n return {\n editingValue,\n editingValueRef,\n committedValue,\n updateEditingValue,\n commitEditingValue,\n commitValue,\n commitSelectedValue,\n };\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import type { IconProps } from '../BaseIcon.js';
2
+ export declare const TimeClockIcon16Light: import("../../../lib/forwardRefAndName.js").ReactUIComponentWithRef<SVGSVGElement, IconProps> & Record<never, never>;
@@ -0,0 +1,20 @@
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 from 'react';
13
+ import { forwardRefAndName } from '../../../lib/forwardRefAndName.js';
14
+ import { BaseIcon } from '../BaseIcon.js';
15
+ export var TimeClockIcon16Light = forwardRefAndName('TimeClockIcon16Light', function (props, ref) {
16
+ return (React.createElement(BaseIcon, __assign({ ref: ref }, props),
17
+ React.createElement("path", { d: "M8 4.40234C8 4.1262 7.77614 3.90234 7.5 3.90234C7.22386 3.90234 7 4.1262 7 4.40234V6.7274C7 7.39025 7.3745 7.99621 7.96738 8.29265L10.2764 9.44716C10.5234 9.57065 10.8237 9.47054 10.9472 9.22355C11.0707 8.97656 10.9706 8.67623 10.7236 8.55273L8.41459 7.39822C8.1605 7.27118 8 7.01148 8 6.7274V4.40234Z" }),
18
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M7.5 1C3.91015 1 1 3.91015 1 7.5C1 11.0899 3.91015 14 7.5 14C11.0899 14 14 11.0899 14 7.5C14 3.91015 11.0899 1 7.5 1ZM2 7.5C2 4.46243 4.46243 2 7.5 2C10.5376 2 13 4.46243 13 7.5C13 10.5376 10.5376 13 7.5 13C4.46243 13 2 10.5376 2 7.5Z" })));
19
+ });
20
+ //# sourceMappingURL=TimeClockIcon16Light.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeClockIcon16Light.js","sourceRoot":"","sources":["TimeClockIcon16Light.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,IAAM,oBAAoB,GAAG,iBAAiB,CACnD,sBAAsB,EACtB,UAAC,KAAK,EAAE,GAAG;IACT,OAAO,CACL,oBAAC,QAAQ,aAAC,GAAG,EAAE,GAAG,IAAM,KAAK;QAC3B,8BAAM,CAAC,EAAC,+SAA+S,GAAG;QAC1T,8BACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,4OAA4O,GAC9O,CACO,CACZ,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React from 'react';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport type { IconProps } from '../BaseIcon.js';\nimport { BaseIcon } from '../BaseIcon.js';\n\nexport const TimeClockIcon16Light = forwardRefAndName<SVGSVGElement, IconProps>(\n 'TimeClockIcon16Light',\n (props, ref) => {\n return (\n <BaseIcon ref={ref} {...props}>\n <path d=\"M8 4.40234C8 4.1262 7.77614 3.90234 7.5 3.90234C7.22386 3.90234 7 4.1262 7 4.40234V6.7274C7 7.39025 7.3745 7.99621 7.96738 8.29265L10.2764 9.44716C10.5234 9.57065 10.8237 9.47054 10.9472 9.22355C11.0707 8.97656 10.9706 8.67623 10.7236 8.55273L8.41459 7.39822C8.1605 7.27118 8 7.01148 8 6.7274V4.40234Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.5 1C3.91015 1 1 3.91015 1 7.5C1 11.0899 3.91015 14 7.5 14C11.0899 14 14 11.0899 14 7.5C14 3.91015 11.0899 1 7.5 1ZM2 7.5C2 4.46243 4.46243 2 7.5 2C10.5376 2 13 4.46243 13 7.5C13 10.5376 10.5376 13 7.5 13C4.46243 13 2 10.5376 2 7.5Z\"\n />\n </BaseIcon>\n );\n },\n);\n"]}
@@ -0,0 +1,2 @@
1
+ import type { IconProps } from '../BaseIcon.js';
2
+ export declare const TimeClockIcon20Light: import("../../../lib/forwardRefAndName.js").ReactUIComponentWithRef<SVGSVGElement, IconProps> & Record<never, never>;
@@ -0,0 +1,20 @@
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 from 'react';
13
+ import { forwardRefAndName } from '../../../lib/forwardRefAndName.js';
14
+ import { BaseIcon } from '../BaseIcon.js';
15
+ export var TimeClockIcon20Light = forwardRefAndName('TimeClockIcon20Light', function (props, ref) {
16
+ return (React.createElement(BaseIcon, __assign({ ref: ref, viewBoxSize: 20 }, props),
17
+ React.createElement("path", { d: "M10.0033 6.50463C10.0033 6.22849 9.77943 6.00464 9.50329 6.00464C9.22715 6.00464 9.00329 6.2285 9.0033 6.50464L9.00332 9.47699C9.00332 10.1394 9.3774 10.7451 9.96974 11.0417L12.7761 12.4471C13.023 12.5707 13.3234 12.4708 13.4471 12.2239C13.5707 11.977 13.4708 11.6766 13.2239 11.5529L10.4175 10.1476C10.1636 10.0205 10.0033 9.76089 10.0033 9.47698L10.0033 6.50463Z" }),
18
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2ZM3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10Z" })));
19
+ });
20
+ //# sourceMappingURL=TimeClockIcon20Light.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeClockIcon20Light.js","sourceRoot":"","sources":["TimeClockIcon20Light.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,IAAM,oBAAoB,GAAG,iBAAiB,CACnD,sBAAsB,EACtB,UAAC,KAAK,EAAE,GAAG;IACT,OAAO,CACL,oBAAC,QAAQ,aAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,IAAM,KAAK;QAC5C,8BAAM,CAAC,EAAC,8WAA8W,GAAG;QACzX,8BACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,8NAA8N,GAChO,CACO,CACZ,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React from 'react';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport type { IconProps } from '../BaseIcon.js';\nimport { BaseIcon } from '../BaseIcon.js';\n\nexport const TimeClockIcon20Light = forwardRefAndName<SVGSVGElement, IconProps>(\n 'TimeClockIcon20Light',\n (props, ref) => {\n return (\n <BaseIcon ref={ref} viewBoxSize={20} {...props}>\n <path d=\"M10.0033 6.50463C10.0033 6.22849 9.77943 6.00464 9.50329 6.00464C9.22715 6.00464 9.00329 6.2285 9.0033 6.50464L9.00332 9.47699C9.00332 10.1394 9.3774 10.7451 9.96974 11.0417L12.7761 12.4471C13.023 12.5707 13.3234 12.4708 13.4471 12.2239C13.5707 11.977 13.4708 11.6766 13.2239 11.5529L10.4175 10.1476C10.1636 10.0205 10.0033 9.76089 10.0033 9.47698L10.0033 6.50463Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2ZM3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10Z\"\n />\n </BaseIcon>\n );\n },\n);\n"]}
@@ -0,0 +1,2 @@
1
+ import type { IconProps } from '../BaseIcon.js';
2
+ export declare const TimeClockIcon24Regular: import("../../../lib/forwardRefAndName.js").ReactUIComponentWithRef<SVGSVGElement, IconProps> & Record<never, never>;
@@ -0,0 +1,20 @@
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 from 'react';
13
+ import { forwardRefAndName } from '../../../lib/forwardRefAndName.js';
14
+ import { BaseIcon } from '../BaseIcon.js';
15
+ export var TimeClockIcon24Regular = forwardRefAndName('TimeClockIcon24Regular', function (props, ref) {
16
+ return (React.createElement(BaseIcon, __assign({ ref: ref, viewBoxSize: 24 }, props),
17
+ React.createElement("path", { d: "M12.5 7.3125C12.5 6.89829 12.1642 6.5625 11.75 6.5625C11.3358 6.5625 11 6.89829 11 7.3125V11.2604C11 12.1127 11.4815 12.8918 12.2438 13.2729L15.5396 14.9208C15.9101 15.1061 16.3606 14.9559 16.5458 14.5854C16.7311 14.2149 16.5809 13.7644 16.2104 13.5792L12.9146 11.9313C12.6605 11.8042 12.5 11.5445 12.5 11.2604V7.3125Z" }),
18
+ React.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 2.25C6.61522 2.25 2.25 6.61522 2.25 12C2.25 17.3848 6.61522 21.75 12 21.75C17.3848 21.75 21.75 17.3848 21.75 12C21.75 6.61522 17.3848 2.25 12 2.25ZM3.75 12C3.75 7.44365 7.44365 3.75 12 3.75C16.5563 3.75 20.25 7.44365 20.25 12C20.25 16.5563 16.5563 20.25 12 20.25C7.44365 20.25 3.75 16.5563 3.75 12Z" })));
19
+ });
20
+ //# sourceMappingURL=TimeClockIcon24Regular.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeClockIcon24Regular.js","sourceRoot":"","sources":["TimeClockIcon24Regular.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,IAAM,sBAAsB,GAAG,iBAAiB,CACrD,wBAAwB,EACxB,UAAC,KAAK,EAAE,GAAG;IACT,OAAO,CACL,oBAAC,QAAQ,aAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,IAAM,KAAK;QAC5C,8BAAM,CAAC,EAAC,gUAAgU,GAAG;QAC3U,8BACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,gTAAgT,GAClT,CACO,CACZ,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React from 'react';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport type { IconProps } from '../BaseIcon.js';\nimport { BaseIcon } from '../BaseIcon.js';\n\nexport const TimeClockIcon24Regular = forwardRefAndName<SVGSVGElement, IconProps>(\n 'TimeClockIcon24Regular',\n (props, ref) => {\n return (\n <BaseIcon ref={ref} viewBoxSize={24} {...props}>\n <path d=\"M12.5 7.3125C12.5 6.89829 12.1642 6.5625 11.75 6.5625C11.3358 6.5625 11 6.89829 11 7.3125V11.2604C11 12.1127 11.4815 12.8918 12.2438 13.2729L15.5396 14.9208C15.9101 15.1061 16.3606 14.9559 16.5458 14.5854C16.7311 14.2149 16.5809 13.7644 16.2104 13.5792L12.9146 11.9313C12.6605 11.8042 12.5 11.5445 12.5 11.2604V7.3125Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 2.25C6.61522 2.25 2.25 6.61522 2.25 12C2.25 17.3848 6.61522 21.75 12 21.75C17.3848 21.75 21.75 17.3848 21.75 12C21.75 6.61522 17.3848 2.25 12 2.25ZM3.75 12C3.75 7.44365 7.44365 3.75 12 3.75C16.5563 3.75 20.25 7.44365 20.25 12C20.25 16.5563 16.5563 20.25 12 20.25C7.44365 20.25 3.75 16.5563 3.75 12Z\"\n />\n </BaseIcon>\n );\n },\n);\n"]}
@@ -764,6 +764,40 @@ export declare class BasicThemeClass {
764
764
  static mobileCalendarCellFontSize: string;
765
765
  static mobileCalendarGridRowSpacing: string;
766
766
  static mobileCalendarWrapperHeight: string;
767
+ static timePickerItemGapSmall: string;
768
+ static timePickerItemGapMedium: string;
769
+ static timePickerItemGapLarge: string;
770
+ static timePickerSuffixGapSmall: string;
771
+ static timePickerSuffixGapMedium: string;
772
+ static timePickerSuffixGapLarge: string;
773
+ static timePickerInputMinWidthSmall: string;
774
+ static timePickerInputMinWidthMedium: string;
775
+ static timePickerInputMinWidthLarge: string;
776
+ static timePickerInputMinWidthWithSecondsSmall: string;
777
+ static timePickerInputMinWidthWithSecondsMedium: string;
778
+ static timePickerInputMinWidthWithSecondsLarge: string;
779
+ static timePickerInputMinWidthWithIconSmall: string;
780
+ static timePickerInputMinWidthWithIconMedium: string;
781
+ static timePickerInputMinWidthWithIconLarge: string;
782
+ static timePickerInputMinWidthWithIconAndSecondsSmall: string;
783
+ static timePickerInputMinWidthWithIconAndSecondsMedium: string;
784
+ static timePickerInputMinWidthWithIconAndSecondsLarge: string;
785
+ static timePickerSeparatorOffsetTopSmall: string;
786
+ static timePickerSeparatorOffsetTopMedium: string;
787
+ static timePickerSeparatorOffsetTopLarge: string;
788
+ static timePickerSeparatorPaddingXSmall: string;
789
+ static timePickerSeparatorPaddingXMedium: string;
790
+ static timePickerSeparatorPaddingXLarge: string;
791
+ static timePickerPopupBg: string;
792
+ static get timePickerPopupBorderRadius(): string;
793
+ static get timePickerPopupShadow(): string;
794
+ static get timePickerMaskColor(): string;
795
+ static timePickerSelectedBgColor: string;
796
+ static timePickerSelectedTextColor: string;
797
+ static get timePickerMenuOffsetY(): string;
798
+ static get timePickerMenuMaxHeightSmall(): string;
799
+ static get timePickerMenuMaxHeightMedium(): string;
800
+ static get timePickerMenuMaxHeightLarge(): string;
767
801
  static rangeCalendarCellBg: string;
768
802
  static rangeCalendarCellEndBg: string;
769
803
  static rangeCalendarCellEndColor: string;