@kano/kbc-toast

2.0.61 • Public • Published

kbc-toast

A manager and a set of toast configurations.

Setup

This package provides a context with a global toastManager that you can use to trigger toasts. To set it up, add the following provider:

import { ToastManagerProvider } from '@kano/kbc-toast';

ReactDOM.render(
    <ToastManagerProvider config={{}} >
        {/* A component that will trigger a toast. */}
        <Component prop="Hello" />
    </ToastManagerProvider>
);

How to trigger a toast

You can trigger a toast like so

import { withToastManager, IToastManagerAPI } from '@kano/kbc-toast';

interface ComponentProps extends IToastManagerAPI {
    prop: string;
}

const Component = withToastManager(({ prop, toastManager }: ComponentProps) => {
    const handleClick = () => {
        toastManager.queueToast(
            'notice',
            'consent-needed', /* Toast id */
            {
                icon: 'Info',
                title: 'Can\'t do this',
                message: 'You need permission to click this button'
            }
        );
    };

    return <button className="component" onClick={handleClick}>{prop}</button>;
});

The first parameter selects which toast component to use (in this case notice). The second parameter is custom toast id that you can use to refer to the toast later. The last parameter will be passed as props to the toast component.

toastManager.current has the currently displayed toast.

toastManager.current.id has the id that you provided as a second parameter.

You can dismiss it by calling current.dismiss(). The toast manager will show the next toast in the queue. You can also cancel the entire queue by calling current.cancel().

## Toast types

Here are the toast types currently available. To add a new one, create a new file in the toasts/ directory.

Notice

A notice with a customisable icon, title and message.

Example:

toastManager.queueToast(
    'notice',
    'consent-needed',
    {
        icon: 'Info',
        title: 'Can\'t do this',
        message: 'You need permission to click this button'
    }
);

Cookie Consent

A cookie consent with Allow, Deny and close dismiss buttons.

Example:

toastManager.queueToast(
    'cookie-consent',
    'rich-teas',
    {
        onAllow() {
            console.log('COOL');
        },
        onDeny() {
            console.log('NOT COOL');
        },
    }
);

Readme

Keywords

none

Package Sidebar

Install

npm i @kano/kbc-toast

Weekly Downloads

8

Version

2.0.61

License

ISC

Unpacked Size

56 kB

Total Files

19

Last publish

Collaborators

  • thefijimonster
  • dianlin61
  • jacobmorgan99
  • alexnklein
  • ellenw3lsh
  • camuskano
  • alexfiennes
  • kanocomputing
  • jamie_old_plantain