import Swal, { SweetAlertOptions } from "sweetalert2"; import "./sweetalert2.css"; import { TFunction } from "i18next"; export type SweetAlertTitle = string | HTMLElement | JQuery | undefined export type SweetAlertHtml = string | HTMLElement | JQuery | undefined export type SweetAlertConfirmButtonText = string | undefined type Transaction = TFunction<["translation", ...string[]], undefined> export const msg = (title: SweetAlertTitle) => { Swal.mixin({ toast: true, position: "bottom-end", showConfirmButton: false, timer: 3000, timerProgressBar: true, didOpen: (toast) => { toast.onmouseenter = Swal.stopTimer; toast.onmouseleave = Swal.resumeTimer; }, }).fire({ icon: "success", title: title, }); }; export const popup = (options: SweetAlertOptions) => { Swal.fire(options); }; export const successDialog = (title: SweetAlertTitle, t: Transaction) => { return Swal.fire({ icon: "success", title: title, confirmButtonText: t("Confirm"), showConfirmButton: true, }); }; export const successDialogWithContent = (title: SweetAlertTitle, html: SweetAlertHtml, t: Transaction) => { return Swal.fire({ icon: "success", title: title, html: html, confirmButtonText: t("Confirm"), showConfirmButton: true, }); }; export const errorDialog = (title: SweetAlertTitle, t: Transaction) => { return Swal.fire({ icon: "error", title: title, confirmButtonText: t("Confirm"), showConfirmButton: true, }); }; export const errorDialogWithContent = (title: SweetAlertTitle, html: SweetAlertHtml, t: Transaction) => { return Swal.fire({ icon: "error", title: title, html: html, confirmButtonText: t("Confirm"), showConfirmButton: true, }); }; export const warningDialog = (title: SweetAlertTitle, t: Transaction) => { return Swal.fire({ icon: "warning", title: title, confirmButtonText: t("Confirm"), showConfirmButton: true, }); }; export const submitDialog = async ( confirmAction: () => void, t: Transaction, { ...props } = { title: t("Do you want to submit?") as SweetAlertTitle, confirmButtonText: t("Submit") as SweetAlertConfirmButtonText, } ) => { // console.log(props) // const { t } = useTranslation("common") const result = await Swal.fire({ icon: "question", title: props?.title, cancelButtonText: t("Cancel"), confirmButtonText: props?.confirmButtonText, showCancelButton: true, showConfirmButton: true, customClass: { container: "swal-container-class", // Add a custom class to the Swal.fire container element popup: "swal-popup-class", // Add a custom class to the Swal.fire popup element }, }); if (result.isConfirmed) { confirmAction(); } }; export const submitDialogWithWarning = async ( confirmAction: () => void, t: Transaction, { ...props } = { title: t("Do you want to submit?") as SweetAlertTitle, html: t("Warning!") as SweetAlertHtml, confirmButtonText: t("Submit") as SweetAlertConfirmButtonText, } ) => { // console.log(props) // const { t } = useTranslation("common") const result = await Swal.fire({ icon: "warning", title: props?.title, html: props?.html, cancelButtonText: t("Cancel"), confirmButtonText: props?.confirmButtonText, showCancelButton: true, showConfirmButton: true, customClass: { container: "swal-container-class", // Add a custom class to the Swal.fire container element popup: "swal-popup-class", // Add a custom class to the Swal.fire popup element }, }); if (result.isConfirmed) { confirmAction(); } }; export const deleteDialog = async (confirmAction: () => void, t: Transaction) => { // const { t } = useTranslation("common") const result = await Swal.fire({ icon: "question", title: t("Do you want to delete?"), cancelButtonText: t("Cancel"), confirmButtonText: t("Delete"), showCancelButton: true, showConfirmButton: true, customClass: { container: "swal-container-class", // Add a custom class to the Swal.fire container element popup: "swal-popup-class", // Add a custom class to the Swal.fire popup element }, }); if (result.isConfirmed) { confirmAction(); } };