0.3.2 • Published 2 months ago

@open-pioneer/notifier v0.3.2

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 months ago

@open-pioneer/notifier

This package allows a developer to emit global notifications from any application component and provides a component to display the notifications.

Usage

Displaying notifications in an application

The <Notifier /> must be used in your app's UI , otherwise notifications from application components will not be shown. It should be present exactly once.

import { Notifier } from "@open-pioneer/notifier";

export function AppUI() {
    return (
        <>
            <Notifier position="top-right" />
            {/* The rest of your application */}
        </>
    );
}

Note: In most cases the notifier should be located at or near the root of your app's UI.

The following properties are supported by the Notifier:

export interface NotifierProps {
    /**
     * The position for new notifications.
     *
     * @default "top-right"
     */
    position?: "top" | "top-left" | "top-right" | "bottom" | "bottom-left" | "bottom-right";
}

The implementation of <Notifier /> is currently based on Chakra's Toast.

Emitting notifications

Reference the interface name notifier.NotificationService to inject an instance of NotificationService. That service can be used to emit events from any service or UI component in the application:

const notificationService = ...; // injected
notificationService.notify({
    level: "info",
    title: "Job complete",
    message: "Optional additional message ..."
})

All options in notify are optional, but at least the title or message should be specified.

The following options are supported by the service:

export type NotificationLevel = "success" | "info" | "warning" | "error";

export interface NotificationOptions {
    /** The title of the notification. */
    title?: string | ReactNode | undefined;

    /** An optional message, shown below the title. */
    message?: string | ReactNode | undefined;

    /**
     * The level of this notification.
     * @default "info"
     */
    level?: NotificationLevel | undefined;

    /**
     * The duration (in milliseconds) how long the notification is displayed.
     * By default, notifications are displayed until they are explicitly closed by the user.
     *
     * Note that important messages should not be hidden automatically for a11y reasons.
     */
    displayDuration?: number | undefined;
}

Closing all notifications

All currently displayed notifications can be closed by calling the closeAll method on the NotificationService:

const notificationService = ...; // injected
notificationService.closeAll();

License

Apache-2.0 (see LICENSE file)

0.3.2

2 months ago

0.3.1

3 months ago

0.3.0

4 months ago

0.2.0

5 months ago

0.1.0

6 months ago