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() {
28}28}
2929
30/**30/**
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 */
36function 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/**
31 * Saves a regex script to the extension settings or character data.43 * Saves a regex script to the extension settings or character data.
32 * @param {import('../../char-data.js').RegexScriptData} regexScript44 * @param {import('../../char-data.js').RegexScriptData} regexScript
33 * @param {number} existingScriptIndex Index of the existing script45 * @param {number} existingScriptIndex Index of the existing script
@@ -183,6 +195,11 @@ async function loadRegexScripts() {
183 await deleteRegexScript({ id: script.id, isScoped });195 await deleteRegexScript({ id: script.id, isScoped });
184 await reloadCurrentChat();196 await reloadCurrentChat();
185 });197 });
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
187 $(container).append(scriptHtml);204 $(container).append(scriptHtml);
188 }205 }
@@ -624,11 +641,7 @@ jQuery(async () => {
624 const newState = !allAreChecked; // true if we just checked all, false if we just unchecked all641 const newState = !allAreChecked; // true if we just checked all, false if we just unchecked all
625642
626 checkboxes.prop('checked', newState);643 checkboxes.prop('checked', newState);
627644 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
632 });645 });
633646
634 $('#bulk_enable_regex').on('click', async function () {647 $('#bulk_enable_regex').on('click', async function () {