@@ -25,6 +25,7 @@ import {ContextMenuButton} from '../../../components/contextMenuButton'
25
25
import { LoadingBlock } from '../../../components/loadingBlock'
26
26
import { useTranslation } from '../../../i18n'
27
27
import { FieldPresence } from '../../../presence'
28
+ import { EMPTY_ARRAY } from '../../../util/empty'
28
29
import { FormFieldSet , FormFieldValidationStatus } from '../../components/formField'
29
30
import { useDidUpdate } from '../../hooks/useDidUpdate'
30
31
import { useScrollIntoViewOnFocusWithin } from '../../hooks/useScrollIntoViewOnFocusWithin'
@@ -210,6 +211,8 @@ export function ReferenceItem<Item extends ReferenceItemValue = ReferenceItemVal
210
211
referenceElement : contextMenuButtonElement ,
211
212
} )
212
213
214
+ const disableActions = parentSchemaType . options ?. disableActions || EMPTY_ARRAY
215
+
213
216
const menu = useMemo (
214
217
( ) =>
215
218
readOnly ? null : (
@@ -230,12 +233,14 @@ export function ReferenceItem<Item extends ReferenceItemValue = ReferenceItemVal
230
233
< Menu ref = { menuRef } >
231
234
{ ! readOnly && (
232
235
< >
233
- < MenuItem
234
- text = { t ( 'inputs.reference.action.remove' ) }
235
- tone = "critical"
236
- icon = { TrashIcon }
237
- onClick = { onRemove }
238
- />
236
+ { ! disableActions . includes ( 'remove' ) && (
237
+ < MenuItem
238
+ text = { t ( 'inputs.reference.action.remove' ) }
239
+ tone = "critical"
240
+ icon = { TrashIcon }
241
+ onClick = { onRemove }
242
+ />
243
+ ) }
239
244
< MenuItem
240
245
text = { t (
241
246
hasRef && isEditing
@@ -245,18 +250,25 @@ export function ReferenceItem<Item extends ReferenceItemValue = ReferenceItemVal
245
250
icon = { hasRef && isEditing ? CloseIcon : ReplaceIcon }
246
251
onClick = { handleReplace }
247
252
/>
248
- < MenuItem
249
- text = { t ( 'inputs.reference.action.copy' ) }
250
- icon = { CopyIcon }
251
- onClick = { handleCopy }
252
- />
253
- < MenuItem
254
- text = { t ( 'inputs.reference.action.duplicate' ) }
255
- icon = { AddDocumentIcon }
256
- onClick = { handleDuplicate }
257
- />
258
- { insertBefore . menuItem }
259
- { insertAfter . menuItem }
253
+ { ! disableActions . includes ( 'copy' ) && (
254
+ < MenuItem
255
+ text = { t ( 'inputs.reference.action.copy' ) }
256
+ icon = { CopyIcon }
257
+ onClick = { handleCopy }
258
+ />
259
+ ) }
260
+ { ! disableActions . includes ( 'duplicate' ) && (
261
+ < MenuItem
262
+ text = { t ( 'inputs.reference.action.duplicate' ) }
263
+ icon = { AddDocumentIcon }
264
+ onClick = { handleDuplicate }
265
+ />
266
+ ) }
267
+ { ! ( disableActions . includes ( 'add' ) || disableActions . includes ( 'addBefore' ) ) &&
268
+ insertBefore . menuItem }
269
+ { ! disableActions . includes ( 'add' ) &&
270
+ ! disableActions . includes ( 'addAfter' ) &&
271
+ insertAfter . menuItem }
260
272
</ >
261
273
) }
262
274
@@ -279,6 +291,7 @@ export function ReferenceItem<Item extends ReferenceItemValue = ReferenceItemVal
279
291
) ,
280
292
[
281
293
OpenLink ,
294
+ disableActions ,
282
295
handleCopy ,
283
296
handleDuplicate ,
284
297
handleReplace ,
0 commit comments