@skbkontur/react-ui 4.22.2 → 4.22.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/cjs/components/Checkbox/Checkbox.d.ts +1 -0
- package/cjs/components/Checkbox/Checkbox.js +7 -2
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +1 -0
- package/cjs/components/CurrencyInput/CurrencyInput.js +9 -5
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +1 -0
- package/cjs/components/DateInput/DateInput.js +8 -3
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.js +4 -1
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +1 -0
- package/cjs/components/Input/Input.js +8 -6
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +1 -0
- package/cjs/components/Radio/Radio.js +7 -2
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +1 -0
- package/cjs/components/Toggle/Toggle.js +8 -7
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +9 -2
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.d.ts +17 -0
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js +46 -0
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js.map +1 -0
- package/cjs/internal/FocusControlWrapper/FocusControlWrapper.stories.d.ts +5 -0
- package/cjs/internal/FocusControlWrapper/index.d.ts +1 -0
- package/cjs/internal/FocusControlWrapper/index.js +1 -0
- package/cjs/internal/FocusControlWrapper/index.js.map +1 -0
- package/cjs/internal/FocusControlWrapper/useFocusControl.d.ts +12 -0
- package/cjs/internal/FocusControlWrapper/useFocusControl.js +34 -0
- package/cjs/internal/FocusControlWrapper/useFocusControl.js.map +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.js +25 -13
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/{components/DateInput/helpers/SelectionHelpers.js.map → lib/dom/selectionHelpers.js.map} +1 -1
- package/components/Checkbox/Checkbox/Checkbox.js +12 -5
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.d.ts +1 -0
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +11 -6
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +1 -0
- package/components/DateInput/DateInput/DateInput.js +13 -6
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +1 -0
- package/components/FileUploader/FileUploader/FileUploader.js +7 -2
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/Input/Input/Input.js +11 -6
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +1 -0
- package/components/Radio/Radio/Radio.js +12 -5
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +1 -0
- package/components/Toggle/Toggle/Toggle.js +12 -7
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +1 -0
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +17 -6
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js +33 -0
- package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js.map +1 -0
- package/internal/FocusControlWrapper/FocusControlWrapper/package.json +6 -0
- package/internal/FocusControlWrapper/FocusControlWrapper.d.ts +17 -0
- package/internal/FocusControlWrapper/FocusControlWrapper.stories.d.ts +5 -0
- package/internal/FocusControlWrapper/index/index.js +1 -0
- package/internal/FocusControlWrapper/index/index.js.map +1 -0
- package/internal/FocusControlWrapper/index/package.json +6 -0
- package/internal/FocusControlWrapper/index.d.ts +1 -0
- package/internal/FocusControlWrapper/package.json +6 -0
- package/internal/FocusControlWrapper/useFocusControl/package.json +6 -0
- package/internal/FocusControlWrapper/useFocusControl/useFocusControl.js +33 -0
- package/internal/FocusControlWrapper/useFocusControl/useFocusControl.js.map +1 -0
- package/internal/FocusControlWrapper/useFocusControl.d.ts +12 -0
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +34 -8
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/lib/dom/selectionHelpers/package.json +6 -0
- package/{components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js.map → lib/dom/selectionHelpers/selectionHelpers.js.map} +1 -1
- package/package.json +3 -3
- package/components/DateInput/helpers/SelectionHelpers/package.json +0 -6
- /package/cjs/{components/DateInput/helpers/SelectionHelpers.d.ts → lib/dom/selectionHelpers.d.ts} +0 -0
- /package/cjs/{components/DateInput/helpers/SelectionHelpers.js → lib/dom/selectionHelpers.js} +0 -0
- /package/{components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js → lib/dom/selectionHelpers/selectionHelpers.js} +0 -0
- /package/{components/DateInput/helpers/SelectionHelpers.d.ts → lib/dom/selectionHelpers.d.ts} +0 -0
|
@@ -24,6 +24,7 @@ import { rootNode } from "../../../lib/rootNode";
|
|
|
24
24
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
25
25
|
import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
|
|
26
26
|
import { isFunction } from "../../../lib/utils";
|
|
27
|
+
import { FocusControlWrapper } from "../../../internal/FocusControlWrapper";
|
|
27
28
|
import { styles } from "../Input.styles";
|
|
28
29
|
import { InputLayout } from "../InputLayout/InputLayout";
|
|
29
30
|
import { PolyfillPlaceholder } from "../InputLayout/PolyfillPlaceholder";
|
|
@@ -200,7 +201,9 @@ var Input = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$C
|
|
|
200
201
|
'aria-label': ariaLabel
|
|
201
202
|
});
|
|
202
203
|
|
|
203
|
-
var input =
|
|
204
|
+
var input = /*#__PURE__*/React.createElement(FocusControlWrapper, {
|
|
205
|
+
onBlurWhenDisabled: _this.resetFocus
|
|
206
|
+
}, _this.getInput(inputProps));
|
|
204
207
|
|
|
205
208
|
if (isTheme2022(_this.theme)) {
|
|
206
209
|
return /*#__PURE__*/React.createElement(InputLayout, {
|
|
@@ -315,14 +318,16 @@ var Input = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$C
|
|
|
315
318
|
}
|
|
316
319
|
};
|
|
317
320
|
|
|
318
|
-
_this.
|
|
319
|
-
_this.setState({
|
|
321
|
+
_this.resetFocus = function () {
|
|
322
|
+
return _this.setState({
|
|
320
323
|
focused: false
|
|
321
324
|
});
|
|
325
|
+
};
|
|
322
326
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
327
|
+
_this.handleBlur = function (event) {
|
|
328
|
+
_this.resetFocus();
|
|
329
|
+
|
|
330
|
+
_this.props.onBlur == null ? void 0 : _this.props.onBlur(event);
|
|
326
331
|
};
|
|
327
332
|
|
|
328
333
|
_this.renderPrefix = function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Input.tsx"],"names":["invariant","React","warning","globalObject","isEdge","isIE11","isKeyBackspace","isKeyDelete","someKeys","needsPolyfillPlaceholder","InternalMaskedInput","ThemeContext","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","isFunction","styles","InputLayout","PolyfillPlaceholder","inputTypes","selectionAllowedTypes","selectionErrorMessage","type","allowedTypes","map","i","join","maskForbiddenTypes","maskAllowedTypes","filter","includes","maskErrorMessage","InputDataTids","root","Input","getProps","defaultProps","state","blinking","focused","selectAllId","input","selectAll","setSelectionRange","value","length","delaySelectAll","requestAnimationFrame","cancelDelayedSelectAll","cancelAnimationFrame","cancelBlink","callback","blinkTimeout","clearTimeout","setState","getInput","inputProps","props","element","cloneElement","mask","canBeUsedWithMask","renderMaskedInput","createElement","renderMain","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","role","leftIcon","rightIcon","borderless","align","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","corners","ariaDescribedby","ariaControls","ariaLabel","rest","labelProps","className","theme","getSizeClassName","focus","hovering","blink","focusFallback","warningFallback","errorFallback","style","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","Boolean","defaultValue","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","event","fieldIsEmpty","target","e","isDeleteKey","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","outputMaskError","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","blur","getNode","offsetWidth","setTimeout","start","end","Error","document","activeElement","render","setRootNode","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","useDefaultColor","iconFocus","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport invariant from 'invariant';\nimport React, { AriaAttributes, ClassAttributes, HTMLAttributes, ReactElement } from 'react';\nimport warning from 'warning';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { needsPolyfillPlaceholder } from '../../lib/needsPolyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { InternalMaskedInput } from '../../internal/InternalMaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isFunction } from '../../lib/utils';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { InputElement, InputElementProps } from './Input.typings';\nimport { styles } from './Input.styles';\nimport { InputLayout } from './InputLayout/InputLayout';\nimport { PolyfillPlaceholder } from './InputLayout/PolyfillPlaceholder';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\n/**\n * @deprecated use SizeProp\n */\nexport type InputSize = SizeProp;\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = typeof inputTypes[number];\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport const selectionAllowedTypes: InputType[] = ['text', 'password', 'tel', 'search', 'url'];\nexport const selectionErrorMessage = (type: InputType, allowedTypes: InputType[] = selectionAllowedTypes) => {\n return `<Input />. Selection is not supported by the type \"${type}\". Types that support selection: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}. Reason: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange.`;\n};\n\nexport const maskForbiddenTypes: InputType[] = ['number', 'date', 'time'];\nexport const maskAllowedTypes: InputType[] = inputTypes.filter((type) => {\n return !maskForbiddenTypes.includes(type);\n});\nexport const maskErrorMessage = (type: InputType, allowedTypes: InputType[] = maskAllowedTypes) => {\n return `<Input />. Prop \"mask\" does not support type \"${type}\". Supported types: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}.`;\n};\n\nexport interface InputProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /**\n * Паттерн маски. Доступен для типов `text`, `password`, `email`, `tel`, `search`, `url`\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n mask?: Nullable<string>;\n /**\n * Символ маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /**\n * Показывать символы маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: SizeProp;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Тип. Возможные значения: 'password' | 'text' | 'number' | 'tel' | 'search' | 'time' | 'date' | 'url' | 'email'\n * */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе. Работает с типами `text`, `password`, `tel`, `search`, `url`. [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange) */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает акцентным цветом.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n /** @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n /**\n * Элемент заменяет нативный input.\n * Должен иметь пропы `InputElementProps` и тип `InputElement`\n * */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n needsPolyfillPlaceholder: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'size' | 'type'>>;\n\n/**\n * Интерфейс пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\n@rootNode\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n public static displayName = 'Input';\n\n public static defaultProps: DefaultProps = {\n size: 'small',\n type: 'text',\n };\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n public state: InputState = {\n needsPolyfillPlaceholder,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout: SafeTimer;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n private outputMaskError() {\n warning(!(this.props.mask && this.canBeUsedWithMask), maskErrorMessage(this.getProps().type));\n }\n\n public componentDidMount() {\n this.outputMaskError();\n }\n\n public componentDidUpdate(prevProps: Readonly<InputProps>) {\n if (this.props.type !== prevProps.type || this.props.mask !== prevProps.mask) {\n this.outputMaskError();\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /**\n * @public\n */\n public getNode() {\n return this.input;\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n // https://github.com/facebook/react/issues/7769\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n if (!selectionAllowedTypes.includes(this.getProps().type)) {\n warning(false, selectionErrorMessage(this.getProps().type));\n\n return;\n }\n\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n if (this.props.mask && this.props.value && this.props.value?.length < this.props.mask.length) {\n globalObject.setTimeout(() => {\n this.input?.setSelectionRange(start, end);\n }, 150);\n } else {\n this.input?.setSelectionRange(start, end);\n }\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\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.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private get canBeUsedWithMask() {\n return maskForbiddenTypes.includes(this.getProps().type);\n }\n\n /**\n * Работает с типами `text`, `password`, `tel`, `search`, `url`\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number | null =>\n (this.selectAllId = globalObject.requestAnimationFrame?.(this.selectAll) ?? null);\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private getInput = (inputProps: InputElementProps & ClassAttributes<HTMLInputElement>) => {\n if (this.props.element) {\n return React.cloneElement(this.props.element, inputProps);\n }\n\n return this.props.mask && !this.canBeUsedWithMask\n ? this.renderMaskedInput(inputProps, this.props.mask)\n : React.createElement('input', inputProps);\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n role,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused && !warning && !error,\n [styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n role,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type,\n placeholder: !this.isMaskVisible && !needsPolyfillPlaceholder ? placeholder : undefined,\n disabled,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n };\n\n const input = this.getInput(inputProps);\n\n if (isTheme2022(this.theme)) {\n return (\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n prefix={prefix}\n suffix={suffix}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size }}\n >\n {input}\n {this.state.needsPolyfillPlaceholder && (\n <PolyfillPlaceholder\n isMaskVisible={this.isMaskVisible}\n value={value}\n defaultValue={this.props.defaultValue}\n align={align}\n >\n {placeholder}\n </PolyfillPlaceholder>\n )}\n </InputLayout>\n );\n }\n\n return (\n <label data-tid={InputDataTids.root} {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(inputProps: React.InputHTMLAttributes<HTMLInputElement>, mask: string) {\n return (\n <InternalMaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconFocus(this.theme)]: this.state.focused,\n [styles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (\n this.state.needsPolyfillPlaceholder &&\n this.props.placeholder &&\n !this.isMaskVisible &&\n !this.props.value &&\n !this.props.defaultValue\n ) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InternalMaskedInput | InputElement | null) => {\n if (element instanceof InternalMaskedInput || (element && 'input' in element)) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (needsPolyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.needsPolyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ needsPolyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Input.tsx"],"names":["invariant","React","warning","globalObject","isEdge","isIE11","isKeyBackspace","isKeyDelete","someKeys","needsPolyfillPlaceholder","InternalMaskedInput","ThemeContext","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","isFunction","FocusControlWrapper","styles","InputLayout","PolyfillPlaceholder","inputTypes","selectionAllowedTypes","selectionErrorMessage","type","allowedTypes","map","i","join","maskForbiddenTypes","maskAllowedTypes","filter","includes","maskErrorMessage","InputDataTids","root","Input","getProps","defaultProps","state","blinking","focused","selectAllId","input","selectAll","setSelectionRange","value","length","delaySelectAll","requestAnimationFrame","cancelDelayedSelectAll","cancelAnimationFrame","cancelBlink","callback","blinkTimeout","clearTimeout","setState","getInput","inputProps","props","element","cloneElement","mask","canBeUsedWithMask","renderMaskedInput","createElement","renderMain","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","role","leftIcon","rightIcon","borderless","align","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","corners","ariaDescribedby","ariaControls","ariaLabel","rest","labelProps","className","theme","getSizeClassName","focus","hovering","blink","focusFallback","warningFallback","errorFallback","style","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","resetFocus","Boolean","defaultValue","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","event","fieldIsEmpty","target","e","isDeleteKey","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","outputMaskError","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","blur","getNode","offsetWidth","setTimeout","start","end","Error","document","activeElement","render","setRootNode","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","useDefaultColor","iconFocus","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"kvBAAA;AACA;AACA,OAAOA,SAAP,MAAsB,WAAtB;AACA,OAAOC,KAAP,MAAqF,OAArF;AACA,OAAOC,OAAP,MAAoB,SAApB;AACA,SAASC,YAAT,QAAwC,0BAAxC;;AAEA,SAASC,MAAT,EAAiBC,MAAjB,QAA+B,kBAA/B;AACA,SAASC,cAAT,EAAyBC,WAAzB,EAAsCC,QAAtC,QAAsD,uCAAtD;AACA,SAASC,wBAAT,QAAyC,oCAAzC;;AAEA,SAASC,mBAAT,QAAoC,oCAApC;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAAsBC,aAAtB,QAAmE,8BAAnE;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,WAAT,QAA4B,gCAA5B;AACA,SAASC,UAAT,QAA2B,iBAA3B;;AAEA,SAASC,mBAAT,QAAoC,oCAApC;;;AAGA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,WAAT,QAA4B,2BAA5B;AACA,SAASC,mBAAT,QAAoC,mCAApC;;AAEA,OAAO,IAAMC,UAAU,GAAG,CAAC,UAAD,EAAa,MAAb,EAAqB,QAArB,EAA+B,KAA/B,EAAsC,QAAtC,EAAgD,MAAhD,EAAwD,MAAxD,EAAgE,KAAhE,EAAuE,OAAvE,CAAnB;;AAEP;AACA;AACA;;;;;;AAMA,OAAO,IAAMC,qBAAkC,GAAG,CAAC,MAAD,EAAS,UAAT,EAAqB,KAArB,EAA4B,QAA5B,EAAsC,KAAtC,CAA3C;AACP,OAAO,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,IAAD,EAAkBC,YAAlB,EAAwE,KAAtDA,YAAsD,cAAtDA,YAAsD,GAA1BH,qBAA0B;AAC3G,kEAA6DE,IAA7D,0CAAqGC,YAAY;AAC9GC,EAAAA,GADkG,CAC9F,UAACC,CAAD,iBAAWA,CAAX,SAD8F;AAElGC,EAAAA,IAFkG,CAE7F,IAF6F,CAArG;AAGD,CAJM;;AAMP,OAAO,IAAMC,kBAA+B,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,MAAnB,CAAxC;AACP,OAAO,IAAMC,gBAA6B,GAAGT,UAAU,CAACU,MAAX,CAAkB,UAACP,IAAD,EAAU;AACvE,SAAO,CAACK,kBAAkB,CAACG,QAAnB,CAA4BR,IAA5B,CAAR;AACD,CAF4C,CAAtC;AAGP,OAAO,IAAMS,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACT,IAAD,EAAkBC,YAAlB,EAAmE,KAAjDA,YAAiD,cAAjDA,YAAiD,GAArBK,gBAAqB;AACjG,+DAAwDN,IAAxD,6BAAmFC,YAAY;AAC5FC,EAAAA,GADgF,CAC5E,UAACC,CAAD,iBAAWA,CAAX,SAD4E;AAEhFC,EAAAA,IAFgF,CAE3E,IAF2E,CAAnF;AAGD,CAJM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuHP,OAAO,IAAMM,aAAa,GAAG;AAC3BC,EAAAA,IAAI,EAAE,aADqB,EAAtB;;;;;;;;;;AAWP,OALA;AACA;AACA;AACA,GAEA,IAAaC,KAAb,GADCvB,QACD;;;;;;AASUwB,IAAAA,QATV,GASqBvB,iBAAiB,CAACsB,KAAK,CAACE,YAAP,CATtC;;AAWSC,IAAAA,KAXT,GAW6B;AACzB/B,MAAAA,wBAAwB,EAAxBA,wBADyB;AAEzBgC,MAAAA,QAAQ,EAAE,KAFe;AAGzBC,MAAAA,OAAO,EAAE,KAHgB,EAX7B;;;AAiBUC,IAAAA,WAjBV,GAiBuC,IAjBvC;;;AAoBUC,IAAAA,KApBV,GAoB2C,IApB3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiJSC,IAAAA,SAjJT,GAiJqB,YAAY;AAC7B,UAAI,MAAKD,KAAT,EAAgB;AACd,cAAKE,iBAAL,CAAuB,CAAvB,EAA0B,MAAKF,KAAL,CAAWG,KAAX,CAAiBC,MAA3C;AACD;AACF,KArJH;;AAuJUC,IAAAA,cAvJV,GAuJ2B;AACtB,cAAKN,WAAL,4BAAmBxC,YAAY,CAAC+C,qBAAhC,oBAAmB/C,YAAY,CAAC+C,qBAAb,CAAqC,MAAKL,SAA1C,CAAnB,oCAA2E,IADrD,GAvJ3B;;AA0JUM,IAAAA,sBA1JV,GA0JmC,YAAY;AAC3C,UAAI,MAAKR,WAAT,EAAsB;AACpBxC,QAAAA,YAAY,CAACiD,oBAAb,oBAAAjD,YAAY,CAACiD,oBAAb,CAAoC,MAAKT,WAAzC;AACA,cAAKA,WAAL,GAAmB,IAAnB;AACD;AACF,KA/JH;;AAiKUU,IAAAA,WAjKV,GAiKwB,UAACC,QAAD,EAAiC;AACrD,UAAI,MAAKC,YAAT,EAAuB;AACrBpD,QAAAA,YAAY,CAACqD,YAAb,CAA0B,MAAKD,YAA/B;AACA,cAAKA,YAAL,GAAoB,CAApB;AACA,YAAI,MAAKf,KAAL,CAAWC,QAAf,EAAyB;AACvB,gBAAKgB,QAAL,CAAc,EAAEhB,QAAQ,EAAE,KAAZ,EAAd,EAAmCa,QAAnC;AACA;AACD;AACF;AACD,UAAIA,QAAJ,EAAc;AACZA,QAAAA,QAAQ;AACT;AACF,KA7KH;;AA+KUI,IAAAA,QA/KV,GA+KqB,UAACC,UAAD,EAAuE;AACxF,UAAI,MAAKC,KAAL,CAAWC,OAAf,EAAwB;AACtB,4BAAO5D,KAAK,CAAC6D,YAAN,CAAmB,MAAKF,KAAL,CAAWC,OAA9B,EAAuCF,UAAvC,CAAP;AACD;;AAED,aAAO,MAAKC,KAAL,CAAWG,IAAX,IAAmB,CAAC,MAAKC,iBAAzB;AACH,YAAKC,iBAAL,CAAuBN,UAAvB,EAAmC,MAAKC,KAAL,CAAWG,IAA9C,CADG;AAEH9D,MAAAA,KAAK,CAACiE,aAAN,CAAoB,OAApB,EAA6BP,UAA7B,CAFJ;AAGD,KAvLH;;AAyLUQ,IAAAA,UAzLV,GAyLuB,UAACP,KAAD,EAA+C;AAClE;AACEQ,MAAAA,YADF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCIR,MAAAA,KAlCJ,CACEQ,YADF,CAEEC,YAFF,GAkCIT,KAlCJ,CAEES,YAFF,CAGEC,WAHF,GAkCIV,KAlCJ,CAGEU,WAHF,CAIEC,SAJF,GAkCIX,KAlCJ,CAIEW,SAJF,CAKEC,UALF,GAkCIZ,KAlCJ,CAKEY,UALF,CAMEC,aANF,GAkCIb,KAlCJ,CAMEa,aANF,CAOEC,KAPF,GAkCId,KAlCJ,CAOEc,KAPF,CAQEC,KARF,GAkCIf,KAlCJ,CAQEe,KARF,CASEC,IATF,GAkCIhB,KAlCJ,CASEgB,IATF,CAUE1E,OAVF,GAkCI0D,KAlCJ,CAUE1D,OAVF,CAWE2E,QAXF,GAkCIjB,KAlCJ,CAWEiB,QAXF,CAYEC,SAZF,GAkCIlB,KAlCJ,CAYEkB,SAZF,CAaEC,UAbF,GAkCInB,KAlCJ,CAaEmB,UAbF,CAcEhC,KAdF,GAkCIa,KAlCJ,CAcEb,KAdF,CAeEiC,KAfF,GAkCIpB,KAlCJ,CAeEoB,KAfF,CAgBEvD,IAhBF,GAkCImC,KAlCJ,CAgBEnC,IAhBF,CAiBEsC,IAjBF,GAkCIH,KAlCJ,CAiBEG,IAjBF,CAkBEkB,QAlBF,GAkCIrB,KAlCJ,CAkBEqB,QAlBF,CAmBEC,cAnBF,GAkCItB,KAlCJ,CAmBEsB,cAnBF,CAoBEC,IApBF,GAkCIvB,KAlCJ,CAoBEuB,IApBF,CAqBEC,WArBF,GAkCIxB,KAlCJ,CAqBEwB,WArBF,CAsBEC,gBAtBF,GAkCIzB,KAlCJ,CAsBEyB,gBAtBF,CAuBEC,QAvBF,GAkCI1B,KAlCJ,CAuBE0B,QAvBF,CAwBEC,iBAxBF,GAkCI3B,KAlCJ,CAwBE2B,iBAxBF,CAyBEC,MAzBF,GAkCI5B,KAlCJ,CAyBE4B,MAzBF,CA0BEC,MA1BF,GAkCI7B,KAlCJ,CA0BE6B,MA1BF,CA2BEC,WA3BF,GAkCI9B,KAlCJ,CA2BE8B,WA3BF,CA4BEC,OA5BF,GAkCI/B,KAlCJ,CA4BE+B,OA5BF,CA6BsBC,eA7BtB,GAkCIhC,KAlCJ,CA6BE,kBA7BF,EA8BmBiC,YA9BnB,GAkCIjC,KAlCJ,CA8BE,eA9BF,EA+BgBkC,SA/BhB,GAkCIlC,KAlCJ,CA+BE,YA/BF,EAgCEC,OAhCF,GAkCID,KAlCJ,CAgCEC,OAhCF,CAiCKkC,IAjCL,iCAkCInC,KAlCJ;;AAoCA,wBAA8B,MAAKpB,KAAnC,CAAQC,QAAR,eAAQA,QAAR,CAAkBC,OAAlB,eAAkBA,OAAlB;;AAEA,UAAMsD,UAAU,GAAG;AACjBC,QAAAA,SAAS,EAAEpF,EAAE,CAACM,MAAM,CAACiB,IAAP,CAAY,MAAK8D,KAAjB,CAAD,EAA0B,MAAKC,gBAAL,EAA1B;AACVhF,QAAAA,MAAM,CAACiF,KAAP,CAAa,MAAKF,KAAlB,CADU,IACiBxD,OAAO,IAAI,CAACxC,OAAZ,IAAuB,CAACyE,KADzC;AAEVxD,QAAAA,MAAM,CAACkF,QAAP,CAAgB,MAAKH,KAArB,CAFU,IAEoB,CAACxD,OAAD,IAAY,CAAC4C,QAAb,IAAyB,CAACpF,OAA1B,IAAqC,CAACyE,KAAtC,IAA+C,CAACI,UAFpE;AAGV5D,QAAAA,MAAM,CAACmF,KAAP,CAAa,MAAKJ,KAAlB,CAHU,IAGiBzD,QAHjB;AAIVtB,QAAAA,MAAM,CAAC4D,UAAP,EAJU,IAIYA,UAAU,IAAI,CAACrC,OAJ3B;AAKVvB,QAAAA,MAAM,CAACmE,QAAP,CAAgB,MAAKY,KAArB,CALU,IAKoBZ,QALpB;AAMVnE,QAAAA,MAAM,CAACjB,OAAP,CAAe,MAAKgG,KAApB,CANU,IAMmBhG,OANnB;AAOViB,QAAAA,MAAM,CAACwD,KAAP,CAAa,MAAKuB,KAAlB,CAPU,IAOiBvB,KAPjB;AAQVxD,QAAAA,MAAM,CAACoF,aAAP,CAAqB,MAAKL,KAA1B,CARU,IAQyBxD,OAAO,KAAKrC,MAAM,IAAID,MAAf,CARhC;AASVe,QAAAA,MAAM,CAACqF,eAAP,CAAuB,MAAKN,KAA5B,CATU,IAS2BhG,OAAO,KAAKG,MAAM,IAAID,MAAf,CATlC;AAUVe,QAAAA,MAAM,CAACsF,aAAP,CAAqB,MAAKP,KAA1B,CAVU,IAUyBvB,KAAK,KAAKtE,MAAM,IAAID,MAAf,CAV9B,OADI;;AAajB,yBAAiByF,YAbA;AAcjBa,QAAAA,KAAK,aAAIhC,KAAK,EAALA,KAAJ,IAAciB,OAAd,CAdY;AAejBvB,QAAAA,YAAY,EAAZA,YAfiB;AAgBjBC,QAAAA,YAAY,EAAZA,YAhBiB;AAiBjBC,QAAAA,WAAW,EAAXA,WAjBiB,EAAnB;;;AAoBA,UAAMX,UAAiE;AAClEoC,MAAAA,IADkE;AAErEE,QAAAA,SAAS,EAAEpF,EAAE,CAACM,MAAM,CAACyB,KAAP,CAAa,MAAKsD,KAAlB,CAAD;AACV/E,QAAAA,MAAM,CAACwF,UAAP,CAAkB,MAAKT,KAAvB,CADU,IACsBxD,OADtB;AAEVvB,QAAAA,MAAM,CAACyF,aAAP,CAAqB,MAAKV,KAA1B,CAFU,IAEyBZ,QAFzB,QAFwD;;AAMrEvC,QAAAA,KAAK,EAALA,KANqE;AAOrE6B,QAAAA,IAAI,EAAJA,IAPqE;AAQrEiC,QAAAA,QAAQ,EAAE,MAAKC,YARsD;AASrEC,QAAAA,OAAO,EAAE,MAAKC,WATuD;AAUrEzC,QAAAA,SAAS,EAAE,MAAK0C,aAVqD;AAWrEzC,QAAAA,UAAU,EAAE,MAAK0C,cAXoD;AAYrEC,QAAAA,MAAM,EAAE,MAAKC,UAZwD;AAarEV,QAAAA,KAAK,EAAE,EAAEW,SAAS,EAAErC,KAAb,EAb8D;AAcrEsC,QAAAA,GAAG,EAAE,MAAKC,QAd2D;AAerE9F,QAAAA,IAAI,EAAJA,IAfqE;AAgBrE2D,QAAAA,WAAW,EAAE,CAAC,MAAKoC,aAAN,IAAuB,CAAC/G,wBAAxB,GAAmD2E,WAAnD,GAAiEqC,SAhBT;AAiBrEnC,QAAAA,QAAQ,EAARA,QAjBqE;AAkBrE,4BAAoBM,eAlBiD;AAmBrE,sBAAcE,SAnBuD,GAAvE;;;AAsBA,UAAMlD,KAAK;AACT,0BAAC,mBAAD,IAAqB,kBAAkB,EAAE,MAAK8E,UAA9C,IAA2D,MAAKhE,QAAL,CAAcC,UAAd,CAA3D,CADF;;;AAIA,UAAI3C,WAAW,CAAC,MAAKkF,KAAN,CAAf,EAA6B;AAC3B;AACE,8BAAC,WAAD;AACE,YAAA,QAAQ,EAAErB,QADZ;AAEE,YAAA,SAAS,EAAEC,SAFb;AAGE,YAAA,MAAM,EAAEU,MAHV;AAIE,YAAA,MAAM,EAAEC,MAJV;AAKE,YAAA,UAAU,EAAEO,UALd;AAME,YAAA,OAAO,EAAE,EAAEV,QAAQ,EAAEqC,OAAO,CAACrC,QAAD,CAAnB,EAA+B5C,OAAO,EAAPA,OAA/B,EAAwCyC,IAAI,EAAJA,IAAxC,EANX;;AAQGvC,UAAAA,KARH;AASG,gBAAKJ,KAAL,CAAW/B,wBAAX;AACC,8BAAC,mBAAD;AACE,YAAA,aAAa,EAAE,MAAK+G,aADtB;AAEE,YAAA,KAAK,EAAEzE,KAFT;AAGE,YAAA,YAAY,EAAE,MAAKa,KAAL,CAAWgE,YAH3B;AAIE,YAAA,KAAK,EAAE5C,KAJT;;AAMGI,UAAAA,WANH,CAVJ,CADF;;;;;AAsBD;;AAED;AACE,gDAAO,YAAUjD,aAAa,CAACC,IAA/B,IAAyC4D,UAAzC;AACE,sCAAM,SAAS,EAAE7E,MAAM,CAAC0G,aAAP,EAAjB;AACG,cAAKC,cAAL,EADH;AAEG,cAAKC,YAAL,EAFH,CADF;;AAKE,sCAAM,SAAS,EAAE5G,MAAM,CAAC6G,OAAP,EAAjB;AACGpF,QAAAA,KADH;AAEG,cAAKqF,iBAAL,EAFH,CALF;;AASE,sCAAM,SAAS,EAAEpH,EAAE,CAACM,MAAM,CAAC0G,aAAP,EAAD,EAAyB1G,MAAM,CAAC+G,cAAP,EAAzB,CAAnB;AACG,cAAKC,YAAL,EADH;AAEG,cAAKC,eAAL,EAFH,CATF,CADF;;;;AAgBD,KAvTH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgaUb,IAAAA,QAhaV,GAgaqB,UAAC1D,OAAD,EAA2E;AAC5F,UAAIA,OAAO,YAAYnD,mBAAnB,IAA2CmD,OAAO,IAAI,WAAWA,OAArE,EAA+E;AAC7E,cAAKjB,KAAL,GAAaiB,OAAO,CAACjB,KAArB;AACD,OAFD,MAEO;AACL,cAAKA,KAAL,GAAaiB,OAAb;AACD;AACF,KAtaH;;AAwaUiD,IAAAA,YAxaV,GAwayB,UAACuB,KAAD,EAAgD;AACrE,UAAI5H,wBAAJ,EAA8B;AAC5B,YAAM6H,YAAY,GAAGD,KAAK,CAACE,MAAN,CAAaxF,KAAb,KAAuB,EAA5C;AACA,YAAI,MAAKP,KAAL,CAAW/B,wBAAX,KAAwC6H,YAA5C,EAA0D;AACxD,gBAAK7E,QAAL,CAAc,EAAEhD,wBAAwB,EAAE6H,YAA5B,EAAd;AACD;AACF;;AAED,UAAI,MAAK1E,KAAL,CAAWa,aAAf,EAA8B;AAC5B,cAAKb,KAAL,CAAWa,aAAX,CAAyB4D,KAAK,CAACE,MAAN,CAAaxF,KAAtC;AACD;;AAED,UAAI,MAAKa,KAAL,CAAWiD,QAAf,EAAyB;AACvB,cAAKjD,KAAL,CAAWiD,QAAX,CAAoBwB,KAApB;AACD;AACF,KAvbH;;AAybUrB,IAAAA,WAzbV,GAybwB,UAACqB,KAAD,EAA+C;AACnE,YAAK5E,QAAL,CAAc;AACZf,QAAAA,OAAO,EAAE,IADG,EAAd;;;AAIA,UAAI,MAAKkB,KAAL,CAAWyB,gBAAf,EAAiC;AAC/B,cAAKzC,KAAL,IAAc,CAACvC,MAAf,GAAwB,MAAKwC,SAAL,EAAxB,GAA2C,MAAKI,cAAL,EAA3C;AACD;;AAED,UAAI,MAAKW,KAAL,CAAWmD,OAAf,EAAwB;AACtB,cAAKnD,KAAL,CAAWmD,OAAX,CAAmBsB,KAAnB;AACD;AACF,KArcH;;AAucUpB,IAAAA,aAvcV,GAuc0B,UAACuB,CAAD,EAA8C;AACpE,UAAI,MAAK5E,KAAL,CAAWW,SAAf,EAA0B;AACxB,cAAKX,KAAL,CAAWW,SAAX,CAAqBiE,CAArB;AACD;;AAED,UAAMC,WAAW,GAAGjI,QAAQ,CAACF,cAAD,EAAiBC,WAAjB,CAAR,CAAsCiI,CAAtC,CAApB;;AAEA,UAAI,CAACA,CAAC,CAACE,aAAF,CAAgB3F,KAAjB,IAA0B0F,WAA1B,IAAyC,CAACD,CAAC,CAACG,MAAhD,EAAwD;AACtD,cAAKC,qBAAL;AACD;AACF,KAjdH;;AAmdU1B,IAAAA,cAndV,GAmd2B,UAACmB,KAAD,EAAkD;AACzE,UAAI,MAAKzE,KAAL,CAAWY,UAAf,EAA2B;AACzB,cAAKZ,KAAL,CAAWY,UAAX,CAAsB6D,KAAtB;AACD;;AAED,UAAI,MAAKzE,KAAL,CAAWiF,SAAX,KAAyBR,KAAK,CAACK,aAAN,CAAoB3F,KAApB,CAA0BC,MAAvD,EAA+D;AAC7D,cAAK4F,qBAAL,CAA2BP,KAAK,CAACK,aAAN,CAAoB3F,KAA/C;AACD;AACF,KA3dH;;AA6dU+F,IAAAA,uBA7dV,GA6doC,UAAC/F,KAAD,EAAmB;AACnD,UAAI,MAAKa,KAAL,CAAWa,aAAf,EAA8B;AAC5B,cAAKb,KAAL,CAAWa,aAAX,CAAyB1B,KAAzB;AACD;AACF,KAjeH;;AAmeU6F,IAAAA,qBAneV,GAmekC,UAAC7F,KAAD,EAA4C,KAA3CA,KAA2C,cAA3CA,KAA2C,GAA3B,MAAKa,KAAL,CAAWb,KAAX,IAAoB,EAAO;AAC1E,UAAI,MAAKa,KAAL,CAAW2B,iBAAf,EAAkC;AAChC,cAAK3B,KAAL,CAAW2B,iBAAX,CAA6BxC,KAA7B;AACD,OAFD,MAEO;AACL,cAAKuD,KAAL;AACD;AACF,KAzeH;;AA2eUoB,IAAAA,UA3eV,GA2euB,oBAAM,MAAKjE,QAAL,CAAc,EAAEf,OAAO,EAAE,KAAX,EAAd,CAAN,EA3evB;;AA6eU0E,IAAAA,UA7eV,GA6euB,UAACiB,KAAD,EAA+C;AAClE,YAAKX,UAAL;AACA,YAAK9D,KAAL,CAAWuD,MAAX,0BAAKvD,KAAL,CAAWuD,MAAX,CAAoBkB,KAApB;AACD,KAhfH;;AAkfUN,IAAAA,YAlfV,GAkfyB,YAAM;AAC3B,wBAA6B,MAAKnE,KAAlC,CAAQ4B,MAAR,eAAQA,MAAR,CAAgBF,QAAhB,eAAgBA,QAAhB;;AAEA,UAAI,CAACE,MAAL,EAAa;AACX,eAAO,IAAP;AACD;;AAED;AACE,sCAAM,SAAS,EAAE3E,EAAE,CAACM,MAAM,CAACqE,MAAP,CAAc,MAAKU,KAAnB,CAAD,mBAA+B/E,MAAM,CAAC4H,cAAP,CAAsB,MAAK7C,KAA3B,CAA/B,IAAmEZ,QAAnE,QAAnB,IAAoGE,MAApG,CADF;;AAGD,KA5fH;;AA8fU2C,IAAAA,YA9fV,GA8fyB,YAAM;AAC3B,yBAA6B,MAAKvE,KAAlC,CAAQ6B,MAAR,gBAAQA,MAAR,CAAgBH,QAAhB,gBAAgBA,QAAhB;;AAEA,UAAI,CAACG,MAAL,EAAa;AACX,eAAO,IAAP;AACD;;AAED;AACE,sCAAM,SAAS,EAAE5E,EAAE,CAACM,MAAM,CAACsE,MAAP,CAAc,MAAKS,KAAnB,CAAD,mBAA+B/E,MAAM,CAAC6H,cAAP,CAAsB,MAAK9C,KAA3B,CAA/B,IAAmEZ,QAAnE,QAAnB,IAAoGG,MAApG,CADF;;AAGD,KAxgBH,mDAuBUwD,eAvBV,GAuBE,2BAA0B,CACxB/I,OAAO,CAAC,EAAE,KAAK0D,KAAL,CAAWG,IAAX,IAAmB,KAAKC,iBAA1B,CAAD,EAA+C9B,gBAAgB,CAAC,KAAKI,QAAL,GAAgBb,IAAjB,CAA/D,CAAP,CACD,CAzBH,QA2BSyH,iBA3BT,GA2BE,6BAA2B,CACzB,KAAKD,eAAL,GACD,CA7BH,QA+BSE,kBA/BT,GA+BE,4BAA0BC,SAA1B,EAA2D,CACzD,IAAI,KAAKxF,KAAL,CAAWnC,IAAX,KAAoB2H,SAAS,CAAC3H,IAA9B,IAAsC,KAAKmC,KAAL,CAAWG,IAAX,KAAoBqF,SAAS,CAACrF,IAAxE,EAA8E,CAC5E,KAAKkF,eAAL,GACD,CACF,CAnCH,QAqCSI,oBArCT,GAqCE,gCAA8B,CAC5B,IAAI,KAAK9F,YAAT,EAAuB,CACrBpD,YAAY,CAACqD,YAAb,CAA0B,KAAKD,YAA/B,EACD,CACD,KAAKJ,sBAAL,GACD,CA1CH,CA4CE;AACF;AACA,KA9CA,QA+CSiD,KA/CT,GA+CE,iBAAe,CACbpG,SAAS,CAAC,KAAK4C,KAAN,EAAa,kDAAb,CAAT,CACA,KAAKA,KAAL,CAAWwD,KAAX,GACD,CAlDH,CAoDE;AACF;AACA,KAtDA,QAuDSkD,IAvDT,GAuDE,gBAAc,CACZtJ,SAAS,CAAC,KAAK4C,KAAN,EAAa,iDAAb,CAAT,CACA,KAAKA,KAAL,CAAW0G,IAAX,GACD,CA1DH,CA4DE;AACF;AACA,KA9DA,QA+DSC,OA/DT,GA+DE,mBAAiB,CACf,OAAO,KAAK3G,KAAZ,CACD,CAjEH,CAmEE;AACF;AACA,KArEA,QAsES0D,KAtET,GAsEE,iBAAe,mBACb,IAAI,KAAK/C,YAAT,EAAuB,CACrB,KAAKF,WAAL,CAAiB,YAAM,CACrB;AACA;AACA,cAAM,MAAI,CAACT,KAAL,IAAc,MAAI,CAACA,KAAL,CAAW4G,WAA/B,EACA,MAAI,CAAClD,KAAL,GACD,CALD,EAMA,OACD,CACD,KAAK7C,QAAL,CAAc,EAAEhB,QAAQ,EAAE,IAAZ,EAAd,EAAkC,YAAM,CACtC,MAAI,CAACc,YAAL,GAAoBpD,YAAY,CAACsJ,UAAb,CAAwB,MAAI,CAACpG,WAA7B,EAA0C,GAA1C,CAApB,CACD,CAFD,EAGD,CAnFH,CAqFE;AACF;AACA;AACA;AACA,KAzFA,QA0FSP,iBA1FT,GA0FE,2BAAyB4G,KAAzB,EAAwCC,GAAxC,EAAqD,4DACnD;AACA;AACA,QAAI,CAACpI,qBAAqB,CAACU,QAAtB,CAA+B,KAAKK,QAAL,GAAgBb,IAA/C,CAAL,EAA2D,CACzDvB,OAAO,CAAC,KAAD,EAAQsB,qBAAqB,CAAC,KAAKc,QAAL,GAAgBb,IAAjB,CAA7B,CAAP,CAEA,OACD,CAED,IAAI,CAAC,KAAKmB,KAAV,EAAiB,CACf,MAAM,IAAIgH,KAAJ,CAAU,oDAAV,CAAN,CACD,CAED,IAAI,0BAAAzJ,YAAY,CAAC0J,QAAb,2CAAuBC,aAAvB,MAAyC,KAAKlH,KAAlD,EAAyD,CACvD,KAAKwD,KAAL,GACD,CACD,IAAI,KAAKxC,KAAL,CAAWG,IAAX,IAAmB,KAAKH,KAAL,CAAWb,KAA9B,IAAuC,2BAAKa,KAAL,CAAWb,KAAX,uCAAkBC,MAAlB,IAA2B,KAAKY,KAAL,CAAWG,IAAX,CAAgBf,MAAtF,EAA8F,CAC5F7C,YAAY,CAACsJ,UAAb,CAAwB,YAAM,kBAC5B,gBAAA,MAAI,CAAC7G,KAAL,kCAAYE,iBAAZ,CAA8B4G,KAA9B,EAAqCC,GAArC,EACD,CAFD,EAEG,GAFH,EAGD,CAJD,MAIO,iBACL,oBAAK/G,KAAL,iCAAYE,iBAAZ,CAA8B4G,KAA9B,EAAqCC,GAArC,EACD,CACF,CAjHH,QAyHSI,MAzHT,GAyHE,kBAA6B,mBAC3B,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAAC7D,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,MAAI,CAAC8D,WAAjC,IAAkD,MAAI,CAACpG,KAAvD,GACG,MAAI,CAACO,UADR,CADF,CAKD,CARH,CADF,CAYD,CAtIH,QAyTUF,iBAzTV,GAyTE,2BAA0BN,UAA1B,EAAmFI,IAAnF,EAAiG,CAC/F,oBACE,oBAAC,mBAAD,eACMJ,UADN,IAEE,IAAI,EAAEI,IAFR,EAGE,QAAQ,EAAE,KAAKH,KAAL,CAAWqB,QAHvB,EAIE,cAAc,EAAE,KAAKrB,KAAL,CAAWsB,cAJ7B,EAKE,WAAW,EAAE,KAAKtB,KAAL,CAAW8B,WAL1B,EAME,QAAQ,EAAE,KAAK9B,KAAL,CAAWiD,QANvB,EAOE,aAAa,EAAE,KAAKiC,uBAPtB,EAQE,iBAAiB,EAAE,KAAKF,qBAR1B,IADF,CAYD,CAtUH,QAwUUqB,oBAxUV,GAwUE,8BAA6BC,KAA7B,EAA4C,KAAfA,KAAe,cAAfA,KAAe,GAAP,KAAO,EAC1C,QAAQ,KAAK5H,QAAL,GAAgB6C,IAAxB,GACE,KAAK,OAAL,CACE,OAAO+E,KAAK,GAAG/I,MAAM,CAACgJ,cAAP,CAAsB,KAAKjE,KAA3B,CAAH,GAAuC/E,MAAM,CAACiJ,aAAP,CAAqB,KAAKlE,KAA1B,CAAnD,CACF,KAAK,QAAL,CACE,OAAOgE,KAAK,GAAG/I,MAAM,CAACkJ,eAAP,CAAuB,KAAKnE,KAA5B,CAAH,GAAwC/E,MAAM,CAACmJ,cAAP,CAAsB,KAAKpE,KAA3B,CAApD,CACF,KAAK,OAAL,CACA,QACE,OAAOgE,KAAK,GAAG/I,MAAM,CAACoJ,cAAP,CAAsB,KAAKrE,KAA3B,CAAH,GAAuC/E,MAAM,CAACqJ,aAAP,CAAqB,KAAKtE,KAA1B,CAAnD,CAPJ,CASD,CAlVH,QAoVU4B,cApVV,GAoVE,0BAAyB,CACvB,OAAO,KAAK2C,UAAL,CAAgB,KAAK7G,KAAL,CAAWiB,QAA3B,EAAqC,KAAKoF,oBAAL,EAArC,CAAP,CACD,CAtVH,QAwVU7B,eAxVV,GAwVE,2BAA0B,CACxB,OAAO,KAAKqC,UAAL,CAAgB,KAAK7G,KAAL,CAAWkB,SAA3B,EAAsC,KAAKmF,oBAAL,CAA0B,IAA1B,CAAtC,CAAP,CACD,CA1VH,QA4VUQ,UA5VV,GA4VE,oBAAmBC,IAAnB,EAAwCC,aAAxC,EAA+D,UAC7D,IAAI,CAACD,IAAL,EAAW,CACT,OAAO,IAAP,CACD,CACD,IAAQpF,QAAR,GAAqB,KAAK1B,KAA1B,CAAQ0B,QAAR,CACA,IAAMsF,QAAQ,GAAG3J,UAAU,CAACyJ,IAAD,CAAV,GAAmBA,IAAI,EAAvB,GAA4BA,IAA7C,CAEA,oBACE,8BACE,SAAS,EAAE7J,EAAE,CAACM,MAAM,CAACuJ,IAAP,EAAD,EAAgBC,aAAhB,EAA+BxJ,MAAM,CAAC0J,eAAP,CAAuB,KAAK3E,KAA5B,CAA/B,mBACV/E,MAAM,CAAC2J,SAAP,CAAiB,KAAK5E,KAAtB,CADU,IACqB,KAAK1D,KAAL,CAAWE,OADhC,OAEVvB,MAAM,CAAC4J,YAAP,EAFU,IAEczF,QAFd,QADf,IAMGsF,QANH,CADF,CAUD,CA7WH,QA+WU3C,iBA/WV,GA+WE,6BAA4B,CAC1B,IAAQ3C,QAAR,GAAqB,KAAK1B,KAA1B,CAAQ0B,QAAR,CACA,IAAQ5C,OAAR,GAAoB,KAAKF,KAAzB,CAAQE,OAAR,CACA,IAAI0C,WAAW,GAAG,IAAlB,CAEA,IACE,KAAK5C,KAAL,CAAW/B,wBAAX,IACA,KAAKmD,KAAL,CAAWwB,WADX,IAEA,CAAC,KAAKoC,aAFN,IAGA,CAAC,KAAK5D,KAAL,CAAWb,KAHZ,IAIA,CAAC,KAAKa,KAAL,CAAWgE,YALd,EAME,UACAxC,WAAW,gBACT,6BACE,SAAS,EAAEvE,EAAE,CAACM,MAAM,CAACiE,WAAP,CAAmB,KAAKc,KAAxB,CAAD,mBACV/E,MAAM,CAAC6J,mBAAP,CAA2B,KAAK9E,KAAhC,CADU,IAC+BZ,QAD/B,OAEVnE,MAAM,CAAC8J,gBAAP,CAAwB,KAAK/E,KAA7B,CAFU,IAE4BxD,OAF5B,QADf,EAKE,KAAK,EAAE,EAAE2E,SAAS,EAAE,KAAKzD,KAAL,CAAWoB,KAAX,IAAoB,SAAjC,EALT,IAOG,KAAKpB,KAAL,CAAWwB,WAPd,CADF,CAWD,CAED,OAAOA,WAAP,CACD,CAzYH,QA2YUe,gBA3YV,GA2YE,4BAA2B,sBACzB,QAAQ,KAAK7D,QAAL,GAAgB6C,IAAxB,GACE,KAAK,OAAL,CACE,OAAOtE,EAAE,kBACNM,MAAM,CAAC+J,SAAP,CAAiB,KAAKhF,KAAtB,CADM,IACyB,IADzB,OAEN/E,MAAM,CAACgK,iBAAP,CAAyB,KAAKjF,KAA9B,CAFM,IAEiC7F,MAAM,IAAID,MAF3C,QAAT,CAIF,KAAK,QAAL,CACE,OAAOS,EAAE,kBACNM,MAAM,CAACiK,UAAP,CAAkB,KAAKlF,KAAvB,CADM,IAC0B,IAD1B,OAEN/E,MAAM,CAACkK,kBAAP,CAA0B,KAAKnF,KAA/B,CAFM,IAEkC7F,MAAM,IAAID,MAF5C,QAAT,CAIF,KAAK,OAAL,CACA,QACE,OAAOS,EAAE,kBACNM,MAAM,CAACmK,SAAP,CAAiB,KAAKpF,KAAtB,CADM,IACyB,IADzB,OAEN/E,MAAM,CAACoK,iBAAP,CAAyB,KAAKrF,KAA9B,CAFM,IAEiC7F,MAAM,IAAID,MAF3C,QAAT,CAbJ,CAkBD,CA9ZH,mDAmHE,eAAoC,CAClC,mBAAiC,KAAKwD,KAAtC,CAAQG,IAAR,gBAAQA,IAAR,CAAcmB,cAAd,gBAAcA,cAAd,CACA,IAAQxC,OAAR,GAAoB,KAAKF,KAAzB,CAAQE,OAAR,CACA,OAAOiF,OAAO,CAAC5D,IAAI,KAAKrB,OAAO,IAAIwC,cAAhB,CAAL,CAAd,CACD,CAvHH,qCAwIE,eAAgC,CAC9B,OAAOpD,kBAAkB,CAACG,QAAnB,CAA4B,KAAKK,QAAL,GAAgBb,IAA5C,CAAP,CACD,CA1IH,CA4IE;AACF;AACA;AACA;AACA,OAhJA,oBAA2BxB,KAAK,CAACuL,SAAjC,WACgBC,mBADhB,GACsC,OADtC,UAEgBC,WAFhB,GAE8B,OAF9B,UAIgBnJ,YAJhB,GAI6C,EACzC4C,IAAI,EAAE,OADmC,EAEzC1D,IAAI,EAAE,MAFmC,EAJ7C","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport invariant from 'invariant';\nimport React, { AriaAttributes, ClassAttributes, HTMLAttributes, ReactElement } from 'react';\nimport warning from 'warning';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { needsPolyfillPlaceholder } from '../../lib/needsPolyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { InternalMaskedInput } from '../../internal/InternalMaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isFunction } from '../../lib/utils';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { InputElement, InputElementProps } from './Input.typings';\nimport { styles } from './Input.styles';\nimport { InputLayout } from './InputLayout/InputLayout';\nimport { PolyfillPlaceholder } from './InputLayout/PolyfillPlaceholder';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\n/**\n * @deprecated use SizeProp\n */\nexport type InputSize = SizeProp;\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = typeof inputTypes[number];\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport const selectionAllowedTypes: InputType[] = ['text', 'password', 'tel', 'search', 'url'];\nexport const selectionErrorMessage = (type: InputType, allowedTypes: InputType[] = selectionAllowedTypes) => {\n return `<Input />. Selection is not supported by the type \"${type}\". Types that support selection: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}. Reason: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange.`;\n};\n\nexport const maskForbiddenTypes: InputType[] = ['number', 'date', 'time'];\nexport const maskAllowedTypes: InputType[] = inputTypes.filter((type) => {\n return !maskForbiddenTypes.includes(type);\n});\nexport const maskErrorMessage = (type: InputType, allowedTypes: InputType[] = maskAllowedTypes) => {\n return `<Input />. Prop \"mask\" does not support type \"${type}\". Supported types: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}.`;\n};\n\nexport interface InputProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /**\n * Паттерн маски. Доступен для типов `text`, `password`, `email`, `tel`, `search`, `url`\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n mask?: Nullable<string>;\n /**\n * Символ маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /**\n * Показывать символы маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: SizeProp;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Тип. Возможные значения: 'password' | 'text' | 'number' | 'tel' | 'search' | 'time' | 'date' | 'url' | 'email'\n * */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе. Работает с типами `text`, `password`, `tel`, `search`, `url`. [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange) */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает акцентным цветом.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n /** @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n /**\n * Элемент заменяет нативный input.\n * Должен иметь пропы `InputElementProps` и тип `InputElement`\n * */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n needsPolyfillPlaceholder: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'size' | 'type'>>;\n\n/**\n * Интерфейс пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\n@rootNode\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n public static displayName = 'Input';\n\n public static defaultProps: DefaultProps = {\n size: 'small',\n type: 'text',\n };\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n public state: InputState = {\n needsPolyfillPlaceholder,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout: SafeTimer;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n private outputMaskError() {\n warning(!(this.props.mask && this.canBeUsedWithMask), maskErrorMessage(this.getProps().type));\n }\n\n public componentDidMount() {\n this.outputMaskError();\n }\n\n public componentDidUpdate(prevProps: Readonly<InputProps>) {\n if (this.props.type !== prevProps.type || this.props.mask !== prevProps.mask) {\n this.outputMaskError();\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /**\n * @public\n */\n public getNode() {\n return this.input;\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n // https://github.com/facebook/react/issues/7769\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n if (!selectionAllowedTypes.includes(this.getProps().type)) {\n warning(false, selectionErrorMessage(this.getProps().type));\n\n return;\n }\n\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n if (this.props.mask && this.props.value && this.props.value?.length < this.props.mask.length) {\n globalObject.setTimeout(() => {\n this.input?.setSelectionRange(start, end);\n }, 150);\n } else {\n this.input?.setSelectionRange(start, end);\n }\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\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.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private get canBeUsedWithMask() {\n return maskForbiddenTypes.includes(this.getProps().type);\n }\n\n /**\n * Работает с типами `text`, `password`, `tel`, `search`, `url`\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number | null =>\n (this.selectAllId = globalObject.requestAnimationFrame?.(this.selectAll) ?? null);\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private getInput = (inputProps: InputElementProps & ClassAttributes<HTMLInputElement>) => {\n if (this.props.element) {\n return React.cloneElement(this.props.element, inputProps);\n }\n\n return this.props.mask && !this.canBeUsedWithMask\n ? this.renderMaskedInput(inputProps, this.props.mask)\n : React.createElement('input', inputProps);\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n role,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused && !warning && !error,\n [styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n role,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type,\n placeholder: !this.isMaskVisible && !needsPolyfillPlaceholder ? placeholder : undefined,\n disabled,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n };\n\n const input = (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>{this.getInput(inputProps)}</FocusControlWrapper>\n );\n\n if (isTheme2022(this.theme)) {\n return (\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n prefix={prefix}\n suffix={suffix}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size }}\n >\n {input}\n {this.state.needsPolyfillPlaceholder && (\n <PolyfillPlaceholder\n isMaskVisible={this.isMaskVisible}\n value={value}\n defaultValue={this.props.defaultValue}\n align={align}\n >\n {placeholder}\n </PolyfillPlaceholder>\n )}\n </InputLayout>\n );\n }\n\n return (\n <label data-tid={InputDataTids.root} {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(inputProps: React.InputHTMLAttributes<HTMLInputElement>, mask: string) {\n return (\n <InternalMaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconFocus(this.theme)]: this.state.focused,\n [styles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (\n this.state.needsPolyfillPlaceholder &&\n this.props.placeholder &&\n !this.isMaskVisible &&\n !this.props.value &&\n !this.props.defaultValue\n ) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InternalMaskedInput | InputElement | null) => {\n if (element instanceof InternalMaskedInput || (element && 'input' in element)) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (needsPolyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.needsPolyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ needsPolyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private resetFocus = () => this.setState({ focused: false });\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(event);\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
|
|
@@ -188,6 +188,7 @@ export declare class Input extends React.Component<InputProps, InputState> {
|
|
|
188
188
|
private handleKeyPress;
|
|
189
189
|
private handleMaskedValueChange;
|
|
190
190
|
private handleUnexpectedInput;
|
|
191
|
+
private resetFocus;
|
|
191
192
|
private handleBlur;
|
|
192
193
|
private renderPrefix;
|
|
193
194
|
private renderSuffix;
|
|
@@ -19,6 +19,7 @@ import { fixFirefoxModifiedClickOnLabel } from "../../../lib/events/fixFirefoxMo
|
|
|
19
19
|
import { isEdge, isIE11 } from "../../../lib/client";
|
|
20
20
|
import { RadioGroupContext } from "../../RadioGroup/RadioGroupContext";
|
|
21
21
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
22
|
+
import { FocusControlWrapper } from "../../../internal/FocusControlWrapper";
|
|
22
23
|
import { styles, globalClasses } from "../Radio.styles";
|
|
23
24
|
/**
|
|
24
25
|
* @deprecated use SizeProp
|
|
@@ -108,7 +109,9 @@ var Radio = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$C
|
|
|
108
109
|
|
|
109
110
|
return /*#__PURE__*/React.createElement("label", _extends({
|
|
110
111
|
"data-tid": RadioDataTids.root
|
|
111
|
-
}, labelProps), /*#__PURE__*/React.createElement(
|
|
112
|
+
}, labelProps), /*#__PURE__*/React.createElement(FocusControlWrapper, {
|
|
113
|
+
onBlurWhenDisabled: _this.resetFocus
|
|
114
|
+
}, /*#__PURE__*/React.createElement("input", inputProps)), /*#__PURE__*/React.createElement("span", radioProps, /*#__PURE__*/React.createElement("span", {
|
|
112
115
|
className: styles.placeholder()
|
|
113
116
|
})), _this.props.children && _this.renderCaption());
|
|
114
117
|
};
|
|
@@ -157,14 +160,18 @@ var Radio = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$C
|
|
|
157
160
|
}
|
|
158
161
|
};
|
|
159
162
|
|
|
160
|
-
_this.
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
_this.setState({
|
|
163
|
+
_this.resetFocus = function () {
|
|
164
|
+
return _this.setState({
|
|
164
165
|
focusedByKeyboard: false
|
|
165
166
|
});
|
|
166
167
|
};
|
|
167
168
|
|
|
169
|
+
_this.handleBlur = function (e) {
|
|
170
|
+
_this.resetFocus();
|
|
171
|
+
|
|
172
|
+
_this.props.onBlur == null ? void 0 : _this.props.onBlur(e);
|
|
173
|
+
};
|
|
174
|
+
|
|
168
175
|
return _this;
|
|
169
176
|
}
|
|
170
177
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Radio.tsx"],"names":["React","globalObject","ThemeContext","CommonWrapper","cx","keyListener","rootNode","fixFirefoxModifiedClickOnLabel","isEdge","isIE11","RadioGroupContext","createPropsGetter","styles","globalClasses","RadioDataTids","root","Radio","state","focusedByKeyboard","getProps","defaultProps","context","inputEl","createRef","renderMain","props","disabled","warning","error","size","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","circle","theme","getCircleSizeClassName","checked","getCheckedSizeClassName","focus","checkedDisabled","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","getRootSizeClassName","rootChecked","rootIE11","handleMouseOver","handleMouseEnter","handleMouseLeave","onClick","_isInRadioGroup","activeItem","name","suppressHydrationWarning","placeholder","children","renderCaption","Boolean","e","onSelect","requestAnimationFrame","isArrowPressed","isTabPressed","setState","rootLarge","rootMedium","rootSmall","circleLarge","circleMedium","circleSmall","checkedLarge","checkedMedium","checkedSmall","render","setRootNode","current","blur","captionClassNames","caption","captionDisabled","captionIE11","Component","__KONTUR_REACT_UI__","displayName","contextType"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { RadioGroupContext, RadioGroupContextType } from '../RadioGroup/RadioGroupContext';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, globalClasses } from './Radio.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type RadioSize = SizeProp;\n\nexport interface RadioProps<T>\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * Состояние фокуса.\n */\n focused?: boolean;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: T) => void;\n /**\n * HTML-событие `onmouseenter`\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `onmouseover`\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-атрибут `value`.\n */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioProps<any>, 'focused' | 'size'>>;\n\n/**\n * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.\n */\n@rootNode\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n public static displayName = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps: DefaultProps = {\n focused: false,\n size: 'small',\n };\n\n private getProps = createPropsGetter(Radio.defaultProps);\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n\n private inputEl = React.createRef<HTMLInputElement>();\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n private getRootSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getCircleSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.circleLarge(this.theme);\n case 'medium':\n return styles.circleMedium(this.theme);\n case 'small':\n default:\n return styles.circleSmall(this.theme);\n }\n }\n\n private getCheckedSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.checkedLarge(this.theme);\n case 'medium':\n return styles.checkedMedium(this.theme);\n case 'small':\n default:\n return styles.checkedSmall(this.theme);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n size,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: cx({\n [styles.circle(this.theme)]: true,\n [this.getCircleSizeClassName()]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [this.getCheckedSizeClassName()]: this.props.checked,\n [styles.focus(this.theme)]: this.getProps().focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getRootSizeClassName(), {\n [styles.rootChecked(this.theme)]: this.props.checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = cx(styles.root(this.theme), this.getRootSizeClassName(), {\n [styles.rootChecked(this.theme)]: checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n });\n radioProps.className = cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [this.getCheckedSizeClassName()]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <input {...inputProps} />\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderCaption()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const captionClassNames = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n [styles.captionIE11()]: isIE11 || isEdge,\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Radio.tsx"],"names":["React","globalObject","ThemeContext","CommonWrapper","cx","keyListener","rootNode","fixFirefoxModifiedClickOnLabel","isEdge","isIE11","RadioGroupContext","createPropsGetter","FocusControlWrapper","styles","globalClasses","RadioDataTids","root","Radio","state","focusedByKeyboard","getProps","defaultProps","context","inputEl","createRef","renderMain","props","disabled","warning","error","size","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","circle","theme","getCircleSizeClassName","checked","getCheckedSizeClassName","focus","checkedDisabled","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","getRootSizeClassName","rootChecked","rootIE11","handleMouseOver","handleMouseEnter","handleMouseLeave","onClick","_isInRadioGroup","activeItem","name","suppressHydrationWarning","resetFocus","placeholder","children","renderCaption","Boolean","e","onSelect","requestAnimationFrame","isArrowPressed","isTabPressed","setState","rootLarge","rootMedium","rootSmall","circleLarge","circleMedium","circleSmall","checkedLarge","checkedMedium","checkedSmall","render","setRootNode","current","blur","captionClassNames","caption","captionDisabled","captionIE11","Component","__KONTUR_REACT_UI__","displayName","contextType"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { RadioGroupContext, RadioGroupContextType } from '../RadioGroup/RadioGroupContext';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { styles, globalClasses } from './Radio.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type RadioSize = SizeProp;\n\nexport interface RadioProps<T>\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * Состояние фокуса.\n */\n focused?: boolean;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: T) => void;\n /**\n * HTML-событие `onmouseenter`\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `onmouseover`\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-атрибут `value`.\n */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioProps<any>, 'focused' | 'size'>>;\n\n/**\n * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.\n */\n@rootNode\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n public static displayName = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps: DefaultProps = {\n focused: false,\n size: 'small',\n };\n\n private getProps = createPropsGetter(Radio.defaultProps);\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n\n private inputEl = React.createRef<HTMLInputElement>();\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n private getRootSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getCircleSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.circleLarge(this.theme);\n case 'medium':\n return styles.circleMedium(this.theme);\n case 'small':\n default:\n return styles.circleSmall(this.theme);\n }\n }\n\n private getCheckedSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.checkedLarge(this.theme);\n case 'medium':\n return styles.checkedMedium(this.theme);\n case 'small':\n default:\n return styles.checkedSmall(this.theme);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n size,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: cx({\n [styles.circle(this.theme)]: true,\n [this.getCircleSizeClassName()]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [this.getCheckedSizeClassName()]: this.props.checked,\n [styles.focus(this.theme)]: this.getProps().focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getRootSizeClassName(), {\n [styles.rootChecked(this.theme)]: this.props.checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = cx(styles.root(this.theme), this.getRootSizeClassName(), {\n [styles.rootChecked(this.theme)]: checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n });\n radioProps.className = cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [this.getCheckedSizeClassName()]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <input {...inputProps} />\n </FocusControlWrapper>\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderCaption()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const captionClassNames = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n [styles.captionIE11()]: isIE11 || isEdge,\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private resetFocus = () => this.setState({ focusedByKeyboard: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(e);\n };\n}\n"]}
|
|
@@ -14,6 +14,7 @@ import { rootNode } from "../../../lib/rootNode";
|
|
|
14
14
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
15
15
|
import { isTestEnv } from "../../../lib/currentEnvironment";
|
|
16
16
|
import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
|
|
17
|
+
import { FocusControlWrapper } from "../../../internal/FocusControlWrapper";
|
|
17
18
|
import { styles, globalClasses } from "../Toggle.styles";
|
|
18
19
|
/**
|
|
19
20
|
* @deprecated use SizeProp
|
|
@@ -77,16 +78,18 @@ var Toggle = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
|
|
|
77
78
|
}
|
|
78
79
|
};
|
|
79
80
|
|
|
80
|
-
_this.
|
|
81
|
-
|
|
82
|
-
_this.props.onBlur(event);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
_this.setState({
|
|
81
|
+
_this.resetFocus = function () {
|
|
82
|
+
return _this.setState({
|
|
86
83
|
focusByTab: false
|
|
87
84
|
});
|
|
88
85
|
};
|
|
89
86
|
|
|
87
|
+
_this.handleBlur = function (event) {
|
|
88
|
+
_this.resetFocus();
|
|
89
|
+
|
|
90
|
+
_this.props.onBlur == null ? void 0 : _this.props.onBlur(event);
|
|
91
|
+
};
|
|
92
|
+
|
|
90
93
|
_this.state = {
|
|
91
94
|
focusByTab: false,
|
|
92
95
|
checked: props.defaultChecked
|
|
@@ -257,6 +260,8 @@ var Toggle = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
|
|
|
257
260
|
className: labelClassNames
|
|
258
261
|
}, /*#__PURE__*/React.createElement("div", {
|
|
259
262
|
className: cx(this.getButtonSizeClassName(), (_cx4 = {}, _cx4[styles.button(this.theme)] = true, _cx4[styles.buttonRight()] = captionPosition === 'left', _cx4[styles.isWarning(this.theme)] = !!warning, _cx4[styles.isError(this.theme)] = !!error, _cx4[styles.focused(this.theme)] = !disabled && !!this.state.focusByTab, _cx4))
|
|
263
|
+
}, /*#__PURE__*/React.createElement(FocusControlWrapper, {
|
|
264
|
+
onBlurWhenDisabled: this.resetFocus
|
|
260
265
|
}, /*#__PURE__*/React.createElement("input", {
|
|
261
266
|
type: "checkbox",
|
|
262
267
|
checked: checked,
|
|
@@ -270,7 +275,7 @@ var Toggle = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
|
|
|
270
275
|
role: "switch",
|
|
271
276
|
"aria-label": ariaLabel,
|
|
272
277
|
"aria-describedby": ariaDescribedby
|
|
273
|
-
}), /*#__PURE__*/React.createElement("div", {
|
|
278
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
274
279
|
className: containerClassNames,
|
|
275
280
|
style: checked && color && !disabled ? {
|
|
276
281
|
backgroundColor: color,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Toggle.tsx"],"names":["React","PropTypes","warning","keyListener","ThemeContext","CommonWrapper","cx","rootNode","createPropsGetter","isTestEnv","isTheme2022","styles","globalClasses","colorWarningShown","ToggleDataTids","root","Toggle","props","getProps","defaultProps","input","focus","isTabPressed","inputRef","element","handleChange","event","onValueChange","target","checked","isUncontrolled","setState","onChange","handleFocus","onFocus","focusByTab","handleBlur","onBlur","state","defaultChecked","componentDidMount","autoFocus","render","theme","renderMain","getContainerSizeClassName","size","containerLarge","containerMedium","containerSmall","getHandleSizeClassName","handleLarge","handleMedium","handleSmall","getButtonSizeClassName","buttonLarge","buttonMedium","buttonSmall","getRootSizeClassName","rootLarge","rootMedium","rootSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","getActiveHandleSizeClassName","activeHandleLarge","activeHandleMedium","activeHandleSmall","getCaptionSizeClassName","captionLarge","captionMedium","captionSmall","children","error","color","id","ariaDescribedby","ariaLabel","loading","captionPosition","disableAnimations","disabled","containerClassNames","container","containerDisabled","containerLoading","labelClassNames","rootLeft","disableAnimation","caption","captionClass","captionLeft","disabledCaption","setRootNode","button","buttonRight","isWarning","isError","focused","input2022","backgroundColor","boxShadow","undefined","activeBackground","background","activeBackgroundLoading","disabledBackground","handle","handleDisabled","Component","__KONTUR_REACT_UI__","displayName","propTypes","bool","func"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { keyListener } from '../../lib/events/keyListener';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, globalClasses } from './Toggle.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ToggleSize = SizeProp;\n\nlet colorWarningShown = false;\n\nexport interface ToggleProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, CommonProps {\n children?: React.ReactNode;\n /**\n * Положение `children` относительно переключателя.\n * @default 'right'\n */\n captionPosition?: 'left' | 'right';\n /**\n * Состояние `тогла`, если `true` - `тогл` будет включён, иначе выключен.\n * @default false\n */\n checked?: boolean;\n /**\n * Делает `тогл` включенным по умолчанию.\n */\n defaultChecked?: boolean;\n /**\n * Отключает `тогл`.\n */\n disabled?: boolean;\n /**\n * Событие вызывающееся, когда значение `тогла` меняется, передаёт текущее значение тогла в переданную функцию.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * Событие вызывающееся при клике на `тогл`.\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n /**\n * Состояние валидации при предупреждении.\n * @default false\n */\n warning?: boolean;\n /**\n * Состояние валидации при ошибке.\n * @default false\n */\n error?: boolean;\n /**\n * Добавляет стили для состояния `loading` и отключает `тогл`.\n */\n loading?: boolean;\n /**\n * Если true, выставляет фокус на `тогле` после загрузки страницы.\n */\n autoFocus?: boolean;\n /** Размер */\n size?: SizeProp;\n /**\n * Событие вызывающееся, когда `тогл` получает фокус.\n */\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * Событие вызывающееся, когда `тогл` теряет фокус.\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * @deprecated используйте переменную темы `toggleBgChecked` вместо этого пропа.\n */\n color?: React.CSSProperties['color'];\n /**\n * HTML-атрибут `id` для передачи во внутренний `<input />`.\n */\n id?: string;\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\nexport interface ToggleState {\n checked?: boolean;\n focusByTab?: boolean;\n}\n\nexport const ToggleDataTids = {\n root: 'Toggle__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<ToggleProps, 'disabled' | 'loading' | 'captionPosition' | 'disableAnimations' | 'size'>\n>;\n\n/**\n * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.\n */\n@rootNode\nexport class Toggle extends React.Component<ToggleProps, ToggleState> {\n public static __KONTUR_REACT_UI__ = 'Toggle';\n public static displayName = 'Toggle';\n\n public static propTypes = {\n checked: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n loading: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n color: (props: ToggleProps) => {\n if (props.color && !colorWarningShown) {\n warning(false, `[Toggle]: prop 'color' is deprecated. Please, use theme variable 'toggleBgChecked' instead. `);\n colorWarningShown = true;\n }\n },\n };\n\n public static defaultProps: DefaultProps = {\n disabled: false,\n loading: false,\n captionPosition: 'right',\n disableAnimations: isTestEnv,\n size: 'small',\n };\n\n private getProps = createPropsGetter(Toggle.defaultProps);\n\n private theme!: Theme;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: ToggleProps) {\n super(props);\n\n this.state = {\n focusByTab: false,\n checked: props.defaultChecked,\n };\n }\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n keyListener.isTabPressed = true;\n this.input.focus();\n }\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getContainerSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.containerLarge(this.theme);\n case 'medium':\n return styles.containerMedium(this.theme);\n case 'small':\n default:\n return styles.containerSmall(this.theme);\n }\n }\n\n private getHandleSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.handleLarge(this.theme);\n case 'medium':\n return styles.handleMedium(this.theme);\n case 'small':\n default:\n return styles.handleSmall(this.theme);\n }\n }\n\n private getButtonSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.buttonLarge(this.theme);\n case 'medium':\n return styles.buttonMedium(this.theme);\n case 'small':\n default:\n return styles.buttonSmall(this.theme);\n }\n }\n\n private getRootSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private getActiveHandleSizeClassName() {\n if (isTheme2022(this.theme)) {\n return '';\n }\n switch (this.getProps().size) {\n case 'large':\n return styles.activeHandleLarge(this.theme);\n case 'medium':\n return styles.activeHandleMedium(this.theme);\n case 'small':\n default:\n return styles.activeHandleSmall(this.theme);\n }\n }\n\n private getCaptionSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.captionLarge(this.theme);\n case 'medium':\n return styles.captionMedium(this.theme);\n case 'small':\n default:\n return styles.captionSmall(this.theme);\n }\n }\n\n private renderMain() {\n const {\n children,\n warning,\n error,\n color,\n id,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n const { loading, captionPosition, disableAnimations } = this.getProps();\n const disabled = this.getProps().disabled || loading;\n const checked = this.isUncontrolled() ? this.state.checked : this.props.checked;\n\n const containerClassNames = cx(this.getContainerSizeClassName(), {\n [styles.container(this.theme)]: true,\n [styles.containerDisabled(this.theme)]: !!disabled,\n [globalClasses.container]: true,\n [globalClasses.containerDisabled]: !!disabled,\n [globalClasses.containerLoading]: loading,\n });\n\n const labelClassNames = cx(this.getRootSizeClassName(), this.getActiveHandleSizeClassName(), {\n [styles.root(this.theme)]: true,\n [styles.rootLeft()]: captionPosition === 'left',\n [styles.disabled()]: !!disabled,\n [globalClasses.disabled]: !!disabled,\n [styles.disableAnimation()]: disableAnimations,\n });\n\n let caption = null;\n if (children) {\n const captionClass = cx(this.getCaptionSizeClassName(), {\n [styles.caption(this.theme)]: true,\n [styles.captionLeft(this.theme)]: captionPosition === 'left',\n [styles.disabledCaption(this.theme)]: !!disabled,\n });\n caption = <span className={captionClass}>{children}</span>;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <label data-tid={ToggleDataTids.root} className={labelClassNames}>\n <div\n className={cx(this.getButtonSizeClassName(), {\n [styles.button(this.theme)]: true,\n [styles.buttonRight()]: captionPosition === 'left',\n [styles.isWarning(this.theme)]: !!warning,\n [styles.isError(this.theme)]: !!error,\n [styles.focused(this.theme)]: !disabled && !!this.state.focusByTab,\n })}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={this.handleChange}\n className={cx(this.getInputSizeClassName(), isTheme2022(this.theme) && styles.input2022(this.theme), {\n [styles.input(this.theme)]: true,\n })}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.inputRef}\n disabled={disabled}\n id={id}\n role=\"switch\"\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n <div\n className={containerClassNames}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n >\n {!isTheme2022(this.theme) && (\n <div\n className={cx(styles.activeBackground(), globalClasses.background, {\n [styles.activeBackgroundLoading(this.theme)]: loading,\n [styles.disabledBackground(this.theme)]: disabled,\n })}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n />\n )}\n </div>\n <div\n className={cx(this.getHandleSizeClassName(), globalClasses.handle, {\n [styles.handle(this.theme)]: true,\n [styles.handleDisabled(this.theme)]: disabled,\n })}\n />\n </div>\n {caption}\n </label>\n </CommonWrapper>\n );\n }\n\n private inputRef = (element: HTMLInputElement) => {\n this.input = element;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.checked);\n }\n\n if (this.isUncontrolled()) {\n this.setState({\n checked: event.target.checked,\n });\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n\n if (keyListener.isTabPressed) {\n this.setState({ focusByTab: true });\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n this.setState({\n focusByTab: false,\n });\n };\n\n private isUncontrolled() {\n return this.props.checked === undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Toggle.tsx"],"names":["React","PropTypes","warning","keyListener","ThemeContext","CommonWrapper","cx","rootNode","createPropsGetter","isTestEnv","isTheme2022","FocusControlWrapper","styles","globalClasses","colorWarningShown","ToggleDataTids","root","Toggle","props","getProps","defaultProps","input","focus","isTabPressed","inputRef","element","handleChange","event","onValueChange","target","checked","isUncontrolled","setState","onChange","handleFocus","onFocus","focusByTab","resetFocus","handleBlur","onBlur","state","defaultChecked","componentDidMount","autoFocus","render","theme","renderMain","getContainerSizeClassName","size","containerLarge","containerMedium","containerSmall","getHandleSizeClassName","handleLarge","handleMedium","handleSmall","getButtonSizeClassName","buttonLarge","buttonMedium","buttonSmall","getRootSizeClassName","rootLarge","rootMedium","rootSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","getActiveHandleSizeClassName","activeHandleLarge","activeHandleMedium","activeHandleSmall","getCaptionSizeClassName","captionLarge","captionMedium","captionSmall","children","error","color","id","ariaDescribedby","ariaLabel","loading","captionPosition","disableAnimations","disabled","containerClassNames","container","containerDisabled","containerLoading","labelClassNames","rootLeft","disableAnimation","caption","captionClass","captionLeft","disabledCaption","setRootNode","button","buttonRight","isWarning","isError","focused","input2022","backgroundColor","boxShadow","undefined","activeBackground","background","activeBackgroundLoading","disabledBackground","handle","handleDisabled","Component","__KONTUR_REACT_UI__","displayName","propTypes","bool","func"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\n\nimport { keyListener } from '../../lib/events/keyListener';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { styles, globalClasses } from './Toggle.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ToggleSize = SizeProp;\n\nlet colorWarningShown = false;\n\nexport interface ToggleProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, CommonProps {\n children?: React.ReactNode;\n /**\n * Положение `children` относительно переключателя.\n * @default 'right'\n */\n captionPosition?: 'left' | 'right';\n /**\n * Состояние `тогла`, если `true` - `тогл` будет включён, иначе выключен.\n * @default false\n */\n checked?: boolean;\n /**\n * Делает `тогл` включенным по умолчанию.\n */\n defaultChecked?: boolean;\n /**\n * Отключает `тогл`.\n */\n disabled?: boolean;\n /**\n * Событие вызывающееся, когда значение `тогла` меняется, передаёт текущее значение тогла в переданную функцию.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * Событие вызывающееся при клике на `тогл`.\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n /**\n * Состояние валидации при предупреждении.\n * @default false\n */\n warning?: boolean;\n /**\n * Состояние валидации при ошибке.\n * @default false\n */\n error?: boolean;\n /**\n * Добавляет стили для состояния `loading` и отключает `тогл`.\n */\n loading?: boolean;\n /**\n * Если true, выставляет фокус на `тогле` после загрузки страницы.\n */\n autoFocus?: boolean;\n /** Размер */\n size?: SizeProp;\n /**\n * Событие вызывающееся, когда `тогл` получает фокус.\n */\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * Событие вызывающееся, когда `тогл` теряет фокус.\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n /**\n * @deprecated используйте переменную темы `toggleBgChecked` вместо этого пропа.\n */\n color?: React.CSSProperties['color'];\n /**\n * HTML-атрибут `id` для передачи во внутренний `<input />`.\n */\n id?: string;\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\nexport interface ToggleState {\n checked?: boolean;\n focusByTab?: boolean;\n}\n\nexport const ToggleDataTids = {\n root: 'Toggle__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<ToggleProps, 'disabled' | 'loading' | 'captionPosition' | 'disableAnimations' | 'size'>\n>;\n\n/**\n * _Примечание:_ под тоглом понимается полный компонент т.е. надпись + переключатель, а не просто переключатель.\n */\n@rootNode\nexport class Toggle extends React.Component<ToggleProps, ToggleState> {\n public static __KONTUR_REACT_UI__ = 'Toggle';\n public static displayName = 'Toggle';\n\n public static propTypes = {\n checked: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n loading: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n color: (props: ToggleProps) => {\n if (props.color && !colorWarningShown) {\n warning(false, `[Toggle]: prop 'color' is deprecated. Please, use theme variable 'toggleBgChecked' instead. `);\n colorWarningShown = true;\n }\n },\n };\n\n public static defaultProps: DefaultProps = {\n disabled: false,\n loading: false,\n captionPosition: 'right',\n disableAnimations: isTestEnv,\n size: 'small',\n };\n\n private getProps = createPropsGetter(Toggle.defaultProps);\n\n private theme!: Theme;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: ToggleProps) {\n super(props);\n\n this.state = {\n focusByTab: false,\n checked: props.defaultChecked,\n };\n }\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n keyListener.isTabPressed = true;\n this.input.focus();\n }\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getContainerSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.containerLarge(this.theme);\n case 'medium':\n return styles.containerMedium(this.theme);\n case 'small':\n default:\n return styles.containerSmall(this.theme);\n }\n }\n\n private getHandleSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.handleLarge(this.theme);\n case 'medium':\n return styles.handleMedium(this.theme);\n case 'small':\n default:\n return styles.handleSmall(this.theme);\n }\n }\n\n private getButtonSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.buttonLarge(this.theme);\n case 'medium':\n return styles.buttonMedium(this.theme);\n case 'small':\n default:\n return styles.buttonSmall(this.theme);\n }\n }\n\n private getRootSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private getActiveHandleSizeClassName() {\n if (isTheme2022(this.theme)) {\n return '';\n }\n switch (this.getProps().size) {\n case 'large':\n return styles.activeHandleLarge(this.theme);\n case 'medium':\n return styles.activeHandleMedium(this.theme);\n case 'small':\n default:\n return styles.activeHandleSmall(this.theme);\n }\n }\n\n private getCaptionSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.captionLarge(this.theme);\n case 'medium':\n return styles.captionMedium(this.theme);\n case 'small':\n default:\n return styles.captionSmall(this.theme);\n }\n }\n\n private renderMain() {\n const {\n children,\n warning,\n error,\n color,\n id,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n const { loading, captionPosition, disableAnimations } = this.getProps();\n const disabled = this.getProps().disabled || loading;\n const checked = this.isUncontrolled() ? this.state.checked : this.props.checked;\n\n const containerClassNames = cx(this.getContainerSizeClassName(), {\n [styles.container(this.theme)]: true,\n [styles.containerDisabled(this.theme)]: !!disabled,\n [globalClasses.container]: true,\n [globalClasses.containerDisabled]: !!disabled,\n [globalClasses.containerLoading]: loading,\n });\n\n const labelClassNames = cx(this.getRootSizeClassName(), this.getActiveHandleSizeClassName(), {\n [styles.root(this.theme)]: true,\n [styles.rootLeft()]: captionPosition === 'left',\n [styles.disabled()]: !!disabled,\n [globalClasses.disabled]: !!disabled,\n [styles.disableAnimation()]: disableAnimations,\n });\n\n let caption = null;\n if (children) {\n const captionClass = cx(this.getCaptionSizeClassName(), {\n [styles.caption(this.theme)]: true,\n [styles.captionLeft(this.theme)]: captionPosition === 'left',\n [styles.disabledCaption(this.theme)]: !!disabled,\n });\n caption = <span className={captionClass}>{children}</span>;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <label data-tid={ToggleDataTids.root} className={labelClassNames}>\n <div\n className={cx(this.getButtonSizeClassName(), {\n [styles.button(this.theme)]: true,\n [styles.buttonRight()]: captionPosition === 'left',\n [styles.isWarning(this.theme)]: !!warning,\n [styles.isError(this.theme)]: !!error,\n [styles.focused(this.theme)]: !disabled && !!this.state.focusByTab,\n })}\n >\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={this.handleChange}\n className={cx(this.getInputSizeClassName(), isTheme2022(this.theme) && styles.input2022(this.theme), {\n [styles.input(this.theme)]: true,\n })}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.inputRef}\n disabled={disabled}\n id={id}\n role=\"switch\"\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </FocusControlWrapper>\n <div\n className={containerClassNames}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n >\n {!isTheme2022(this.theme) && (\n <div\n className={cx(styles.activeBackground(), globalClasses.background, {\n [styles.activeBackgroundLoading(this.theme)]: loading,\n [styles.disabledBackground(this.theme)]: disabled,\n })}\n style={\n checked && color && !disabled\n ? {\n backgroundColor: color,\n boxShadow: `inset 0 0 0 1px ${color}`,\n }\n : undefined\n }\n />\n )}\n </div>\n <div\n className={cx(this.getHandleSizeClassName(), globalClasses.handle, {\n [styles.handle(this.theme)]: true,\n [styles.handleDisabled(this.theme)]: disabled,\n })}\n />\n </div>\n {caption}\n </label>\n </CommonWrapper>\n );\n }\n\n private inputRef = (element: HTMLInputElement) => {\n this.input = element;\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.checked);\n }\n\n if (this.isUncontrolled()) {\n this.setState({\n checked: event.target.checked,\n });\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n\n if (keyListener.isTabPressed) {\n this.setState({ focusByTab: true });\n }\n };\n\n private resetFocus = () => this.setState({ focusByTab: false });\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(event);\n };\n\n private isUncontrolled() {\n return this.props.checked === undefined;\n }\n}\n"]}
|