@skbkontur/react-ui 4.13.0 → 4.13.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.
Files changed (66) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/cjs/components/Checkbox/Checkbox.md +1 -1
  3. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +2 -2
  4. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  5. package/cjs/components/DropdownMenu/DropdownMenu.md +1 -1
  6. package/cjs/components/MenuHeader/MenuHeader.d.ts +1 -1
  7. package/cjs/components/MenuHeader/MenuHeader.js +1 -1
  8. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  9. package/cjs/components/MenuItem/MenuItem.d.ts +1 -1
  10. package/cjs/components/MenuItem/MenuItem.js +1 -1
  11. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  12. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  13. package/cjs/components/MenuSeparator/MenuSeparator.js +1 -1
  14. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  15. package/cjs/components/SidePage/SidePage.js +1 -1
  16. package/cjs/components/SidePage/SidePage.js.map +1 -1
  17. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  18. package/cjs/components/Textarea/Textarea.js +2 -1
  19. package/cjs/components/Textarea/Textarea.js.map +1 -1
  20. package/cjs/components/Textarea/TextareaCounter.js +5 -1
  21. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  22. package/cjs/components/TokenInput/TokenInput.js +4 -6
  23. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  24. package/cjs/components/Tooltip/Tooltip.d.ts +1 -0
  25. package/cjs/components/Tooltip/Tooltip.js +7 -2
  26. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  27. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +2 -2
  28. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  29. package/cjs/components/TooltipMenu/TooltipMenu.md +1 -1
  30. package/cjs/internal/MenuMessage/MenuMessage.d.ts +2 -2
  31. package/cjs/internal/MenuMessage/MenuMessage.js +2 -1
  32. package/cjs/internal/MenuMessage/MenuMessage.js.map +1 -1
  33. package/components/Checkbox/Checkbox.md +1 -1
  34. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  35. package/components/DropdownMenu/DropdownMenu.d.ts +2 -2
  36. package/components/DropdownMenu/DropdownMenu.md +1 -1
  37. package/components/MenuHeader/MenuHeader/MenuHeader.js +1 -1
  38. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  39. package/components/MenuHeader/MenuHeader.d.ts +1 -1
  40. package/components/MenuItem/MenuItem/MenuItem.js +1 -1
  41. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  42. package/components/MenuItem/MenuItem.d.ts +1 -1
  43. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +1 -1
  44. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  45. package/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  46. package/components/SidePage/SidePage/SidePage.js +1 -1
  47. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  48. package/components/Textarea/Textarea/Textarea.js +2 -1
  49. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  50. package/components/Textarea/Textarea.d.ts +1 -0
  51. package/components/Textarea/TextareaCounter/TextareaCounter.js +2 -1
  52. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  53. package/components/TokenInput/TokenInput/TokenInput.js +3 -50
  54. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  55. package/components/Tooltip/Tooltip/Tooltip.js +4 -2
  56. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  57. package/components/Tooltip/Tooltip.d.ts +1 -0
  58. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  59. package/components/TooltipMenu/TooltipMenu.d.ts +2 -2
  60. package/components/TooltipMenu/TooltipMenu.md +1 -1
  61. package/internal/MenuMessage/MenuMessage/MenuMessage.js +2 -1
  62. package/internal/MenuMessage/MenuMessage/MenuMessage.js.map +1 -1
  63. package/internal/MenuMessage/MenuMessage.d.ts +2 -2
  64. package/package.json +2 -2
  65. /package/cjs/typings/{html-props.d.ts → html.d.ts} +0 -0
  66. /package/typings/{html-props.d.ts → html.d.ts} +0 -0
@@ -105,6 +105,7 @@ export interface TooltipState {
105
105
  export declare const TooltipDataTids: {
106
106
  readonly root: "Tooltip__root";
107
107
  readonly content: "Tooltip__content";
108
+ readonly crossIcon: "Tooltip__crossIcon";
108
109
  };
109
110
  declare type DefaultProps = Required<Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>>;
110
111
  export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {
@@ -137,7 +137,8 @@ var _Tooltip = require("./Tooltip.styles");var _class, _class2, _temp;
137
137
 
138
138
  var TooltipDataTids = {
139
139
  root: 'Tooltip__root',
140
- content: 'Tooltip__content' };exports.TooltipDataTids = TooltipDataTids;
140
+ content: 'Tooltip__content',
141
+ crossIcon: 'Tooltip__crossIcon' };exports.TooltipDataTids = TooltipDataTids;
141
142
 
142
143
 
143
144
  var Positions = [
@@ -273,6 +274,10 @@ Tooltip = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/funct
273
274
 
274
275
 
275
276
 
277
+
278
+
279
+
280
+
276
281
 
277
282
 
278
283
  getAnchorElement = function () {var _this$popupRef$curren;
@@ -555,7 +560,7 @@ Tooltip = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/funct
555
560
  }
556
561
 
557
562
  _this.close();
558
- };return _this;}var _proto = Tooltip.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var _this$getProps = this.getProps(),trigger = _this$getProps.trigger,allowedPositions = _this$getProps.allowedPositions,pos = _this$getProps.pos;if (trigger === 'closed' && this.state.opened) {this.close();}var posChanged = prevProps.pos !== pos;var allowedChanged = !(0, _lodash.default)(prevProps.allowedPositions, allowedPositions);if (posChanged || allowedChanged) {this.positions = null;}};_proto.componentWillUnmount = function componentWillUnmount() {this.clearHoverTimeout();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.tooltipPinOffset, popupMargin: theme.tooltipMargin, popupBorder: theme.tooltipBorder, popupBorderRadius: theme.tooltipBorderRadius, popupPinSize: theme.tooltipPinSize, popupPinOffsetX: theme.tooltipPinOffsetX, popupPinOffsetY: theme.tooltipPinOffsetY }, theme) }, _this2.renderMain());});};_proto.renderCloseButton = function renderCloseButton() {var hasCross = this.props.closeButton === undefined ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger) : this.props.closeButton;if (!hasCross) {return null;}return /*#__PURE__*/_react.default.createElement("div", { className: _Tooltip.styles.cross(this.theme), onClick: this.handleCloseButtonClick }, /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null));}; /**
563
+ };return _this;}var _proto = Tooltip.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var _this$getProps = this.getProps(),trigger = _this$getProps.trigger,allowedPositions = _this$getProps.allowedPositions,pos = _this$getProps.pos;if (trigger === 'closed' && this.state.opened) {this.close();}var posChanged = prevProps.pos !== pos;var allowedChanged = !(0, _lodash.default)(prevProps.allowedPositions, allowedPositions);if (posChanged || allowedChanged) {this.positions = null;}};_proto.componentWillUnmount = function componentWillUnmount() {this.clearHoverTimeout();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.tooltipPinOffset, popupMargin: theme.tooltipMargin, popupBorder: theme.tooltipBorder, popupBorderRadius: theme.tooltipBorderRadius, popupPinSize: theme.tooltipPinSize, popupPinOffsetX: theme.tooltipPinOffsetX, popupPinOffsetY: theme.tooltipPinOffsetY }, theme) }, _this2.renderMain());});};_proto.renderCloseButton = function renderCloseButton() {var hasCross = this.props.closeButton === undefined ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger) : this.props.closeButton;if (!hasCross) {return null;}return /*#__PURE__*/_react.default.createElement("div", { className: _Tooltip.styles.cross(this.theme), onClick: this.handleCloseButtonClick, "data-tid": TooltipDataTids.crossIcon }, /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null));}; /**
559
564
  * Программно открывает тултип.
560
565
  * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
561
566
  * @public
@@ -1 +1 @@
1
- {"version":3,"sources":["Tooltip.tsx"],"names":["TooltipDataTids","root","content","Positions","Tooltip","rootNode","getProps","defaultProps","state","opened","focused","hoverTimeout","contentElement","positions","clickedOutside","popupRef","React","createRef","renderContent","props","render","refContent","styles","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","node","open","setState","close","handleMouseEnter","event","isHoverAnchor","trigger","target","clearHoverTimeout","window","setTimeout","delay","handleMouseLeave","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","ThemeFactory","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","cross","show","hide","getPopupAndLayerProps","popupProps","layerProps","active","children","popup","renderPopup","disableAnimations","setRootNode","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray","DefaultPosition","isTestEnv"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Tooltip.styles';\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 * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos?: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger?: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions?: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations?: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n}\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n} as const;\n\nconst Positions: 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\ntype DefaultProps = Required<\n Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>\n>;\n\n@rootNode\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps: DefaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: Nullable<number> = null;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n const { trigger, allowedPositions, pos } = this.getProps();\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)} data-tid={TooltipDataTids.content}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\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 return (\n <div className={styles.cross(this.theme)} onClick={this.handleCloseButtonClick}>\n <CrossIcon />\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() {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `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() {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `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 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 refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const { allowedPositions, pos } = this.getProps();\n const index = allowedPositions.indexOf(pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\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 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 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\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 default:\n throw new Error('Unknown trigger specified: ' + trigger);\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\n this.hoverTimeout = window.setTimeout(this.open, Tooltip.delay);\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 = window.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 && event.target instanceof 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"]}
1
+ {"version":3,"sources":["Tooltip.tsx"],"names":["TooltipDataTids","root","content","crossIcon","Positions","Tooltip","rootNode","getProps","defaultProps","state","opened","focused","hoverTimeout","contentElement","positions","clickedOutside","popupRef","React","createRef","renderContent","props","render","refContent","styles","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","node","open","setState","close","handleMouseEnter","event","isHoverAnchor","trigger","target","clearHoverTimeout","window","setTimeout","delay","handleMouseLeave","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","ThemeFactory","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","cross","show","hide","getPopupAndLayerProps","popupProps","layerProps","active","children","popup","renderPopup","disableAnimations","setRootNode","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray","DefaultPosition","isTestEnv"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Tooltip.styles';\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 * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos?: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger?: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions?: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations?: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n}\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 Positions: 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\ntype DefaultProps = Required<\n Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>\n>;\n\n@rootNode\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps: DefaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: Nullable<number> = null;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n const { trigger, allowedPositions, pos } = this.getProps();\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)} data-tid={TooltipDataTids.content}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\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 return (\n <div\n className={styles.cross(this.theme)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n <CrossIcon />\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() {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `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() {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `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 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 refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const { allowedPositions, pos } = this.getProps();\n const index = allowedPositions.indexOf(pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\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 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 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\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 default:\n throw new Error('Unknown trigger specified: ' + trigger);\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\n this.hoverTimeout = window.setTimeout(this.open, Tooltip.delay);\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 = window.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 && event.target instanceof 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"]}
@@ -21,13 +21,13 @@ export interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onO
21
21
  /**
22
22
  * Произвольный элемент, который будет отрендерен в шапке меню.
23
23
  *
24
- * _Примечание_: контрол [`MenuHeader`](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.
24
+ * _Примечание_: контрол [MenuHeader](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.
25
25
  */
26
26
  header?: React.ReactNode;
27
27
  /**
28
28
  * Произвольный элемент, который будет отрендерен в подвале меню.
29
29
  *
30
- * Перед элементом переданным в `footer` будет отрендерен [`MenuSeparator`](#/Components/MenuSeparator).
30
+ * Перед элементом переданным в `footer` будет отрендерен [MenuSeparator](#/Components/MenuSeparator).
31
31
  */
32
32
  footer?: React.ReactNode;
33
33
  /** Список позиций доступных для расположения выпадашки относительно `caption`.
@@ -1 +1 @@
1
- {"version":3,"sources":["TooltipMenu.tsx"],"names":["TooltipMenuDataTids","root","TooltipMenu","rootNode","props","getProps","defaultProps","caption","isProductionEnv","Error","render","theme","ThemeFactory","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","onOpen","onClose","disableAnimations","children","React","Component","__KONTUR_REACT_UI__","isTestEnv"],"mappings":"uWAAA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,gE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B,C;;;;;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;AAEaC,W,OADZC,kB;;;;;;;;;;AAWC,uBAAYC,KAAZ,EAAqC;AACnC,wCAAMA,KAAN,UADmC,MAF7BC,QAE6B,GAFlB,0CAAkBH,WAAW,CAACI,YAA9B,CAEkB;;AAGnC,QAAI,CAACF,KAAK,CAACG,OAAP,IAAkB,CAACC,mCAAvB,EAAwC;AACtC,YAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,uCAAC,0BAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEC,2BAAaC,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEH,KAAK,CAACI,oBADxB;AAEEC,cAAAA,WAAW,EAAEL,KAAK,CAACM,iBAFrB;AAGEC,cAAAA,YAAY,EAAEP,KAAK,CAACQ,kBAHtB,EADK;;AAMLR,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACS,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,G;;AAEMA,EAAAA,U,GAAP,sBAAoB;AAClB,QAAI,CAAC,KAAKhB,KAAL,CAAWG,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,mCAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKc,WAAjC,IAAkD,KAAKjB,KAAvD;AACE,mCAAC,oBAAD;AACE,oBAAUJ,mBAAmB,CAACC,IADhC;AAEE,QAAA,aAAa,EAAE,KAAKG,KAAL,CAAWkB,aAF5B;AAGE,QAAA,SAAS,EAAE,KAAKlB,KAAL,CAAWmB,SAHxB;AAIE,QAAA,OAAO,EAAE,KAAKnB,KAAL,CAAWG,OAJtB;AAKE,QAAA,MAAM,EAAE,KAAKH,KAAL,CAAWoB,MALrB;AAME,QAAA,MAAM,EAAE,KAAKpB,KAAL,CAAWqB,MANrB;AAOE,QAAA,SAAS,EAAE,KAAKrB,KAAL,CAAWsB,SAPxB;AAQE,QAAA,MAAM,EAAE,KAAKtB,KAAL,CAAWuB,MARrB;AASE,QAAA,OAAO,EAAE,KAAKvB,KAAL,CAAWwB,OATtB;AAUE,QAAA,WAAW,MAVb;AAWE,QAAA,iBAAiB,EAAE,KAAKvB,QAAL,GAAgBwB,iBAXrC;;AAaG,WAAKzB,KAAL,CAAW0B,QAbd,CADF,CADF;;;;AAmBD,G,sBAjE8BC,eAAMC,S,WACvBC,mB,GAAsB,a,UAGtB3B,Y,GAA6B,EACzCuB,iBAAiB,EAAEK,6BADsB,E","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | unknown | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [`MenuHeader`](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [`MenuSeparator`](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /** Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n */\n positions?: PopupPositionsType[];\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\nexport const TooltipMenuDataTids = {\n root: 'TooltipMenu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TooltipMenuProps, 'disableAnimations'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\n@rootNode\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n private setRootNode!: TSetRootNode;\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(TooltipMenu.defaultProps);\n\n constructor(props: TooltipMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n data-tid={TooltipMenuDataTids.root}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n positions={this.props.positions}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n popupHasPin\n disableAnimations={this.getProps().disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["TooltipMenu.tsx"],"names":["TooltipMenuDataTids","root","TooltipMenu","rootNode","props","getProps","defaultProps","caption","isProductionEnv","Error","render","theme","ThemeFactory","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","onOpen","onClose","disableAnimations","children","React","Component","__KONTUR_REACT_UI__","isTestEnv"],"mappings":"uWAAA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,gE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B,C;;;;;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;AAEaC,W,OADZC,kB;;;;;;;;;;AAWC,uBAAYC,KAAZ,EAAqC;AACnC,wCAAMA,KAAN,UADmC,MAF7BC,QAE6B,GAFlB,0CAAkBH,WAAW,CAACI,YAA9B,CAEkB;;AAGnC,QAAI,CAACF,KAAK,CAACG,OAAP,IAAkB,CAACC,mCAAvB,EAAwC;AACtC,YAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,uCAAC,0BAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEC,2BAAaC,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEH,KAAK,CAACI,oBADxB;AAEEC,cAAAA,WAAW,EAAEL,KAAK,CAACM,iBAFrB;AAGEC,cAAAA,YAAY,EAAEP,KAAK,CAACQ,kBAHtB,EADK;;AAMLR,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACS,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,G;;AAEMA,EAAAA,U,GAAP,sBAAoB;AAClB,QAAI,CAAC,KAAKhB,KAAL,CAAWG,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,mCAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKc,WAAjC,IAAkD,KAAKjB,KAAvD;AACE,mCAAC,oBAAD;AACE,oBAAUJ,mBAAmB,CAACC,IADhC;AAEE,QAAA,aAAa,EAAE,KAAKG,KAAL,CAAWkB,aAF5B;AAGE,QAAA,SAAS,EAAE,KAAKlB,KAAL,CAAWmB,SAHxB;AAIE,QAAA,OAAO,EAAE,KAAKnB,KAAL,CAAWG,OAJtB;AAKE,QAAA,MAAM,EAAE,KAAKH,KAAL,CAAWoB,MALrB;AAME,QAAA,MAAM,EAAE,KAAKpB,KAAL,CAAWqB,MANrB;AAOE,QAAA,SAAS,EAAE,KAAKrB,KAAL,CAAWsB,SAPxB;AAQE,QAAA,MAAM,EAAE,KAAKtB,KAAL,CAAWuB,MARrB;AASE,QAAA,OAAO,EAAE,KAAKvB,KAAL,CAAWwB,OATtB;AAUE,QAAA,WAAW,MAVb;AAWE,QAAA,iBAAiB,EAAE,KAAKvB,QAAL,GAAgBwB,iBAXrC;;AAaG,WAAKzB,KAAL,CAAW0B,QAbd,CADF,CADF;;;;AAmBD,G,sBAjE8BC,eAAMC,S,WACvBC,mB,GAAsB,a,UAGtB3B,Y,GAA6B,EACzCuB,iBAAiB,EAAEK,6BADsB,E","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | unknown | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [MenuHeader](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [MenuSeparator](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /** Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n */\n positions?: PopupPositionsType[];\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\nexport const TooltipMenuDataTids = {\n root: 'TooltipMenu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TooltipMenuProps, 'disableAnimations'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\n@rootNode\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n private setRootNode!: TSetRootNode;\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(TooltipMenu.defaultProps);\n\n constructor(props: TooltipMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n data-tid={TooltipMenuDataTids.root}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n positions={this.props.positions}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n popupHasPin\n disableAnimations={this.getProps().disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
@@ -180,7 +180,7 @@ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui
180
180
  </TooltipMenu>;
181
181
  ```
182
182
 
183
- Условный рендер элементов тултип-меню (с сохранением поведения [`MenuItem`](#/Components/MenuItem)).
183
+ Условный рендер элементов тултип-меню (с сохранением поведения [MenuItem](#/Components/MenuItem)).
184
184
 
185
185
  ```jsx harmony
186
186
  import {Button, MenuItem, Gapped, MenuSeparator} from '@skbkontur/react-ui';
@@ -2,9 +2,9 @@ import React from 'react';
2
2
  import { CommonProps } from '../CommonWrapper';
3
3
  export interface MenuMessageProps extends CommonProps {
4
4
  children: React.ReactNode;
5
- as?: keyof JSX.IntrinsicElements;
5
+ as?: React.ElementType;
6
6
  }
7
7
  export declare const MenuMessageDataTids: {
8
8
  readonly root: "MenuMessage__root";
9
9
  };
10
- export declare const MenuMessage: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<HTMLParagraphElement, MenuMessageProps>;
10
+ export declare const MenuMessage: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<HTMLOrSVGElement, MenuMessageProps>;
@@ -19,13 +19,14 @@ var MenuMessageDataTids = {
19
19
 
20
20
  var MenuMessage = (0, _forwardRefAndName.forwardRefAndName)(
21
21
  'MenuMessage',
22
- function (_ref) {var _cx;var children = _ref.children,className = _ref.className,_ref$as = _ref.as,Tag = _ref$as === void 0 ? 'p' : _ref$as,rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
22
+ function (_ref, ref) {var _cx;var children = _ref.children,className = _ref.className,_ref$as = _ref.as,Tag = _ref$as === void 0 ? 'p' : _ref$as,rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
23
23
  var _useResponsiveLayout = (0, _ResponsiveLayout.useResponsiveLayout)(),isMobile = _useResponsiveLayout.isMobile;
24
24
 
25
25
  var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
26
26
 
27
27
  return /*#__PURE__*/(
28
28
  _react.default.createElement(Tag, (0, _extends2.default)({
29
+ ref: ref,
29
30
  "data-tid": MenuMessageDataTids.root,
30
31
  className: (0, _Emotion.cx)((_cx = {}, _cx[
31
32
 
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuMessage.tsx"],"names":["MenuMessageDataTids","root","MenuMessage","children","className","as","Tag","rest","isMobile","theme","ThemeContext","styles","rootMobile"],"mappings":"qYAAA;;AAEA;AACA;AACA;AACA;;;AAGA,mD;;;;;;;AAOO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B,C;;;AAIA,IAAMC,WAAW,GAAG;AACzB,aADyB;AAEzB,gBAAqD,aAAlDC,QAAkD,QAAlDA,QAAkD,CAAxCC,SAAwC,QAAxCA,SAAwC,gBAA7BC,EAA6B,CAAzBC,GAAyB,wBAAnB,GAAmB,WAAXC,IAAW;AACnD,6BAAqB,4CAArB,CAAQC,QAAR,wBAAQA,QAAR;;AAEA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA;AACE,iCAAC,GAAD;AACE,kBAAUV,mBAAmB,CAACC,IADhC;AAEE,MAAA,SAAS,EAAE;;AAENU,0BAAOV,IAAP,CAAYQ,KAAZ,CAFM,IAEe,IAFf;AAGNE,0BAAOC,UAAP,CAAkBH,KAAlB,CAHM,IAGqBD,QAHrB;;AAKTJ,MAAAA,SALS,CAFb;;AASMG,IAAAA,IATN;;AAWGJ,IAAAA,QAXH,CADF;;;AAeD,CAtBwB,CAApB,C","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { useResponsiveLayout } from '../../components/ResponsiveLayout';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps } from '../CommonWrapper';\n\nimport { styles } from './MenuMessage.styles';\n\nexport interface MenuMessageProps extends CommonProps {\n children: React.ReactNode;\n as?: keyof JSX.IntrinsicElements;\n}\n\nexport const MenuMessageDataTids = {\n root: 'MenuMessage__root',\n} as const;\n\nexport const MenuMessage = forwardRefAndName<HTMLParagraphElement, MenuMessageProps>(\n 'MenuMessage',\n ({ children, className, as: Tag = 'p', ...rest }) => {\n const { isMobile } = useResponsiveLayout();\n\n const theme = useContext(ThemeContext);\n\n return (\n <Tag\n data-tid={MenuMessageDataTids.root}\n className={cx(\n {\n [styles.root(theme)]: true,\n [styles.rootMobile(theme)]: isMobile,\n },\n className,\n )}\n {...rest}\n >\n {children}\n </Tag>\n );\n },\n);\n"]}
1
+ {"version":3,"sources":["MenuMessage.tsx"],"names":["MenuMessageDataTids","root","MenuMessage","ref","children","className","as","Tag","rest","isMobile","theme","ThemeContext","styles","rootMobile"],"mappings":"qYAAA;;AAEA;AACA;AACA;AACA;;;AAGA,mD;;;;;;;AAOO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B,C;;;AAIA,IAAMC,WAAW,GAAG;AACzB,aADyB;AAEzB,gBAAkDC,GAAlD,EAA0D,aAAvDC,QAAuD,QAAvDA,QAAuD,CAA7CC,SAA6C,QAA7CA,SAA6C,gBAAlCC,EAAkC,CAA9BC,GAA8B,wBAAxB,GAAwB,WAAhBC,IAAgB;AACxD,6BAAqB,4CAArB,CAAQC,QAAR,wBAAQA,QAAR;;AAEA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA;AACE,iCAAC,GAAD;AACE,MAAA,GAAG,EAAER,GADP;AAEE,kBAAUH,mBAAmB,CAACC,IAFhC;AAGE,MAAA,SAAS,EAAE;;AAENW,0BAAOX,IAAP,CAAYS,KAAZ,CAFM,IAEe,IAFf;AAGNE,0BAAOC,UAAP,CAAkBH,KAAlB,CAHM,IAGqBD,QAHrB;;AAKTJ,MAAAA,SALS,CAHb;;AAUMG,IAAAA,IAVN;;AAYGJ,IAAAA,QAZH,CADF;;;AAgBD,CAvBwB,CAApB,C","sourcesContent":["import React, { useContext } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { useResponsiveLayout } from '../../components/ResponsiveLayout';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps } from '../CommonWrapper';\n\nimport { styles } from './MenuMessage.styles';\n\nexport interface MenuMessageProps extends CommonProps {\n children: React.ReactNode;\n as?: React.ElementType;\n}\n\nexport const MenuMessageDataTids = {\n root: 'MenuMessage__root',\n} as const;\n\nexport const MenuMessage = forwardRefAndName<HTMLOrSVGElement, MenuMessageProps>(\n 'MenuMessage',\n ({ children, className, as: Tag = 'p', ...rest }, ref) => {\n const { isMobile } = useResponsiveLayout();\n\n const theme = useContext(ThemeContext);\n\n return (\n <Tag\n ref={ref}\n data-tid={MenuMessageDataTids.root}\n className={cx(\n {\n [styles.root(theme)]: true,\n [styles.rootMobile(theme)]: isMobile,\n },\n className,\n )}\n {...rest}\n >\n {children}\n </Tag>\n );\n },\n);\n"]}
@@ -72,7 +72,7 @@ let checkboxInstance = React.useRef(null);
72
72
  </Gapped>
73
73
  ```
74
74
 
75
- Чекбокс может находится в неопределённом состоянии. <br/> Это состояние полностью копирует поведение состояния [`indeterminate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) из HTML.
75
+ Чекбокс может находится в неопределённом состоянии. <br/> Это состояние полностью копирует поведение состояния `indeterminate` ([подробнее](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#indeterminate_state_checkboxes)) из HTML.
76
76
 
77
77
  Это состояние влияет только на внешний вид и не влияет на состояние `checked`.
78
78
 
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownMenu.tsx"],"names":["React","ThemeContext","ThemeFactory","PopupMenu","isProductionEnv","isTestEnv","CommonWrapper","rootNode","createPropsGetter","DropdownMenu","props","getProps","defaultProps","popupMenu","open","close","refPopupMenu","ref","caption","Error","render","theme","create","popupMargin","renderMain","positions","disableAnimations","setRootNode","menuMaxHeight","menuWidth","header","footer","width","onClose","onOpen","children","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nexport interface DropdownMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n /** Максимальная высота меню */\n menuMaxHeight?: React.CSSProperties['maxWidth'];\n /** Ширина меню */\n menuWidth?: React.CSSProperties['width'];\n /** Ширина caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [`MenuHeader`](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [`MenuSeparator`](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /**\n * Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions?: PopupPositionsType[];\n\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\ntype DefaultProps = Required<Pick<DropdownMenuProps, 'disableAnimations' | 'positions'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент\n */\n@rootNode\nexport class DropdownMenu extends React.Component<DropdownMenuProps> {\n public static __KONTUR_REACT_UI__ = 'DropdownMenu';\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n };\n\n private getProps = createPropsGetter(DropdownMenu.defaultProps);\n\n private popupMenu: Nullable<PopupMenu> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: DropdownMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: '0px',\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n const { positions, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n ref={this.refPopupMenu}\n caption={this.props.caption}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n popupHasPin={false}\n positions={positions}\n disableAnimations={disableAnimations}\n header={this.props.header}\n footer={this.props.footer}\n width={this.props.width}\n onClose={this.props.onClose}\n onOpen={this.props.onOpen}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n public open = (): void => {\n if (this.popupMenu) {\n this.popupMenu.open();\n }\n };\n\n public close = (): void => {\n if (this.popupMenu) {\n this.popupMenu.close();\n }\n };\n\n private refPopupMenu = (ref: Nullable<PopupMenu>) => (this.popupMenu = ref);\n}\n"]}
1
+ {"version":3,"sources":["DropdownMenu.tsx"],"names":["React","ThemeContext","ThemeFactory","PopupMenu","isProductionEnv","isTestEnv","CommonWrapper","rootNode","createPropsGetter","DropdownMenu","props","getProps","defaultProps","popupMenu","open","close","refPopupMenu","ref","caption","Error","render","theme","create","popupMargin","renderMain","positions","disableAnimations","setRootNode","menuMaxHeight","menuWidth","header","footer","width","onClose","onOpen","children","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nexport interface DropdownMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n /** Максимальная высота меню */\n menuMaxHeight?: React.CSSProperties['maxWidth'];\n /** Ширина меню */\n menuWidth?: React.CSSProperties['width'];\n /** Ширина caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [MenuHeader](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [MenuSeparator](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /**\n * Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions?: PopupPositionsType[];\n\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\ntype DefaultProps = Required<Pick<DropdownMenuProps, 'disableAnimations' | 'positions'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент\n */\n@rootNode\nexport class DropdownMenu extends React.Component<DropdownMenuProps> {\n public static __KONTUR_REACT_UI__ = 'DropdownMenu';\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n };\n\n private getProps = createPropsGetter(DropdownMenu.defaultProps);\n\n private popupMenu: Nullable<PopupMenu> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: DropdownMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: '0px',\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n const { positions, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n ref={this.refPopupMenu}\n caption={this.props.caption}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n popupHasPin={false}\n positions={positions}\n disableAnimations={disableAnimations}\n header={this.props.header}\n footer={this.props.footer}\n width={this.props.width}\n onClose={this.props.onClose}\n onOpen={this.props.onOpen}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n public open = (): void => {\n if (this.popupMenu) {\n this.popupMenu.open();\n }\n };\n\n public close = (): void => {\n if (this.popupMenu) {\n this.popupMenu.close();\n }\n };\n\n private refPopupMenu = (ref: Nullable<PopupMenu>) => (this.popupMenu = ref);\n}\n"]}
@@ -19,13 +19,13 @@ export interface DropdownMenuProps extends CommonProps, Pick<PopupMenuProps, 'on
19
19
  /**
20
20
  * Произвольный элемент, который будет отрендерен в шапке меню.
21
21
  *
22
- * _Примечание_: контрол [`MenuHeader`](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.
22
+ * _Примечание_: контрол [MenuHeader](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.
23
23
  */
24
24
  header?: React.ReactNode;
25
25
  /**
26
26
  * Произвольный элемент, который будет отрендерен в подвале меню.
27
27
  *
28
- * Перед элементом переданным в `footer` будет отрендерен [`MenuSeparator`](#/Components/MenuSeparator).
28
+ * Перед элементом переданным в `footer` будет отрендерен [MenuSeparator](#/Components/MenuSeparator).
29
29
  */
30
30
  footer?: React.ReactNode;
31
31
  /**
@@ -191,7 +191,7 @@ const renderCaption = ({ openMenu, closeMenu }) => {
191
191
  </DropdownMenu>
192
192
  ```
193
193
 
194
- Условный рендер элементов меню (с сохранением поведения [`MenuItem`](#/Components/MenuItem)).
194
+ Условный рендер элементов меню (с сохранением поведения [MenuItem](#/Components/MenuItem)).
195
195
 
196
196
  ```jsx harmony
197
197
  import {Button, MenuItem, Gapped, MenuSeparator} from '@skbkontur/react-ui';
@@ -13,7 +13,7 @@ export var MenuHeaderDataTids = {
13
13
  *
14
14
  * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.
15
15
  *
16
- * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
16
+ * Сущности в которых может быть использован `MenuHeader`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).
17
17
  */
18
18
 
19
19
  function MenuHeader(_ref) {
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuHeader.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","cx","styles","MenuHeaderDataTids","root","MenuHeader","_enableIconPadding","children","rest","theme","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"uJAAA,OAAOA,KAAP,IAA2BC,UAA3B,QAA6C,OAA7C;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;;;;;;AAOA,OAAO,IAAMC,kBAAkB,GAAG;AAChCC,EAAAA,IAAI,EAAE,kBAD0B,EAA3B;;;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAGX,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBS,IAAnB;AACE;AACE,kBAAUL,kBAAkB,CAACC,IAD/B;AAEE,MAAA,SAAS,EAAEH,EAAE;AACVC,MAAAA,MAAM,CAACE,IAAP,CAAYK,KAAZ,CADU,IACW,IADX;AAEVP,MAAAA,MAAM,CAACQ,eAAP,CAAuBD,KAAvB,CAFU,IAEsBH,kBAFtB,OAFf;;;AAOGC,IAAAA,QAPH,CADF,CADF;;;;AAaD;;AAEDF,UAAU,CAACM,mBAAX,GAAiC,YAAjC;AACAN,UAAU,CAACO,eAAX,GAA6B,IAA7B;;AAEA,SAASP,UAAT;;AAEA,OAAO,IAAMQ,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,aAAAjB,KAAK,CAACkB,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\nexport const MenuHeaderDataTids = {\n root: 'MenuHeader__root',\n} as const;\n\n/**\n * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.\n *\n * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.\n *\n * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuHeader({ _enableIconPadding = false, children, ...rest }: MenuHeaderProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...rest}>\n <div\n data-tid={MenuHeaderDataTids.root}\n className={cx({\n [styles.root(theme)]: true,\n [styles.withLeftPadding(theme)]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n}\n\nMenuHeader.__KONTUR_REACT_UI__ = 'MenuHeader';\nMenuHeader.__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
1
+ {"version":3,"sources":["MenuHeader.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","cx","styles","MenuHeaderDataTids","root","MenuHeader","_enableIconPadding","children","rest","theme","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"uJAAA,OAAOA,KAAP,IAA2BC,UAA3B,QAA6C,OAA7C;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;;;;;;AAOA,OAAO,IAAMC,kBAAkB,GAAG;AAChCC,EAAAA,IAAI,EAAE,kBAD0B,EAA3B;;;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAGX,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBS,IAAnB;AACE;AACE,kBAAUL,kBAAkB,CAACC,IAD/B;AAEE,MAAA,SAAS,EAAEH,EAAE;AACVC,MAAAA,MAAM,CAACE,IAAP,CAAYK,KAAZ,CADU,IACW,IADX;AAEVP,MAAAA,MAAM,CAACQ,eAAP,CAAuBD,KAAvB,CAFU,IAEsBH,kBAFtB,OAFf;;;AAOGC,IAAAA,QAPH,CADF,CADF;;;;AAaD;;AAEDF,UAAU,CAACM,mBAAX,GAAiC,YAAjC;AACAN,UAAU,CAACO,eAAX,GAA6B,IAA7B;;AAEA,SAASP,UAAT;;AAEA,OAAO,IAAMQ,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,aAAAjB,KAAK,CAACkB,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\nexport const MenuHeaderDataTids = {\n root: 'MenuHeader__root',\n} as const;\n\n/**\n * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.\n *\n * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.\n *\n * Сущности в которых может быть использован `MenuHeader`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\nfunction MenuHeader({ _enableIconPadding = false, children, ...rest }: MenuHeaderProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...rest}>\n <div\n data-tid={MenuHeaderDataTids.root}\n className={cx({\n [styles.root(theme)]: true,\n [styles.withLeftPadding(theme)]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n}\n\nMenuHeader.__KONTUR_REACT_UI__ = 'MenuHeader';\nMenuHeader.__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
@@ -12,7 +12,7 @@ export declare const MenuHeaderDataTids: {
12
12
  *
13
13
  * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.
14
14
  *
15
- * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
15
+ * Сущности в которых может быть использован `MenuHeader`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).
16
16
  */
17
17
  declare function MenuHeader({ _enableIconPadding, children, ...rest }: MenuHeaderProps): JSX.Element;
18
18
  declare namespace MenuHeader {
@@ -24,7 +24,7 @@ export var MenuItemDataTids = {
24
24
  *
25
25
  * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
26
26
  *
27
- * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
27
+ * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).
28
28
  */
29
29
 
30
30
  export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","styles","MenuItemDataTids","root","comment","MenuItem","state","iconOffsetTop","mouseEntered","rootRef","renderMain","props","link","icon","loose","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","href","disabled","ariaDescribedby","rel","rest","hover","iconElement","top","theme","className","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","setRootRef","handleMouseEnterFix","handleMouseLeave","undefined","mobileContentWithIcon","commentHover","e","element","render","setRootNode","componentDidMount","setState","window","getComputedStyle","getPropertyValue","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n public state = {\n iconOffsetTop: 0,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.rootRef) {\n this.setState({ iconOffsetTop: window.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n 'aria-describedby': ariaDescribedby,\n rel = this.props.href && isExternalLink(this.props.href) ? 'noopener noreferrer' : this.props.rel,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div style={{ top: this.state.iconOffsetTop }} className={cx({ [styles.icon(this.theme)]: true })}>\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n aria-describedby={ariaDescribedby}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n >\n {content}\n </span>\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
1
+ {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","styles","MenuItemDataTids","root","comment","MenuItem","state","iconOffsetTop","mouseEntered","rootRef","renderMain","props","link","icon","loose","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","href","disabled","ariaDescribedby","rel","rest","hover","iconElement","top","theme","className","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","setRootRef","handleMouseEnterFix","handleMouseLeave","undefined","mobileContentWithIcon","commentHover","e","element","render","setRootNode","componentDidMount","setState","window","getComputedStyle","getPropertyValue","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n public state = {\n iconOffsetTop: 0,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.rootRef) {\n this.setState({ iconOffsetTop: window.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n 'aria-describedby': ariaDescribedby,\n rel = this.props.href && isExternalLink(this.props.href) ? 'noopener noreferrer' : this.props.rel,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div style={{ top: this.state.iconOffsetTop }} className={cx({ [styles.icon(this.theme)]: true })}>\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n aria-describedby={ariaDescribedby}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n >\n {content}\n </span>\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
@@ -82,7 +82,7 @@ export declare const MenuItemDataTids: {
82
82
  *
83
83
  * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
84
84
  *
85
- * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
85
+ * Сущности в которых может быть использован `MenuItem`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).
86
86
  */
87
87
  export declare class MenuItem extends React.Component<MenuItemProps> {
88
88
  static __KONTUR_REACT_UI__: string;
@@ -10,7 +10,7 @@ export var MenuSeparatorDataTids = {
10
10
  /**
11
11
  * Добавляет разделительную линию между элементами меню.
12
12
  *
13
- * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
13
+ * Сущности в которых может быть использован `MenuSeparator`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).
14
14
  */
15
15
 
16
16
  function MenuSeparator(props) {
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","cx","ThemeContext","CommonWrapper","ResponsiveLayout","styles","MenuSeparatorDataTids","root","MenuSeparator","props","theme","isMobile","rootMobile","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,gBAAT,QAAiC,qBAAjC;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;;AAIA,OAAO,IAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,qBAD6B,EAA9B;;AAGP;AACA;AACA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGV,UAAU,CAACE,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBO,KAAnB;AACE,wBAAC,gBAAD;AACG,oBAAkB,aAAfE,QAAe,QAAfA,QAAe;AACjB;AACE;AACE,sBAAUL,qBAAqB,CAACC,IADlC;AAEE,UAAA,SAAS,EAAEN,EAAE,gBAAII,MAAM,CAACE,IAAP,CAAYG,KAAZ,CAAJ,IAAyB,IAAzB,MAAgCL,MAAM,CAACO,UAAP,CAAkBF,KAAlB,CAAhC,IAA2DC,QAA3D,OAFf,GADF;;;AAMD,KARH,CADF,CADF;;;;AAcD;;AAEDH,aAAa,CAACK,mBAAd,GAAoC,eAApC;;AAEA,SAASL,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n\nexport const MenuSeparatorDataTids = {\n root: 'MenuSeparator__root',\n} as const;\n/**\n * Добавляет разделительную линию между элементами меню.\n *\n * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuSeparator(props: MenuSeparatorProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...props}>\n <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <div\n data-tid={MenuSeparatorDataTids.root}\n className={cx({ [styles.root(theme)]: true, [styles.rootMobile(theme)]: isMobile })}\n />\n );\n }}\n </ResponsiveLayout>\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
1
+ {"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","cx","ThemeContext","CommonWrapper","ResponsiveLayout","styles","MenuSeparatorDataTids","root","MenuSeparator","props","theme","isMobile","rootMobile","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,gBAAT,QAAiC,qBAAjC;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;;AAIA,OAAO,IAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,qBAD6B,EAA9B;;AAGP;AACA;AACA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGV,UAAU,CAACE,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBO,KAAnB;AACE,wBAAC,gBAAD;AACG,oBAAkB,aAAfE,QAAe,QAAfA,QAAe;AACjB;AACE;AACE,sBAAUL,qBAAqB,CAACC,IADlC;AAEE,UAAA,SAAS,EAAEN,EAAE,gBAAII,MAAM,CAACE,IAAP,CAAYG,KAAZ,CAAJ,IAAyB,IAAzB,MAAgCL,MAAM,CAACO,UAAP,CAAkBF,KAAlB,CAAhC,IAA2DC,QAA3D,OAFf,GADF;;;AAMD,KARH,CADF,CADF;;;;AAcD;;AAEDH,aAAa,CAACK,mBAAd,GAAoC,eAApC;;AAEA,SAASL,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n\nexport const MenuSeparatorDataTids = {\n root: 'MenuSeparator__root',\n} as const;\n/**\n * Добавляет разделительную линию между элементами меню.\n *\n * Сущности в которых может быть использован `MenuSeparator`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).\n */\nfunction MenuSeparator(props: MenuSeparatorProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...props}>\n <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <div\n data-tid={MenuSeparatorDataTids.root}\n className={cx({ [styles.root(theme)]: true, [styles.rootMobile(theme)]: isMobile })}\n />\n );\n }}\n </ResponsiveLayout>\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
@@ -6,7 +6,7 @@ export declare const MenuSeparatorDataTids: {
6
6
  /**
7
7
  * Добавляет разделительную линию между элементами меню.
8
8
  *
9
- * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
9
+ * Сущности в которых может быть использован `MenuSeparator`: [DropdownMenu](#/Components/DropdownMenu), [Kebab](#/Components/Kebab), [TooltipMenu](#/Components/TooltipMenu) и [Select](#/Components/Select).
10
10
  */
11
11
  declare function MenuSeparator(props: MenuSeparatorProps): JSX.Element;
12
12
  declare namespace MenuSeparator {
@@ -229,7 +229,7 @@ export var SidePage = /*#__PURE__*/function (_React$Component) {
229
229
  var disableAnimations = this.getProps().disableAnimations;
230
230
  return /*#__PURE__*/React.createElement(RenderContainer, null, /*#__PURE__*/React.createElement(CommonWrapper, this.props, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ResponsiveLayout, null, function (_ref) {
231
231
  var isMobile = _ref.isMobile;
232
- return /*#__PURE__*/React.createElement(React.Fragment, null, blockBackground && _this3.renderShadow(), /*#__PURE__*/React.createElement(CSSTransition, {
232
+ return /*#__PURE__*/React.createElement(React.Fragment, null, !isMobile && blockBackground && _this3.renderShadow(), /*#__PURE__*/React.createElement(CSSTransition, {
233
233
  "in": true,
234
234
  classNames: _this3.getTransitionNames(),
235
235
  appear: !disableAnimations,