Skip to content

Commit 93b074d

Browse files
authored
feat(ui5-tabcontainer, ui5-list): automatically focus dropped element (#8455)
BGSOFUIRODOPI-3189
1 parent 74d48e2 commit 93b074d

File tree

5 files changed

+15
-8
lines changed

5 files changed

+15
-8
lines changed

packages/main/src/List.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -971,10 +971,11 @@ class List extends UI5Element {
971971

972972
_ondrop(e: DragEvent) {
973973
e.preventDefault();
974+
const draggedElement = DragRegistry.getDraggedElement()!;
974975

975976
this.fireEvent<ListMoveEventDetail>("move", {
976977
source: {
977-
element: DragRegistry.getDraggedElement()!,
978+
element: draggedElement,
978979
},
979980
destination: {
980981
element: this.dropIndicatorDOM!.targetReference!,
@@ -983,6 +984,7 @@ class List extends UI5Element {
983984
});
984985

985986
this.dropIndicatorDOM!.targetReference = null;
987+
draggedElement.focus();
986988
}
987989

988990
isForwardElement(element: HTMLElement) {

packages/main/src/TabContainer.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -566,10 +566,11 @@ class TabContainer extends UI5Element {
566566

567567
_onHeaderDrop(e: DragEvent) {
568568
e.preventDefault();
569+
const draggedElement = DragRegistry.getDraggedElement()!;
569570

570571
this.fireEvent<TabContainerMoveEventDetail>("move", {
571572
source: {
572-
element: DragRegistry.getDraggedElement()!,
573+
element: draggedElement,
573574
},
574575
destination: {
575576
element: (this.dropIndicatorDOM!.targetReference as Tab).realTabReference,
@@ -578,6 +579,7 @@ class TabContainer extends UI5Element {
578579
});
579580

580581
this.dropIndicatorDOM!.targetReference = null;
582+
draggedElement.focus();
581583
}
582584

583585
_onHeaderDragLeave(e: DragEvent) {
@@ -616,12 +618,13 @@ class TabContainer extends UI5Element {
616618

617619
_onPopoverListMove(e: CustomEvent<ListMoveEventDetail>) {
618620
const { destination } = e.detail;
621+
const draggedElement = DragRegistry.getDraggedElement()!;
619622

620623
e.preventDefault();
621624

622625
this.fireEvent<TabContainerMoveEventDetail>("move", {
623626
source: {
624-
element: DragRegistry.getDraggedElement()!,
627+
element: draggedElement,
625628
},
626629
destination: {
627630
element: (destination.element as Tab).realTabReference,
@@ -630,6 +633,7 @@ class TabContainer extends UI5Element {
630633
}, true);
631634

632635
this.dropIndicatorDOM!.targetReference = null;
636+
draggedElement.focus();
633637
}
634638

635639
async _onTabStripClick(e: Event) {

packages/main/test/pages/ListDragAndDrop.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,6 @@ <h2>Drag and drop</h2>
8282
} else if (destination.placement === "On") {
8383
destination.element.prepend(source.element);
8484
}
85-
86-
source.element.focus();
8785
};
8886

8987
list1.addEventListener("ui5-move-over", list1HandleMoveOver);

packages/main/test/pages/TabContainerDragAndDrop.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,6 @@ <h2>Drag and drop</h2>
135135
} else {
136136
source.element.slot = "";
137137
}
138-
139-
source.element.focus();
140138
});
141139

142140
const densityCb = document.getElementById("density");

packages/main/test/specs/List.spec.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ describe("List drag and drop tests", () => {
679679
const results = await Promise.all(expectedItems.map((item, i) => item.isEqual(listItems[i])));
680680

681681
return results.every(value => value);
682-
}
682+
};
683683

684684
before(async () => {
685685
await browser.url(`test/pages/ListDragAndDrop.html`);
@@ -691,10 +691,12 @@ describe("List drag and drop tests", () => {
691691
let dragOffset = await getDragOffset(firstItem, secondItem, "After");
692692
await firstItem.dragAndDrop({ x: 0, y: dragOffset});
693693
assert.ok(await compareItemsOrder("listDnd1", [secondItem, firstItem, thirdItem]), "Items order has changed");
694+
assert.ok(await firstItem.isFocused(), "Item is focused");
694695

695696
dragOffset = await getDragOffset(firstItem, thirdItem, "After");
696697
await firstItem.dragAndDrop({ x: 0, y: dragOffset});
697698
assert.ok(await compareItemsOrder("listDnd1", [secondItem, thirdItem, firstItem]), "Items order has changed");
699+
assert.ok(await firstItem.isFocused(), "Item is focused");
698700
});
699701

700702
it("Moving item Before another", async () => {
@@ -714,11 +716,13 @@ describe("List drag and drop tests", () => {
714716

715717
await firstItem.dragAndDrop({ x: 0, y: 0 });
716718
assert.ok(await compareItemsOrder("listDnd2", [firstItem, secondItem, thirdItem]), "Items order has NOT changed");
719+
assert.ok(await firstItem.isFocused(), "Item is focused");
717720

718721
const dragOffset = await getDragOffset(firstItem, secondItem);
719722
await firstItem.dragAndDrop({ x: 0, y: dragOffset});
720723
assert.ok(await compareItemsOrder("listDnd2", [secondItem, thirdItem]), "Items order has changed");
721724
assert.ok(await secondItem.$("[ui5-li]").isEqual(firstItem), "First item is nested in second item");
725+
assert.ok(await firstItem.isFocused(), "Item is focused");
722726
});
723727

724728
it("Moving item from one list to another", async () => {
@@ -728,6 +732,7 @@ describe("List drag and drop tests", () => {
728732
const dragOffset = await getDragOffset(listTwoItem, listOneFirstItem, "After");
729733
await listTwoItem.dragAndDrop({ x: 0, y: dragOffset});
730734
assert.ok(await compareItemsOrder("listDnd1", [listOneFirstItem, listTwoItem, listOneSecondItem, listOneThirdItem]), "Items order has changed");
735+
assert.ok(await listTwoItem.isFocused(), "Item is focused");
731736
});
732737

733738
it("Moving link to list that doesn't accept it", async () => {

0 commit comments

Comments
 (0)