Skip to content

Commit e5ffbb9

Browse files
authored
InfernoWidget: fix restore classes in rerender (T1308601) (DevExpress#31192)
1 parent 61d6b3f commit e5ffbb9

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

e2e/testcafe-devextreme/tests/navigation/buttonGroup/selection.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,39 @@ test('selected class should not be added to the button after hovering (T1222079)
3535
selectedItemKeys: ['Button_1'],
3636
disabled: true,
3737
}));
38+
test('selected class should be set after reenabling (T1308601)', async (t) => {
39+
const buttonGroup = new ButtonGroup('#container');
40+
41+
await buttonGroup.option('disabled', true);
42+
await buttonGroup.option('disabled', false);
43+
44+
await t
45+
.click(buttonGroup.getItem(1).element);
46+
47+
await buttonGroup.option('disabled', true);
48+
await buttonGroup.option('disabled', false);
49+
50+
await t
51+
.click(buttonGroup.getItem(0).element);
52+
53+
await t
54+
.expect(buttonGroup.getItem(0).isSelected)
55+
.ok()
56+
.expect(buttonGroup.isItemSelected(0))
57+
.ok();
58+
59+
await t
60+
.hover(buttonGroup.getItem(1).element);
61+
62+
await t
63+
.expect(buttonGroup.getItem(0).isSelected)
64+
.ok()
65+
.expect(buttonGroup.isItemSelected(0))
66+
.ok();
67+
}).before(async () => createWidget('dxButtonGroup', {
68+
items: [
69+
{ text: 'Button_1' },
70+
{ text: 'Button_2' },
71+
],
72+
selectedItemKeys: ['Button_1'],
73+
}));

packages/devextreme/js/__internal/core/r1/runtime/inferno/base_component.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ export class InfernoWrapperComponent<
118118
const indexInRemoved = el.dxClasses.removed.indexOf(value);
119119
if (indexInRemoved > -1) {
120120
el.dxClasses.removed.splice(indexInRemoved, 1);
121-
} else if (!el.dxClasses.added.includes(value)) {
121+
}
122+
if (!el.dxClasses.added.includes(value)) {
122123
el.dxClasses.added.push(value);
123124
}
124125
});
@@ -127,7 +128,8 @@ export class InfernoWrapperComponent<
127128
const indexInAdded = el.dxClasses.added.indexOf(value);
128129
if (indexInAdded > -1) {
129130
el.dxClasses.added.splice(indexInAdded, 1);
130-
} else if (!el.dxClasses.removed.includes(value)) {
131+
}
132+
if (!el.dxClasses.removed.includes(value)) {
131133
el.dxClasses.removed.push(value);
132134
}
133135
});

0 commit comments

Comments
 (0)