0.14.8 • Published 1 month ago

@snack-uikit/popover-private v0.14.8

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
1 month ago

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.

0.14.5

5 months ago

0.14.6

4 months ago

0.14.7

4 months ago

0.14.8

2 months ago

0.14.1

8 months ago

0.14.2

7 months ago

0.14.3

6 months ago

0.14.4

5 months ago

0.14.0

9 months ago

0.13.7

10 months ago

0.13.6

10 months ago

0.13.3

1 year ago

0.13.4

1 year ago

0.13.5

10 months ago

0.13.2

1 year ago

0.13.1

1 year ago

0.13.0

1 year ago

0.12.2

2 years ago

0.12.1

2 years ago

0.12.0

2 years ago

0.11.1

2 years ago

0.11.0

2 years ago