Expose tag/langue/motscles JS functions on window to survive ESM tree-shaking

This commit is contained in:
Pontoporeia
2026-07-08 13:50:03 +02:00
parent 8e67b9c155
commit 83287cdcd8
4 changed files with 46 additions and 25 deletions
@@ -7,22 +7,25 @@
*/
var _languesPendingForm = null;
function _languesConfirmDelete(btn, name) {
function languesConfirmDelete(btn, name) {
_languesPendingForm = btn.closest("form");
document.getElementById("langues-delete-name").textContent = name;
document.getElementById("langues-delete-dialog").showModal();
}
window.languesConfirmDelete = languesConfirmDelete;
function _languesSubmitPending() {
function languesSubmitPending() {
if (_languesPendingForm) _languesPendingForm.submit();
}
window.languesSubmitPending = languesSubmitPending;
function _languesToggleAll(src) {
function languesToggleAll(src) {
document.querySelectorAll('input[name="selected_langs[]"]').forEach((cb) => {
cb.checked = src.checked;
});
languesUpdateBulk();
}
window.languesToggleAll = languesToggleAll;
function languesUpdateBulk() {
var n = document.querySelectorAll(
@@ -41,15 +44,17 @@ function languesUpdateBulk() {
wrap.style.setProperty("--sticky-top", "0px");
}
}
window.languesUpdateBulk = languesUpdateBulk;
function _languesCancelSelection() {
function languesCancelSelection() {
document.querySelectorAll('input[name="selected_langs[]"]').forEach((cb) => {
cb.checked = false;
});
languesUpdateBulk();
}
window.languesCancelSelection = languesCancelSelection;
function _languesConfirmBulkDelete() {
function languesConfirmBulkDelete() {
var checked = document.querySelectorAll(
'input[name="selected_langs[]"]:checked',
);
@@ -58,8 +63,9 @@ function _languesConfirmBulkDelete() {
checked.length;
document.getElementById("langues-bulk-delete-dialog").showModal();
}
window.languesConfirmBulkDelete = languesConfirmBulkDelete;
function _languesExecBulkDelete() {
function languesExecBulkDelete() {
var container = document.getElementById("langues-bulk-checkboxes");
container.innerHTML = "";
document
@@ -77,8 +83,9 @@ function _languesExecBulkDelete() {
document.getElementById("langues-bulk-delete-dialog").close();
document.getElementById("langues-bulk-form").submit();
}
window.languesExecBulkDelete = languesExecBulkDelete;
function _languesConfirmBulkMerge() {
function languesConfirmBulkMerge() {
var checked = document.querySelectorAll(
'input[name="selected_langs[]"]:checked',
);
@@ -98,8 +105,9 @@ function _languesConfirmBulkMerge() {
});
document.getElementById("langues-bulk-merge-dialog").showModal();
}
window.languesConfirmBulkMerge = languesConfirmBulkMerge;
function _languesExecBulkMerge() {
function languesExecBulkMerge() {
var targetId = document.getElementById(
"langues-bulk-merge-target-select",
).value;
@@ -119,6 +127,7 @@ function _languesExecBulkMerge() {
document.getElementById("langues-bulk-merge-dialog").close();
document.getElementById("langues-bulk-form").submit();
}
window.languesExecBulkMerge = languesExecBulkMerge;
document.addEventListener("htmx:afterSwap", (evt) => {
if (evt.target.id === "langues-table-wrap") {
@@ -7,22 +7,25 @@
*/
var _motsclesPendingForm = null;
function _motsclesConfirmDelete(btn, name) {
function motsclesConfirmDelete(btn, name) {
_motsclesPendingForm = btn.closest("form");
document.getElementById("motscles-delete-name").textContent = name;
document.getElementById("motscles-delete-dialog").showModal();
}
window.motsclesConfirmDelete = motsclesConfirmDelete;
function _motsclesSubmitPending() {
function motsclesSubmitPending() {
if (_motsclesPendingForm) _motsclesPendingForm.submit();
}
window.motsclesSubmitPending = motsclesSubmitPending;
function _motsclesToggleAll(src) {
function motsclesToggleAll(src) {
document.querySelectorAll('input[name="selected_tags[]"]').forEach((cb) => {
cb.checked = src.checked;
});
motsclesUpdateBulk();
}
window.motsclesToggleAll = motsclesToggleAll;
function motsclesUpdateBulk() {
var n = document.querySelectorAll(
@@ -41,8 +44,9 @@ function motsclesUpdateBulk() {
wrap.style.setProperty("--sticky-top", "0px");
}
}
window.motsclesUpdateBulk = motsclesUpdateBulk;
function _motsclesConfirmBulkMerge() {
function motsclesConfirmBulkMerge() {
var checked = document.querySelectorAll(
'input[name="selected_tags[]"]:checked',
);
@@ -62,8 +66,9 @@ function _motsclesConfirmBulkMerge() {
});
document.getElementById("motscles-bulk-merge-dialog").showModal();
}
window.motsclesConfirmBulkMerge = motsclesConfirmBulkMerge;
function _motsclesExecBulkMerge() {
function motsclesExecBulkMerge() {
var targetId = document.getElementById(
"motscles-bulk-merge-target-select",
).value;
@@ -83,15 +88,17 @@ function _motsclesExecBulkMerge() {
document.getElementById("motscles-bulk-merge-dialog").close();
document.getElementById("motscles-bulk-form").submit();
}
window.motsclesExecBulkMerge = motsclesExecBulkMerge;
function _motsclesCancelSelection() {
function motsclesCancelSelection() {
document.querySelectorAll('input[name="selected_tags[]"]').forEach((cb) => {
cb.checked = false;
});
motsclesUpdateBulk();
}
window.motsclesCancelSelection = motsclesCancelSelection;
function _motsclesConfirmBulkDelete() {
function motsclesConfirmBulkDelete() {
var checked = document.querySelectorAll(
'input[name="selected_tags[]"]:checked',
);
@@ -100,8 +107,9 @@ function _motsclesConfirmBulkDelete() {
checked.length;
document.getElementById("motscles-bulk-delete-dialog").showModal();
}
window.motsclesConfirmBulkDelete = motsclesConfirmBulkDelete;
function _motsclesExecBulkDelete() {
function motsclesExecBulkDelete() {
var container = document.getElementById("motscles-bulk-checkboxes");
container.innerHTML = "";
document
@@ -119,6 +127,7 @@ function _motsclesExecBulkDelete() {
document.getElementById("motscles-bulk-delete-dialog").close();
document.getElementById("motscles-bulk-form").submit();
}
window.motsclesExecBulkDelete = motsclesExecBulkDelete;
document.addEventListener("htmx:afterSwap", (evt) => {
if (evt.target.id === "motscles-table-wrap") {
+11 -8
View File
@@ -2,20 +2,18 @@
* admin-tags.js — Tags/mots-clés admin page: bulk selection, merge, delete, and
* HTMX-reloaded attachment.
*
* Exported globals: tagsToggleAll, tagsUpdateBulk, tagsConfirmBulkMerge,
* tagsExecBulkMerge, tagsConfirmDelete, _submitPendingTagForm.
*
* Inline-rename functions (tagsStartRename, tagsCancelRename) remain in the
* template because they embed PHP-generated icon SVGs.
*/
var _pendingTagForm = null;
function _tagsToggleAll(src) {
function tagsToggleAll(src) {
document.querySelectorAll('input[name="selected_tags[]"]').forEach((cb) => {
cb.checked = src.checked;
});
tagsUpdateBulk();
}
window.tagsToggleAll = tagsToggleAll;
function tagsUpdateBulk() {
var n = document.querySelectorAll(
@@ -25,8 +23,9 @@ function tagsUpdateBulk() {
document.getElementById("tags-bulk-actions").style.display =
n > 1 ? "flex" : "none";
}
window.tagsUpdateBulk = tagsUpdateBulk;
function _tagsConfirmBulkMerge() {
function tagsConfirmBulkMerge() {
var checked = document.querySelectorAll(
'input[name="selected_tags[]"]:checked',
);
@@ -45,8 +44,9 @@ function _tagsConfirmBulkMerge() {
});
document.getElementById("bulk-merge-dialog").showModal();
}
window.tagsConfirmBulkMerge = tagsConfirmBulkMerge;
function _tagsExecBulkMerge() {
function tagsExecBulkMerge() {
var targetId = document.getElementById("bulk-merge-target-select").value;
if (!targetId) return;
document.getElementById("tags-bulk-target").value = targetId;
@@ -64,16 +64,19 @@ function _tagsExecBulkMerge() {
document.getElementById("bulk-merge-dialog").close();
document.getElementById("tags-bulk-form").submit();
}
window.tagsExecBulkMerge = tagsExecBulkMerge;
function _tagsConfirmDelete(btn, name) {
function tagsConfirmDelete(btn, name) {
_pendingTagForm = btn.closest("form");
document.getElementById("delete-tag-name").textContent = name;
document.getElementById("delete-tag-dialog").showModal();
}
window.tagsConfirmDelete = tagsConfirmDelete;
function _submitPendingTagForm() {
function submitPendingTagForm() {
if (_pendingTagForm) _pendingTagForm.submit();
}
window.submitPendingTagForm = submitPendingTagForm;
document.addEventListener("htmx:afterSwap", (evt) => {
if (evt.target.id === "tags-table-wrap") {
+1 -1
View File
@@ -67,7 +67,7 @@ function tagsCancelRename(id) {
<p>Supprimer « <strong id="delete-tag-name"></strong> » ? Cette action est irréversible.</p>
</div>
<div class="admin-dialog__footer">
<button type="button" class="btn btn--danger" onclick="this.closest('dialog').close(); _submitPendingTagForm()">Supprimer</button>
<button type="button" class="btn btn--danger" onclick="this.closest('dialog').close(); submitPendingTagForm()">Supprimer</button>
<button type="button" class="btn btn--secondary" onclick="this.closest('dialog').close()">Annuler</button>
</div>
</dialog>