0.16.0 • Published 2 years ago

@seamonster-studios/notice-system v0.16.0

Weekly downloads
30
License
MIT
Repository
github
Last release
2 years ago

NoticeSystem

Install: yarn add @seamonster-studios/notice-system

Install Peer Dependencies:

yarn add @seamonster-studios/react-use-countdown @seamonster-studios/react-use-measure @seamonster-studios/reason bs-css-emotion bs-react-spring

Features

  • Focus on async request status
  • Life bar
  • Life bar pause on hover
  • View all previous notices

Demo

Basic Usage

Setup provider component:

<NoticeSystem>
// ... app
</NoticeSystem>

Adding a custom color palette or default content for each of the notice system types (both optional):

let globalNoticeContent: NoticeSystem.globalNoticeContent = {
  success: None,
  loading: Some((<NoticeSystem.LoaderContent />, `replace)),
  warning: None,
  info: None,
  error:
    Some((
      <p>
        "Our development team has been notified. Please try again later."
        ->React.string
      </p>,
      `after,
    )),
};

let palette: NoticeSystem.palette =
  Css.{
    accent: rgba(0, 0, 0, 0.75),
    info: rgb(132, 210, 250),
    success: rgb(157, 250, 176),
    warning: rgb(250, 219, 120),
    error: rgb(250, 172, 145),
    toggleNoticeTypeButton: {
      background: rgb(132, 213, 250),
      text: rgba(0, 0, 0, 0.75),
    },
  };

// ...

<NoticeSystem globalNoticeContent palette>
  // ... app
</NoticeSystem>

Hooks

  • use() Returns the entire value of the Notice System
  • useNew() Is the bread and butter hook. When instantiating the hook it creates a new notice without activating it. It then returns a record of methods and values to use. Most notably add and remove. This is helpful b/c you can use a single notice for all API states of an async request (loading, success, error).
  • useAddNotice() Lets you create any number of notices. It returns to you the notice id upon doing so.
  • useNotices() Returns an array of all the notices
  • useNotice(noticeId) Returns None or Some(notice)
  • useSetShownNoticeType Lets you control if you want to show only the Active notices, or All of them
  • useRemoveNotice() Lets you inactivate a notice by id

To add a notice (via useNew or useAddNotice)

// Type
type add = (
  ~content: ReasonReact.reactElement=?,
  ~el: React.element=?,
  ~title: string=?,
  ~life: int=?,
  type_
) =>
unit;

// Usage
let myAsyncRequest = (~entity) => {
  notice.add(~title=entity, `loading);

  Js.Promise.(your_promise())
  |> then_(res => {
    switch(res) {
      | Ok(data) => {
        // ...
        notice.add(~content="Your success message here"->React.string, `success)
        // .. OR ... if the UI is self evident when the response was successful
        notice.remove()
      }
      | Error(error) => {
        // ...
        notice.add(~content="Your error message here"->React.string, `error)
      }
    }
  })
};
0.16.0

2 years ago

0.15.24

4 years ago

0.15.21

5 years ago

0.15.19

5 years ago

0.15.18

5 years ago

0.15.17

5 years ago

0.15.6

5 years ago

0.15.4

5 years ago

0.15.5

5 years ago

0.15.3

5 years ago

0.15.1

5 years ago

0.15.2

5 years ago

0.15.0

5 years ago

0.14.12

5 years ago

0.14.11

5 years ago

0.14.10

5 years ago

0.14.8

5 years ago

0.14.7

5 years ago

0.14.3

5 years ago

0.14.4

5 years ago

0.14.0

5 years ago

0.13.8

5 years ago

0.13.9

5 years ago

0.13.5

5 years ago

0.13.3

5 years ago

0.13.0

5 years ago

0.13.1

5 years ago

0.13.2

5 years ago

0.12.18

5 years ago

0.12.16

5 years ago

0.12.17

5 years ago

0.12.14

5 years ago

0.12.15

5 years ago

0.12.13

5 years ago

0.12.11

5 years ago

0.12.12

5 years ago

0.12.10

5 years ago

0.12.9

5 years ago

0.12.8

5 years ago

0.12.7

5 years ago

0.12.6

5 years ago

0.12.5

5 years ago

0.12.4

5 years ago

0.12.2

5 years ago

0.12.3

5 years ago

0.12.1

5 years ago

0.12.0

5 years ago

0.11.16

5 years ago

0.11.15

5 years ago

0.11.14

5 years ago

0.11.13

5 years ago

0.11.11

5 years ago

0.11.12

5 years ago

0.11.8

5 years ago

0.11.9

5 years ago

0.11.7

5 years ago

0.11.4

5 years ago

0.11.5

5 years ago

0.11.6

5 years ago

0.10.9

5 years ago

0.11.0

5 years ago

0.11.2

5 years ago

0.11.3

5 years ago

0.10.8

5 years ago

0.10.7

5 years ago

0.10.5

5 years ago

0.10.6

5 years ago

0.10.3

5 years ago

0.10.4

5 years ago

0.10.1

5 years ago

0.10.2

5 years ago

0.10.0

5 years ago

0.9.0

5 years ago

0.8.0

5 years ago

0.7.17

5 years ago

0.7.13

5 years ago

0.7.12

5 years ago

0.7.11

5 years ago

0.7.10

5 years ago

0.7.9

5 years ago

0.7.8

5 years ago

0.7.7

5 years ago

0.7.6

5 years ago

0.7.5

5 years ago

0.7.2

5 years ago

0.7.4

5 years ago

0.7.3

5 years ago

0.6.12

5 years ago

0.6.11

5 years ago

0.6.10

5 years ago

0.6.9

5 years ago

0.6.8

5 years ago

0.6.2

5 years ago