From 440049978b7a5d6c34e14b910626d8d9eaef86bc Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Mon, 31 Aug 2026 09:09:10 -0700
Subject: [PATCH] Fix: add disable to the drag-drop list component (#13880)
---
.../drag-drop-select.component.html | 2 ++
.../drag-drop-select.component.scss | 8 ++++++
.../drag-drop-select.component.spec.ts | 25 +++++++++++++++++++
.../drag-drop-select.component.ts | 2 ++
4 files changed, 37 insertions(+)
diff --git a/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.html b/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.html
index a04286465..36455ccb8 100644
--- a/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.html
+++ b/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.html
@@ -3,6 +3,7 @@
@for (item of selectedItems; track item.id) {
@@ -17,6 +18,7 @@
@for (item of unselectedItems; track item.id) {
diff --git a/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.scss b/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.scss
index 483c6c592..96fa24632 100644
--- a/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.scss
+++ b/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.scss
@@ -1,3 +1,11 @@
.badge {
cursor: move;
}
+
+.cdk-drop-list-disabled {
+ cursor: not-allowed !important;
+
+ * {
+ pointer-events: none !important;
+ }
+}
diff --git a/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.spec.ts b/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.spec.ts
index 9f30fc44a..82bf274d6 100644
--- a/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.spec.ts
+++ b/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.spec.ts
@@ -98,4 +98,29 @@ describe('DragDropSelectComponent', () => {
{ id: '3', name: 'Item 3' },
])
})
+
+ it('should disable drag and drop when the control is disabled', () => {
+ component.items = [
+ { id: '1', name: 'Item 1' },
+ { id: '2', name: 'Item 2' },
+ ]
+ component.writeValue(['1', '2'])
+ component.setDisabledState(true)
+ fixture.detectChanges()
+
+ expect(component.selectedList.disabled).toBe(true)
+ expect(component.unselectedList.disabled).toBe(true)
+
+ component.drop({
+ previousContainer: component.selectedList,
+ container: component.selectedList,
+ previousIndex: 0,
+ currentIndex: 1,
+ } as any)
+
+ expect(component.selectedItems).toEqual([
+ { id: '1', name: 'Item 1' },
+ { id: '2', name: 'Item 2' },
+ ])
+ })
})
diff --git a/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts b/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts
index a27100a68..08a779181 100644
--- a/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts
+++ b/src-ui/src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts
@@ -46,6 +46,8 @@ export class DragDropSelectComponent extends AbstractInputComponent {
}
public drop(event: CdkDragDrop) {
+ if (this.disabled) return
+
if (
event.previousContainer === event.container &&
event.container === this.selectedList