Files
2026-07-30 11:56:32 +03:00

53 lines
2.1 KiB
JavaScript

(function (window, document) {
'use strict';
var Adminx = window.Adminx = window.Adminx || {};
function init() {
var root = document.querySelector('[data-field-sets-root]');
if (!root) { return; }
var base = root.getAttribute('data-base') || Adminx.base();
root.addEventListener('click', function (event) {
var mode = event.target.closest('[data-field-set-mode]');
if (mode) {
var segmented = mode.closest('.segmented');
segmented.querySelectorAll('[data-field-set-mode]').forEach(function (button) {
button.setAttribute('aria-pressed', button === mode ? 'true' : 'false');
});
return;
}
var apply = event.target.closest('[data-field-set-apply]');
if (!apply) { return; }
var card = apply.closest('[data-field-set]');
var rubric = card.querySelector('[data-field-set-rubric]').value;
var selectedMode = card.querySelector('[data-field-set-mode][aria-pressed="true"]');
if (!rubric) {
Adminx.Toast.show('Выберите рубрику', 'warning');
return;
}
apply.disabled = true;
var data = new FormData();
data.append('_csrf', Adminx.csrf());
data.append('mode', selectedMode ? selectedMode.getAttribute('data-field-set-mode') : 'copy');
fetch(base + '/rubrics/' + rubric + '/field-sets/' + encodeURIComponent(card.getAttribute('data-field-set')) + '/apply', {
method: 'POST',
body: data,
credentials: 'same-origin',
headers: { 'Accept': 'application/json' }
})
.then(function (response) { return response.json(); })
.then(function (json) {
if (!json.ok) { throw new Error(json.message || 'Не удалось добавить набор'); }
Adminx.Toast.show(json.message || 'Набор добавлен', 'success');
})
.catch(function (error) { Adminx.Toast.show(error.message, 'error'); })
.finally(function () { apply.disabled = false; });
});
}
document.addEventListener('DOMContentLoaded', init);
})(window, document);