Ansico-CPT/ansico-cpt-and-taxonomies/assets/admin.js
2026-04-16 20:48:19 +02:00

54 lines
1.6 KiB
JavaScript

(function () {
function slugify(value) {
return (value || '')
.toString()
.toLowerCase()
.trim()
.replace(/[^a-z0-9-_\s]/g, '')
.replace(/\s+/g, '-')
.replace(/-+/g, '-');
}
function bindSlugHelpers() {
document.querySelectorAll('.ansico-slug-source').forEach(function (source) {
var form = source.closest('form');
if (!form) return;
var target = form.querySelector('.ansico-slug-target');
if (!target || target.value) return;
source.addEventListener('input', function () {
if (!target.dataset.userEdited) {
target.value = slugify(source.value);
}
});
target.addEventListener('input', function () {
if (target.value) {
target.dataset.userEdited = '1';
}
});
});
}
function bindFieldRows() {
var addButton = document.getElementById('ansico-add-field');
var tableBody = document.querySelector('#ansico-fields-table tbody');
var template = document.getElementById('tmpl-ansico-field-row');
if (!addButton || !tableBody || !template) return;
addButton.addEventListener('click', function () {
tableBody.insertAdjacentHTML('beforeend', template.innerHTML);
});
tableBody.addEventListener('click', function (event) {
var removeButton = event.target.closest('.ansico-remove-field');
if (removeButton) {
var row = removeButton.closest('.ansico-field-row');
if (row) row.remove();
}
});
}
document.addEventListener('DOMContentLoaded', function () {
bindSlugHelpers();
bindFieldRows();
});
})();