@strapi/content-manager 0.0.0-experimental.e9303c99ae3c28b4b8421ab6971efae0748dd599 → 0.0.0-experimental.ea4dae06eba4c664d83b262ac7ba524f09357453

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/LeftMenu.js +34 -30
  6. package/dist/admin/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/components/LeftMenu.mjs +36 -32
  8. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/history/components/VersionContent.js +24 -3
  10. package/dist/admin/history/components/VersionContent.js.map +1 -1
  11. package/dist/admin/history/components/VersionContent.mjs +25 -4
  12. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionHeader.js +6 -0
  14. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  15. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  16. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  17. package/dist/admin/hooks/useDocumentActions.js +12 -4
  18. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  19. package/dist/admin/hooks/useDocumentActions.mjs +12 -4
  20. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  21. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  22. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  23. package/dist/admin/index.js +1 -3
  24. package/dist/admin/index.js.map +1 -1
  25. package/dist/admin/pages/EditView/EditViewPage.js +92 -75
  26. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  27. package/dist/admin/pages/EditView/EditViewPage.mjs +93 -76
  28. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/DocumentActions.js +263 -75
  30. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/DocumentActions.mjs +266 -78
  32. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  34. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  36. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
  38. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  46. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  48. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -2
  50. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -3
  52. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
  54. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
  56. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +128 -55
  58. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +128 -55
  60. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +120 -32
  62. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +124 -36
  64. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
  66. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
  68. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  70. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  72. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  74. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  76. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  78. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  80. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/utils/data.js +103 -0
  82. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  83. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  84. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  85. package/dist/admin/pages/ListView/ListViewPage.js +77 -0
  86. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  87. package/dist/admin/pages/ListView/ListViewPage.mjs +78 -1
  88. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  89. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  90. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  91. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  92. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  93. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  94. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  95. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  96. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  97. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  98. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  99. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  100. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  101. package/dist/admin/services/documents.js +2 -2
  102. package/dist/admin/services/documents.js.map +1 -1
  103. package/dist/admin/services/documents.mjs +2 -2
  104. package/dist/admin/services/documents.mjs.map +1 -1
  105. package/dist/admin/services/homepage.js +8 -4
  106. package/dist/admin/services/homepage.js.map +1 -1
  107. package/dist/admin/services/homepage.mjs +8 -4
  108. package/dist/admin/services/homepage.mjs.map +1 -1
  109. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  110. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  111. package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
  112. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
  113. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  114. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  115. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  116. package/dist/admin/src/services/documents.d.ts +7 -1
  117. package/dist/admin/src/utils/validation.d.ts +1 -0
  118. package/dist/admin/translations/en.json.js +3 -1
  119. package/dist/admin/translations/en.json.js.map +1 -1
  120. package/dist/admin/translations/en.json.mjs +3 -1
  121. package/dist/admin/translations/en.json.mjs.map +1 -1
  122. package/dist/admin/translations/fr.json.js +6 -1
  123. package/dist/admin/translations/fr.json.js.map +1 -1
  124. package/dist/admin/translations/fr.json.mjs +6 -1
  125. package/dist/admin/translations/fr.json.mjs.map +1 -1
  126. package/dist/admin/translations/ru.json.js +235 -226
  127. package/dist/admin/translations/ru.json.js.map +1 -1
  128. package/dist/admin/translations/ru.json.mjs +230 -226
  129. package/dist/admin/translations/ru.json.mjs.map +1 -1
  130. package/dist/admin/utils/validation.js +17 -6
  131. package/dist/admin/utils/validation.js.map +1 -1
  132. package/dist/admin/utils/validation.mjs +17 -6
  133. package/dist/admin/utils/validation.mjs.map +1 -1
  134. package/dist/server/controllers/content-types.js +11 -1
  135. package/dist/server/controllers/content-types.js.map +1 -1
  136. package/dist/server/controllers/content-types.mjs +11 -1
  137. package/dist/server/controllers/content-types.mjs.map +1 -1
  138. package/dist/server/controllers/relations.js +2 -2
  139. package/dist/server/controllers/relations.js.map +1 -1
  140. package/dist/server/controllers/relations.mjs +2 -2
  141. package/dist/server/controllers/relations.mjs.map +1 -1
  142. package/dist/server/controllers/validation/index.js +14 -2
  143. package/dist/server/controllers/validation/index.js.map +1 -1
  144. package/dist/server/controllers/validation/index.mjs +14 -2
  145. package/dist/server/controllers/validation/index.mjs.map +1 -1
  146. package/dist/server/history/services/lifecycles.js +3 -0
  147. package/dist/server/history/services/lifecycles.js.map +1 -1
  148. package/dist/server/history/services/lifecycles.mjs +3 -0
  149. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  150. package/dist/server/services/data-mapper.js +4 -1
  151. package/dist/server/services/data-mapper.js.map +1 -1
  152. package/dist/server/services/data-mapper.mjs +4 -1
  153. package/dist/server/services/data-mapper.mjs.map +1 -1
  154. package/dist/server/services/document-manager.js +8 -1
  155. package/dist/server/services/document-manager.js.map +1 -1
  156. package/dist/server/services/document-manager.mjs +8 -1
  157. package/dist/server/services/document-manager.mjs.map +1 -1
  158. package/dist/server/services/document-metadata.js +3 -1
  159. package/dist/server/services/document-metadata.js.map +1 -1
  160. package/dist/server/services/document-metadata.mjs +3 -1
  161. package/dist/server/services/document-metadata.mjs.map +1 -1
  162. package/dist/server/services/utils/configuration/attributes.js +1 -1
  163. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  164. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  165. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  166. package/dist/server/services/utils/configuration/layouts.js +1 -1
  167. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  168. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  169. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  170. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  171. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  172. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  173. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  174. package/dist/server/services/utils/populate.js +11 -0
  175. package/dist/server/services/utils/populate.js.map +1 -1
  176. package/dist/server/services/utils/populate.mjs +11 -0
  177. package/dist/server/services/utils/populate.mjs.map +1 -1
  178. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  179. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  180. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  181. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  182. package/dist/server/src/index.d.ts +1 -0
  183. package/dist/server/src/index.d.ts.map +1 -1
  184. package/dist/server/src/services/data-mapper.d.ts +1 -0
  185. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  186. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  187. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  188. package/dist/server/src/services/index.d.ts +1 -0
  189. package/dist/server/src/services/index.d.ts.map +1 -1
  190. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  191. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  192. package/dist/shared/contracts/collection-types.d.ts +0 -1
  193. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  194. package/package.json +11 -8
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useForm, useField, useNotification, useFocusInputField } from '@strapi/admin/strapi-admin';
4
- import { Flex, Box, Link, TextButton, Field, Combobox, ComboboxOption, Typography, VisuallyHidden, useComposedRefs, IconButton } from '@strapi/design-system';
5
- import { ArrowClockwise, Drag, Cross } from '@strapi/icons';
3
+ import { useForm, useField, useNotification, useRBAC, useFocusInputField } from '@strapi/admin/strapi-admin';
4
+ import { Flex, Box, Link, TextButton, EmptyStateLayout, Field, Combobox, ComboboxOption, Typography, VisuallyHidden, useComposedRefs, IconButton } from '@strapi/design-system';
5
+ import { ArrowClockwise, WarningCircle, Plus, Link as Link$1, Drag, Cross } from '@strapi/icons';
6
6
  import { generateNKeysBetween } from 'fractional-indexing';
7
7
  import pipe from 'lodash/fp/pipe';
8
8
  import { getEmptyImage } from 'react-dnd-html5-backend';
@@ -11,6 +11,8 @@ import { FixedSizeList } from 'react-window';
11
11
  import { styled } from 'styled-components';
12
12
  import { COLLECTION_TYPES } from '../../../../../constants/collections.mjs';
13
13
  import { ItemTypes } from '../../../../../constants/dragAndDrop.mjs';
14
+ import { PERMISSIONS } from '../../../../../constants/plugin.mjs';
15
+ import { DocumentRBAC, useDocumentRBAC } from '../../../../../features/DocumentRBAC.mjs';
14
16
  import { useDebounce } from '../../../../../hooks/useDebounce.mjs';
15
17
  import { useDocument } from '../../../../../hooks/useDocument.mjs';
16
18
  import { useDocumentContext } from '../../../../../hooks/useDocumentContext.mjs';
@@ -20,7 +22,7 @@ import { getRelationLabel } from '../../../../../utils/relations.mjs';
20
22
  import { getTranslation } from '../../../../../utils/translations.mjs';
21
23
  import { DocumentStatus } from '../../DocumentStatus.mjs';
22
24
  import { useComponent } from '../ComponentContext.mjs';
23
- import { getCollectionType, RelationModal } from './RelationModal.mjs';
25
+ import { RelationModalRenderer, getCollectionType } from './RelationModal.mjs';
24
26
 
25
27
  /**
26
28
  * Remove a relation, whether it's been already saved or not.
@@ -96,8 +98,9 @@ const ONE_WAY_RELATIONS = [
96
98
  /**
97
99
  * We'll always have a documentId in a created entry, so we look for a componentId first.
98
100
  * Same with `uid` and `documentModel`.
101
+ * The componentId is empty when adding a new component in a repeatable. Let it be null to skip isRelatedToCurrentDocument
99
102
  */ const model = component ? component.uid : currentDocumentMeta.model;
100
- const id = component && componentId ? componentId.toString() : documentId;
103
+ const id = component ? componentId?.toString() : documentId;
101
104
  /**
102
105
  * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.
103
106
  * Where the above example would a nested field within two components, however
@@ -306,7 +309,6 @@ const ONE_WAY_RELATIONS = [
306
309
  * @description Contains all the logic for the combobox that can search
307
310
  * for relations and then add them to the field's connect array.
308
311
  */ const RelationsInput = ({ hint, id, model, label, labelAction, name, mainField, placeholder, required, unique: _unique, 'aria-label': _ariaLabel, onChange, isRelatedToCurrentDocument, ...props })=>{
309
- const [textValue, setTextValue] = React.useState('');
310
312
  const [searchParams, setSearchParams] = React.useState({
311
313
  _q: '',
312
314
  page: 1
@@ -314,7 +316,6 @@ const ONE_WAY_RELATIONS = [
314
316
  const { toggleNotification } = useNotification();
315
317
  const { currentDocumentMeta } = useDocumentContext('RelationsInput');
316
318
  const { formatMessage } = useIntl();
317
- const fieldRef = useFocusInputField(name);
318
319
  const field = useField(name);
319
320
  const searchParamsDebounced = useDebounce(searchParams, 300);
320
321
  const [searchForTrigger, { data, isLoading }] = useLazySearchRelationsQuery();
@@ -355,13 +356,6 @@ const ONE_WAY_RELATIONS = [
355
356
  isRelatedToCurrentDocument,
356
357
  currentDocumentMeta.params
357
358
  ]);
358
- const handleSearch = async (search)=>{
359
- setSearchParams((s)=>({
360
- ...s,
361
- _q: search,
362
- page: 1
363
- }));
364
- };
365
359
  const hasNextPage = data?.pagination ? data.pagination.page < data.pagination.pageCount : false;
366
360
  const options = data?.results ?? [];
367
361
  const handleChange = (relationId)=>{
@@ -389,6 +383,74 @@ const ONE_WAY_RELATIONS = [
389
383
  *
390
384
  */ onChange(relation);
391
385
  };
386
+ const relation = {
387
+ collectionType: COLLECTION_TYPES,
388
+ // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.
389
+ model: props.attribute.targetModel,
390
+ documentId: '',
391
+ params: currentDocumentMeta.params
392
+ };
393
+ const { permissions = [], isLoading: isLoadingPermissions, error } = useRBAC(PERMISSIONS.map((action)=>({
394
+ action,
395
+ subject: relation.model
396
+ })));
397
+ if (error) {
398
+ return /*#__PURE__*/ jsx(Flex, {
399
+ alignItems: "center",
400
+ height: "100%",
401
+ justifyContent: "center",
402
+ children: /*#__PURE__*/ jsx(EmptyStateLayout, {
403
+ icon: /*#__PURE__*/ jsx(WarningCircle, {
404
+ width: "16rem"
405
+ }),
406
+ content: formatMessage({
407
+ id: 'anErrorOccurred',
408
+ defaultMessage: 'Whoops! Something went wrong. Please, try again.'
409
+ })
410
+ })
411
+ });
412
+ }
413
+ return /*#__PURE__*/ jsxs(Field.Root, {
414
+ error: field.error,
415
+ hint: hint,
416
+ name: name,
417
+ required: required,
418
+ children: [
419
+ /*#__PURE__*/ jsx(Field.Label, {
420
+ action: labelAction,
421
+ children: label
422
+ }),
423
+ /*#__PURE__*/ jsx(DocumentRBAC, {
424
+ permissions: permissions,
425
+ model: relation.model,
426
+ children: /*#__PURE__*/ jsx(RelationModalWithContext, {
427
+ relation: relation,
428
+ name: name,
429
+ placeholder: placeholder,
430
+ hasNextPage: hasNextPage,
431
+ isLoadingPermissions: isLoadingPermissions,
432
+ isLoadingSearchRelations: isLoading,
433
+ handleChange: handleChange,
434
+ setSearchParams: setSearchParams,
435
+ data: data,
436
+ mainField: mainField,
437
+ fieldValue: field.value,
438
+ ...props
439
+ })
440
+ }),
441
+ /*#__PURE__*/ jsx(Field.Error, {}),
442
+ /*#__PURE__*/ jsx(Field.Hint, {})
443
+ ]
444
+ });
445
+ };
446
+ const RelationModalWithContext = ({ relation, name, placeholder, hasNextPage, isLoadingSearchRelations, isLoadingPermissions, handleChange, mainField, setSearchParams, fieldValue, data, ...props })=>{
447
+ const [textValue, setTextValue] = React.useState('');
448
+ const { formatMessage } = useIntl();
449
+ const canCreate = useDocumentRBAC('RelationModalWrapper', (state)=>state.canCreate);
450
+ const fieldRef = useFocusInputField(name);
451
+ const { componentUID } = useComponent('RelationsField', ({ uid })=>({
452
+ componentUID: uid
453
+ }));
392
454
  const handleLoadMore = ()=>{
393
455
  if (!data || !data.pagination) {
394
456
  return;
@@ -399,23 +461,44 @@ const ONE_WAY_RELATIONS = [
399
461
  }));
400
462
  }
401
463
  };
464
+ const options = data?.results ?? [];
402
465
  React.useLayoutEffect(()=>{
403
466
  setTextValue('');
404
467
  }, [
405
- field.value
468
+ fieldValue
406
469
  ]);
407
- return /*#__PURE__*/ jsxs(Field.Root, {
408
- error: field.error,
409
- hint: hint,
410
- name: name,
411
- required: required,
412
- children: [
413
- /*#__PURE__*/ jsx(Field.Label, {
414
- action: labelAction,
415
- children: label
416
- }),
417
- /*#__PURE__*/ jsx(Combobox, {
470
+ const handleSearch = async (search)=>{
471
+ setSearchParams((s)=>({
472
+ ...s,
473
+ _q: search,
474
+ page: 1
475
+ }));
476
+ };
477
+ return /*#__PURE__*/ jsx(RelationModalRenderer, {
478
+ children: ({ dispatch })=>/*#__PURE__*/ jsx(Combobox, {
418
479
  ref: fieldRef,
480
+ creatable: "visible",
481
+ creatableDisabled: !canCreate,
482
+ createMessage: ()=>formatMessage({
483
+ id: getTranslation('relation.create'),
484
+ defaultMessage: 'Create a relation'
485
+ }),
486
+ onCreateOption: ()=>{
487
+ if (canCreate) {
488
+ dispatch({
489
+ type: 'GO_TO_RELATION',
490
+ payload: {
491
+ document: relation,
492
+ shouldBypassConfirmation: false,
493
+ fieldToConnect: name,
494
+ fieldToConnectUID: componentUID
495
+ }
496
+ });
497
+ }
498
+ },
499
+ creatableStartIcon: /*#__PURE__*/ jsx(Plus, {
500
+ fill: "neutral500"
501
+ }),
419
502
  name: name,
420
503
  autocomplete: "list",
421
504
  placeholder: placeholder || formatMessage({
@@ -423,7 +506,7 @@ const ONE_WAY_RELATIONS = [
423
506
  defaultMessage: 'Add relation'
424
507
  }),
425
508
  hasMoreItems: hasNextPage,
426
- loading: isLoading,
509
+ loading: isLoadingSearchRelations || isLoadingPermissions,
427
510
  onOpenChange: ()=>{
428
511
  handleSearch(textValue ?? '');
429
512
  },
@@ -445,7 +528,7 @@ const ONE_WAY_RELATIONS = [
445
528
  handleSearch(event.currentTarget.value);
446
529
  },
447
530
  ...props,
448
- children: options.map((opt)=>{
531
+ children: options?.map((opt)=>{
449
532
  const textValue = getRelationLabel(opt, mainField);
450
533
  return /*#__PURE__*/ jsx(ComboboxOption, {
451
534
  value: opt.id.toString(),
@@ -454,9 +537,17 @@ const ONE_WAY_RELATIONS = [
454
537
  gap: 2,
455
538
  justifyContent: "space-between",
456
539
  children: [
457
- /*#__PURE__*/ jsx(Typography, {
458
- ellipsis: true,
459
- children: textValue
540
+ /*#__PURE__*/ jsxs(Flex, {
541
+ gap: 2,
542
+ children: [
543
+ /*#__PURE__*/ jsx(Link$1, {
544
+ fill: "neutral500"
545
+ }),
546
+ /*#__PURE__*/ jsx(Typography, {
547
+ ellipsis: true,
548
+ children: textValue
549
+ })
550
+ ]
460
551
  }),
461
552
  opt.status ? /*#__PURE__*/ jsx(DocumentStatus, {
462
553
  status: opt.status
@@ -465,10 +556,7 @@ const ONE_WAY_RELATIONS = [
465
556
  })
466
557
  }, opt.id);
467
558
  })
468
- }),
469
- /*#__PURE__*/ jsx(Field.Error, {}),
470
- /*#__PURE__*/ jsx(Field.Hint, {})
471
- ]
559
+ })
472
560
  });
473
561
  };
474
562
  /* -------------------------------------------------------------------------------------------------
@@ -785,7 +873,7 @@ const ListItem = ({ data, index, style })=>{
785
873
  minWidth: 0,
786
874
  paddingTop: 1,
787
875
  paddingBottom: 1,
788
- children: /*#__PURE__*/ jsx(RelationModal, {
876
+ children: /*#__PURE__*/ jsx(RelationModalRenderer, {
789
877
  relation: documentMeta,
790
878
  children: label
791
879
  })