Skip to content

Commit

Permalink
resolve #6904 Update a custom drop-down action when a selected item i…
Browse files Browse the repository at this point in the history
…s changed
  • Loading branch information
OlgaLarina committed Sep 15, 2023
1 parent 092f69f commit b478652
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
3 changes: 3 additions & 0 deletions src/actions/action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,9 @@ export function createDropdownActionModelAdvanced(actionOptions: IAction, listOp
const listModel: ListModel = new ListModel(
listOptions.items,
(item: Action) => {
if(newAction.hasTitle) {
newAction.title = item.title;
}
listOptions.onSelectionChanged(item);
innerPopupModel.toggleVisibility();
},
Expand Down
50 changes: 49 additions & 1 deletion tests/components/actionbartests.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Action, ActionDropdownViewModel, IAction } from "../../src/actions/action";
import { Action, ActionDropdownViewModel, IAction, createDropdownActionModel } from "../../src/actions/action";
import { AdaptiveActionContainer } from "../../src/actions/adaptive-container";
import { ActionContainer, defaultActionBarCss } from "../../src/actions/container";
import { LocalizableString } from "../../src/localizablestring";
Expand Down Expand Up @@ -229,3 +229,51 @@ QUnit.test("Dispose dots item and all it content", (assert) => {
assert.equal(model.dotsItem.popupModel.isDisposed, true, "popup model is disposed");
assert.equal(model.dotsItem.data.isDisposed, true, "list model is disposed");
});
QUnit.test("createDropdownActionModel: switch action title", (assert) => {
let items: Array<any> = [];
for (let index = 0; index < 20; index++) {
items[index] = new Action(<IAction>{ id: index.toString(), title: "item" + index });
}

let selectedValue;
const dropdownAction = createDropdownActionModel(
{ title: "Test", showTitle: true },
{ items: items, onSelectionChanged: (item: Action) => { selectedValue = item.id; } }
);
const list: ListModel = dropdownAction.popupModel.contentComponentData.model as ListModel;

assert.equal(selectedValue, undefined);
assert.equal(dropdownAction.title, "Test");

list.onItemClick(items[1]);
assert.equal(selectedValue, "1");
assert.equal(dropdownAction.title, "item1");

list.onItemClick(items[10]);
assert.equal(selectedValue, "10");
assert.equal(dropdownAction.title, "item10");
});
QUnit.test("createDropdownActionModel: title is not changed", (assert) => {
let items: Array<any> = [];
for (let index = 0; index < 20; index++) {
items[index] = new Action(<IAction>{ id: index.toString(), title: "item" + index });
}

let selectedValue;
const dropdownAction = createDropdownActionModel(
{ title: "Test", showTitle: false, iconName: "test-icon" },
{ items: items, onSelectionChanged: (item: Action) => { selectedValue = item.id; } }
);
const list: ListModel = dropdownAction.popupModel.contentComponentData.model as ListModel;

assert.equal(selectedValue, undefined);
assert.equal(dropdownAction.title, "Test");

list.onItemClick(items[1]);
assert.equal(selectedValue, "1");
assert.equal(dropdownAction.title, "Test");

list.onItemClick(items[10]);
assert.equal(selectedValue, "10");
assert.equal(dropdownAction.title, "Test");
});

0 comments on commit b478652

Please sign in to comment.