@skbkontur/react-ui 0.0.0-a5ba2462c5 → 0.0.0-a6f09fbded
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 +0 -30
- package/cjs/components/Autocomplete/Autocomplete.md +113 -0
- package/cjs/components/Button/Button.md +261 -0
- package/cjs/components/Calendar/Calendar.md +276 -0
- package/cjs/components/Calendar/CalendarDay.md +70 -0
- package/cjs/components/Center/Center.md +26 -0
- package/cjs/components/Checkbox/Checkbox.md +171 -0
- package/cjs/components/ComboBox/ComboBox.d.ts +11 -5
- package/cjs/components/ComboBox/ComboBox.js +10 -1
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.md +574 -0
- package/cjs/components/CurrencyInput/CurrencyInput.md +39 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +2 -2
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.md +29 -0
- package/cjs/components/DateInput/DateInput.md +111 -0
- package/cjs/components/DatePicker/DatePicker.md +368 -0
- package/cjs/components/Dropdown/Dropdown.md +45 -0
- package/cjs/components/DropdownMenu/DropdownMenu.md +290 -0
- package/cjs/components/FileUploader/FileUploader.md +131 -0
- package/cjs/components/FxInput/FxInput.md +31 -0
- package/cjs/components/Gapped/Gapped.md +44 -0
- package/cjs/components/GlobalLoader/GlobalLoader.md +97 -0
- package/cjs/components/Group/Group.md +19 -0
- package/cjs/components/Hint/Hint.md +86 -0
- package/cjs/components/Input/Input.md +86 -0
- package/cjs/components/Input/InputLayout/InputLayout.d.ts +1 -0
- package/cjs/components/Input/InputLayout/InputLayout.js +4 -2
- package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
- package/cjs/components/Kebab/Kebab.md +306 -0
- package/cjs/components/Link/Link.md +182 -0
- package/cjs/components/Loader/Loader.md +33 -0
- package/cjs/components/MaskedInput/MaskedInput.d.ts +0 -8
- package/cjs/components/MaskedInput/MaskedInput.js +2 -23
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.md +114 -0
- package/cjs/components/MenuFooter/MenuFooter.md +27 -0
- package/cjs/components/MenuHeader/MenuHeader.md +35 -0
- package/cjs/components/MenuItem/MenuItem.md +139 -0
- package/cjs/components/MenuSeparator/MenuSeparator.md +14 -0
- package/cjs/components/MiniModal/MiniModal.md +231 -0
- package/cjs/components/Modal/Modal.md +56 -0
- package/cjs/components/Paging/Paging.md +57 -0
- package/cjs/components/PasswordInput/PasswordInput.md +29 -0
- package/cjs/components/Radio/Radio.md +57 -0
- package/cjs/components/RadioGroup/RadioGroup.md +44 -0
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +75 -0
- package/cjs/components/ScrollContainer/ScrollContainer.md +224 -0
- package/cjs/components/Select/Select.md +113 -0
- package/cjs/components/SidePage/SidePage.md +65 -0
- package/cjs/components/SingleToast/SingleToast.md +36 -0
- package/cjs/components/Spinner/Spinner.md +36 -0
- package/cjs/components/Sticky/Sticky.md +28 -0
- package/cjs/components/Switcher/Switcher.md +111 -0
- package/cjs/components/Tabs/Tab.md +73 -0
- package/cjs/components/Tabs/Tabs.md +54 -0
- package/cjs/components/Textarea/Textarea.d.ts +6 -1
- package/cjs/components/Textarea/Textarea.js +16 -3
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/Textarea.md +58 -0
- package/cjs/components/Textarea/Textarea.styles.js +2 -1
- package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
- package/cjs/components/Toast/Toast.md +69 -0
- package/cjs/components/Toggle/Toggle.md +110 -0
- package/cjs/components/Token/Token.md +48 -0
- package/cjs/components/TokenInput/TokenInput.md +277 -0
- package/cjs/components/Tooltip/Tooltip.d.ts +1 -1
- package/cjs/components/Tooltip/Tooltip.js +6 -8
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.md +322 -0
- package/cjs/components/TooltipMenu/TooltipMenu.md +241 -0
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js +16 -7
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js +27 -9
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +7 -6
- package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -7
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -5
- package/cjs/internal/CustomComboBox/CustomComboBox.js +1 -3
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
- package/cjs/internal/CustomComboBox/getComboBoxTheme.js +10 -7
- package/cjs/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
- package/cjs/internal/DataTids/DATATIDS.md +12 -0
- package/cjs/internal/DataTids/DataTids.d.ts +12 -0
- package/cjs/internal/DataTids/DataTids.js +50 -0
- package/cjs/internal/DataTids/DataTids.js.map +1 -0
- package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
- package/cjs/internal/DataTids/DataTids.styles.js +42 -0
- package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
- package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
- package/cjs/internal/DataTids/componentsDataTids.js +15 -0
- package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.styles.js +12 -4
- package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +235 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +10 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -0
- package/cjs/internal/ThemePlayground/Playground.md +7 -0
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/themes/BasicTheme.d.ts +2 -0
- package/cjs/internal/themes/BasicTheme.js +11 -6
- package/cjs/internal/themes/BasicTheme.js.map +1 -1
- package/cjs/internal/themes/DarkTheme5_4.js +10 -3
- package/cjs/internal/themes/DarkTheme5_4.js.map +1 -1
- package/cjs/internal/themes/LightTheme5_4.js +10 -3
- package/cjs/internal/themes/LightTheme5_4.js.map +1 -1
- package/cjs/internal/themes/consts.d.ts +7 -0
- package/cjs/internal/themes/consts.js +7 -0
- package/cjs/internal/themes/consts.js.map +1 -0
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +64 -0
- package/cjs/lib/locale/LOCALECONTEXT.md +222 -0
- package/cjs/lib/theming/ThemeContext.md +265 -0
- package/components/Autocomplete/Autocomplete.md +113 -0
- package/components/Button/Button.md +261 -0
- package/components/Calendar/Calendar.md +276 -0
- package/components/Calendar/CalendarDay.md +70 -0
- package/components/Center/Center.md +26 -0
- package/components/Checkbox/Checkbox.md +171 -0
- package/components/ComboBox/ComboBox/ComboBox.js +2 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +11 -5
- package/components/ComboBox/ComboBox.md +574 -0
- package/components/CurrencyInput/CurrencyInput.md +39 -0
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.md +29 -0
- package/components/DateInput/DateInput.md +111 -0
- package/components/DatePicker/DatePicker.md +368 -0
- package/components/Dropdown/Dropdown.md +45 -0
- package/components/DropdownMenu/DropdownMenu.md +290 -0
- package/components/FileUploader/FileUploader.md +131 -0
- package/components/FxInput/FxInput.md +31 -0
- package/components/Gapped/Gapped.md +44 -0
- package/components/GlobalLoader/GlobalLoader.md +97 -0
- package/components/Group/Group.md +19 -0
- package/components/Hint/Hint.md +86 -0
- package/components/Input/Input.md +86 -0
- package/components/Input/InputLayout/InputLayout/InputLayout.js +5 -2
- package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.d.ts +1 -0
- package/components/Kebab/Kebab.md +306 -0
- package/components/Link/Link.md +182 -0
- package/components/Loader/Loader.md +33 -0
- package/components/MaskedInput/MaskedInput/MaskedInput.js +1 -11
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +0 -8
- package/components/MaskedInput/MaskedInput.md +114 -0
- package/components/MenuFooter/MenuFooter.md +27 -0
- package/components/MenuHeader/MenuHeader.md +35 -0
- package/components/MenuItem/MenuItem.md +139 -0
- package/components/MenuSeparator/MenuSeparator.md +14 -0
- package/components/MiniModal/MiniModal.md +231 -0
- package/components/Modal/Modal.md +56 -0
- package/components/Paging/Paging.md +57 -0
- package/components/PasswordInput/PasswordInput.md +29 -0
- package/components/Radio/Radio.md +57 -0
- package/components/RadioGroup/RadioGroup.md +44 -0
- package/components/ResponsiveLayout/ResponsiveLayout.md +75 -0
- package/components/ScrollContainer/ScrollContainer.md +224 -0
- package/components/Select/Select.md +113 -0
- package/components/SidePage/SidePage.md +65 -0
- package/components/SingleToast/SingleToast.md +36 -0
- package/components/Spinner/Spinner.md +36 -0
- package/components/Sticky/Sticky.md +28 -0
- package/components/Switcher/Switcher.md +111 -0
- package/components/Tabs/Tab.md +73 -0
- package/components/Tabs/Tabs.md +54 -0
- package/components/Textarea/Textarea/Textarea.js +11 -2
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +6 -1
- package/components/Textarea/Textarea.md +58 -0
- package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
- package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
- package/components/Toast/Toast.md +69 -0
- package/components/Toggle/Toggle.md +110 -0
- package/components/Token/Token.md +48 -0
- package/components/TokenInput/TokenInput.md +277 -0
- package/components/Tooltip/Tooltip/Tooltip.js +4 -7
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +1 -1
- package/components/Tooltip/Tooltip.md +322 -0
- package/components/TooltipMenu/TooltipMenu.md +241 -0
- package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js +21 -7
- package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
- package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js +14 -5
- package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +44 -51
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +7 -6
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -5
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +6 -5
- package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js +5 -3
- package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js.map +1 -1
- package/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
- package/internal/DataTids/DATATIDS.md +12 -0
- package/internal/DataTids/DataTids/DataTids.js +69 -0
- package/internal/DataTids/DataTids/DataTids.js.map +1 -0
- package/internal/DataTids/DataTids/package.json +6 -0
- package/internal/DataTids/DataTids.d.ts +12 -0
- package/internal/DataTids/DataTids.styles/DataTids.styles.js +20 -0
- package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
- package/internal/DataTids/DataTids.styles/package.json +6 -0
- package/internal/DataTids/DataTids.styles.d.ts +7 -0
- package/internal/DataTids/componentsDataTids/componentsDataTids.js +12 -0
- package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
- package/internal/DataTids/componentsDataTids/package.json +6 -0
- package/internal/DataTids/componentsDataTids.d.ts +5 -0
- package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +7 -4
- package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js +249 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/package.json +6 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js +8 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js.map +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/package.json +6 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
- package/internal/ThemePlayground/Playground.md +7 -0
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/themes/BasicTheme/BasicTheme.js +4 -4
- package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +2 -0
- package/internal/themes/DarkTheme5_4/DarkTheme5_4.js +4 -2
- package/internal/themes/DarkTheme5_4/DarkTheme5_4.js.map +1 -1
- package/internal/themes/LightTheme5_4/LightTheme5_4.js +4 -2
- package/internal/themes/LightTheme5_4/LightTheme5_4.js.map +1 -1
- package/internal/themes/consts/consts.js +7 -0
- package/internal/themes/consts/consts.js.map +1 -0
- package/internal/themes/consts/package.json +6 -0
- package/internal/themes/consts.d.ts +7 -0
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +64 -0
- package/lib/locale/LOCALECONTEXT.md +222 -0
- package/lib/theming/ThemeContext.md +265 -0
- package/package.json +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","warning","globalObject","isNullable","ThemeFactory","Popup","RenderLayer","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","rootNode","createPropsGetter","CloseButtonIcon","isInstanceOf","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","cx","isThemeGTE","styles","DEFAULT_DELAY","TooltipDataTids","root","content","crossIcon","DefaultPositions","Tooltip","_class","_Tooltip","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","opened","focused","contentElement","clickedOutside","popupRef","createRef","renderContent","props","render","createElement","ref","refContent","className","tooltipContent","theme","sizeVariables","contentStyle","renderCloseButton","getAnchorElement","_this$popupRef$curren","current","anchorElement","getPositions","allowedPositions","filter","item","includes","node","open","setState","close","handleMouseEnter","event","isHoverAnchor","trigger","target","clearHoverTimeout","hoverTimeout","setTimeout","delayBeforeShow","handleMouseLeave","relatedTarget","delay","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","getSizeVariables","size","closeButtonStyle","closeButtonSmall","tooltipContentSmall","borderRadius","tooltipBorderRadiusSmall","pinSize","tooltipPinSizeSmall","pinOffsetX","tooltipPinOffsetXSmall","pinOffsetY","tooltipPinOffsetYSmall","margin","tooltipMarginSmall","closeButtonMedium","tooltipContentMedium","tooltipBorderRadiusMedium","tooltipPinSizeMedium","tooltipPinOffsetXMedium","tooltipPinOffsetYMedium","tooltipMarginMedium","closeButtonLarge","tooltipContentLarge","tooltipBorderRadiusLarge","tooltipPinSizeLarge","tooltipPinOffsetXLarge","tooltipPinOffsetYLarge","tooltipMarginLarge","console","error","_inheritsLoose","_proto","prototype","validateProps","children","getAllowedPositions","componentDidMount","componentDidUpdate","_this$getProps","componentWillUnmount","_this2","Consumer","flags","featureFlags","Provider","value","create","popupBackground","tooltipBg","popupBorder","tooltipBorder","popupBorderRadius","popupPinSize","popupPinOffsetX","popupPinOffsetY","popupMargin","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","icon","tabbable","side","parseInt","tooltipCloseBtnSide","color","tooltipCloseBtnColor","colorHover","tooltipCloseBtnHoverColor","onClick","show","hide","_this$getPopupAndLaye","getPopupAndLayerProps","popupProps","_this$getPopupAndLaye2","layerProps","active","popup","renderPopup","_extends","_this$getProps2","disableAnimations","rootNodeRef","setRootNode","hasPin","hasShadow","maxWidth","positions","pos","ignoreHover","onOpen","onClose","tryPreserveFirstRenderedPosition","withoutMobile","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onFocus","onBlur","Error","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","displayName"],"sources":["Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport type { SafeTimer } from '@skbkontur/global-object';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport type { SizeProp } from '../../lib/types/props';\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupProps, PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup';\nimport { Popup } from '../../internal/Popup';\nimport type { RenderLayerProps } from '../../internal/RenderLayer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\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<\n Pick<TooltipProps, 'size' | 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>\n>;\n\n/**\n * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.\n *\n * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать\n * изображения, кнопки, ссылки и прочие интерактивные элементы.\n */\n@rootNode\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 size: 'small',\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 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.props.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.props.size}'. Returning default`);\n return {\n closeButtonStyle: styles.closeButtonSmall(this.theme),\n contentStyle: styles.tooltipContentSmall(this.theme),\n borderRadius: this.theme.tooltipBorderRadiusSmall,\n pinSize: this.theme.tooltipPinSizeSmall,\n pinOffsetX: this.theme.tooltipPinOffsetXSmall,\n pinOffsetY: this.theme.tooltipPinOffsetYSmall,\n margin: this.theme.tooltipMarginSmall,\n };\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","warning","globalObject","isNullable","ThemeFactory","Popup","RenderLayer","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","rootNode","createPropsGetter","CloseButtonIcon","isInstanceOf","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","cx","styles","DEFAULT_DELAY","TooltipDataTids","root","content","crossIcon","OldPositions","Tooltip","_class","_Tooltip","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","opened","focused","contentElement","clickedOutside","popupRef","createRef","renderContent","props","render","createElement","ref","refContent","className","tooltipContent","theme","sizeVariables","contentStyle","renderCloseButton","getAnchorElement","_this$popupRef$curren","current","anchorElement","getPositions","allowedPositions","node","open","setState","close","handleMouseEnter","event","isHoverAnchor","trigger","target","clearHoverTimeout","hoverTimeout","setTimeout","delayBeforeShow","handleMouseLeave","relatedTarget","delay","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","getSizeVariables","size","closeButtonStyle","closeButtonSmall","tooltipContentSmall","borderRadius","tooltipBorderRadiusSmall","pinSize","tooltipPinSizeSmall","pinOffsetX","tooltipPinOffsetXSmall","pinOffsetY","tooltipPinOffsetYSmall","margin","tooltipMarginSmall","closeButtonMedium","tooltipContentMedium","tooltipBorderRadiusMedium","tooltipPinSizeMedium","tooltipPinOffsetXMedium","tooltipPinOffsetYMedium","tooltipMarginMedium","closeButtonLarge","tooltipContentLarge","tooltipBorderRadiusLarge","tooltipPinSizeLarge","tooltipPinOffsetXLarge","tooltipPinOffsetYLarge","tooltipMarginLarge","console","error","_inheritsLoose","_proto","prototype","validateProps","children","getAllowedPositions","componentDidMount","componentDidUpdate","_this$getProps","componentWillUnmount","_this2","Consumer","flags","featureFlags","Provider","value","create","popupBackground","tooltipBg","popupBorder","tooltipBorder","popupBorderRadius","popupPinSize","popupPinOffsetX","popupPinOffsetY","popupMargin","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","icon","tabbable","side","parseInt","tooltipCloseBtnSide","color","tooltipCloseBtnColor","colorHover","tooltipCloseBtnHoverColor","onClick","show","hide","_this$getPopupAndLaye","getPopupAndLayerProps","popupProps","_this$getPopupAndLaye2","layerProps","active","popup","renderPopup","_extends","_this$getProps2","disableAnimations","rootNodeRef","setRootNode","hasPin","hasShadow","maxWidth","positions","pos","ignoreHover","onOpen","onClose","tryPreserveFirstRenderedPosition","withoutMobile","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onFocus","onBlur","Error","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","displayName"],"sources":["Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport type { SafeTimer } from '@skbkontur/global-object';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { SizeProp } from 'react-ui/lib/types/props';\n\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';\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 OldPositions: 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<\n Pick<TooltipProps, 'size' | 'trigger' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>\n>;\n\n/**\n * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.\n *\n * Открывается по клику, фокусом на элемент или по наведению. В отличие от `Hint`, `Tooltip` может содержать\n * изображения, кнопки, ссылки и прочие интерактивные элементы.\n */\n@rootNode\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 size: 'small',\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 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 : OldPositions;\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={this.getPositions()}\n pos={this.props.pos}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private getPositions = (): PopupPositionsType[] | undefined => {\n return this.props.allowedPositions;\n };\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.props.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.props.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":"qJAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,OAAO,MAAM,SAAS;;AAE7B,SAASC,YAAY,QAAQ,0BAA0B;;;AAGvD,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,YAAY,QAAQ,gCAAgC;;AAE7D,SAASC,KAAK,QAAQ,sBAAsB;;AAE5C,SAASC,WAAW,QAAQ,4BAA4B;;;AAGxD,SAASC,+BAA+B,QAAQ,8BAA8B;AAC9E,SAASC,YAAY,QAAQ,gCAAgC;;AAE7D,SAASC,SAAS,QAAQ,8BAA8B;;AAExD,SAASC,aAAa,QAAQ,8BAA8B;;AAE5D,SAASC,QAAQ,QAAQ,oBAAoB;;AAE7C,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,eAAe,QAAQ,gDAAgD;AAChF,SAASC,YAAY,QAAQ,wBAAwB;;AAErD,SAASC,0BAA0B,EAAEC,0BAA0B,QAAQ,+BAA+B;AACtG,SAASC,EAAE,QAAQ,2BAA2B;;AAE9C,SAASC,MAAM,QAAQ,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EzC,IAAMC,aAAa,GAAG,GAAG;;;;;;;AAOzB,OAAO,IAAMC,eAAe,GAAG;EAC7BC,IAAI,EAAE,eAAe;EACrBC,OAAO,EAAE,kBAAkB;EAC3BC,SAAS,EAAE;AACb,CAAU;;AAEV,IAAMC,YAAkC,GAAG;AACzC,cAAc;AACd,cAAc;AACd,WAAW;AACX,WAAW;AACX,YAAY;AACZ,UAAU;AACV,UAAU;AACV,aAAa;AACb,aAAa;AACb,aAAa;AACb,eAAe;AACf,cAAc,CACf;;;;;;;;;;;;;;;;;AAgBD;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,OAAO,GADnBd,QAAQ,CAAAe,MAAA,IAAAC,QAAA,0BAAAC,oBAAA,YAAAH,QAAA,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;;;;;;;;;;;;IAaCU,QAAQ,GAAG3B,iBAAiB,CAACa,OAAO,CAACe,YAAY,CAAC,CAAAX,KAAA;;;;;;;;;;;IAWnDY,KAAK,GAAiB,EAAEC,MAAM,EAAE,KAAK,EAAEC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAAd,KAAA;;;;;IAKtDe,cAAc,GAA0B,IAAI,CAAAf,KAAA;IAC5CgB,cAAc,GAAG,IAAI,CAAAhB,KAAA;;;;IAIrBiB,QAAQ,gBAAG9C,KAAK,CAAC+C,SAAS,CAAQ,CAAC,CAAAlB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2DpCmB,aAAa,GAAG,YAAM;MAC3B,IAAM1B,OAAO,GAAGO,KAAA,CAAKoB,KAAK,CAACC,MAAM,GAAGrB,KAAA,CAAKoB,KAAK,CAACC,MAAM,CAAC,CAAC,GAAG,IAAI;MAC9D,IAAI/C,UAAU,CAACmB,OAAO,CAAC,EAAE;QACvB,OAAO,IAAI;MACb;;MAEA;QACEtB,KAAA,CAAAmD,aAAA;UACEC,GAAG,EAAEvB,KAAA,CAAKwB,UAAW;UACrBC,SAAS,EAAErC,EAAE,CAACC,MAAM,CAACqC,cAAc,CAAC1B,KAAA,CAAK2B,KAAK,CAAC,EAAE3B,KAAA,CAAK4B,aAAa,CAACC,YAAY,CAAE;UAClF,YAAUtC,eAAe,CAACE,OAAQ;;QAEjCA,OAAO;QACPO,KAAA,CAAK8B,iBAAiB,CAAC;QACrB,CAAC;;IAEV,CAAC,CAAA9B,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgCM+B,gBAAgB,GAAG,YAAyB,KAAAC,qBAAA;MACjD,QAAAA,qBAAA,GAAOhC,KAAA,CAAKiB,QAAQ,CAACgB,OAAO,qBAArBD,qBAAA,CAAuBE,aAAa;IAC7C,CAAC,CAAAlC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+EOmC,YAAY,GAAG,YAAwC;MAC7D,OAAOnC,KAAA,CAAKoB,KAAK,CAACgB,gBAAgB;IACpC,CAAC,CAAApC,KAAA;;IAEOwB,UAAU,GAAG,UAACa,IAAwB,EAAK;MACjDrC,KAAA,CAAKe,cAAc,GAAGsB,IAAI;IAC5B,CAAC,CAAArC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuFOsC,IAAI,GAAG,oBAAMtC,KAAA,CAAKuC,QAAQ,CAAC,EAAE1B,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAAb,KAAA;;IAE5CwC,KAAK,GAAG,oBAAMxC,KAAA,CAAKuC,QAAQ,CAAC,EAAE1B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAAb,KAAA;;;;;;;;;IAS9CyC,gBAAgB,GAAG,UAACC,KAAqB,EAAK;MACpD,IAAMC,aAAa,GAAG3C,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACkC,OAAO,KAAK,aAAa;MAC/D,IAAID,aAAa,IAAID,KAAK,CAACG,MAAM,KAAK7C,KAAA,CAAKe,cAAc,EAAE;QACzD;MACF;;MAEAf,KAAA,CAAK8C,iBAAiB,CAAC,CAAC;MACxB9C,KAAA,CAAK+C,YAAY,GAAG1E,YAAY,CAAC2E,UAAU,CAAChD,KAAA,CAAKsC,IAAI,EAAEtC,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACuC,eAAe,CAAC;IACzF,CAAC,CAAAjD,KAAA;;IAEOkD,gBAAgB,GAAG,UAACR,KAAqB,EAAK;MACpD,IAAME,OAAO,GAAG5C,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACkC,OAAO;MACvC;MACGA,OAAO,KAAK,aAAa,IAAI5C,KAAA,CAAKY,KAAK,CAACE,OAAO;MAC/C8B,OAAO,KAAK,OAAO,IAAIF,KAAK,CAACS,aAAa,KAAKnD,KAAA,CAAKe,cAAe;MACpE;QACA;MACF;;MAEAf,KAAA,CAAK8C,iBAAiB,CAAC,CAAC;;MAExB,IAAIF,OAAO,KAAK,aAAa,EAAE;QAC7B5C,KAAA,CAAKwC,KAAK,CAAC,CAAC;MACd,CAAC,MAAM;QACLxC,KAAA,CAAK+C,YAAY,GAAG1E,YAAY,CAAC2E,UAAU,CAAChD,KAAA,CAAKwC,KAAK,EAAE5C,OAAO,CAACwD,KAAK,CAAC;MACxE;IACF,CAAC,CAAApD,KAAA;;IAEOqD,WAAW,GAAG,YAAM;MAC1BrD,KAAA,CAAKsC,IAAI,CAAC,CAAC;IACb,CAAC,CAAAtC,KAAA;;IAEOsD,wBAAwB,GAAG,UAACZ,KAAY,EAAK;MACnD1C,KAAA,CAAKgB,cAAc,GAAGhB,KAAA,CAAKuD,qBAAqB,CAACb,KAAK,CAAC;MACvD,IAAI1C,KAAA,CAAKgB,cAAc,EAAE;QACvB,IAAIhB,KAAA,CAAKoB,KAAK,CAACoC,cAAc,EAAE;UAC7BxD,KAAA,CAAKoB,KAAK,CAACoC,cAAc,CAACd,KAAK,CAAC;QAClC;QACA1C,KAAA,CAAKwC,KAAK,CAAC,CAAC;MACd;IACF,CAAC,CAAAxC,KAAA;;;;;;;;;;IAUOyD,WAAW,GAAG,YAAM;MAC1BzD,KAAA,CAAKuC,QAAQ,CAAC,EAAEzB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;MAChCd,KAAA,CAAKsC,IAAI,CAAC,CAAC;IACb,CAAC,CAAAtC,KAAA;;IAEO0D,UAAU,GAAG,YAAM;MACzB,IAAMd,OAAO,GAAG5C,KAAA,CAAKU,QAAQ,CAAC,CAAC,CAACkC,OAAO;MACvC,IAAIA,OAAO,KAAK,aAAa,IAAI5C,KAAA,CAAKgB,cAAc,EAAE;QACpDhB,KAAA,CAAKwC,KAAK,CAAC,CAAC;MACd;;MAEA,IAAII,OAAO,KAAK,OAAO,EAAE;QACvB5C,KAAA,CAAKwC,KAAK,CAAC,CAAC;MACd;;MAEAxC,KAAA,CAAKgB,cAAc,GAAG,IAAI;MAC1BhB,KAAA,CAAKuC,QAAQ,CAAC,EAAEzB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC,CAAAd,KAAA;;IAEO2D,sBAAsB,GAAG,UAACjB,KAAoC,EAAK;MACzEA,KAAK,CAACkB,eAAe,CAAC,CAAC;;MAEvB,IAAI5D,KAAA,CAAKoB,KAAK,CAACyC,YAAY,EAAE;QAC3B7D,KAAA,CAAKoB,KAAK,CAACyC,YAAY,CAACnB,KAAK,CAAC;MAChC;;MAEA,IAAIA,KAAK,CAACoB,gBAAgB,EAAE;QAC1B;MACF;;MAEA,IAAI9D,KAAA,CAAKoB,KAAK,CAACoC,cAAc,EAAE;QAC7BxD,KAAA,CAAKoB,KAAK,CAACoC,cAAc,CAACd,KAAK,CAAC;MAClC;;MAEA1C,KAAA,CAAKwC,KAAK,CAAC,CAAC;IACd,CAAC,CAAAxC,KAAA;;IAEO+D,gBAAgB,GAAG,YAA4B;MACrD,QAAQ/D,KAAA,CAAKoB,KAAK,CAAC4C,IAAI;QACrB,KAAK,OAAO;UACV,OAAO;YACLC,gBAAgB,EAAE5E,MAAM,CAAC6E,gBAAgB,CAAClE,KAAA,CAAK2B,KAAK,CAAC;YACrDE,YAAY,EAAExC,MAAM,CAAC8E,mBAAmB,CAACnE,KAAA,CAAK2B,KAAK,CAAC;YACpDyC,YAAY,EAAEpE,KAAA,CAAK2B,KAAK,CAAC0C,wBAAwB;YACjDC,OAAO,EAAEtE,KAAA,CAAK2B,KAAK,CAAC4C,mBAAmB;YACvCC,UAAU,EAAExE,KAAA,CAAK2B,KAAK,CAAC8C,sBAAsB;YAC7CC,UAAU,EAAE1E,KAAA,CAAK2B,KAAK,CAACgD,sBAAsB;YAC7CC,MAAM,EAAE5E,KAAA,CAAK2B,KAAK,CAACkD;UACrB,CAAC;QACH,KAAK,QAAQ;UACX,OAAO;YACLZ,gBAAgB,EAAE5E,MAAM,CAACyF,iBAAiB,CAAC9E,KAAA,CAAK2B,KAAK,CAAC;YACtDE,YAAY,EAAExC,MAAM,CAAC0F,oBAAoB,CAAC/E,KAAA,CAAK2B,KAAK,CAAC;YACrDyC,YAAY,EAAEpE,KAAA,CAAK2B,KAAK,CAACqD,yBAAyB;YAClDV,OAAO,EAAEtE,KAAA,CAAK2B,KAAK,CAACsD,oBAAoB;YACxCT,UAAU,EAAExE,KAAA,CAAK2B,KAAK,CAACuD,uBAAuB;YAC9CR,UAAU,EAAE1E,KAAA,CAAK2B,KAAK,CAACwD,uBAAuB;YAC9CP,MAAM,EAAE5E,KAAA,CAAK2B,KAAK,CAACyD;UACrB,CAAC;QACH,KAAK,OAAO;UACV,OAAO;YACLnB,gBAAgB,EAAE5E,MAAM,CAACgG,gBAAgB,CAACrF,KAAA,CAAK2B,KAAK,CAAC;YACrDE,YAAY,EAAExC,MAAM,CAACiG,mBAAmB,CAACtF,KAAA,CAAK2B,KAAK,CAAC;YACpDyC,YAAY,EAAEpE,KAAA,CAAK2B,KAAK,CAAC4D,wBAAwB;YACjDjB,OAAO,EAAEtE,KAAA,CAAK2B,KAAK,CAAC6D,mBAAmB;YACvChB,UAAU,EAAExE,KAAA,CAAK2B,KAAK,CAAC8D,sBAAsB;YAC7Cf,UAAU,EAAE1E,KAAA,CAAK2B,KAAK,CAAC+D,sBAAsB;YAC7Cd,MAAM,EAAE5E,KAAA,CAAK2B,KAAK,CAACgE;UACrB,CAAC;QACH;UACEC,OAAO,CAACC,KAAK,4DAA0D7F,KAAA,CAAKoB,KAAK,CAAC4C,IAAI,yBAAsB,CAAC;UAC7G,OAAO;YACLC,gBAAgB,EAAE5E,MAAM,CAAC6E,gBAAgB,CAAClE,KAAA,CAAK2B,KAAK,CAAC;YACrDE,YAAY,EAAExC,MAAM,CAAC8E,mBAAmB,CAACnE,KAAA,CAAK2B,KAAK,CAAC;YACpDyC,YAAY,EAAEpE,KAAA,CAAK2B,KAAK,CAAC0C,wBAAwB;YACjDC,OAAO,EAAEtE,KAAA,CAAK2B,KAAK,CAAC4C,mBAAmB;YACvCC,UAAU,EAAExE,KAAA,CAAK2B,KAAK,CAAC8C,sBAAsB;YAC7CC,UAAU,EAAE1E,KAAA,CAAK2B,KAAK,CAACgD,sBAAsB;YAC7CC,MAAM,EAAE5E,KAAA,CAAK2B,KAAK,CAACkD;UACrB,CAAC;MACL;IACF,CAAC,QAAA7E,KAAA,EAAA8F,cAAA,CAAAlG,OAAA,EAAAG,oBAAA,MAAAgG,MAAA,GAAAnG,OAAA,CAAAoG,SAAA,CAAAD,MAAA,CA3bOE,aAAa,GAArB,SAAAA,cAAsB7E,KAAmB,EAAQ,CAC/ChD,OAAO,CACLgD,KAAK,CAAC8E,QAAQ,IAAI9E,KAAK,CAACc,aAAa,sGAEvC,CAAC,CACH,CAAC,CAAA6D,MAAA,CAiBMI,mBAAmB,GAA1B,SAAAA,oBAAA,EAA6B,CAC3B,OAAO,IAAI,CAAC/E,KAAK,CAACgB,gBAAgB,GAAG,IAAI,CAAChB,KAAK,CAACgB,gBAAgB,GAAGzC,YAAY,CACjF,CAAC,CAAAoG,MAAA,CAEMK,iBAAiB,GAAxB,SAAAA,kBAAA,EAAiC,CAC/B,IAAI,CAACH,aAAa,CAAC,IAAI,CAACvF,QAAQ,CAAC,CAAC,CAAC,CACrC,CAAC,CAAAqF,MAAA,CAEMM,kBAAkB,GAAzB,SAAAA,mBAAA,EAA4B,CAC1B,IAAAC,cAAA,GAAoB,IAAI,CAAC5F,QAAQ,CAAC,CAAC,CAA3BkC,OAAO,GAAA0D,cAAA,CAAP1D,OAAO,CAEf,IAAI,CAACqD,aAAa,CAAC,IAAI,CAACvF,QAAQ,CAAC,CAAC,CAAC,CACnC,IAAIkC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAChC,KAAK,CAACC,MAAM,EAAE,CAC7C,IAAI,CAAC2B,KAAK,CAAC,CAAC,CACd,CACF,CAAC,CAAAuD,MAAA,CAEMQ,oBAAoB,GAA3B,SAAAA,qBAAA,EAA8B,CAC5B,IAAI,CAACzD,iBAAiB,CAAC,CAAC,CAC1B,CAAC,CAAAiD,MAAA,CAEM1E,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAmF,MAAA,QACd,oBACErI,KAAA,CAAAmD,aAAA,CAACnC,0BAA0B,CAACsH,QAAQ,QACjC,UAACC,KAAK,EAAK,CACVF,MAAI,CAACG,YAAY,GAAGzH,0BAA0B,CAACwH,KAAK,CAAC,CACrD,oBACEvI,KAAA,CAAAmD,aAAA,CAAC3C,YAAY,CAAC8H,QAAQ,QACnB,UAAC9E,KAAK,EAAK,CACV6E,MAAI,CAAC7E,KAAK,GAAGA,KAAK,CAClB6E,MAAI,CAAC5E,aAAa,GAAG4E,MAAI,CAACzC,gBAAgB,CAAC,CAAC,CAC5C,oBACE5F,KAAA,CAAAmD,aAAA,CAAC3C,YAAY,CAACiI,QAAQ,IACpBC,KAAK,EAAEtI,YAAY,CAACuI,MAAM,CACxB,EACEC,eAAe,EAAEpF,KAAK,CAACqF,SAAS,EAChCC,WAAW,EAAEtF,KAAK,CAACuF,aAAa,EAChCC,iBAAiB,EAAEX,MAAI,CAAC5E,aAAa,CAACwC,YAAY,EAClDgD,YAAY,EAAEZ,MAAI,CAAC5E,aAAa,CAAC0C,OAAO,EACxC+C,eAAe,EAAEb,MAAI,CAAC5E,aAAa,CAAC4C,UAAU,EAC9C8C,eAAe,EAAEd,MAAI,CAAC5E,aAAa,CAAC8C,UAAU,EAC9C6C,WAAW,EAAEf,MAAI,CAAC5E,aAAa,CAACgD,MAAM,CACxC,CAAC,EACDjD,KACF,CAAE,IAED6E,MAAI,CAACgB,UAAU,CAAC,CACI,CAAC,CAE5B,CACqB,CAAC,CAE5B,CACmC,CAAC,CAE1C,CAAC,CAAAzB,MAAA,CAoBMjE,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,CACzB,IAAM2F,QAAQ,GACZ,IAAI,CAACrG,KAAK,CAACsG,WAAW,KAAKC,SAAS,GAChC,CAAC/H,OAAO,CAACgI,0BAA0B,CAACC,QAAQ,CAAC,IAAI,CAACnH,QAAQ,CAAC,CAAC,CAACkC,OAAO,CAAC,GACrE,IAAI,CAACxB,KAAK,CAACsG,WAAW,CAE5B,IAAI,CAACD,QAAQ,EAAE,CACb,OAAO,IAAI,CACb,CAEA,IAAMK,IAAI,gBACR3J,KAAA,CAAAmD,aAAA,CAACtC,eAAe,IACd+I,QAAQ,EAAE,KAAM,EAChBC,IAAI,EAAEC,QAAQ,CAAC,IAAI,CAACtG,KAAK,CAACuG,mBAAmB,CAAE,EAC/CC,KAAK,EAAE,IAAI,CAACxG,KAAK,CAACyG,oBAAqB,EACvCC,UAAU,EAAE,IAAI,CAAC1G,KAAK,CAAC2G,yBAA0B,EAClD,CACF,CAED,oBACEnK,KAAA,CAAAmD,aAAA,UACEG,SAAS,EAAErC,EAAE,CAACC,MAAM,CAACqI,WAAW,CAAC,IAAI,CAAC/F,KAAK,CAAC,EAAE,IAAI,CAACC,aAAa,CAACqC,gBAAgB,CAAE,EACnFsE,OAAO,EAAE,IAAI,CAAC5E,sBAAuB,EACrC,YAAUpE,eAAe,CAACG,SAAU,IAEnCoI,IACE,CAAC,CAEV,CAAC,EAMD;AACF;AACA;AACA;AACA,KAJE/B,MAAA,CAKOyC,IAAI,GAAX,SAAAA,KAAA,EAAc,CACZ,IAAI,IAAI,CAAC5H,KAAK,CAACC,MAAM,EAAE,CACrB,OACF,CACA,IAAM+B,OAAO,GAAG,IAAI,CAAClC,QAAQ,CAAC,CAAC,CAACkC,OAAO,CACvC,IAAIA,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,QAAQ,EAAE,CAChDxE,OAAO,CAAC,IAAI,gEAA8DwE,OAAO,MAAG,CAAC,CACrF,OACF,CACA,IAAI,CAACN,IAAI,CAAC,CAAC,CACb,CAAC,CAED;AACF;AACA;AACA;AACA,KAJE,CAAAyD,MAAA,CAKO0C,IAAI,GAAX,SAAAA,KAAA,EAAc,CACZ,IAAM7F,OAAO,GAAG,IAAI,CAAClC,QAAQ,CAAC,CAAC,CAACkC,OAAO,CACvC,IAAIA,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,QAAQ,EAAE,CAChDxE,OAAO,CAAC,IAAI,gEAA8DwE,OAAO,MAAG,CAAC,CACrF,OACF,CACA,IAAI,CAACJ,KAAK,CAAC,CAAC,CACd,CAAC,CAAAuD,MAAA,CAEOyB,UAAU,GAAlB,SAAAA,WAAA,EAAqB,CACnB,IAAMpG,KAAK,GAAG,IAAI,CAACA,KAAK,CACxB,IAAM3B,OAAO,GAAG,IAAI,CAAC0B,aAAa,CAAC,CAAC,CACpC,IAAAuH,qBAAA,GAAuD,IAAI,CAACC,qBAAqB,CAAC,CAAC,CAA3EC,UAAU,GAAAF,qBAAA,CAAVE,UAAU,CAAAC,sBAAA,GAAAH,qBAAA,CAAEI,UAAU,CAAVA,UAAU,GAAAD,sBAAA,cAAG,EAAEE,MAAM,EAAE,KAAK,CAAC,CAAC,GAAAF,sBAAA,CAClD,IAAM3G,aAAa,GAAGd,KAAK,CAAC8E,QAAQ,IAAI9E,KAAK,CAACc,aAAa,CAC3D,IAAM8G,KAAK,GAAG,IAAI,CAACC,WAAW,CAAC/G,aAAa,EAAE0G,UAAU,EAAEnJ,OAAO,CAAC,CAElE,oBACEtB,KAAA,CAAAmD,aAAA,CAAC7C,WAAW,EAAAyK,QAAA,KAAKJ,UAAU,IAAE/G,gBAAgB,EAAE,IAAI,CAACA,gBAAiB,KAClEiH,KACU,CAAC,CAElB,CAAC,CAAAjD,MAAA,CAEOkD,WAAW,GAAnB,SAAAA,YACE/G,aAA4C,EAC5C0G,UAA+B,EAC/BnJ,OAA2B,EAC3B,CACA,IAAA0J,eAAA,GAAuC,IAAI,CAACzI,QAAQ,CAAC,CAAC,CAA9C0I,iBAAiB,GAAAD,eAAA,CAAjBC,iBAAiB,CAAExG,OAAO,GAAAuG,eAAA,CAAPvG,OAAO,CAClC,oBACEzE,KAAA,CAAAmD,aAAA,CAACzC,aAAa,EAAAqK,QAAA,GAACG,WAAW,EAAE,IAAI,CAACC,WAAY,IAAK,IAAI,CAAClI,KAAK,gBAC1DjD,KAAA,CAAAmD,aAAA,CAAC9C,KAAK,EAAA0K,QAAA,GACJ,YAAU3J,eAAe,CAACC,IAAK,EAC/B0C,aAAa,EAAEA,aAAc,EAC7BqH,MAAM,QACNC,SAAS,QACTC,QAAQ,EAAC,MAAM,EACf5I,MAAM,EAAE,IAAI,CAACD,KAAK,CAACC,MAAO,EAC1BuI,iBAAiB,EAAEA,iBAAkB,EACrCM,SAAS,EAAE,IAAI,CAACvH,YAAY,CAAC,CAAE,EAC/BwH,GAAG,EAAE,IAAI,CAACvI,KAAK,CAACuI,GAAI,EACpBC,WAAW,EAAEhH,OAAO,KAAK,aAAc,EACvCiH,MAAM,EAAE,IAAI,CAACzI,KAAK,CAACyI,MAAO,EAC1BC,OAAO,EAAE,IAAI,CAAC1I,KAAK,CAAC0I,OAAQ,EAC5BC,gCAAgC,QAChCxI,GAAG,EAAE,IAAI,CAACN,QAAS,EACnB+I,aAAa,UACTpB,UAAU,GAEbnJ,OACI,CACM,CAAC,CAEpB,CAAC,CAAAsG,MAAA,CAUO4C,qBAAqB,GAA7B,SAAAA,sBAAA,EAGE,CACA,IAAMvH,KAAK,GAAG,IAAI,CAACA,KAAK,CACxB,IAAM6I,UAAU,GAAG,CAAC,CAAC7I,KAAK,CAAC8E,QAAQ,IAAI,IAAI,CAACxF,QAAQ,CAAC,CAAC,CAACuJ,UAAU,CACjE,IAAMrH,OAAO,GAAG,IAAI,CAAClC,QAAQ,CAAC,CAAC,CAACkC,OAAO,CAEvC,QAAQA,OAAO,GACb,KAAK,QAAQ,CACX,OAAO,EACLkG,UAAU,EAAE,EACVC,MAAM,EAAE,IAAI,EACZmB,cAAc,EAAE,IAAI,CAAC5G,wBAAwB,CAC/C,CAAC,EACDsF,UAAU,EAAE,EACV/H,MAAM,EAAE,IAAI,EACZoJ,UAAU,EAAVA,UAAU,CACZ,CAAC,CACH,CAAC,CAEH,KAAK,QAAQ,CACX,OAAO,EACLrB,UAAU,EAAE,EACV/H,MAAM,EAAE,KAAK,EACboJ,UAAU,EAAVA,UAAU,CACZ,CAAC,CACH,CAAC,CAEH,KAAK,aAAa,CAClB,KAAK,OAAO,CACV,OAAO,EACLrB,UAAU,EAAE,EACVuB,YAAY,EAAE,IAAI,CAAC1H,gBAAgB,EACnC2H,YAAY,EAAE,IAAI,CAAClH,gBAAgB,EACnC+G,UAAU,EAAVA,UAAU,CACZ,CAAC,CACH,CAAC,CACH,KAAK,QAAQ,CACX,OAAO,EACLrB,UAAU,EAAE,EACVqB,UAAU,EAAVA,UAAU,CACZ,CAAC,CACH,CAAC,CACH,KAAK,OAAO,CACV,OAAO,EACLnB,UAAU,EAAE,EACVC,MAAM,EAAE,IAAI,CAACnI,KAAK,CAACC,MAAM,EACzBqJ,cAAc,EAAE,IAAI,CAAC5G,wBAAwB,CAC/C,CAAC,EACDsF,UAAU,EAAE,EACVL,OAAO,EAAE,IAAI,CAAClF,WAAW,EACzB4G,UAAU,EAAVA,UAAU,CACZ,CAAC,CACH,CAAC,CAEH,KAAK,OAAO,CACV,OAAO,EACLrB,UAAU,EAAE,EACVyB,OAAO,EAAE,IAAI,CAAC5G,WAAW,EACzB6G,MAAM,EAAE,IAAI,CAAC5G,UAAU,EACvBuG,UAAU,EAAVA,UAAU,CACZ,CAAC,CACH,CAAC,CAEH,KAAK,aAAa,CAChB,OAAO,EACLnB,UAAU,EAAE,EACVC,MAAM,EAAE,IAAI,CAACnI,KAAK,CAACC,MAAM,EACzBqJ,cAAc,EAAE,IAAI,CAAC5G,wBAAwB,CAC/C,CAAC,EACDsF,UAAU,EAAE,EACVyB,OAAO,EAAE,IAAI,CAAC5G,WAAW,EACzB6G,MAAM,EAAE,IAAI,CAAC5G,UAAU,EACvByG,YAAY,EAAE,IAAI,CAAC1H,gBAAgB,EACnC2H,YAAY,EAAE,IAAI,CAAClH,gBAAgB,EACnC+G,UAAU,EAAVA,UAAU,CACZ,CAAC,CACH,CAAC,CAEH,QACE,MAAM,IAAIM,KAAK,CAAC,6BAA6B,GAAG3H,OAAO,CAAC,CAC5D,CACF,CAAC,CAAAmD,MAAA,CAMOjD,iBAAiB,GAAzB,SAAAA,kBAAA,EAA4B,CAC1B,IAAI,IAAI,CAACC,YAAY,EAAE,CACrB1E,YAAY,CAACmM,YAAY,CAAC,IAAI,CAACzH,YAAY,CAAC,CAC5C,IAAI,CAACA,YAAY,GAAG,IAAI,CAC1B,CACF,CAAC,CAAAgD,MAAA,CA4COxC,qBAAqB,GAA7B,SAAAA,sBAA8Bb,KAAY,EAAE,CAC1C,IAAI,IAAI,CAAC3B,cAAc,IAAI9B,YAAY,CAACyD,KAAK,CAACG,MAAM,EAAExE,YAAY,CAACoM,OAAO,CAAC,EAAE,CAC3E,OAAO,CAAC/L,+BAA+B,CAACgE,KAAK,CAACG,MAAM,CAAC,CAAC,IAAI,CAAC9B,cAAc,CAAC,CAC5E,CAEA,OAAO,IAAI,CACb,CAAC,QAAAnB,OAAA,GArX0BzB,KAAK,CAACuM,aAAa,GAAA5K,QAAA,CAChC6K,mBAAmB,GAAG,SAAS,EAAA7K,QAAA,CAC/B8K,WAAW,GAAG,SAAS,EAAA9K,QAAA,CAEvBa,YAAY,GAAiB,EACzCqD,IAAI,EAAE,OAAO,EACbpB,OAAO,EAAE,OAAO,EAChBwG,iBAAiB,EAAExK,SAAS,EAC5BqL,UAAU,EAAE,KAAK,EACjBhH,eAAe,EAAE3D,aAAa,CAChC,CAAC,EAAAQ,QAAA,CAUasD,KAAK,GAAG9D,aAAa,EAAAQ,QAAA,CACpB8H,0BAA0B,GAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,EAAA9H,QAAA,MAAAD,MAAA","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { SizeProp } from '
|
|
2
|
+
import type { SizeProp } from 'react-ui/lib/types/props';
|
|
3
3
|
import type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup';
|
|
4
4
|
import type { Nullable } from '../../typings/utility-types';
|
|
5
5
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
### Базовый пример
|
|
2
|
+
Отступы в тултипе подобраны так, чтобы базовая линия текста со шрифтом Segoe UI в тултипе совпадала с базовой линией стандартных контролов
|
|
3
|
+
|
|
4
|
+
```jsx harmony
|
|
5
|
+
import { SearchLoupeIcon16Regular } from '@skbkontur/icons/icons/SearchLoupeIcon/SearchLoupeIcon16Regular';
|
|
6
|
+
import { UiMenuBars3HIcon16Regular } from '@skbkontur/icons/icons/UiMenuBars3HIcon/UiMenuBars3HIcon16Regular';
|
|
7
|
+
import { QuestionCircleIcon16Regular } from '@skbkontur/icons/icons/QuestionCircleIcon/QuestionCircleIcon16Regular';
|
|
8
|
+
import { Button, Gapped, Input, Select, Tooltip } from '@skbkontur/react-ui';
|
|
9
|
+
|
|
10
|
+
const [size, setSize] = React.useState('small');
|
|
11
|
+
|
|
12
|
+
const render = () => (
|
|
13
|
+
<div
|
|
14
|
+
style={{
|
|
15
|
+
width: 250,
|
|
16
|
+
fontSize: size === 'large' ? 16 : 14,
|
|
17
|
+
fontFamily: 'Segoe UI',
|
|
18
|
+
}}
|
|
19
|
+
>
|
|
20
|
+
Задача организации, в особенности же рамки и место обучения кадров влечет за собой процесс внедрения и модернизации
|
|
21
|
+
форм развития.
|
|
22
|
+
</div>
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
<div style={{ fontFamily: 'Segoe UI' }}>
|
|
26
|
+
<Gapped vertical>
|
|
27
|
+
<Gapped>
|
|
28
|
+
<div style={{ width: 40 }}>Size</div>
|
|
29
|
+
<Select width={120} value={size} items={['small', 'medium', 'large']} onValueChange={setSize} size={size} />
|
|
30
|
+
</Gapped>
|
|
31
|
+
<Tooltip render={render} pos="right top">
|
|
32
|
+
<Input size={size} leftIcon={<SearchLoupeIcon16Regular />} width={170} />
|
|
33
|
+
</Tooltip>
|
|
34
|
+
<Tooltip render={render} pos="right top">
|
|
35
|
+
<Button size={size} icon={<UiMenuBars3HIcon16Regular />}>
|
|
36
|
+
Menu
|
|
37
|
+
</Button>
|
|
38
|
+
</Tooltip>
|
|
39
|
+
<Tooltip render={render} pos="right top">
|
|
40
|
+
<QuestionCircleIcon16Regular />
|
|
41
|
+
</Tooltip>
|
|
42
|
+
</Gapped>
|
|
43
|
+
</div>;
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Выравнивание базовой линии
|
|
47
|
+
Выравнивание базовой линии с RadioGroup требует дополнительных отступов.
|
|
48
|
+
|
|
49
|
+
```jsx harmony
|
|
50
|
+
import { Gapped, Tooltip, RadioGroup, Radio } from '@skbkontur/react-ui';
|
|
51
|
+
|
|
52
|
+
const render = () => (
|
|
53
|
+
<div
|
|
54
|
+
style={{
|
|
55
|
+
fontSize: 14,
|
|
56
|
+
fontFamily: 'Segoe UI',
|
|
57
|
+
}}
|
|
58
|
+
>
|
|
59
|
+
Выровнено по первому Radio
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
<div style={{ fontFamily: 'Segoe UI' }}>
|
|
64
|
+
<Tooltip useWrapper={false} render={render} pos="right top">
|
|
65
|
+
<div style={{ padding: '10px 0', display: 'inline-block' }}>
|
|
66
|
+
<RadioGroup>
|
|
67
|
+
<Gapped vertical gap={0}>
|
|
68
|
+
<Radio value="2">Two</Radio>
|
|
69
|
+
<Radio value="4">Four</Radio>
|
|
70
|
+
<Radio value="6">Six</Radio>
|
|
71
|
+
<Radio value="8">Eight</Radio>
|
|
72
|
+
</Gapped>
|
|
73
|
+
</RadioGroup>
|
|
74
|
+
</div>
|
|
75
|
+
</Tooltip>
|
|
76
|
+
</div>;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Расположение тултипа
|
|
80
|
+
Тултип может располагаться в одной из 12 позиции и триггериться одним из 8 способов.
|
|
81
|
+
|
|
82
|
+
```jsx harmony
|
|
83
|
+
import { Button, Center, Gapped, Select, Tooltip } from '@skbkontur/react-ui';
|
|
84
|
+
|
|
85
|
+
const S = 60;
|
|
86
|
+
|
|
87
|
+
const Block = ({ pos, trigger, top, left, onMouseDown }) => (
|
|
88
|
+
<div
|
|
89
|
+
style={{
|
|
90
|
+
top,
|
|
91
|
+
left,
|
|
92
|
+
display: 'inline-block',
|
|
93
|
+
position: 'absolute',
|
|
94
|
+
cursor: trigger === 'click' ? 'pointer' : 'default',
|
|
95
|
+
}}
|
|
96
|
+
>
|
|
97
|
+
<Tooltip render={() => pos} pos={pos} trigger={trigger}>
|
|
98
|
+
<div
|
|
99
|
+
tabIndex={trigger === 'focus' || trigger === 'hover&focus' ? 0 : null}
|
|
100
|
+
style={{
|
|
101
|
+
height: S - 5,
|
|
102
|
+
width: S - 5,
|
|
103
|
+
background: 'gray',
|
|
104
|
+
border: 'solid 1px',
|
|
105
|
+
boxShadow: '0 1px 5px rgba(0, 0, 0, 0.3)',
|
|
106
|
+
}}
|
|
107
|
+
/>
|
|
108
|
+
</Tooltip>
|
|
109
|
+
</div>
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
class UseManualTooltip extends React.Component {
|
|
113
|
+
constructor(props) {
|
|
114
|
+
super(props);
|
|
115
|
+
this.tooltip = null;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
render() {
|
|
119
|
+
return (
|
|
120
|
+
<Gapped vertical>
|
|
121
|
+
<Gapped>
|
|
122
|
+
<Button width={1.5 * S - 5} onClick={this.handleClickOnShow.bind(this)}>
|
|
123
|
+
Show
|
|
124
|
+
</Button>
|
|
125
|
+
<Button width={1.5 * S - 5} onClick={this.handleClickOnHide.bind(this)}>
|
|
126
|
+
Hide
|
|
127
|
+
</Button>
|
|
128
|
+
</Gapped>
|
|
129
|
+
<Tooltip
|
|
130
|
+
render={() => 'Manual tooltip'}
|
|
131
|
+
pos="bottom center"
|
|
132
|
+
trigger="manual"
|
|
133
|
+
ref={element => {
|
|
134
|
+
this.tooltip = element;
|
|
135
|
+
}}
|
|
136
|
+
>
|
|
137
|
+
<div
|
|
138
|
+
style={{
|
|
139
|
+
width: 3 * S,
|
|
140
|
+
height: S,
|
|
141
|
+
lineHeight: `${S}px`,
|
|
142
|
+
background: 'gray',
|
|
143
|
+
border: 'solid 1px',
|
|
144
|
+
boxShadow: '0 1px 5px rgba(0, 0, 0, 0.3)',
|
|
145
|
+
textAlign: 'center',
|
|
146
|
+
}}
|
|
147
|
+
>
|
|
148
|
+
Manual control
|
|
149
|
+
</div>
|
|
150
|
+
</Tooltip>
|
|
151
|
+
</Gapped>
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
handleClickOnShow() {
|
|
156
|
+
if (this.tooltip) {
|
|
157
|
+
this.tooltip.show();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
handleClickOnHide() {
|
|
161
|
+
if (this.tooltip) {
|
|
162
|
+
this.tooltip.hide();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const blocks = [
|
|
168
|
+
{ top: S, left: S * 2, pos: 'top left' },
|
|
169
|
+
{ top: S, left: S * 4, pos: 'top center' },
|
|
170
|
+
{ top: S, left: S * 6, pos: 'top right' },
|
|
171
|
+
{ top: S * 2, left: S * 7, pos: 'right top' },
|
|
172
|
+
{ top: S * 4, left: S * 7, pos: 'right middle' },
|
|
173
|
+
{ top: S * 6, left: S * 7, pos: 'right bottom' },
|
|
174
|
+
{ top: S * 7, left: S * 6, pos: 'bottom right' },
|
|
175
|
+
{ top: S * 7, left: S * 4, pos: 'bottom center' },
|
|
176
|
+
{ top: S * 7, left: S * 2, pos: 'bottom left' },
|
|
177
|
+
{ top: S * 6, left: S, pos: 'left bottom' },
|
|
178
|
+
{ top: S * 4, left: S, pos: 'left middle' },
|
|
179
|
+
{ top: S * 2, left: S, pos: 'left top' },
|
|
180
|
+
];
|
|
181
|
+
|
|
182
|
+
const [trigger, setTrigger] = React.useState('hover');
|
|
183
|
+
|
|
184
|
+
const isManual = trigger === 'manual';
|
|
185
|
+
|
|
186
|
+
<div
|
|
187
|
+
style={{
|
|
188
|
+
width: S * 9,
|
|
189
|
+
height: S * 9,
|
|
190
|
+
position: 'relative',
|
|
191
|
+
border: '1px solid',
|
|
192
|
+
background: `repeating-linear-gradient(
|
|
193
|
+
45deg,
|
|
194
|
+
#808080,
|
|
195
|
+
#808080 ${S / 4}px,
|
|
196
|
+
#d3d3d3 ${S / 4}px,
|
|
197
|
+
#d3d3d3 ${S / 2}px
|
|
198
|
+
)`,
|
|
199
|
+
}}
|
|
200
|
+
>
|
|
201
|
+
<Center>
|
|
202
|
+
<Gapped vertical>
|
|
203
|
+
<Gapped>
|
|
204
|
+
Trigger
|
|
205
|
+
<Select
|
|
206
|
+
width={S * 2}
|
|
207
|
+
size="small"
|
|
208
|
+
value={trigger}
|
|
209
|
+
items={['click', 'hover', 'focus', 'hover&focus', 'hoverAnchor', 'opened', 'closed', 'manual']}
|
|
210
|
+
onValueChange={setTrigger}
|
|
211
|
+
/>
|
|
212
|
+
</Gapped>
|
|
213
|
+
{isManual ? <UseManualTooltip /> : null}
|
|
214
|
+
</Gapped>
|
|
215
|
+
</Center>
|
|
216
|
+
|
|
217
|
+
{!isManual && blocks.map((block, i) => <Block key={i} {...block} trigger={trigger} />)}
|
|
218
|
+
</div>;
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### anchorElement
|
|
222
|
+
Есть возможность прицеплять тултип к любому HTML элементу на странице с помощью `anchorElement`. При этом сам `Tooltip` может рендериться в совершенно другом месте приложения.
|
|
223
|
+
|
|
224
|
+
```jsx harmony
|
|
225
|
+
import { Tooltip } from '@skbkontur/react-ui';
|
|
226
|
+
|
|
227
|
+
const S = 60;
|
|
228
|
+
const blockStyle = {
|
|
229
|
+
height: S - 5,
|
|
230
|
+
width: S - 5,
|
|
231
|
+
boxShadow: '0 1px 5px rgba(0, 0, 0, 0.3)',
|
|
232
|
+
background: 'gray',
|
|
233
|
+
border: '1px solid'
|
|
234
|
+
};
|
|
235
|
+
const containerStyle = {
|
|
236
|
+
width: S * 9,
|
|
237
|
+
height: S * 9,
|
|
238
|
+
position: 'relative',
|
|
239
|
+
background: `repeating-linear-gradient(
|
|
240
|
+
45deg,
|
|
241
|
+
#808080,
|
|
242
|
+
#808080 ${S / 4}px,
|
|
243
|
+
#d3d3d3 ${S / 4}px,
|
|
244
|
+
#d3d3d3 ${S / 2}px
|
|
245
|
+
)`,
|
|
246
|
+
border: '1px solid',
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
const blocks = [
|
|
250
|
+
{ top: S, left: S * 2 },
|
|
251
|
+
{ top: S, left: S * 4 },
|
|
252
|
+
{ top: S, left: S * 6 },
|
|
253
|
+
{ top: S * 2, left: S * 7 },
|
|
254
|
+
{ top: S * 4, left: S * 7 },
|
|
255
|
+
{ top: S * 6, left: S * 7 },
|
|
256
|
+
{ top: S * 7, left: S * 6 },
|
|
257
|
+
{ top: S * 7, left: S * 4 },
|
|
258
|
+
{ top: S * 7, left: S * 2 },
|
|
259
|
+
{ top: S * 6, left: S },
|
|
260
|
+
{ top: S * 4, left: S },
|
|
261
|
+
{ top: S * 2, left: S },
|
|
262
|
+
];
|
|
263
|
+
|
|
264
|
+
class AnchorTooltipExample extends React.Component {
|
|
265
|
+
constructor(props) {
|
|
266
|
+
super(props);
|
|
267
|
+
|
|
268
|
+
this.state = {
|
|
269
|
+
blocks,
|
|
270
|
+
anchor: null,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
render() {
|
|
275
|
+
return (
|
|
276
|
+
<>
|
|
277
|
+
{this.state.anchor ? (
|
|
278
|
+
<Tooltip anchorElement={this.state.anchor} render={() => 'Hello React'} trigger="hover" />
|
|
279
|
+
) : null}
|
|
280
|
+
<div style={containerStyle}>
|
|
281
|
+
{this.state.blocks.map(({ top, left }, i) => (
|
|
282
|
+
<div key={i} style={{ top, left, display: 'inline-block', position: 'absolute' }}>
|
|
283
|
+
<div
|
|
284
|
+
style={blockStyle}
|
|
285
|
+
onMouseEnter={event => this.setState({ anchor: event.target })}
|
|
286
|
+
onMouseLeave={() => this.setState({ anchor: null })}
|
|
287
|
+
/>
|
|
288
|
+
</div>
|
|
289
|
+
))}
|
|
290
|
+
</div>
|
|
291
|
+
</>
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
<AnchorTooltipExample />;
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Задержка перед появлением
|
|
300
|
+
У тултипа можно переопределить задержку перед его появлением. Скрытие же происходит с задержкой по умолчанию.
|
|
301
|
+
|
|
302
|
+
```jsx harmony
|
|
303
|
+
import { QuestionCircleIcon16Regular } from '@skbkontur/icons/icons/QuestionCircleIcon/QuestionCircleIcon16Regular';
|
|
304
|
+
import { Input, Gapped, Tooltip } from '@skbkontur/react-ui';
|
|
305
|
+
|
|
306
|
+
const [delay, setDelay] = React.useState(100);
|
|
307
|
+
|
|
308
|
+
const render = () => (
|
|
309
|
+
<div>
|
|
310
|
+
{`Showed with ${delay}ms delay`}
|
|
311
|
+
</div>
|
|
312
|
+
);
|
|
313
|
+
|
|
314
|
+
<div>
|
|
315
|
+
<Gapped vertical>
|
|
316
|
+
<Gapped>Show delay: <Input value={delay} onValueChange={setDelay} /></Gapped>
|
|
317
|
+
<Tooltip render={render} delayBeforeShow={delay} pos="right top">
|
|
318
|
+
<QuestionCircleIcon16Regular />
|
|
319
|
+
</Tooltip>
|
|
320
|
+
</Gapped>
|
|
321
|
+
</div>;
|
|
322
|
+
```
|