0.7.24 • Published 3 days ago

@snack-uikit/notification v0.7.24

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 days ago

Notification

Installation

npm i @snack-uikit/notification

Changelog

TODO:

  • remove custom hook for droplist keyboard handles

Example

import { NotificationCard, NotificationPanel } from '@snack-uikit/notification';

const cards = [
  {
    id: 'cardId',
    label: ['Category', 'Subcategory'].join('・'),
    appearance: 'errorCritical',
    title: 'Title truncate two line',
    content: `Demo content.`,
    link: {
      text: 'Link to detailed information',
      href: '#',
    },
    date: 'DD.MM.YYYY HH:MM',
    actions: [
      {
        option: 'action 1',
        onClick: handleActionClick,
      },
      {
        option: 'action 2',
        onClick: handleActionClick,
      },
    ],
  }
];

// ...

<NotificationPanel
  title='Notifications'
  triggerElement={<ButtonTonal label='open' />}
  readAllButton={{
    label: 'Mark all as read',
    onClick() {},
  }}
  chips={[
    {
      label: 'all',
      checked: true,
      onChange() { /* */ },
    },
    {
      label: 'unread',
      checked: false,
      onChange() { /* */ },
    },
  ]}
  content={
    !cards.length ? (
      <NotificationPanel.Blank
        icon={PlaceholderSVG}
        title='No notifications'
        description={'Here you will see new event notifications\nwhen something happens'}
      />
    ) : (
      cards.map(card => <NotificationCard {...card} key={card.id} />)
    )
  }
/>

NotificationCard

Компонент карточки уведомления

Props

nametypedefault valuedescription
date*string-Дата уведомления
content*ReactNode-Контент уведомления
title*string-Заголовок уведомления
id*string-Идентификатор уведомления
appearanceenum Appearance: "neutral", "error", "errorCritical", "warning", "success"neutralТип уведомления
labelstring-Лейбл перед заголовком
unreadboolean-Управление состоянием прочитано/не прочитано
linkOmit<LinkProps, "data-test-id" \| "appearance" \| "size" \| "textMode">-Ссылка
onClickMouseEventHandler<HTMLDivElement>-Колбэк клика по карточке
onVisible(cardId: string) => void-Колбэк при попадании карточки в область видимости на 80%
primaryButtonOmit<ButtonTonalProps, "data-test-id" \| "appearance" \| "size">-Кнопка главного действия у карточки
secondaryButtonOmit<ButtonSimpleProps, "data-test-id" \| "appearance" \| "size">-Кнопка второстепенного действия у карточки
actionsAction[]-Дополнительные действия у карточки
classNamestring-CSS-класс

NotificationPanel

Компонент панели для уведомлений

Props

nametypedefault valuedescription
title*string-Заголовок панели
settingsNotificationPanelSettingsProps-Кнопка настроек и выпадающий список
chipsOmit<ChipToggleProps, "data-test-id" \| "size">[]-Чипы для фильтрации
readAllButtonOmit<ButtonFunctionProps, "data-test-id"> & { onClick: MouseEventHandler<HTMLElement>; }-Кнопка в "шапке" панели
footerButton{ label: string; onClick: MouseEventHandler<HTMLButtonElement>; }-Кнопка внизу панели
classNamestring-CSS-класс
loadingboolean-Состояние загрузки
contentReactNode-Контент для отрисовки (e.g NotificationCard | NotificationPanel.Blank)
skeletonsAmountnumber2Количество скелетонов карточек для отображения при загрузке
scrollEndRefRefObject<HTMLDivElement>-Ссылка на элемент, обозначающий самый конец прокручиваемого списка
scrollContainerRefRefObject<HTMLElement>-Ссылка на контейнер, который скроллится

NotificationPanel.Blank

Props

nametypedefault valuedescription
titlestring-Заголовок
classNamestring-CSS-класс
iconPick<IconPredefinedProps, "appearance" \| "icon" \| "decor">-Иконка
descriptionReactNode-Подзаголовок

NotificationPanel.Divider

Props

nametypedefault valuedescription
text*string-Текст разделителя
classNamestring-CSS-класс

NotificationPanelPopover

Компонент-обёртка для NotificationPanel для использования как выпадающий элемент

Props

nametypedefault valuedescription
children*ReactNode \| ChildrenFunction-Триггер поповера (подробнее читайте ниже)
content*ReactElement<NotificationPanelProps, typeof NotificationPanel>-
contentClassNamestring-CSS-класс для элемента содержащего контент
classNamestring-CSS-класс
triggerClassNamestring-CSS-класс триггера
openboolean-Управляет состоянием показан/не показан.
onOpenChange(isOpen: boolean) => void-Колбек отображения компонента. Срабатывает при изменении состояния open.
hoverDelayOpennumber-Задержка открытия по ховеру
hoverDelayClosenumber-Задержка закрытия по ховеру
offsetnumber0Отступ поповера от его триггер-элемента (в пикселях).
closeOnEscapeKeybooleantrueЗакрывать ли по нажатию на кнопку Esc
triggerClickByKeysbooleantrueВызывается ли попоповер по нажатию клавиш Enter/Space (при trigger = click)
triggerRefForwardedRef<HTMLElement \| ReferenceType>-Ref ссылка на триггер
triggerenum Trigger: "click", "hover", "focusVisible", "focus", "hoverAndFocusVisible", "hoverAndFocus", "clickAndFocusVisible"clickУсловие отображения поповера: - click - открывать по клику - hover - открывать по ховеру - focusVisible - открывать по focus-visible - focus - открывать по фокусу - hoverAndFocusVisible - открывать по ховеру и focus-visible - hoverAndFocus - открывать по ховеру и фокусу - clickAndFocusVisible - открывать по клику и focus-visible
placementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"bottom-endПоложение поповера относительно своего триггера (children).
0.7.24

3 days ago

0.7.23

3 days ago

0.7.22

14 days ago

0.7.21

14 days ago

0.7.20

16 days ago

0.7.19

18 days ago

0.7.18

19 days ago

0.7.17

19 days ago

0.7.16

1 month ago

0.7.15

2 months ago

0.7.14

2 months ago

0.7.13

2 months ago

0.7.12

2 months ago

0.7.11

2 months ago

0.7.10

2 months ago

0.7.9

2 months ago

0.7.8

2 months ago

0.7.7

2 months ago

0.7.6

2 months ago

0.7.4

2 months ago

0.7.3

3 months ago

0.7.5

2 months ago

0.7.2

3 months ago

0.7.1

3 months ago

0.7.0

3 months ago

0.6.17

3 months ago

0.6.16

3 months ago

0.6.15

3 months ago

0.6.14

3 months ago

0.6.13

3 months ago

0.6.12

3 months ago

0.6.11

3 months ago

0.6.9

3 months ago

0.6.10

3 months ago

0.6.8

3 months ago

0.6.7

3 months ago

0.6.6

3 months ago

0.6.5

3 months ago

0.6.4

3 months ago

0.6.3

3 months ago

0.6.2

3 months ago

0.6.1

3 months ago

0.5.5

4 months ago

0.5.4

4 months ago

0.5.3

5 months ago

0.5.2

5 months ago

0.5.1

5 months ago

0.5.0

5 months ago

0.4.2

5 months ago

0.4.1

5 months ago

0.4.0

5 months ago