From ed4d46fb594cca39ed1cb22d7419252aa89a90aa Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 28 Sep 2019 12:46:32 -0400 Subject: [PATCH] Remove classes when set to false Fixes #253 --- src/js/tether.js | 5 ++++- test/unit/tether.spec.js | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/js/tether.js b/src/js/tether.js index f74710f1e..d112d57da 100644 --- a/src/js/tether.js +++ b/src/js/tether.js @@ -112,7 +112,10 @@ class TetherClass extends Evented { getClass(key = '') { const { classes } = this.options; - if (typeof classes !== 'undefined' && classes[key]) { + if (typeof classes !== 'undefined' && typeof classes[key] !== 'undefined') { + if (classes[key] === false) { + return ''; + } return this.options.classes[key]; } else if (this.options.classPrefix) { return `${this.options.classPrefix}-${key}`; diff --git a/test/unit/tether.spec.js b/test/unit/tether.spec.js index ef9611e2a..0193e5285 100644 --- a/test/unit/tether.spec.js +++ b/test/unit/tether.spec.js @@ -136,5 +136,39 @@ describe('Tether', () => { expect(element.classList.length, 'element - destroy sets classes back to initial state').toEqual(1); expect(target.classList.length, 'target - destroy sets classes back to initial state').toEqual(1); }); + + it('removes classes when false', () => { + expect(element.classList.length, 'element - only one class').toEqual(1); + expect(target.classList.length, 'target - only one class').toEqual(1); + const tether = new Tether({ + element: '.element', + target: '.target', + attachment: 'top left', + targetAttachment: 'top right', + classes: { + element: false, + enabled: false, + target: false + } + }); + + tether.enable(); + + expect(element.classList.length, 'element - classes added').toEqual(10); + expect(element).not.toHaveClass('tether-element'); + expect(element).not.toHaveClass('tether-enabled'); + + expect(target.classList.length, 'target - classes added').toEqual(10); + expect(target).not.toHaveClass('tether-target'); + expect(element).not.toHaveClass('tether-enabled'); + + expect(tether.getClass('element')).toBe(''); + expect(tether.getClass('target')).toBe(''); + + tether.destroy(); + + expect(element.classList.length, 'element - destroy sets classes back to initial state').toEqual(1); + expect(target.classList.length, 'target - destroy sets classes back to initial state').toEqual(1); + }); }); });