@@ -30,6 +30,10 @@ interface IDraggableList
30
30
| "onSelectionChange"
31
31
> {
32
32
items : ListItem [ ] ;
33
+ /** Flag to disable drag operations in list. */
34
+ dragDisabled ?: boolean ;
35
+ /** Flag to disable delete operations in list. */
36
+ deletionDisabled ?: boolean ;
33
37
/** Returns the updated list after a delete or move operation. */
34
38
updateCallback ?: ( updatedItems : ListItem [ ] ) => void ;
35
39
/** Returns the selected item. */
@@ -45,6 +49,8 @@ function DraggableList({
45
49
selectionCallback,
46
50
className,
47
51
renderDragPreview,
52
+ dragDisabled = false ,
53
+ deletionDisabled = false ,
48
54
...props
49
55
} : Readonly < IDraggableList > ) {
50
56
const list = useListData ( {
@@ -76,7 +82,7 @@ function DraggableList({
76
82
aria-label = { props [ "aria-label" ] ?? "Reorderable list" }
77
83
selectionMode = "single"
78
84
items = { list . items }
79
- dragAndDropHooks = { dragAndDropHooks }
85
+ dragAndDropHooks = { dragDisabled ? undefined : dragAndDropHooks }
80
86
onSelectionChange = { ( keys ) => {
81
87
const keyArr = Array . from ( keys ) ;
82
88
const selectedItem = list . getItem ( keyArr [ 0 ] ) ;
@@ -106,11 +112,13 @@ function DraggableList({
106
112
>
107
113
{ ( { isHovered } ) => (
108
114
< >
109
- < DragAndDropIcon className = "size-4 cursor-grab" />
115
+ { dragDisabled ? null : (
116
+ < DragAndDropIcon className = "size-4 cursor-grab" />
117
+ ) }
110
118
< span className = "text-klerosUIComponentsPrimaryText flex-1 text-base" >
111
119
{ item . name }
112
120
</ span >
113
- { isHovered ? (
121
+ { isHovered && ! deletionDisabled ? (
114
122
< Button
115
123
className = { "cursor-pointer hover:scale-105" }
116
124
onPress = { ( ) => {
0 commit comments