@@ -66,6 +66,7 @@ export interface DirectoryItemsInputProps {
66
66
onRowChanged ?: ( a : boolean ) => void ;
67
67
onChange ?: ( e : any ) => void ;
68
68
disable ?: boolean ;
69
+ allowMultiSelect ?: boolean ;
69
70
labelRequiredFromContext ?: boolean ;
70
71
}
71
72
@@ -80,13 +81,14 @@ export function DirectoryItemsInput({
80
81
onRowChanged,
81
82
onChange,
82
83
disable = false ,
84
+ allowMultiSelect = true ,
83
85
labelRequiredFromContext = true ,
84
- } : DirectoryItemsInputProps ) {
86
+ } : Readonly < DirectoryItemsInputProps > ) {
85
87
const { snackError } = useSnackMessage ( ) ;
86
88
const intl = useIntl ( ) ;
87
89
const [ selected , setSelected ] = useState < UUID [ ] > ( [ ] ) ;
88
90
const [ expanded , setExpanded ] = useState < UUID [ ] > ( [ ] ) ;
89
- const [ multiSelect , setMultiSelect ] = useState ( true ) ;
91
+ const [ multiSelect , setMultiSelect ] = useState ( allowMultiSelect ) ;
90
92
const types = useMemo ( ( ) => [ elementType ] , [ elementType ] ) ;
91
93
const [ directoryItemSelectorOpen , setDirectoryItemSelectorOpen ] = useState ( false ) ;
92
94
const {
@@ -165,6 +167,10 @@ export function DirectoryItemsInput({
165
167
[ getValues , name ]
166
168
) ;
167
169
170
+ const shouldReplaceElement = useMemo ( ( ) => {
171
+ return allowMultiSelect === false && elements ?. length === 1 ;
172
+ } , [ allowMultiSelect , elements ] ) ;
173
+
168
174
return (
169
175
< >
170
176
< FormControl
@@ -208,8 +214,14 @@ export function DirectoryItemsInput({
208
214
size = "small"
209
215
disabled = { disable }
210
216
onClick = { ( ) => {
211
- setDirectoryItemSelectorOpen ( true ) ;
212
- setMultiSelect ( true ) ;
217
+ if ( shouldReplaceElement ) {
218
+ handleChipClick ( 0 ) ;
219
+ } else {
220
+ setDirectoryItemSelectorOpen ( true ) ;
221
+ if ( allowMultiSelect ) {
222
+ setMultiSelect ( true ) ;
223
+ }
224
+ }
213
225
} }
214
226
>
215
227
< FolderIcon />
0 commit comments