@skbkontur/react-ui 6.1.2-bea94.0 → 6.1.3

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 (112) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/components/Button/Button.d.ts +5 -0
  3. package/components/Button/Button.js +7 -5
  4. package/components/Button/Button.js.map +1 -1
  5. package/components/Input/Input.d.ts +1 -1
  6. package/components/Input/Input.js.map +1 -1
  7. package/components/Input/Input.styles.js +1 -1
  8. package/components/Input/Input.styles.js.map +1 -1
  9. package/components/Input/InputLayout/InputLayoutAsideCounter.js +2 -1
  10. package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -1
  11. package/components/Select/Select.d.ts +1 -0
  12. package/components/Select/Select.js +14 -7
  13. package/components/Select/Select.js.map +1 -1
  14. package/components/Select/selectTheme.js +2 -0
  15. package/components/Select/selectTheme.js.map +1 -1
  16. package/components/Switcher/Switcher.js +1 -0
  17. package/components/Switcher/Switcher.js.map +1 -1
  18. package/components/Textarea/TextareaCounter.js +2 -1
  19. package/components/Textarea/TextareaCounter.js.map +1 -1
  20. package/index.d.ts +0 -1
  21. package/index.js +0 -1
  22. package/index.js.map +1 -1
  23. package/internal/InputLikeText/InputLikeText.js +1 -1
  24. package/internal/InputLikeText/InputLikeText.js.map +1 -1
  25. package/internal/themes/BasicTheme.d.ts +0 -34
  26. package/internal/themes/BasicTheme.js +0 -96
  27. package/internal/themes/BasicTheme.js.map +1 -1
  28. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  29. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  30. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  31. package/package.json +1 -5
  32. package/components/TimePicker/TimeClockIcon.d.ts +0 -3
  33. package/components/TimePicker/TimeClockIcon.js +0 -11
  34. package/components/TimePicker/TimeClockIcon.js.map +0 -1
  35. package/components/TimePicker/TimeFragmentsView.d.ts +0 -15
  36. package/components/TimePicker/TimeFragmentsView.js +0 -72
  37. package/components/TimePicker/TimeFragmentsView.js.map +0 -1
  38. package/components/TimePicker/TimeFragmentsView.styles.d.ts +0 -12
  39. package/components/TimePicker/TimeFragmentsView.styles.js +0 -43
  40. package/components/TimePicker/TimeFragmentsView.styles.js.map +0 -1
  41. package/components/TimePicker/TimeInput.d.ts +0 -22
  42. package/components/TimePicker/TimeInput.js +0 -103
  43. package/components/TimePicker/TimeInput.js.map +0 -1
  44. package/components/TimePicker/TimePicker.d.ts +0 -70
  45. package/components/TimePicker/TimePicker.js +0 -506
  46. package/components/TimePicker/TimePicker.js.map +0 -1
  47. package/components/TimePicker/TimePicker.styles.d.ts +0 -14
  48. package/components/TimePicker/TimePicker.styles.js +0 -45
  49. package/components/TimePicker/TimePicker.styles.js.map +0 -1
  50. package/components/TimePicker/TimePickerMobilePopup.d.ts +0 -38
  51. package/components/TimePicker/TimePickerMobilePopup.js +0 -21
  52. package/components/TimePicker/TimePickerMobilePopup.js.map +0 -1
  53. package/components/TimePicker/TimePickerPopup.d.ts +0 -20
  54. package/components/TimePicker/TimePickerPopup.js +0 -18
  55. package/components/TimePicker/TimePickerPopup.js.map +0 -1
  56. package/components/TimePicker/TimePickerSlots.d.ts +0 -17
  57. package/components/TimePicker/TimePickerSlots.js +0 -80
  58. package/components/TimePicker/TimePickerSlots.js.map +0 -1
  59. package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -22
  60. package/components/TimePicker/helpers/TimePicker.constants.js +0 -31
  61. package/components/TimePicker/helpers/TimePicker.constants.js.map +0 -1
  62. package/components/TimePicker/helpers/TimePicker.editing.d.ts +0 -23
  63. package/components/TimePicker/helpers/TimePicker.editing.js +0 -101
  64. package/components/TimePicker/helpers/TimePicker.editing.js.map +0 -1
  65. package/components/TimePicker/helpers/TimePicker.layout.d.ts +0 -6
  66. package/components/TimePicker/helpers/TimePicker.layout.js +0 -49
  67. package/components/TimePicker/helpers/TimePicker.layout.js.map +0 -1
  68. package/components/TimePicker/helpers/TimePicker.selection.d.ts +0 -5
  69. package/components/TimePicker/helpers/TimePicker.selection.js +0 -23
  70. package/components/TimePicker/helpers/TimePicker.selection.js.map +0 -1
  71. package/components/TimePicker/helpers/TimePicker.shared.d.ts +0 -47
  72. package/components/TimePicker/helpers/TimePicker.shared.js +0 -70
  73. package/components/TimePicker/helpers/TimePicker.shared.js.map +0 -1
  74. package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -23
  75. package/components/TimePicker/helpers/TimePicker.value.js +0 -71
  76. package/components/TimePicker/helpers/TimePicker.value.js.map +0 -1
  77. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.d.ts +0 -4
  78. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js +0 -24
  79. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js.map +0 -1
  80. package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +0 -17
  81. package/components/TimePicker/hooks/useTimePickerDropdown.js +0 -62
  82. package/components/TimePicker/hooks/useTimePickerDropdown.js.map +0 -1
  83. package/components/TimePicker/hooks/useTimePickerSelection.d.ts +0 -18
  84. package/components/TimePicker/hooks/useTimePickerSelection.js +0 -66
  85. package/components/TimePicker/hooks/useTimePickerSelection.js.map +0 -1
  86. package/components/TimePicker/hooks/useTimePickerValue.d.ts +0 -18
  87. package/components/TimePicker/hooks/useTimePickerValue.js +0 -58
  88. package/components/TimePicker/hooks/useTimePickerValue.js.map +0 -1
  89. package/components/TimePicker/index.d.ts +0 -2
  90. package/components/TimePicker/index.js +0 -2
  91. package/components/TimePicker/index.js.map +0 -1
  92. package/internal/NativeTimeInput/NativeTimeInput.d.ts +0 -16
  93. package/internal/NativeTimeInput/NativeTimeInput.js +0 -25
  94. package/internal/NativeTimeInput/NativeTimeInput.js.map +0 -1
  95. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
  96. package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
  97. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
  98. package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +0 -7
  99. package/internal/NativeTimeInput/NativeTimeInput.utils.js +0 -28
  100. package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +0 -1
  101. package/internal/NativeTimeInput/index.d.ts +0 -1
  102. package/internal/NativeTimeInput/index.js +0 -2
  103. package/internal/NativeTimeInput/index.js.map +0 -1
  104. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +0 -2
  105. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +0 -20
  106. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +0 -1
  107. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +0 -2
  108. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +0 -20
  109. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +0 -1
  110. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +0 -2
  111. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +0 -20
  112. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  export interface ReactUIFeatureFlags {
3
+ selectAutoScrollToSelectedItem?: boolean;
3
4
  }
4
5
  export declare const reactUIFeatureFlagsDefault: ReactUIFeatureFlags;
5
6
  export declare const ReactUIFeatureFlagsContext: React.Context<ReactUIFeatureFlags>;
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
- export var reactUIFeatureFlagsDefault = {};
2
+ export var reactUIFeatureFlagsDefault = {
3
+ selectAutoScrollToSelectedItem: false,
4
+ };
3
5
  export var ReactUIFeatureFlagsContext = React.createContext(reactUIFeatureFlagsDefault);
4
6
  ReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';
5
7
  ReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';
@@ -1 +1 @@
1
- {"version":3,"file":"ReactUIFeatureFlagsContext.js","sourceRoot":"","sources":["ReactUIFeatureFlagsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,CAAC,IAAM,0BAA0B,GAAwB,EAAE,CAAC;AAElE,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAAsB,0BAA0B,CAAC,CAAC;AAE/G,0BAA0B,CAAC,WAAW,GAAG,4BAA4B,CAAC;AACtE,0BAA0B,CAAC,mBAAmB,GAAG,4BAA4B,CAAC","sourcesContent":["import React from 'react';\n\nexport interface ReactUIFeatureFlags {}\n\nexport const reactUIFeatureFlagsDefault: ReactUIFeatureFlags = {};\n\nexport const ReactUIFeatureFlagsContext = React.createContext<ReactUIFeatureFlags>(reactUIFeatureFlagsDefault);\n\nReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';\nReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';\n"]}
1
+ {"version":3,"file":"ReactUIFeatureFlagsContext.js","sourceRoot":"","sources":["ReactUIFeatureFlagsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,CAAC,IAAM,0BAA0B,GAAwB;IAC7D,8BAA8B,EAAE,KAAK;CACtC,CAAC;AAEF,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAAsB,0BAA0B,CAAC,CAAC;AAE/G,0BAA0B,CAAC,WAAW,GAAG,4BAA4B,CAAC;AACtE,0BAA0B,CAAC,mBAAmB,GAAG,4BAA4B,CAAC","sourcesContent":["import React from 'react';\n\nexport interface ReactUIFeatureFlags {\n selectAutoScrollToSelectedItem?: boolean;\n}\n\nexport const reactUIFeatureFlagsDefault: ReactUIFeatureFlags = {\n selectAutoScrollToSelectedItem: false,\n};\n\nexport const ReactUIFeatureFlagsContext = React.createContext<ReactUIFeatureFlags>(reactUIFeatureFlagsDefault);\n\nReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';\nReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "6.1.2-bea94.0",
3
+ "version": "6.1.3",
4
4
  "description": "UI Components",
5
5
  "homepage": "https://tech.skbkontur.ru/kontur-ui",
6
6
  "bugs": {
@@ -146,8 +146,6 @@
146
146
  "./components/Tabs/Tab": "./components/Tabs/Tab.js",
147
147
  "./components/Textarea": "./components/Textarea/index.js",
148
148
  "./components/Textarea/Textarea": "./components/Textarea/Textarea.js",
149
- "./components/TimePicker": "./components/TimePicker/index.js",
150
- "./components/TimePicker/TimePicker": "./components/TimePicker/TimePicker.js",
151
149
  "./components/Toast": "./components/Toast/index.js",
152
150
  "./components/Toast/Toast": "./components/Toast/Toast.js",
153
151
  "./components/Toast/locale": "./components/Toast/locale/index.js",
@@ -199,8 +197,6 @@
199
197
  "./internal/MobilePopup/MobilePopup": "./internal/MobilePopup/MobilePopup.js",
200
198
  "./internal/NativeDateInput": "./internal/NativeDateInput/index.js",
201
199
  "./internal/NativeDateInput/NativeDateInput": "./internal/NativeDateInput/NativeDateInput.js",
202
- "./internal/NativeTimeInput": "./internal/NativeTimeInput/index.js",
203
- "./internal/NativeTimeInput/NativeTimeInput": "./internal/NativeTimeInput/NativeTimeInput.js",
204
200
  "./internal/Popup": "./internal/Popup/index.js",
205
201
  "./internal/Popup/Popup": "./internal/Popup/Popup.js",
206
202
  "./internal/PopupMenu": "./internal/PopupMenu/index.js",
@@ -1,3 +0,0 @@
1
- export declare const TimeClockIcon: import("../../lib/forwardRefAndName.js").ReactUIIconWithRef<SVGSVGElement, Omit<import("../../internal/icons2022/BaseIcon.js").IconProps, "size"> & {
2
- size?: import("../../internal/icons2022/BaseIcon.js").IconProps["size"] | import("../../internal/icons2022/iconConstants.js").IconSizeAliases;
3
- }>;
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import { iconSizer } from '../../internal/icons2022/iconSizer.js';
3
- import { TimeClockIcon16Light } from '../../internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js';
4
- import { TimeClockIcon20Light } from '../../internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js';
5
- import { TimeClockIcon24Regular } from '../../internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js';
6
- export var TimeClockIcon = iconSizer({
7
- small: function () { return React.createElement(TimeClockIcon16Light, null); },
8
- medium: function () { return React.createElement(TimeClockIcon20Light, null); },
9
- large: function () { return React.createElement(TimeClockIcon24Regular, null); },
10
- }, 'TimeClockIcon');
11
- //# sourceMappingURL=TimeClockIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeClockIcon.js","sourceRoot":"","sources":["TimeClockIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gEAAgE,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,gEAAgE,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAE1G,MAAM,CAAC,IAAM,aAAa,GAAG,SAAS,CACpC;IACE,KAAK,EAAE,cAAM,OAAA,oBAAC,oBAAoB,OAAG,EAAxB,CAAwB;IACrC,MAAM,EAAE,cAAM,OAAA,oBAAC,oBAAoB,OAAG,EAAxB,CAAwB;IACtC,KAAK,EAAE,cAAM,OAAA,oBAAC,sBAAsB,OAAG,EAA1B,CAA0B;CACxC,EACD,eAAe,CAChB,CAAC","sourcesContent":["import React from 'react';\n\nimport { iconSizer } from '../../internal/icons2022/iconSizer.js';\nimport { TimeClockIcon16Light } from '../../internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js';\nimport { TimeClockIcon20Light } from '../../internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js';\nimport { TimeClockIcon24Regular } from '../../internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js';\n\nexport const TimeClockIcon = iconSizer(\n {\n small: () => <TimeClockIcon16Light />,\n medium: () => <TimeClockIcon20Light />,\n large: () => <TimeClockIcon24Regular />,\n },\n 'TimeClockIcon',\n);\n"]}
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import type { SizeProp } from '../../lib/types/props.js';
3
- import type { TimeFormat, TimeSegment } from './helpers/TimePicker.shared.js';
4
- export interface TimeFragmentsViewRef {
5
- isFragment(el: HTMLElement | EventTarget | null): boolean;
6
- getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;
7
- getRootNode(): HTMLSpanElement | null;
8
- }
9
- export interface TimeFragmentsViewProps {
10
- value: string;
11
- format: TimeFormat;
12
- size: SizeProp;
13
- onSelectSegment?(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;
14
- }
15
- export declare const TimeFragmentsView: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<TimeFragmentsViewRef, TimeFragmentsViewProps> & Record<never, never>;
@@ -1,72 +0,0 @@
1
- import React, { useCallback, useContext, useImperativeHandle, useRef } from 'react';
2
- import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
3
- import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
4
- import { ThemeContext } from '../../lib/theming/ThemeContext.js';
5
- import { TIME_PLACEHOLDER_CHAR, TIME_SEPARATOR } from './helpers/TimePicker.constants.js';
6
- import { getDisplaySegments, getTimeSegments } from './helpers/TimePicker.shared.js';
7
- import { getStyles } from './TimeFragmentsView.styles.js';
8
- var getSeparatorSizeClassName = function (styles, theme, size) {
9
- switch (size) {
10
- case 'large':
11
- return styles.separatorLarge(theme);
12
- case 'medium':
13
- return styles.separatorMedium(theme);
14
- case 'small':
15
- default:
16
- return styles.separatorSmall(theme);
17
- }
18
- };
19
- export var TimeFragmentsView = forwardRefAndName('TimeFragmentsView', function (props, ref) {
20
- var value = props.value, format = props.format, size = props.size, onSelectSegment = props.onSelectSegment;
21
- var theme = useContext(ThemeContext);
22
- var cx = useEmotion().cx;
23
- var styles = useStyles(getStyles);
24
- var rootRef = useRef(null);
25
- var rootClassName = cx(styles.root(), styles.selected(theme));
26
- var maskClassName = styles.mask(theme);
27
- var separatorSizeClassName = getSeparatorSizeClassName(styles, theme, size);
28
- var getSegment = useCallback(function (el) {
29
- var _a;
30
- var rootNode = rootRef.current;
31
- if (!rootNode || !el) {
32
- return null;
33
- }
34
- var fragments = Array.from(rootNode.querySelectorAll('[data-fragment]'));
35
- var segments = getTimeSegments(format);
36
- var index = fragments.findIndex(function (fragment) { return fragment === el || fragment.contains(el); });
37
- return index >= 0 ? ((_a = segments[index]) !== null && _a !== void 0 ? _a : null) : null;
38
- }, [format]);
39
- var isFragment = useCallback(function (el) {
40
- return getSegment(el) !== null;
41
- }, [getSegment]);
42
- useImperativeHandle(ref, function () { return ({
43
- isFragment: isFragment,
44
- getSegment: getSegment,
45
- getRootNode: function () { return rootRef.current; },
46
- }); }, [getSegment, isFragment]);
47
- var segments = getTimeSegments(format);
48
- var displaySegments = getDisplaySegments(value, format);
49
- return (React.createElement("span", { ref: rootRef, className: rootClassName }, value
50
- ? segments.flatMap(function (segment, index) {
51
- var _a;
52
- var _b;
53
- var segmentValue = (_b = displaySegments[index]) !== null && _b !== void 0 ? _b : '';
54
- var valueMask = Array.from(segmentValue)
55
- .filter(function (char) { return char !== TIME_PLACEHOLDER_CHAR; })
56
- .join('');
57
- var placeholderLength = segmentValue.length - valueMask.length;
58
- var nodes = [
59
- React.createElement("span", { key: segment, "data-fragment": '', className: styles.segment(), onMouseUp: function (event) { return onSelectSegment === null || onSelectSegment === void 0 ? void 0 : onSelectSegment(segment, event); } },
60
- valueMask,
61
- React.createElement("span", { className: maskClassName }, Array(placeholderLength).fill(TIME_PLACEHOLDER_CHAR).join(''))),
62
- ];
63
- if (index < segments.length - 1) {
64
- nodes.push(React.createElement("span", { key: "separator-".concat(index), className: cx(maskClassName, styles.separator(), separatorSizeClassName, (_a = {},
65
- _a[styles.separatorFilled()] = !segmentValue.includes(TIME_PLACEHOLDER_CHAR),
66
- _a)) }, TIME_SEPARATOR));
67
- }
68
- return nodes;
69
- })
70
- : null));
71
- });
72
- //# sourceMappingURL=TimeFragmentsView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeFragmentsView.js","sourceRoot":"","sources":["TimeFragmentsView.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useImperativeHandle, useRef } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, 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 { TIME_PLACEHOLDER_CHAR, TIME_SEPARATOR } from './helpers/TimePicker.constants.js';\nimport type { TimeFormat, TimeSegment } from './helpers/TimePicker.shared.js';\nimport { getDisplaySegments, getTimeSegments } from './helpers/TimePicker.shared.js';\nimport { getStyles } from './TimeFragmentsView.styles.js';\n\nexport interface TimeFragmentsViewRef {\n isFragment(el: HTMLElement | EventTarget | null): boolean;\n\n getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;\n\n getRootNode(): HTMLSpanElement | null;\n}\n\nexport interface TimeFragmentsViewProps {\n value: string;\n format: TimeFormat;\n size: SizeProp;\n\n onSelectSegment?(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;\n}\n\nconst getSeparatorSizeClassName = (styles: ReturnType<typeof getStyles>, theme: Theme, size: SizeProp): string => {\n switch (size) {\n case 'large':\n return styles.separatorLarge(theme);\n case 'medium':\n return styles.separatorMedium(theme);\n case 'small':\n default:\n return styles.separatorSmall(theme);\n }\n};\n\nexport const TimeFragmentsView = forwardRefAndName<TimeFragmentsViewRef, TimeFragmentsViewProps>(\n 'TimeFragmentsView',\n (props, ref) => {\n const { value, format, size, onSelectSegment } = props;\n\n const theme = useContext(ThemeContext);\n\n const { cx } = useEmotion();\n\n const styles = useStyles(getStyles);\n\n const rootRef = useRef<HTMLSpanElement>(null);\n\n const rootClassName = cx(styles.root(), styles.selected(theme));\n const maskClassName = styles.mask(theme);\n const separatorSizeClassName = getSeparatorSizeClassName(styles, theme, size);\n\n const getSegment = useCallback(\n (el: HTMLElement | EventTarget | null): TimeSegment | null => {\n const rootNode = rootRef.current;\n\n if (!rootNode || !el) {\n return null;\n }\n\n const fragments: HTMLSpanElement[] = Array.from(rootNode.querySelectorAll('[data-fragment]'));\n const segments = getTimeSegments(format);\n\n const index = fragments.findIndex((fragment) => fragment === el || fragment.contains(el as HTMLSpanElement));\n\n return index >= 0 ? (segments[index] ?? null) : null;\n },\n [format],\n );\n\n const isFragment = useCallback(\n (el: HTMLElement | EventTarget | null): boolean => {\n return getSegment(el) !== null;\n },\n [getSegment],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n isFragment,\n getSegment,\n getRootNode: () => rootRef.current,\n }),\n [getSegment, isFragment],\n );\n\n const segments = getTimeSegments(format);\n const displaySegments = getDisplaySegments(value, format);\n\n return (\n <span ref={rootRef} className={rootClassName}>\n {value\n ? segments.flatMap((segment, index) => {\n const segmentValue = displaySegments[index] ?? '';\n\n const valueMask = Array.from(segmentValue)\n .filter((char) => char !== TIME_PLACEHOLDER_CHAR)\n .join('');\n\n const placeholderLength = segmentValue.length - valueMask.length;\n\n const nodes = [\n <span\n key={segment}\n data-fragment={''}\n className={styles.segment()}\n onMouseUp={(event) => onSelectSegment?.(segment, event)}\n >\n {valueMask}\n <span className={maskClassName}>{Array(placeholderLength).fill(TIME_PLACEHOLDER_CHAR).join('')}</span>\n </span>,\n ];\n\n if (index < segments.length - 1) {\n nodes.push(\n <span\n key={`separator-${index}`}\n className={cx(maskClassName, styles.separator(), separatorSizeClassName, {\n [styles.separatorFilled()]: !segmentValue.includes(TIME_PLACEHOLDER_CHAR),\n })}\n >\n {TIME_SEPARATOR}\n </span>,\n );\n }\n\n return nodes;\n })\n : null}\n </span>\n );\n },\n);\n"]}
@@ -1,12 +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
- selected(t: Theme): string;
5
- segment(): string;
6
- separator(): string;
7
- separatorSmall(t: Theme): string;
8
- separatorMedium(t: Theme): string;
9
- separatorLarge(t: Theme): string;
10
- mask(t: Theme): string;
11
- separatorFilled(): string;
12
- }>;
@@ -1,43 +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 cursor: text;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "], ["\n cursor: text;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n "])));
11
- },
12
- selected: function (t) {
13
- var getSelection = function (background, color) {
14
- return (background || color) &&
15
- "& ::selection {\n background: ".concat(background, ";\n color: ").concat(color, ";\n }");
16
- };
17
- return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n cursor: text;\n ", "\n "], ["\n cursor: text;\n ", "\n "])), getSelection(t.timePickerSelectedBgColor, t.timePickerSelectedTextColor));
18
- },
19
- segment: function () {
20
- return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: inline;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n "], ["\n display: inline;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n "])));
21
- },
22
- separator: function () {
23
- return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline;\n position: relative;\n "], ["\n display: inline;\n position: relative;\n "])));
24
- },
25
- separatorSmall: function (t) {
26
- return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n top: ", ";\n padding-left: ", ";\n padding-right: ", ";\n "], ["\n top: ", ";\n padding-left: ", ";\n padding-right: ", ";\n "])), t.timePickerSeparatorOffsetTopSmall, t.timePickerSeparatorPaddingXSmall, t.timePickerSeparatorPaddingXSmall);
27
- },
28
- separatorMedium: function (t) {
29
- return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n top: ", ";\n padding-left: ", ";\n padding-right: ", ";\n "], ["\n top: ", ";\n padding-left: ", ";\n padding-right: ", ";\n "])), t.timePickerSeparatorOffsetTopMedium, t.timePickerSeparatorPaddingXMedium, t.timePickerSeparatorPaddingXMedium);
30
- },
31
- separatorLarge: function (t) {
32
- return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n top: ", ";\n padding-left: ", ";\n padding-right: ", ";\n "], ["\n top: ", ";\n padding-left: ", ";\n padding-right: ", ";\n "])), t.timePickerSeparatorOffsetTopLarge, t.timePickerSeparatorPaddingXLarge, t.timePickerSeparatorPaddingXLarge);
33
- },
34
- mask: function (t) {
35
- return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.timePickerMaskColor);
36
- },
37
- separatorFilled: function () {
38
- return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n color: inherit;\n "], ["\n color: inherit;\n "])));
39
- },
40
- });
41
- });
42
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;
43
- //# sourceMappingURL=TimeFragmentsView.styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeFragmentsView.styles.js","sourceRoot":"","sources":["TimeFragmentsView.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,uKAAA,oGAIT,KAAC;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,IAAM,YAAY,GAAG,UAAC,UAAkB,EAAE,KAAa;gBACrD,OAAA,CAAC,UAAU,IAAI,KAAK,CAAC;oBACrB,+CACgB,UAAU,+BACf,KAAK,eACd;YAJF,CAIE,CAAC;YAEL,OAAO,GAAG,4GAAA,+BAEN,EAAwE,QAC3E,KADG,YAAY,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,2BAA2B,CAAC,EAC1E;QACJ,CAAC;QAED,OAAO;YACL,OAAO,GAAG,uKAAA,oGAIT,KAAC;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,8HAAA,2DAGT,KAAC;QACJ,CAAC;QAED,cAAc,YAAC,CAAQ;YACrB,OAAO,GAAG,oJAAA,eACD,EAAmC,yBAC1B,EAAkC,0BACjC,EAAkC,SACpD,KAHQ,CAAC,CAAC,iCAAiC,EAC1B,CAAC,CAAC,gCAAgC,EACjC,CAAC,CAAC,gCAAgC,EACnD;QACJ,CAAC;QAED,eAAe,YAAC,CAAQ;YACtB,OAAO,GAAG,oJAAA,eACD,EAAoC,yBAC3B,EAAmC,0BAClC,EAAmC,SACrD,KAHQ,CAAC,CAAC,kCAAkC,EAC3B,CAAC,CAAC,iCAAiC,EAClC,CAAC,CAAC,iCAAiC,EACpD;QACJ,CAAC;QAED,cAAc,YAAC,CAAQ;YACrB,OAAO,GAAG,oJAAA,eACD,EAAmC,yBAC1B,EAAkC,0BACjC,EAAkC,SACpD,KAHQ,CAAC,CAAC,iCAAiC,EAC1B,CAAC,CAAC,gCAAgC,EACjC,CAAC,CAAC,gCAAgC,EACnD;QACJ,CAAC;QAED,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,+FAAA,iBACC,EAAqB,SAC/B,KADU,CAAC,CAAC,mBAAmB,EAC9B;QACJ,CAAC;QAED,eAAe;YACb,OAAO,GAAG,kGAAA,+BAET,KAAC;QACJ,CAAC;KACF,CAAC;AAzE8D,CAyE9D,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 cursor: text;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n selected(t: Theme) {\n const getSelection = (background: string, color: string) =>\n (background || color) &&\n `& ::selection {\n background: ${background};\n color: ${color};\n }`;\n\n return css`\n cursor: text;\n ${getSelection(t.timePickerSelectedBgColor, t.timePickerSelectedTextColor)}\n `;\n },\n\n segment() {\n return css`\n display: inline;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n `;\n },\n\n separator() {\n return css`\n display: inline;\n position: relative;\n `;\n },\n\n separatorSmall(t: Theme) {\n return css`\n top: ${t.timePickerSeparatorOffsetTopSmall};\n padding-left: ${t.timePickerSeparatorPaddingXSmall};\n padding-right: ${t.timePickerSeparatorPaddingXSmall};\n `;\n },\n\n separatorMedium(t: Theme) {\n return css`\n top: ${t.timePickerSeparatorOffsetTopMedium};\n padding-left: ${t.timePickerSeparatorPaddingXMedium};\n padding-right: ${t.timePickerSeparatorPaddingXMedium};\n `;\n },\n\n separatorLarge(t: Theme) {\n return css`\n top: ${t.timePickerSeparatorOffsetTopLarge};\n padding-left: ${t.timePickerSeparatorPaddingXLarge};\n padding-right: ${t.timePickerSeparatorPaddingXLarge};\n `;\n },\n\n mask(t: Theme) {\n return css`\n color: ${t.timePickerMaskColor};\n `;\n },\n\n separatorFilled() {\n return css`\n color: inherit;\n `;\n },\n}));\n"]}
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import type { InputProps } from '../Input/index.js';
3
- import { type TimeFormat, type TimeSegment } from './helpers/TimePicker.shared.js';
4
- export interface TimeInputRef {
5
- focus(): void;
6
- blur(): void;
7
- blink(): void;
8
- isFragment(el: HTMLElement | EventTarget | null): boolean;
9
- isAllSelected(): boolean;
10
- getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;
11
- selectSegment(segment: TimeSegment): void;
12
- selectAll(): void;
13
- getNode(): HTMLElement | null;
14
- }
15
- export interface TimeInputProps extends Omit<InputProps, 'type' | 'value' | 'onValueChange' | 'inputMode'> {
16
- hasDropdown?: boolean;
17
- format: TimeFormat;
18
- value: string;
19
- 'aria-placeholder'?: string;
20
- onSelectSegment?(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;
21
- }
22
- export declare const TimeInput: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<TimeInputRef, TimeInputProps> & Record<never, never>;
@@ -1,103 +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 React, { useContext, useEffect, useImperativeHandle, useRef } from 'react';
24
- import { InputLikeText } from '../../internal/InputLikeText/index.js';
25
- import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
26
- import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
27
- import { ThemeContext } from '../../lib/theming/ThemeContext.js';
28
- import { getTimePickerInputMinWidth, getTimePickerSuffixMargin } from './helpers/TimePicker.layout.js';
29
- import { getTimeSegments } from './helpers/TimePicker.shared.js';
30
- import { TimeClockIcon } from './TimeClockIcon.js';
31
- import { TimeFragmentsView } from './TimeFragmentsView.js';
32
- import { getStyles } from './TimePicker.styles.js';
33
- export var TimeInput = forwardRefAndName('TimeInput', function (props, ref) {
34
- var _a;
35
- var _b = props.hasDropdown, hasDropdown = _b === void 0 ? false : _b, _c = props.size, size = _c === void 0 ? 'small' : _c, disabled = props.disabled, autoFocus = props.autoFocus, suffix = props.suffix, style = props.style, width = props.width, rightIcon = props.rightIcon, format = props.format, value = props.value, onSelectSegment = props.onSelectSegment, rest = __rest(props, ["hasDropdown", "size", "disabled", "autoFocus", "suffix", "style", "width", "rightIcon", "format", "value", "onSelectSegment"]);
36
- var theme = useContext(ThemeContext);
37
- var cx = useEmotion().cx;
38
- var styles = useStyles(getStyles);
39
- var inputLikeTextRef = useRef(null);
40
- var fragmentsViewRef = useRef(null);
41
- useImperativeHandle(ref, function () { return ({
42
- focus: function () { var _a; return (_a = inputLikeTextRef.current) === null || _a === void 0 ? void 0 : _a.focus(); },
43
- blur: function () { var _a; return (_a = inputLikeTextRef.current) === null || _a === void 0 ? void 0 : _a.blur(); },
44
- blink: function () { var _a; return (_a = inputLikeTextRef.current) === null || _a === void 0 ? void 0 : _a.blink(); },
45
- getNode: function () { var _a, _b; return (_b = (_a = inputLikeTextRef.current) === null || _a === void 0 ? void 0 : _a.getNode()) !== null && _b !== void 0 ? _b : null; },
46
- isFragment: function (el) { var _a, _b; return (_b = (_a = fragmentsViewRef.current) === null || _a === void 0 ? void 0 : _a.isFragment(el)) !== null && _b !== void 0 ? _b : false; },
47
- getSegment: function (el) { var _a, _b; return (_b = (_a = fragmentsViewRef.current) === null || _a === void 0 ? void 0 : _a.getSegment(el)) !== null && _b !== void 0 ? _b : null; },
48
- selectAll: function () {
49
- var _a, _b, _c;
50
- var rootNode = (_b = (_a = fragmentsViewRef.current) === null || _a === void 0 ? void 0 : _a.getRootNode()) !== null && _b !== void 0 ? _b : null;
51
- if (!rootNode) {
52
- return;
53
- }
54
- (_c = inputLikeTextRef.current) === null || _c === void 0 ? void 0 : _c.selectInnerNode(rootNode, 0, rootNode.childNodes.length);
55
- },
56
- isAllSelected: function () {
57
- var _a, _b, _c, _d, _e;
58
- var rootNode = (_b = (_a = fragmentsViewRef.current) === null || _a === void 0 ? void 0 : _a.getRootNode()) !== null && _b !== void 0 ? _b : null;
59
- if (!rootNode) {
60
- return false;
61
- }
62
- var selection = (_d = (_c = rootNode.ownerDocument.defaultView) === null || _c === void 0 ? void 0 : _c.getSelection()) !== null && _d !== void 0 ? _d : null;
63
- if (!selection || selection.rangeCount === 0 || selection.isCollapsed) {
64
- return false;
65
- }
66
- var range = selection.getRangeAt(0);
67
- var text = (_e = rootNode.textContent) !== null && _e !== void 0 ? _e : '';
68
- return (range.toString() === text && rootNode.contains(range.startContainer) && rootNode.contains(range.endContainer));
69
- },
70
- selectSegment: function (segment) {
71
- var _a, _b, _c;
72
- var rootNode = (_b = (_a = fragmentsViewRef.current) === null || _a === void 0 ? void 0 : _a.getRootNode()) !== null && _b !== void 0 ? _b : null;
73
- if (!rootNode) {
74
- return;
75
- }
76
- var segmentIndex = getTimeSegments(format).indexOf(segment);
77
- var start = segmentIndex < 0 ? 0 : segmentIndex * 2;
78
- var end = start + 1;
79
- (_c = inputLikeTextRef.current) === null || _c === void 0 ? void 0 : _c.selectInnerNode(rootNode, start, end);
80
- },
81
- }); }, [format]);
82
- useEffect(function () {
83
- if (!autoFocus || disabled) {
84
- return;
85
- }
86
- var timer = setTimeout(function () {
87
- var _a;
88
- (_a = inputLikeTextRef.current) === null || _a === void 0 ? void 0 : _a.focus();
89
- }, 0);
90
- return function () {
91
- clearTimeout(timer);
92
- };
93
- }, []);
94
- var resolvedRightIcon = rightIcon === undefined ? (React.createElement("span", { className: cx(styles.rightIcon(), styles.rightIconDefault(theme), (_a = {},
95
- _a[styles.rightIconInteractive()] = hasDropdown && !disabled,
96
- _a)) },
97
- React.createElement(TimeClockIcon, { size: size }))) : (rightIcon);
98
- var suffixMarginLeft = getTimePickerSuffixMargin(size, theme);
99
- var inputMinWidth = getTimePickerInputMinWidth(size, format, resolvedRightIcon !== null, theme);
100
- return (React.createElement(InputLikeText, __assign({ ref: inputLikeTextRef }, rest, { takeContentWidth: true, disabled: disabled, size: size, inputMode: 'numeric', width: width !== null && width !== void 0 ? width : 'auto', suffix: suffix && React.createElement("span", { style: { marginLeft: suffixMarginLeft } }, suffix), style: __assign(__assign({}, style), { minWidth: inputMinWidth }), rightIcon: resolvedRightIcon, value: value }),
101
- React.createElement(TimeFragmentsView, { ref: fragmentsViewRef, format: format, size: size, value: value, onSelectSegment: onSelectSegment })));
102
- });
103
- //# sourceMappingURL=TimeInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeInput.js","sourceRoot":"","sources":["TimeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useImperativeHandle, useRef } from 'react';\n\nimport { InputLikeText } from '../../internal/InputLikeText/index.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { InputProps } from '../Input/index.js';\nimport { getTimePickerInputMinWidth, getTimePickerSuffixMargin } from './helpers/TimePicker.layout.js';\nimport { getTimeSegments, type TimeFormat, type TimeSegment } from './helpers/TimePicker.shared.js';\nimport { TimeClockIcon } from './TimeClockIcon.js';\nimport type { TimeFragmentsViewRef } from './TimeFragmentsView.js';\nimport { TimeFragmentsView } from './TimeFragmentsView.js';\nimport { getStyles } from './TimePicker.styles.js';\n\nexport interface TimeInputRef {\n focus(): void;\n\n blur(): void;\n\n blink(): void;\n\n isFragment(el: HTMLElement | EventTarget | null): boolean;\n\n isAllSelected(): boolean;\n\n getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;\n\n selectSegment(segment: TimeSegment): void;\n\n selectAll(): void;\n\n getNode(): HTMLElement | null;\n}\n\nexport interface TimeInputProps extends Omit<InputProps, 'type' | 'value' | 'onValueChange' | 'inputMode'> {\n hasDropdown?: boolean;\n format: TimeFormat;\n value: string;\n 'aria-placeholder'?: string;\n onSelectSegment?(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;\n}\n\nexport const TimeInput = forwardRefAndName<TimeInputRef, TimeInputProps>('TimeInput', (props, ref) => {\n const {\n hasDropdown = false,\n size = 'small',\n disabled,\n autoFocus,\n suffix,\n style,\n width,\n rightIcon,\n format,\n value,\n onSelectSegment,\n ...rest\n } = props;\n\n const theme = useContext(ThemeContext);\n\n const { cx } = useEmotion();\n\n const styles = useStyles(getStyles);\n\n const inputLikeTextRef = useRef<InputLikeText>(null);\n const fragmentsViewRef = useRef<TimeFragmentsViewRef>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => inputLikeTextRef.current?.focus(),\n blur: () => inputLikeTextRef.current?.blur(),\n blink: () => inputLikeTextRef.current?.blink(),\n getNode: () => inputLikeTextRef.current?.getNode() ?? null,\n isFragment: (el) => fragmentsViewRef.current?.isFragment(el) ?? false,\n getSegment: (el) => fragmentsViewRef.current?.getSegment(el) ?? null,\n selectAll: () => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return;\n }\n\n inputLikeTextRef.current?.selectInnerNode(rootNode, 0, rootNode.childNodes.length);\n },\n\n isAllSelected: () => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return false;\n }\n\n const selection = rootNode.ownerDocument.defaultView?.getSelection() ?? null;\n\n if (!selection || selection.rangeCount === 0 || selection.isCollapsed) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n const text = rootNode.textContent ?? '';\n\n return (\n range.toString() === text && rootNode.contains(range.startContainer) && rootNode.contains(range.endContainer)\n );\n },\n\n selectSegment: (segment) => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return;\n }\n\n const segmentIndex = getTimeSegments(format).indexOf(segment);\n const start = segmentIndex < 0 ? 0 : segmentIndex * 2;\n const end = start + 1;\n\n inputLikeTextRef.current?.selectInnerNode(rootNode, start, end);\n },\n }),\n [format],\n );\n\n useEffect(() => {\n if (!autoFocus || disabled) {\n return;\n }\n\n const timer = setTimeout(() => {\n inputLikeTextRef.current?.focus();\n }, 0);\n\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n const resolvedRightIcon =\n rightIcon === undefined ? (\n <span\n className={cx(styles.rightIcon(), styles.rightIconDefault(theme), {\n [styles.rightIconInteractive()]: hasDropdown && !disabled,\n })}\n >\n <TimeClockIcon size={size} />\n </span>\n ) : (\n rightIcon\n );\n const suffixMarginLeft = getTimePickerSuffixMargin(size, theme);\n const inputMinWidth = getTimePickerInputMinWidth(size, format, resolvedRightIcon !== null, theme);\n\n return (\n <InputLikeText\n ref={inputLikeTextRef}\n {...rest}\n takeContentWidth\n disabled={disabled}\n size={size}\n inputMode={'numeric'}\n width={width ?? 'auto'}\n suffix={suffix && <span style={{ marginLeft: suffixMarginLeft }}>{suffix}</span>}\n style={{ ...style, minWidth: inputMinWidth }}\n rightIcon={resolvedRightIcon}\n value={value}\n >\n <TimeFragmentsView\n ref={fragmentsViewRef}\n format={format}\n size={size}\n value={value}\n onSelectSegment={onSelectSegment}\n />\n </InputLikeText>\n );\n});\n"]}
@@ -1,70 +0,0 @@
1
- import React from 'react';
2
- import type { AriaAttributes, HTMLAttributes, ReactNode } from 'react';
3
- import type { CommonProps } from '../../internal/CommonWrapper/index.js';
4
- import type { SizeProp } from '../../lib/types/props.js';
5
- import type { TimeFormat, TimeSlot } from './helpers/TimePicker.shared.js';
6
- export interface TimePickerProps extends CommonProps, Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'> {
7
- /** Устанавливает формат времени @default minute */
8
- format?: TimeFormat;
9
- /** Определяет массив объектов со слотами в формате TimeSlot */
10
- slots?: TimeSlot[];
11
- /** Задает нижнюю границу времени. Слоты за границей становятся disabled */
12
- minTime?: string;
13
- /** Задает верхнюю границу времени. Слоты за границей становятся disabled */
14
- maxTime?: string;
15
- /** Значение поля @param value 'hh:mm:[:ss]' */
16
- value?: string;
17
- /** Устанавливает фокус на поле ввода после окончания загрузки страницы @default false */
18
- autoFocus?: boolean;
19
- /** Делает компонент недоступным. */
20
- disabled?: boolean;
21
- /** Переводит контрол в состояние валидации 'ошибка'. */
22
- error?: boolean;
23
- /** Переводит контрол в состояние валидации 'предупреждение'. */
24
- warning?: boolean;
25
- /** Включает нативный системный выбор времени на мобильных устройствах */
26
- useMobileNativeTimePicker?: boolean;
27
- /** Расположение выпадающего меню */
28
- menuPos?: 'top' | 'bottom';
29
- /** Выравнивание выпадающего меню */
30
- menuAlign?: 'left' | 'right';
31
- /** Ширина выпадающего меню. По умолчанию — минимум ширина поля ввода, расширяется по контенту. */
32
- menuWidth?: string | number;
33
- /** Задает ширину поля. */
34
- width?: string | number;
35
- /** Переопределяет иконку или скрывает, если передать `null`. */
36
- rightIcon?: React.ReactNode | (() => React.ReactNode);
37
- /** Устанавливает суффикс после значения и перед иконкой. */
38
- suffix?: ReactNode;
39
- /** Размер поля ввода и выпадающего меню */
40
- size?: SizeProp;
41
- /** Задает функцию, которая вызывается при клике на контрол. */
42
- onClick?(event: React.MouseEvent<HTMLElement>): void;
43
- /** Событие изменения значения `value` в поле @param value - 'hh:mm:[:ss]' */
44
- onValueChange?(value: string): void;
45
- /** Задает функцию, которая вызывается при потере фокуса. */
46
- onBlur?(event: React.FocusEvent<HTMLElement>): void;
47
- /** Задает функцию, которая вызывается при получении фокуса. */
48
- onFocus?(event: React.FocusEvent<HTMLElement>): void;
49
- /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */
50
- onKeyDown?(event: React.KeyboardEvent<HTMLElement>): void;
51
- /** Задает функцию, которая вызывается при вставке значения. */
52
- onPaste?(event: React.ClipboardEvent<HTMLElement>): void;
53
- }
54
- export interface TimePickerRef {
55
- /** Устанавливает фокус на поле ввода */
56
- focus(): void;
57
- /** Снимает фокус с поля ввода */
58
- blur(): void;
59
- /** Закрывает выпадающее меню */
60
- close(): void;
61
- /** Запускает анимацию blink у поля ввода времени */
62
- blink(): void;
63
- /** Возвращает DOM-узел поля ввода */
64
- getNode(): HTMLElement | null;
65
- /** Возвращает корневой DOM-узел компонента */
66
- getRootNode(): HTMLElement | null;
67
- }
68
- export type TimePicker = TimePickerRef;
69
- /** Поле с временем помогает вводить время с клавиатуры или выбирать его с помощью мыши */
70
- export declare const TimePicker: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<TimePickerRef, TimePickerProps> & Record<never, never>;