@skbkontur/react-ui 6.0.1-cd7d7.0 → 6.0.2-19ca1.0
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 +11 -0
- package/components/Button/Button.js +3 -2
- package/components/Button/Button.js.map +1 -1
- package/components/Tooltip/Tooltip.js +6 -5
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/internal/FocusTrap/FocusTrap.d.ts +0 -1
- package/internal/FocusTrap/FocusTrap.js +6 -6
- package/internal/FocusTrap/FocusTrap.js.map +1 -1
- package/internal/Popup/Popup.d.ts +0 -2
- package/internal/Popup/Popup.js +13 -41
- package/internal/Popup/Popup.js.map +1 -1
- package/internal/Popup/PopupHelper.d.ts +2 -4
- package/internal/Popup/PopupHelper.js +5 -10
- package/internal/Popup/PopupHelper.js.map +1 -1
- package/internal/RenderContainer/RenderContainer.d.ts +0 -4
- package/internal/RenderContainer/RenderContainer.js +5 -52
- package/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +0 -1
- package/internal/RenderLayer/RenderLayer.js +7 -5
- package/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/lib/listenFocusOutside.d.ts +0 -2
- package/lib/listenFocusOutside.js +2 -19
- package/lib/listenFocusOutside.js.map +1 -1
- package/lib/renderEnvironment/RenderEnvironmentContext.d.ts +0 -5
- package/lib/renderEnvironment/RenderEnvironmentContext.js +11 -17
- package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
- package/lib/theming/Emotion.d.ts +1 -27
- package/lib/theming/Emotion.js +5 -20
- package/lib/theming/Emotion.js.map +1 -1
- package/package.json +1 -1
- package/lib/shadowDom/isShadowRoot.d.ts +0 -1
- package/lib/shadowDom/isShadowRoot.js +0 -2
- package/lib/shadowDom/isShadowRoot.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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
|
+
## [6.0.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.0...@skbkontur/react-ui@6.0.1) (2026-04-08)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **Button:** apply :disabled styles for [aria-disabled] attribute ([761ecc0](https://github.com/skbkontur/retail-ui/commit/761ecc0556a295de76983cb1fdc207d53c5523cd))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [6.0.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.6.12...@skbkontur/react-ui@6.0.0) (2026-03-31)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -91,12 +91,13 @@ var Button = /** @class */ (function (_super) {
|
|
|
91
91
|
_this.renderMain = function (props) {
|
|
92
92
|
var _a, _b, _c, _d, _e;
|
|
93
93
|
var corners = props.corners, active = props.active, disabled = props.disabled, borderless = props.borderless, checked = props.checked, error = props.error, warning = props.warning, loading = props.loading, narrow = props.narrow, arrow = props.arrow, icon = props.icon, rightIcon = props.rightIcon, _noPadding = props._noPadding, _noRightPadding = props._noRightPadding, visuallyFocused = props.visuallyFocused, align = props.align, disableFocus = props.disableFocus, width = props.width, tabIndex = props.tabIndex, _component = props.component, useProp = props.use, theme = props.theme, rest = __rest(props, ["corners", "active", "disabled", "borderless", "checked", "error", "warning", "loading", "narrow", "arrow", "icon", "rightIcon", "_noPadding", "_noRightPadding", "visuallyFocused", "align", "disableFocus", "width", "tabIndex", "component", "use", "theme"]);
|
|
94
|
-
var _f = _this.getProps(), use = _f.use, component = _f.component, children = _f.children;
|
|
94
|
+
var _f = _this.getProps(), use = _f.use, component = _f.component, children = _f.children, ariaDisabled = _f["aria-disabled"];
|
|
95
95
|
var sizeClass = _this.getSizeClassName();
|
|
96
96
|
var isFocused = _this.state.focusedByTab || visuallyFocused;
|
|
97
97
|
var isLink = use === 'link';
|
|
98
98
|
var _g = useButtonArrow(__assign(__assign({}, _this.props), { isFocused: Boolean(isFocused), size: _this.size }), _this.theme, _this.styles, _this.cx), rootClassNameWithArrow = _g[0], arrowNode = _g[1];
|
|
99
99
|
var isUseStateWithoutOutlineInDisabledState = !['default', 'backless', 'outline'].includes(use);
|
|
100
|
+
var isAriaDisabled = ariaDisabled === true || ariaDisabled === 'true';
|
|
100
101
|
var nonInteractive = disabled || loading;
|
|
101
102
|
var _h = _this.getUseStyle(), style = _h.style, styleActive = _h.styleActive;
|
|
102
103
|
var rootClassName = _this.cx.apply(_this, __spreadArray([_this.styles.root(_this.theme),
|
|
@@ -105,7 +106,7 @@ var Button = /** @class */ (function (_super) {
|
|
|
105
106
|
narrow && _this.styles.narrow(),
|
|
106
107
|
_noPadding && _this.styles.noPadding(),
|
|
107
108
|
_noRightPadding && _this.styles.noRightPadding(),
|
|
108
|
-
rootClassNameWithArrow], (nonInteractive
|
|
109
|
+
rootClassNameWithArrow], (nonInteractive || isAriaDisabled
|
|
109
110
|
? [
|
|
110
111
|
_this.styles.disabled(_this.theme),
|
|
111
112
|
isUseStateWithoutOutlineInDisabledState && _this.styles.disabledWithoutOutline(_this.theme),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../components/Button/Button.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { HTMLAttributes, JSX } from 'react';\nimport React from 'react';\nimport warning from 'warning';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport type { ButtonLinkAllowedValues } from '../../lib/types/button-link.js';\nimport { isKonturIcon } from '../../lib/utils.js';\nimport { isSafari } from '../../lib/client.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { Link } from '../Link/index.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { IconProps } from '../../internal/icons2022/BaseIcon.js';\n\nimport { getStyles, getActiveStyles, globalClasses } from './Button.styles.js';\nimport type { ButtonIconProps } from './ButtonIcon.js';\nimport { ButtonIcon, getButtonIconSizes } from './ButtonIcon.js';\nimport { useButtonArrow } from './ButtonArrow.js';\nimport { getInnerLinkTheme } from './getInnerLinkTheme.js';\nimport { LoadingButtonIcon } from './LoadingButtonIcon.js';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse =\n | 'default'\n | 'outline'\n | 'fill'\n | 'text'\n | 'accent'\n | 'danger'\n | 'success'\n | 'pay'\n /** @deprecated Используйте компонент <Link component=\"button\" /> */\n | 'link'\n /** @deprecated Используйте use=\"outline\" */\n | 'backless'\n /** @deprecated Используйте use=\"accent\" */\n | 'primary';\n\nexport interface ButtonInnerProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /** Применяет к кнопке стили псевдокласса `:active`. */\n active?: boolean;\n\n /** Выравнивание текста в кнопке. */\n align?: React.CSSProperties['textAlign'];\n\n /** Преобразует обычную кнопку в кнопку со стрелкой. */\n arrow?: boolean | 'left';\n\n /** Устанавливает фокус на кнопке после окончания загрузки страницы.*/\n autoFocus?: boolean;\n\n /** Убирает обводку у кнопки.\n *\n * **Не рекомендуем использовать, противоречит дизайн-требованиям.\n * @deprecated Состояние не соответствует Контур.Гайдам, проп будет удален в 7.0.\n *\n * Альтернативный вариант использования — use=\"fill\" или переменную темы `btnBorderWidth` */\n borderless?: boolean;\n\n /** @ignore */\n checked?: boolean;\n\n /** @ignore */\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /** Блокирует кнопку и перекрашивает в серый. */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /** Переводит кнопку в состояние валидации \"Ошибка\".\n *\n * @deprecated Состояние не соответствует Контур.Гайдам, проп будет удален в 7.0. */\n error?: boolean;\n\n /** Добавляет иконку слева от текста кнопки. */\n icon?: React.ReactElement;\n\n /** Добавляет иконку справа от текста кнопки. */\n rightIcon?: React.ReactElement;\n\n /** Переводит кнопку в состояние загрузки. */\n loading?: boolean;\n\n /** Сужает кнопку.\n *\n * @deprecated Состояние не соответствует Контур.Гайдам, проп будет удален в 7.0.\n *\n * Альтернативный вариант использования — через переменные темы `btnPaddingXSmall`, `btnPaddingXMedium`, `btnPaddingXLarge` */\n narrow?: boolean;\n\n /** Размер кнопки. */\n size?: SizeProp;\n\n /** HTML-атрибут `type`. */\n type?: ButtonType;\n\n /** HTML-атрибут `title`. */\n title?: string;\n\n /** Стиль кнопки.\n * - accent — кнопка основного действия\n * - outline — кнопка второстепенного действия с границами без фона\n * - fill — кнопка второстепенного действия с фоном без границ\n * - text — кнопка второстепенного действия без фона и обводки\n * - danger — кнопка деструктивного действия\n * - success — кнопка позитивного действия\n * - pay — кнопка, связанная с оплатой\n *\n * ⚠️ Deprecated-стили, будут удалены в 7.0:\n * - use=\"primary\" → use=\"accent\"\n * - use=\"backless\" → use=\"outline\"\n * - use=\"link\" → `<Link component=\"button\">`\n * - use=\"default\" → use=\"outline\" или use=\"fill\"\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /** Переводит кнопку в состояние валидации \"Предупреждение\".\n * @deprecated Состояние не соответствует Контур.Гайдам, проп будет удален в 7.0. */\n warning?: boolean;\n\n /** Ширина кнопки. */\n width?: number | string;\n\n /** Объект с переменными темы. */\n theme?: ThemeIn;\n}\n\nexport const BUTTON_DEFAULT_COMPONENT = 'button';\n\nexport type ButtonProps<C extends ButtonLinkAllowedValues = typeof BUTTON_DEFAULT_COMPONENT> =\n PolymorphicPropsWithoutRef<ButtonInnerProps, C>;\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<ButtonLinkAllowedValues>, 'use' | 'type' | 'component'>>;\n\nconst SpanComponent: React.FunctionComponent<HTMLAttributes<HTMLSpanElement>> = ({ children, ...rest }) => {\n return <span {...rest}>{children}</span>;\n};\n\n/** Кнопка запускает действие, сценарий или позволяет перейти на другую страницу. */\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class Button<C extends ButtonLinkAllowedValues = typeof BUTTON_DEFAULT_COMPONENT> extends React.Component<\n ButtonProps<C>,\n ButtonState\n> {\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 // 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: 'button',\n component: BUTTON_DEFAULT_COMPONENT,\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private activeStyles!: ReturnType<typeof getActiveStyles>;\n private theme!: Theme;\n private node: HTMLElement | null = null;\n private size!: SizeProp;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private keyListener!: KeyListener;\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n if (this.props.autoFocus) {\n this.keyListener.isTabPressed = true;\n this.focus();\n }\n warning(\n this.props.use !== 'link',\n '[Button]: `use=\"link\"` has been deprecated. Please, use `<Link component=\"button\" />` instead.',\n );\n warning(\n this.props.use !== 'primary',\n '[Button]: `use=\"primary\"` has been deprecated. Please, use `use=\"accent\"` instead.',\n );\n warning(\n this.props.use !== 'backless',\n '[Button]: `use=\"backless\"` has been deprecated. Please, use `use=\"outline\"` instead.',\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(): void {\n this.node?.focus();\n }\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur(): void {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n this.activeStyles = getActiveStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, 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 getTabIndex({\n disableFocus,\n disabled,\n tabIndex = 0,\n }: Pick<ButtonProps, 'disableFocus' | 'disabled' | 'tabIndex'>) {\n if (disableFocus || disabled) {\n return -1;\n }\n\n return tabIndex;\n }\n\n private renderMain = (props: CommonWrapperRestProps<ButtonProps>) => {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n arrow,\n icon,\n rightIcon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n width,\n tabIndex,\n component: _component,\n use: useProp,\n theme,\n ...rest\n } = props;\n const { use, component, children } = this.getProps();\n\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n\n const [rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused), size: this.size },\n this.theme,\n this.styles,\n this.cx,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless', 'outline'].includes(use);\n\n const nonInteractive = disabled || loading;\n const { style, styleActive } = this.getUseStyle();\n\n const rootClassName = this.cx(\n this.styles.root(this.theme),\n style,\n sizeClass,\n narrow && this.styles.narrow(),\n _noPadding && this.styles.noPadding(),\n _noRightPadding && this.styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(nonInteractive\n ? [\n this.styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && this.styles.disabledWithoutOutline(this.theme),\n checked && this.styles.checkedDisabled(this.theme),\n borderless && this.styles.borderless(),\n (use === 'backless' || use === 'outline') && this.styles.backlessDisabled(this.theme),\n use === 'text' && this.styles.textDisabled(),\n globalClasses.disabled,\n ]\n : [\n active && !checked && styleActive,\n isFocused && this.styles.focus(this.theme),\n checked && this.styles.checked(this.theme),\n checked && isFocused && this.styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && this.styles.borderless(),\n ]),\n );\n\n const rootProps = {\n ...rest,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: this.getTabIndex({ disableFocus, disabled: nonInteractive, tabIndex }),\n };\n\n const wrapProps = {\n className: this.cx(globalClasses.root, {\n [this.styles.wrap(this.theme)]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const buttonOnlyProps = component === 'button' ? { disabled: nonInteractive } : {};\n\n const innerShadowNode = null;\n\n let outlineNode = null;\n if ((!isFocused || isLink) && !nonInteractive) {\n outlineNode = (\n <div\n className={this.cx(this.styles.outlineDefault(), {\n [this.styles.outlineWarning(this.theme)]: warning,\n [this.styles.outlineError(this.theme)]: error,\n [this.styles.outlineLink()]: isLink,\n [this.styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [this.styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconProps: Omit<ButtonIconProps, 'position'> = {\n use,\n size: this.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 = this.cx({\n [this.styles.root(this.theme)]: true,\n [sizeClass]: true,\n [this.styles.link(this.theme)]: true,\n [this.styles.linkLineHeight()]: !isSafari,\n [this.styles.linkLineHeightSafariFallback()]: isSafari,\n [this.styles.linkFocus(this.theme)]: isFocused,\n [this.styles.linkDisabled(this.theme)]: nonInteractive,\n });\n Object.assign(wrapProps, {\n className: this.cx(this.styles.wrap(this.theme), this.styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n\n rootProps.style.textAlign = undefined;\n }\n\n const hasLoadingNode = loading && !icon && !rightIcon;\n const loadingNode = hasLoadingNode && <LoadingButtonIcon size={this.size} />;\n\n let captionNode = (\n <div\n className={this.cx(this.styles.caption(), globalClasses.caption, {\n [this.styles.captionLink()]: isLink,\n [this.styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {leftIconNode}\n <span\n className={this.cx(globalClasses.text, {\n [this.styles.visibilityHidden()]: hasLoadingNode,\n })}\n >\n {children}\n </span>\n {rightIconNode}\n </div>\n );\n if (isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n {\n <Link<typeof SpanComponent>\n focused={isFocused}\n disabled={disabled}\n icon={this.renderIcon2022(icon)}\n rightIcon={this.renderIcon2022(rightIcon)}\n tabIndex={-1}\n component={SpanComponent}\n >\n {children}\n </Link>\n }\n </ThemeContext.Provider>\n );\n }\n\n const Root: React.ElementType = component;\n\n return (\n <span {...wrapProps} data-tid={ButtonDataTids.root}>\n <Root data-tid={ButtonDataTids.rootElement} ref={this._ref} {...rootProps} {...buttonOnlyProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </Root>\n </span>\n );\n };\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon?.props && isKonturIcon(icon)) {\n const iconProps = icon.props as IconProps;\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: iconProps.size ?? sizes[this.size] } as IconProps);\n }\n\n return icon;\n }\n\n private getUseStyle() {\n let style;\n let styleActive;\n const { styles, activeStyles } = this;\n\n switch (this.props.use) {\n case 'primary':\n case 'accent':\n style = styles.accent(this.theme);\n styleActive = activeStyles.accent(this.theme);\n break;\n case 'backless':\n case 'outline':\n style = styles.outline(this.theme);\n styleActive = activeStyles.outline(this.theme);\n break;\n case 'fill':\n style = styles.fill(this.theme);\n styleActive = activeStyles.fill(this.theme);\n break;\n case 'success':\n style = styles.success(this.theme);\n styleActive = activeStyles.success(this.theme);\n break;\n case 'danger':\n style = styles.danger(this.theme);\n styleActive = activeStyles.danger(this.theme);\n break;\n case 'pay':\n style = styles.pay(this.theme);\n styleActive = activeStyles.pay(this.theme);\n break;\n case 'text':\n style = styles.text(this.theme);\n styleActive = activeStyles.text(this.theme);\n break;\n default:\n style = styles.default(this.theme);\n styleActive = activeStyles.default(this.theme);\n }\n\n return { style, styleActive };\n }\n\n private getSizeClassName() {\n const { icon, rightIcon, children } = this.getProps();\n\n switch (this.size) {\n case 'large': {\n const commonClasses = {\n [this.styles.sizeLargeWithIcon(this.theme)]: !!icon,\n [this.styles.sizeLargeWithRightIcon(this.theme)]: !!rightIcon,\n [this.styles.sizeLargeWithIconWithoutText(this.theme)]: (!!icon || !!rightIcon) && !children,\n };\n\n return this.cx(this.styles.sizeLarge(this.theme), commonClasses);\n }\n case 'medium': {\n const commonClasses = {\n [this.styles.sizeMediumWithIcon(this.theme)]: !!icon,\n [this.styles.sizeMediumWithRightIcon(this.theme)]: !!rightIcon,\n [this.styles.sizeMediumWithIconWithoutText(this.theme)]: (!!icon || !!rightIcon) && !children,\n };\n\n return this.cx(this.styles.sizeMedium(this.theme), commonClasses);\n }\n case 'small':\n default: {\n const commonClasses = {\n [this.styles.sizeSmallWithIcon(this.theme)]: !!icon,\n [this.styles.sizeSmallWithRightIcon(this.theme)]: !!rightIcon,\n [this.styles.sizeSmallWithIconWithoutText(this.theme)]: (!!icon || !!rightIcon) && !children,\n };\n\n return this.cx(this.styles.sizeSmall(this.theme), commonClasses);\n }\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.wrapLarge(this.theme);\n case 'medium':\n return this.styles.wrapMedium(this.theme);\n case 'small':\n default:\n return this.styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent) => {\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 this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent) => {\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: HTMLElement | null) => {\n this.node = node;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../components/Button/Button.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { HTMLAttributes, JSX } from 'react';\nimport React from 'react';\nimport warning from 'warning';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport type { ButtonLinkAllowedValues } from '../../lib/types/button-link.js';\nimport { isKonturIcon } from '../../lib/utils.js';\nimport { isSafari } from '../../lib/client.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { Link } from '../Link/index.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { IconProps } from '../../internal/icons2022/BaseIcon.js';\n\nimport { getStyles, getActiveStyles, globalClasses } from './Button.styles.js';\nimport type { ButtonIconProps } from './ButtonIcon.js';\nimport { ButtonIcon, getButtonIconSizes } from './ButtonIcon.js';\nimport { useButtonArrow } from './ButtonArrow.js';\nimport { getInnerLinkTheme } from './getInnerLinkTheme.js';\nimport { LoadingButtonIcon } from './LoadingButtonIcon.js';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse =\n | 'default'\n | 'outline'\n | 'fill'\n | 'text'\n | 'accent'\n | 'danger'\n | 'success'\n | 'pay'\n /** @deprecated Используйте компонент <Link component=\"button\" /> */\n | 'link'\n /** @deprecated Используйте use=\"outline\" */\n | 'backless'\n /** @deprecated Используйте use=\"accent\" */\n | 'primary';\n\nexport interface ButtonInnerProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /** Применяет к кнопке стили псевдокласса `:active`. */\n active?: boolean;\n\n /** Выравнивание текста в кнопке. */\n align?: React.CSSProperties['textAlign'];\n\n /** Преобразует обычную кнопку в кнопку со стрелкой. */\n arrow?: boolean | 'left';\n\n /** Устанавливает фокус на кнопке после окончания загрузки страницы.*/\n autoFocus?: boolean;\n\n /** Убирает обводку у кнопки.\n *\n * **Не рекомендуем использовать, противоречит дизайн-требованиям.\n * @deprecated Состояние не соответствует Контур.Гайдам, проп будет удален в 7.0.\n *\n * Альтернативный вариант использования — use=\"fill\" или переменную темы `btnBorderWidth` */\n borderless?: boolean;\n\n /** @ignore */\n checked?: boolean;\n\n /** @ignore */\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /** Блокирует кнопку и перекрашивает в серый. */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /** Переводит кнопку в состояние валидации \"Ошибка\".\n *\n * @deprecated Состояние не соответствует Контур.Гайдам, проп будет удален в 7.0. */\n error?: boolean;\n\n /** Добавляет иконку слева от текста кнопки. */\n icon?: React.ReactElement;\n\n /** Добавляет иконку справа от текста кнопки. */\n rightIcon?: React.ReactElement;\n\n /** Переводит кнопку в состояние загрузки. */\n loading?: boolean;\n\n /** Сужает кнопку.\n *\n * @deprecated Состояние не соответствует Контур.Гайдам, проп будет удален в 7.0.\n *\n * Альтернативный вариант использования — через переменные темы `btnPaddingXSmall`, `btnPaddingXMedium`, `btnPaddingXLarge` */\n narrow?: boolean;\n\n /** Размер кнопки. */\n size?: SizeProp;\n\n /** HTML-атрибут `type`. */\n type?: ButtonType;\n\n /** HTML-атрибут `title`. */\n title?: string;\n\n /** Стиль кнопки.\n * - accent — кнопка основного действия\n * - outline — кнопка второстепенного действия с границами без фона\n * - fill — кнопка второстепенного действия с фоном без границ\n * - text — кнопка второстепенного действия без фона и обводки\n * - danger — кнопка деструктивного действия\n * - success — кнопка позитивного действия\n * - pay — кнопка, связанная с оплатой\n *\n * ⚠️ Deprecated-стили, будут удалены в 7.0:\n * - use=\"primary\" → use=\"accent\"\n * - use=\"backless\" → use=\"outline\"\n * - use=\"link\" → `<Link component=\"button\">`\n * - use=\"default\" → use=\"outline\" или use=\"fill\"\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /** Переводит кнопку в состояние валидации \"Предупреждение\".\n * @deprecated Состояние не соответствует Контур.Гайдам, проп будет удален в 7.0. */\n warning?: boolean;\n\n /** Ширина кнопки. */\n width?: number | string;\n\n /** Объект с переменными темы. */\n theme?: ThemeIn;\n}\n\nexport const BUTTON_DEFAULT_COMPONENT = 'button';\n\nexport type ButtonProps<C extends ButtonLinkAllowedValues = typeof BUTTON_DEFAULT_COMPONENT> =\n PolymorphicPropsWithoutRef<ButtonInnerProps, C>;\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<ButtonLinkAllowedValues>, 'use' | 'type' | 'component'>>;\n\nconst SpanComponent: React.FunctionComponent<HTMLAttributes<HTMLSpanElement>> = ({ children, ...rest }) => {\n return <span {...rest}>{children}</span>;\n};\n\n/** Кнопка запускает действие, сценарий или позволяет перейти на другую страницу. */\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class Button<C extends ButtonLinkAllowedValues = typeof BUTTON_DEFAULT_COMPONENT> extends React.Component<\n ButtonProps<C>,\n ButtonState\n> {\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 // 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: 'button',\n component: BUTTON_DEFAULT_COMPONENT,\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private activeStyles!: ReturnType<typeof getActiveStyles>;\n private theme!: Theme;\n private node: HTMLElement | null = null;\n private size!: SizeProp;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private keyListener!: KeyListener;\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n if (this.props.autoFocus) {\n this.keyListener.isTabPressed = true;\n this.focus();\n }\n warning(\n this.props.use !== 'link',\n '[Button]: `use=\"link\"` has been deprecated. Please, use `<Link component=\"button\" />` instead.',\n );\n warning(\n this.props.use !== 'primary',\n '[Button]: `use=\"primary\"` has been deprecated. Please, use `use=\"accent\"` instead.',\n );\n warning(\n this.props.use !== 'backless',\n '[Button]: `use=\"backless\"` has been deprecated. Please, use `use=\"outline\"` instead.',\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(): void {\n this.node?.focus();\n }\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur(): void {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n this.activeStyles = getActiveStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, 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 getTabIndex({\n disableFocus,\n disabled,\n tabIndex = 0,\n }: Pick<ButtonProps, 'disableFocus' | 'disabled' | 'tabIndex'>) {\n if (disableFocus || disabled) {\n return -1;\n }\n\n return tabIndex;\n }\n\n private renderMain = (props: CommonWrapperRestProps<ButtonProps>) => {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n arrow,\n icon,\n rightIcon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n width,\n tabIndex,\n component: _component,\n use: useProp,\n theme,\n ...rest\n } = props;\n const { use, component, children, 'aria-disabled': ariaDisabled } = this.getProps();\n\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n\n const [rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused), size: this.size },\n this.theme,\n this.styles,\n this.cx,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless', 'outline'].includes(use);\n\n const isAriaDisabled = ariaDisabled === true || ariaDisabled === 'true';\n const nonInteractive = disabled || loading;\n const { style, styleActive } = this.getUseStyle();\n\n const rootClassName = this.cx(\n this.styles.root(this.theme),\n style,\n sizeClass,\n narrow && this.styles.narrow(),\n _noPadding && this.styles.noPadding(),\n _noRightPadding && this.styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(nonInteractive || isAriaDisabled\n ? [\n this.styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && this.styles.disabledWithoutOutline(this.theme),\n checked && this.styles.checkedDisabled(this.theme),\n borderless && this.styles.borderless(),\n (use === 'backless' || use === 'outline') && this.styles.backlessDisabled(this.theme),\n use === 'text' && this.styles.textDisabled(),\n globalClasses.disabled,\n ]\n : [\n active && !checked && styleActive,\n isFocused && this.styles.focus(this.theme),\n checked && this.styles.checked(this.theme),\n checked && isFocused && this.styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && this.styles.borderless(),\n ]),\n );\n\n const rootProps = {\n ...rest,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: this.getTabIndex({ disableFocus, disabled: nonInteractive, tabIndex }),\n };\n\n const wrapProps = {\n className: this.cx(globalClasses.root, {\n [this.styles.wrap(this.theme)]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const buttonOnlyProps = component === 'button' ? { disabled: nonInteractive } : {};\n\n const innerShadowNode = null;\n\n let outlineNode = null;\n if ((!isFocused || isLink) && !nonInteractive) {\n outlineNode = (\n <div\n className={this.cx(this.styles.outlineDefault(), {\n [this.styles.outlineWarning(this.theme)]: warning,\n [this.styles.outlineError(this.theme)]: error,\n [this.styles.outlineLink()]: isLink,\n [this.styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [this.styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconProps: Omit<ButtonIconProps, 'position'> = {\n use,\n size: this.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 = this.cx({\n [this.styles.root(this.theme)]: true,\n [sizeClass]: true,\n [this.styles.link(this.theme)]: true,\n [this.styles.linkLineHeight()]: !isSafari,\n [this.styles.linkLineHeightSafariFallback()]: isSafari,\n [this.styles.linkFocus(this.theme)]: isFocused,\n [this.styles.linkDisabled(this.theme)]: nonInteractive,\n });\n Object.assign(wrapProps, {\n className: this.cx(this.styles.wrap(this.theme), this.styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n\n rootProps.style.textAlign = undefined;\n }\n\n const hasLoadingNode = loading && !icon && !rightIcon;\n const loadingNode = hasLoadingNode && <LoadingButtonIcon size={this.size} />;\n\n let captionNode = (\n <div\n className={this.cx(this.styles.caption(), globalClasses.caption, {\n [this.styles.captionLink()]: isLink,\n [this.styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {leftIconNode}\n <span\n className={this.cx(globalClasses.text, {\n [this.styles.visibilityHidden()]: hasLoadingNode,\n })}\n >\n {children}\n </span>\n {rightIconNode}\n </div>\n );\n if (isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n {\n <Link<typeof SpanComponent>\n focused={isFocused}\n disabled={disabled}\n icon={this.renderIcon2022(icon)}\n rightIcon={this.renderIcon2022(rightIcon)}\n tabIndex={-1}\n component={SpanComponent}\n >\n {children}\n </Link>\n }\n </ThemeContext.Provider>\n );\n }\n\n const Root: React.ElementType = component;\n\n return (\n <span {...wrapProps} data-tid={ButtonDataTids.root}>\n <Root data-tid={ButtonDataTids.rootElement} ref={this._ref} {...rootProps} {...buttonOnlyProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </Root>\n </span>\n );\n };\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon?.props && isKonturIcon(icon)) {\n const iconProps = icon.props as IconProps;\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: iconProps.size ?? sizes[this.size] } as IconProps);\n }\n\n return icon;\n }\n\n private getUseStyle() {\n let style;\n let styleActive;\n const { styles, activeStyles } = this;\n\n switch (this.props.use) {\n case 'primary':\n case 'accent':\n style = styles.accent(this.theme);\n styleActive = activeStyles.accent(this.theme);\n break;\n case 'backless':\n case 'outline':\n style = styles.outline(this.theme);\n styleActive = activeStyles.outline(this.theme);\n break;\n case 'fill':\n style = styles.fill(this.theme);\n styleActive = activeStyles.fill(this.theme);\n break;\n case 'success':\n style = styles.success(this.theme);\n styleActive = activeStyles.success(this.theme);\n break;\n case 'danger':\n style = styles.danger(this.theme);\n styleActive = activeStyles.danger(this.theme);\n break;\n case 'pay':\n style = styles.pay(this.theme);\n styleActive = activeStyles.pay(this.theme);\n break;\n case 'text':\n style = styles.text(this.theme);\n styleActive = activeStyles.text(this.theme);\n break;\n default:\n style = styles.default(this.theme);\n styleActive = activeStyles.default(this.theme);\n }\n\n return { style, styleActive };\n }\n\n private getSizeClassName() {\n const { icon, rightIcon, children } = this.getProps();\n\n switch (this.size) {\n case 'large': {\n const commonClasses = {\n [this.styles.sizeLargeWithIcon(this.theme)]: !!icon,\n [this.styles.sizeLargeWithRightIcon(this.theme)]: !!rightIcon,\n [this.styles.sizeLargeWithIconWithoutText(this.theme)]: (!!icon || !!rightIcon) && !children,\n };\n\n return this.cx(this.styles.sizeLarge(this.theme), commonClasses);\n }\n case 'medium': {\n const commonClasses = {\n [this.styles.sizeMediumWithIcon(this.theme)]: !!icon,\n [this.styles.sizeMediumWithRightIcon(this.theme)]: !!rightIcon,\n [this.styles.sizeMediumWithIconWithoutText(this.theme)]: (!!icon || !!rightIcon) && !children,\n };\n\n return this.cx(this.styles.sizeMedium(this.theme), commonClasses);\n }\n case 'small':\n default: {\n const commonClasses = {\n [this.styles.sizeSmallWithIcon(this.theme)]: !!icon,\n [this.styles.sizeSmallWithRightIcon(this.theme)]: !!rightIcon,\n [this.styles.sizeSmallWithIconWithoutText(this.theme)]: (!!icon || !!rightIcon) && !children,\n };\n\n return this.cx(this.styles.sizeSmall(this.theme), commonClasses);\n }\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.wrapLarge(this.theme);\n case 'medium':\n return this.styles.wrapMedium(this.theme);\n case 'small':\n default:\n return this.styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent) => {\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 this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent) => {\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: HTMLElement | null) => {\n this.node = node;\n };\n}\n"]}
|
|
@@ -32,18 +32,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
32
32
|
};
|
|
33
33
|
import React from 'react';
|
|
34
34
|
import warning from 'warning';
|
|
35
|
-
import { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';
|
|
36
35
|
import { isNullable } from '../../lib/utils.js';
|
|
37
36
|
import { ThemeFactory } from '../../lib/theming/ThemeFactory.js';
|
|
38
37
|
import { Popup } from '../../internal/Popup/index.js';
|
|
39
38
|
import { RenderLayer } from '../../internal/RenderLayer/index.js';
|
|
40
|
-
import {
|
|
39
|
+
import { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside.js';
|
|
41
40
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
42
41
|
import { isTestEnv } from '../../lib/currentEnvironment.js';
|
|
43
42
|
import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
|
|
44
43
|
import { rootNode } from '../../lib/rootNode/index.js';
|
|
45
44
|
import { createPropsGetter } from '../../lib/createPropsGetter.js';
|
|
46
45
|
import { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon.js';
|
|
46
|
+
import { isInstanceOf } from '../../lib/isInstanceOf.js';
|
|
47
47
|
import { withSize } from '../../lib/size/SizeDecorator.js';
|
|
48
48
|
import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
|
|
49
49
|
import { getStyles } from './Tooltip.styles.js';
|
|
@@ -387,9 +387,10 @@ var Tooltip = /** @class */ (function (_super) {
|
|
|
387
387
|
}
|
|
388
388
|
};
|
|
389
389
|
Tooltip.prototype.isClickOutsideContent = function (event) {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
390
|
+
if (this.contentElement && isInstanceOf(event.target, this.globalObject.Element)) {
|
|
391
|
+
return !containsTargetOrRenderContainer(event.target)(this.contentElement);
|
|
392
|
+
}
|
|
393
|
+
return true;
|
|
393
394
|
};
|
|
394
395
|
var Tooltip_1;
|
|
395
396
|
Tooltip.__KONTUR_REACT_UI__ = 'Tooltip';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\nimport warning from 'warning';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';\nimport type { GlobalObject, SafeTimer } from '../../lib/globalObject.js';\nimport { isNullable } from '../../lib/utils.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { PopupPositionsType, PopupProps, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport type { RenderLayerProps } from '../../internal/RenderLayer/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { MouseEventType } from '../../typings/event-types.js';\nimport { clickOutsideContent } from '../../lib/listenFocusOutside.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\n\nimport { getStyles } from './Tooltip.styles.js';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /** Указывает элемент, относительно которого позиционировать тултип. */\n anchorElement?: HTMLElement;\n\n /** @ignore */\n children?: React.ReactNode;\n\n /** Задает HTML-атрибут class. */\n className?: string;\n\n /** Отображает крестик для закрытия тултипа. По умолчанию крестик виден, если проп *trigger* не равен `hover` или `focus`. */\n closeButton?: boolean;\n\n /** Задает функцию, которая возвращает содержимое тултипа. Если функция вернула `null`, то тултип не показывается. */\n render?: Nullable<() => React.ReactNode>;\n\n /** Задает приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Задает размер тултипа.\n * @default 'small' */\n size?: SizeProp;\n\n /** Задает триггер открытия тултипа. */\n trigger?: TooltipTrigger;\n\n /** Задает хендлер, который вызывается при клике по крестику. */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /** Задает хендлер, который вызывается при клике по крестику или снаружи тултипа. */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /** Задает хендлер, который вызывается при закрытии тултипа. */\n onClose?: () => void;\n\n /** Задает хендлер, который вызывается при открытии тултипа. */\n onOpen?: () => void;\n\n /** Задает список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции будет выходить за край экрана, то будет выбрана следующая позиция.\n * Обязательно должен включать позицию указанную в `pos`. */\n allowedPositions?: PopupPositionsType[];\n\n /** Отключает анимацию.\n * @default false */\n disableAnimations?: boolean;\n\n /** Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`.\n * Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Устанавливает задержку в миллисекундах до появления лоадера. */\n delayBeforeShow?: number;\n}\n\nconst DEFAULT_DELAY = 100;\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n crossIcon: 'Tooltip__crossIcon',\n} as const;\n\nconst DefaultPositions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ninterface TooltipSizeVariables {\n closeButtonStyle: string;\n contentStyle: string;\n borderRadius: string;\n pinSize: string;\n pinOffsetX: string;\n pinOffsetY: string;\n margin: string;\n}\n\ntype DefaultProps = Required<Pick<TooltipProps, 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>>;\n\n/**\n * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.\n *\n * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать\n * изображения, кнопки, ссылки и прочие интерактивные элементы.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n public static displayName = 'Tooltip';\n\n public static defaultProps: DefaultProps = {\n trigger: 'hover',\n disableAnimations: isTestEnv,\n useWrapper: false,\n delayBeforeShow: DEFAULT_DELAY,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n private validateProps(props: TooltipProps): void {\n warning(\n props.children || props.anchorElement,\n `[Tooltip]: you must provide either 'children' or 'anchorElement' prop for Tooltip to work properly`,\n );\n }\n\n public static delay = DEFAULT_DELAY;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private sizeVariables!: TooltipSizeVariables;\n private hoverTimeout: SafeTimer;\n private contentElement: Nullable<HTMLElement> = null;\n private clickedOutside = true;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions(): string[] {\n return this.props.allowedPositions ? this.props.allowedPositions : DefaultPositions;\n }\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n const { trigger } = this.getProps();\n\n this.validateProps(this.getProps());\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n this.sizeVariables = this.getSizeVariables();\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupBackground: theme.tooltipBg,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: this.sizeVariables.borderRadius,\n popupPinSize: this.sizeVariables.pinSize,\n popupPinOffsetX: this.sizeVariables.pinOffsetX,\n popupPinOffsetY: this.sizeVariables.pinOffsetY,\n popupMargin: this.sizeVariables.margin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = (): React.JSX.Element | null => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div\n ref={this.refContent}\n className={this.cx(this.styles.tooltipContent(this.theme), this.sizeVariables.contentStyle)}\n data-tid={TooltipDataTids.content}\n >\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton(): React.JSX.Element | null {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross) {\n return null;\n }\n\n const icon = (\n <CloseButtonIcon\n tabbable={false}\n side={parseInt(this.theme.tooltipCloseBtnSide)}\n color={this.theme.tooltipCloseBtnColor}\n colorHover={this.theme.tooltipCloseBtnHoverColor}\n />\n );\n\n return (\n <div\n className={this.cx(this.styles.closeButton(this.theme), this.sizeVariables.closeButtonStyle)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n {icon}\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show(): void {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(false, `Function 'show' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide(): void {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(false, `Function 'hide' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getPopupAndLayerProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n const { disableAnimations, trigger } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={disableAnimations}\n positions={this.getPositions()}\n pos={this.props.pos}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private getPositions = (): PopupPositionsType[] =>\n this.props.allowedPositions\n ? this.props.allowedPositions.filter((item) => DefaultPositions.includes(item))\n : DefaultPositions;\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n const defaultPopupAndLayerProps: ReturnType<typeof this.getPopupAndLayerProps> = {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n switch (trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return defaultPopupAndLayerProps;\n default:\n warning(false, `Unknown trigger specified: ${trigger}. Returning default value.`);\n return defaultPopupAndLayerProps;\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n this.hoverTimeout = setTimeout(this.open, this.getProps().delayBeforeShow);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n const node = this.contentElement;\n const isShadowRootElement = isShadowRoot(this.emotion.sheet.container.getRootNode());\n return clickOutsideContent(event, node, isShadowRootElement, this.globalObject);\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n\n this.close();\n };\n\n private getSizeVariables = (): TooltipSizeVariables => {\n switch (this.size) {\n case 'small':\n return {\n closeButtonStyle: this.styles.closeButtonSmall(this.theme),\n contentStyle: this.styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n case 'medium':\n return {\n closeButtonStyle: this.styles.closeButtonMedium(this.theme),\n contentStyle: this.styles.tooltipContentMedium(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusMedium,\n pinSize: this.theme.tooltipPinSizeMedium,\n pinOffsetX: this.theme.tooltipPinOffsetXMedium,\n pinOffsetY: this.theme.tooltipPinOffsetYMedium,\n margin: this.theme.tooltipMarginMedium,\n };\n case 'large':\n return {\n closeButtonStyle: this.styles.closeButtonLarge(this.theme),\n contentStyle: this.styles.tooltipContentLarge(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusLarge,\n pinSize: this.theme.tooltipPinSizeLarge,\n pinOffsetX: this.theme.tooltipPinOffsetXLarge,\n pinOffsetY: this.theme.tooltipPinOffsetYLarge,\n margin: this.theme.tooltipMarginLarge,\n };\n default:\n warning(false, `Can't get size variables: invalid value in size prop '${this.props.size}'. Returning default`);\n return {\n closeButtonStyle: this.styles.closeButtonSmall(this.theme),\n contentStyle: this.styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\nimport warning from 'warning';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport type { GlobalObject, SafeTimer } from '../../lib/globalObject.js';\nimport { isNullable } from '../../lib/utils.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { PopupPositionsType, PopupProps, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport type { RenderLayerProps } from '../../internal/RenderLayer/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { MouseEventType } from '../../typings/event-types.js';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\n\nimport { getStyles } from './Tooltip.styles.js';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /** Указывает элемент, относительно которого позиционировать тултип. */\n anchorElement?: HTMLElement;\n\n /** @ignore */\n children?: React.ReactNode;\n\n /** Задает HTML-атрибут class. */\n className?: string;\n\n /** Отображает крестик для закрытия тултипа. По умолчанию крестик виден, если проп *trigger* не равен `hover` или `focus`. */\n closeButton?: boolean;\n\n /** Задает функцию, которая возвращает содержимое тултипа. Если функция вернула `null`, то тултип не показывается. */\n render?: Nullable<() => React.ReactNode>;\n\n /** Задает приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Задает размер тултипа.\n * @default 'small' */\n size?: SizeProp;\n\n /** Задает триггер открытия тултипа. */\n trigger?: TooltipTrigger;\n\n /** Задает хендлер, который вызывается при клике по крестику. */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /** Задает хендлер, который вызывается при клике по крестику или снаружи тултипа. */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /** Задает хендлер, который вызывается при закрытии тултипа. */\n onClose?: () => void;\n\n /** Задает хендлер, который вызывается при открытии тултипа. */\n onOpen?: () => void;\n\n /** Задает список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции будет выходить за край экрана, то будет выбрана следующая позиция.\n * Обязательно должен включать позицию указанную в `pos`. */\n allowedPositions?: PopupPositionsType[];\n\n /** Отключает анимацию.\n * @default false */\n disableAnimations?: boolean;\n\n /** Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`.\n * Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Устанавливает задержку в миллисекундах до появления лоадера. */\n delayBeforeShow?: number;\n}\n\nconst DEFAULT_DELAY = 100;\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n crossIcon: 'Tooltip__crossIcon',\n} as const;\n\nconst DefaultPositions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ninterface TooltipSizeVariables {\n closeButtonStyle: string;\n contentStyle: string;\n borderRadius: string;\n pinSize: string;\n pinOffsetX: string;\n pinOffsetY: string;\n margin: string;\n}\n\ntype DefaultProps = Required<Pick<TooltipProps, 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>>;\n\n/**\n * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.\n *\n * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать\n * изображения, кнопки, ссылки и прочие интерактивные элементы.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n public static displayName = 'Tooltip';\n\n public static defaultProps: DefaultProps = {\n trigger: 'hover',\n disableAnimations: isTestEnv,\n useWrapper: false,\n delayBeforeShow: DEFAULT_DELAY,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n private validateProps(props: TooltipProps): void {\n warning(\n props.children || props.anchorElement,\n `[Tooltip]: you must provide either 'children' or 'anchorElement' prop for Tooltip to work properly`,\n );\n }\n\n public static delay = DEFAULT_DELAY;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private sizeVariables!: TooltipSizeVariables;\n private hoverTimeout: SafeTimer;\n private contentElement: Nullable<HTMLElement> = null;\n private clickedOutside = true;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions(): string[] {\n return this.props.allowedPositions ? this.props.allowedPositions : DefaultPositions;\n }\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n const { trigger } = this.getProps();\n\n this.validateProps(this.getProps());\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n this.sizeVariables = this.getSizeVariables();\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupBackground: theme.tooltipBg,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: this.sizeVariables.borderRadius,\n popupPinSize: this.sizeVariables.pinSize,\n popupPinOffsetX: this.sizeVariables.pinOffsetX,\n popupPinOffsetY: this.sizeVariables.pinOffsetY,\n popupMargin: this.sizeVariables.margin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = (): React.JSX.Element | null => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div\n ref={this.refContent}\n className={this.cx(this.styles.tooltipContent(this.theme), this.sizeVariables.contentStyle)}\n data-tid={TooltipDataTids.content}\n >\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton(): React.JSX.Element | null {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross) {\n return null;\n }\n\n const icon = (\n <CloseButtonIcon\n tabbable={false}\n side={parseInt(this.theme.tooltipCloseBtnSide)}\n color={this.theme.tooltipCloseBtnColor}\n colorHover={this.theme.tooltipCloseBtnHoverColor}\n />\n );\n\n return (\n <div\n className={this.cx(this.styles.closeButton(this.theme), this.sizeVariables.closeButtonStyle)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n {icon}\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show(): void {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(false, `Function 'show' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide(): void {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(false, `Function 'hide' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getPopupAndLayerProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n const { disableAnimations, trigger } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={disableAnimations}\n positions={this.getPositions()}\n pos={this.props.pos}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private getPositions = (): PopupPositionsType[] =>\n this.props.allowedPositions\n ? this.props.allowedPositions.filter((item) => DefaultPositions.includes(item))\n : DefaultPositions;\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n const defaultPopupAndLayerProps: ReturnType<typeof this.getPopupAndLayerProps> = {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n switch (trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return defaultPopupAndLayerProps;\n default:\n warning(false, `Unknown trigger specified: ${trigger}. Returning default value.`);\n return defaultPopupAndLayerProps;\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n this.hoverTimeout = setTimeout(this.open, this.getProps().delayBeforeShow);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && isInstanceOf(event.target, this.globalObject.Element)) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n\n this.close();\n };\n\n private getSizeVariables = (): TooltipSizeVariables => {\n switch (this.size) {\n case 'small':\n return {\n closeButtonStyle: this.styles.closeButtonSmall(this.theme),\n contentStyle: this.styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n case 'medium':\n return {\n closeButtonStyle: this.styles.closeButtonMedium(this.theme),\n contentStyle: this.styles.tooltipContentMedium(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusMedium,\n pinSize: this.theme.tooltipPinSizeMedium,\n pinOffsetX: this.theme.tooltipPinOffsetXMedium,\n pinOffsetY: this.theme.tooltipPinOffsetYMedium,\n margin: this.theme.tooltipMarginMedium,\n };\n case 'large':\n return {\n closeButtonStyle: this.styles.closeButtonLarge(this.theme),\n contentStyle: this.styles.tooltipContentLarge(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusLarge,\n pinSize: this.theme.tooltipPinSizeLarge,\n pinOffsetX: this.theme.tooltipPinOffsetXLarge,\n pinOffsetY: this.theme.tooltipPinOffsetYLarge,\n margin: this.theme.tooltipMarginLarge,\n };\n default:\n warning(false, `Can't get size variables: invalid value in size prop '${this.props.size}'. Returning default`);\n return {\n closeButtonStyle: this.styles.closeButtonSmall(this.theme),\n contentStyle: this.styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n }\n };\n}\n"]}
|
|
@@ -11,7 +11,6 @@ export declare class FocusTrap extends React.PureComponent<FocusTrapProps> {
|
|
|
11
11
|
getRootNode: TGetRootNode;
|
|
12
12
|
private setRootNode;
|
|
13
13
|
private globalObject;
|
|
14
|
-
private emotion;
|
|
15
14
|
private focusOutsideListenerToken;
|
|
16
15
|
componentWillUnmount(): void;
|
|
17
16
|
render(): React.JSX.Element;
|
|
@@ -32,10 +32,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
32
32
|
};
|
|
33
33
|
import React from 'react';
|
|
34
34
|
import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
|
|
35
|
-
import { listen as listenFocusOutside,
|
|
35
|
+
import { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside.js';
|
|
36
36
|
import { getRootNode, rootNode } from '../../lib/rootNode/index.js';
|
|
37
|
+
import { isInstanceOf } from '../../lib/isInstanceOf.js';
|
|
37
38
|
import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
|
|
38
|
-
import { isShadowRoot } from '../../lib/shadowDom/isShadowRoot.js';
|
|
39
39
|
var FocusTrap = /** @class */ (function (_super) {
|
|
40
40
|
__extends(FocusTrap, _super);
|
|
41
41
|
function FocusTrap() {
|
|
@@ -56,12 +56,12 @@ var FocusTrap = /** @class */ (function (_super) {
|
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
_this.handleNativeDocClick = function (event) {
|
|
59
|
+
var target = event.target || event.srcElement;
|
|
59
60
|
var node = getRootNode(_this);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (clickOutsideOfContent) {
|
|
63
|
-
_this.onClickOutside(event);
|
|
61
|
+
if (node && isInstanceOf(target, _this.globalObject.Element) && containsTargetOrRenderContainer(target)(node)) {
|
|
62
|
+
return;
|
|
64
63
|
}
|
|
64
|
+
_this.onClickOutside(event);
|
|
65
65
|
};
|
|
66
66
|
return _this;
|
|
67
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusTrap.js","sourceRoot":"","sources":["../../../internal/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FocusTrap.js","sourceRoot":"","sources":["../../../internal/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\n\nexport interface FocusTrapProps extends CommonProps {\n children: React.ReactElement<any>;\n onBlur?: (event: FocusEvent) => void;\n}\n\n@withRenderEnvironment\n@rootNode\nexport class FocusTrap extends React.PureComponent<FocusTrapProps> {\n public static __KONTUR_REACT_UI__ = 'FocusTrap';\n public static displayName = 'FocusTrap';\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private globalObject!: GlobalObject;\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n\n public componentWillUnmount() {\n if (this.focusOutsideListenerToken) {\n this.detachListeners();\n }\n }\n\n public render() {\n const { children, onBlur } = this.props;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.cloneElement(React.Children.only(children), {\n onFocus: (...args: any[]) => {\n if (onBlur) {\n this.attachListeners();\n }\n if (children.props && children.props.onFocus) {\n children.props.onFocus(...args);\n }\n },\n })}\n </CommonWrapper>\n );\n }\n\n private onClickOutside = (e: Event) => {\n if (this.props.onBlur) {\n this.props.onBlur(e as FocusEvent);\n }\n this.detachListeners();\n };\n\n private attachListeners = () => {\n const rootNode = getRootNode(this);\n if (!this.focusOutsideListenerToken && rootNode) {\n this.focusOutsideListenerToken = listenFocusOutside([rootNode], this.onClickOutside, this.globalObject);\n\n this.globalObject.document?.addEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n };\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n\n this.globalObject.document?.removeEventListener(\n 'ontouchstart' in this.globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n }\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = getRootNode(this);\n\n if (node && isInstanceOf(target, this.globalObject.Element) && containsTargetOrRenderContainer(target)(node)) {\n return;\n }\n\n this.onClickOutside(event);\n };\n}\n"]}
|
|
@@ -151,7 +151,6 @@ export declare class Popup extends React.Component<PopupProps, PopupState> {
|
|
|
151
151
|
private refForTransition;
|
|
152
152
|
private hasAnchorElementListeners;
|
|
153
153
|
private rootId;
|
|
154
|
-
private getOffsetParent;
|
|
155
154
|
anchorElement: Nullable<Element>;
|
|
156
155
|
private absoluteParent;
|
|
157
156
|
componentDidMount(): void;
|
|
@@ -186,7 +185,6 @@ export declare class Popup extends React.Component<PopupProps, PopupState> {
|
|
|
186
185
|
private updateLocation;
|
|
187
186
|
private locationEquals;
|
|
188
187
|
private getOrderedPositions;
|
|
189
|
-
private getRelativePos;
|
|
190
188
|
private getLocation;
|
|
191
189
|
private tryReuseCurrentLocation;
|
|
192
190
|
private tryGetFirstFullyVisibleLocation;
|