From 286d0d1794d4c9d4c4db151897b102b95c5799c0 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Mon, 13 Aug 2018 23:52:10 +1000 Subject: [PATCH] Fix for pressed property missing with custom controls (Fixes #1062) --- src/js/controls.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/js/controls.js b/src/js/controls.js index 9152f338..d8de2632 100644 --- a/src/js/controls.js +++ b/src/js/controls.js @@ -275,18 +275,6 @@ const controls = { this.elements.buttons[type] = button; } - // Toggle classname when pressed property is set - const className = this.config.classNames.controlPressed; - Object.defineProperty(button, 'pressed', { - enumerable: true, - get() { - return hasClass(button, className); - }, - set(pressed = false) { - toggleClass(button, className, pressed); - }, - }); - return button; }, @@ -1620,6 +1608,23 @@ const controls = { controls.findElements.call(this); } + // Add pressed property to buttons + if (!is.empty(this.elements.buttons)) { + // Toggle classname when pressed property is set + Object.values(this.elements.buttons).forEach(button => { + const className = this.config.classNames.controlPressed; + Object.defineProperty(button, 'pressed', { + enumerable: true, + get() { + return hasClass(button, className); + }, + set(pressed = false) { + toggleClass(button, className, pressed); + }, + }); + }); + } + // Edge sometimes doesn't finish the paint so force a redraw if (window.navigator.userAgent.includes('Edge')) { repaint(target);