@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');
        },
    }
);

Dependencies (10)

Dev Dependencies (0)

    Package Sidebar

    Install

    npm i @kano/kbc-toast

    Weekly Downloads

    0

    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