diff --git a/assets/css/frontend/remote-modal.css b/assets/css/frontend/remote-modal.css index 6783d12c..92a2fdd2 100644 --- a/assets/css/frontend/remote-modal.css +++ b/assets/css/frontend/remote-modal.css @@ -71,6 +71,20 @@ body.aksrt-remote-modal-open { transform: translateY(0); } +.aksrt-remote-modal__header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 16px 18px 0; +} + +.aksrt-remote-modal__title { + margin: 0; + font-size: 17px; + line-height: 1.35; +} + .aksrt-remote-modal__content { padding: 18px 18px 16px; } diff --git a/assets/js/aksrt-runtime.js b/assets/js/aksrt-runtime.js index 0360c8b7..349575ba 100644 --- a/assets/js/aksrt-runtime.js +++ b/assets/js/aksrt-runtime.js @@ -317,120 +317,60 @@ // §10.10 — refreshModal: remote content modal // ══════════════════════════════════════════════════════════════ - var _refreshModalEl = null; - - function getRefreshModalEl() { - if (_refreshModalEl && _refreshModalEl.parentNode) return _refreshModalEl; - _refreshModalEl = document.createElement('div'); - _refreshModalEl.className = 'aksrt-refresh-modal'; - _refreshModalEl.innerHTML = - '
' + - '' + escapeHtml(err.message) + '
'; - return modal; - }); + return runtime.openRemote(Object.assign({}, base, { + url: opts.remote, + method: opts.method || 'GET', + })); } if (opts.action) { - var ajaxUrl = (window.aksrtData && aksrtData.ajaxUrl) || '/wp-admin/admin-ajax.php'; + var ajaxUrl = (window.aksrtData && window.aksrtData.ajaxUrl) || '/wp-admin/admin-ajax.php'; var params = new URLSearchParams(); params.set('action', opts.action); - if (window.aksrtData && aksrtData.nonce) params.set('nonce', aksrtData.nonce); + if (window.aksrtData && window.aksrtData.nonce) params.set('nonce', window.aksrtData.nonce); if (opts.data) { - Object.keys(opts.data).forEach(function (k) { params.set(k, opts.data[k]); }); + Object.keys(opts.data).forEach(function (key) { params.set(key, opts.data[key]); }); } - - return fetch(ajaxUrl, { + return runtime.openRemote(Object.assign({}, base, { + url: ajaxUrl, method: 'POST', + cache: false, headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, - credentials: 'same-origin', - body: params.toString() - }) - .then(function (r) { return r.json(); }) - .then(function (json) { - aksrt.loading(body, false); - if (json && json.data && json.data.html) { - body.innerHTML = json.data.html; - } else if (json && json.data && json.data.show_modal) { - body.innerHTML = json.data.show_modal; - } else { - body.innerHTML = '' + escapeHtml(json.data && json.data.message || '') + '
'; - } - if (window.AksrtFrontend) AksrtFrontend.rehydrate(body, 'modal'); - return modal; - }) - .catch(function (err) { - aksrt.loading(body, false); - body.innerHTML = '' + escapeHtml(err.message) + '
'; - return modal; - }); + body: params.toString(), + })); } - aksrt.loading(body, false); - return Promise.resolve(modal); + return Promise.resolve(runtime.open(base)); }; aksrt.refreshModal.close = closeRefreshModal; diff --git a/assets/js/core/modal-runtime.js b/assets/js/core/modal-runtime.js index d4d417e3..c5150ccd 100644 --- a/assets/js/core/modal-runtime.js +++ b/assets/js/core/modal-runtime.js @@ -136,6 +136,10 @@ var bottom = options.bottom === true || (options.mobileBottom !== false && isMobile()); var heightStyle = options.height ? "min-height:" + parseInt(options.height, 10) + "px;" : ""; var initialHtml = options.html !== undefined ? options.html : skeleton(options); + var titleId = "aksrt-modal-title-" + String(sequence + 1); + var titleHtml = options.title + ? '