@skbkontur/react-ui 4.22.1 → 4.22.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/cjs/components/Button/Button.d.ts +1 -0
- package/cjs/components/Button/Button.js +2 -1
- package/cjs/components/Button/Button.js.map +1 -1
- package/components/Button/Button/Button.js +4 -1
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.22.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.22.1...@skbkontur/react-ui@4.22.2) (2024-04-19)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @skbkontur/react-ui
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [4.22.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.22.0...@skbkontur/react-ui@4.22.1) (2024-04-16)
|
|
7
15
|
|
|
8
16
|
|
|
@@ -195,6 +195,7 @@ var _LoadingButtonIcon = require("./LoadingButtonIcon");var _excluded = ["onClic
|
|
|
195
195
|
|
|
196
196
|
|
|
197
197
|
var ButtonDataTids = {
|
|
198
|
+
rootElement: 'Button__rootElement',
|
|
198
199
|
root: 'Button__root',
|
|
199
200
|
spinner: 'Button__spinner' };exports.ButtonDataTids = ButtonDataTids;var
|
|
200
201
|
|
|
@@ -586,4 +587,4 @@ Button = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
|
|
|
586
587
|
// on this button if somewhere on the page user presses Enter while some
|
|
587
588
|
// input is focused. So we set type to 'button' by default.
|
|
588
589
|
type: type, role: role, 'aria-describedby': ariaDescribedby, 'aria-haspopup': ariaHasPopup, 'aria-controls': ariaControls, 'aria-label': ariaLabel, 'aria-checked': ariaChecked, 'aria-expanded': ariaExpanded, className: rootClassName, style: (0, _extends2.default)({ textAlign: align }, corners), disabled: disabled || loading, onClick: onClick, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: onKeyDown, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseOver: onMouseOver, onMouseDown: onMouseDown, onMouseUp: onMouseUp, onClickCapture: onClickCapture, tabIndex: disableFocus ? -1 : 0, title: this.props.title };var wrapProps = { className: (0, _Emotion.cx)(_Button.globalClasses.root, (_cx2 = {}, _cx2[_Button.styles.wrap(this.theme)] = true, _cx2[wrapClassNameWithArrow] = true, _cx2[this.getSizeWrapClassName()] = true, _cx2)), style: { width: width } };var innerShadowNode = _isTheme2022 ? null : /*#__PURE__*/_react.default.createElement("div", { className: _Button.globalClasses.innerShadow });var outlineNode = null;var isDisabled2022 = _isTheme2022 && (disabled || loading);if ((!isFocused || isLink) && !isDisabled2022) {var _cx3;outlineNode = /*#__PURE__*/_react.default.createElement("div", { style: { zIndex: _isTheme2022 && isLink ? -1 : undefined }, className: (0, _Emotion.cx)(_Button.styles.outline(), (_cx3 = {}, _cx3[_Button.styles.outlineWarning(this.theme)] = warning, _cx3[_Button.styles.outlineError(this.theme)] = error, _cx3[_Button.styles.outlineLink()] = isLink, _cx3[_Button.styles.outlineLinkWarning(this.theme)] = isLink && warning, _cx3[_Button.styles.outlineLinkError(this.theme)] = isLink && error, _cx3)) });}var iconProps = { use: use, size: this.getProps().size, hasChildren: !!children, loading: loading || false };var leftIconNode = icon && /*#__PURE__*/_react.default.createElement(_ButtonIcon.ButtonIcon, (0, _extends2.default)({}, iconProps, { position: "left", icon: icon }));var rightIconNode = rightIcon && /*#__PURE__*/_react.default.createElement(_ButtonIcon.ButtonIcon, (0, _extends2.default)({}, iconProps, { hasBothIcons: !!icon && !!rightIcon, position: "right", icon: rightIcon })); // Force disable all props and features, that cannot be use with Link
|
|
589
|
-
if (isLink) {var _cx4;rootProps.className = (0, _Emotion.cx)((_cx4 = {}, _cx4[_Button.styles.root(this.theme)] = true, _cx4[sizeClass] = true, _cx4[_Button.styles.link(this.theme)] = true, _cx4[_Button.styles.linkLineHeight()] = !_client.isSafari || _client.isSafari && !_isTheme2022, _cx4[_Button.styles.linkLineHeightSafariFallback()] = _client.isSafari && _isTheme2022, _cx4[_Button.styles.linkFocus(this.theme)] = isFocused, _cx4[_Button.styles.linkDisabled(this.theme)] = disabled || loading, _cx4));Object.assign(wrapProps, { className: (0, _Emotion.cx)(_Button.styles.wrap(this.theme), _Button.styles.wrapLink()), style: { width: wrapProps.style.width } });rootProps.style.textAlign = undefined;}var hasLoadingNode = loading && !icon && !rightIcon;var loadingNode = hasLoadingNode && /*#__PURE__*/_react.default.createElement(_LoadingButtonIcon.LoadingButtonIcon, { size: size });var captionNode = /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.styles.caption(), _Button.globalClasses.caption, (_cx5 = {}, _cx5[_Button.styles.captionTranslated()] = (active || checked) && !loading && !_isTheme2022, _cx5[_Button.styles.captionLink()] = isLink, _cx5[_Button.styles.captionDisabled()] = !checked && disabled, _cx5)) }, loadingNode, leftIconNode, /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)(_Button.globalClasses.text, (_cx6 = {}, _cx6[_Button.styles.visibilityHidden()] = hasLoadingNode, _cx6)) }, children), rightIconNode);if (_isTheme2022 && isLink && !loading) {captionNode = /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: (0, _getInnerLinkTheme.getInnerLinkTheme)(this.theme) }, /*#__PURE__*/_react.default.createElement(_Link.Link, { focused: isFocused, disabled: disabled, icon: this.renderIcon2022(icon), rightIcon: this.renderIcon2022(rightIcon), as: this.renderLinkRootWithoutHandlers, tabIndex: -1 }, children));}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("span", wrapProps, /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({ "data-tid": ButtonDataTids.root, ref: this._ref }, rootProps), innerShadowNode, outlineNode, arrowNode, captionNode)));};_proto.renderIcon2022 = function renderIcon2022(icon) {if (icon && (0, _utils.isKonturIcon)(icon)) {var _icon$props$size;var sizes = (0, _ButtonIcon.getButtonIconSizes)(this.theme);return /*#__PURE__*/_react.default.cloneElement(icon, { size: (_icon$props$size = icon.props.size) != null ? _icon$props$size : sizes[this.getProps().size] });}return icon;};_proto.getSizeClassName = function getSizeClassName() {var _cx7, _cx8, _cx9;var _isTheme2022 = (0, _ThemeHelpers.isTheme2022)(this.theme);switch (this.getProps().size) {case 'large':return (0, _Emotion.cx)(_Button.styles.sizeLarge(this.theme), (_cx7 = {}, _cx7[_Button.styles.sizeLargeIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx7[_Button.styles.sizeLargeWithIcon(this.theme)] = !!this.props.icon, _cx7[_Button.styles.sizeLargeWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx7));case 'medium':return (0, _Emotion.cx)(_Button.styles.sizeMedium(this.theme), (_cx8 = {}, _cx8[_Button.styles.sizeMediumIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx8[_Button.styles.sizeMediumWithIcon(this.theme)] = !!this.props.icon, _cx8[_Button.styles.sizeMediumWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx8));case 'small':default:return (0, _Emotion.cx)(_Button.styles.sizeSmall(this.theme), (_cx9 = {}, _cx9[_Button.styles.sizeSmallIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx9[_Button.styles.sizeSmallWithIcon(this.theme)] = !!this.props.icon, _cx9[_Button.styles.sizeSmallWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx9));}};_proto.getSizeWrapClassName = function getSizeWrapClassName() {switch (this.getProps().size) {case 'large':return _Button.styles.wrapLarge(this.theme);case 'medium':return _Button.styles.wrapMedium(this.theme);case 'small':default:return _Button.styles.wrapSmall(this.theme);}};return Button;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Button', _class2.displayName = 'Button', _class2.__BUTTON__ = true, _class2.defaultProps = { use: 'default', size: 'small', type: 'button' }, _temp)) || _class;exports.Button = Button;var isButton = (0, _utils.isReactUIComponent)('Button');exports.isButton = isButton;
|
|
590
|
+
if (isLink) {var _cx4;rootProps.className = (0, _Emotion.cx)((_cx4 = {}, _cx4[_Button.styles.root(this.theme)] = true, _cx4[sizeClass] = true, _cx4[_Button.styles.link(this.theme)] = true, _cx4[_Button.styles.linkLineHeight()] = !_client.isSafari || _client.isSafari && !_isTheme2022, _cx4[_Button.styles.linkLineHeightSafariFallback()] = _client.isSafari && _isTheme2022, _cx4[_Button.styles.linkFocus(this.theme)] = isFocused, _cx4[_Button.styles.linkDisabled(this.theme)] = disabled || loading, _cx4));Object.assign(wrapProps, { className: (0, _Emotion.cx)(_Button.styles.wrap(this.theme), _Button.styles.wrapLink()), style: { width: wrapProps.style.width } });rootProps.style.textAlign = undefined;}var hasLoadingNode = loading && !icon && !rightIcon;var loadingNode = hasLoadingNode && /*#__PURE__*/_react.default.createElement(_LoadingButtonIcon.LoadingButtonIcon, { size: size });var captionNode = /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.styles.caption(), _Button.globalClasses.caption, (_cx5 = {}, _cx5[_Button.styles.captionTranslated()] = (active || checked) && !loading && !_isTheme2022, _cx5[_Button.styles.captionLink()] = isLink, _cx5[_Button.styles.captionDisabled()] = !checked && disabled, _cx5)) }, loadingNode, leftIconNode, /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)(_Button.globalClasses.text, (_cx6 = {}, _cx6[_Button.styles.visibilityHidden()] = hasLoadingNode, _cx6)) }, children), rightIconNode);if (_isTheme2022 && isLink && !loading) {captionNode = /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: (0, _getInnerLinkTheme.getInnerLinkTheme)(this.theme) }, /*#__PURE__*/_react.default.createElement(_Link.Link, { focused: isFocused, disabled: disabled, icon: this.renderIcon2022(icon), rightIcon: this.renderIcon2022(rightIcon), as: this.renderLinkRootWithoutHandlers, tabIndex: -1 }, children));}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, wrapProps, { "data-tid": ButtonDataTids.rootElement }), /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({ "data-tid": ButtonDataTids.root, ref: this._ref }, rootProps), innerShadowNode, outlineNode, arrowNode, captionNode)));};_proto.renderIcon2022 = function renderIcon2022(icon) {if (icon && (0, _utils.isKonturIcon)(icon)) {var _icon$props$size;var sizes = (0, _ButtonIcon.getButtonIconSizes)(this.theme);return /*#__PURE__*/_react.default.cloneElement(icon, { size: (_icon$props$size = icon.props.size) != null ? _icon$props$size : sizes[this.getProps().size] });}return icon;};_proto.getSizeClassName = function getSizeClassName() {var _cx7, _cx8, _cx9;var _isTheme2022 = (0, _ThemeHelpers.isTheme2022)(this.theme);switch (this.getProps().size) {case 'large':return (0, _Emotion.cx)(_Button.styles.sizeLarge(this.theme), (_cx7 = {}, _cx7[_Button.styles.sizeLargeIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx7[_Button.styles.sizeLargeWithIcon(this.theme)] = !!this.props.icon, _cx7[_Button.styles.sizeLargeWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx7));case 'medium':return (0, _Emotion.cx)(_Button.styles.sizeMedium(this.theme), (_cx8 = {}, _cx8[_Button.styles.sizeMediumIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx8[_Button.styles.sizeMediumWithIcon(this.theme)] = !!this.props.icon, _cx8[_Button.styles.sizeMediumWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx8));case 'small':default:return (0, _Emotion.cx)(_Button.styles.sizeSmall(this.theme), (_cx9 = {}, _cx9[_Button.styles.sizeSmallIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx9[_Button.styles.sizeSmallWithIcon(this.theme)] = !!this.props.icon, _cx9[_Button.styles.sizeSmallWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx9));}};_proto.getSizeWrapClassName = function getSizeWrapClassName() {switch (this.getProps().size) {case 'large':return _Button.styles.wrapLarge(this.theme);case 'medium':return _Button.styles.wrapMedium(this.theme);case 'small':default:return _Button.styles.wrapSmall(this.theme);}};return Button;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Button', _class2.displayName = 'Button', _class2.__BUTTON__ = true, _class2.defaultProps = { use: 'default', size: 'small', type: 'button' }, _temp)) || _class;exports.Button = Button;var isButton = (0, _utils.isReactUIComponent)('Button');exports.isButton = isButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Button.tsx"],"names":["ButtonDataTids","root","spinner","Button","rootNode","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","globalObject","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","ThemeFactory","create","renderMain","renderLinkRootWithoutHandlers","onClick","children","rest","corners","active","borderless","checked","error","warning","narrow","icon","rightIcon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onMouseDown","onMouseUp","onKeyDown","onClickCapture","width","ariaDescribedby","ariaHasPopup","ariaControls","ariaLabel","ariaChecked","ariaExpanded","role","use","type","size","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","isUseStateWithoutOutlineInDisabledState","includes","rootClassName","trueDisabled","cx","styles","noPadding","noRightPadding","disabledWithoutOutline","checkedDisabled","checkedDisabled2022","borderless2022","backlessDisabled2022","textDisabled2022","activeStyles","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","globalClasses","wrap","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconProps","hasChildren","leftIconNode","rightIconNode","link","linkLineHeight","isSafari","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","hasLoadingNode","loadingNode","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","renderIcon2022","setRootNode","sizes","React","cloneElement","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","displayName","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { HTMLProps } from '../../typings/html';\nimport { isKonturIcon, isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link, LinkProps } from '../Link';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon, ButtonIconProps, getButtonIconSizes } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\nimport { LoadingButtonIcon } from './LoadingButtonIcon';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ButtonSize = SizeProp;\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps\n extends CommonProps,\n Pick<\n AriaAttributes,\n 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'\n >,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement;\n\n /**\n * Иконка справа от текста кнопки.\n */\n rightIcon?: React.ReactElement;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n root: 'Button__root',\n spinner: 'Button__spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static displayName = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderLinkRootWithoutHandlers(props: LinkProps) {\n const { onClick, onFocus, onBlur, children, ...rest } = props;\n return <span {...rest}>{children}</span>;\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n rightIcon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onKeyDown,\n onClick,\n onClickCapture,\n width,\n children,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n role,\n } = this.props;\n const { use, type, size } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless'].includes(use);\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && styles.disabledWithoutOutline(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n borderless && styles.borderless2022(),\n use === 'backless' && !checked && styles.backlessDisabled2022(this.theme),\n use === 'text' && styles.textDisabled2022(),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless2022(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n });\n }\n\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type,\n role,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onClickCapture,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx(globalClasses.root, {\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconProps: Omit<ButtonIconProps, 'position'> = {\n use,\n size: this.getProps().size,\n hasChildren: !!children,\n loading: loading || false,\n };\n const leftIconNode = icon && <ButtonIcon {...iconProps} position=\"left\" icon={icon} />;\n const rightIconNode = rightIcon && (\n <ButtonIcon {...iconProps} hasBothIcons={!!icon && !!rightIcon} position=\"right\" icon={rightIcon} />\n );\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n const hasLoadingNode = loading && !icon && !rightIcon;\n const loadingNode = hasLoadingNode && <LoadingButtonIcon size={size} />;\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {leftIconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: hasLoadingNode,\n })}\n >\n {children}\n </span>\n {rightIconNode}\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link\n focused={isFocused}\n disabled={disabled}\n icon={this.renderIcon2022(icon)}\n rightIcon={this.renderIcon2022(rightIcon)}\n as={this.renderLinkRootWithoutHandlers}\n tabIndex={-1}\n >\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon && isKonturIcon(icon)) {\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: icon.props.size ?? sizes[this.getProps().size] });\n }\n\n return icon;\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
|
|
1
|
+
{"version":3,"sources":["Button.tsx"],"names":["ButtonDataTids","rootElement","root","spinner","Button","rootNode","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","globalObject","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","ThemeFactory","create","renderMain","renderLinkRootWithoutHandlers","onClick","children","rest","corners","active","borderless","checked","error","warning","narrow","icon","rightIcon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onMouseDown","onMouseUp","onKeyDown","onClickCapture","width","ariaDescribedby","ariaHasPopup","ariaControls","ariaLabel","ariaChecked","ariaExpanded","role","use","type","size","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","isUseStateWithoutOutlineInDisabledState","includes","rootClassName","trueDisabled","cx","styles","noPadding","noRightPadding","disabledWithoutOutline","checkedDisabled","checkedDisabled2022","borderless2022","backlessDisabled2022","textDisabled2022","activeStyles","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","globalClasses","wrap","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconProps","hasChildren","leftIconNode","rightIconNode","link","linkLineHeight","isSafari","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","hasLoadingNode","loadingNode","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","renderIcon2022","setRootNode","sizes","React","cloneElement","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","displayName","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { HTMLProps } from '../../typings/html';\nimport { isKonturIcon, isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link, LinkProps } from '../Link';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon, ButtonIconProps, getButtonIconSizes } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\nimport { LoadingButtonIcon } from './LoadingButtonIcon';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ButtonSize = SizeProp;\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps\n extends CommonProps,\n Pick<\n AriaAttributes,\n 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'\n >,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement;\n\n /**\n * Иконка справа от текста кнопки.\n */\n rightIcon?: React.ReactElement;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n rootElement: 'Button__rootElement',\n root: 'Button__root',\n spinner: 'Button__spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static displayName = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderLinkRootWithoutHandlers(props: LinkProps) {\n const { onClick, onFocus, onBlur, children, ...rest } = props;\n return <span {...rest}>{children}</span>;\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n rightIcon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onKeyDown,\n onClick,\n onClickCapture,\n width,\n children,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n role,\n } = this.props;\n const { use, type, size } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless'].includes(use);\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && styles.disabledWithoutOutline(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n borderless && styles.borderless2022(),\n use === 'backless' && !checked && styles.backlessDisabled2022(this.theme),\n use === 'text' && styles.textDisabled2022(),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless2022(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n });\n }\n\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type,\n role,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onClickCapture,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx(globalClasses.root, {\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconProps: Omit<ButtonIconProps, 'position'> = {\n use,\n size: this.getProps().size,\n hasChildren: !!children,\n loading: loading || false,\n };\n const leftIconNode = icon && <ButtonIcon {...iconProps} position=\"left\" icon={icon} />;\n const rightIconNode = rightIcon && (\n <ButtonIcon {...iconProps} hasBothIcons={!!icon && !!rightIcon} position=\"right\" icon={rightIcon} />\n );\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n const hasLoadingNode = loading && !icon && !rightIcon;\n const loadingNode = hasLoadingNode && <LoadingButtonIcon size={size} />;\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {leftIconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: hasLoadingNode,\n })}\n >\n {children}\n </span>\n {rightIconNode}\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link\n focused={isFocused}\n disabled={disabled}\n icon={this.renderIcon2022(icon)}\n rightIcon={this.renderIcon2022(rightIcon)}\n as={this.renderLinkRootWithoutHandlers}\n tabIndex={-1}\n >\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps} data-tid={ButtonDataTids.rootElement}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon && isKonturIcon(icon)) {\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: icon.props.size ?? sizes[this.getProps().size] });\n }\n\n return icon;\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
|
|
@@ -28,6 +28,7 @@ import { LoadingButtonIcon } from "../LoadingButtonIcon";
|
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
export var ButtonDataTids = {
|
|
31
|
+
rootElement: 'Button__rootElement',
|
|
31
32
|
root: 'Button__root',
|
|
32
33
|
spinner: 'Button__spinner'
|
|
33
34
|
};
|
|
@@ -314,7 +315,9 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
|
|
|
314
315
|
|
|
315
316
|
return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
|
|
316
317
|
rootNodeRef: this.setRootNode
|
|
317
|
-
}, this.props), /*#__PURE__*/React.createElement("span",
|
|
318
|
+
}, this.props), /*#__PURE__*/React.createElement("span", _extends({}, wrapProps, {
|
|
319
|
+
"data-tid": ButtonDataTids.rootElement
|
|
320
|
+
}), /*#__PURE__*/React.createElement("button", _extends({
|
|
318
321
|
"data-tid": ButtonDataTids.root,
|
|
319
322
|
ref: this._ref
|
|
320
323
|
}, rootProps), innerShadowNode, outlineNode, arrowNode, captionNode)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Button.tsx"],"names":["React","globalObject","isKonturIcon","isReactUIComponent","isIE11","isEdge","isSafari","keyListener","ThemeContext","CommonWrapper","cx","rootNode","ThemeFactory","createPropsGetter","isTheme2022","Link","styles","activeStyles","globalClasses","ButtonIcon","getButtonIconSizes","useButtonArrow","getInnerLinkTheme","LoadingButtonIcon","ButtonDataTids","root","spinner","Button","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","create","renderMain","renderLinkRootWithoutHandlers","onClick","children","rest","corners","active","borderless","checked","error","warning","narrow","icon","rightIcon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onMouseDown","onMouseUp","onKeyDown","onClickCapture","width","ariaDescribedby","ariaHasPopup","ariaControls","ariaLabel","ariaChecked","ariaExpanded","role","use","type","size","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","isUseStateWithoutOutlineInDisabledState","includes","rootClassName","trueDisabled","noPadding","noRightPadding","disabledWithoutOutline","checkedDisabled","checkedDisabled2022","borderless2022","backlessDisabled2022","textDisabled2022","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","wrap","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconProps","hasChildren","leftIconNode","rightIconNode","link","linkLineHeight","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","hasLoadingNode","loadingNode","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","renderIcon2022","setRootNode","sizes","cloneElement","sizeLarge","sizeLargeIE11","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","displayName","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { HTMLProps } from '../../typings/html';\nimport { isKonturIcon, isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link, LinkProps } from '../Link';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon, ButtonIconProps, getButtonIconSizes } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\nimport { LoadingButtonIcon } from './LoadingButtonIcon';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ButtonSize = SizeProp;\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps\n extends CommonProps,\n Pick<\n AriaAttributes,\n 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'\n >,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement;\n\n /**\n * Иконка справа от текста кнопки.\n */\n rightIcon?: React.ReactElement;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n root: 'Button__root',\n spinner: 'Button__spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static displayName = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderLinkRootWithoutHandlers(props: LinkProps) {\n const { onClick, onFocus, onBlur, children, ...rest } = props;\n return <span {...rest}>{children}</span>;\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n rightIcon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onKeyDown,\n onClick,\n onClickCapture,\n width,\n children,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n role,\n } = this.props;\n const { use, type, size } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless'].includes(use);\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && styles.disabledWithoutOutline(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n borderless && styles.borderless2022(),\n use === 'backless' && !checked && styles.backlessDisabled2022(this.theme),\n use === 'text' && styles.textDisabled2022(),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless2022(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n });\n }\n\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type,\n role,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onClickCapture,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx(globalClasses.root, {\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconProps: Omit<ButtonIconProps, 'position'> = {\n use,\n size: this.getProps().size,\n hasChildren: !!children,\n loading: loading || false,\n };\n const leftIconNode = icon && <ButtonIcon {...iconProps} position=\"left\" icon={icon} />;\n const rightIconNode = rightIcon && (\n <ButtonIcon {...iconProps} hasBothIcons={!!icon && !!rightIcon} position=\"right\" icon={rightIcon} />\n );\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n const hasLoadingNode = loading && !icon && !rightIcon;\n const loadingNode = hasLoadingNode && <LoadingButtonIcon size={size} />;\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {leftIconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: hasLoadingNode,\n })}\n >\n {children}\n </span>\n {rightIconNode}\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link\n focused={isFocused}\n disabled={disabled}\n icon={this.renderIcon2022(icon)}\n rightIcon={this.renderIcon2022(rightIcon)}\n as={this.renderLinkRootWithoutHandlers}\n tabIndex={-1}\n >\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon && isKonturIcon(icon)) {\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: icon.props.size ?? sizes[this.getProps().size] });\n }\n\n return icon;\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
|
|
1
|
+
{"version":3,"sources":["Button.tsx"],"names":["React","globalObject","isKonturIcon","isReactUIComponent","isIE11","isEdge","isSafari","keyListener","ThemeContext","CommonWrapper","cx","rootNode","ThemeFactory","createPropsGetter","isTheme2022","Link","styles","activeStyles","globalClasses","ButtonIcon","getButtonIconSizes","useButtonArrow","getInnerLinkTheme","LoadingButtonIcon","ButtonDataTids","rootElement","root","spinner","Button","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","create","renderMain","renderLinkRootWithoutHandlers","onClick","children","rest","corners","active","borderless","checked","error","warning","narrow","icon","rightIcon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onMouseDown","onMouseUp","onKeyDown","onClickCapture","width","ariaDescribedby","ariaHasPopup","ariaControls","ariaLabel","ariaChecked","ariaExpanded","role","use","type","size","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","isUseStateWithoutOutlineInDisabledState","includes","rootClassName","trueDisabled","noPadding","noRightPadding","disabledWithoutOutline","checkedDisabled","checkedDisabled2022","borderless2022","backlessDisabled2022","textDisabled2022","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","wrap","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconProps","hasChildren","leftIconNode","rightIconNode","link","linkLineHeight","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","hasLoadingNode","loadingNode","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","renderIcon2022","setRootNode","sizes","cloneElement","sizeLarge","sizeLargeIE11","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","displayName","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { HTMLProps } from '../../typings/html';\nimport { isKonturIcon, isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link, LinkProps } from '../Link';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon, ButtonIconProps, getButtonIconSizes } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\nimport { LoadingButtonIcon } from './LoadingButtonIcon';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ButtonSize = SizeProp;\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps\n extends CommonProps,\n Pick<\n AriaAttributes,\n 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'\n >,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement;\n\n /**\n * Иконка справа от текста кнопки.\n */\n rightIcon?: React.ReactElement;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n rootElement: 'Button__rootElement',\n root: 'Button__root',\n spinner: 'Button__spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static displayName = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderLinkRootWithoutHandlers(props: LinkProps) {\n const { onClick, onFocus, onBlur, children, ...rest } = props;\n return <span {...rest}>{children}</span>;\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n rightIcon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onKeyDown,\n onClick,\n onClickCapture,\n width,\n children,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n role,\n } = this.props;\n const { use, type, size } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless'].includes(use);\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && styles.disabledWithoutOutline(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n borderless && styles.borderless2022(),\n use === 'backless' && !checked && styles.backlessDisabled2022(this.theme),\n use === 'text' && styles.textDisabled2022(),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless2022(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n });\n }\n\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type,\n role,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onClickCapture,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx(globalClasses.root, {\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconProps: Omit<ButtonIconProps, 'position'> = {\n use,\n size: this.getProps().size,\n hasChildren: !!children,\n loading: loading || false,\n };\n const leftIconNode = icon && <ButtonIcon {...iconProps} position=\"left\" icon={icon} />;\n const rightIconNode = rightIcon && (\n <ButtonIcon {...iconProps} hasBothIcons={!!icon && !!rightIcon} position=\"right\" icon={rightIcon} />\n );\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n const hasLoadingNode = loading && !icon && !rightIcon;\n const loadingNode = hasLoadingNode && <LoadingButtonIcon size={size} />;\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {leftIconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: hasLoadingNode,\n })}\n >\n {children}\n </span>\n {rightIconNode}\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link\n focused={isFocused}\n disabled={disabled}\n icon={this.renderIcon2022(icon)}\n rightIcon={this.renderIcon2022(rightIcon)}\n as={this.renderLinkRootWithoutHandlers}\n tabIndex={-1}\n >\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps} data-tid={ButtonDataTids.rootElement}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon && isKonturIcon(icon)) {\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: icon.props.size ?? sizes[this.getProps().size] });\n }\n\n return icon;\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/react-ui",
|
|
3
|
-
"version": "4.22.
|
|
3
|
+
"version": "4.22.2",
|
|
4
4
|
"description": "UI Components",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "index.js",
|
|
7
7
|
"sideEffects": false,
|
|
8
|
-
"homepage": "https://tech.skbkontur.ru/react-ui/4.22.
|
|
8
|
+
"homepage": "https://tech.skbkontur.ru/react-ui/4.22.2/",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "git@github.com:skbkontur/retail-ui.git"
|