Skip to content

Commit 2497d32

Browse files
Stepper: fix selected item after selection cancelled and item is updated (DevExpress#29785)
1 parent f4cb036 commit 2497d32

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

packages/devextreme/js/__internal/ui/stepper/stepper.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,12 @@ class Stepper extends CollectionWidgetAsync<StepperProperties> {
236236
return STEP_SELECTED_CLASS;
237237
}
238238

239+
_isItemSelected(index: number): boolean {
240+
const { items = [], selectedItem } = this.option();
241+
242+
return selectedItem === items[index];
243+
}
244+
239245
_itemDataKey(): string {
240246
return STEPPER_ITEM_DATA_KEY;
241247
}

packages/devextreme/testing/tests/DevExpress.ui.widgets/stepper.markup.tests.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,23 @@ QUnit.module('Stepper markup', moduleConfig, () => {
114114
assert.strictEqual(this.getStepByIndex(2).hasClass(STEP_SELECTED_CLASS), true);
115115
});
116116

117+
QUnit.test(`Selected step should have ${STEP_SELECTED_CLASS} class after change selectionChanging was cancelled and Step.isValid changed`, function(assert) {
118+
this.reinit({
119+
items: [{}, {}, {}],
120+
selectedIndex: 0,
121+
onSelectionChanging: (e) => {
122+
e.cancel = true;
123+
e.component.option('items[0].isValid', false);
124+
},
125+
});
126+
127+
this.getStepByIndex(1).trigger('dxclick');
128+
129+
assert.strictEqual(this.getStepByIndex(0).hasClass(STEP_SELECTED_CLASS), true, 'First step has selected class');
130+
assert.strictEqual(this.getStepByIndex(1).hasClass(STEP_SELECTED_CLASS), false, 'Second step has not selected class');
131+
assert.strictEqual(this.getStepByIndex(2).hasClass(STEP_SELECTED_CLASS), false, 'Third step has not selected class');
132+
});
133+
117134
QUnit.module('Completed steps', () => {
118135
QUnit.test(`Steps before selected should have ${STEP_COMPLETED_CLASS} class by default`, function(assert) {
119136
this.reinit({

0 commit comments

Comments
 (0)