From 66e38d89018d11fe8902de8fe552155807ae63c5 Mon Sep 17 00:00:00 2001 From: William DA SILVA Date: Mon, 18 Nov 2024 10:45:21 +0100 Subject: [PATCH] fix: ensure the pointer init class is removed when updating locked status --- .../src/dom_components/view/ComponentView.ts | 2 +- .../specs/dom_components/view/ComponentView.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/core/src/dom_components/view/ComponentView.ts b/packages/core/src/dom_components/view/ComponentView.ts index 0b17c95608..610213f81e 100644 --- a/packages/core/src/dom_components/view/ComponentView.ts +++ b/packages/core/src/dom_components/view/ComponentView.ts @@ -241,7 +241,7 @@ TComp> { const hoveredCls = `${ppfx}hovered`; const noPointerCls = `${ppfx}no-pointer`; const pointerInitCls = `${ppfx}pointer-init`; - const toRemove = [selectedCls, selectedParentCls, freezedCls, hoveredCls, noPointerCls]; + const toRemove = [selectedCls, selectedParentCls, freezedCls, hoveredCls, noPointerCls, pointerInitCls]; const selCls = extHl && !opts.noExtHl ? '' : selectedCls; this.$el.removeClass(toRemove.join(' ')); const actualCls = el.getAttribute('class') || ''; diff --git a/packages/core/test/specs/dom_components/view/ComponentView.ts b/packages/core/test/specs/dom_components/view/ComponentView.ts index 37de21f7d9..8f0ae1e200 100644 --- a/packages/core/test/specs/dom_components/view/ComponentView.ts +++ b/packages/core/test/specs/dom_components/view/ComponentView.ts @@ -143,4 +143,20 @@ describe('ComponentView', () => { const result = model.getAttributes(); expect(result.class).toEqual(undefined); }); + + test('updateStatus removes previous classes and adds new ones', () => { + model.addClass('selected'); + + model.set('locked', true); + view.updateStatus(); + expect(view.el.getAttribute('class')).toEqual('no-pointer'); + + model.set('locked', false); + view.updateStatus(); + expect(view.el.getAttribute('class')).toEqual('pointer-init'); + + model.set('locked'); + view.updateStatus(); + expect(view.el.getAttribute('class')).toEqual(''); + }); });