From 4c4e4f14ffcddf24149e5028d541a78714cfa0b6 Mon Sep 17 00:00:00 2001 From: Pedro Silva Date: Thu, 7 Sep 2023 16:56:10 +0100 Subject: [PATCH] Add hide/show/enable/disable triggers to button helpers --- .../js/modules/Helper/ButtonDisabler.js | 29 +++++++++++++++++-- .../resources/js/modules/Helper/Hiding.js | 24 +++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/modules/ppcp-button/resources/js/modules/Helper/ButtonDisabler.js b/modules/ppcp-button/resources/js/modules/Helper/ButtonDisabler.js index ae7f3665c..b05a4dc70 100644 --- a/modules/ppcp-button/resources/js/modules/Helper/ButtonDisabler.js +++ b/modules/ppcp-button/resources/js/modules/Helper/ButtonDisabler.js @@ -9,6 +9,24 @@ const getElement = (selectorOrElement) => { return selectorOrElement; } +const triggerEnabled = (selectorOrElement, element) => { + jQuery(document).trigger('ppcp-enabled', { + 'handler': 'ButtonsDisabler.setEnabled', + 'action': 'enable', + 'selector': selectorOrElement, + 'element': element + }); +} + +const triggerDisabled = (selectorOrElement, element) => { + jQuery(document).trigger('ppcp-disabled', { + 'handler': 'ButtonsDisabler.setEnabled', + 'action': 'disable', + 'selector': selectorOrElement, + 'element': element + }); +} + export const setEnabled = (selectorOrElement, enable, form = null) => { const element = getElement(selectorOrElement); @@ -17,7 +35,8 @@ export const setEnabled = (selectorOrElement, enable, form = null) => { } if (enable) { - jQuery(element).css({ + jQuery(element).removeClass('ppcp-disabled') + .css({ 'cursor': '', '-webkit-filter': '', 'filter': '', @@ -25,8 +44,12 @@ export const setEnabled = (selectorOrElement, enable, form = null) => { .off('mouseup') .find('> *') .css('pointer-events', ''); + + triggerEnabled(selectorOrElement, element); + } else { - jQuery(element).css({ + jQuery(element).addClass('ppcp-disabled') + .css({ 'cursor': 'not-allowed', '-webkit-filter': 'grayscale(100%)', 'filter': 'grayscale(100%)', @@ -44,6 +67,8 @@ export const setEnabled = (selectorOrElement, enable, form = null) => { }) .find('> *') .css('pointer-events', 'none'); + + triggerDisabled(selectorOrElement, element); } }; diff --git a/modules/ppcp-button/resources/js/modules/Helper/Hiding.js b/modules/ppcp-button/resources/js/modules/Helper/Hiding.js index 96836de0c..9ffd5a031 100644 --- a/modules/ppcp-button/resources/js/modules/Helper/Hiding.js +++ b/modules/ppcp-button/resources/js/modules/Helper/Hiding.js @@ -9,6 +9,24 @@ const getElement = (selectorOrElement) => { return selectorOrElement; } +const triggerHidden = (handler, selectorOrElement, element) => { + jQuery(document).trigger('ppcp-hidden', { + 'handler': handler, + 'action': 'hide', + 'selector': selectorOrElement, + 'element': element + }); +} + +const triggerShown = (handler, selectorOrElement, element) => { + jQuery(document).trigger('ppcp-shown', { + 'handler': handler, + 'action': 'show', + 'selector': selectorOrElement, + 'element': element + }); +} + export const isVisible = (element) => { return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length); } @@ -27,14 +45,18 @@ export const setVisible = (selectorOrElement, show, important = false) => { } element.style.setProperty('display', 'none', important ? 'important' : ''); + triggerHidden('Hiding.setVisible', selectorOrElement, element); + } else { if (currentValue === 'none') { element.style.removeProperty('display'); + triggerShown('Hiding.setVisible', selectorOrElement, element); } // still not visible (if something else added display: none in CSS) if (!isVisible(element)) { element.style.setProperty('display', 'block'); + triggerShown('Hiding.setVisible', selectorOrElement, element); } } }; @@ -47,8 +69,10 @@ export const setVisibleByClass = (selectorOrElement, show, hiddenClass) => { if (show) { element.classList.remove(hiddenClass); + triggerShown('Hiding.setVisibleByClass', selectorOrElement, element); } else { element.classList.add(hiddenClass); + triggerHidden('Hiding.setVisibleByClass', selectorOrElement, element); } };