
Security News
NVD Concedes Inability to Keep Pace with Surging CVE Disclosures in 2025
Security experts warn that recent classification changes obscure the true scope of the NVD backlog as CVE volume hits all-time highs.
@snack-uikit/popover-private
Advanced tools
npm i @snack-uikit/popover-private
import { PopoverPrivate } from "@snack-uikit/popover-private";
function App() {
return (
<PopoverPrivate
placement='top'
popoverContent='Не нажимать, опасно!'
trigger='click'
>
<button>Button with popover</button>
</PopoverPrivate>
);
}
name | type | default value | description |
---|---|---|---|
trigger* | enum Trigger: "click" , "hover" , "focusVisible" , "focus" , "hoverAndFocusVisible" , "hoverAndFocus" , "clickAndFocusVisible" | - | Условие отображения поповера: - click - открывать по клику - hover - открывать по ховеру - focusVisible - открывать по focus-visible - focus - открывать по фокусу - hoverAndFocusVisible - открывать по ховеру и focus-visible - hoverAndFocus - открывать по ховеру и фокусу - clickAndFocusVisible - открывать по клику и focus-visible |
popoverContent* | ReactNode | ReactNode[] | - | Контент поповера |
children* | ReactNode | ChildrenFunction | - | Триггер поповера (подробнее читайте ниже) |
placement* | enum Placement: "left" , "left-start" , "left-end" , "right" , "right-start" , "right-end" , "top" , "top-start" , "top-end" , "bottom" , "bottom-start" , "bottom-end" | top | Положение поповера относительно своего триггера (children). |
open | boolean | - | Управляет состоянием показан/не показан. |
onOpenChange | (isOpen: boolean) => void | - | Колбек отображения компонента. Срабатывает при изменении состояния open. |
outsideClick | boolean | OutsideClickHandler | - | Закрывать ли при клике вне поповера |
className | string | - | CSS-класс |
triggerClassName | string | - | CSS-класс триггера |
hasArrow | boolean | - | Параметр наличия стрелки у поповера. В размеры стрелки встроен отступ. Дополнительный отступ может быть задан параметром offset . У элемента стрелки нет цвета, необходимо задавать его через параметр arrowClassName . |
arrowContainerClassName | string | - | CSS-класс контейнера стрелки поповера |
arrowElementClassName | string | - | CSS-класс стрелки поповера |
offset | number | 0 | Отступ поповера от его триггер-элемента (в пикселях). |
hoverDelayOpen | number | - | Задержка открытия по ховеру |
hoverDelayClose | number | - | Задержка закрытия по ховеру |
triggerRef | ForwardedRef<ReferenceType | HTMLElement> | - | Ref ссылка на триггер |
widthStrategy | enum PopoverWidthStrategy: "auto" , "gte" , "eq" | auto | Стратегия управления шириной контейнера поповера - auto - соответствует ширине контента, - gte - Great Than or Equal, равен ширине таргета или больше ее, если контент в поповере шире, - eq - Equal, строго равен ширине таргета. |
heightStrategy | enum PopoverHeightStrategy: "auto" , "eq" , "lte" | auto | Стратегия управления высотой контейнера поповера - auto - соответствует высоте контента, - lte - Less Than or Equal, равен высоте таргета или меньше ее, если контент в поповере меньше, - eq - Equal, строго равен высоте таргета. |
closeOnEscapeKey | boolean | true | Закрывать ли по нажатию на кнопку Esc |
triggerClickByKeys | boolean | true | Вызывается ли попоповер по нажатию клавиш Enter/Space (при trigger = click ) |
fallbackPlacements | Placement[] | - | Цепочка расположений которая будет применяться к поповеру от первого к последнему если при текущем он не влезает. |
disableSpanWrapper | boolean | - | Отключает для isValidElement внешнюю обертку триггера Пригодится для элементов с position: absolute |
children: ReactNode | ChildrenFunction
Референс, относительно которого рисуется поповер. Возможно несколько вариантов:
в children
передан компонент, который принимает в себя ref
. В таком случае пропсы этого компонента будут дополнены необходимыми для работы триггеров отображения: useHoverTrigger
, useClickTrigger
, useFocusTrigger
.
Осторожно,
ref
будет перезаписан. Если вы хотите получить ref на children поповера, можете передать ref в параметр triggerRef. Тогда поповер установит туда значение:
<PopoverPrivate
popoverContent={<div className={style.content}>some tip here</div>}
useHoverTrigger
triggerRef={(button) => { /* button HTMLElement из children */ }}
>
<button>some button</button>
</PopoverPrivate>
в children
передан компонент, который НЕ принимает в себя ref
. В таком случае компонент будет обернут в span
, который и послужит рефом для поповера.
в children
передана функция. Эта функция будет вызвана на каждый рендер, она должна возвращать ReactNode
. В параметры принимает ref, который нужно установить в целевой компонент и функцию getReferenceProps
, возвращающую необходимые для ref параметры.
Пример:
<PopoverPrivate
popoverContent={<div className={style.content}>some tip here</div>}
useHoverTrigger
>
{({ getReferenceProps, ref }) => (
<label>
Set the value
<input ref={ref} {...getReferenceProps({ onClick: onClickInputHandler })} />
</label>
)}
</PopoverPrivate>
в children
передан примитив string, number или React.Fragment. Children будет обернут в span
.
FAQs
Unknown package
The npm package @snack-uikit/popover-private receives a total of 331 weekly downloads. As such, @snack-uikit/popover-private popularity was classified as not popular.
We found that @snack-uikit/popover-private demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Security experts warn that recent classification changes obscure the true scope of the NVD backlog as CVE volume hits all-time highs.
Security Fundamentals
Attackers use obfuscation to hide malware in open source packages. Learn how to spot these techniques across npm, PyPI, Maven, and more.
Security News
Join Socket for exclusive networking events, rooftop gatherings, and one-on-one meetings during BSidesSF and RSA 2025 in San Francisco.