Change icon on individual checkbox toggle

412b0fce0f26ea48e479ef5c6d84398f719caa80

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +18 -5Ignore whitespace
public/scripts/extensions/regex/index.js+18 -5
@@ -28,6 +28,18 @@ export function getRegexScripts() {
2828}
2929
3030/**
31+ * Toggle the icon for the "select all" checkbox in the regex settings.
32+ * - Use `fa-check-double` when the checkbox is unchecked (indicating all scripts are not selected).
33+ * - Use `fa-minus` when the checkbox is checked (indicating all scripts are selected).
34+ * @param {boolean} allAreChecked Should the "select all" icon be in the checked state?
35+ */
36+function setToggleAllIcon(allAreChecked) {
37+ const selectAllIcon = $('#bulk_select_all_toggle').find('i');
38+ selectAllIcon.toggleClass('fa-check-double', !allAreChecked);
39+ selectAllIcon.toggleClass('fa-minus', allAreChecked);
40+}
41+
42+/**
3143 * Saves a regex script to the extension settings or character data.
3244 * @param {import('../../char-data.js').RegexScriptData} regexScript
3345 * @param {number} existingScriptIndex Index of the existing script
@@ -183,6 +195,11 @@ async function loadRegexScripts() {
183195 await deleteRegexScript({ id: script.id, isScoped });
184196 await reloadCurrentChat();
185197 });
198+ scriptHtml.find('.regex_bulk_checkbox').on('change', function () {
199+ const checkboxes = $('#regex_container .regex_bulk_checkbox');
200+ const allAreChecked = checkboxes.length === checkboxes.filter(':checked').length;
201+ setToggleAllIcon(allAreChecked);
202+ });
186203
187204 $(container).append(scriptHtml);
188205 }
@@ -624,11 +641,7 @@ jQuery(async () => {
624641 const newState = !allAreChecked; // true if we just checked all, false if we just unchecked all
625642
626643 checkboxes.prop('checked', newState);
627-
644+ setToggleAllIcon(newState);
628- const icon = $(this).find('i');
629- // Toggle the icon shapes
630- icon.toggleClass('fa-check-double', !newState); // Add 'fa-square-check' when deselected
631- icon.toggleClass('fa-minus', newState); // Add 'fa-square-minus' when selected
632645 });
633646
634647 $('#bulk_enable_regex').on('click', async function () {