github-logo

Toaster UI Library

Open-Source

Toaster UI is a lightweight JavaScript library for displaying toast notifications on web pages. It provides a simple and customizable way to show temporary messages or notifications to users. This documentation will guide you through the installation process, usage examples, and customization options of the library.

playground

Type
content
Options
allowHtml
autoClose
duration

Copy Generated code

          
            const toaster = new Toaster.toaster();
            
            toatsManager.addToast('This is a Normal Toast.' , "default", {
                autoClose: true,
                duration: 3000,
                styles: {},
                onClose: ()=>{console.log("Toast closed!");}
            });
          
        

Installation

To use Toaster-Ui, you have two options for installation:

Option 1: Script Tag

Include the following script tag in your HTML file:

<script src="https://unpkg.com/toaster-ui@1.1.5/dist/main.js"></script>

or

<script src="https://cdn.jsdelivr.net/npm/toaster-ui@1.1.5/dist/main.js"></script>

Option 2: NPM

Install Toaster-Ui using npm:

npm i toaster-ui

Usage

Once Toaster-Ui is installed in your project, you can start using it by following the instructions below.

If you imported the library using a module bundler like webpack or Rollup:

import ToasterUi from 'toaster-ui';

If you included the library using a script tag, there's no need to import it explicitly.

Create a new instance of ToasterUi:

const toaster = new ToasterUi();

Basic Usage

To display a basic toast message, use the addToast() method:

toaster.addToast("This is a toast");

The addToast() method takes three parameters:

Options

The addToast() method's third parameter, options, allows you to customize various aspects of the toast. The available options are:

Option Type Default Description
duration number 3000 The duration in milliseconds that the toast should be displayed before automatically closing.
autoClose boolean true Specifies whether the toast should automatically close after the duration. Set it to false to disable auto-closing.
styles object null An object containing CSS styles to be applied to the toast element.
allowHtml boolean false Specifies whether HTML content should be allowed in the toast message.
onClose function ()=>{} A callback function to be executed when the toast is closed.

Updating a Toast

To update a toast message after it has been displayed, you can use the updateToast() method. This method requires the id of the toast that needs to be updated, which is returned when adding a toast.

Here's an example of how to update a toast:

const toastId = toaster.addToast("Initial toast content");

// To update the toast
toaster.updateToast(toastId, "New toast content", "success", { duration: 5000 });

The updateToast() method takes four parameters:

Manual Update for Loading Toasts

Toasts of type "loading" have their autoClose option set to false by default, requiring manual updates using the updateToast() function. This allows you to control when to close the toast and provide status updates to users. Use the updateToast() function with the toast's ID to modify its content, type, and other options as needed.

When the type of the toast is "loading", the autoClose option is automatically set to false. This means that the toast will not close automatically after a duration. Instead, you'll need to update the toast manually using the updateToast() function to indicate when the loading is complete or any other desired changes.

Here's an example of how to create a loading toast and manually update it:

const toastId = toaster.addToast("Loading in progress", "loading");

// Simulate loading completion after 3 seconds
setTimeout(() => {
  toaster.updateToast(toastId, "Loading complete!", "success", { autoClose: true });
}, 3000);

In this example, we first create a loading toast by setting the type to "loading". Since the autoClose option is set to false, the toast will remain visible until we manually update it. After a simulated loading process of 3 seconds, we use the updateToast() function to change the toast's content, type to "success", and enable autoClose by setting it to true. This causes the toast to automatically close after the specified duration.

Remember, for loading toasts, you need to manually update the toast using updateToast() to reflect changes or indicate completion.

Here's a clarification on how the update process works:

When using the updateToast() function, you can specify new values for the content, type, and options of the toast. If you omit any of these parameters, the corresponding property of the toast will retain its existing value.

For example:

const toastId = toaster.addToast("Initial toast", "default", { duration: 3000 });

// Update the toast without modifying the type or options
toaster.updateToast(toastId, "Updated toast");

// The toast will still have the "default" type and a duration of 3000

In the example above, the updateToast() function is called without providing a new type or options. As a result, the toast will retain its original type ("default") and the duration option of 3000 milliseconds.

However, if you explicitly provide a new type parameter during the update, it will override the existing type:

const toastId = toaster.addToast("Initial toast", "default", { duration: 3000 });

// Update the toast and change its type
toaster.updateToast(toastId, "Updated toast", "success");

// The toast will now have the "success" type and a duration of 3000

In this case, the type parameter is explicitly set to "success" during the update, causing the toast to change its type accordingly.

To update specific options while retaining the rest, you can pass only the updated options as the newOptions parameter:

const toastId = toaster.addToast("Initial toast", "default", { duration: 3000, styles: { color: "blue" } });

// Update the toast and change only the styles
toaster.updateToast(toastId, "Updated toast", null, { styles: { color: "red" } });

// The toast will retain its type, duration, and the updated styles { color: "red" }

In the example above, the styles option is updated while retaining the existing type ("default") and duration (3000 milliseconds).

I apologize for any confusion caused by my previous response. Thank you for bringing it to my attention, and I hope this clarifies the behavior of updating options and types when using the updateToast() function.

That's it! You now have That's it! You now have a basic understanding of how to use Toaster-Ui in your web application. Below, you'll find some additional examples and usage details to further enhance your experience with the library.

Creating Custom Types

To create a custom toast type, you can define your own CSS class and apply it to the toast element. Here's an example:

.toaster-ui-lib-custom {
  background-color: #ff00ff; /* Replace with your desired background color */
  /* Add any other custom styles here */
}

You can apply the custom type to a toast by setting the type parameter to your custom type name:

toaster.addToast("Custom toast message", "custom");

The toast will now have the custom type styling applied to it.

Examples

Example 1: Customizing Toast Styles

You can customize the styles of a toast by providing a styles object in the options parameter. Here's an example:

const options = {
  duration: 2000,
  styles: {
    backgroundColor: '#ff0000',
    color: '#ffffff',
    border: '1px solid #ffffff',
  },
};

toaster.addToast("Customized toast", "success", options);

Example 2: Allowing HTML Content

To display HTML content in a toast message, set the allowHtml option to true. Here's an example:

const options = {
  allowHtml: true,
};

toaster.addToast("<strong>This is a bold toast message</strong>", "info", options);

Example 3: Handling Toast Closure

You can specify a callback function to be executed when a toast is closed by providing the onClose option. Here's an example:

const options = {
  onClose: () => {
    console.log("Toast closed!");
  },
};

toaster.addToast("Toast with closure callback", "default", options);

Example 4: Updating toast

example of fetching data from an application using Toaster-Ui:

const toaster = new ToasterUi();

// Create a function to fetch some data from the application
async function dataFetch() {
  // Add a toast of type loading
  const toastId = toaster.addToast("Loading, please wait", "loading");

  const data = await fetch("https://jsonplaceholder.typicode.com/todos/1");

  const promise = await new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Promise resolved.");
    }, 2000);
  });

  if (data.status !== 200) {
    // Update the toast with error message
    toaster.updateToast(toastId, "Error while fetching data", "error");
    return;
  } else {
    // Update the toast with success message
    toaster.updateToast(toastId, "Data fetched successfully", "success");
  }

  setTimeout(() => {
    toaster.updateToast(toastId, "Promise resolved", "success", {
      autoClose: true,
    });
  }, 2000);

  const json = await data.json();
  return json;
}

dataFetch();

In this example, the dataFetch function is created to fetch data from an application. It starts by adding a toast of type "loading" using toaster.addToast and assigns the returned toastId to a variable.

Next, it makes an asynchronous fetch request to retrieve data from the specified URL. It also simulates a promise being resolved after a 2-second delay using setTimeout.

If the data response has a status other than 200, indicating an error, the toast is updated with an error message using toaster.updateToast. Otherwise, if the data is successfully fetched, the toast is updated with a success message.

After 2 seconds, another toast update is triggered to display the message "Promise resolved" with a success type, and the autoClose option set to true to automatically close the toast.

Finally, the fetched data is converted to JSON using data.json() and returned.

When you run the dataFetch function, the toast messages will be displayed in the Toaster-Ui component based on the progress and status of the data fetching process.

Customize Using Classes

Toaster-Ui is designed to be a standalone component that can be easily integrated into any web application. However, if you want to customize the container element.


.toaster-ui-lib-container{
  max-width: 500px;
  left:0;
}
          

OR

if you want to customize the toast element, you can use the following CSS classes:

          
            .toaster-ui-lib {
              /* custom styles for the toast element */
              /* Add your custom styles here */
            }
            .toaster-ui-lib::after {
              /* Add your custom styles here */
            }
            .toaster-ui-lib-close{
              /* Add your custom styles here */
            }
            .toaster-ui-lib-loader{
              /* Add your custom styles here */
            }
          
        

Summary

Congratulations! You've successfully learned how to install, import, and use Toaster-Ui in your web application. You're now equipped with the knowledge to display toast messages with custom styles, handle toast closure, and take advantage of advanced features offered by the library. Explore and experiment with the different options and methods to enhance your user interface with informative and visually appealing toast messages. Happy coding!

.