"use strict"; (function (factory) { if (typeof module === "object" && module.exports && typeof window === "undefined") { module.exports = factory(null, null); return; } var win = typeof window !== "undefined" ? window : null; var $ = win && typeof win.jQuery !== "undefined" ? win.jQuery : null; factory($, win); })(function ($, win) { if (!win || !win.document) { return {}; } const DEFAULTS = { type: "info", dismissible: true, timeout: 0, classPrefix: "jq-alert", }; function removeAlert(el) { if (!el) { return; } el.classList.remove("is-visible"); win.setTimeout(function () { if (el.parentNode) { el.parentNode.removeChild(el); } }, 180); } function createElement(tag, className) { var el = win.document.createElement(tag); if (className) { el.className = className; } return el; } function getGlobalHost() { var id = "jq-alert-host"; var existing = win.document.getElementById(id); if (existing) { return existing; } var host = createElement("div", "jq-alert-host"); host.id = id; win.document.body.appendChild(host); return host; } function renderAlert(host, options) { var settings = Object.assign({}, DEFAULTS, options || {}); var alertEl = createElement( "div", settings.classPrefix + " " + settings.classPrefix + "--" + settings.type + " is-visible" ); alertEl.setAttribute("role", "alert"); var content = createElement("div", settings.classPrefix + "__content"); content.textContent = String(settings.message || ""); alertEl.appendChild(content); if (settings.dismissible) { var close = createElement("button", settings.classPrefix + "__close"); close.type = "button"; close.setAttribute("aria-label", "Close alert"); close.textContent = "x"; close.addEventListener("click", function () { removeAlert(alertEl); }); alertEl.appendChild(close); } host.appendChild(alertEl); if (settings.timeout > 0) { win.setTimeout(function () { removeAlert(alertEl); }, settings.timeout); } return alertEl; } function show(options) { return renderAlert(getGlobalHost(), options); } function closeConfirm(backdrop, resolve, value) { if (!backdrop || backdrop.getAttribute("data-closed") === "1") { return; } backdrop.setAttribute("data-closed", "1"); backdrop.classList.remove("is-visible"); win.setTimeout(function () { if (backdrop.parentNode) { backdrop.parentNode.removeChild(backdrop); } resolve(value); }, 180); } function confirm(options) { var settings = Object.assign( { title: "Potwierdzenie", message: "", confirmLabel: "Potwierdz", cancelLabel: "Anuluj", danger: false, }, options || {} ); return new Promise(function (resolve) { var backdrop = createElement("div", "jq-alert-modal-backdrop is-visible"); var modal = createElement("div", "jq-alert-modal"); modal.setAttribute("role", "dialog"); modal.setAttribute("aria-modal", "true"); var titleId = "jq-alert-modal-title-" + Date.now(); modal.setAttribute("aria-labelledby", titleId); var header = createElement("div", "jq-alert-modal__header"); var title = createElement("h3"); title.id = titleId; title.textContent = String(settings.title || ""); header.appendChild(title); var body = createElement("div", "jq-alert-modal__body"); body.textContent = String(settings.message || ""); var footer = createElement("div", "jq-alert-modal__footer"); var cancelButton = createElement("button", "btn btn--secondary"); cancelButton.type = "button"; cancelButton.textContent = String(settings.cancelLabel || "Anuluj"); var confirmButton = createElement( "button", settings.danger ? "btn btn--danger" : "btn btn--primary" ); confirmButton.type = "button"; confirmButton.textContent = String(settings.confirmLabel || "Potwierdz"); footer.appendChild(cancelButton); footer.appendChild(confirmButton); modal.appendChild(header); modal.appendChild(body); modal.appendChild(footer); backdrop.appendChild(modal); win.document.body.appendChild(backdrop); var onKeyDown = function (event) { if (event.key === "Escape") { onCancel(); } }; var cleanup = function () { win.document.removeEventListener("keydown", onKeyDown); }; var onConfirm = function () { cleanup(); if (typeof settings.onConfirm === "function") { settings.onConfirm(); } closeConfirm(backdrop, resolve, true); }; var onCancel = function () { cleanup(); if (typeof settings.onCancel === "function") { settings.onCancel(); } closeConfirm(backdrop, resolve, false); }; confirmButton.addEventListener("click", onConfirm); cancelButton.addEventListener("click", onCancel); backdrop.addEventListener("click", function (event) { if (event.target === backdrop) { onCancel(); } }); win.document.addEventListener("keydown", onKeyDown); confirmButton.focus(); }); } win.OrderProAlerts = { show: show, confirm: confirm, }; if ($ && $.fn) { $.fn.orderProAlert = function (options) { var settings = $.extend({}, DEFAULTS, options); return this.each(function () { renderAlert(this, settings); }); }; } return win.OrderProAlerts; });