Svelte-AlertNotify is a svelte component made to display cool alerts or notifications
You can also:
Version 1.0.2 :
See a demo of this components here : (avaible soon)
npm i svelte-alertnotify
Importation in your svelte project
<script>
import {AlertNotify, senderAlerterNotifier} from "svelte-alertnotify"
function addAlert(event){
senderAlerterNotifier.sendAlertWithoutStyle("A message", "success", 4000)
}
function addNotification(event){
senderAlerterNotifier.sendNotificationWithoutStyle("A notification message", "warning", 2000)
}
</script>
<AlertNotify positioningAlerting={"bottomLeft"} positioningNotifications={"topRight"}/>
<div>
<button on:click="{addAlert}">
add an Alert
</button>
<button on:click="{addNotification}">
Add a Notification
</button>
</div>
The AlertNotify component take two props :
PositioningAlerting : this props can take this value defining the position of alerts:
PositioningNotifications : this props can take this value defining the position of notifications:
showFastCleanNotifications : this props can take this value defining if you want to show the clear all notification:
To customize your alerts and notifications, you must use a styleObject. No constructor is provided because it is simply an object containing up to four attributes:
The default value are :
/**
* This const is the default style apply to an alert
*/
export const defautStyleObject = {
border: "1px solid rgba(129, 129, 129, 0.2);",
backgroundColor: "white;",
borderRadius: "15px;",
boxShadow: "-3px -4px 15px 4px rgba(189,189,189,0.3);",
};
/**
* This const is the default style apply to a notification
*/
export const defaultNotificationsstyleObject = {
border: "1px solid rgba(0, 0, 0, 0.2);",
backgroundColor: "white;",
borderRadius: "10px;",
boxShadow: "-3px -4px 15px 4px rgba(189,189,189,0.3);",
};
You can use this object the same way you use other method because they are exported
The most complete way to create an alert and fully customize it is to create an AlertParameterObject object using the defined constructor, and then use this object as a parameter of the sendAlertByObject method
Exemple :
import {AlertNotify, senderAlerterNotifier} from "@boutvalentin/Svelte-AlertNotify"
const alertObject = new senderAlerterNotifier.AlertParameterObject("an alert", "info", 3000, true, "#f77f00", senderAlerterNotifier.defaultStyleObject)
senderAlerterNotifier.senderAlertByObject(alertObject)
Brief presentation of the AlertParameterObject constructor : Signature of the function :
export function AlertParameterObject(
message,
type = "",
timeout = 3000,
showProgressBar = true,
colorProgressBar = type === "success"
? "#8ac926"
: type === "info"
? "#f77f00"
: type === "warning" || type === "alert"
? "red"
: "rgba(129, 129, 129, 0.5)",
styleObject = defautStyleObject
)
Explanation of the parameter extract from documentation :
Constructor to create an alertParameterObject with all the attribute for styling the alert @param {String} message - The message you want to display @param {String} type - The type of message ex: Info, warning, alert, success or empty to a regular message @param {Integer} timeout - The expiration delay in ms to make the alert disappear @param {boolean} showProgressBar - A boolean who define if you want to show the progressBar Timer @param {String} colorProgressBar - The color you want for progressBar, Default color set in function of the type @param {Object} styleObject - An object who contain to the maximum 4 value (border, backgroundColor, borderRadius, boxShadow)
Actually shortened methods exist to simplify processing, replacing unrequested values with default ones. Each method is named with this convention: send(Alert|Notification)(type|'')(WithStyle|WithoutStyle)
An exemple to understand : I want to send an alert of warning type without style I can use : sendAlertWarningWithoutStyle(message, [timeout = 3000])
Here is the list of available methods for the alert:
/* Send an alert of type of your choice*/
sendAlertWithStyle(message,[type = "",styleObject = defautStyleObject,timeout = 3000])
sendAlertWithoutStyle(message, [type = "", timeout = 3000])
/* Send an alert of type Info*/
sendAlertInfoWithStyle(message, [styleObject = defautStyleObject,timeout = 3000])
sendAlertInfoWithoutStyle(messsage, [timeout = 3000])
/* Send an alert of type Alert*/
sendAlertAlerWithStyle(message, [styleObject = defautStyleObject,timeout = 3000])
sendAlertAlertWithoutStyle(messsage, [timeout = 3000])
/* Send an alert of type Warning*/
sendAlertWarningWithStyle(message, [styleObject = defautStyleObject,timeout = 3000])
sendAlertWarningWithoutStyle(messsage, [timeout = 3000])
/* Send an alert of type Success*/
sendAlertSuccessWithStyle(message, [styleObject = defautStyleObject,timeout = 3000])
sendAlertSuccessWithoutStyle(messsage, [timeout = 3000])
One more detail : You can kill the alert by swipping to the right or to the left.
The most complete way to create a notification and fully customize it is to create an AlertParameterObject object using the defined constructor, and then use this object as a parameter of the sendNotificationByObject method. By using this method and object you can create what I call a bigNotifications wich is a notifications with an hidden text display when you click on the "more arrow". This hidden text can be full html but you have to precise it by passing the boolean bigMessageIsHtml to true. You can also passed the link and alt attribute of an image or use a svg as a replacement of the default one and set the color of this svg.
Exemple :
const svgP = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 19C2 20.6569 3.34315 22 5 22H19C20.6569 22 22 20.6569 22 19V5C22 3.34315 20.6569 2 19 2H5C3.34315 2 2 3.34315 2 5V19ZM20 19C20 19.5523 19.5523 20 19 20H5C4.44772 20 4 19.5523 4 19V5C4 4.44772 4.44772 4 5 4H10V12.0111L12.395 12.0112L14.0001 9.86419L15.6051 12.0112H18.0001L18 4H19C19.5523 4 20 4.44772 20 5V19ZM16 4H12V9.33585L14.0001 6.66046L16 9.33571V4Z" fill="currentColor" /></svg>`;
const notifObject = new senderAlerterNotifier.NotificationParameterObject("Message numero "+count, type,timeout,"default",defautStyleObject,'','',svgP,"red",false,"a big message",false);
senderAlerterNotifier.sendNotificationByObject(notifObject);
Brief presentation of the NotificationParameterObject constructor : Signature of the function:
export function NotificationParameterObject(
message,
type = "",
timeout = 3000,
crossClose = "default",
styleObject = defaultNotificationsstyleObject,
srcImage = "",
altImage = "",
svgPath = "",
svgColor = "",
showIconSvg = true,
bigMessage = "",
bigMessageIsHtml = false
)
Explanation of the parameter extract from documentation :
Constructor to create a notificationParameterObject who contain all the styling attribute to display a notifications @param {String} message - The message you want to display @param {String} type - The type of message ex: Info, warning, alert, success or empty to a regular message @param {Integer} timeout - The expiration delay in ms to make the notification disappear @param {String} crossClose - The type of closing cross the values possible are : default, round, none @param {Object} styleObject - An object who contain to the maximum 4 value (border, backgroundColor, borderRadius, boxShadow) @param {String} srcImage - The link of the image to display, can be empty if you don't want an image @param {String} altImage - The alternative attribute of the image @param {String} svgPath - A full SVG html tag to replace the default SVG display, can be empty if you don't want another SVG or if you give a srcImage @param {String} svgColor - The color of SVG @param {Boolean} showIconSvg - A boolean : true if you want to display the default SVG, false if you don't want it @param {String} bigMessage - The big message to display, can be empty if you don't want to make a big Notifications @param {Boolean} bigMessageIsHtml - A boolean : true if the string path is HTML, false if it isn't
Actually shortened methods exist to simplify processing, replacing unrequested values with default ones. Each method is named with this convention: send(Alert|Notification)(type|'')(WithStyle|WithoutStyle)
An exemple to understand : I want to send a notification of warning type without style I can use : sendNotificationWarningWithoutStyle(message, [timeout = 3000])
Here is the list of avaible methods for the notification :
/* Send a notification of the type of your choice*/
sendNotificationWithStyle(message, [type = "",styleObject = defaultNotificationsstyleObject,timeout = 3000])
sendNotificationWithoutStyle(message,[type = "",timeout = 3000])
/* send a notification of the type of default */
sendNotificationNotypeWithStyle(message,[styleObject = defaultNotificationsstyleObject,timeout = 3000])
sendNotificationNotypeWithoutStyle(message, [timeout = 3000])
/* Send an info notification*/
sendNotificationInfoWithStyle(message,[styleObject = defaultNotificationsstyleObject,timeout = 3000])
sendNotificationInfoWithoutStyle(message, [timeout = 3000])
/* Send an alert notification*/
sendNotificationAlertWithStyle(message, [styleObject = defaultNotificationsstyleObject, timeout = 3000])
sendNotificationAlertWithoutStyle(message, [timeout = 3000])
/* Send a warning notification*/
sendNotificationWarningWithStyle(message, [styleObject = defaultNotificationsstyleObject, timeout = 3000])
sendNotificationWarningWithoutStyle(message, [timeout = 3000])
/* Send a success notification*/
sendNotificationSuccessWithStyle(message, [styleObject = defaultNotificationsstyleObject, timeout = 3000])
sendNotificationSuccessWithoutStyle(message, [timeout = 3000])
One more detail : the closing mark is on the right and appear when youre mouse is over it. You can also kill the notification by swipping to the right or left.
What I planned for V2 :
If you have any other idea please feel free to contact me and I will add it if I like it 😆
I don't know well the license type avaible but let say it's open source and free to use. It's all that matters and have fun with Svelte and his components.
Free Component, Hell Yeah!
Made by me (@BoutValentin) with ❤ for every svelte developers and every projects
Contact :
Thanks to :