@skbkontur/react-ui 5.6.6 → 5.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/cjs/components/Calendar/CalendarDay.js +2 -2
- package/cjs/components/Calendar/CalendarDay.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +18 -19
- package/cjs/components/Dropdown/Dropdown.js +2 -3
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/FxInput/FxInput.js +1 -2
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +20 -23
- package/cjs/components/GlobalLoader/GlobalLoader.js +4 -7
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +10 -10
- package/cjs/components/Kebab/Kebab.js +1 -2
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +9 -9
- package/cjs/components/Loader/Loader.js +3 -3
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +2 -2
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Tabs/Indicator.styles.d.ts +1 -0
- package/cjs/components/Tabs/Indicator.styles.js +8 -1
- package/cjs/components/Tabs/Indicator.styles.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +11 -10
- package/cjs/components/Tabs/Tab.js +3 -2
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +7 -12
- package/cjs/components/Tabs/Tabs.js +1 -6
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Toast/Toast.d.ts +4 -4
- package/cjs/components/Toast/Toast.js +2 -2
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +1 -1
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +1 -2
- package/cjs/internal/Menu/Menu.js +0 -1
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +3 -7
- package/cjs/internal/PopupMenu/PopupMenu.js +0 -4
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/components/Calendar/CalendarDay/CalendarDay.js +1 -1
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js +2 -2
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +18 -19
- package/components/FxInput/FxInput/FxInput.js +3 -1
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +4 -7
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +20 -23
- package/components/Kebab/Kebab/Kebab.js +1 -2
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +10 -10
- package/components/Loader/Loader/Loader.js +3 -3
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +9 -9
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +2 -2
- package/components/Tabs/Indicator.styles/Indicator.styles.js +4 -1
- package/components/Tabs/Indicator.styles/Indicator.styles.js.map +1 -1
- package/components/Tabs/Indicator.styles.d.ts +1 -0
- package/components/Tabs/Tab/Tab.js +3 -1
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +11 -10
- package/components/Tabs/Tabs/Tabs.js +1 -6
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +7 -12
- package/components/Toast/Toast/Toast.js +2 -2
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.d.ts +4 -4
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +1 -1
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +1 -2
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +3 -7
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","warning","globalObject","isNullable","ThemeFactory","Popup","RenderLayer","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","rootNode","createPropsGetter","CloseButtonIcon","isInstanceOf","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","cx","isThemeGTE","withSize","styles","DEFAULT_DELAY","TooltipDataTids","root","content","crossIcon","DefaultPositions","Tooltip","_class","_Tooltip","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","opened","focused","contentElement","clickedOutside","popupRef","createRef","renderContent","props","render","createElement","ref","refContent","className","tooltipContent","theme","sizeVariables","contentStyle","renderCloseButton","getAnchorElement","_this$popupRef$curren","current","anchorElement","getPositions","allowedPositions","filter","item","includes","node","open","setState","close","handleMouseEnter","event","isHoverAnchor","trigger","target","clearHoverTimeout","hoverTimeout","setTimeout","delayBeforeShow","handleMouseLeave","relatedTarget","delay","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","getSizeVariables","size","closeButtonStyle","closeButtonSmall","tooltipContentSmall","borderRadius","tooltipBorderRadiusSmall","pinSize","tooltipPinSizeSmall","pinOffsetX","tooltipPinOffsetXSmall","pinOffsetY","tooltipPinOffsetYSmall","margin","tooltipMarginSmall","closeButtonMedium","tooltipContentMedium","tooltipBorderRadiusMedium","tooltipPinSizeMedium","tooltipPinOffsetXMedium","tooltipPinOffsetYMedium","tooltipMarginMedium","closeButtonLarge","tooltipContentLarge","tooltipBorderRadiusLarge","tooltipPinSizeLarge","tooltipPinOffsetXLarge","tooltipPinOffsetYLarge","tooltipMarginLarge","console","error","_inheritsLoose","_proto","prototype","validateProps","children","getAllowedPositions","componentDidMount","componentDidUpdate","_this$getProps","componentWillUnmount","_this2","Consumer","flags","featureFlags","Provider","value","create","popupBackground","tooltipBg","popupBorder","tooltipBorder","popupBorderRadius","popupPinSize","popupPinOffsetX","popupPinOffsetY","popupMargin","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","icon","tabbable","side","parseInt","tooltipCloseBtnSide","color","tooltipCloseBtnColor","colorHover","tooltipCloseBtnHoverColor","onClick","show","hide","_this$getPopupAndLaye","getPopupAndLayerProps","popupProps","_this$getPopupAndLaye2","layerProps","active","popup","renderPopup","_extends","_this$getProps2","disableAnimations","rootNodeRef","setRootNode","hasPin","hasShadow","maxWidth","positions","pos","ignoreHover","onOpen","onClose","tryPreserveFirstRenderedPosition","withoutMobile","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onFocus","onBlur","Error","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","displayName"],"sources":["Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport type { SafeTimer } from '@skbkontur/global-object';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport type { SizeProp } from '../../lib/types/props';\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupProps, PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup';\nimport { Popup } from '../../internal/Popup';\nimport type { RenderLayerProps } from '../../internal/RenderLayer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport { withSize } from '../../lib/size/SizeDecorator';\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 anchorElement?: HTMLElement;\n\n /** @ignore */\n children?: React.ReactNode;\n\n /** Задает HTML-атрибут class. */\n className?: string;\n\n /** Отображает крестик для закрытия тултипа. По-умолчанию крестик виден, если проп *trigger* не равен `hover` или `focus`. */\n closeButton?: boolean;\n\n /** Задает функцию, которая возвращает содержимое тултипа. Если функция вернула `null`, то тултип не показывается. */\n render?: Nullable<() => React.ReactNode>;\n\n /** Задает приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Задает размер тултипа.\n * @default 'small' */\n size?: SizeProp;\n\n /** Задает триггер открытия тултипа. */\n trigger?: TooltipTrigger;\n\n /** Задает хендлер, который вызывается при клике по крестику. */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /** Задает хендлер, который вызывается при клике по крестику или снаружи тултипа. */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /** Задает хендлер, который вызывается при закрытии тултипа. */\n onClose?: () => void;\n\n /** Задает хендлер, который вызывается при открытии тултипа. */\n onOpen?: () => void;\n\n /** Задает список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции будет выходить за край экрана, то будет выбрана следующая позиция.\n * Обязательно должен включать позицию указанную в `pos`. */\n allowedPositions?: PopupPositionsType[];\n\n /** Отключает анимацию.\n * @default false */\n disableAnimations?: boolean;\n\n /** Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`.\n * Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Устанавливает задержку в миллисекундах до появления лоадера. */\n delayBeforeShow?: number;\n}\n\nconst DEFAULT_DELAY = 100;\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n crossIcon: 'Tooltip__crossIcon',\n} as const;\n\nconst DefaultPositions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ninterface TooltipSizeVariables {\n closeButtonStyle: string;\n contentStyle: string;\n borderRadius: string;\n pinSize: string;\n pinOffsetX: string;\n pinOffsetY: string;\n margin: string;\n}\n\ntype DefaultProps = Required<Pick<TooltipProps, 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>>;\n\n/**\n * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.\n *\n * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать\n * изображения, кнопки, ссылки и прочие интерактивные элементы.\n */\n\n@rootNode\n@withSize\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n public static displayName = 'Tooltip';\n\n public static defaultProps: DefaultProps = {\n trigger: 'hover',\n disableAnimations: isTestEnv,\n useWrapper: false,\n delayBeforeShow: DEFAULT_DELAY,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n private validateProps(props: TooltipProps): void {\n warning(\n props.children || props.anchorElement,\n `[Tooltip]: you must provide either 'children' or 'anchorElement' prop for Tooltip to work properly`,\n );\n }\n\n public static delay = DEFAULT_DELAY;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private size!: SizeProp;\n private sizeVariables!: TooltipSizeVariables;\n public featureFlags!: ReactUIFeatureFlags;\n private hoverTimeout: SafeTimer;\n private contentElement: Nullable<HTMLElement> = null;\n private clickedOutside = true;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions() {\n return this.props.allowedPositions ? this.props.allowedPositions : DefaultPositions;\n }\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n const { trigger } = this.getProps();\n\n this.validateProps(this.getProps());\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n this.sizeVariables = this.getSizeVariables();\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupBackground: theme.tooltipBg,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: this.sizeVariables.borderRadius,\n popupPinSize: this.sizeVariables.pinSize,\n popupPinOffsetX: this.sizeVariables.pinOffsetX,\n popupPinOffsetY: this.sizeVariables.pinOffsetY,\n popupMargin: this.sizeVariables.margin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.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\n ref={this.refContent}\n className={cx(styles.tooltipContent(this.theme), this.sizeVariables.contentStyle)}\n data-tid={TooltipDataTids.content}\n >\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross) {\n return null;\n }\n\n const icon = (\n <CloseButtonIcon\n tabbable={false}\n side={parseInt(this.theme.tooltipCloseBtnSide)}\n color={this.theme.tooltipCloseBtnColor}\n colorHover={this.theme.tooltipCloseBtnHoverColor}\n />\n );\n\n return (\n <div\n className={cx(styles.closeButton(this.theme), this.sizeVariables.closeButtonStyle)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n {icon}\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\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={isThemeGTE(this.theme, '5.4') ? this.getPositions() : this.props.allowedPositions}\n pos={this.props.pos}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private getPositions = (): PopupPositionsType[] =>\n this.props.allowedPositions\n ? this.props.allowedPositions.filter((item) => DefaultPositions.includes(item))\n : DefaultPositions;\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n 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 globalObject.clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n this.hoverTimeout = globalObject.setTimeout(this.open, this.getProps().delayBeforeShow);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = globalObject.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && isInstanceOf(event.target, globalObject.Element)) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n\n this.close();\n };\n\n private getSizeVariables = (): TooltipSizeVariables => {\n switch (this.size) {\n case 'small':\n return {\n closeButtonStyle: styles.closeButtonSmall(this.theme),\n contentStyle: styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n case 'medium':\n return {\n closeButtonStyle: styles.closeButtonMedium(this.theme),\n contentStyle: styles.tooltipContentMedium(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusMedium,\n pinSize: this.theme.tooltipPinSizeMedium,\n pinOffsetX: this.theme.tooltipPinOffsetXMedium,\n pinOffsetY: this.theme.tooltipPinOffsetYMedium,\n margin: this.theme.tooltipMarginMedium,\n };\n case 'large':\n return {\n closeButtonStyle: styles.closeButtonLarge(this.theme),\n contentStyle: styles.tooltipContentLarge(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusLarge,\n pinSize: this.theme.tooltipPinSizeLarge,\n pinOffsetX: this.theme.tooltipPinOffsetXLarge,\n pinOffsetY: this.theme.tooltipPinOffsetYLarge,\n margin: this.theme.tooltipMarginLarge,\n };\n default:\n console.error(`Can't get size variables: invalid value in size prop '${this.size}'. Returning default`);\n return {\n closeButtonStyle: styles.closeButtonSmall(this.theme),\n contentStyle: styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","warning","globalObject","isNullable","ThemeFactory","Popup","RenderLayer","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","rootNode","createPropsGetter","CloseButtonIcon","isInstanceOf","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","cx","isThemeGTE","withSize","styles","DEFAULT_DELAY","TooltipDataTids","root","content","crossIcon","DefaultPositions","Tooltip","_class","_Tooltip","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","opened","focused","contentElement","clickedOutside","popupRef","createRef","renderContent","props","render","createElement","ref","refContent","className","tooltipContent","theme","sizeVariables","contentStyle","renderCloseButton","getAnchorElement","_this$popupRef$curren","current","anchorElement","getPositions","allowedPositions","filter","item","includes","node","open","setState","close","handleMouseEnter","event","isHoverAnchor","trigger","target","clearHoverTimeout","hoverTimeout","setTimeout","delayBeforeShow","handleMouseLeave","relatedTarget","delay","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","getSizeVariables","size","closeButtonStyle","closeButtonSmall","tooltipContentSmall","borderRadius","tooltipBorderRadiusSmall","pinSize","tooltipPinSizeSmall","pinOffsetX","tooltipPinOffsetXSmall","pinOffsetY","tooltipPinOffsetYSmall","margin","tooltipMarginSmall","closeButtonMedium","tooltipContentMedium","tooltipBorderRadiusMedium","tooltipPinSizeMedium","tooltipPinOffsetXMedium","tooltipPinOffsetYMedium","tooltipMarginMedium","closeButtonLarge","tooltipContentLarge","tooltipBorderRadiusLarge","tooltipPinSizeLarge","tooltipPinOffsetXLarge","tooltipPinOffsetYLarge","tooltipMarginLarge","console","error","_inheritsLoose","_proto","prototype","validateProps","children","getAllowedPositions","componentDidMount","componentDidUpdate","_this$getProps","componentWillUnmount","_this2","Consumer","flags","featureFlags","Provider","value","create","popupBackground","tooltipBg","popupBorder","tooltipBorder","popupBorderRadius","popupPinSize","popupPinOffsetX","popupPinOffsetY","popupMargin","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","icon","tabbable","side","parseInt","tooltipCloseBtnSide","color","tooltipCloseBtnColor","colorHover","tooltipCloseBtnHoverColor","onClick","show","hide","_this$getPopupAndLaye","getPopupAndLayerProps","popupProps","_this$getPopupAndLaye2","layerProps","active","popup","renderPopup","_extends","_this$getProps2","disableAnimations","rootNodeRef","setRootNode","hasPin","hasShadow","maxWidth","positions","pos","ignoreHover","onOpen","onClose","tryPreserveFirstRenderedPosition","withoutMobile","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onFocus","onBlur","Error","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","displayName"],"sources":["Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport type { SafeTimer } from '@skbkontur/global-object';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport type { SizeProp } from '../../lib/types/props';\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupProps, PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup';\nimport { Popup } from '../../internal/Popup';\nimport type { RenderLayerProps } from '../../internal/RenderLayer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport { withSize } from '../../lib/size/SizeDecorator';\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 anchorElement?: HTMLElement;\n\n /** @ignore */\n children?: React.ReactNode;\n\n /** Задает HTML-атрибут class. */\n className?: string;\n\n /** Отображает крестик для закрытия тултипа. По умолчанию крестик виден, если проп *trigger* не равен `hover` или `focus`. */\n closeButton?: boolean;\n\n /** Задает функцию, которая возвращает содержимое тултипа. Если функция вернула `null`, то тултип не показывается. */\n render?: Nullable<() => React.ReactNode>;\n\n /** Задает приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Задает размер тултипа.\n * @default 'small' */\n size?: SizeProp;\n\n /** Задает триггер открытия тултипа. */\n trigger?: TooltipTrigger;\n\n /** Задает хендлер, который вызывается при клике по крестику. */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /** Задает хендлер, который вызывается при клике по крестику или снаружи тултипа. */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /** Задает хендлер, который вызывается при закрытии тултипа. */\n onClose?: () => void;\n\n /** Задает хендлер, который вызывается при открытии тултипа. */\n onOpen?: () => void;\n\n /** Задает список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции будет выходить за край экрана, то будет выбрана следующая позиция.\n * Обязательно должен включать позицию указанную в `pos`. */\n allowedPositions?: PopupPositionsType[];\n\n /** Отключает анимацию.\n * @default false */\n disableAnimations?: boolean;\n\n /** Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`.\n * Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Устанавливает задержку в миллисекундах до появления лоадера. */\n delayBeforeShow?: number;\n}\n\nconst DEFAULT_DELAY = 100;\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n crossIcon: 'Tooltip__crossIcon',\n} as const;\n\nconst DefaultPositions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ninterface TooltipSizeVariables {\n closeButtonStyle: string;\n contentStyle: string;\n borderRadius: string;\n pinSize: string;\n pinOffsetX: string;\n pinOffsetY: string;\n margin: string;\n}\n\ntype DefaultProps = Required<Pick<TooltipProps, 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>>;\n\n/**\n * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.\n *\n * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать\n * изображения, кнопки, ссылки и прочие интерактивные элементы.\n */\n\n@rootNode\n@withSize\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n public static displayName = 'Tooltip';\n\n public static defaultProps: DefaultProps = {\n trigger: 'hover',\n disableAnimations: isTestEnv,\n useWrapper: false,\n delayBeforeShow: DEFAULT_DELAY,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n private validateProps(props: TooltipProps): void {\n warning(\n props.children || props.anchorElement,\n `[Tooltip]: you must provide either 'children' or 'anchorElement' prop for Tooltip to work properly`,\n );\n }\n\n public static delay = DEFAULT_DELAY;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private size!: SizeProp;\n private sizeVariables!: TooltipSizeVariables;\n public featureFlags!: ReactUIFeatureFlags;\n private hoverTimeout: SafeTimer;\n private contentElement: Nullable<HTMLElement> = null;\n private clickedOutside = true;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions() {\n return this.props.allowedPositions ? this.props.allowedPositions : DefaultPositions;\n }\n\n public componentDidMount(): void {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n const { trigger } = this.getProps();\n\n this.validateProps(this.getProps());\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n this.sizeVariables = this.getSizeVariables();\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupBackground: theme.tooltipBg,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: this.sizeVariables.borderRadius,\n popupPinSize: this.sizeVariables.pinSize,\n popupPinOffsetX: this.sizeVariables.pinOffsetX,\n popupPinOffsetY: this.sizeVariables.pinOffsetY,\n popupMargin: this.sizeVariables.margin,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.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\n ref={this.refContent}\n className={cx(styles.tooltipContent(this.theme), this.sizeVariables.contentStyle)}\n data-tid={TooltipDataTids.content}\n >\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross) {\n return null;\n }\n\n const icon = (\n <CloseButtonIcon\n tabbable={false}\n side={parseInt(this.theme.tooltipCloseBtnSide)}\n color={this.theme.tooltipCloseBtnColor}\n colorHover={this.theme.tooltipCloseBtnHoverColor}\n />\n );\n\n return (\n <div\n className={cx(styles.closeButton(this.theme), this.sizeVariables.closeButtonStyle)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n {icon}\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\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={isThemeGTE(this.theme, '5.4') ? this.getPositions() : this.props.allowedPositions}\n pos={this.props.pos}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private getPositions = (): PopupPositionsType[] =>\n this.props.allowedPositions\n ? this.props.allowedPositions.filter((item) => DefaultPositions.includes(item))\n : DefaultPositions;\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n 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 globalObject.clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n this.hoverTimeout = globalObject.setTimeout(this.open, this.getProps().delayBeforeShow);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = globalObject.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && isInstanceOf(event.target, globalObject.Element)) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n\n this.close();\n };\n\n private getSizeVariables = (): TooltipSizeVariables => {\n switch (this.size) {\n case 'small':\n return {\n closeButtonStyle: styles.closeButtonSmall(this.theme),\n contentStyle: styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n case 'medium':\n return {\n closeButtonStyle: styles.closeButtonMedium(this.theme),\n contentStyle: styles.tooltipContentMedium(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusMedium,\n pinSize: this.theme.tooltipPinSizeMedium,\n pinOffsetX: this.theme.tooltipPinOffsetXMedium,\n pinOffsetY: this.theme.tooltipPinOffsetYMedium,\n margin: this.theme.tooltipMarginMedium,\n };\n case 'large':\n return {\n closeButtonStyle: styles.closeButtonLarge(this.theme),\n contentStyle: styles.tooltipContentLarge(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusLarge,\n pinSize: this.theme.tooltipPinSizeLarge,\n pinOffsetX: this.theme.tooltipPinOffsetXLarge,\n pinOffsetY: this.theme.tooltipPinOffsetYLarge,\n margin: this.theme.tooltipMarginLarge,\n };\n default:\n console.error(`Can't get size variables: invalid value in size prop '${this.size}'. Returning default`);\n return {\n closeButtonStyle: styles.closeButtonSmall(this.theme),\n contentStyle: styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,7 +30,7 @@ export interface TooltipProps extends CommonProps {
|
|
|
30
30
|
children?: React.ReactNode;
|
|
31
31
|
/** Задает HTML-атрибут class. */
|
|
32
32
|
className?: string;
|
|
33
|
-
/** Отображает крестик для закрытия тултипа.
|
|
33
|
+
/** Отображает крестик для закрытия тултипа. По умолчанию крестик виден, если проп *trigger* не равен `hover` или `focus`. */
|
|
34
34
|
closeButton?: boolean;
|
|
35
35
|
/** Задает функцию, которая возвращает содержимое тултипа. Если функция вернула `null`, то тултип не показывается. */
|
|
36
36
|
render?: Nullable<() => React.ReactNode>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","globalObject","isBrowser","isKeyArrowDown","isKeyArrowUp","isKeyEnter","MenuSeparator","ThemeFactory","getDOMRect","responsiveLayout","isNonNullable","ScrollContainer","MenuItemDataTids","ThemeContext","cx","getRootNode","rootNode","isIE11","createPropsGetter","isInstanceOf","CommonWrapper","styles","MenuNavigation","MenuContext","MenuDataTids","root","Menu","_class","_Menu","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","createRef","menuNavigation","content","focusOnRootElement","HTMLElement","focus","renderHeader","_cx","createElement","className","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_cx2","footerWrapper","footer","Provider","value","create","menuSeparatorMarginY","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","preventDefault","up","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose","_proto","prototype","componentWillUnmount","componentDidMount","componentDidUpdate","render","_this2","Consumer","renderMain","move","enter","_this$menuNavigation$","navigate","reset","hasHighlightedItem","highlightItem","index","highlightByIndex","_cx3","_cx4","isEmpty","_this$getProps","hasMargin","preventWindowScroll","offsetY","top","scrollContainerScrollBarOffsetY","right","bottom","isMobile","isMobileLayout","_extends","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","onScrollStateChange","disabled","disableScrollContainer","scrollContainerMobile","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","_cx5","alignRight","alignRightIE11","alignRightIE11FixAutoWidth"],"sources":["Menu.tsx"],"sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport type { ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport type { MenuItem } from '../../components/MenuItem';\nimport { MenuItemDataTids } from '../../components/MenuItem';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\n\nimport { styles } from './Menu.styles';\nimport { MenuNavigation } from './MenuNavigation';\nimport { MenuContext } from './MenuContext';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Предотвращает выравнивание текста всех пунктов меню относительно друг друга.\n * Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n highlightedIndex: number; // TODO unused variable, remove in next major release\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.hasMargin(this.theme)]: hasMargin,\n [styles.mobileRoot(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(globalObject) && rootNode) {\n const rootElementMaxHeight = globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","globalObject","isBrowser","isKeyArrowDown","isKeyArrowUp","isKeyEnter","MenuSeparator","ThemeFactory","getDOMRect","responsiveLayout","isNonNullable","ScrollContainer","MenuItemDataTids","ThemeContext","cx","getRootNode","rootNode","isIE11","createPropsGetter","isInstanceOf","CommonWrapper","styles","MenuNavigation","MenuContext","MenuDataTids","root","Menu","_class","_Menu","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","createRef","menuNavigation","content","focusOnRootElement","HTMLElement","focus","renderHeader","_cx","createElement","className","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_cx2","footerWrapper","footer","Provider","value","create","menuSeparatorMarginY","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","preventDefault","up","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose","_proto","prototype","componentWillUnmount","componentDidMount","componentDidUpdate","render","_this2","Consumer","renderMain","move","enter","_this$menuNavigation$","navigate","reset","hasHighlightedItem","highlightItem","index","highlightByIndex","_cx3","_cx4","isEmpty","_this$getProps","hasMargin","preventWindowScroll","offsetY","top","scrollContainerScrollBarOffsetY","right","bottom","isMobile","isMobileLayout","_extends","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","onScrollStateChange","disabled","disableScrollContainer","scrollContainerMobile","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","_cx5","alignRight","alignRightIE11","alignRightIE11FixAutoWidth"],"sources":["Menu.tsx"],"sourcesContent":["import type { CSSProperties, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport type { ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport type { MenuItem } from '../../components/MenuItem';\nimport { MenuItemDataTids } from '../../components/MenuItem';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\n\nimport { styles } from './Menu.styles';\nimport { MenuNavigation } from './MenuNavigation';\nimport { MenuContext } from './MenuContext';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Отключает выравнивание текста пунктов меню относительно иконок в других пунктах.\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n highlightedIndex: number; // TODO unused variable, remove in next major release\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.hasMargin(this.theme)]: hasMargin,\n [styles.mobileRoot(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(globalObject) && rootNode) {\n const rootElementMaxHeight = globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/internal/Menu/Menu.d.ts
CHANGED
|
@@ -21,8 +21,7 @@ export interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivEleme
|
|
|
21
21
|
disableScrollContainer?: boolean;
|
|
22
22
|
align?: 'left' | 'right';
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
* Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой
|
|
24
|
+
* Отключает выравнивание текста пунктов меню относительно иконок в других пунктах.
|
|
26
25
|
*/
|
|
27
26
|
preventIconsOffset?: boolean;
|
|
28
27
|
onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","globalObject","getRandomID","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","ThemeContext","ThemeFactory","Popup","PopupIds","RenderLayer","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","Menu","isValidPositions","styles","PopupMenuDataTids","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","_class","_PopupMenu","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","rootId","root","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","createElement","className","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose","_proto","prototype","render","_this2","Consumer","theme","Provider","value","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","container","style","width","children","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","globalObject","getRandomID","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","ThemeContext","ThemeFactory","Popup","PopupIds","RenderLayer","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","Menu","isValidPositions","styles","PopupMenuDataTids","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","_class","_PopupMenu","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","rootId","root","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","createElement","className","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose","_proto","prototype","render","_this2","Consumer","theme","Provider","value","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","container","style","width","children","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню. */\n onOpen?: () => void;\n /** Действие при закрытии меню. */\n onClose?: () => void;\n /** `id` выпадающего меню. */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,15 +41,11 @@ export interface PopupMenuProps extends CommonProps, Pick<MenuProps, 'preventIco
|
|
|
41
41
|
popupPinOffset?: number;
|
|
42
42
|
type?: 'dropdown' | 'tooltip';
|
|
43
43
|
disableAnimations?: boolean;
|
|
44
|
-
/** Действие при открытии
|
|
44
|
+
/** Действие при открытии меню. */
|
|
45
45
|
onOpen?: () => void;
|
|
46
|
-
/** Действие при закрытии
|
|
46
|
+
/** Действие при закрытии меню. */
|
|
47
47
|
onClose?: () => void;
|
|
48
|
-
/**
|
|
49
|
-
* Позволяет задать `id` выпадающему меню.
|
|
50
|
-
*
|
|
51
|
-
* Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.
|
|
52
|
-
*/
|
|
48
|
+
/** `id` выпадающего меню. */
|
|
53
49
|
popupMenuId?: HTMLProps['id'];
|
|
54
50
|
/** @ignore */
|
|
55
51
|
corners?: React.CSSProperties;
|