Socket
Socket
Sign inDemoInstall

@snack-uikit/popover-private

Package Overview
Dependencies
20
Maintainers
3
Versions
21
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @snack-uikit/popover-private

## Installation `npm i @snack-uikit/popover-private`


Version published
Maintainers
3
Created

Readme

Source

Popover Private

Installation

npm i @snack-uikit/popover-private

Changelog

Example

import { PopoverPrivate } from "@snack-uikit/popover-private";

function App() {
  return (
    <PopoverPrivate
        placement='top'
        popoverContent='Не нажимать, опасно!'
        trigger='click'
      >
        <button>Button with popover</button>
    </PopoverPrivate>
  );
}

PopoverPrivate

Props

nametypedefault valuedescription
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).
openboolean-Управляет состоянием показан/не показан.
onOpenChange(isOpen: boolean) => void-Колбек отображения компонента. Срабатывает при изменении состояния open.
outsideClickboolean | OutsideClickHandler-Закрывать ли при клике вне поповера
classNamestring-CSS-класс
triggerClassNamestring-CSS-класс триггера
hasArrowboolean-Параметр наличия стрелки у поповера. В размеры стрелки встроен отступ. Дополнительный отступ может быть задан параметром offset. У элемента стрелки нет цвета, необходимо задавать его через параметр arrowClassName.
arrowContainerClassNamestring-CSS-класс контейнера стрелки поповера
arrowElementClassNamestring-CSS-класс стрелки поповера
offsetnumber0Отступ поповера от его триггер-элемента (в пикселях).
hoverDelayOpennumber-Задержка открытия по ховеру
hoverDelayClosenumber-Задержка закрытия по ховеру
triggerRefForwardedRef<ReferenceType | HTMLElement>-Ref ссылка на триггер
widthStrategyenum PopoverWidthStrategy: "auto", "gte", "eq"autoСтратегия управления шириной контейнера поповера
- auto - соответствует ширине контента,
- gte - Great Than or Equal, равен ширине таргета или больше ее, если контент в поповере шире,
- eq - Equal, строго равен ширине таргета.
heightStrategyenum PopoverHeightStrategy: "auto", "eq", "lte"autoСтратегия управления высотой контейнера поповера
- auto - соответствует высоте контента,
- lte - Less Than or Equal, равен высоте таргета или меньше ее, если контент в поповере меньше,
- eq - Equal, строго равен высоте таргета.
closeOnEscapeKeybooleantrueЗакрывать ли по нажатию на кнопку Esc
triggerClickByKeysbooleantrueВызывается ли попоповер по нажатию клавиш Enter/Space (при trigger = click)
fallbackPlacementsPlacement[]-Цепочка расположений которая будет применяться к поповеру от первого к последнему если при текущем он не влезает.
disableSpanWrapperboolean-Отключает для 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

Last updated on 23 Apr 2024

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc