diff options
Diffstat (limited to 'js/src/button.js')
-rw-r--r-- | js/src/button.js | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/js/src/button.js b/js/src/button.js index d793785829..c95013a98c 100644 --- a/js/src/button.js +++ b/js/src/button.js @@ -46,6 +46,7 @@ const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}` class Button { constructor(element) { this._element = element + this.shouldAvoidTriggerChange = false } // Getters @@ -83,7 +84,9 @@ class Button { input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE) } - $(input).trigger('change') + if (!this.shouldAvoidTriggerChange) { + $(input).trigger('change') + } } input.focus() @@ -109,7 +112,7 @@ class Button { // Static - static _jQueryInterface(config) { + static _jQueryInterface(config, avoidTriggerChange) { return this.each(function () { const $element = $(this) let data = $element.data(DATA_KEY) @@ -119,6 +122,8 @@ class Button { $element.data(DATA_KEY, data) } + data.shouldAvoidTriggerChange = avoidTriggerChange + if (config === 'toggle') { data[config]() } @@ -151,8 +156,8 @@ $(document) return } - if (initialButton.tagName !== 'LABEL' || inputBtn && inputBtn.type !== 'checkbox') { - Button._jQueryInterface.call($(button), 'toggle') + if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') { + Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT') } } }) |