35 lines
979 B
TypeScript
35 lines
979 B
TypeScript
import SlAlert from "@shoelace-style/shoelace/dist/components/alert/alert.js";
|
|
import SlIcon from "@shoelace-style/shoelace/dist/components/icon/icon.js";
|
|
|
|
type AlertVariant = "primary" | "success" | "neutral" | "warning" | "danger";
|
|
|
|
export function notify(
|
|
message: string,
|
|
variant: AlertVariant = "primary",
|
|
iconName = "info-circle",
|
|
duration: number | null = 3000,
|
|
) {
|
|
const alert = new SlAlert();
|
|
const icon = new SlIcon();
|
|
icon.slot = "icon";
|
|
icon.name = iconName;
|
|
alert.variant = variant;
|
|
alert.open = true;
|
|
alert.style.position = "relative";
|
|
alert.closable = true;
|
|
if (duration) {
|
|
alert.duration = duration;
|
|
}
|
|
alert.appendChild(icon);
|
|
alert.appendChild(document.createTextNode(message));
|
|
document.body.append(alert);
|
|
alert.toast();
|
|
}
|
|
|
|
export function notifyError(
|
|
message: string,
|
|
duration: number | null = null,
|
|
) {
|
|
notify(message, "danger", "exclamation-octagon", duration);
|
|
}
|