initial public commit
This commit is contained in:
76
ui/src/stores/toasts.js
Normal file
76
ui/src/stores/toasts.js
Normal file
@@ -0,0 +1,76 @@
|
||||
import { writable } from "svelte/store";
|
||||
import CommonHelper from "@/utils/CommonHelper";
|
||||
|
||||
export const toasts = writable([]);
|
||||
|
||||
export function addInfoToast(message, duration = 4000) {
|
||||
return addToast(message, "info", duration);
|
||||
}
|
||||
|
||||
export function addSuccessToast(message, duration = 3000) {
|
||||
return addToast(message, "success", duration);
|
||||
}
|
||||
|
||||
export function addErrorToast(message, duration = 4500) {
|
||||
return addToast(message, "error", duration);
|
||||
}
|
||||
|
||||
export function addWarningToast(message, duration = 4500) {
|
||||
return addToast(message, "warning", duration);
|
||||
}
|
||||
|
||||
export function addToast(message, type, duration) {
|
||||
duration = duration || 4000;
|
||||
const toast = {
|
||||
message: message,
|
||||
type: type,
|
||||
duration: duration,
|
||||
timeout: setTimeout(() => {
|
||||
removeToast(toast);
|
||||
}, duration)
|
||||
};
|
||||
|
||||
toasts.update((t) => {
|
||||
removeToastFromArray(t, toast.message)
|
||||
|
||||
CommonHelper.pushOrReplaceByKey(t, toast, "message");
|
||||
|
||||
return t;
|
||||
});
|
||||
}
|
||||
|
||||
export function removeToast(messageOrToast) {
|
||||
toasts.update((t) => {
|
||||
removeToastFromArray(t, messageOrToast);
|
||||
|
||||
return t;
|
||||
});
|
||||
}
|
||||
|
||||
export function removeAll() {
|
||||
toasts.update((t) => {
|
||||
for (let toast of t) {
|
||||
removeToastFromArray(t, toast);
|
||||
}
|
||||
|
||||
return [];
|
||||
});
|
||||
}
|
||||
|
||||
// Internal toast removal method (usually used to delete previous duplicated toasts).
|
||||
// NB! This doesn't update the store value! Use `removeToast()` instead.
|
||||
function removeToastFromArray(arr, messageOrToast) {
|
||||
let toast;
|
||||
if (typeof messageOrToast == "string") {
|
||||
toast = CommonHelper.findByKey(arr, "message", messageOrToast);
|
||||
} else {
|
||||
toast = messageOrToast;
|
||||
}
|
||||
|
||||
if (!toast) {
|
||||
return;
|
||||
}
|
||||
|
||||
clearTimeout(toast.timeout);
|
||||
CommonHelper.removeByKey(arr, "message", toast.message);
|
||||
}
|
||||
Reference in New Issue
Block a user