@skbkontur/react-ui 6.1.2-ae08d.0 → 6.1.2
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 +16 -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/Group/Group.js +2 -3
- package/components/Group/Group.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/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/lib/utils.d.ts +0 -2
- package/lib/utils.js +0 -1
- package/lib/utils.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 -73
- 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/lib/utils.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ import type { HintProps } from '../components/Hint/index.js';
|
|
|
9
9
|
import type { InputProps } from '../components/Input/index.js';
|
|
10
10
|
import type { PasswordInputProps } from '../components/PasswordInput/index.js';
|
|
11
11
|
import type { SelectProps } from '../components/Select/index.js';
|
|
12
|
-
import type { TimePickerProps } from '../components/TimePicker/index.js';
|
|
13
12
|
import type { TooltipProps } from '../components/Tooltip/index.js';
|
|
14
13
|
import type { GlobalObject } from '../lib/globalObject.js';
|
|
15
14
|
export { delay } from './delay.js';
|
|
@@ -98,7 +97,6 @@ export declare const isDropdown: (child: React.ReactNode) => child is React.Reac
|
|
|
98
97
|
export declare const isDropdownMenu: (child: React.ReactNode) => child is React.ReactElement<DropdownMenuProps, string | React.JSXElementConstructor<any>>;
|
|
99
98
|
export declare const isHint: (child: React.ReactNode) => child is React.ReactElement<HintProps, string | React.JSXElementConstructor<any>>;
|
|
100
99
|
export declare const isTooltip: (child: React.ReactNode) => child is React.ReactElement<TooltipProps, string | React.JSXElementConstructor<any>>;
|
|
101
|
-
export declare const isTimePicker: (child: React.ReactNode) => child is React.ReactElement<TimePickerProps, string | React.JSXElementConstructor<any>>;
|
|
102
100
|
export declare const isKonturIcon: (icon: React.ReactElement) => boolean;
|
|
103
101
|
export declare function clickOutside(eventType?: 'touchstart' | 'mousedown' | 'pointerup'): void;
|
|
104
102
|
export declare function isElement(el: unknown): el is Element;
|
package/lib/utils.js
CHANGED
|
@@ -180,7 +180,6 @@ export var isDropdown = isReactUIComponent('Dropdown');
|
|
|
180
180
|
export var isDropdownMenu = isReactUIComponent('DropdownMenu');
|
|
181
181
|
export var isHint = isReactUIComponent('Hint');
|
|
182
182
|
export var isTooltip = isReactUIComponent('Tooltip');
|
|
183
|
-
export var isTimePicker = isReactUIComponent('TimePicker');
|
|
184
183
|
export var isKonturIcon = function (icon) {
|
|
185
184
|
return Object.prototype.hasOwnProperty.call(icon === null || icon === void 0 ? void 0 : icon.type, '__KONTUR_ICON__');
|
|
186
185
|
};
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type React from 'react';\nimport { isValidElement } from 'react';\n\nimport type { AutocompleteProps } from '../components/Autocomplete/index.js';\nimport type { ButtonProps } from '../components/Button/index.js';\nimport type { CurrencyInputProps } from '../components/CurrencyInput/index.js';\nimport type { DropdownProps } from '../components/Dropdown/index.js';\nimport type { DropdownMenuProps } from '../components/DropdownMenu/index.js';\nimport type { FxInputProps } from '../components/FxInput/index.js';\nimport type { HintProps } from '../components/Hint/index.js';\nimport type { InputProps } from '../components/Input/index.js';\nimport type { PasswordInputProps } from '../components/PasswordInput/index.js';\nimport type { SelectProps } from '../components/Select/index.js';\nimport type { TimePickerProps } from '../components/TimePicker/index.js';\nimport type { TooltipProps } from '../components/Tooltip/index.js';\nimport type { GlobalObject } from '../lib/globalObject.js';\nimport { isBrowser } from '../lib/globalObject.js';\nimport { isForwardRef, isMemo } from './react-is.js';\n\nexport { delay } from './delay.js';\n\n// NOTE: Copy-paste from @types/react\nexport type Defaultize<P, D> = P extends any\n ? string extends keyof P\n ? P\n : Pick<P, Exclude<keyof P, keyof D>> &\n Partial<Pick<P, Extract<keyof P, keyof D>>> &\n Partial<Pick<D, Exclude<keyof D, keyof P>>>\n : never;\n\nexport type DefaultizeProps<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D> : P;\n\nexport type AnyObject = Record<string, unknown>;\n\nexport type NoInfer<T> = T extends infer U ? U : never;\n\nexport const emptyHandler = (): void => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number): () => void {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n setTimeout(resolve, ms);\n })\n .then(task)\n .catch(() => null);\n\n return cancelationToken;\n}\n\nexport type FunctionWithParams<R = any> = (...args: any[]) => R;\n\nexport function isFunction<T>(x: T | FunctionWithParams): x is FunctionWithParams {\n return typeof x === 'function';\n}\n\nexport function isFunctionalComponent(Component: unknown): Component is React.ComponentType {\n return Boolean(typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent));\n}\n\nexport function isClassComponent(Component: unknown): Component is React.ComponentType {\n return Boolean(typeof Component === 'function' && Component.prototype && Component.prototype.isReactComponent);\n}\n\nexport function isIntrinsicElement(element: React.ReactElement<unknown>): boolean {\n return typeof element.type === 'string';\n}\n\nexport function isRefableElement(element: React.ReactElement<unknown>): boolean {\n return (\n Boolean(isIntrinsicElement(element) || isClassComponent(element.type) || isForwardRef(element)) || isMemo(element)\n );\n}\n\nexport function escapeRegExpSpecChars(s: string): string {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport const getRandomID = (): string => Math.random().toString(16).slice(2);\n\nexport const isExternalLink = (link: string, globalObject: GlobalObject): boolean => {\n return isBrowser(globalObject) && new RegExp(`^(https?:)?//(?!${globalObject.location.host})\\\\S+`, 'gi').test(link);\n};\n\n/**\n * Check if the given ReactNode is an element of the specified ReactUI component\n */\nexport const isReactUINode = (componentName: string, node: React.ReactNode): boolean => {\n if (isValidElement(node)) {\n return (\n Object.prototype.hasOwnProperty.call(node.type, '__KONTUR_REACT_UI__') &&\n // @ts-expect-error: React doesn't know about existence of __KONTUR_REACT_UI__.\n node.type.__KONTUR_REACT_UI__ === componentName\n );\n }\n\n return false;\n};\n\nconst KB = 1024;\nconst UNITS = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\nconst calculateDecimals = (decimals: number) => {\n if (decimals < 0) {\n return 0;\n }\n\n return 0;\n};\n\nexport const formatBytes = (bytes: number, decimals = 2): string | null => {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n if (!bytes) {\n return null;\n }\n\n const calculatedDecimals = calculateDecimals(decimals);\n\n const i = Math.floor(Math.log2(bytes) / Math.log2(KB));\n const formattedBytes = parseFloat((bytes / Math.pow(KB, i)).toFixed(calculatedDecimals));\n\n return `${formattedBytes} ${UNITS[i]}`;\n};\n\n/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n\n/**\n * Checks if the value `null` or `undefined`.\n *\n * @param value Value to check for `null` and `undefined`.\n * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.\n */\nexport const isNullable = (value: unknown): value is null | undefined => {\n return value === null || value === undefined;\n};\n\n/**\n * Creates a function that checks if the given `child`\n * is an instance of some component specified by `name`.\n *\n * @param name Component name for which function will be created.\n * @returns A function that checks if the given `child` is an instance of the component specified by `name`.\n */\nexport const isReactUIComponent = <P = any>(name: string) => {\n return (child: React.ReactNode): child is React.ReactElement<P> => {\n // @ts-expect-error: Property `type` doesn't exist on type `React.ReactNode`, but exists on type `React.ReactElement` meanwhile `React.ReactElement` is not compatible with `React` `children` type.\n return child?.type?.__KONTUR_REACT_UI__ === name;\n };\n};\n\n/**\n * Checks if a component instance is a ReactUI component with the given name.\n *\n * @typeParam T Expected ReactUI component type.\n * @param instance Component instance.\n * @param componentName ReactUI component name.\n * @returns `true` if it matches, otherwise `false`.\n */\nexport const isReactUIInstance = <T extends React.Component>(\n instance: React.Component,\n componentName: string,\n): instance is T => {\n const constructor = instance?.constructor;\n return '__KONTUR_REACT_UI__' in constructor && constructor.__KONTUR_REACT_UI__ === componentName;\n};\n\n/**\n * Extracts all data attributes from props and returns them as well as props.\n *\n * @param props Props object to extract data attributes from.\n * @returns Separated data attributes and all other props.\n */\nexport const extractDataProps = <T extends Record<string, unknown>>(\n props: T,\n): { dataProps: Record<string, unknown>; restWithoutDataProps: Record<string, unknown> } => {\n const dataProps: Record<string, any> = {};\n const restWithoutDataProps: Record<string, any> = {};\n\n Object.entries(props).map(([name, value]) => {\n if (name.startsWith('data-')) {\n return (dataProps[name] = value);\n }\n\n return (restWithoutDataProps[name] = value);\n });\n\n return { dataProps, restWithoutDataProps };\n};\n\n/**\n * Basically `.startsWith` for arrays.\n *\n * @param searchKeys Array of strings to test against `inputString`.\n * @param inputString String on which search will be performed.\n * @returns `true` if `inputString` starts with one of keys, else `false`.\n */\nexport const startsWithOneOf = (searchKeys: string[], inputString: string): boolean => {\n const keyIndex = searchKeys.findIndex((key) => {\n return inputString.startsWith(key);\n });\n\n return keyIndex >= 0;\n};\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\nexport const isInput = isReactUIComponent<InputProps>('Input');\nexport const isFxInput = isReactUIComponent<FxInputProps>('FxInput');\nexport const isAutocomplete = isReactUIComponent<AutocompleteProps>('Autocomplete');\nexport const isPasswordInput = isReactUIComponent<PasswordInputProps>('PasswordInput');\nexport const isCurrencyInput = isReactUIComponent<CurrencyInputProps>('CurrencyInput');\nexport const isSelect = isReactUIComponent<SelectProps<unknown, unknown>>('Select');\nexport const isDropdown = isReactUIComponent<DropdownProps>('Dropdown');\nexport const isDropdownMenu = isReactUIComponent<DropdownMenuProps>('DropdownMenu');\nexport const isHint = isReactUIComponent<HintProps>('Hint');\nexport const isTooltip = isReactUIComponent<TooltipProps>('Tooltip');\nexport const isTimePicker = isReactUIComponent<TimePickerProps>('TimePicker');\n\nexport const isKonturIcon = (icon: React.ReactElement): boolean => {\n return Object.prototype.hasOwnProperty.call(icon?.type, '__KONTUR_ICON__');\n};\n\nexport function clickOutside(eventType: 'touchstart' | 'mousedown' | 'pointerup' = 'mousedown'): void {\n const event = document.createEvent('HTMLEvents');\n event.initEvent(eventType, true, true);\n document.body.dispatchEvent(event);\n}\n\nexport function isElement(el: unknown): el is Element {\n return !!el && typeof el === 'object' && 'nodeType' in el && el.nodeType === Node.ELEMENT_NODE;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type React from 'react';\nimport { isValidElement } from 'react';\n\nimport type { AutocompleteProps } from '../components/Autocomplete/index.js';\nimport type { ButtonProps } from '../components/Button/index.js';\nimport type { CurrencyInputProps } from '../components/CurrencyInput/index.js';\nimport type { DropdownProps } from '../components/Dropdown/index.js';\nimport type { DropdownMenuProps } from '../components/DropdownMenu/index.js';\nimport type { FxInputProps } from '../components/FxInput/index.js';\nimport type { HintProps } from '../components/Hint/index.js';\nimport type { InputProps } from '../components/Input/index.js';\nimport type { PasswordInputProps } from '../components/PasswordInput/index.js';\nimport type { SelectProps } from '../components/Select/index.js';\nimport type { TooltipProps } from '../components/Tooltip/index.js';\nimport type { GlobalObject } from '../lib/globalObject.js';\nimport { isBrowser } from '../lib/globalObject.js';\nimport { isForwardRef, isMemo } from './react-is.js';\n\nexport { delay } from './delay.js';\n\n// NOTE: Copy-paste from @types/react\nexport type Defaultize<P, D> = P extends any\n ? string extends keyof P\n ? P\n : Pick<P, Exclude<keyof P, keyof D>> &\n Partial<Pick<P, Extract<keyof P, keyof D>>> &\n Partial<Pick<D, Exclude<keyof D, keyof P>>>\n : never;\n\nexport type DefaultizeProps<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D> : P;\n\nexport type AnyObject = Record<string, unknown>;\n\nexport type NoInfer<T> = T extends infer U ? U : never;\n\nexport const emptyHandler = (): void => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number): () => void {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n setTimeout(resolve, ms);\n })\n .then(task)\n .catch(() => null);\n\n return cancelationToken;\n}\n\nexport type FunctionWithParams<R = any> = (...args: any[]) => R;\n\nexport function isFunction<T>(x: T | FunctionWithParams): x is FunctionWithParams {\n return typeof x === 'function';\n}\n\nexport function isFunctionalComponent(Component: unknown): Component is React.ComponentType {\n return Boolean(typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent));\n}\n\nexport function isClassComponent(Component: unknown): Component is React.ComponentType {\n return Boolean(typeof Component === 'function' && Component.prototype && Component.prototype.isReactComponent);\n}\n\nexport function isIntrinsicElement(element: React.ReactElement<unknown>): boolean {\n return typeof element.type === 'string';\n}\n\nexport function isRefableElement(element: React.ReactElement<unknown>): boolean {\n return (\n Boolean(isIntrinsicElement(element) || isClassComponent(element.type) || isForwardRef(element)) || isMemo(element)\n );\n}\n\nexport function escapeRegExpSpecChars(s: string): string {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport const getRandomID = (): string => Math.random().toString(16).slice(2);\n\nexport const isExternalLink = (link: string, globalObject: GlobalObject): boolean => {\n return isBrowser(globalObject) && new RegExp(`^(https?:)?//(?!${globalObject.location.host})\\\\S+`, 'gi').test(link);\n};\n\n/**\n * Check if the given ReactNode is an element of the specified ReactUI component\n */\nexport const isReactUINode = (componentName: string, node: React.ReactNode): boolean => {\n if (isValidElement(node)) {\n return (\n Object.prototype.hasOwnProperty.call(node.type, '__KONTUR_REACT_UI__') &&\n // @ts-expect-error: React doesn't know about existence of __KONTUR_REACT_UI__.\n node.type.__KONTUR_REACT_UI__ === componentName\n );\n }\n\n return false;\n};\n\nconst KB = 1024;\nconst UNITS = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\nconst calculateDecimals = (decimals: number) => {\n if (decimals < 0) {\n return 0;\n }\n\n return 0;\n};\n\nexport const formatBytes = (bytes: number, decimals = 2): string | null => {\n if (bytes === 0) {\n return '0 Bytes';\n }\n\n if (!bytes) {\n return null;\n }\n\n const calculatedDecimals = calculateDecimals(decimals);\n\n const i = Math.floor(Math.log2(bytes) / Math.log2(KB));\n const formattedBytes = parseFloat((bytes / Math.pow(KB, i)).toFixed(calculatedDecimals));\n\n return `${formattedBytes} ${UNITS[i]}`;\n};\n\n/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n\n/**\n * Checks if the value `null` or `undefined`.\n *\n * @param value Value to check for `null` and `undefined`.\n * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.\n */\nexport const isNullable = (value: unknown): value is null | undefined => {\n return value === null || value === undefined;\n};\n\n/**\n * Creates a function that checks if the given `child`\n * is an instance of some component specified by `name`.\n *\n * @param name Component name for which function will be created.\n * @returns A function that checks if the given `child` is an instance of the component specified by `name`.\n */\nexport const isReactUIComponent = <P = any>(name: string) => {\n return (child: React.ReactNode): child is React.ReactElement<P> => {\n // @ts-expect-error: Property `type` doesn't exist on type `React.ReactNode`, but exists on type `React.ReactElement` meanwhile `React.ReactElement` is not compatible with `React` `children` type.\n return child?.type?.__KONTUR_REACT_UI__ === name;\n };\n};\n\n/**\n * Checks if a component instance is a ReactUI component with the given name.\n *\n * @typeParam T Expected ReactUI component type.\n * @param instance Component instance.\n * @param componentName ReactUI component name.\n * @returns `true` if it matches, otherwise `false`.\n */\nexport const isReactUIInstance = <T extends React.Component>(\n instance: React.Component,\n componentName: string,\n): instance is T => {\n const constructor = instance?.constructor;\n return '__KONTUR_REACT_UI__' in constructor && constructor.__KONTUR_REACT_UI__ === componentName;\n};\n\n/**\n * Extracts all data attributes from props and returns them as well as props.\n *\n * @param props Props object to extract data attributes from.\n * @returns Separated data attributes and all other props.\n */\nexport const extractDataProps = <T extends Record<string, unknown>>(\n props: T,\n): { dataProps: Record<string, unknown>; restWithoutDataProps: Record<string, unknown> } => {\n const dataProps: Record<string, any> = {};\n const restWithoutDataProps: Record<string, any> = {};\n\n Object.entries(props).map(([name, value]) => {\n if (name.startsWith('data-')) {\n return (dataProps[name] = value);\n }\n\n return (restWithoutDataProps[name] = value);\n });\n\n return { dataProps, restWithoutDataProps };\n};\n\n/**\n * Basically `.startsWith` for arrays.\n *\n * @param searchKeys Array of strings to test against `inputString`.\n * @param inputString String on which search will be performed.\n * @returns `true` if `inputString` starts with one of keys, else `false`.\n */\nexport const startsWithOneOf = (searchKeys: string[], inputString: string): boolean => {\n const keyIndex = searchKeys.findIndex((key) => {\n return inputString.startsWith(key);\n });\n\n return keyIndex >= 0;\n};\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\nexport const isInput = isReactUIComponent<InputProps>('Input');\nexport const isFxInput = isReactUIComponent<FxInputProps>('FxInput');\nexport const isAutocomplete = isReactUIComponent<AutocompleteProps>('Autocomplete');\nexport const isPasswordInput = isReactUIComponent<PasswordInputProps>('PasswordInput');\nexport const isCurrencyInput = isReactUIComponent<CurrencyInputProps>('CurrencyInput');\nexport const isSelect = isReactUIComponent<SelectProps<unknown, unknown>>('Select');\nexport const isDropdown = isReactUIComponent<DropdownProps>('Dropdown');\nexport const isDropdownMenu = isReactUIComponent<DropdownMenuProps>('DropdownMenu');\nexport const isHint = isReactUIComponent<HintProps>('Hint');\nexport const isTooltip = isReactUIComponent<TooltipProps>('Tooltip');\n\nexport const isKonturIcon = (icon: React.ReactElement): boolean => {\n return Object.prototype.hasOwnProperty.call(icon?.type, '__KONTUR_ICON__');\n};\n\nexport function clickOutside(eventType: 'touchstart' | 'mousedown' | 'pointerup' = 'mousedown'): void {\n const event = document.createEvent('HTMLEvents');\n event.initEvent(eventType, true, true);\n document.body.dispatchEvent(event);\n}\n\nexport function isElement(el: unknown): el is Element {\n return !!el && typeof el === 'object' && 'nodeType' in el && el.nodeType === Node.ELEMENT_NODE;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/react-ui",
|
|
3
|
-
"version": "6.1.2
|
|
3
|
+
"version": "6.1.2",
|
|
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, corners = props.corners, rightIcon = props.rightIcon, format = props.format, value = props.value, onSelectSegment = props.onSelectSegment, rest = __rest(props, ["hasDropdown", "size", "disabled", "autoFocus", "suffix", "style", "width", "corners", "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(__assign({}, style), { minWidth: inputMinWidth }), corners), 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":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AACvG,OAAO,EAAE,eAAe,EAAqC,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA8BnD,MAAM,CAAC,IAAM,SAAS,GAAG,iBAAiB,CAA+B,WAAW,EAAE,UAAC,KAAK,EAAE,GAAG;;IAE7F,IAAA,KAaE,KAAK,YAbY,EAAnB,WAAW,mBAAG,KAAK,KAAA,EACnB,KAYE,KAAK,KAZO,EAAd,IAAI,mBAAG,OAAO,KAAA,EACd,QAAQ,GAWN,KAAK,SAXC,EACR,SAAS,GAUP,KAAK,UAVE,EACT,MAAM,GASJ,KAAK,OATD,EACN,KAAK,GAQH,KAAK,MARF,EACL,KAAK,GAOH,KAAK,MAPF,EACL,OAAO,GAML,KAAK,QANA,EACP,SAAS,GAKP,KAAK,UALE,EACT,MAAM,GAIJ,KAAK,OAJD,EACN,KAAK,GAGH,KAAK,MAHF,EACL,eAAe,GAEb,KAAK,gBAFQ,EACZ,IAAI,UACL,KAAK,EAdH,0IAcL,CADQ,CACC;IAEV,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAE/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAE5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,IAAM,gBAAgB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACrD,IAAM,gBAAgB,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IAE5D,mBAAmB,CACjB,GAAG,EACH,cAAM,OAAA,CAAC;QACL,KAAK,EAAE,sBAAM,OAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA;QAC9C,IAAI,EAAE,sBAAM,OAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,IAAI,EAAE,CAAA,EAAA;QAC5C,KAAK,EAAE,sBAAM,OAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA;QAC9C,OAAO,EAAE,0BAAM,OAAA,MAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,OAAO,EAAE,mCAAI,IAAI,CAAA,EAAA;QAC1D,UAAU,EAAE,UAAC,EAAE,gBAAK,OAAA,MAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,UAAU,CAAC,EAAE,CAAC,mCAAI,KAAK,CAAA,EAAA;QACrE,UAAU,EAAE,UAAC,EAAE,gBAAK,OAAA,MAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,UAAU,CAAC,EAAE,CAAC,mCAAI,IAAI,CAAA,EAAA;QACpE,SAAS,EAAE;;YACT,IAAM,QAAQ,GAAG,MAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,WAAW,EAAE,mCAAI,IAAI,CAAC;YAEjE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,MAAA,gBAAgB,CAAC,OAAO,0CAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACrF,CAAC;QAED,aAAa,EAAE;;YACb,IAAM,QAAQ,GAAG,MAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,WAAW,EAAE,mCAAI,IAAI,CAAC;YAEjE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAM,SAAS,GAAG,MAAA,MAAA,QAAQ,CAAC,aAAa,CAAC,WAAW,0CAAE,YAAY,EAAE,mCAAI,IAAI,CAAC;YAE7E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;gBACtE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACtC,IAAM,IAAI,GAAG,MAAA,QAAQ,CAAC,WAAW,mCAAI,EAAE,CAAC;YAExC,OAAO,CACL,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAC9G,CAAC;QACJ,CAAC;QAED,aAAa,EAAE,UAAC,OAAO;;YACrB,IAAM,QAAQ,GAAG,MAAA,MAAA,gBAAgB,CAAC,OAAO,0CAAE,WAAW,EAAE,mCAAI,IAAI,CAAC;YAEjE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,IAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9D,IAAM,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;YACtD,IAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;YAEtB,MAAA,gBAAgB,CAAC,OAAO,0CAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;KACF,CAAC,EAnDI,CAmDJ,EACF,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,SAAS,CAAC;QACR,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAM,KAAK,GAAG,UAAU,CAAC;;YACvB,MAAA,gBAAgB,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;QACpC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,iBAAiB,GACrB,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CACxB,8BACE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC9D,GAAC,MAAM,CAAC,oBAAoB,EAAE,IAAG,WAAW,IAAI,CAAC,QAAQ;gBACzD;QAEF,oBAAC,aAAa,IAAC,IAAI,EAAE,IAAI,GAAI,CACxB,CACR,CAAC,CAAC,CAAC,CACF,SAAS,CACV,CAAC;IACJ,IAAM,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChE,IAAM,aAAa,GAAG,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC;IAElG,OAAO,CACL,oBAAC,aAAa,aACZ,GAAG,EAAE,gBAAgB,IACjB,IAAI,IACR,gBAAgB,QAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,MAAM,EACtB,MAAM,EAAE,MAAM,IAAI,8BAAM,KAAK,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAG,MAAM,CAAQ,EAChF,KAAK,iCAAO,KAAK,KAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,GACtD,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,KAAK;QAEZ,oBAAC,iBAAiB,IAChB,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,GAChC,CACY,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC","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 corners,\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, ...corners }}\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,73 +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
|
-
* @ignore */
|
|
43
|
-
corners?: Partial<Pick<React.CSSProperties, 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'>>;
|
|
44
|
-
/** Задает функцию, которая вызывается при клике на контрол. */
|
|
45
|
-
onClick?(event: React.MouseEvent<HTMLElement>): void;
|
|
46
|
-
/** Событие изменения значения `value` в поле @param value - 'hh:mm:[:ss]' */
|
|
47
|
-
onValueChange?(value: string): void;
|
|
48
|
-
/** Задает функцию, которая вызывается при потере фокуса. */
|
|
49
|
-
onBlur?(event: React.FocusEvent<HTMLElement>): void;
|
|
50
|
-
/** Задает функцию, которая вызывается при получении фокуса. */
|
|
51
|
-
onFocus?(event: React.FocusEvent<HTMLElement>): void;
|
|
52
|
-
/** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */
|
|
53
|
-
onKeyDown?(event: React.KeyboardEvent<HTMLElement>): void;
|
|
54
|
-
/** Задает функцию, которая вызывается при вставке значения. */
|
|
55
|
-
onPaste?(event: React.ClipboardEvent<HTMLElement>): void;
|
|
56
|
-
}
|
|
57
|
-
export interface TimePickerRef {
|
|
58
|
-
/** Устанавливает фокус на поле ввода */
|
|
59
|
-
focus(): void;
|
|
60
|
-
/** Снимает фокус с поля ввода */
|
|
61
|
-
blur(): void;
|
|
62
|
-
/** Закрывает выпадающее меню */
|
|
63
|
-
close(): void;
|
|
64
|
-
/** Запускает анимацию blink у поля ввода времени */
|
|
65
|
-
blink(): void;
|
|
66
|
-
/** Возвращает DOM-узел поля ввода */
|
|
67
|
-
getNode(): HTMLElement | null;
|
|
68
|
-
/** Возвращает корневой DOM-узел компонента */
|
|
69
|
-
getRootNode(): HTMLElement | null;
|
|
70
|
-
}
|
|
71
|
-
export type TimePicker = TimePickerRef;
|
|
72
|
-
/** Поле с временем помогает вводить время с клавиатуры или выбирать его с помощью мыши */
|
|
73
|
-
export declare const TimePicker: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<TimePickerRef, TimePickerProps> & Record<never, never>;
|