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