@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.
- package/CHANGELOG.md +27 -0
- package/components/Button/Button.d.ts +5 -0
- package/components/Button/Button.js +7 -5
- package/components/Button/Button.js.map +1 -1
- package/components/Input/Input.d.ts +1 -1
- package/components/Input/Input.js.map +1 -1
- package/components/Input/Input.styles.js +1 -1
- package/components/Input/Input.styles.js.map +1 -1
- package/components/Input/InputLayout/InputLayoutAsideCounter.js +2 -1
- package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -1
- package/components/Select/Select.d.ts +1 -0
- package/components/Select/Select.js +14 -7
- package/components/Select/Select.js.map +1 -1
- package/components/Select/selectTheme.js +2 -0
- package/components/Select/selectTheme.js.map +1 -1
- package/components/Switcher/Switcher.js +1 -0
- package/components/Switcher/Switcher.js.map +1 -1
- package/components/Textarea/TextareaCounter.js +2 -1
- package/components/Textarea/TextareaCounter.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.js +1 -1
- package/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +0 -34
- package/internal/themes/BasicTheme.js +0 -96
- package/internal/themes/BasicTheme.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/package.json +1 -5
- package/components/TimePicker/TimeClockIcon.d.ts +0 -3
- package/components/TimePicker/TimeClockIcon.js +0 -11
- package/components/TimePicker/TimeClockIcon.js.map +0 -1
- package/components/TimePicker/TimeFragmentsView.d.ts +0 -15
- package/components/TimePicker/TimeFragmentsView.js +0 -72
- package/components/TimePicker/TimeFragmentsView.js.map +0 -1
- package/components/TimePicker/TimeFragmentsView.styles.d.ts +0 -12
- package/components/TimePicker/TimeFragmentsView.styles.js +0 -43
- package/components/TimePicker/TimeFragmentsView.styles.js.map +0 -1
- package/components/TimePicker/TimeInput.d.ts +0 -22
- package/components/TimePicker/TimeInput.js +0 -103
- package/components/TimePicker/TimeInput.js.map +0 -1
- package/components/TimePicker/TimePicker.d.ts +0 -70
- package/components/TimePicker/TimePicker.js +0 -506
- package/components/TimePicker/TimePicker.js.map +0 -1
- package/components/TimePicker/TimePicker.styles.d.ts +0 -14
- package/components/TimePicker/TimePicker.styles.js +0 -45
- package/components/TimePicker/TimePicker.styles.js.map +0 -1
- package/components/TimePicker/TimePickerMobilePopup.d.ts +0 -38
- package/components/TimePicker/TimePickerMobilePopup.js +0 -21
- package/components/TimePicker/TimePickerMobilePopup.js.map +0 -1
- package/components/TimePicker/TimePickerPopup.d.ts +0 -20
- package/components/TimePicker/TimePickerPopup.js +0 -18
- package/components/TimePicker/TimePickerPopup.js.map +0 -1
- package/components/TimePicker/TimePickerSlots.d.ts +0 -17
- package/components/TimePicker/TimePickerSlots.js +0 -80
- package/components/TimePicker/TimePickerSlots.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -22
- package/components/TimePicker/helpers/TimePicker.constants.js +0 -31
- package/components/TimePicker/helpers/TimePicker.constants.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.editing.d.ts +0 -23
- package/components/TimePicker/helpers/TimePicker.editing.js +0 -101
- package/components/TimePicker/helpers/TimePicker.editing.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.layout.d.ts +0 -6
- package/components/TimePicker/helpers/TimePicker.layout.js +0 -49
- package/components/TimePicker/helpers/TimePicker.layout.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.selection.d.ts +0 -5
- package/components/TimePicker/helpers/TimePicker.selection.js +0 -23
- package/components/TimePicker/helpers/TimePicker.selection.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.shared.d.ts +0 -47
- package/components/TimePicker/helpers/TimePicker.shared.js +0 -70
- package/components/TimePicker/helpers/TimePicker.shared.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -23
- package/components/TimePicker/helpers/TimePicker.value.js +0 -71
- package/components/TimePicker/helpers/TimePicker.value.js.map +0 -1
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.d.ts +0 -4
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js +0 -24
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +0 -17
- package/components/TimePicker/hooks/useTimePickerDropdown.js +0 -62
- package/components/TimePicker/hooks/useTimePickerDropdown.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerSelection.d.ts +0 -18
- package/components/TimePicker/hooks/useTimePickerSelection.js +0 -66
- package/components/TimePicker/hooks/useTimePickerSelection.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerValue.d.ts +0 -18
- package/components/TimePicker/hooks/useTimePickerValue.js +0 -58
- package/components/TimePicker/hooks/useTimePickerValue.js.map +0 -1
- package/components/TimePicker/index.d.ts +0 -2
- package/components/TimePicker/index.js +0 -2
- package/components/TimePicker/index.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.d.ts +0 -16
- package/internal/NativeTimeInput/NativeTimeInput.js +0 -25
- package/internal/NativeTimeInput/NativeTimeInput.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
- package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
- package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +0 -7
- package/internal/NativeTimeInput/NativeTimeInput.utils.js +0 -28
- package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +0 -1
- package/internal/NativeTimeInput/index.d.ts +0 -1
- package/internal/NativeTimeInput/index.js +0 -2
- package/internal/NativeTimeInput/index.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +0 -1
|
@@ -1,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;
|
|
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.
|
|
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>;
|