@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","_interopRequireDefault","require","_warning","_globalObject","_utils","_ThemeFactory","_Popup","_RenderLayer","_listenFocusOutside","_ThemeContext","_currentEnvironment","_CommonWrapper","_rootNode","_createPropsGetter","_CloseButtonIcon","_isInstanceOf","_featureFlagsContext","_Emotion","_ThemeHelpers","_SizeDecorator","_Tooltip2","_class","_Tooltip","DEFAULT_DELAY","TooltipDataTids","exports","root","content","crossIcon","DefaultPositions","Tooltip","rootNode","withSize","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","opened","focused","contentElement","clickedOutside","popupRef","React","createRef","renderContent","props","render","isNullable","default","createElement","ref","refContent","className","cx","styles","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","globalObject","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","_inheritsLoose2","_proto","prototype","validateProps","warning","children","getAllowedPositions","componentDidMount","componentDidUpdate","_this$getProps","componentWillUnmount","_this2","ReactUIFeatureFlagsContext","Consumer","flags","featureFlags","getFullReactUIFlagsContext","ThemeContext","Provider","value","ThemeFactory","create","popupBackground","tooltipBg","popupBorder","tooltipBorder","popupBorderRadius","popupPinSize","popupPinOffsetX","popupPinOffsetY","popupMargin","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","icon","CloseButtonIcon","tabbable","side","parseInt","tooltipCloseBtnSide","color","tooltipCloseBtnColor","colorHover","tooltipCloseBtnHoverColor","onClick","show","hide","_this$getPopupAndLaye","getPopupAndLayerProps","popupProps","_this$getPopupAndLaye2","layerProps","active","popup","renderPopup","RenderLayer","_extends2","_this$getProps2","disableAnimations","CommonWrapper","rootNodeRef","setRootNode","Popup","hasPin","hasShadow","maxWidth","positions","isThemeGTE","pos","ignoreHover","onOpen","onClose","tryPreserveFirstRenderedPosition","withoutMobile","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onFocus","onBlur","Error","clearTimeout","isInstanceOf","Element","containsTargetOrRenderContainer","PureComponent","__KONTUR_REACT_UI__","displayName","isTestEnv"],"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","_interopRequireDefault","require","_warning","_globalObject","_utils","_ThemeFactory","_Popup","_RenderLayer","_listenFocusOutside","_ThemeContext","_currentEnvironment","_CommonWrapper","_rootNode","_createPropsGetter","_CloseButtonIcon","_isInstanceOf","_featureFlagsContext","_Emotion","_ThemeHelpers","_SizeDecorator","_Tooltip2","_class","_Tooltip","DEFAULT_DELAY","TooltipDataTids","exports","root","content","crossIcon","DefaultPositions","Tooltip","rootNode","withSize","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","opened","focused","contentElement","clickedOutside","popupRef","React","createRef","renderContent","props","render","isNullable","default","createElement","ref","refContent","className","cx","styles","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","globalObject","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","_inheritsLoose2","_proto","prototype","validateProps","warning","children","getAllowedPositions","componentDidMount","componentDidUpdate","_this$getProps","componentWillUnmount","_this2","ReactUIFeatureFlagsContext","Consumer","flags","featureFlags","getFullReactUIFlagsContext","ThemeContext","Provider","value","ThemeFactory","create","popupBackground","tooltipBg","popupBorder","tooltipBorder","popupBorderRadius","popupPinSize","popupPinOffsetX","popupPinOffsetY","popupMargin","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","icon","CloseButtonIcon","tabbable","side","parseInt","tooltipCloseBtnSide","color","tooltipCloseBtnColor","colorHover","tooltipCloseBtnHoverColor","onClick","show","hide","_this$getPopupAndLaye","getPopupAndLayerProps","popupProps","_this$getPopupAndLaye2","layerProps","active","popup","renderPopup","RenderLayer","_extends2","_this$getProps2","disableAnimations","CommonWrapper","rootNodeRef","setRootNode","Popup","hasPin","hasShadow","maxWidth","positions","isThemeGTE","pos","ignoreHover","onOpen","onClose","tryPreserveFirstRenderedPosition","withoutMobile","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onFocus","onBlur","Error","clearTimeout","isInstanceOf","Element","containsTargetOrRenderContainer","PureComponent","__KONTUR_REACT_UI__","displayName","isTestEnv"],"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":[]}
|
|
@@ -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","_interopRequireDefault","require","_globalObject","_identifiers","_MenuSeparator","_ThemeFactory","_getDOMRect","_decorator","_utils","_ScrollContainer","_MenuItem","_ThemeContext","_Emotion","_rootNode2","_client","_createPropsGetter","_isInstanceOf","_CommonWrapper","_Menu2","_MenuNavigation","_MenuContext","_class","_Menu","MenuDataTids","exports","root","Menu","responsiveLayout","rootNode","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","highlightedIndex","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","React","createRef","menuNavigation","MenuNavigation","MenuItemDataTids","content","focusOnRootElement","getRootNode","isInstanceOf","globalObject","HTMLElement","focus","renderHeader","_cx","default","createElement","className","cx","styles","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_cx2","footerWrapper","footer","ThemeContext","Provider","value","ThemeFactory","create","menuSeparatorMarginY","MenuSeparator","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","isBrowser","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","getDOMRect","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","isKeyArrowUp","preventDefault","up","isKeyArrowDown","isKeyEnter","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose2","_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","CommonWrapper","_extends2","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","ScrollContainer","onScrollStateChange","disabled","disableScrollContainer","scrollContainerMobile","MenuContext","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","_cx5","alignRight","isIE11","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":";AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;;AAEA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;;AAEA,IAAAQ,gBAAA,GAAAR,OAAA;;AAEA,IAAAS,SAAA,GAAAT,OAAA;;AAEA,IAAAU,aAAA,GAAAV,OAAA;;AAEA,IAAAW,QAAA,GAAAX,OAAA;;AAEA,IAAAY,UAAA,GAAAZ,OAAA;AACA,IAAAa,OAAA,GAAAb,OAAA;AACA,IAAAc,kBAAA,GAAAd,OAAA;AACA,IAAAe,aAAA,GAAAf,OAAA;;AAEA,IAAAgB,cAAA,GAAAhB,OAAA;;AAEA,IAAAiB,MAAA,GAAAjB,OAAA;AACA,IAAAkB,eAAA,GAAAlB,OAAA;AACA,IAAAmB,YAAA,GAAAnB,OAAA,kBAA4C,IAAAoB,MAAA,EAAAC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CrC,IAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG;EAC1BE,IAAI,EAAE;AACR,CAAU,CAAC;;;;;;;;;;;;;;;;;AAiBEC,IAAI,GAAAF,OAAA,CAAAE,IAAA,OAFhBC,2BAAgB,EAAAN,MAAA,OAChBO,mBAAQ,EAAAP,MAAA,IAAAC,KAAA,0BAAAO,oBAAA,YAAAH,KAAA,OAAAI,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,oBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,oBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;;;;;;;IAeCU,QAAQ,GAAG,IAAAC,oCAAiB,EAACf,IAAI,CAACgB,YAAY,CAAC,CAAAZ,KAAA;;IAEhDa,KAAK,GAAc;MACxBC,gBAAgB,EAAE,CAAC,CAAC;MACpBC,SAAS,EAAEf,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACK,SAAS,IAAI,MAAM;MAC9CC,WAAW,EAAE,KAAK;MAClBC,iBAAiB,EAAE;IACrB,CAAC,CAAAjB,KAAA;;;;;IAKOkB,SAAS,GAAG,KAAK,CAAAlB,KAAA;;;;;IAKjBmB,UAAU,gBAAGC,cAAK,CAACC,SAAS,CAAiB,CAAC,CAAArB,KAAA;IAC9CsB,cAAc,GAA6B,IAAIC,8BAAc,CAACvB,KAAA,CAAKmB,UAAU,EAAEK,0BAAgB,CAACC,OAAO,CAAC,CAAAzB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BxG0B,kBAAkB,GAAG,YAAY;MACvC,IAAM5B,QAAQ,GAAG,IAAA6B,sBAAW,EAAA3B,KAAK,CAAC;MAClC,IAAI,IAAA4B,0BAAY,EAAC9B,QAAQ,EAAE+B,0BAAY,CAACC,WAAW,CAAC,EAAE;QACpDhC,QAAQ,YAARA,QAAQ,CAAEiC,KAAK,CAAC,CAAC;MACnB;IACF,CAAC,CAAA/B,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmHOgC,YAAY,GAAG,YAAM,KAAAC,GAAA;MAC3B;QACEhE,MAAA,CAAAiE,OAAA,CAAAC,aAAA;UACEC,SAAS,EAAE,IAAAC,WAAE,GAAAJ,GAAA,OAAAA,GAAA;UACVK,aAAM,CAACC,OAAO,CAAC,CAAC,IAAG,IAAI,EAAAN,GAAA;UACvBK,aAAM,CAACE,aAAa,CAAC,CAAC,IAAG,IAAI,EAAAP,GAAA;UAC/B,CAAE;UACHQ,GAAG,EAAE,SAAAA,IAACC,EAAE,UAAM1C,KAAA,CAAK2C,MAAM,GAAGD,EAAE,EAAE;;QAEhCzE,MAAA,CAAAiE,OAAA,CAAAC,aAAA,UAAKC,SAAS,EAAEE,aAAM,CAACM,cAAc,CAAC,CAAE,IAAE5C,KAAA,CAAK6C,KAAK,CAACF,MAAY,CAAC;QAClE1E,MAAA,CAAAiE,OAAA,CAAAC,aAAA,UAAKC,SAAS,EAAEE,aAAM,CAACQ,oBAAoB,CAAC9C,KAAA,CAAK+C,KAAK,CAAE;QACrD/C,KAAA,CAAKa,KAAK,CAACG,WAAW,KAAK,KAAK,IAAIhB,KAAA,CAAKgD,+BAA+B,CAAC;QACvE;QACF,CAAC;;IAEV,CAAC,CAAAhD,KAAA;;IAEOiD,YAAY,GAAG,YAAM,KAAAC,IAAA;MAC3B;QACEjF,MAAA,CAAAiE,OAAA,CAAAC,aAAA;UACEC,SAAS,EAAE,IAAAC,WAAE,GAAAa,IAAA,OAAAA,IAAA;UACVZ,aAAM,CAACC,OAAO,CAAC,CAAC,IAAG,IAAI,EAAAW,IAAA;UACvBZ,aAAM,CAACa,aAAa,CAAC,CAAC,IAAG,IAAI,EAAAD,IAAA;UAC/B,CAAE;UACHT,GAAG,EAAE,SAAAA,IAACC,EAAE,UAAM1C,KAAA,CAAKoD,MAAM,GAAGV,EAAE,EAAE;;QAEhCzE,MAAA,CAAAiE,OAAA,CAAAC,aAAA,UAAKC,SAAS,EAAEE,aAAM,CAACQ,oBAAoB,CAAC9C,KAAA,CAAK+C,KAAK,CAAE;QACrD/C,KAAA,CAAKa,KAAK,CAACG,WAAW,KAAK,QAAQ,IAAIhB,KAAA,CAAKgD,+BAA+B,CAAC;QAC1E,CAAC;QACN/E,MAAA,CAAAiE,OAAA,CAAAC,aAAA,UAAKC,SAAS,EAAEE,aAAM,CAACM,cAAc,CAAC,CAAE,IAAE5C,KAAA,CAAK6C,KAAK,CAACO,MAAY;QAC9D,CAAC;;IAEV,CAAC,CAAApD,KAAA;;IAEOgD,+BAA+B,GAAG,YAAM;MAC9C;QACE/E,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAACtD,aAAA,CAAAwE,YAAY,CAACC,QAAQ,IAACC,KAAK,EAAEC,0BAAY,CAACC,MAAM,CAAC,EAAEC,oBAAoB,EAAE,GAAG,CAAC,CAAC,EAAE1D,KAAA,CAAK+C,KAAK,CAAE;QAC3F9E,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAAC7D,cAAA,CAAAqF,aAAa,MAAE;QACK,CAAC;;IAE5B,CAAC,CAAA3D,KAAA;;IAEO4D,mBAAmB,GAAG,YAAM;MAClC,KAAK,IAAIC,CAAC,GAAG7D,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACoD,wBAAwB,EAAED,CAAC,GAAG,CAAC,CAAC,EAAEA,CAAC,EAAE,EAAE;QAClE7D,KAAA,CAAK+D,IAAI,CAAC,CAAC;MACb;IACF,CAAC,CAAA/D,KAAA;;IAEOgE,0BAA0B,GAAG,UAACC,SAAoB,EAAc;MACtE,IAAAC,WAAA,GAAqClE,KAAA,CAAK6C,KAAK,CAAvCF,MAAM,GAAAuB,WAAA,CAANvB,MAAM,CAAES,MAAM,GAAAc,WAAA,CAANd,MAAM,CAAEe,QAAQ,GAAAD,WAAA,CAARC,QAAQ;MAChC,IAAMpD,SAAS,GAAGf,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACK,SAAS;MAC3C,IAAMqD,aAAa,GAAGH,SAAS,CAAClD,SAAS;MACzC,IAAMsD,UAAU,GAAGJ,SAAS,CAACtB,MAAM;MACnC,IAAM2B,UAAU,GAAGL,SAAS,CAACb,MAAM;MACnC,IAAMmB,iBAAiB,GAAGnD,cAAK,CAACoD,QAAQ,CAACC,KAAK,CAACR,SAAS,CAACE,QAAQ,CAAC;;MAElE;QACEpD,SAAS,KAAKqD,aAAa;QAC3BhB,MAAM,KAAKkB,UAAU;QACrB3B,MAAM,KAAK0B,UAAU;QACrBjD,cAAK,CAACoD,QAAQ,CAACC,KAAK,CAACN,QAAQ,CAAC,KAAKI,iBAAiB;;IAExD,CAAC,CAAAvE,KAAA;;IAEO0E,kBAAkB,GAAG,YAAM;MACjC,IAAM3D,SAAS,GAAGf,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACK,SAAS;MAC3C,IAAI4D,eAAe,GAAG5D,SAAS;MAC/B,IAAMjB,QAAQ,GAAG,IAAA6B,sBAAW,EAAA3B,KAAK,CAAC;;MAElC,IAAI,OAAOe,SAAS,KAAK,QAAQ,IAAI,IAAA6D,uBAAS,EAAC/C,0BAAY,CAAC,IAAI/B,QAAQ,EAAE;QACxE,IAAM+E,oBAAoB,GAAGhD,0BAAY,CAACiD,gBAAgB,oBAA7BjD,0BAAY,CAACiD,gBAAgB,CAAGhF,QAAQ,CAAC,CAACiB,SAAS;;QAEhF,IAAI8D,oBAAoB,EAAE;UACxBF,eAAe,GAAGI,UAAU,CAACF,oBAAoB,CAAC;QACpD;MACF;;MAEA,IAAMG,mBAAmB;MACvB,OAAOL,eAAe,KAAK,QAAQ;MAC/BA,eAAe;MACb3E,KAAA,CAAK2C,MAAM,IAAI,IAAAsC,sBAAU,EAACjF,KAAA,CAAK2C,MAAM,CAAC,CAACuC,MAAM,IAAK,CAAC,CAAC;MACpDlF,KAAA,CAAKoD,MAAM,IAAI,IAAA6B,sBAAU,EAACjF,KAAA,CAAKoD,MAAM,CAAC,CAAC8B,MAAM,IAAK,CAAC,CAAC;MACtDnE,SAAS;;MAEff,KAAA,CAAKmF,QAAQ,CAAC;QACZpE,SAAS,EAAEiE,mBAAmB,IAAI;MACpC,CAAC,CAAC;IACJ,CAAC,CAAAhF,KAAA;;IAEOoF,kBAAkB,GAAG,UAACC,eAA0C,EAAK;MAC3ErF,KAAA,CAAKqF,eAAe,GAAGA,eAAe;IACxC,CAAC,CAAArF,KAAA;;IAEOsF,gBAAgB,GAAG,YAAM;MAC/B,IAAMC,eAAe,GAAGvF,KAAA,CAAKsB,cAAc,CAACiE,eAAe;MAC3D,IAAIvF,KAAA,CAAKqF,eAAe,IAAIE,eAAe,EAAE;QAC3C,IAAMzF,SAAQ,GAAG,IAAA6B,sBAAW,EAAC4D,eAAe,CAAC;QAC7C;QACA,IAAI,IAAA3D,0BAAY,EAAC9B,SAAQ,EAAE+B,0BAAY,CAACC,WAAW,CAAC,EAAE;UACpD9B,KAAA,CAAKqF,eAAe,CAACG,QAAQ,CAAC1F,SAAQ,CAAC;QACzC;MACF;IACF,CAAC,CAAAE,KAAA;;IAEOyF,WAAW,GAAG,YAAM;MAC1B,IAAIzF,KAAA,CAAKqF,eAAe,EAAE;QACxBrF,KAAA,CAAKqF,eAAe,CAACI,WAAW,CAAC,CAAC;MACpC;IACF,CAAC,CAAAzF,KAAA;;IAEO0F,cAAc,GAAG,YAAM;MAC7B,IAAI1F,KAAA,CAAKqF,eAAe,EAAE;QACxBrF,KAAA,CAAKqF,eAAe,CAACK,cAAc,CAAC,CAAC;MACvC;IACF,CAAC,CAAA1F,KAAA;;IAEO2F,MAAM,GAAG,UAACC,SAAiB,EAAK;MACtC,QAAQA,SAAS;QACf,KAAK,CAAC;UACJ5F,KAAA,CAAKyF,WAAW,YAAhBzF,KAAA,CAAKyF,WAAW,CAAG,CAAC;UACpB;QACF,KAAKzF,KAAA,CAAKsB,cAAc,CAACuE,KAAK,CAAC1F,MAAM,GAAG,CAAC;UACvCH,KAAA,CAAK0F,cAAc,YAAnB1F,KAAA,CAAK0F,cAAc,CAAG,CAAC;UACvB;QACF;UACE1F,KAAA,CAAKsF,gBAAgB,YAArBtF,KAAA,CAAKsF,gBAAgB,CAAG,CAAC;MAC7B;IACF,CAAC,CAAAtF,KAAA;;;;;;;;;;;;;;;;IAgBO8F,aAAa,GAAG,UAACC,KAA0C,EAAW;MAC5E,IAAI,OAAO/F,KAAA,CAAK6C,KAAK,CAACmD,SAAS,KAAK,UAAU,EAAE;QAC9ChG,KAAA,CAAK6C,KAAK,CAACmD,SAAS,CAACD,KAAK,CAAC;MAC7B;;MAEA,IAAIA,KAAK,CAACE,gBAAgB,EAAE;QAC1B;MACF;;MAEA,IAAI,IAAAC,yBAAY,EAACH,KAAK,CAAC,EAAE;QACvBA,KAAK,CAACI,cAAc,CAAC,CAAC;QACtBnG,KAAA,CAAKoG,EAAE,CAAC,CAAC;MACX,CAAC,MAAM,IAAI,IAAAC,2BAAc,EAACN,KAAK,CAAC,EAAE;QAChCA,KAAK,CAACI,cAAc,CAAC,CAAC;QACtBnG,KAAA,CAAK+D,IAAI,CAAC,CAAC;MACb,CAAC,MAAM,IAAI,IAAAuC,uBAAU,EAACP,KAAK,CAAC,EAAE;QAC5B/F,KAAA,CAAKsB,cAAc,CAACiF,MAAM,CAACR,KAAK,CAAC;MACnC;IACF,CAAC,CAAA/F,KAAA;;IAEOwG,QAAQ,GAAG,UAAC3D,KAAgB,EAAoB;MACtD,IAAIA,KAAK,CAAC4D,KAAK,KAAK,OAAO,EAAE;QAC3B,OAAO;UACLC,QAAQ,EAAE7D,KAAK,CAAC8D,KAAK;UACrBC,QAAQ,EAAE/D,KAAK,CAAC8D,KAAK;UACrB5F,SAAS,EAAEf,KAAA,CAAKa,KAAK,CAACE;QACxB,CAAC;MACH;;MAEA,OAAO;QACL4F,KAAK,EAAE9D,KAAK,CAAC8D,KAAK;QAClB5F,SAAS,EAAEf,KAAA,CAAKa,KAAK,CAACE;MACxB,CAAC;IACH,CAAC,CAAAf,KAAA;;IAEO6G,uBAAuB,GAAG,UAAC7F,WAAuC,EAAK;MAC7E,IAAIhB,KAAA,CAAKa,KAAK,CAACG,WAAW,KAAKA,WAAW,EAAE;QAC1ChB,KAAA,CAAKmF,QAAQ,CAAC,EAAEnE,WAAW,EAAXA,WAAW,CAAC,CAAC,CAAC;MAChC;IACF,CAAC,CAAAhB,KAAA;;IAEO8G,oBAAoB,GAAG,UAACC,oBAA6B,EAAK;MAChE,CAAC/G,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACsG,kBAAkB,IAAIhH,KAAA,CAAKmF,QAAQ,CAAC,EAAElE,iBAAiB,EAAE8F,oBAAoB,CAAC,CAAC,CAAC;IACnG,CAAC,QAAA/G,KAAA,MAAAiH,eAAA,CAAA/E,OAAA,EAAAtC,IAAA,EAAAG,oBAAA,MAAAmH,MAAA,GAAAtH,IAAA,CAAAuH,SAAA,CAAAD,MAAA,CA5UME,oBAAoB,GAA3B,SAAAA,qBAAA,EAA8B,CAC5B,IAAI,CAAClG,SAAS,GAAG,IAAI,CACvB,CAAC,CAAAgG,MAAA,CAEMG,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,CACzB,IAAI,CAACzD,mBAAmB,CAAC,CAAC,CAC1B,IAAI,CAACc,kBAAkB,CAAC,CAAC,CACzB,IAAI,CAACxD,SAAS,GAAG,KAAK,CACxB,CAAC,CAAAgG,MAAA,CAEMI,kBAAkB,GAAzB,SAAAA,mBAA0BrD,SAAoB,EAAE,CAC9C,IAAI,IAAI,CAACD,0BAA0B,CAACC,SAAS,CAAC,EAAE,CAC9C,IAAI,CAACS,kBAAkB,CAAC,CAAC,CAC3B,CAEA,IAAIT,SAAS,CAAClD,SAAS,KAAK,IAAI,CAACL,QAAQ,CAAC,CAAC,CAACK,SAAS,EAAE,CACrD,IAAI,CAACoE,QAAQ,CAAC,EACZpE,SAAS,EAAE,IAAI,CAAC8B,KAAK,CAAC9B,SAAS,IAAI,MAAM,CAC3C,CAAC,CAAC,CACJ,CACF,CAAC,CAAAmG,MAAA,CAEMnF,KAAK,GAAZ,SAAAA,MAAA,EAAe,CACb,IAAI,CAACL,kBAAkB,CAAC,CAAC,CAC3B,CAAC,CAAAwF,MAAA,CASMK,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,oBACEvJ,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAACtD,aAAA,CAAAwE,YAAY,CAACoE,QAAQ,QACnB,UAAC1E,KAAK,EAAK,CACVyE,MAAI,CAACzE,KAAK,GAAGA,KAAK,CAClB,OAAOyE,MAAI,CAACE,UAAU,CAAC,CAAC,CAC1B,CACqB,CAAC,CAE5B,CAAC,CAED;AACF;AACA,KAFE,CAAAR,MAAA,CAGOd,EAAE,GAAT,SAAAA,GAAA,EAAY,CACV,IAAI,CAACuB,IAAI,CAAC,CAAC,CAAC,CAAC,CACf,CAAC,CAED;AACF;AACA,KAFE,CAAAT,MAAA,CAGOnD,IAAI,GAAX,SAAAA,KAAA,EAAc,CACZ,IAAI,CAAC4D,IAAI,CAAC,CAAC,CAAC,CACd,CAAC,CAED;AACF;AACA,KAFE,CAAAT,MAAA,CAGOU,KAAK,GAAZ,SAAAA,MAAa7B,KAAwC,EAAE,KAAA8B,qBAAA,CACrD,CAAAA,qBAAA,OAAI,CAACvG,cAAc,CAACiE,eAAe,aAAnCsC,qBAAA,CAAqCC,QAAQ,CAAC,CAAC,CAC/C,OAAO,IAAI,CAACxG,cAAc,CAACiF,MAAM,CAACR,KAAK,CAAC,CAC1C,CAAC,CAED;AACF;AACA,KAFE,CAAAmB,MAAA,CAGOa,KAAK,GAAZ,SAAAA,MAAA,EAAe,CACb,IAAI,CAACzG,cAAc,CAACyG,KAAK,CAAC,CAAC,CAC7B,CAAC,CAED;AACF;AACA,KAFE,CAAAb,MAAA,CAGOc,kBAAkB,GAAzB,SAAAA,mBAAA,EAA4B,CAC1B,OAAO,CAAC,CAAC,IAAI,CAAC1G,cAAc,CAACiE,eAAe,CAC9C,CAAC,CAAA2B,MAAA,CAEMe,aAAa,GAApB,SAAAA,cAAqBC,KAAa,EAAE,CAClC,IAAI,CAAC5G,cAAc,CAAC6G,gBAAgB,CAACD,KAAK,CAAC,CAC7C,CAAC,CAAAhB,MAAA,CAEOQ,UAAU,GAAlB,SAAAA,WAAA,EAAqB,KAAAU,IAAA,EAAAC,IAAA,CACnB,IAAI,IAAI,CAACC,OAAO,CAAC,CAAC,EAAE,CAClB,OAAO,IAAI,CACb,CACA,IAAAC,cAAA,GAAsD,IAAI,CAAC7H,QAAQ,CAAC,CAAC,CAA7D8H,SAAS,GAAAD,cAAA,CAATC,SAAS,CAAEzH,SAAS,GAAAwH,cAAA,CAATxH,SAAS,CAAE0H,mBAAmB,GAAAF,cAAA,CAAnBE,mBAAmB,CAEjD,IAAMC,OAAO,GAAG,EACdC,GAAG,OAAK,IAAI,CAAC5F,KAAK,CAAC6F,+BAAiC,EACpDC,KAAK,EAAE,CAAC,EACRC,MAAM,OAAK,IAAI,CAAC/F,KAAK,CAAC6F,+BAAiC,CACzD,CAAC,CAED,IAAMG,QAAQ,GAAG,IAAI,CAACC,cAAc,CACpC,oBACE/K,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAAChD,cAAA,CAAA8J,aAAa,MAAAC,SAAA,CAAAhH,OAAA,IAACiH,WAAW,EAAE,IAAI,CAACC,WAAY,IAAK,IAAI,CAACvG,KAAK,gBAC1D5E,MAAA,CAAAiE,OAAA,CAAAC,aAAA,UACE,YAAU1C,YAAY,CAACE,IAAK,EAC5ByC,SAAS,EAAE,IAAAC,WAAE,EAACgH,kBAAkB,CAAC,IAAI,CAACxG,KAAK,CAAC,GAAAuF,IAAA,OAAAA,IAAA,CACzC9F,aAAM,CAAC3C,IAAI,CAAC,IAAI,CAACoD,KAAK,CAAC,IAAG,IAAI,EAAAqF,IAAA,CAC9B9F,aAAM,CAACkG,SAAS,CAAC,IAAI,CAACzF,KAAK,CAAC,IAAGyF,SAAS,EAAAJ,IAAA,CACxC9F,aAAM,CAACgH,UAAU,CAAC,IAAI,CAACvG,KAAK,CAAC,IAAGgG,QAAQ,EAAAX,IAAA,CACxC9F,aAAM,CAACiH,MAAM,CAAC,IAAI,CAACxG,KAAK,CAAC,IAAG,CAACgG,QAAQ,EAAAX,IAAA,CACvC,CAAE,EACHoB,KAAK,EAAE,IAAI,CAAChD,QAAQ,CAAC,IAAI,CAAC3D,KAAK,CAAE,EACjC4G,EAAE,EAAE,IAAI,CAAC5G,KAAK,CAAC4G,EAAG,EAClBzD,SAAS,EAAE,IAAI,CAACF,aAAc,EAC9B4D,QAAQ,EAAE,CAAE,IAEX,IAAI,CAAC7G,KAAK,CAACF,MAAM,IAAI,IAAI,CAACX,YAAY,CAAC,CAAC,eACzC/D,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAACxD,gBAAA,CAAAgL,eAAe,IACdlH,GAAG,EAAE,IAAI,CAAC2C,kBAAmB,EAC7BrE,SAAS,EAAEA,SAAU,EACrB0H,mBAAmB,EAAEA,mBAAoB,EACzCmB,mBAAmB,EAAE,IAAI,CAAC/C,uBAAwB,EAClDgD,QAAQ,EAAE,IAAI,CAAChH,KAAK,CAACiH,sBAAuB,EAC5CpB,OAAO,EAAEA,OAAQ,iBAEjBzK,MAAA,CAAAiE,OAAA,CAAAC,aAAA,UACEC,SAAS,EAAE,IAAAC,WAAE,GAAAgG,IAAA,OAAAA,IAAA,CACV/F,aAAM,CAAC+C,eAAe,CAAC,IAAI,CAACtC,KAAK,CAAC,IAAG,IAAI,EAAAsF,IAAA,CACzC/F,aAAM,CAACyH,qBAAqB,CAAC,IAAI,CAAChH,KAAK,CAAC,IAAGgG,QAAQ,EAAAV,IAAA,CACrD,CAAE,EACH5F,GAAG,EAAE,IAAI,CAACtB,UAAW,iBAErBlD,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAAC7C,YAAA,CAAA0K,WAAW,CAAC1G,QAAQ,IACnBC,KAAK,EAAE,EACL0G,UAAU,EAAE,IAAI,CAAC3I,cAAc,EAC/B4I,WAAW,EAAE,IAAI,CAACrH,KAAK,CAACqH,WAAW,EACnCjJ,iBAAiB,EAAE,IAAI,CAACJ,KAAK,CAACI,iBAAiB,EAC/C6F,oBAAoB,EAAE,IAAI,CAACA,oBAAoB,CACjD,CAAE,IAED,IAAI,CAACjE,KAAK,CAACsB,QACQ,CACnB,CACU,CAAC,EACjB,IAAI,CAACtB,KAAK,CAACO,MAAM,IAAI,IAAI,CAACH,YAAY,CAAC,CACrC,CACQ,CAAC,CAEpB,CAAC,CAAAiE,MAAA,CAmIOS,IAAI,GAAZ,SAAAA,KAAawC,IAAY,EAAE,CACzB,IAAI,IAAI,CAACjJ,SAAS,EAAE,CAClB;MACA,OACF,CACA,IAAM0E,SAAS,GAAG,IAAI,CAACtE,cAAc,CAACqG,IAAI,CAACwC,IAAI,EAAE,IAAI,CAACzJ,QAAQ,CAAC,CAAC,CAAC0J,eAAe,CAAC,CACjF,IAAI,CAACzE,MAAM,CAACC,SAAS,CAAC,CACxB,CAAC,CAAAsB,MAAA,CAEOoB,OAAO,GAAf,SAAAA,QAAA,EAAkB,CAChB,IAAQnE,QAAQ,GAAK,IAAI,CAACtB,KAAK,CAAvBsB,QAAQ,CAChB,OAAO,CAACA,QAAQ,IAAI,CAACkG,eAAe,CAAClG,QAAQ,CAAC,CAACmG,MAAM,CAACC,oBAAa,CAAC,CAACpK,MAAM,CAC7E,CAAC,QAAAP,IAAA,GAjUuBwB,cAAK,CAACoJ,aAAa,GAAAhL,KAAA,CAC7BiL,mBAAmB,GAAG,MAAM,EAAAjL,KAAA,CAC5BkL,WAAW,GAAG,MAAM,EAAAlL,KAAA,CAEpBoB,YAAY,GAAiB,EACzC6F,KAAK,EAAE,MAAM,EACbE,KAAK,EAAE,MAAM,EACb5F,SAAS,EAAE,GAAG,EACdyH,SAAS,EAAE,IAAI,EACfC,mBAAmB,EAAE,IAAI,EACzB2B,eAAe,EAAE,IAAI,EACrBtG,wBAAwB,EAAE,CAAC,CAAC,CAC9B,CAAC,EAAAtE,KAAA,MAAAD,MAAA,KAAAA,MAAA,CAqWH,SAAS8K,eAAeA,CAAClG,QAAyB,EAAqB,CACrE,IAAMwG,GAAsB,GAAG,EAAE,CAAC,CAClC;EACAvJ,cAAK,CAACoD,QAAQ,CAACoG,OAAO,CAACzG,QAAQ,EAAE,UAAC0G,KAAK,EAAK,CAC1CF,GAAG,CAACG,IAAI,CAACD,KAAK,CAAC,CACjB,CAAC,CAAC,CACF,OAAOF,GAAG,CACZ,CAEA,IAAMtB,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIxG,KAAgB,EAAK;EAC/C,IAAIA,KAAK,CAAC4D,KAAK,KAAK,OAAO,EAAE,KAAAsE,IAAA;IAC3B,OAAO,IAAA1I,WAAE,GAAA0I,IAAA,OAAAA,IAAA;IACNzI,aAAM,CAAC0I,UAAU,CAAC,CAAC,IAAG,CAACC,cAAM,EAAAF,IAAA;IAC7BzI,aAAM,CAAC4I,cAAc,CAAC,CAAC,IAAGD,cAAM,EAAAF,IAAA;IAChCzI,aAAM,CAAC6I,0BAA0B,CAAC,CAAC,IAAGF,cAAM,IAAIpI,KAAK,CAAC8D,KAAK,KAAK,MAAM,EAAAoE,IAAA;IACxE,CAAC;EACJ;;EAEA,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_identifiers","_MenuSeparator","_ThemeFactory","_getDOMRect","_decorator","_utils","_ScrollContainer","_MenuItem","_ThemeContext","_Emotion","_rootNode2","_client","_createPropsGetter","_isInstanceOf","_CommonWrapper","_Menu2","_MenuNavigation","_MenuContext","_class","_Menu","MenuDataTids","exports","root","Menu","responsiveLayout","rootNode","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","highlightedIndex","maxHeight","scrollState","enableIconPadding","unmounted","contentRef","React","createRef","menuNavigation","MenuNavigation","MenuItemDataTids","content","focusOnRootElement","getRootNode","isInstanceOf","globalObject","HTMLElement","focus","renderHeader","_cx","default","createElement","className","cx","styles","wrapper","headerWrapper","ref","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","_cx2","footerWrapper","footer","ThemeContext","Provider","value","ThemeFactory","create","menuSeparatorMarginY","MenuSeparator","setInitialSelection","i","initialSelectedItemIndex","down","shouldRecalculateMaxHeight","prevProps","_this$props","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","isBrowser","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","getDOMRect","height","setState","refScrollContainer","scrollContainer","scrollToSelected","highlightedItem","scrollTo","scrollToTop","scrollToBottom","scroll","nextIndex","items","handleKeyDown","event","onKeyDown","defaultPrevented","isKeyArrowUp","preventDefault","up","isKeyArrowDown","isKeyEnter","select","getStyle","align","maxWidth","width","minWidth","handleScrollStateChange","setEnableIconPadding","isIconPaddingEnabled","preventIconsOffset","_inheritsLoose2","_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","CommonWrapper","_extends2","rootNodeRef","setRootNode","getAlignRightClass","mobileRoot","shadow","style","id","tabIndex","ScrollContainer","onScrollStateChange","disabled","disableScrollContainer","scrollContainerMobile","MenuContext","navigation","onItemClick","step","cyclicSelection","childrenToArray","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","displayName","ret","forEach","child","push","_cx5","alignRight","isIE11","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":[]}
|
|
@@ -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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_utils","_identifiers","_ThemeContext","_ThemeFactory","_Popup","_RenderLayer","_CommonWrapper","_decorator","_rootNode","_createPropsGetter","_Menu","_validatePositions","_PopupMenu2","_tids","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","_class","_PopupMenu","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","rootNode","responsiveLayout","_React$Component","_this","_len","arguments","length","args","Array","_key","apply","concat","rootId","PopupIds","root","getRandomID","getProps","createPropsGetter","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","React","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","default","createElement","PopupMenuDataTids","className","styles","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","isKeyEscape","globalObject","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose2","_proto","render","_this2","ThemeContext","Consumer","theme","Provider","value","ThemeFactory","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","CommonWrapper","_extends2","rootNodeRef","setRootNode","RenderLayer","onClickOutside","onFocusOutside","active","container","style","width","children","Popup","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","Menu","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","isValidPositions","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","_interopRequireDefault","require","_globalObject","_utils","_identifiers","_ThemeContext","_ThemeFactory","_Popup","_RenderLayer","_CommonWrapper","_decorator","_rootNode","_createPropsGetter","_Menu","_validatePositions","_PopupMenu2","_tids","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","_class","_PopupMenu","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","rootNode","responsiveLayout","_React$Component","_this","_len","arguments","length","args","Array","_key","apply","concat","rootId","PopupIds","root","getRandomID","getProps","createPropsGetter","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","React","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","default","createElement","PopupMenuDataTids","className","styles","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","isKeyEscape","globalObject","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose2","_proto","render","_this2","ThemeContext","Consumer","theme","Provider","value","ThemeFactory","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","CommonWrapper","_extends2","rootNodeRef","setRootNode","RenderLayer","onClickOutside","onFocusOutside","active","container","style","width","children","Popup","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","Menu","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","isValidPositions","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":[]}
|
|
@@ -54,7 +54,7 @@ export var CalendarDay = /*#__PURE__*/memo(forwardRefAndName('CalendarDay', func
|
|
|
54
54
|
tabIndex: -1,
|
|
55
55
|
disabled: isDisabled,
|
|
56
56
|
onClick: handleClick,
|
|
57
|
-
className: cx((_cx = {}, _cx[styles.day(theme)] = true, _cx[styles.
|
|
57
|
+
className: cx((_cx = {}, _cx[styles.day(theme)] = true, _cx[styles.weekend(theme)] = isWeekend, _cx[styles.selected(theme)] = isSelected, _cx), className)
|
|
58
58
|
}, getVisualStateDataAttributes({
|
|
59
59
|
selected: isSelected
|
|
60
60
|
}), rest), /*#__PURE__*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","memo","useCallback","useLocaleForControl","ThemeContext","cx","DatePickerLocaleHelper","InternalDate","LocaleContext","getVisualStateDataAttributes","forwardRefAndName","styles","CalendarDataTids","CalendarDay","_ref","ref","_cx","_cx2","isToday","isSelected","isDisabled","isWeekend","date","onDayClick","onClick","children","className","rest","_objectWithoutPropertiesLoose","_excluded","theme","_useContext","langCode","internalDate","value","locale","ariaLabel","dayCellChooseDateAriaLabel","toA11YFormat","handleClick","e","_internalDate$getComp","getComponentsLikeNumber","day","caption","createElement","_extends","dayCell","tabIndex","disabled","
|
|
1
|
+
{"version":3,"names":["React","useContext","memo","useCallback","useLocaleForControl","ThemeContext","cx","DatePickerLocaleHelper","InternalDate","LocaleContext","getVisualStateDataAttributes","forwardRefAndName","styles","CalendarDataTids","CalendarDay","_ref","ref","_cx","_cx2","isToday","isSelected","isDisabled","isWeekend","date","onDayClick","onClick","children","className","rest","_objectWithoutPropertiesLoose","_excluded","theme","_useContext","langCode","internalDate","value","locale","ariaLabel","dayCellChooseDateAriaLabel","toA11YFormat","handleClick","e","_internalDate$getComp","getComponentsLikeNumber","day","caption","createElement","_extends","dayCell","tabIndex","disabled","weekend","selected","todayCaption"],"sources":["CalendarDay.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { useContext, memo, useCallback } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { LocaleContext } from '../../lib/locale';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { styles } from './DayCellView.styles';\nimport { CalendarDataTids } from './Calendar';\n\nexport interface CalendarDayProps extends React.HTMLAttributes<HTMLButtonElement> {\n /** Устанавливает, является ли день текущим. */\n isToday?: boolean;\n\n /** Устанавливает, является ли день выбранным. */\n isSelected?: boolean;\n\n /** Устанавливает, является ли день недоступным. */\n isDisabled?: boolean;\n\n /** Устанавливает, является ли день выходным. */\n isWeekend?: boolean;\n\n /** Задает день. */\n date: string;\n\n /** Задает функцию, которая вызывается при клике на день. Необходима для внутренней работы Calendar. Не предназначена для переопределения. Вместо этого, следует использовать стандартный `onClick`.\n * @internal @ignore\n */\n onDayClick: () => void;\n}\n\n/**\n * Компонент дня `CalendarDay` из Calendar.\n *\n * @visibleName Calendar.Day\n */\nexport const CalendarDay = memo(\n forwardRefAndName(\n 'CalendarDay',\n function CalendarDay(\n {\n isToday,\n isSelected,\n isDisabled,\n isWeekend,\n date,\n onDayClick,\n onClick,\n children,\n className,\n ...rest\n }: PropsWithChildren<CalendarDayProps>,\n ref: React.Ref<HTMLButtonElement>,\n ) {\n const theme = useContext(ThemeContext);\n\n const { langCode } = useContext(LocaleContext);\n const internalDate = new InternalDate({ langCode, value: date });\n\n const locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);\n const ariaLabel = `${locale.dayCellChooseDateAriaLabel}: ${internalDate.toA11YFormat()}`;\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (e) => {\n onDayClick();\n onClick?.(e);\n },\n [onDayClick, onClick],\n );\n\n const { date: day } = internalDate.getComponentsLikeNumber();\n const caption = children ?? day;\n\n return (\n <button\n ref={ref}\n data-tid={CalendarDataTids.dayCell}\n aria-label={ariaLabel}\n tabIndex={-1}\n disabled={isDisabled}\n onClick={handleClick}\n className={cx(\n {\n [styles.day(theme)]: true,\n [styles.weekend(theme)]: isWeekend,\n [styles.selected(theme)]: isSelected,\n },\n className,\n )}\n {...getVisualStateDataAttributes({ selected: isSelected })}\n {...rest}\n >\n <span className={cx({ [styles.todayCaption(theme)]: isToday })}>{caption}</span>\n </button>\n );\n },\n ),\n);\n"],"mappings":"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","ignoreList":[]}
|