@skbkontur/react-ui 6.3.4 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -0
  3. package/components/Input/InputLayout/InputLayout.styles.js +11 -8
  4. package/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  5. package/components/Input/InputLayout/InputLayoutAsideText.js +3 -1
  6. package/components/Input/InputLayout/InputLayoutAsideText.js.map +1 -1
  7. package/components/Radio/Radio.js +18 -22
  8. package/components/Radio/Radio.js.map +1 -1
  9. package/components/Radio/Radio.styles.js +1 -1
  10. package/components/Radio/Radio.styles.js.map +1 -1
  11. package/components/SidePage/SidePage.styles.d.ts +1 -0
  12. package/components/SidePage/SidePage.styles.js +19 -16
  13. package/components/SidePage/SidePage.styles.js.map +1 -1
  14. package/components/SidePage/SidePageHeader.js +3 -0
  15. package/components/SidePage/SidePageHeader.js.map +1 -1
  16. package/components/TokenInput/TokenInput.d.ts +17 -16
  17. package/components/TokenInput/TokenInput.js +202 -59
  18. package/components/TokenInput/TokenInput.js.map +1 -1
  19. package/components/TokenInput/TokenInputFailedMenu.d.ts +17 -0
  20. package/components/TokenInput/TokenInputFailedMenu.js +30 -0
  21. package/components/TokenInput/TokenInputFailedMenu.js.map +1 -0
  22. package/components/TokenInput/TokenInputMenu.d.ts +13 -2
  23. package/components/TokenInput/TokenInputMenu.js +134 -19
  24. package/components/TokenInput/TokenInputMenu.js.map +1 -1
  25. package/components/TokenInput/TokenInputMobileMenu.js +3 -2
  26. package/components/TokenInput/TokenInputMobileMenu.js.map +1 -1
  27. package/components/TokenInput/TokenInputReducer.d.ts +6 -1
  28. package/components/TokenInput/TokenInputReducer.js +14 -3
  29. package/components/TokenInput/TokenInputReducer.js.map +1 -1
  30. package/components/TokenInput/locale/locales/en.js +1 -0
  31. package/components/TokenInput/locale/locales/en.js.map +1 -1
  32. package/components/TokenInput/locale/locales/ru.js +1 -0
  33. package/components/TokenInput/locale/locales/ru.js.map +1 -1
  34. package/components/TokenInput/locale/types.d.ts +1 -0
  35. package/components/TokenInput/locale/types.js.map +1 -1
  36. package/internal/Popup/Popup.js.map +1 -1
  37. package/internal/themes/BasicTheme.d.ts +15 -0
  38. package/internal/themes/BasicTheme.js +21 -0
  39. package/internal/themes/BasicTheme.js.map +1 -1
  40. package/internal/themes/DarkTheme6_0.js +1 -0
  41. package/internal/themes/DarkTheme6_0.js.map +1 -1
  42. package/internal/themes/DarkTheme6_4.d.ts +1 -0
  43. package/internal/themes/DarkTheme6_4.js +44 -0
  44. package/internal/themes/DarkTheme6_4.js.map +1 -0
  45. package/internal/themes/LightTheme6_4.d.ts +1 -0
  46. package/internal/themes/LightTheme6_4.js +44 -0
  47. package/internal/themes/LightTheme6_4.js.map +1 -0
  48. package/lib/theming/ThemeVersions.d.ts +1 -1
  49. package/lib/theming/ThemeVersions.js.map +1 -1
  50. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  51. package/lib/theming/themes/DarkTheme.js +3 -1
  52. package/lib/theming/themes/DarkTheme.js.map +1 -1
  53. package/lib/theming/themes/LightTheme.d.ts +1 -0
  54. package/lib/theming/themes/LightTheme.js +3 -1
  55. package/lib/theming/themes/LightTheme.js.map +1 -1
  56. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Popup.js","sourceRoot":"","sources":["Popup.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { HTMLAttributes, Ref } from 'react';\nimport React from 'react';\nimport { Transition } from 'react-transition-group';\nimport warning from 'warning';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { getElementRef } from '../../lib/getElementRef.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.js';\nimport { mergeRefs } from '../../lib/mergeRefs.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { getRandomID, isFunction, isNonNullable, isNullable, isRefableElement } from '../../lib/utils.js';\nimport type { FocusEventType, MouseEventType } from '../../typings/event-types.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { CommonProps } from '../CommonWrapper/index.js';\nimport { CommonWrapper } from '../CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { MobilePopup } from '../MobilePopup/index.js';\nimport { RenderContainer } from '../RenderContainer/index.js';\nimport type { Priority } from '../ZIndex/index.js';\nimport { ZIndex } from '../ZIndex/index.js';\nimport { getStyles } from './Popup.styles.js';\nimport type { Offset, PositionObject, Rect } from './PopupHelper.js';\nimport { PopupHelper } from './PopupHelper.js';\nimport { PopupPin } from './PopupPin.js';\n\nconst TRANSITION_TIMEOUT = { enter: 0, exit: 200 };\n\nexport const PopupNonPinnablePositions = ['middle center', 'middle left', 'middle right'] as const;\n\nexport const PopupPinnablePositions = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n] as const;\n\nexport const PopupPositions = [...PopupPinnablePositions, ...PopupNonPinnablePositions] as const;\n\nexport const DefaultPosition = PopupPositions[0];\n\nexport type PopupPositionsType = (typeof PopupPositions)[number];\nexport type PopupPinnablePositionsType = (typeof PopupPinnablePositions)[number];\nexport type ShortPopupPositionsType = 'top' | 'bottom' | 'left' | 'right';\n\nconst isPopupNonPinnablePosition = (\n position: PopupPositionsType,\n): position is (typeof PopupNonPinnablePositions)[number] => {\n return (PopupNonPinnablePositions as readonly PopupPositionsType[]).includes(position);\n};\n\nexport const DUMMY_LOCATION: PopupLocation = {\n position: DefaultPosition,\n coordinates: {\n top: -9999,\n left: -9999,\n },\n isFullyVisible: false,\n pinOffset: 0,\n};\n\nexport interface PopupHandlerProps {\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n onClick?: (event: MouseEventType) => void;\n onFocus?: (event: FocusEventType) => void;\n onBlur?: (event: FocusEventType) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport interface PopupProps\n extends Omit<CommonProps, 'children'>, PopupHandlerProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n /**\n * Ссылка (ref) на элемент или React компонент, для которого рисуется попап\n */\n anchorElement: React.ReactNode | Element;\n /**\n * Фон попапа и пина\n */\n backgroundColor?: React.CSSProperties['backgroundColor'];\n borderColor?: React.CSSProperties['borderColor'];\n children: React.ReactNode | (() => React.ReactNode);\n /**\n * Показывать ли пин\n */\n hasPin?: boolean;\n /**\n * Применять ли box-shadow на попапе. При false отключает границу на пине\n */\n hasShadow?: boolean;\n disableAnimations?: boolean;\n /**\n * Отступ попапа от элемента\n */\n margin?: number;\n maxWidth?: number | string;\n /**\n * Показан или скрыт попап\n */\n opened: boolean;\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n pinOffset?: number;\n /**\n * Высота пина в px. Ширина основания = 2 × size (для top/bottom).\n * Значения по размерам: small 8, medium 10, large 12.\n */\n pinSize?: number;\n /**\n * смещение попапа относительно родительского элемента\n */\n popupOffset?: number;\n priority?: Priority;\n /**\n * С какой стороны показывать попап и край попапа,\n * на котором будет отображаться пин\n */\n positions?: Readonly<PopupPositionsType[]>;\n /**\n * Приоритетная позиция попапа\n */\n pos?: PopupPositionsType | ShortPopupPositionsType;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n /**\n * Игнорировать ли события hover/click\n */\n ignoreHover?: boolean;\n width?: React.CSSProperties['width'];\n minWidth?: React.CSSProperties['minWidth'];\n /**\n * При очередном рендере пытаться сохранить первоначальную позицию попапа\n * (в том числе, когда он выходит за пределы экрана, но может быть проскролен в него).\n *\n * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.\n * @see https://github.com/skbkontur/retail-ui/pull/1195\n */\n tryPreserveFirstRenderedPosition?: boolean;\n /**\n * Включает поиск наиболее подходящей позиции попапа, если ни одна заданная позиция попапа не влезает во вьюпорт.\n * Выбирается позиция с наибольшей видимой площадью.\n */\n tryBestFallbackPosition?: boolean;\n withoutMobile?: boolean;\n /** @ignore */\n disablePortal?: boolean;\n mobileOnCloseRequest?: () => void;\n /**\n * Возвращает текущую позицию попапа\n */\n onPositionChange?: (pos: PopupPositionsType, isFullyVisible: boolean) => void;\n}\n\ninterface PopupLocation {\n coordinates: {\n left: number;\n top: number;\n };\n position: PopupPositionsType;\n isFullyVisible: boolean;\n pinOffset: number;\n}\n\nexport interface PopupState {\n location: Nullable<PopupLocation>;\n}\n\ninterface FallbackCandidateEvaluation {\n position: PopupPositionsType;\n coordinates: Offset;\n overflowCount: number;\n visibleArea: number;\n isFullyVisible: boolean;\n isAreaEligible: boolean;\n}\n\nexport const PopupDataTids = {\n root: 'Popup__root',\n content: 'PopupContent',\n contentInner: 'PopupContentInner',\n popupPin: 'PopupPin__root',\n hoverBridge: 'Popup__hoverBridge',\n} as const;\n\nexport const PopupIds = {\n root: PopupDataTids.root,\n};\n\ntype DefaultProps = Required<\n Pick<\n PopupProps,\n | 'popupOffset'\n | 'hasPin'\n | 'hasShadow'\n | 'disablePortal'\n | 'disableAnimations'\n | 'useWrapper'\n | 'ignoreHover'\n | 'width'\n | 'priority'\n >\n>;\n\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class Popup extends React.Component<PopupProps, PopupState> {\n public static __KONTUR_REACT_UI__ = 'Popup';\n public static displayName = 'Popup';\n\n public static defaultProps: DefaultProps = {\n popupOffset: 0,\n hasPin: false,\n hasShadow: false,\n disableAnimations: isTestEnv,\n useWrapper: false,\n ignoreHover: false,\n disablePortal: false,\n width: 'auto',\n priority: ZIndex.priorities.Popup,\n };\n\n private getProps = createPropsGetter(Popup.defaultProps);\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n public state: PopupState = { location: this.props.opened ? DUMMY_LOCATION : null };\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n\n private theme!: Theme;\n private layoutEventsToken: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private locationUpdateId: Nullable<number> = null;\n private lastPopupContentElement: Nullable<Element>;\n private isMobileLayout!: boolean;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\n private hasAnchorElementListeners = false;\n private rootId = PopupIds.root + getRandomID();\n\n public anchorElement: Nullable<Element> = null;\n private absoluteParent: Nullable<HTMLDivElement> = null;\n\n public componentDidMount() {\n this.updateLocation();\n this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent, this.globalObject);\n\n if (!this.hasAnchorElementListeners) {\n this.addEventListeners(this.anchorElement);\n }\n }\n\n public static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState) {\n /**\n * Delaying updateLocation to ensure it happens after props update\n */\n if (props.opened) {\n if (!state.location) {\n return { location: DUMMY_LOCATION };\n }\n } else if (state.location) {\n return { location: DUMMY_LOCATION };\n }\n return state;\n }\n\n public componentDidUpdate(prevProps: PopupProps, prevState: PopupState) {\n const hadNoLocation = prevState.location === DUMMY_LOCATION;\n const hasLocation = this.state.location !== DUMMY_LOCATION;\n const wasClosed = prevProps.opened && !this.props.opened;\n\n if (this.isMobileLayout && prevState.location === null && this.state.location === null) {\n this.setState({ location: DUMMY_LOCATION });\n }\n\n if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {\n this.props.onOpen();\n }\n if (wasClosed && !hasLocation && this.props.onClose) {\n this.props.onClose();\n }\n if (this.props.opened) {\n this.delayUpdateLocation();\n }\n }\n\n public componentWillUnmount() {\n this.cancelDelayedUpdateLocation();\n if (this.hasAnchorElementListeners) {\n this.removeEventListeners(this.anchorElement);\n }\n if (this.layoutEventsToken) {\n this.layoutEventsToken.remove();\n this.layoutEventsToken = null;\n }\n if (this.state.location && this.props.onClose) {\n this.props.onClose();\n }\n }\n\n public render() {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMobile() {\n const { opened } = this.props;\n const children = this.renderChildren();\n\n return children ? (\n <CommonWrapper rootNodeRef={this.setRootNode}>\n <MobilePopup opened={opened} withoutRenderContainer onCloseRequest={this.props.mobileOnCloseRequest}>\n {this.content(children)}\n </MobilePopup>\n </CommonWrapper>\n ) : null;\n }\n\n private renderMain() {\n const { anchorElement } = this.props;\n const useWrapper = this.getProps().useWrapper;\n\n let anchor: Nullable<React.ReactNode> = null;\n if (isInstanceOf(anchorElement, this.globalObject.Element)) {\n this.updateAnchorElement(anchorElement);\n } else if (React.isValidElement(anchorElement)) {\n anchor = useWrapper ? <span>{anchorElement}</span> : anchorElement;\n } else {\n anchor = <span>{anchorElement}</span>;\n }\n\n const anchorWithRef =\n anchor && React.isValidElement(anchor) && isRefableElement(anchor)\n ? React.cloneElement(anchor, {\n ref: mergeRefs(getElementRef(anchor), this.updateAnchorElement),\n } as { ref: (instance: Nullable<React.ReactInstance>) => void })\n : null;\n // we need to get anchor's DOM node\n // so we either set our own ref on it via cloning\n // or relay on findDOMNode (inside getRootNode)\n // which should be called within updateAnchorElement\n // in the case when the anchor is not refable\n\n const canGetAnchorNode = !!anchorWithRef || isInstanceOf(anchorElement, this.globalObject.Element);\n const renderRef = canGetAnchorNode ? null : this.updateAnchorElement;\n const renderAnchor = anchorWithRef || anchor;\n\n return this.props.disablePortal\n ? this.renderWithoutPortal(renderAnchor, renderRef)\n : this.renderInPortal(renderAnchor, renderRef);\n }\n\n private renderInPortal = (anchor: React.ReactNode, ref: null | Ref<RenderContainer>) => {\n const { location } = this.state;\n\n return (\n <RenderContainer anchor={anchor} ref={ref}>\n {this.isMobileLayout && !this.props.withoutMobile\n ? this.renderMobile()\n : location && this.renderContent(location)}\n </RenderContainer>\n );\n };\n\n private renderWithoutPortal = (anchor: React.ReactNode, ref: null | Ref<EmptyWrapper>) => {\n const { location } = this.state;\n\n return (\n <EmptyWrapper ref={ref}>\n {anchor}\n {location && (\n <div ref={this.updateAbsoluteElement} className={this.styles.absoluteParent()}>\n {this.renderContent(location)}\n </div>\n )}\n </EmptyWrapper>\n );\n };\n\n private updateAnchorElement = (instance: Nullable<React.ReactInstance>) => {\n const childDomNode = isInstanceWithAnchorElement(instance) ? instance.getAnchorElement() : getRootNode(instance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n }\n };\n\n private updateAbsoluteElement = (instance: HTMLDivElement) => {\n this.absoluteParent = instance;\n };\n\n private addEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, this.globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.addEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.addEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.addEventListener('click', this.handleClick);\n element.addEventListener('focusin', this.handleFocus as EventListener);\n element.addEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = true;\n }\n }\n\n private removeEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, this.globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.removeEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.removeEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.removeEventListener('click', this.handleClick);\n element.removeEventListener('focusin', this.handleFocus as EventListener);\n element.removeEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = false;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(event);\n }\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(event);\n }\n };\n\n private handleClick = (event: MouseEventType) => {\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n private handleFocus = (event: FocusEventType) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: FocusEventType) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private calculateWidth = (width: PopupProps['width']) => {\n if (typeof width === 'string' && width.includes('%')) {\n const anchorWidth = getDOMRect(this.anchorElement).width;\n\n return width.replace(/(\\d)+%/g, (percent: string) => `${(anchorWidth * parseFloat(percent)) / 100}px`);\n }\n return width;\n };\n\n private content = (children: React.ReactNode) => {\n const { backgroundColor } = this.props;\n const { width, minWidth } = this.getProps();\n\n return (\n <div\n className={this.styles.content(this.theme)}\n data-tid={PopupDataTids.content}\n ref={mergeRefs(this.refForTransition, this.refPopupContentElement)}\n >\n <div\n className={this.styles.contentInner(this.theme)}\n style={{ backgroundColor, width: this.calculateWidth(width), minWidth: this.calculateWidth(minWidth) }}\n data-tid={PopupDataTids.contentInner}\n >\n {children}\n </div>\n </div>\n );\n };\n\n private renderContent(location: PopupLocation) {\n const { maxWidth, opened } = this.props;\n const { hasShadow, disableAnimations, ignoreHover } = this.getProps();\n const children = this.renderChildren();\n\n const relativeShift = this.getRelativeShift();\n const { direction } = PopupHelper.getPositionObject(location.position);\n const margin = this.getMargin();\n const rootStyle: React.CSSProperties = {\n maxWidth: this.getMobileMaxWidth(maxWidth),\n top: location.coordinates.top + relativeShift.top,\n left: location.coordinates.left + relativeShift.left,\n ...(margin > 0 ? ({ '--popup-hover-bridge-size': `${margin}px` } as React.CSSProperties) : {}),\n };\n\n return (\n <Transition\n timeout={TRANSITION_TIMEOUT}\n appear={!disableAnimations}\n in={Boolean(opened && children)}\n mountOnEnter\n unmountOnExit\n enter={!disableAnimations}\n exit={!disableAnimations}\n onExited={this.resetLocation}\n nodeRef={this.refForTransition}\n >\n {(state: string) => (\n <CommonWrapper {...this.props} rootNodeRef={this.setRootNode} {...this.prepareDataVisualState()}>\n <ZIndex\n id={this.props.id ?? this.rootId}\n data-tid={PopupDataTids.root}\n priority={this.props.priority}\n className={this.cx({\n [this.styles.popup(this.theme)]: true,\n [this.styles.shadow(this.theme)]: hasShadow,\n [this.styles.popupIgnoreHover()]: ignoreHover,\n ...(disableAnimations\n ? {}\n : {\n [this.styles[`transition-enter-${direction}` as keyof typeof this.styles](this.theme)]: true,\n [this.styles.transitionEnter()]: state === 'entering',\n [this.styles.transitionEnterActive()]: state === 'entered',\n [this.styles.transitionExit()]: state === 'exiting',\n }),\n })}\n style={rootStyle}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.content(children)}\n {location !== DUMMY_LOCATION && this.renderHoverBridge(direction, margin)}\n {location !== DUMMY_LOCATION &&\n (!this.isMobileLayout || this.props.withoutMobile) &&\n this.renderPin(location.position)}\n </ZIndex>\n </CommonWrapper>\n )}\n </Transition>\n );\n }\n\n private prepareDataVisualState = () => {\n const position = this.state.location?.position;\n if (position) {\n const attrName = `position-` + position.replace(' ', '-');\n return getVisualStateDataAttributes({ [attrName]: true });\n }\n return {};\n };\n\n private resetLocation = () => {\n this.cancelDelayedUpdateLocation();\n this.state.location !== null && this.setState({ location: null });\n };\n\n private renderChildren() {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n private refPopupContentElement = (element: Nullable<HTMLDivElement>) => {\n if (element) {\n this.lastPopupContentElement = element;\n }\n };\n\n private renderPin(positionName: PopupPositionsType): React.ReactNode {\n const { pinSize, backgroundColor } = this.props;\n const { hasPin } = this.getProps();\n const position = PopupHelper.getPositionObject(positionName);\n\n return (\n hasPin &&\n !isPopupNonPinnablePosition(positionName) && (\n <PopupPin\n popupElement={this.lastPopupContentElement}\n popupPosition={positionName}\n size={pinSize || parseInt(this.theme.popupPinSize)}\n offset={this.getPinOffset(position.align)}\n backgroundColor={backgroundColor || this.theme.popupBackground}\n />\n )\n );\n }\n\n private renderHoverBridge(direction: string, margin: number): React.ReactNode {\n if (margin <= 0) {\n return null;\n }\n\n // Bridge faces the anchor (opposite to popup placement direction).\n const sideByPopupDirection: Record<string, 'top' | 'bottom' | 'left' | 'right'> = {\n bottom: 'top',\n top: 'bottom',\n right: 'left',\n left: 'right',\n };\n const sideTowardAnchor = sideByPopupDirection[direction];\n\n if (!sideTowardAnchor) {\n return null;\n }\n\n const directionalStyle = {\n top: this.styles.hoverBridgeTop(),\n bottom: this.styles.hoverBridgeBottom(),\n left: this.styles.hoverBridgeLeft(),\n right: this.styles.hoverBridgeRight(),\n }[sideTowardAnchor];\n\n return (\n <div\n data-tid={PopupDataTids.hoverBridge}\n data-side={sideTowardAnchor}\n className={this.cx(this.styles.hoverBridge(), directionalStyle)}\n />\n );\n }\n\n private getMargin(): number {\n const { margin: marginFromProps } = this.props;\n return isNonNullable(marginFromProps) && !isNaN(marginFromProps)\n ? marginFromProps\n : parseInt(this.theme.popupMargin) || 0;\n }\n\n private handleLayoutEvent = () => {\n if (!this.state.location) {\n return;\n }\n this.updateLocation();\n };\n\n private delayUpdateLocation() {\n this.cancelDelayedUpdateLocation();\n this.locationUpdateId = this.globalObject.requestAnimationFrame?.(this.updateLocation);\n }\n\n private cancelDelayedUpdateLocation() {\n if (this.locationUpdateId) {\n this.globalObject.cancelAnimationFrame?.(this.locationUpdateId);\n this.locationUpdateId = null;\n }\n }\n\n private updateLocation = () => {\n const popupContentElement = this.lastPopupContentElement;\n\n if (!popupContentElement) {\n return;\n }\n\n const location = this.getLocation(popupContentElement, this.state.location);\n if (location) {\n this.props.onPositionChange?.(location.position, location.isFullyVisible);\n }\n\n const stateChanged = !this.locationEquals(this.state.location, location);\n\n if (stateChanged) {\n this.setState({ location });\n }\n };\n\n private locationEquals(x: Nullable<PopupLocation>, y: Nullable<PopupLocation>) {\n if (x === y) {\n return true;\n }\n\n if (isNullable(x) || isNullable(y)) {\n return false;\n }\n\n return (\n x.coordinates.left === y.coordinates.left &&\n x.coordinates.top === y.coordinates.top &&\n x.position === y.position &&\n x.pinOffset === y.pinOffset\n );\n }\n\n private getOrderedPositions() {\n const positions = this.props.positions ? this.props.positions : PopupPinnablePositions;\n let pos_ = '';\n if (this.props.pos) {\n pos_ = this.props.pos;\n } else {\n pos_ = positions[0];\n }\n const index = positions.findIndex((position) => position.startsWith(pos_));\n if (index === -1) {\n warning(false, 'Unexpected position ' + pos_ + ' passed to Popup. Expected one of: ' + positions.join(', '));\n return positions;\n }\n return [...positions.slice(index), ...positions.slice(0, index)];\n }\n\n private getLocation(popupElement: Element, location?: Nullable<PopupLocation>): Nullable<PopupLocation> {\n const { tryBestFallbackPosition } = this.getProps();\n const positions = this.getOrderedPositions();\n\n const anchorElement = this.anchorElement;\n\n warning(\n anchorElement && isInstanceOf(anchorElement, this.globalObject.Element),\n 'Anchor element is not defined or not instance of Element',\n );\n\n if (!(anchorElement && isInstanceOf(anchorElement, this.globalObject.Element))) {\n return location;\n }\n\n const anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n\n const reusedLocation = this.tryReuseCurrentLocation(location, positions, anchorRect, popupRect);\n if (reusedLocation) {\n return reusedLocation;\n }\n\n const fullyVisibleLocation = this.tryGetFirstFullyVisibleLocation(positions, anchorRect, popupRect);\n if (fullyVisibleLocation) {\n return fullyVisibleLocation;\n }\n\n return this.getFallbackLocation(positions, anchorRect, popupRect, Boolean(tryBestFallbackPosition));\n }\n\n private tryReuseCurrentLocation(\n location: Nullable<PopupLocation> | undefined,\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n ): Nullable<PopupLocation> {\n const { tryPreserveFirstRenderedPosition } = this.getProps();\n\n if (!(location && location !== DUMMY_LOCATION && location.position)) {\n return null;\n }\n\n const position = location.position;\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n const locationAfterPadding = this.applyMobileViewportPadding(\n {\n coordinates,\n position,\n isFullyVisible: PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject),\n pinOffset: 0,\n },\n popupRect,\n );\n const isFullyVisible = locationAfterPadding.isFullyVisible;\n const canBecomeVisible =\n !this.isMobileLayout &&\n !isFullyVisible &&\n PopupHelper.canBecomeFullyVisible(position, coordinates, this.globalObject);\n\n const shouldReuseCurrentLocation =\n // если нужно сохранить первоначальную позицию и Попап целиком\n // находится в пределах вьюпорта (или может быть проскроллен в него)\n (tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible)) ||\n // если Попап целиком во вьюпорте и в самой приоритетной позиции\n // (иначе нужно попытаться позицию сменить)\n (isFullyVisible && position === positions[0]);\n\n if (!shouldReuseCurrentLocation) {\n return null;\n }\n\n return {\n ...locationAfterPadding,\n isFullyVisible: isFullyVisible || canBecomeVisible,\n };\n }\n\n private tryGetFirstFullyVisibleLocation(\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n ): Nullable<PopupLocation> {\n for (const position of positions) {\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n const isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject);\n\n if (!this.isMobileLayout && isFullyVisible) {\n return { coordinates, position, isFullyVisible: true, pinOffset: 0 };\n }\n\n if (this.isMobileLayout) {\n const location = this.buildLocationForPosition(position, anchorRect, popupRect);\n\n if (location.isFullyVisible) {\n return location;\n }\n }\n }\n\n return null;\n }\n\n private getFallbackLocation(\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n tryBestFallbackPosition: boolean,\n ): PopupLocation {\n if (this.isMobileLayout) {\n const mobileFallback = this.getMobileVerticalFallbackLocation(positions, anchorRect, popupRect);\n if (mobileFallback) {\n return mobileFallback;\n }\n }\n\n const position = tryBestFallbackPosition\n ? this.pickBestFallbackPosition(positions, anchorRect, popupRect)\n : positions[0];\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n return this.applyMobileViewportPadding(\n {\n coordinates,\n position,\n isFullyVisible: PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject),\n pinOffset: 0,\n },\n popupRect,\n );\n }\n\n private getMobileVerticalFallbackLocation(\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n ): Nullable<PopupLocation> {\n const isFullyVisible = (position: PopupPositionsType) =>\n this.buildLocationForPosition(position, anchorRect, popupRect).isFullyVisible;\n\n const topPosition = positions.find((position) => position.startsWith('top') && isFullyVisible(position));\n\n if (topPosition) {\n return this.buildLocationForPosition(topPosition, anchorRect, popupRect);\n }\n\n const bottomPosition = positions.find((position) => position.startsWith('bottom') && isFullyVisible(position));\n\n if (bottomPosition) {\n return this.buildLocationForPosition(bottomPosition, anchorRect, popupRect);\n }\n\n const fallbackPosition =\n positions.find((position) => position.startsWith('bottom')) ??\n positions.find((position) => position.startsWith('top'));\n\n if (!fallbackPosition) {\n return null;\n }\n\n return this.buildLocationForPosition(fallbackPosition, anchorRect, popupRect);\n }\n\n private buildLocationForPosition(position: PopupPositionsType, anchorRect: Rect, popupRect: Rect): PopupLocation {\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n return this.applyMobileViewportPadding(\n {\n coordinates,\n position,\n isFullyVisible: false,\n pinOffset: 0,\n },\n popupRect,\n );\n }\n\n private getViewportSidePadding(): number {\n return PopupHelper.getPopupViewportSidePadding(this.theme, this.isMobileLayout);\n }\n\n private getMobileMaxWidth(maxWidth: PopupProps['maxWidth']) {\n const viewportSidePadding = this.getViewportSidePadding();\n\n if (this.isMobileLayout && isNullable(maxWidth) && viewportSidePadding > 0) {\n return `calc(100dvw - ${viewportSidePadding * 2}px)`;\n }\n\n return maxWidth;\n }\n\n private applyMobileViewportPadding(location: PopupLocation, popupRect: Rect): PopupLocation {\n if (!this.isMobileLayout || this.getViewportSidePadding() === 0) {\n return location;\n }\n\n const { coordinates, pinOffset } = this.normalizeCoordinates(location.coordinates, popupRect);\n\n return {\n ...location,\n coordinates,\n pinOffset,\n isFullyVisible: PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject),\n };\n }\n\n private normalizeCoordinates(coordinates: Offset, popupRect: Rect) {\n const viewportSidePadding = this.getViewportSidePadding();\n let normalizedLeft = coordinates.left;\n let pinOffset = 0;\n\n const viewport = PopupHelper.getViewportAbsoluteRect(this.globalObject);\n const popupRight = normalizedLeft + popupRect.width;\n const distanceToLeft = normalizedLeft - viewport.left;\n const distanceToRight = viewport.left + viewport.width - popupRight;\n\n if (distanceToLeft < viewportSidePadding) {\n normalizedLeft = viewport.left + viewportSidePadding;\n pinOffset = normalizedLeft - coordinates.left;\n } else if (distanceToRight < viewportSidePadding) {\n normalizedLeft = viewport.left + viewport.width - viewportSidePadding - popupRect.width;\n pinOffset = normalizedLeft - coordinates.left;\n }\n\n return {\n coordinates: {\n ...coordinates,\n left: Math.round(normalizedLeft),\n },\n pinOffset,\n };\n }\n\n private pickBestFallbackPosition(\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n ): PopupPositionsType {\n const defaultPosition = positions[0];\n const coords = this.getCoordinates(anchorRect, popupRect, defaultPosition);\n const overflow = PopupHelper.getOverflowEdges(coords, popupRect, this.globalObject);\n const preferredDirection = PopupHelper.getPreferredDirection(overflow, defaultPosition);\n const preferredAlignOrder =\n overflow.left || overflow.right ? ['right', 'center', 'left'] : ['center', 'left', 'right'];\n const candidates = PopupHelper.getOrderedFallbackCandidates(\n positions,\n overflow,\n preferredDirection,\n preferredAlignOrder,\n PopupPinnablePositions,\n );\n const positionsSet = new Set(positions);\n const viewport = PopupHelper.getViewportAbsoluteRect(this.globalObject);\n const evaluatedCandidates = candidates.map((position) =>\n this.evaluateFallbackCandidate(position, anchorRect, popupRect, viewport),\n );\n const bestAreaCandidate = this.pickBestAreaCandidate(evaluatedCandidates, positionsSet);\n const bestOverflowCandidate = this.pickBestOverflowCandidate(evaluatedCandidates, positionsSet);\n\n // Если есть хотя бы одна позиция с ненулевой видимой площадью,\n // выбираем её (с приоритетом полностью видимых вариантов).\n // Иначе — используем старую эвристику по количеству переполненных сторон.\n return bestAreaCandidate && bestAreaCandidate.visibleArea > 0\n ? bestAreaCandidate.position\n : bestOverflowCandidate.position;\n }\n\n private evaluateFallbackCandidate(\n position: PopupPositionsType,\n anchorRect: Rect,\n popupRect: Rect,\n viewport: Rect,\n ): FallbackCandidateEvaluation {\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n const popupAbsolute = {\n top: coordinates.top,\n left: coordinates.left,\n width: popupRect.width,\n height: popupRect.height,\n };\n const overlapWidth =\n Math.min(popupAbsolute.left + popupAbsolute.width, viewport.left + viewport.width) -\n Math.max(popupAbsolute.left, viewport.left);\n const overlapHeight =\n Math.min(popupAbsolute.top + popupAbsolute.height, viewport.top + viewport.height) -\n Math.max(popupAbsolute.top, viewport.top);\n const visibleWidth = Math.max(0, overlapWidth);\n const visibleHeight = Math.max(0, overlapHeight);\n const overflow = PopupHelper.getOverflowEdges(coordinates, popupRect, this.globalObject);\n const isFullyVisible = visibleWidth === popupAbsolute.width && visibleHeight === popupAbsolute.height;\n const isAreaEligible = PopupHelper.getPositionObject(position).direction !== 'left' || isFullyVisible;\n\n return {\n position,\n coordinates,\n overflowCount: PopupHelper.getOverflowCount(overflow),\n visibleArea: visibleWidth * visibleHeight,\n isFullyVisible,\n isAreaEligible,\n };\n }\n\n private pickBestAreaCandidate(\n candidates: Readonly<FallbackCandidateEvaluation[]>,\n positionsSet: ReadonlySet<PopupPositionsType>,\n ): Nullable<FallbackCandidateEvaluation> {\n let bestCandidate: Nullable<FallbackCandidateEvaluation> = null;\n\n for (const candidate of candidates) {\n if (!candidate.isAreaEligible || candidate.visibleArea <= 0) {\n continue;\n }\n\n const isBetterArea =\n !bestCandidate ||\n // предпочитаем любые полностью видимые позиции\n (candidate.isFullyVisible && !bestCandidate.isFullyVisible) ||\n // среди одинаковых по полноте — большую видимую площадь\n (candidate.isFullyVisible === bestCandidate.isFullyVisible &&\n candidate.visibleArea > bestCandidate.visibleArea) ||\n // при равной площади — ту, что указана в props.positions\n (candidate.visibleArea === bestCandidate.visibleArea &&\n positionsSet.has(candidate.position) &&\n !positionsSet.has(bestCandidate.position));\n\n if (isBetterArea) {\n bestCandidate = candidate;\n }\n }\n\n return bestCandidate;\n }\n\n private pickBestOverflowCandidate(\n candidates: Readonly<FallbackCandidateEvaluation[]>,\n positionsSet: ReadonlySet<PopupPositionsType>,\n ): FallbackCandidateEvaluation {\n let bestCandidate = candidates[0];\n\n for (const candidate of candidates) {\n const isBetterOverflow =\n candidate.overflowCount < bestCandidate.overflowCount ||\n (candidate.overflowCount === bestCandidate.overflowCount &&\n positionsSet.has(candidate.position) &&\n !positionsSet.has(bestCandidate.position));\n\n if (isBetterOverflow) {\n bestCandidate = candidate;\n }\n }\n\n return bestCandidate;\n }\n\n private getPinnedPopupOffset(anchorRect: Rect, position: PositionObject) {\n if (!this.getProps().hasPin || /center|middle/.test(position.align)) {\n return 0;\n }\n\n const anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;\n\n const { pinSize } = this.props;\n\n return Math.max(\n 0,\n this.getPinOffset(position.align, false) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2,\n );\n }\n\n private getRelativeShift = () => {\n const { absoluteParent } = this;\n\n if (!this.props.disablePortal || !absoluteParent) {\n return {\n top: 0,\n left: 0,\n };\n }\n\n const rect = PopupHelper.getElementAbsoluteRect(absoluteParent);\n\n return {\n top: -rect.top,\n left: -rect.left,\n };\n };\n\n private getCoordinates(anchorRect: Rect, popupRect: Rect, positionName: string) {\n const margin = this.getMargin();\n const position = PopupHelper.getPositionObject(positionName);\n const popupOffset = this.getProps().popupOffset + this.getPinnedPopupOffset(anchorRect, position);\n\n const getDefaultCoordinates = () => ({\n top: anchorRect.top - popupRect.height - margin,\n left: PopupHelper.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n });\n switch (position.direction) {\n case 'top':\n return getDefaultCoordinates();\n case 'middle':\n return {\n top: anchorRect.top + anchorRect.height / 2 - popupRect.height / 2,\n left: PopupHelper.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'bottom':\n return {\n top: anchorRect.top + anchorRect.height + margin,\n left: PopupHelper.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'left':\n return {\n top: PopupHelper.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left - popupRect.width - margin,\n };\n case 'right':\n return {\n top: PopupHelper.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left + anchorRect.width + margin,\n };\n default:\n warning(\n false,\n `Unexpected align '${position.direction}'. Must be one of - 'top', 'bottom', 'left', 'right', 'center', 'middle'. Returning default value.`,\n );\n return getDefaultCoordinates();\n }\n }\n\n private getPinOffset(align: string, useLocationPinOffset = true) {\n const { pinOffset } = this.props;\n const defaultPinOffset = pinOffset || parseInt(this.theme.popupPinOffsetY);\n const pinOffsetFromState = useLocationPinOffset && this.isMobileLayout ? (this.state.location?.pinOffset ?? 0) : 0;\n\n switch (align) {\n case 'top':\n case 'bottom':\n return defaultPinOffset;\n case 'left':\n return (pinOffset || parseInt(this.theme.popupPinOffsetX)) + pinOffsetFromState;\n case 'right':\n return (pinOffset || parseInt(this.theme.popupPinOffsetX)) + pinOffsetFromState;\n case 'center':\n case 'middle':\n return -pinOffsetFromState;\n default:\n warning(\n false,\n `Unexpected align '${align}'. Must be one of - 'top', 'bottom', 'left', 'right', 'center', 'middle'. Returning default value.`,\n );\n return defaultPinOffset;\n }\n }\n}\n\n// Нужно, чтобы получать по рефу dom-элемент, в который зарендерится anchor\ntype EmptyWrapperProps = Readonly<{\n children: React.ReactNode;\n}>;\n\nclass EmptyWrapper extends React.Component<EmptyWrapperProps> {\n public render() {\n return this.props.children;\n }\n}\n"]}
1
+ {"version":3,"file":"Popup.js","sourceRoot":"","sources":["Popup.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { HTMLAttributes, Ref } from 'react';\nimport React from 'react';\nimport { Transition } from 'react-transition-group';\nimport warning from 'warning';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { getElementRef } from '../../lib/getElementRef.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.js';\nimport { mergeRefs } from '../../lib/mergeRefs.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { getRandomID, isFunction, isNonNullable, isNullable, isRefableElement } from '../../lib/utils.js';\nimport type { FocusEventType, MouseEventType } from '../../typings/event-types.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { CommonProps } from '../CommonWrapper/index.js';\nimport { CommonWrapper } from '../CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { MobilePopup } from '../MobilePopup/index.js';\nimport { RenderContainer } from '../RenderContainer/index.js';\nimport type { Priority } from '../ZIndex/index.js';\nimport { ZIndex } from '../ZIndex/index.js';\nimport { getStyles } from './Popup.styles.js';\nimport type { Offset, PositionObject, Rect } from './PopupHelper.js';\nimport { PopupHelper } from './PopupHelper.js';\nimport { PopupPin } from './PopupPin.js';\n\nconst TRANSITION_TIMEOUT = { enter: 0, exit: 200 };\n\nexport const PopupNonPinnablePositions = ['middle center', 'middle left', 'middle right'] as const;\n\nexport const PopupPinnablePositions = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n] as const;\n\nexport const PopupPositions = [...PopupPinnablePositions, ...PopupNonPinnablePositions] as const;\n\nexport const DefaultPosition = PopupPositions[0];\n\nexport type PopupPositionsType = (typeof PopupPositions)[number];\nexport type PopupPinnablePositionsType = (typeof PopupPinnablePositions)[number];\nexport type ShortPopupPositionsType = 'top' | 'bottom' | 'left' | 'right';\n\nconst isPopupNonPinnablePosition = (\n position: PopupPositionsType,\n): position is (typeof PopupNonPinnablePositions)[number] => {\n return (PopupNonPinnablePositions as readonly PopupPositionsType[]).includes(position);\n};\n\nexport const DUMMY_LOCATION: PopupLocation = {\n position: DefaultPosition,\n coordinates: {\n top: -9999,\n left: -9999,\n },\n isFullyVisible: false,\n pinOffset: 0,\n};\n\nexport interface PopupHandlerProps {\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n onClick?: (event: MouseEventType) => void;\n onFocus?: (event: FocusEventType) => void;\n onBlur?: (event: FocusEventType) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport interface PopupProps\n extends Omit<CommonProps, 'children'>, PopupHandlerProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n /**\n * Ссылка (ref) на элемент или React компонент, для которого рисуется попап\n */\n anchorElement: React.ReactNode | Element;\n /**\n * Фон попапа и пина\n */\n backgroundColor?: React.CSSProperties['backgroundColor'];\n borderColor?: React.CSSProperties['borderColor'];\n children: React.ReactNode | (() => React.ReactNode);\n /**\n * Показывать ли пин\n */\n hasPin?: boolean;\n /**\n * Применять ли box-shadow на попапе. При false отключает границу на пине\n */\n hasShadow?: boolean;\n disableAnimations?: boolean;\n /**\n * Отступ попапа от элемента\n */\n margin?: number;\n maxWidth?: number | string;\n /**\n * Показан или скрыт попап\n */\n opened: boolean;\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n pinOffset?: number;\n /**\n * Высота пина в px. Ширина основания = 2 × size (для top/bottom).\n * Значения по размерам: small 8, medium 10, large 12.\n */\n pinSize?: number;\n /**\n * смещение попапа относительно родительского элемента\n */\n popupOffset?: number;\n priority?: Priority;\n /**\n * С какой стороны показывать попап и край попапа,\n * на котором будет отображаться пин\n */\n positions?: Readonly<PopupPositionsType[]>;\n /**\n * Приоритетная позиция попапа\n */\n pos?: PopupPositionsType | ShortPopupPositionsType;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n /**\n * Игнорировать ли события hover/click\n */\n ignoreHover?: boolean;\n width?: React.CSSProperties['width'];\n minWidth?: React.CSSProperties['minWidth'];\n /**\n * При очередном рендере пытаться сохранить первоначальную позицию попапа\n * (в том числе, когда он выходит за пределы экрана, но может быть проскролен в него).\n *\n * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.\n * @see https://github.com/skbkontur/retail-ui/pull/1195\n */\n tryPreserveFirstRenderedPosition?: boolean;\n /**\n * Включает поиск наиболее подходящей позиции попапа, если ни одна заданная позиция попапа не влезает во вьюпорт.\n * Выбирается позиция с наибольшей видимой площадью.\n */\n tryBestFallbackPosition?: boolean;\n withoutMobile?: boolean;\n /** @ignore */\n disablePortal?: boolean;\n mobileOnCloseRequest?: () => void;\n /**\n * Возвращает текущую позицию попапа\n */\n onPositionChange?: (pos: PopupPositionsType, isFullyVisible: boolean) => void;\n}\n\ninterface PopupLocation {\n coordinates: {\n left: number;\n top: number;\n };\n position: PopupPositionsType;\n isFullyVisible: boolean;\n pinOffset: number;\n}\n\nexport interface PopupState {\n location: Nullable<PopupLocation>;\n}\n\ninterface FallbackCandidateEvaluation {\n position: PopupPositionsType;\n coordinates: Offset;\n overflowCount: number;\n visibleArea: number;\n isFullyVisible: boolean;\n isAreaEligible: boolean;\n}\n\nexport const PopupDataTids = {\n root: 'Popup__root',\n content: 'PopupContent',\n contentInner: 'PopupContentInner',\n popupPin: 'PopupPin__root',\n hoverBridge: 'Popup__hoverBridge',\n} as const;\n\nexport const PopupIds = {\n root: PopupDataTids.root,\n};\n\ntype DefaultProps = Required<\n Pick<\n PopupProps,\n | 'popupOffset'\n | 'hasPin'\n | 'hasShadow'\n | 'disablePortal'\n | 'disableAnimations'\n | 'useWrapper'\n | 'ignoreHover'\n | 'width'\n | 'priority'\n >\n>;\n\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class Popup extends React.Component<PopupProps, PopupState> {\n public static __KONTUR_REACT_UI__ = 'Popup';\n public static displayName = 'Popup';\n\n public static defaultProps: DefaultProps = {\n popupOffset: 0,\n hasPin: false,\n hasShadow: false,\n disableAnimations: isTestEnv,\n useWrapper: false,\n ignoreHover: false,\n disablePortal: false,\n width: 'auto',\n priority: ZIndex.priorities.Popup,\n };\n\n private getProps = createPropsGetter(Popup.defaultProps);\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n public state: PopupState = { location: this.props.opened ? DUMMY_LOCATION : null };\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n\n private theme!: Theme;\n private layoutEventsToken: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private locationUpdateId: Nullable<number> = null;\n private lastPopupContentElement: Nullable<Element>;\n private isMobileLayout!: boolean;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\n private hasAnchorElementListeners = false;\n private rootId = PopupIds.root + getRandomID();\n\n public anchorElement: Nullable<Element> = null;\n private absoluteParent: Nullable<HTMLDivElement> = null;\n\n public componentDidMount() {\n this.updateLocation();\n this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent, this.globalObject);\n\n if (!this.hasAnchorElementListeners) {\n this.addEventListeners(this.anchorElement);\n }\n }\n\n public static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState) {\n /**\n * Delaying updateLocation to ensure it happens after props update\n */\n if (props.opened) {\n if (!state.location) {\n return { location: DUMMY_LOCATION };\n }\n } else if (state.location) {\n return { location: DUMMY_LOCATION };\n }\n return state;\n }\n\n public componentDidUpdate(prevProps: PopupProps, prevState: PopupState) {\n const hadNoLocation = prevState.location === DUMMY_LOCATION;\n const hasLocation = this.state.location !== DUMMY_LOCATION;\n const wasClosed = prevProps.opened && !this.props.opened;\n\n if (this.isMobileLayout && prevState.location === null && this.state.location === null) {\n this.setState({ location: DUMMY_LOCATION });\n }\n\n if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {\n this.props.onOpen();\n }\n if (wasClosed && !hasLocation && this.props.onClose) {\n this.props.onClose();\n }\n if (this.props.opened) {\n this.delayUpdateLocation();\n }\n }\n\n public componentWillUnmount() {\n this.cancelDelayedUpdateLocation();\n if (this.hasAnchorElementListeners) {\n this.removeEventListeners(this.anchorElement);\n }\n if (this.layoutEventsToken) {\n this.layoutEventsToken.remove();\n this.layoutEventsToken = null;\n }\n if (this.state.location && this.props.onClose) {\n this.props.onClose();\n }\n }\n\n public render() {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMobile() {\n const { opened } = this.props;\n const children = this.renderChildren();\n\n return children ? (\n <CommonWrapper rootNodeRef={this.setRootNode}>\n <MobilePopup opened={opened} withoutRenderContainer onCloseRequest={this.props.mobileOnCloseRequest}>\n {this.content(children)}\n </MobilePopup>\n </CommonWrapper>\n ) : null;\n }\n\n private renderMain() {\n const { anchorElement } = this.props;\n const useWrapper = this.getProps().useWrapper;\n\n let anchor: Nullable<React.ReactNode> = null;\n if (isInstanceOf(anchorElement, this.globalObject.Element)) {\n this.updateAnchorElement(anchorElement);\n } else if (React.isValidElement(anchorElement)) {\n anchor = useWrapper ? <span>{anchorElement}</span> : anchorElement;\n } else {\n anchor = <span>{anchorElement}</span>;\n }\n const anchorWithRef =\n anchor && React.isValidElement(anchor) && isRefableElement(anchor)\n ? React.cloneElement(anchor, {\n ref: mergeRefs(getElementRef(anchor), this.updateAnchorElement),\n } as { ref: (instance: Nullable<React.ReactInstance>) => void })\n : null;\n // we need to get anchor's DOM node\n // so we either set our own ref on it via cloning\n // or relay on findDOMNode (inside getRootNode)\n // which should be called within updateAnchorElement\n // in the case when the anchor is not refable\n\n const canGetAnchorNode = !!anchorWithRef || isInstanceOf(anchorElement, this.globalObject.Element);\n const renderRef = canGetAnchorNode ? null : this.updateAnchorElement;\n const renderAnchor = anchorWithRef || anchor;\n\n return this.props.disablePortal\n ? this.renderWithoutPortal(renderAnchor, renderRef)\n : this.renderInPortal(renderAnchor, renderRef);\n }\n\n private renderInPortal = (anchor: React.ReactNode, ref: null | Ref<RenderContainer>) => {\n const { location } = this.state;\n\n return (\n <RenderContainer anchor={anchor} ref={ref}>\n {this.isMobileLayout && !this.props.withoutMobile\n ? this.renderMobile()\n : location && this.renderContent(location)}\n </RenderContainer>\n );\n };\n\n private renderWithoutPortal = (anchor: React.ReactNode, ref: null | Ref<EmptyWrapper>) => {\n const { location } = this.state;\n\n return (\n <EmptyWrapper ref={ref}>\n {anchor}\n {location && (\n <div ref={this.updateAbsoluteElement} className={this.styles.absoluteParent()}>\n {this.renderContent(location)}\n </div>\n )}\n </EmptyWrapper>\n );\n };\n\n private updateAnchorElement = (instance: Nullable<React.ReactInstance>) => {\n const childDomNode = isInstanceWithAnchorElement(instance) ? instance.getAnchorElement() : getRootNode(instance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n }\n };\n\n private updateAbsoluteElement = (instance: HTMLDivElement) => {\n this.absoluteParent = instance;\n };\n\n private addEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, this.globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.addEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.addEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.addEventListener('click', this.handleClick);\n element.addEventListener('focusin', this.handleFocus as EventListener);\n element.addEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = true;\n }\n }\n\n private removeEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, this.globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.removeEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.removeEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.removeEventListener('click', this.handleClick);\n element.removeEventListener('focusin', this.handleFocus as EventListener);\n element.removeEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = false;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(event);\n }\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(event);\n }\n };\n\n private handleClick = (event: MouseEventType) => {\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n private handleFocus = (event: FocusEventType) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: FocusEventType) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private calculateWidth = (width: PopupProps['width']) => {\n if (typeof width === 'string' && width.includes('%')) {\n const anchorWidth = getDOMRect(this.anchorElement).width;\n\n return width.replace(/(\\d)+%/g, (percent: string) => `${(anchorWidth * parseFloat(percent)) / 100}px`);\n }\n return width;\n };\n\n private content = (children: React.ReactNode) => {\n const { backgroundColor } = this.props;\n const { width, minWidth } = this.getProps();\n\n return (\n <div\n className={this.styles.content(this.theme)}\n data-tid={PopupDataTids.content}\n ref={mergeRefs(this.refForTransition, this.refPopupContentElement)}\n >\n <div\n className={this.styles.contentInner(this.theme)}\n style={{ backgroundColor, width: this.calculateWidth(width), minWidth: this.calculateWidth(minWidth) }}\n data-tid={PopupDataTids.contentInner}\n >\n {children}\n </div>\n </div>\n );\n };\n\n private renderContent(location: PopupLocation) {\n const { maxWidth, opened } = this.props;\n const { hasShadow, disableAnimations, ignoreHover } = this.getProps();\n const children = this.renderChildren();\n\n const relativeShift = this.getRelativeShift();\n const { direction } = PopupHelper.getPositionObject(location.position);\n const margin = this.getMargin();\n const rootStyle: React.CSSProperties = {\n maxWidth: this.getMobileMaxWidth(maxWidth),\n top: location.coordinates.top + relativeShift.top,\n left: location.coordinates.left + relativeShift.left,\n ...(margin > 0 ? ({ '--popup-hover-bridge-size': `${margin}px` } as React.CSSProperties) : {}),\n };\n\n return (\n <Transition\n timeout={TRANSITION_TIMEOUT}\n appear={!disableAnimations}\n in={Boolean(opened && children)}\n mountOnEnter\n unmountOnExit\n enter={!disableAnimations}\n exit={!disableAnimations}\n onExited={this.resetLocation}\n nodeRef={this.refForTransition}\n >\n {(state: string) => (\n <CommonWrapper {...this.props} rootNodeRef={this.setRootNode} {...this.prepareDataVisualState()}>\n <ZIndex\n id={this.props.id ?? this.rootId}\n data-tid={PopupDataTids.root}\n priority={this.props.priority}\n className={this.cx({\n [this.styles.popup(this.theme)]: true,\n [this.styles.shadow(this.theme)]: hasShadow,\n [this.styles.popupIgnoreHover()]: ignoreHover,\n ...(disableAnimations\n ? {}\n : {\n [this.styles[`transition-enter-${direction}` as keyof typeof this.styles](this.theme)]: true,\n [this.styles.transitionEnter()]: state === 'entering',\n [this.styles.transitionEnterActive()]: state === 'entered',\n [this.styles.transitionExit()]: state === 'exiting',\n }),\n })}\n style={rootStyle}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.content(children)}\n {location !== DUMMY_LOCATION && this.renderHoverBridge(direction, margin)}\n {location !== DUMMY_LOCATION &&\n (!this.isMobileLayout || this.props.withoutMobile) &&\n this.renderPin(location.position)}\n </ZIndex>\n </CommonWrapper>\n )}\n </Transition>\n );\n }\n\n private prepareDataVisualState = () => {\n const position = this.state.location?.position;\n if (position) {\n const attrName = `position-` + position.replace(' ', '-');\n return getVisualStateDataAttributes({ [attrName]: true });\n }\n return {};\n };\n\n private resetLocation = () => {\n this.cancelDelayedUpdateLocation();\n this.state.location !== null && this.setState({ location: null });\n };\n\n private renderChildren() {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n private refPopupContentElement = (element: Nullable<HTMLDivElement>) => {\n if (element) {\n this.lastPopupContentElement = element;\n }\n };\n\n private renderPin(positionName: PopupPositionsType): React.ReactNode {\n const { pinSize, backgroundColor } = this.props;\n const { hasPin } = this.getProps();\n const position = PopupHelper.getPositionObject(positionName);\n\n return (\n hasPin &&\n !isPopupNonPinnablePosition(positionName) && (\n <PopupPin\n popupElement={this.lastPopupContentElement}\n popupPosition={positionName}\n size={pinSize || parseInt(this.theme.popupPinSize)}\n offset={this.getPinOffset(position.align)}\n backgroundColor={backgroundColor || this.theme.popupBackground}\n />\n )\n );\n }\n\n private renderHoverBridge(direction: string, margin: number): React.ReactNode {\n if (margin <= 0) {\n return null;\n }\n\n // Bridge faces the anchor (opposite to popup placement direction).\n const sideByPopupDirection: Record<string, 'top' | 'bottom' | 'left' | 'right'> = {\n bottom: 'top',\n top: 'bottom',\n right: 'left',\n left: 'right',\n };\n const sideTowardAnchor = sideByPopupDirection[direction];\n\n if (!sideTowardAnchor) {\n return null;\n }\n\n const directionalStyle = {\n top: this.styles.hoverBridgeTop(),\n bottom: this.styles.hoverBridgeBottom(),\n left: this.styles.hoverBridgeLeft(),\n right: this.styles.hoverBridgeRight(),\n }[sideTowardAnchor];\n\n return (\n <div\n data-tid={PopupDataTids.hoverBridge}\n data-side={sideTowardAnchor}\n className={this.cx(this.styles.hoverBridge(), directionalStyle)}\n />\n );\n }\n\n private getMargin(): number {\n const { margin: marginFromProps } = this.props;\n return isNonNullable(marginFromProps) && !isNaN(marginFromProps)\n ? marginFromProps\n : parseInt(this.theme.popupMargin) || 0;\n }\n\n private handleLayoutEvent = () => {\n if (!this.state.location) {\n return;\n }\n this.updateLocation();\n };\n\n private delayUpdateLocation() {\n this.cancelDelayedUpdateLocation();\n this.locationUpdateId = this.globalObject.requestAnimationFrame?.(this.updateLocation);\n }\n\n private cancelDelayedUpdateLocation() {\n if (this.locationUpdateId) {\n this.globalObject.cancelAnimationFrame?.(this.locationUpdateId);\n this.locationUpdateId = null;\n }\n }\n\n private updateLocation = () => {\n const popupContentElement = this.lastPopupContentElement;\n\n if (!popupContentElement) {\n return;\n }\n\n const location = this.getLocation(popupContentElement, this.state.location);\n if (location) {\n this.props.onPositionChange?.(location.position, location.isFullyVisible);\n }\n\n const stateChanged = !this.locationEquals(this.state.location, location);\n\n if (stateChanged) {\n this.setState({ location });\n }\n };\n\n private locationEquals(x: Nullable<PopupLocation>, y: Nullable<PopupLocation>) {\n if (x === y) {\n return true;\n }\n\n if (isNullable(x) || isNullable(y)) {\n return false;\n }\n\n return (\n x.coordinates.left === y.coordinates.left &&\n x.coordinates.top === y.coordinates.top &&\n x.position === y.position &&\n x.pinOffset === y.pinOffset\n );\n }\n\n private getOrderedPositions() {\n const positions = this.props.positions ? this.props.positions : PopupPinnablePositions;\n let pos_ = '';\n if (this.props.pos) {\n pos_ = this.props.pos;\n } else {\n pos_ = positions[0];\n }\n const index = positions.findIndex((position) => position.startsWith(pos_));\n if (index === -1) {\n warning(false, 'Unexpected position ' + pos_ + ' passed to Popup. Expected one of: ' + positions.join(', '));\n return positions;\n }\n return [...positions.slice(index), ...positions.slice(0, index)];\n }\n\n private getLocation(popupElement: Element, location?: Nullable<PopupLocation>): Nullable<PopupLocation> {\n const { tryBestFallbackPosition } = this.getProps();\n const positions = this.getOrderedPositions();\n\n const anchorElement = this.anchorElement;\n\n warning(\n anchorElement && isInstanceOf(anchorElement, this.globalObject.Element),\n 'Anchor element is not defined or not instance of Element',\n );\n\n if (!(anchorElement && isInstanceOf(anchorElement, this.globalObject.Element))) {\n return location;\n }\n\n const anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n\n const reusedLocation = this.tryReuseCurrentLocation(location, positions, anchorRect, popupRect);\n if (reusedLocation) {\n return reusedLocation;\n }\n\n const fullyVisibleLocation = this.tryGetFirstFullyVisibleLocation(positions, anchorRect, popupRect);\n if (fullyVisibleLocation) {\n return fullyVisibleLocation;\n }\n\n return this.getFallbackLocation(positions, anchorRect, popupRect, Boolean(tryBestFallbackPosition));\n }\n\n private tryReuseCurrentLocation(\n location: Nullable<PopupLocation> | undefined,\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n ): Nullable<PopupLocation> {\n const { tryPreserveFirstRenderedPosition } = this.getProps();\n\n if (!(location && location !== DUMMY_LOCATION && location.position)) {\n return null;\n }\n\n const position = location.position;\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n const locationAfterPadding = this.applyMobileViewportPadding(\n {\n coordinates,\n position,\n isFullyVisible: PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject),\n pinOffset: 0,\n },\n popupRect,\n );\n const isFullyVisible = locationAfterPadding.isFullyVisible;\n const canBecomeVisible =\n !this.isMobileLayout &&\n !isFullyVisible &&\n PopupHelper.canBecomeFullyVisible(position, coordinates, this.globalObject);\n\n const shouldReuseCurrentLocation =\n // если нужно сохранить первоначальную позицию и Попап целиком\n // находится в пределах вьюпорта (или может быть проскроллен в него)\n (tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible)) ||\n // если Попап целиком во вьюпорте и в самой приоритетной позиции\n // (иначе нужно попытаться позицию сменить)\n (isFullyVisible && position === positions[0]);\n\n if (!shouldReuseCurrentLocation) {\n return null;\n }\n\n return {\n ...locationAfterPadding,\n isFullyVisible: isFullyVisible || canBecomeVisible,\n };\n }\n\n private tryGetFirstFullyVisibleLocation(\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n ): Nullable<PopupLocation> {\n for (const position of positions) {\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n const isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject);\n\n if (!this.isMobileLayout && isFullyVisible) {\n return { coordinates, position, isFullyVisible: true, pinOffset: 0 };\n }\n\n if (this.isMobileLayout) {\n const location = this.buildLocationForPosition(position, anchorRect, popupRect);\n\n if (location.isFullyVisible) {\n return location;\n }\n }\n }\n\n return null;\n }\n\n private getFallbackLocation(\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n tryBestFallbackPosition: boolean,\n ): PopupLocation {\n if (this.isMobileLayout) {\n const mobileFallback = this.getMobileVerticalFallbackLocation(positions, anchorRect, popupRect);\n if (mobileFallback) {\n return mobileFallback;\n }\n }\n\n const position = tryBestFallbackPosition\n ? this.pickBestFallbackPosition(positions, anchorRect, popupRect)\n : positions[0];\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n return this.applyMobileViewportPadding(\n {\n coordinates,\n position,\n isFullyVisible: PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject),\n pinOffset: 0,\n },\n popupRect,\n );\n }\n\n private getMobileVerticalFallbackLocation(\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n ): Nullable<PopupLocation> {\n const isFullyVisible = (position: PopupPositionsType) =>\n this.buildLocationForPosition(position, anchorRect, popupRect).isFullyVisible;\n\n const topPosition = positions.find((position) => position.startsWith('top') && isFullyVisible(position));\n\n if (topPosition) {\n return this.buildLocationForPosition(topPosition, anchorRect, popupRect);\n }\n\n const bottomPosition = positions.find((position) => position.startsWith('bottom') && isFullyVisible(position));\n\n if (bottomPosition) {\n return this.buildLocationForPosition(bottomPosition, anchorRect, popupRect);\n }\n\n const fallbackPosition =\n positions.find((position) => position.startsWith('bottom')) ??\n positions.find((position) => position.startsWith('top'));\n\n if (!fallbackPosition) {\n return null;\n }\n\n return this.buildLocationForPosition(fallbackPosition, anchorRect, popupRect);\n }\n\n private buildLocationForPosition(position: PopupPositionsType, anchorRect: Rect, popupRect: Rect): PopupLocation {\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n return this.applyMobileViewportPadding(\n {\n coordinates,\n position,\n isFullyVisible: false,\n pinOffset: 0,\n },\n popupRect,\n );\n }\n\n private getViewportSidePadding(): number {\n return PopupHelper.getPopupViewportSidePadding(this.theme, this.isMobileLayout);\n }\n\n private getMobileMaxWidth(maxWidth: PopupProps['maxWidth']) {\n const viewportSidePadding = this.getViewportSidePadding();\n\n if (this.isMobileLayout && isNullable(maxWidth) && viewportSidePadding > 0) {\n return `calc(100dvw - ${viewportSidePadding * 2}px)`;\n }\n\n return maxWidth;\n }\n\n private applyMobileViewportPadding(location: PopupLocation, popupRect: Rect): PopupLocation {\n if (!this.isMobileLayout || this.getViewportSidePadding() === 0) {\n return location;\n }\n\n const { coordinates, pinOffset } = this.normalizeCoordinates(location.coordinates, popupRect);\n\n return {\n ...location,\n coordinates,\n pinOffset,\n isFullyVisible: PopupHelper.isFullyVisible(coordinates, popupRect, this.globalObject),\n };\n }\n\n private normalizeCoordinates(coordinates: Offset, popupRect: Rect) {\n const viewportSidePadding = this.getViewportSidePadding();\n let normalizedLeft = coordinates.left;\n let pinOffset = 0;\n\n const viewport = PopupHelper.getViewportAbsoluteRect(this.globalObject);\n const popupRight = normalizedLeft + popupRect.width;\n const distanceToLeft = normalizedLeft - viewport.left;\n const distanceToRight = viewport.left + viewport.width - popupRight;\n\n if (distanceToLeft < viewportSidePadding) {\n normalizedLeft = viewport.left + viewportSidePadding;\n pinOffset = normalizedLeft - coordinates.left;\n } else if (distanceToRight < viewportSidePadding) {\n normalizedLeft = viewport.left + viewport.width - viewportSidePadding - popupRect.width;\n pinOffset = normalizedLeft - coordinates.left;\n }\n\n return {\n coordinates: {\n ...coordinates,\n left: Math.round(normalizedLeft),\n },\n pinOffset,\n };\n }\n\n private pickBestFallbackPosition(\n positions: Readonly<PopupPositionsType[]>,\n anchorRect: Rect,\n popupRect: Rect,\n ): PopupPositionsType {\n const defaultPosition = positions[0];\n const coords = this.getCoordinates(anchorRect, popupRect, defaultPosition);\n const overflow = PopupHelper.getOverflowEdges(coords, popupRect, this.globalObject);\n const preferredDirection = PopupHelper.getPreferredDirection(overflow, defaultPosition);\n const preferredAlignOrder =\n overflow.left || overflow.right ? ['right', 'center', 'left'] : ['center', 'left', 'right'];\n const candidates = PopupHelper.getOrderedFallbackCandidates(\n positions,\n overflow,\n preferredDirection,\n preferredAlignOrder,\n PopupPinnablePositions,\n );\n const positionsSet = new Set(positions);\n const viewport = PopupHelper.getViewportAbsoluteRect(this.globalObject);\n const evaluatedCandidates = candidates.map((position) =>\n this.evaluateFallbackCandidate(position, anchorRect, popupRect, viewport),\n );\n const bestAreaCandidate = this.pickBestAreaCandidate(evaluatedCandidates, positionsSet);\n const bestOverflowCandidate = this.pickBestOverflowCandidate(evaluatedCandidates, positionsSet);\n\n // Если есть хотя бы одна позиция с ненулевой видимой площадью,\n // выбираем её (с приоритетом полностью видимых вариантов).\n // Иначе — используем старую эвристику по количеству переполненных сторон.\n return bestAreaCandidate && bestAreaCandidate.visibleArea > 0\n ? bestAreaCandidate.position\n : bestOverflowCandidate.position;\n }\n\n private evaluateFallbackCandidate(\n position: PopupPositionsType,\n anchorRect: Rect,\n popupRect: Rect,\n viewport: Rect,\n ): FallbackCandidateEvaluation {\n const coordinates = this.getCoordinates(anchorRect, popupRect, position);\n const popupAbsolute = {\n top: coordinates.top,\n left: coordinates.left,\n width: popupRect.width,\n height: popupRect.height,\n };\n const overlapWidth =\n Math.min(popupAbsolute.left + popupAbsolute.width, viewport.left + viewport.width) -\n Math.max(popupAbsolute.left, viewport.left);\n const overlapHeight =\n Math.min(popupAbsolute.top + popupAbsolute.height, viewport.top + viewport.height) -\n Math.max(popupAbsolute.top, viewport.top);\n const visibleWidth = Math.max(0, overlapWidth);\n const visibleHeight = Math.max(0, overlapHeight);\n const overflow = PopupHelper.getOverflowEdges(coordinates, popupRect, this.globalObject);\n const isFullyVisible = visibleWidth === popupAbsolute.width && visibleHeight === popupAbsolute.height;\n const isAreaEligible = PopupHelper.getPositionObject(position).direction !== 'left' || isFullyVisible;\n\n return {\n position,\n coordinates,\n overflowCount: PopupHelper.getOverflowCount(overflow),\n visibleArea: visibleWidth * visibleHeight,\n isFullyVisible,\n isAreaEligible,\n };\n }\n\n private pickBestAreaCandidate(\n candidates: Readonly<FallbackCandidateEvaluation[]>,\n positionsSet: ReadonlySet<PopupPositionsType>,\n ): Nullable<FallbackCandidateEvaluation> {\n let bestCandidate: Nullable<FallbackCandidateEvaluation> = null;\n\n for (const candidate of candidates) {\n if (!candidate.isAreaEligible || candidate.visibleArea <= 0) {\n continue;\n }\n\n const isBetterArea =\n !bestCandidate ||\n // предпочитаем любые полностью видимые позиции\n (candidate.isFullyVisible && !bestCandidate.isFullyVisible) ||\n // среди одинаковых по полноте — большую видимую площадь\n (candidate.isFullyVisible === bestCandidate.isFullyVisible &&\n candidate.visibleArea > bestCandidate.visibleArea) ||\n // при равной площади — ту, что указана в props.positions\n (candidate.visibleArea === bestCandidate.visibleArea &&\n positionsSet.has(candidate.position) &&\n !positionsSet.has(bestCandidate.position));\n\n if (isBetterArea) {\n bestCandidate = candidate;\n }\n }\n\n return bestCandidate;\n }\n\n private pickBestOverflowCandidate(\n candidates: Readonly<FallbackCandidateEvaluation[]>,\n positionsSet: ReadonlySet<PopupPositionsType>,\n ): FallbackCandidateEvaluation {\n let bestCandidate = candidates[0];\n\n for (const candidate of candidates) {\n const isBetterOverflow =\n candidate.overflowCount < bestCandidate.overflowCount ||\n (candidate.overflowCount === bestCandidate.overflowCount &&\n positionsSet.has(candidate.position) &&\n !positionsSet.has(bestCandidate.position));\n\n if (isBetterOverflow) {\n bestCandidate = candidate;\n }\n }\n\n return bestCandidate;\n }\n\n private getPinnedPopupOffset(anchorRect: Rect, position: PositionObject) {\n if (!this.getProps().hasPin || /center|middle/.test(position.align)) {\n return 0;\n }\n\n const anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;\n\n const { pinSize } = this.props;\n\n return Math.max(\n 0,\n this.getPinOffset(position.align, false) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2,\n );\n }\n\n private getRelativeShift = () => {\n const { absoluteParent } = this;\n\n if (!this.props.disablePortal || !absoluteParent) {\n return {\n top: 0,\n left: 0,\n };\n }\n\n const rect = PopupHelper.getElementAbsoluteRect(absoluteParent);\n\n return {\n top: -rect.top,\n left: -rect.left,\n };\n };\n\n private getCoordinates(anchorRect: Rect, popupRect: Rect, positionName: string) {\n const margin = this.getMargin();\n const position = PopupHelper.getPositionObject(positionName);\n const popupOffset = this.getProps().popupOffset + this.getPinnedPopupOffset(anchorRect, position);\n\n const getDefaultCoordinates = () => ({\n top: anchorRect.top - popupRect.height - margin,\n left: PopupHelper.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n });\n switch (position.direction) {\n case 'top':\n return getDefaultCoordinates();\n case 'middle':\n return {\n top: anchorRect.top + anchorRect.height / 2 - popupRect.height / 2,\n left: PopupHelper.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'bottom':\n return {\n top: anchorRect.top + anchorRect.height + margin,\n left: PopupHelper.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'left':\n return {\n top: PopupHelper.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left - popupRect.width - margin,\n };\n case 'right':\n return {\n top: PopupHelper.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left + anchorRect.width + margin,\n };\n default:\n warning(\n false,\n `Unexpected align '${position.direction}'. Must be one of - 'top', 'bottom', 'left', 'right', 'center', 'middle'. Returning default value.`,\n );\n return getDefaultCoordinates();\n }\n }\n\n private getPinOffset(align: string, useLocationPinOffset = true) {\n const { pinOffset } = this.props;\n const defaultPinOffset = pinOffset || parseInt(this.theme.popupPinOffsetY);\n const pinOffsetFromState = useLocationPinOffset && this.isMobileLayout ? (this.state.location?.pinOffset ?? 0) : 0;\n\n switch (align) {\n case 'top':\n case 'bottom':\n return defaultPinOffset;\n case 'left':\n return (pinOffset || parseInt(this.theme.popupPinOffsetX)) + pinOffsetFromState;\n case 'right':\n return (pinOffset || parseInt(this.theme.popupPinOffsetX)) + pinOffsetFromState;\n case 'center':\n case 'middle':\n return -pinOffsetFromState;\n default:\n warning(\n false,\n `Unexpected align '${align}'. Must be one of - 'top', 'bottom', 'left', 'right', 'center', 'middle'. Returning default value.`,\n );\n return defaultPinOffset;\n }\n }\n}\n\n// Нужно, чтобы получать по рефу dom-элемент, в который зарендерится anchor\ntype EmptyWrapperProps = Readonly<{\n children: React.ReactNode;\n}>;\n\nclass EmptyWrapper extends React.Component<EmptyWrapperProps> {\n public render() {\n return this.props.children;\n }\n}\n"]}
@@ -182,9 +182,22 @@ export declare class BasicThemeClass {
182
182
  static tokenInputPaddingYLarge: string;
183
183
  static tokenInputPaddingXLarge: string;
184
184
  static tokenInputPopupOffset: string;
185
+ /**
186
+ * @deprecated Не работает с версии => `6.4` и будет удалена в `7.0`.
187
+ * @see {@link tokenInputMenuOffsetY}
188
+ */
185
189
  static tokenInputPopupMarginSmall: string;
190
+ /**
191
+ * @deprecated Не работает с версии => `6.4` и будет удалена в `7.0`.
192
+ * @see {@link tokenInputMenuOffsetY}
193
+ */
186
194
  static tokenInputPopupMarginMedium: string;
195
+ /**
196
+ * @deprecated Не работает с версии => `6.4` и будет удалена в `7.0`.
197
+ * @see {@link tokenInputMenuOffsetY}
198
+ */
187
199
  static tokenInputPopupMarginLarge: string;
200
+ static get tokenInputMenuOffsetY(): string;
188
201
  static loaderBg: string;
189
202
  static loaderOpacity: string;
190
203
  static loaderBorderRadius: string;
@@ -1207,6 +1220,7 @@ export declare class BasicThemeClass {
1207
1220
  static get inputBorderColorWarning(): string;
1208
1221
  static get inputBorderTopColor(): string;
1209
1222
  static get inputPlaceholderColor(): string;
1223
+ static inputAffixColor: string;
1210
1224
  static get inputPlaceholderColorLight(): string;
1211
1225
  static inputBlinkColor: string;
1212
1226
  static inputColorScheme: string;
@@ -1356,6 +1370,7 @@ export declare class BasicThemeClass {
1356
1370
  static get radioCheckedBulletColor(): string;
1357
1371
  static get radioCheckedHoverBgColor(): string;
1358
1372
  static get radioDisabledBg(): string;
1373
+ static radioDisabledBorderColor: string;
1359
1374
  static get radioDisabledShadow(): string;
1360
1375
  /**
1361
1376
  * @deprecated Не используется. Будет удалена в `7.0`.
@@ -292,6 +292,13 @@ var BasicThemeClass = /** @class */ (function () {
292
292
  enumerable: false,
293
293
  configurable: true
294
294
  });
295
+ Object.defineProperty(BasicThemeClass, "tokenInputMenuOffsetY", {
296
+ get: function () {
297
+ return this.menuOffsetY;
298
+ },
299
+ enumerable: false,
300
+ configurable: true
301
+ });
295
302
  Object.defineProperty(BasicThemeClass, "btnCheckedDisabledBorderColor", {
296
303
  get: function () {
297
304
  return this.btnCheckedDisabledBg;
@@ -4163,8 +4170,20 @@ var BasicThemeClass = /** @class */ (function () {
4163
4170
  BasicThemeClass.tokenInputPaddingYLarge = '5px';
4164
4171
  BasicThemeClass.tokenInputPaddingXLarge = '4px';
4165
4172
  BasicThemeClass.tokenInputPopupOffset = '2px';
4173
+ /**
4174
+ * @deprecated Не работает с версии => `6.4` и будет удалена в `7.0`.
4175
+ * @see {@link tokenInputMenuOffsetY}
4176
+ */
4166
4177
  BasicThemeClass.tokenInputPopupMarginSmall = '7px';
4178
+ /**
4179
+ * @deprecated Не работает с версии => `6.4` и будет удалена в `7.0`.
4180
+ * @see {@link tokenInputMenuOffsetY}
4181
+ */
4167
4182
  BasicThemeClass.tokenInputPopupMarginMedium = '10px';
4183
+ /**
4184
+ * @deprecated Не работает с версии => `6.4` и будет удалена в `7.0`.
4185
+ * @see {@link tokenInputMenuOffsetY}
4186
+ */
4168
4187
  BasicThemeClass.tokenInputPopupMarginLarge = '13px';
4169
4188
  //#endregion TokenInput
4170
4189
  //#region Loader
@@ -4805,6 +4824,7 @@ var BasicThemeClass = /** @class */ (function () {
4805
4824
  BasicThemeClass.inputDisabledBackgroundClip = 'padding-box';
4806
4825
  BasicThemeClass.inputBorderColor = colors.lineNeutralPale;
4807
4826
  BasicThemeClass.inputBorderColorHover = colors.lineNeutralPaleHover;
4827
+ BasicThemeClass.inputAffixColor = colors.textNeutralSoft;
4808
4828
  BasicThemeClass.inputBlinkColor = colors.shapeFaintNeutralAlpha;
4809
4829
  BasicThemeClass.inputColorScheme = 'light';
4810
4830
  BasicThemeClass.inputCounterColor = colors.textNeutralSoft;
@@ -4868,6 +4888,7 @@ var BasicThemeClass = /** @class */ (function () {
4868
4888
  BasicThemeClass.radioHoverShadow = 'none';
4869
4889
  BasicThemeClass.radioActiveShadow = 'none';
4870
4890
  BasicThemeClass.radioCheckedBorderColor = 'transparent';
4891
+ BasicThemeClass.radioDisabledBorderColor = 'transparent';
4871
4892
  /**
4872
4893
  * @deprecated Не используется. Будет удалена в `7.0`.
4873
4894
  */