@skbkontur/react-ui 5.4.0 → 5.4.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 +24 -0
- package/cjs/components/Autocomplete/Autocomplete.d.ts +10 -2
- package/cjs/components/Autocomplete/Autocomplete.js +18 -2
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +23 -13
- package/cjs/components/Button/Button.js +13 -3
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +11 -22
- package/cjs/components/CurrencyInput/CurrencyInput.js +10 -17
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +23 -16
- package/cjs/components/FxInput/FxInput.js +142 -65
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +27 -37
- package/cjs/components/Input/Input.js +9 -19
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +10 -10
- package/cjs/components/Link/Link.js +1 -1
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +107 -78
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.js +5 -3
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +5 -6
- package/cjs/components/PasswordInput/PasswordInput.js +4 -5
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/__stories__/Form.js +95 -0
- package/cjs/components/__stories__/Form.js.map +1 -0
- package/cjs/internal/CommonWrapper/types.d.ts +1 -1
- package/cjs/internal/CommonWrapper/types.js.map +1 -1
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +2 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/utils.d.ts +5 -1
- package/cjs/lib/utils.js +20 -4
- package/cjs/lib/utils.js.map +1 -1
- package/cjs/test-setup.d.ts +1 -0
- package/cjs/vitest.config.d.ts +2 -0
- package/components/Autocomplete/Autocomplete/Autocomplete.js +10 -2
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +10 -2
- package/components/Button/Button/Button.js +4 -2
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +23 -13
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +6 -17
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +11 -22
- package/components/FxInput/FxInput/FxInput.js +122 -71
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +23 -16
- package/components/Input/Input/Input.js +8 -16
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +27 -37
- package/components/Link/Link/Link.js +1 -1
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +10 -10
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +81 -66
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
- package/components/MaskedInput/MaskedInput/MaskedInput.js +4 -2
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +4 -5
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +5 -6
- package/components/__stories__/Form/Form.js +98 -0
- package/components/__stories__/Form/Form.js.map +1 -0
- package/components/__stories__/Form/package.json +6 -0
- package/internal/CommonWrapper/types/types.js.map +1 -1
- package/internal/CommonWrapper/types.d.ts +1 -1
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/lib/utils/utils.js +18 -2
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +5 -1
- package/package.json +8 -14
- package/test-setup.d.ts +1 -0
- package/vitest.config.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","globalObject","isBrowser","locale","RenderLayer","isNonNullable","isKeyCapsLock","KeyboardEventCodes","Codes","Input","isIE11","CommonWrapper","ThemeContext","cx","rootNode","withSize","createPropsGetter","styles","PasswordInputIcon","PasswordInputLocaleHelper","PasswordInputDataTids","root","capsLockDetector","eyeIcon","PasswordInput","_dec","_class","_PasswordInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","visible","focused","capsLockEnabled","getProps","focus","input","blur","handleKeyPress","e","_this$props","props","onKeyPress","detectCapsLock","getModifierState","CapsLock","setState","handleKeydown","_this2","_this2$props","onKeyDown","handleToggleVisibility","prevState","focusOnInput","handleFocus","event","onFocus","handleFocusOutside","hideSymbols","renderEye","createElement","className","iconWrapper","toggleVisibility","theme","getEyeWrapperClassname","disabled","type","eyeClosedAriaLabel","eyeOpenedAriaLabel","onClick","icon","size","refInput","element","renderMain","active","onFocusOutside","onClickOutside","_extends","ref","rightIcon","_inheritsLoose","_proto","prototype","componentDidMount","document","msCapsLockWarningOff","getDerivedStateFromProps","render","_this3","Consumer","rootNodeRef","setRootNode","eyeWrapperLarge","eyeWrapperMedium","eyeWrapperSmall","PureComponent","__KONTUR_REACT_UI__","displayName"],"sources":["PasswordInput.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyCapsLock } from '../../lib/events/keyboard/identifiers';\nimport { KeyboardEventCodes as Codes } from '../../lib/events/keyboard/KeyboardEventCodes';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport type { Nullable } from '../../typings/utility-types';\nimport { isIE11 } from '../../lib/client';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './PasswordInput.styles';\nimport { PasswordInputIcon } from './PasswordInputIcon';\nimport type { PasswordInputLocale } from './locale';\nimport { PasswordInputLocaleHelper } from './locale';\n\nexport interface PasswordInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Omit<InputProps, 'showClearIcon'> {\n /** Включает CapsLock детектор. */\n detectCapsLock?: boolean;\n}\n\nexport interface PasswordInputState {\n visible: boolean;\n focused: boolean;\n capsLockEnabled?: boolean | null;\n}\n\nexport const PasswordInputDataTids = {\n root: 'PasswordInput',\n capsLockDetector: 'PasswordInputCapsLockDetector',\n eyeIcon: 'PasswordInputEyeIcon',\n} as const;\n\n/**\n * `PasswordInput` — однострочное поле для ввода пароля, в котором символы заменяются на точки.\n *\n * Не используйте такое поле для ввода одноразовых кодов из смс. У них короткий срок действия и используются они только один раз.\n */\n\n@rootNode\n@locale('PasswordInput', PasswordInputLocaleHelper)\n@withSize\nexport class PasswordInput extends React.PureComponent<PasswordInputProps, PasswordInputState> {\n public static __KONTUR_REACT_UI__ = 'PasswordInput';\n public static displayName = 'PasswordInput';\n\n public state: PasswordInputState = {\n visible: false,\n focused: false,\n capsLockEnabled: false,\n };\n private size!: SizeProp;\n\n private theme!: Theme;\n\n private input: Nullable<Input>;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private readonly locale!: PasswordInputLocale;\n\n private getProps = createPropsGetter({});\n\n public componentDidMount() {\n if (this.props.detectCapsLock) {\n this.setState({ capsLockEnabled: null });\n }\n\n // @ts-expect-error: IE-specific API.\n if (isIE11 && isBrowser(globalObject) && !globalObject.document.msCapsLockWarningOff) {\n // @ts-expect-error: Read the comment above.\n // turns off default ie capslock warning\n globalObject.document.msCapsLockWarningOff = true;\n }\n }\n\n public static getDerivedStateFromProps(props: PasswordInputProps, state: PasswordInputState) {\n if (props.disabled) {\n return { visible: false };\n }\n\n return state;\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { onKeyPress, detectCapsLock } = this.props;\n\n if (onKeyPress) {\n onKeyPress(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n const capsLockEnabled = e.getModifierState(Codes.CapsLock);\n\n this.setState({ capsLockEnabled });\n };\n\n private handleKeydown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const {\n props: { detectCapsLock, onKeyDown },\n state: { capsLockEnabled },\n } = this;\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n if (isKeyCapsLock(e) && isNonNullable(capsLockEnabled)) {\n this.setState({ capsLockEnabled: !capsLockEnabled });\n }\n };\n\n private handleToggleVisibility = () => {\n this.setState((prevState) => ({ visible: !prevState.visible }), this.focusOnInput);\n };\n\n private focusOnInput = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleFocusOutside = () => {\n this.hideSymbols();\n\n if (this.state.focused) {\n this.setState({ focused: false });\n }\n };\n\n private getEyeWrapperClassname() {\n switch (this.size) {\n case 'large':\n return styles.eyeWrapperLarge(this.theme);\n case 'medium':\n return styles.eyeWrapperMedium(this.theme);\n case 'small':\n default:\n return styles.eyeWrapperSmall(this.theme);\n }\n }\n\n private renderEye = () => {\n const { capsLockEnabled } = this.state;\n\n return (\n <span className={styles.iconWrapper()}>\n {capsLockEnabled && (\n <span className={styles.capsLockDetector()} data-tid={PasswordInputDataTids.capsLockDetector} />\n )}\n <span className={cx(styles.toggleVisibility(this.theme), this.getEyeWrapperClassname())}>\n {!this.props.disabled && (\n <button\n type=\"button\"\n aria-label={this.state.visible ? this.locale.eyeClosedAriaLabel : this.locale.eyeOpenedAriaLabel}\n onClick={this.handleToggleVisibility}\n className={styles.icon()}\n data-tid={PasswordInputDataTids.eyeIcon}\n >\n <PasswordInputIcon size={this.size} visible={this.state.visible} />\n </button>\n )}\n </span>\n </span>\n );\n };\n\n private refInput = (element: Input) => {\n this.input = element;\n };\n\n private hideSymbols = () => {\n this.setState({ visible: false });\n };\n\n private renderMain = (props: CommonWrapperRestProps<PasswordInputProps>) => {\n return (\n <RenderLayer\n active={this.state.focused}\n onFocusOutside={this.handleFocusOutside}\n onClickOutside={this.handleFocusOutside}\n >\n <div data-tid={PasswordInputDataTids.root} className={styles.root()}>\n <Input\n ref={this.refInput}\n type={this.state.visible ? 'text' : 'password'}\n onKeyDown={this.handleKeydown}\n onKeyPress={this.handleKeyPress}\n rightIcon={this.renderEye()}\n onFocus={this.handleFocus}\n {...props}\n />\n </div>\n </RenderLayer>\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","globalObject","isBrowser","locale","RenderLayer","isNonNullable","isKeyCapsLock","KeyboardEventCodes","Codes","Input","isIE11","CommonWrapper","ThemeContext","cx","rootNode","withSize","createPropsGetter","styles","PasswordInputIcon","PasswordInputLocaleHelper","PasswordInputDataTids","root","capsLockDetector","eyeIcon","PasswordInput","_dec","_class","_PasswordInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","visible","focused","capsLockEnabled","getProps","focus","input","blur","handleKeyPress","e","_this$props","props","onKeyPress","detectCapsLock","getModifierState","CapsLock","setState","handleKeydown","_this2","_this2$props","onKeyDown","handleToggleVisibility","prevState","focusOnInput","handleFocus","event","onFocus","handleFocusOutside","hideSymbols","renderEye","createElement","className","iconWrapper","toggleVisibility","theme","getEyeWrapperClassname","disabled","type","eyeClosedAriaLabel","eyeOpenedAriaLabel","onClick","icon","size","refInput","element","renderMain","active","onFocusOutside","onClickOutside","_extends","ref","rightIcon","_inheritsLoose","_proto","prototype","componentDidMount","document","msCapsLockWarningOff","getDerivedStateFromProps","render","_this3","Consumer","rootNodeRef","setRootNode","eyeWrapperLarge","eyeWrapperMedium","eyeWrapperSmall","PureComponent","__KONTUR_REACT_UI__","displayName"],"sources":["PasswordInput.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyCapsLock } from '../../lib/events/keyboard/identifiers';\nimport { KeyboardEventCodes as Codes } from '../../lib/events/keyboard/KeyboardEventCodes';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport type { Nullable } from '../../typings/utility-types';\nimport { isIE11 } from '../../lib/client';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './PasswordInput.styles';\nimport { PasswordInputIcon } from './PasswordInputIcon';\nimport type { PasswordInputLocale } from './locale';\nimport { PasswordInputLocaleHelper } from './locale';\n\nexport interface PasswordInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Omit<InputProps, 'showClearIcon'> {\n /** Визуально показывает, что активен CapsLock. */\n detectCapsLock?: boolean;\n}\n\nexport interface PasswordInputState {\n visible: boolean;\n focused: boolean;\n capsLockEnabled?: boolean | null;\n}\n\nexport const PasswordInputDataTids = {\n root: 'PasswordInput',\n capsLockDetector: 'PasswordInputCapsLockDetector',\n eyeIcon: 'PasswordInputEyeIcon',\n} as const;\n\n/**\n * Однострочное поле для ввода пароля, в котором символы заменяются на точки.\n */\n\n@rootNode\n@locale('PasswordInput', PasswordInputLocaleHelper)\n@withSize\nexport class PasswordInput extends React.PureComponent<PasswordInputProps, PasswordInputState> {\n public static __KONTUR_REACT_UI__ = 'PasswordInput';\n public static displayName = 'PasswordInput';\n\n public state: PasswordInputState = {\n visible: false,\n focused: false,\n capsLockEnabled: false,\n };\n private size!: SizeProp;\n\n private theme!: Theme;\n\n private input: Nullable<Input>;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private readonly locale!: PasswordInputLocale;\n\n private getProps = createPropsGetter({});\n\n public componentDidMount() {\n if (this.props.detectCapsLock) {\n this.setState({ capsLockEnabled: null });\n }\n\n // @ts-expect-error: IE-specific API.\n if (isIE11 && isBrowser(globalObject) && !globalObject.document.msCapsLockWarningOff) {\n // @ts-expect-error: Read the comment above.\n // turns off default ie capslock warning\n globalObject.document.msCapsLockWarningOff = true;\n }\n }\n\n public static getDerivedStateFromProps(props: PasswordInputProps, state: PasswordInputState) {\n if (props.disabled) {\n return { visible: false };\n }\n\n return state;\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { onKeyPress, detectCapsLock } = this.props;\n\n if (onKeyPress) {\n onKeyPress(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n const capsLockEnabled = e.getModifierState(Codes.CapsLock);\n\n this.setState({ capsLockEnabled });\n };\n\n private handleKeydown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const {\n props: { detectCapsLock, onKeyDown },\n state: { capsLockEnabled },\n } = this;\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n if (isKeyCapsLock(e) && isNonNullable(capsLockEnabled)) {\n this.setState({ capsLockEnabled: !capsLockEnabled });\n }\n };\n\n private handleToggleVisibility = () => {\n this.setState((prevState) => ({ visible: !prevState.visible }), this.focusOnInput);\n };\n\n private focusOnInput = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleFocusOutside = () => {\n this.hideSymbols();\n\n if (this.state.focused) {\n this.setState({ focused: false });\n }\n };\n\n private getEyeWrapperClassname() {\n switch (this.size) {\n case 'large':\n return styles.eyeWrapperLarge(this.theme);\n case 'medium':\n return styles.eyeWrapperMedium(this.theme);\n case 'small':\n default:\n return styles.eyeWrapperSmall(this.theme);\n }\n }\n\n private renderEye = () => {\n const { capsLockEnabled } = this.state;\n\n return (\n <span className={styles.iconWrapper()}>\n {capsLockEnabled && (\n <span className={styles.capsLockDetector()} data-tid={PasswordInputDataTids.capsLockDetector} />\n )}\n <span className={cx(styles.toggleVisibility(this.theme), this.getEyeWrapperClassname())}>\n {!this.props.disabled && (\n <button\n type=\"button\"\n aria-label={this.state.visible ? this.locale.eyeClosedAriaLabel : this.locale.eyeOpenedAriaLabel}\n onClick={this.handleToggleVisibility}\n className={styles.icon()}\n data-tid={PasswordInputDataTids.eyeIcon}\n >\n <PasswordInputIcon size={this.size} visible={this.state.visible} />\n </button>\n )}\n </span>\n </span>\n );\n };\n\n private refInput = (element: Input) => {\n this.input = element;\n };\n\n private hideSymbols = () => {\n this.setState({ visible: false });\n };\n\n private renderMain = (props: CommonWrapperRestProps<PasswordInputProps>) => {\n return (\n <RenderLayer\n active={this.state.focused}\n onFocusOutside={this.handleFocusOutside}\n onClickOutside={this.handleFocusOutside}\n >\n <div data-tid={PasswordInputDataTids.root} className={styles.root()}>\n <Input\n ref={this.refInput}\n type={this.state.visible ? 'text' : 'password'}\n onKeyDown={this.handleKeydown}\n onKeyPress={this.handleKeyPress}\n rightIcon={this.renderEye()}\n onFocus={this.handleFocus}\n {...props}\n />\n </div>\n </RenderLayer>\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ import type { InputProps } from '../Input';
|
|
|
4
4
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
5
5
|
import type { TGetRootNode } from '../../lib/rootNode';
|
|
6
6
|
export interface PasswordInputProps extends Pick<AriaAttributes, 'aria-label'>, CommonProps, Omit<InputProps, 'showClearIcon'> {
|
|
7
|
-
/**
|
|
7
|
+
/** Визуально показывает, что активен CapsLock. */
|
|
8
8
|
detectCapsLock?: boolean;
|
|
9
9
|
}
|
|
10
10
|
export interface PasswordInputState {
|
|
@@ -18,9 +18,7 @@ export declare const PasswordInputDataTids: {
|
|
|
18
18
|
readonly eyeIcon: "PasswordInputEyeIcon";
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* Не используйте такое поле для ввода одноразовых кодов из смс. У них короткий срок действия и используются они только один раз.
|
|
21
|
+
* Однострочное поле для ввода пароля, в котором символы заменяются на точки.
|
|
24
22
|
*/
|
|
25
23
|
export declare class PasswordInput extends React.PureComponent<PasswordInputProps, PasswordInputState> {
|
|
26
24
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -38,11 +36,12 @@ export declare class PasswordInput extends React.PureComponent<PasswordInputProp
|
|
|
38
36
|
visible: boolean;
|
|
39
37
|
};
|
|
40
38
|
render(): JSX.Element;
|
|
41
|
-
/**
|
|
39
|
+
/** Программно устанавливает фокус на поле.
|
|
40
|
+
* Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.
|
|
42
41
|
* @public
|
|
43
42
|
*/
|
|
44
43
|
focus: () => void;
|
|
45
|
-
/**
|
|
44
|
+
/** Программно снимает фокус с кнопки.
|
|
46
45
|
* @public
|
|
47
46
|
*/
|
|
48
47
|
blur: () => void;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
+
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
5
|
+
var _excluded = ["children", "className"],
|
|
6
|
+
_excluded2 = ["children", "className"],
|
|
7
|
+
_excluded3 = ["children", "className"],
|
|
8
|
+
_excluded4 = ["children", "className"],
|
|
9
|
+
_excluded5 = ["children", "className"],
|
|
10
|
+
_excluded6 = ["children", "className"];
|
|
11
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
12
|
+
import React from 'react';
|
|
13
|
+
import { css } from '@skbkontur/react-ui/lib/theming/Emotion';
|
|
14
|
+
var line = css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: baseline;\n margin-bottom: 10px;\n"])));
|
|
15
|
+
var title = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n box-sizing: border-box;\n margin-right: 10px;\n width: 150px;\n text-align: right;\n"])));
|
|
16
|
+
var content = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n"])));
|
|
17
|
+
var formLineBreak = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n height: 20px;\n"])));
|
|
18
|
+
var actionsBar = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n margin-top: 10px;\n padding-left: 160px;\n"])));
|
|
19
|
+
var formWrapper = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n"])));
|
|
20
|
+
var FormLine = function FormLine(_ref) {
|
|
21
|
+
var children = _ref.children,
|
|
22
|
+
className = _ref.className,
|
|
23
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
24
|
+
return /*#__PURE__*/(
|
|
25
|
+
React.createElement("div", _extends({
|
|
26
|
+
className: css(line, className)
|
|
27
|
+
}, rest), children)
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
var Line = function Line(_ref2) {
|
|
31
|
+
var children = _ref2.children,
|
|
32
|
+
className = _ref2.className,
|
|
33
|
+
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2);
|
|
34
|
+
return /*#__PURE__*/(
|
|
35
|
+
React.createElement("div", _extends({
|
|
36
|
+
className: css(line, className)
|
|
37
|
+
}, rest), children)
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
var Title = function Title(_ref3) {
|
|
41
|
+
var children = _ref3.children,
|
|
42
|
+
className = _ref3.className,
|
|
43
|
+
rest = _objectWithoutPropertiesLoose(_ref3, _excluded3);
|
|
44
|
+
return /*#__PURE__*/(
|
|
45
|
+
React.createElement("span", _extends({
|
|
46
|
+
className: css(title, className)
|
|
47
|
+
}, rest), children)
|
|
48
|
+
);
|
|
49
|
+
};
|
|
50
|
+
var Content = function Content(_ref4) {
|
|
51
|
+
var children = _ref4.children,
|
|
52
|
+
className = _ref4.className,
|
|
53
|
+
rest = _objectWithoutPropertiesLoose(_ref4, _excluded4);
|
|
54
|
+
return /*#__PURE__*/(
|
|
55
|
+
React.createElement("span", _extends({
|
|
56
|
+
className: css(content, className)
|
|
57
|
+
}, rest), children)
|
|
58
|
+
);
|
|
59
|
+
};
|
|
60
|
+
var LineBreak = function LineBreak(_ref5) {
|
|
61
|
+
var children = _ref5.children,
|
|
62
|
+
className = _ref5.className,
|
|
63
|
+
rest = _objectWithoutPropertiesLoose(_ref5, _excluded5);
|
|
64
|
+
return /*#__PURE__*/(
|
|
65
|
+
React.createElement("div", _extends({
|
|
66
|
+
className: css(formLineBreak, className)
|
|
67
|
+
}, rest), children)
|
|
68
|
+
);
|
|
69
|
+
};
|
|
70
|
+
var ActionsBar = function ActionsBar(_ref6) {
|
|
71
|
+
var children = _ref6.children,
|
|
72
|
+
className = _ref6.className,
|
|
73
|
+
rest = _objectWithoutPropertiesLoose(_ref6, _excluded6);
|
|
74
|
+
return /*#__PURE__*/(
|
|
75
|
+
React.createElement("div", _extends({
|
|
76
|
+
className: css(actionsBar, className)
|
|
77
|
+
}, rest), children)
|
|
78
|
+
);
|
|
79
|
+
};
|
|
80
|
+
export var Form = /*#__PURE__*/function (_React$Component) {
|
|
81
|
+
function Form() {
|
|
82
|
+
return _React$Component.apply(this, arguments) || this;
|
|
83
|
+
}
|
|
84
|
+
_inheritsLoose(Form, _React$Component);
|
|
85
|
+
var _proto = Form.prototype;
|
|
86
|
+
_proto.render = function render() {
|
|
87
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
88
|
+
className: css(formWrapper, this.props.className)
|
|
89
|
+
}, this.props.children);
|
|
90
|
+
};
|
|
91
|
+
return Form;
|
|
92
|
+
}(React.Component);
|
|
93
|
+
Form.Line = Line;
|
|
94
|
+
Form.LineBreak = LineBreak;
|
|
95
|
+
Form.ActionsBar = ActionsBar;
|
|
96
|
+
Form.FormLine = FormLine;
|
|
97
|
+
Form.Title = Title;
|
|
98
|
+
Form.Content = Content;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","css","line","_templateObject","_taggedTemplateLiteralLoose","title","_templateObject2","content","_templateObject3","formLineBreak","_templateObject4","actionsBar","_templateObject5","formWrapper","_templateObject6","FormLine","_ref","children","className","rest","_objectWithoutPropertiesLoose","_excluded","createElement","_extends","Line","_ref2","_excluded2","Title","_ref3","_excluded3","Content","_ref4","_excluded4","LineBreak","_ref5","_excluded5","ActionsBar","_ref6","_excluded6","Form","_React$Component","apply","arguments","_inheritsLoose","_proto","prototype","render","props","Component"],"sources":["Form.tsx"],"sourcesContent":["import React from 'react';\nimport { css } from '@skbkontur/react-ui/lib/theming/Emotion';\n\nconst line = css`\n display: flex;\n align-items: baseline;\n margin-bottom: 10px;\n`;\n\nconst title = css`\n box-sizing: border-box;\n margin-right: 10px;\n width: 150px;\n text-align: right;\n`;\n\nconst content = css`\n display: inline-flex;\n`;\n\nconst formLineBreak = css`\n height: 20px;\n`;\n\nconst actionsBar = css`\n margin-top: 10px;\n padding-left: 160px;\n`;\n\nconst formWrapper = css`\n display: flex;\n flex-direction: column;\n`;\n\ntype ComponentProps = React.PropsWithChildren<React.HTMLAttributes<HTMLElement>>;\n\nconst FormLine = ({ children, className, ...rest }: ComponentProps) => {\n return (\n <div className={css(line, className)} {...rest}>\n {children}\n </div>\n );\n};\n\nconst Line = ({ children, className, ...rest }: ComponentProps) => {\n return (\n <div className={css(line, className)} {...rest}>\n {children}\n </div>\n );\n};\n\nconst Title = ({ children, className, ...rest }: ComponentProps) => {\n return (\n <span className={css(title, className)} {...rest}>\n {children}\n </span>\n );\n};\n\nconst Content = ({ children, className, ...rest }: ComponentProps) => {\n return (\n <span className={css(content, className)} {...rest}>\n {children}\n </span>\n );\n};\n\nconst LineBreak = ({ children, className, ...rest }: ComponentProps) => {\n return (\n <div className={css(formLineBreak, className)} {...rest}>\n {children}\n </div>\n );\n};\n\nconst ActionsBar = ({ children, className, ...rest }: ComponentProps) => {\n return (\n <div className={css(actionsBar, className)} {...rest}>\n {children}\n </div>\n );\n};\n\nexport class Form extends React.Component<ComponentProps> {\n public static Line = Line;\n public static LineBreak = LineBreak;\n public static ActionsBar = ActionsBar;\n public static FormLine = FormLine;\n public static Title = Title;\n public static Content = Content;\n\n public render() {\n return <div className={css(formWrapper, this.props.className)}>{this.props.children}</div>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { Nullable } from '../../typings/utility-types';\n\nexport interface CommonProps {\n /**\n * HTML-атрибут `class`.\n */\n className?: React.HTMLAttributes<HTMLElement>['className'];\n /**\n * HTML-атрибут `style`.\n */\n style?: React.HTMLAttributes<HTMLElement>['style'];\n /**\n *
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { Nullable } from '../../typings/utility-types';\n\nexport interface CommonProps {\n /**\n * HTML-атрибут `class`.\n */\n className?: React.HTMLAttributes<HTMLElement>['className'];\n /**\n * HTML-атрибут `style`.\n */\n style?: React.HTMLAttributes<HTMLElement>['style'];\n /**\n * Наравне с data-tid транслируются любые data-атрибуты. Они попадают на корневой элемент.\n */\n 'data-tid'?: string;\n children?: React.ReactNode;\n}\n\nexport interface CommonPropsRootNodeRef {\n rootNodeRef?: (instance: Nullable<Element>) => void;\n}\n\nexport type NotCommonProps<P> = Omit<P, keyof CommonProps>;\nexport type CommonWrapperProps<P> = P & {\n children: React.ReactNode | ((rest: CommonWrapperRestProps<P>) => React.ReactNode);\n};\nexport type CommonWrapperRestProps<P> = Omit<NotCommonProps<P>, 'children'>;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@ export interface CommonProps {
|
|
|
10
10
|
*/
|
|
11
11
|
style?: React.HTMLAttributes<HTMLElement>['style'];
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* Наравне с data-tid транслируются любые data-атрибуты. Они попадают на корневой элемент.
|
|
14
14
|
*/
|
|
15
15
|
'data-tid'?: string;
|
|
16
16
|
children?: React.ReactNode;
|
|
@@ -8,6 +8,7 @@ export declare const getFullReactUIFlagsContext: (flags: ReactUIFeatureFlags) =>
|
|
|
8
8
|
groupAddHintAndTooltipSupport?: boolean | undefined;
|
|
9
9
|
popupFixPinTearing?: boolean | undefined;
|
|
10
10
|
autocompleteUseMaskedInput?: boolean | undefined;
|
|
11
|
+
fxInputUseMaskedInput?: boolean | undefined;
|
|
11
12
|
sidePageDisableHeaderShrink?: boolean | undefined;
|
|
12
13
|
sidePageNotCutTitleOnStuckByDefault?: boolean | undefined;
|
|
13
14
|
tokenInputCreateTokenOnBlurInWithoutReferenceMode?: boolean | undefined;
|
|
@@ -8,6 +8,7 @@ export var reactUIFeatureFlagsDefault = {
|
|
|
8
8
|
groupAddHintAndTooltipSupport: false,
|
|
9
9
|
popupFixPinTearing: false,
|
|
10
10
|
autocompleteUseMaskedInput: false,
|
|
11
|
+
fxInputUseMaskedInput: false,
|
|
11
12
|
sidePageDisableHeaderShrink: false,
|
|
12
13
|
sidePageNotCutTitleOnStuckByDefault: false,
|
|
13
14
|
tokenInputCreateTokenOnBlurInWithoutReferenceMode: false
|
package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","reactUIFeatureFlagsDefault","dateInputFixSameNumberTypingOnRefocus","dateInputAllowInvalidValuesInDays","comboBoxAllowValueChangeInEditingState","stickyReduceLayoutEvents","radioGroupRemoveBaselineSpacer","groupAddHintAndTooltipSupport","popupFixPinTearing","autocompleteUseMaskedInput","sidePageDisableHeaderShrink","sidePageNotCutTitleOnStuckByDefault","tokenInputCreateTokenOnBlurInWithoutReferenceMode","ReactUIFeatureFlagsContext","createContext","displayName","__KONTUR_REACT_UI__"],"sources":["ReactUIFeatureFlagsContext.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface ReactUIFeatureFlags {\n dateInputFixSameNumberTypingOnRefocus?: boolean;\n dateInputAllowInvalidValuesInDays?: boolean;\n comboBoxAllowValueChangeInEditingState?: boolean;\n stickyReduceLayoutEvents?: boolean;\n radioGroupRemoveBaselineSpacer?: boolean;\n groupAddHintAndTooltipSupport?: boolean;\n popupFixPinTearing?: boolean;\n autocompleteUseMaskedInput?: boolean;\n sidePageDisableHeaderShrink?: boolean;\n sidePageNotCutTitleOnStuckByDefault?: boolean;\n tokenInputCreateTokenOnBlurInWithoutReferenceMode?: boolean;\n}\n\nexport const reactUIFeatureFlagsDefault: ReactUIFeatureFlags = {\n dateInputFixSameNumberTypingOnRefocus: false,\n dateInputAllowInvalidValuesInDays: false,\n comboBoxAllowValueChangeInEditingState: false,\n stickyReduceLayoutEvents: false,\n radioGroupRemoveBaselineSpacer: false,\n groupAddHintAndTooltipSupport: false,\n popupFixPinTearing: false,\n autocompleteUseMaskedInput: false,\n sidePageDisableHeaderShrink: false,\n sidePageNotCutTitleOnStuckByDefault: false,\n tokenInputCreateTokenOnBlurInWithoutReferenceMode: false,\n};\n\nexport const ReactUIFeatureFlagsContext = React.createContext<ReactUIFeatureFlags>(reactUIFeatureFlagsDefault);\n\nReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';\nReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO
|
|
1
|
+
{"version":3,"names":["React","reactUIFeatureFlagsDefault","dateInputFixSameNumberTypingOnRefocus","dateInputAllowInvalidValuesInDays","comboBoxAllowValueChangeInEditingState","stickyReduceLayoutEvents","radioGroupRemoveBaselineSpacer","groupAddHintAndTooltipSupport","popupFixPinTearing","autocompleteUseMaskedInput","fxInputUseMaskedInput","sidePageDisableHeaderShrink","sidePageNotCutTitleOnStuckByDefault","tokenInputCreateTokenOnBlurInWithoutReferenceMode","ReactUIFeatureFlagsContext","createContext","displayName","__KONTUR_REACT_UI__"],"sources":["ReactUIFeatureFlagsContext.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface ReactUIFeatureFlags {\n dateInputFixSameNumberTypingOnRefocus?: boolean;\n dateInputAllowInvalidValuesInDays?: boolean;\n comboBoxAllowValueChangeInEditingState?: boolean;\n stickyReduceLayoutEvents?: boolean;\n radioGroupRemoveBaselineSpacer?: boolean;\n groupAddHintAndTooltipSupport?: boolean;\n popupFixPinTearing?: boolean;\n autocompleteUseMaskedInput?: boolean;\n fxInputUseMaskedInput?: boolean;\n sidePageDisableHeaderShrink?: boolean;\n sidePageNotCutTitleOnStuckByDefault?: boolean;\n tokenInputCreateTokenOnBlurInWithoutReferenceMode?: boolean;\n}\n\nexport const reactUIFeatureFlagsDefault: ReactUIFeatureFlags = {\n dateInputFixSameNumberTypingOnRefocus: false,\n dateInputAllowInvalidValuesInDays: false,\n comboBoxAllowValueChangeInEditingState: false,\n stickyReduceLayoutEvents: false,\n radioGroupRemoveBaselineSpacer: false,\n groupAddHintAndTooltipSupport: false,\n popupFixPinTearing: false,\n autocompleteUseMaskedInput: false,\n fxInputUseMaskedInput: false,\n sidePageDisableHeaderShrink: false,\n sidePageNotCutTitleOnStuckByDefault: false,\n tokenInputCreateTokenOnBlurInWithoutReferenceMode: false,\n};\n\nexport const ReactUIFeatureFlagsContext = React.createContext<ReactUIFeatureFlags>(reactUIFeatureFlagsDefault);\n\nReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';\nReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;;;;;;;;;;;;;;;;;AAiBzB,OAAO,IAAMC,0BAA+C,GAAG;EAC7DC,qCAAqC,EAAE,KAAK;EAC5CC,iCAAiC,EAAE,KAAK;EACxCC,sCAAsC,EAAE,KAAK;EAC7CC,wBAAwB,EAAE,KAAK;EAC/BC,8BAA8B,EAAE,KAAK;EACrCC,6BAA6B,EAAE,KAAK;EACpCC,kBAAkB,EAAE,KAAK;EACzBC,0BAA0B,EAAE,KAAK;EACjCC,qBAAqB,EAAE,KAAK;EAC5BC,2BAA2B,EAAE,KAAK;EAClCC,mCAAmC,EAAE,KAAK;EAC1CC,iDAAiD,EAAE;AACrD,CAAC;;AAED,OAAO,IAAMC,0BAA0B,gBAAGd,KAAK,CAACe,aAAa,CAAsBd,0BAA0B,CAAC;;AAE9Ga,0BAA0B,CAACE,WAAW,GAAG,4BAA4B;AACrEF,0BAA0B,CAACG,mBAAmB,GAAG,4BAA4B","ignoreList":[]}
|
|
@@ -8,6 +8,7 @@ export interface ReactUIFeatureFlags {
|
|
|
8
8
|
groupAddHintAndTooltipSupport?: boolean;
|
|
9
9
|
popupFixPinTearing?: boolean;
|
|
10
10
|
autocompleteUseMaskedInput?: boolean;
|
|
11
|
+
fxInputUseMaskedInput?: boolean;
|
|
11
12
|
sidePageDisableHeaderShrink?: boolean;
|
|
12
13
|
sidePageNotCutTitleOnStuckByDefault?: boolean;
|
|
13
14
|
tokenInputCreateTokenOnBlurInWithoutReferenceMode?: boolean;
|
package/lib/utils/utils.js
CHANGED
|
@@ -206,11 +206,27 @@ export var isTooltip = isReactUIComponent('Tooltip');
|
|
|
206
206
|
export var isKonturIcon = function isKonturIcon(icon) {
|
|
207
207
|
return Object.prototype.hasOwnProperty.call(icon == null ? void 0 : icon.type, '__KONTUR_ICON__');
|
|
208
208
|
};
|
|
209
|
-
export function clickOutside() {
|
|
209
|
+
export function clickOutside(eventType) {
|
|
210
|
+
if (eventType === void 0) {
|
|
211
|
+
eventType = 'mousedown';
|
|
212
|
+
}
|
|
210
213
|
var event = document.createEvent('HTMLEvents');
|
|
211
|
-
event.initEvent(
|
|
214
|
+
event.initEvent(eventType, true, true);
|
|
212
215
|
document.body.dispatchEvent(event);
|
|
213
216
|
}
|
|
214
217
|
export function isElement(el) {
|
|
215
218
|
return !!el && typeof el === 'object' && 'nodeType' in el && el.nodeType === Node.ELEMENT_NODE;
|
|
219
|
+
}
|
|
220
|
+
export function isDocument(node) {
|
|
221
|
+
return !!node && typeof node === 'object' && node.nodeType === Node.DOCUMENT_NODE;
|
|
222
|
+
}
|
|
223
|
+
export function isWindow(node) {
|
|
224
|
+
return !!node && typeof node === 'object' && node.window === node;
|
|
225
|
+
}
|
|
226
|
+
export function tryGetDocument(node) {
|
|
227
|
+
return !!node && isDocument(node.ownerDocument) ? node.ownerDocument : null;
|
|
228
|
+
}
|
|
229
|
+
export function tryGetWindow(node) {
|
|
230
|
+
var doc = tryGetDocument(node);
|
|
231
|
+
return isDocument(doc) ? doc.defaultView : null;
|
|
216
232
|
}
|
package/lib/utils/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isValidElement","isForwardRef","globalObject","isBrowser","delay","emptyHandler","CancelationError","_Error","_this","_len","arguments","length","args","Array","_key","call","apply","concat","code","_inheritsLoose","_wrapNativeSuper","Error","taskWithDelay","task","ms","cancelationToken","Promise","resolve","reject","setTimeout","then","isFunction","x","isFunctionalComponent","Component","Boolean","prototype","isReactComponent","isClassComponent","isIntrinsicElement","element","type","isRefableElement","escapeRegExpSpecChars","s","replace","getRandomID","Math","random","toString","slice","isExternalLink","link","RegExp","location","host","test","isReactUINode","componentName","node","Object","hasOwnProperty","__KONTUR_REACT_UI__","KB","UNITS","calculateDecimals","decimals","formatBytes","bytes","calculatedDecimals","i","floor","log2","formattedBytes","parseFloat","pow","toFixed","isNonNullable","value","undefined","isNullable","isReactUIComponent","name","child","_child$type","isReactUIInstance","instance","constructor","mergeRefs","refs","forEach","ref","current","extractDataProps","props","dataProps","restWithoutDataProps","entries","map","_ref","startsWith","startsWithOneOf","searchKeys","inputString","keyIndex","findIndex","key","isButton","isInput","isFxInput","isAutocomplete","isPasswordInput","isCurrencyInput","isSelect","isDropdown","isDropdownMenu","isHint","isTooltip","isKonturIcon","icon","clickOutside","event","document","createEvent","initEvent","body","dispatchEvent","isElement","el","nodeType","Node","ELEMENT_NODE"],"sources":["utils.ts"],"sourcesContent":["import type React from 'react';\nimport { isValidElement } from 'react';\nimport { isForwardRef } from 'react-is';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport type { CurrencyInputProps } from '../components/CurrencyInput';\nimport type { PasswordInputProps } from '../components/PasswordInput';\nimport type { InputProps } from '../components/Input';\nimport type { AutocompleteProps } from '../components/Autocomplete';\nimport type { FxInputProps } from '../components/FxInput';\nimport type { SelectProps } from '../components/Select';\nimport type { DropdownProps } from '../components/Dropdown';\nimport type { DropdownMenuProps } from '../components/DropdownMenu';\nimport type { ButtonProps } from '../components/Button';\nimport type { TooltipProps } from '../components/Tooltip';\nimport type { HintProps } from '../components/Hint';\n\nexport { delay } from './delay';\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 = () => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number) {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n globalObject.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): boolean {\n return typeof element.type === 'string';\n}\n\nexport function isRefableElement(element: React.ReactElement): boolean {\n return Boolean(isIntrinsicElement(element) || isClassComponent(element.type) || isForwardRef(element));\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): 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/** @deprecated Переехал в `lib/mergeRefs.ts`. Со следующей мажорной версии от сюда будет удален*/\nexport function mergeRefs<T = any>(refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>): React.RefCallback<T> {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (isNonNullable(ref)) {\n return ((ref as React.MutableRefObject<T | null>).current = value);\n }\n });\n };\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, any>>(props: T) => {\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) => {\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) => {\n return Object.prototype.hasOwnProperty.call(icon?.type, '__KONTUR_ICON__');\n};\n\nexport function clickOutside() {\n const event = document.createEvent('HTMLEvents');\n event.initEvent('mousedown', true, true);\n\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"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["isValidElement","isForwardRef","globalObject","isBrowser","delay","emptyHandler","CancelationError","_Error","_this","_len","arguments","length","args","Array","_key","call","apply","concat","code","_inheritsLoose","_wrapNativeSuper","Error","taskWithDelay","task","ms","cancelationToken","Promise","resolve","reject","setTimeout","then","isFunction","x","isFunctionalComponent","Component","Boolean","prototype","isReactComponent","isClassComponent","isIntrinsicElement","element","type","isRefableElement","escapeRegExpSpecChars","s","replace","getRandomID","Math","random","toString","slice","isExternalLink","link","RegExp","location","host","test","isReactUINode","componentName","node","Object","hasOwnProperty","__KONTUR_REACT_UI__","KB","UNITS","calculateDecimals","decimals","formatBytes","bytes","calculatedDecimals","i","floor","log2","formattedBytes","parseFloat","pow","toFixed","isNonNullable","value","undefined","isNullable","isReactUIComponent","name","child","_child$type","isReactUIInstance","instance","constructor","mergeRefs","refs","forEach","ref","current","extractDataProps","props","dataProps","restWithoutDataProps","entries","map","_ref","startsWith","startsWithOneOf","searchKeys","inputString","keyIndex","findIndex","key","isButton","isInput","isFxInput","isAutocomplete","isPasswordInput","isCurrencyInput","isSelect","isDropdown","isDropdownMenu","isHint","isTooltip","isKonturIcon","icon","clickOutside","eventType","event","document","createEvent","initEvent","body","dispatchEvent","isElement","el","nodeType","Node","ELEMENT_NODE","isDocument","DOCUMENT_NODE","isWindow","window","tryGetDocument","ownerDocument","tryGetWindow","doc","defaultView"],"sources":["utils.ts"],"sourcesContent":["import type React from 'react';\nimport { isValidElement } from 'react';\nimport { isForwardRef } from 'react-is';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport type { CurrencyInputProps } from '../components/CurrencyInput';\nimport type { PasswordInputProps } from '../components/PasswordInput';\nimport type { InputProps } from '../components/Input';\nimport type { AutocompleteProps } from '../components/Autocomplete';\nimport type { FxInputProps } from '../components/FxInput';\nimport type { SelectProps } from '../components/Select';\nimport type { DropdownProps } from '../components/Dropdown';\nimport type { DropdownMenuProps } from '../components/DropdownMenu';\nimport type { ButtonProps } from '../components/Button';\nimport type { TooltipProps } from '../components/Tooltip';\nimport type { HintProps } from '../components/Hint';\n\nexport { delay } from './delay';\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 = () => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number) {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n globalObject.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): boolean {\n return typeof element.type === 'string';\n}\n\nexport function isRefableElement(element: React.ReactElement): boolean {\n return Boolean(isIntrinsicElement(element) || isClassComponent(element.type) || isForwardRef(element));\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): 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/** @deprecated Переехал в `lib/mergeRefs.ts`. Со следующей мажорной версии от сюда будет удален*/\nexport function mergeRefs<T = any>(refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>): React.RefCallback<T> {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (isNonNullable(ref)) {\n return ((ref as React.MutableRefObject<T | null>).current = value);\n }\n });\n };\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, any>>(props: T) => {\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) => {\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) => {\n return Object.prototype.hasOwnProperty.call(icon?.type, '__KONTUR_ICON__');\n};\n\nexport function clickOutside(eventType: 'touchstart' | 'mousedown' | 'pointerup' = 'mousedown') {\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\nexport function isDocument(node?: Document | null): node is Document {\n return !!node && typeof node === 'object' && node.nodeType === Node.DOCUMENT_NODE;\n}\n\nexport function isWindow(node?: Window | null): node is Window {\n return !!node && typeof node === 'object' && node.window === node;\n}\n\nexport function tryGetDocument(node?: Node | null): Document | null {\n return !!node && isDocument(node.ownerDocument) ? node.ownerDocument : null;\n}\n\nexport function tryGetWindow(node?: Node | null): Window | null {\n const doc = tryGetDocument(node);\n return isDocument(doc) ? doc.defaultView : null;\n}\n"],"mappings":";AACA,SAASA,cAAc,QAAQ,OAAO;AACtC,SAASC,YAAY,QAAQ,UAAU;AACvC,SAASC,YAAY,EAAEC,SAAS,QAAQ,0BAA0B;;;;;;;;;;;;;;AAclE,SAASC,KAAK,QAAQ,SAAS;;AAE/B;;;;;;;;;;;;;;;AAeA,OAAO,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;;EAChC,WACD;;AAED,WAAaC,gBAAgB,0BAAAC,MAAA,YAAAD,iBAAA,OAAAE,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,MAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,MAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;IACpBU,IAAI,GAAG,kBAAkB,QAAAV,KAAA,EAAAW,cAAA,CAAAb,gBAAA,EAAAC,MAAA,SAAAD,gBAAA,iBAAAc,gBAAA,CADIC,KAAK;;;AAI3C,OAAO,SAASC,aAAaA,CAACC,IAAgB,EAAEC,EAAU,EAAE;EAC1D,IAAIC,gBAA4B,GAAG,SAAAA,iBAAA,UAAM,IAAI;;EAE7C,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;IAC/BH,gBAAgB,GAAGG,MAAM;IACzB1B,YAAY,CAAC2B,UAAU,CAACF,OAAO,EAAEH,EAAE,CAAC;EACtC,CAAC,CAAC;EACCM,IAAI,CAACP,IAAI,CAAC,SACL;IAAC,oBAAM,IAAI,GAAC;;EAEpB,OAAOE,gBAAgB;AACzB;;;;AAIA,OAAO,SAASM,UAAUA,CAAIC,CAAyB,EAA2B;EAChF,OAAO,OAAOA,CAAC,KAAK,UAAU;AAChC;;AAEA,OAAO,SAASC,qBAAqBA,CAACC,SAAkB,EAAoC;EAC1F,OAAOC,OAAO,CAAC,OAAOD,SAAS,KAAK,UAAU,IAAI,EAAEA,SAAS,CAACE,SAAS,IAAIF,SAAS,CAACE,SAAS,CAACC,gBAAgB,CAAC,CAAC;AACnH;;AAEA,OAAO,SAASC,gBAAgBA,CAACJ,SAAkB,EAAoC;EACrF,OAAOC,OAAO,CAAC,OAAOD,SAAS,KAAK,UAAU,IAAIA,SAAS,CAACE,SAAS,IAAIF,SAAS,CAACE,SAAS,CAACC,gBAAgB,CAAC;AAChH;;AAEA,OAAO,SAASE,kBAAkBA,CAACC,OAA2B,EAAW;EACvE,OAAO,OAAOA,OAAO,CAACC,IAAI,KAAK,QAAQ;AACzC;;AAEA,OAAO,SAASC,gBAAgBA,CAACF,OAA2B,EAAW;EACrE,OAAOL,OAAO,CAACI,kBAAkB,CAACC,OAAO,CAAC,IAAIF,gBAAgB,CAACE,OAAO,CAACC,IAAI,CAAC,IAAIxC,YAAY,CAACuC,OAAO,CAAC,CAAC;AACxG;;AAEA,OAAO,SAASG,qBAAqBA,CAACC,CAAS,EAAU;EACvD,OAAOA,CAAC,CAACC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACjD;;AAEA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA,UAAiBC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC;;AAE5E,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAY,EAAc;EACvD,OAAOjD,SAAS,CAACD,YAAY,CAAC,IAAI,IAAImD,MAAM,sBAAoBnD,YAAY,CAACoD,QAAQ,CAACC,IAAI,YAAS,IAAI,CAAC,CAACC,IAAI,CAACJ,IAAI,CAAC;AACrH,CAAC;;AAED;AACA;AACA;AACA,OAAO,IAAMK,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,aAAqB,EAAEC,IAAqB,EAAc;EACtF,kBAAI3D,cAAc,CAAC2D,IAAI,CAAC,EAAE;IACxB;MACEC,MAAM,CAACxB,SAAS,CAACyB,cAAc,CAAC9C,IAAI,CAAC4C,IAAI,CAAClB,IAAI,EAAE,qBAAqB,CAAC;MACtE;MACAkB,IAAI,CAAClB,IAAI,CAACqB,mBAAmB,KAAKJ,aAAa;;EAEnD;;EAEA,OAAO,KAAK;AACd,CAAC;;AAED,IAAMK,EAAE,GAAG,IAAI;AACf,IAAMC,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;;AAEvE,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,QAAgB,EAAK;EAC9C,IAAIA,QAAQ,GAAG,CAAC,EAAE;IAChB,OAAO,CAAC;EACV;;EAEA,OAAO,CAAC;AACV,CAAC;;AAED,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAAa,EAAEF,QAAQ,EAAwB,KAAhCA,QAAQ,cAARA,QAAQ,GAAG,CAAC;EACrD,IAAIE,KAAK,KAAK,CAAC,EAAE;IACf,OAAO,SAAS;EAClB;;EAEA,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,IAAI;EACb;;EAEA,IAAMC,kBAAkB,GAAGJ,iBAAiB,CAACC,QAAQ,CAAC;;EAEtD,IAAMI,CAAC,GAAGvB,IAAI,CAACwB,KAAK,CAACxB,IAAI,CAACyB,IAAI,CAACJ,KAAK,CAAC,GAAGrB,IAAI,CAACyB,IAAI,CAACT,EAAE,CAAC,CAAC;EACtD,IAAMU,cAAc,GAAGC,UAAU,CAAC,CAACN,KAAK,GAAGrB,IAAI,CAAC4B,GAAG,CAACZ,EAAE,EAAEO,CAAC,CAAC,EAAEM,OAAO,CAACP,kBAAkB,CAAC,CAAC;;EAExF,OAAUI,cAAc,SAAIT,KAAK,CAACM,CAAC,CAAC;AACtC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMO,aAAa,GAAG,SAAhBA,aAAaA,CAAOC,KAAQ,EAA8B;EACrE,OAAOA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIF,KAAc,EAAgC;EACvE,OAAOA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAME,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAaC,IAAY,EAAK;EAC3D,OAAO,UAACC,KAAsB,EAAqC,KAAAC,WAAA;IACjE;IACA,OAAO,CAAAD,KAAK,aAAAC,WAAA,GAALD,KAAK,CAAE1C,IAAI,qBAAX2C,WAAA,CAAatB,mBAAmB,MAAKoB,IAAI;EAClD,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,iBAAiB,GAAG,SAApBA,iBAAiBA;AAC5BC,QAAyB;AACzB5B,aAAqB;AACH;EAClB,IAAM6B,WAAW,GAAGD,QAAQ,oBAARA,QAAQ,CAAEC,WAAW;EACzC,OAAO,qBAAqB,IAAIA,WAAW,IAAIA,WAAW,CAACzB,mBAAmB,KAAKJ,aAAa;AAClG,CAAC;;AAED;AACA,OAAO,SAAS8B,SAASA,CAAUC,IAA2D,EAAwB;EACpH,OAAO,UAACX,KAAK,EAAK;IAChBW,IAAI,CAACC,OAAO,CAAC,UAACC,GAAG,EAAK;MACpB,IAAI,OAAOA,GAAG,KAAK,UAAU,EAAE;QAC7B,OAAOA,GAAG,CAACb,KAAK,CAAC;MACnB,CAAC,MAAM,IAAID,aAAa,CAACc,GAAG,CAAC,EAAE;QAC7B,OAASA,GAAG,CAAsCC,OAAO,GAAGd,KAAK;MACnE;IACF,CAAC,CAAC;EACJ,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMe,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAmCC,KAAQ,EAAK;EAC3E,IAAMC,SAA8B,GAAG,CAAC,CAAC;EACzC,IAAMC,oBAAyC,GAAG,CAAC,CAAC;;EAEpDpC,MAAM,CAACqC,OAAO,CAACH,KAAK,CAAC,CAACI,GAAG,CAAC,UAAAC,IAAA,EAAmB,KAAjBjB,IAAI,GAAAiB,IAAA,IAAErB,KAAK,GAAAqB,IAAA;IACrC,IAAIjB,IAAI,CAACkB,UAAU,CAAC,OAAO,CAAC,EAAE;MAC5B,OAAQL,SAAS,CAACb,IAAI,CAAC,GAAGJ,KAAK;IACjC;;IAEA,OAAQkB,oBAAoB,CAACd,IAAI,CAAC,GAAGJ,KAAK;EAC5C,CAAC,CAAC;;EAEF,OAAO,EAAEiB,SAAS,EAATA,SAAS,EAAEC,oBAAoB,EAApBA,oBAAoB,CAAC,CAAC;AAC5C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMK,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,UAAoB,EAAEC,WAAmB,EAAK;EAC5E,IAAMC,QAAQ,GAAGF,UAAU,CAACG,SAAS,CAAC,UAACC,GAAG,EAAK;IAC7C,OAAOH,WAAW,CAACH,UAAU,CAACM,GAAG,CAAC;EACpC,CAAC,CAAC;;EAEF,OAAOF,QAAQ,IAAI,CAAC;AACtB,CAAC;;AAED,OAAO,IAAMG,QAAQ,GAAG1B,kBAAkB,CAAc,QAAQ,CAAC;AACjE,OAAO,IAAM2B,OAAO,GAAG3B,kBAAkB,CAAa,OAAO,CAAC;AAC9D,OAAO,IAAM4B,SAAS,GAAG5B,kBAAkB,CAAe,SAAS,CAAC;AACpE,OAAO,IAAM6B,cAAc,GAAG7B,kBAAkB,CAAoB,cAAc,CAAC;AACnF,OAAO,IAAM8B,eAAe,GAAG9B,kBAAkB,CAAqB,eAAe,CAAC;AACtF,OAAO,IAAM+B,eAAe,GAAG/B,kBAAkB,CAAqB,eAAe,CAAC;AACtF,OAAO,IAAMgC,QAAQ,GAAGhC,kBAAkB,CAAgC,QAAQ,CAAC;AACnF,OAAO,IAAMiC,UAAU,GAAGjC,kBAAkB,CAAgB,UAAU,CAAC;AACvE,OAAO,IAAMkC,cAAc,GAAGlC,kBAAkB,CAAoB,cAAc,CAAC;AACnF,OAAO,IAAMmC,MAAM,GAAGnC,kBAAkB,CAAY,MAAM,CAAC;AAC3D,OAAO,IAAMoC,SAAS,GAAGpC,kBAAkB,CAAe,SAAS,CAAC;;AAEpE,OAAO,IAAMqC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,IAAwB,EAAK;EACxD,OAAO3D,MAAM,CAACxB,SAAS,CAACyB,cAAc,CAAC9C,IAAI,CAACwG,IAAI,oBAAJA,IAAI,CAAE9E,IAAI,EAAE,iBAAiB,CAAC;AAC5E,CAAC;;AAED,OAAO,SAAS+E,YAAYA,CAACC,SAAmD,EAAgB,KAAnEA,SAAmD,cAAnDA,SAAmD,GAAG,WAAW;EAC5F,IAAMC,KAAK,GAAGC,QAAQ,CAACC,WAAW,CAAC,YAAY,CAAC;EAChDF,KAAK,CAACG,SAAS,CAACJ,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;EACtCE,QAAQ,CAACG,IAAI,CAACC,aAAa,CAACL,KAAK,CAAC;AACpC;;AAEA,OAAO,SAASM,SAASA,CAACC,EAAW,EAAiB;EACpD,OAAO,CAAC,CAACA,EAAE,IAAI,OAAOA,EAAE,KAAK,QAAQ,IAAI,UAAU,IAAIA,EAAE,IAAIA,EAAE,CAACC,QAAQ,KAAKC,IAAI,CAACC,YAAY;AAChG;;AAEA,OAAO,SAASC,UAAUA,CAAC1E,IAAsB,EAAoB;EACnE,OAAO,CAAC,CAACA,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACuE,QAAQ,KAAKC,IAAI,CAACG,aAAa;AACnF;;AAEA,OAAO,SAASC,QAAQA,CAAC5E,IAAoB,EAAkB;EAC7D,OAAO,CAAC,CAACA,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAAC6E,MAAM,KAAK7E,IAAI;AACnE;;AAEA,OAAO,SAAS8E,cAAcA,CAAC9E,IAAkB,EAAmB;EAClE,OAAO,CAAC,CAACA,IAAI,IAAI0E,UAAU,CAAC1E,IAAI,CAAC+E,aAAa,CAAC,GAAG/E,IAAI,CAAC+E,aAAa,GAAG,IAAI;AAC7E;;AAEA,OAAO,SAASC,YAAYA,CAAChF,IAAkB,EAAiB;EAC9D,IAAMiF,GAAG,GAAGH,cAAc,CAAC9E,IAAI,CAAC;EAChC,OAAO0E,UAAU,CAACO,GAAG,CAAC,GAAGA,GAAG,CAACC,WAAW,GAAG,IAAI;AACjD","ignoreList":[]}
|
package/lib/utils.d.ts
CHANGED
|
@@ -99,5 +99,9 @@ export declare const isDropdownMenu: (child: React.ReactNode) => child is React.
|
|
|
99
99
|
export declare const isHint: (child: React.ReactNode) => child is React.ReactElement<HintProps, string | React.JSXElementConstructor<any>>;
|
|
100
100
|
export declare const isTooltip: (child: React.ReactNode) => child is React.ReactElement<TooltipProps, string | React.JSXElementConstructor<any>>;
|
|
101
101
|
export declare const isKonturIcon: (icon: React.ReactElement) => boolean;
|
|
102
|
-
export declare function clickOutside(): void;
|
|
102
|
+
export declare function clickOutside(eventType?: 'touchstart' | 'mousedown' | 'pointerup'): void;
|
|
103
103
|
export declare function isElement(el: unknown): el is Element;
|
|
104
|
+
export declare function isDocument(node?: Document | null): node is Document;
|
|
105
|
+
export declare function isWindow(node?: Window | null): node is Window;
|
|
106
|
+
export declare function tryGetDocument(node?: Node | null): Document | null;
|
|
107
|
+
export declare function tryGetWindow(node?: Node | null): Window | null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/react-ui",
|
|
3
|
-
"version": "5.4.
|
|
3
|
+
"version": "5.4.2",
|
|
4
4
|
"description": "UI Components",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "index.js",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"fix": "run-s -c fix:*",
|
|
36
36
|
"fix:eslint": "yarn lint:eslint --fix",
|
|
37
37
|
"fix:prettier": "yarn prettier --write .",
|
|
38
|
-
"test": "
|
|
39
|
-
"test:watch": "
|
|
38
|
+
"test": "vitest run",
|
|
39
|
+
"test:watch": "vitest",
|
|
40
40
|
"creevey": "node ../../scripts/creevey-prepare.js .creevey/config.mts && cross-env BABEL_ENV=cjs creevey -c .creevey/config.mts",
|
|
41
41
|
"creevey:ci": "start-server-and-test storybook:serve http://localhost:6060 creevey",
|
|
42
42
|
"creevey:update": "cross-env BABEL_ENV=cjs creevey -c .creevey/config.mts --update",
|
|
@@ -55,7 +55,8 @@
|
|
|
55
55
|
"lodash.isequal": "^4.5.0",
|
|
56
56
|
"lodash.throttle": "^4.1.1",
|
|
57
57
|
"normalize-wheel": "^1.0.1",
|
|
58
|
-
"react-
|
|
58
|
+
"react-docgen": "7.0.0",
|
|
59
|
+
"react-focus-lock": "2.11.3",
|
|
59
60
|
"react-input-mask": "2.0.4",
|
|
60
61
|
"react-is": "^18.3.1",
|
|
61
62
|
"react-transition-group": "^4.4.5",
|
|
@@ -85,13 +86,11 @@
|
|
|
85
86
|
"@storybook/blocks": "^7.6.18",
|
|
86
87
|
"@storybook/react": "7.6.18",
|
|
87
88
|
"@storybook/react-webpack5": "7.6.18",
|
|
88
|
-
"@testing-library/jest-dom": "
|
|
89
|
+
"@testing-library/jest-dom": "6.9.1",
|
|
89
90
|
"@testing-library/react": "15.0.7",
|
|
90
91
|
"@testing-library/react-hooks": "^8.0.1",
|
|
91
92
|
"@testing-library/user-event": "14.5.2",
|
|
92
93
|
"@types/invariant": "^2.2.35",
|
|
93
|
-
"@types/jest": "29.5.12",
|
|
94
|
-
"@types/jest-axe": "^3.5.3",
|
|
95
94
|
"@types/lodash.debounce": "^4.0.6",
|
|
96
95
|
"@types/lodash.isequal": "^4.5.5",
|
|
97
96
|
"@types/lodash.throttle": "^4.1.6",
|
|
@@ -103,7 +102,6 @@
|
|
|
103
102
|
"@types/shallowequal": "^1.1.1",
|
|
104
103
|
"@types/warning": "^3.0.0",
|
|
105
104
|
"axios": "^1.7.2",
|
|
106
|
-
"babel-jest": "29.7.0",
|
|
107
105
|
"babel-loader": "^9.1.3",
|
|
108
106
|
"chalk": "4.1.0",
|
|
109
107
|
"copyfiles": "^2.4.1",
|
|
@@ -113,22 +111,18 @@
|
|
|
113
111
|
"css-loader": "^7.1.2",
|
|
114
112
|
"dotenv": "^16.4.5",
|
|
115
113
|
"dts-css-modules-loader": "^2.0.1",
|
|
116
|
-
"eslint-plugin-jest": "28.5.0",
|
|
117
114
|
"eslint-plugin-jest-dom": "^5.4.0",
|
|
118
115
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
119
116
|
"eslint-plugin-storybook": "^0.8.0",
|
|
120
117
|
"eslint-plugin-testing-library": "^6.2.2",
|
|
118
|
+
"eslint-plugin-vitest": "^0.5.4",
|
|
121
119
|
"file-loader": "^6.2.0",
|
|
122
120
|
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
|
123
121
|
"fs-extra": "^11.2.0",
|
|
124
122
|
"fs-readdir-recursive": "^1.1.0",
|
|
125
123
|
"gh-pages": "^6.1.1",
|
|
126
124
|
"identity-obj-proxy": "^3.0.0",
|
|
127
|
-
"
|
|
128
|
-
"jest-axe": "^8.0.0",
|
|
129
|
-
"jest-environment-jsdom": "^29.7.0",
|
|
130
|
-
"jest-junit": "^16.0.0",
|
|
131
|
-
"jest-teamcity-reporter": "^0.9.0",
|
|
125
|
+
"jsdom": "^26.1.0",
|
|
132
126
|
"npm-run-all": "^4.1.5",
|
|
133
127
|
"output-file-sync": "^2.0.1",
|
|
134
128
|
"react": "18.3.1",
|
package/test-setup.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom/vitest';
|