@webiny/app-headless-cms 5.33.5-beta.0 → 5.34.0-beta.0

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 (461) hide show
  1. package/HeadlessCMS.js +4 -0
  2. package/HeadlessCMS.js.map +1 -1
  3. package/admin/components/ContentEntryForm/ContentEntryForm.js +35 -32
  4. package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -1
  5. package/admin/components/ContentEntryForm/Fields.d.ts +2 -2
  6. package/admin/components/ContentEntryForm/Fields.js.map +1 -1
  7. package/admin/components/ContentEntryForm/Label.js +1 -1
  8. package/admin/components/ContentEntryForm/Label.js.map +1 -1
  9. package/admin/components/ContentEntryForm/RenderFieldElement.d.ts +2 -2
  10. package/admin/components/ContentEntryForm/RenderFieldElement.js +6 -2
  11. package/admin/components/ContentEntryForm/RenderFieldElement.js.map +1 -1
  12. package/admin/components/ContentEntryForm/functions/getValue.d.ts +2 -2
  13. package/admin/components/ContentEntryForm/functions/getValue.js.map +1 -1
  14. package/admin/components/ContentEntryForm/functions/setValue.d.ts +2 -2
  15. package/admin/components/ContentEntryForm/functions/setValue.js.map +1 -1
  16. package/admin/components/ContentEntryForm/useBind.d.ts +2 -2
  17. package/admin/components/ContentEntryForm/useBind.js +11 -8
  18. package/admin/components/ContentEntryForm/useBind.js.map +1 -1
  19. package/admin/components/ContentEntryForm/useContentEntryForm.d.ts +1 -2
  20. package/admin/components/ContentEntryForm/useContentEntryForm.js +187 -147
  21. package/admin/components/ContentEntryForm/useContentEntryForm.js.map +1 -1
  22. package/admin/components/ContentModelEditor/{Context.d.ts → ContentModelEditorProvider.d.ts} +10 -4
  23. package/admin/components/ContentModelEditor/{Context.js → ContentModelEditorProvider.js} +60 -116
  24. package/admin/components/ContentModelEditor/ContentModelEditorProvider.js.map +1 -0
  25. package/admin/components/ContentModelEditor/Editor.js +5 -5
  26. package/admin/components/ContentModelEditor/Editor.js.map +1 -1
  27. package/admin/components/ContentModelEditor/FieldsSidebar.js.map +1 -1
  28. package/admin/components/ContentModelEditor/PreviewTab.js +3 -3
  29. package/admin/components/ContentModelEditor/PreviewTab.js.map +1 -1
  30. package/admin/components/ContentModelEditor/index.d.ts +2 -0
  31. package/admin/components/ContentModelEditor/index.js +31 -0
  32. package/admin/components/ContentModelEditor/index.js.map +1 -0
  33. package/admin/components/ContentModelEditor/useModelEditor.d.ts +1 -0
  34. package/admin/components/ContentModelEditor/{useContentModelEditor.js → useModelEditor.js} +4 -4
  35. package/admin/components/ContentModelEditor/useModelEditor.js.map +1 -0
  36. package/admin/{views/contentModelGroups → components}/DelayedOnChange.d.ts +0 -0
  37. package/admin/{views/contentModelGroups → components}/DelayedOnChange.js +0 -0
  38. package/admin/{views/contentModelGroups → components}/DelayedOnChange.js.map +0 -0
  39. package/admin/components/Dialog.d.ts +4 -0
  40. package/admin/components/Dialog.js +32 -0
  41. package/admin/components/Dialog.js.map +1 -0
  42. package/admin/components/DropZone/Center.d.ts +2 -1
  43. package/admin/components/DropZone/Center.js +38 -44
  44. package/admin/components/DropZone/Center.js.map +1 -1
  45. package/admin/components/Droppable.d.ts +1 -0
  46. package/admin/components/Droppable.js +12 -1
  47. package/admin/components/Droppable.js.map +1 -1
  48. package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.d.ts +2 -8
  49. package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js +20 -9
  50. package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js.map +1 -1
  51. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.d.ts +2 -9
  52. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +35 -21
  53. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js.map +1 -1
  54. package/admin/components/FieldEditor/EditFieldDialog/PredefinedValues.d.ts +2 -9
  55. package/admin/components/FieldEditor/EditFieldDialog/PredefinedValues.js +14 -12
  56. package/admin/components/FieldEditor/EditFieldDialog/PredefinedValues.js.map +1 -1
  57. package/admin/components/FieldEditor/EditFieldDialog/ValidationsSection.d.ts +10 -0
  58. package/admin/components/FieldEditor/EditFieldDialog/ValidationsSection.js +42 -0
  59. package/admin/components/FieldEditor/EditFieldDialog/ValidationsSection.js.map +1 -0
  60. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsList.d.ts +8 -0
  61. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsList.js +227 -0
  62. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsList.js.map +1 -0
  63. package/admin/components/FieldEditor/EditFieldDialog/getValidators.d.ts +13 -0
  64. package/admin/components/FieldEditor/EditFieldDialog/getValidators.js +115 -0
  65. package/admin/components/FieldEditor/EditFieldDialog/getValidators.js.map +1 -0
  66. package/admin/components/FieldEditor/EditFieldDialog.d.ts +3 -3
  67. package/admin/components/FieldEditor/EditFieldDialog.js +117 -260
  68. package/admin/components/FieldEditor/EditFieldDialog.js.map +1 -1
  69. package/admin/components/FieldEditor/Field.d.ts +5 -5
  70. package/admin/components/FieldEditor/Field.js +17 -14
  71. package/admin/components/FieldEditor/Field.js.map +1 -1
  72. package/admin/components/FieldEditor/FieldEditor.d.ts +4 -4
  73. package/admin/components/FieldEditor/FieldEditor.js +85 -31
  74. package/admin/components/FieldEditor/FieldEditor.js.map +1 -1
  75. package/admin/components/FieldEditor/FieldEditorContext.d.ts +16 -16
  76. package/admin/components/FieldEditor/FieldEditorContext.js +18 -18
  77. package/admin/components/FieldEditor/FieldEditorContext.js.map +1 -1
  78. package/admin/components/FieldEditor/Styled.js +4 -13
  79. package/admin/components/FieldEditor/Styled.js.map +1 -1
  80. package/admin/components/FieldEditor/index.d.ts +1 -1
  81. package/admin/components/FieldEditor/index.js +3 -3
  82. package/admin/components/FieldEditor/index.js.map +1 -1
  83. package/admin/components/FieldEditor/useModelFieldEditor.d.ts +2 -0
  84. package/admin/components/FieldEditor/useModelFieldEditor.js +20 -0
  85. package/admin/components/FieldEditor/useModelFieldEditor.js.map +1 -0
  86. package/admin/components/FieldEditor/utils/deleteField.d.ts +2 -2
  87. package/admin/components/FieldEditor/utils/deleteField.js.map +1 -1
  88. package/admin/components/FieldEditor/utils/getFieldPosition.d.ts +2 -2
  89. package/admin/components/FieldEditor/utils/getFieldPosition.js.map +1 -1
  90. package/admin/components/FieldEditor/utils/moveField.d.ts +3 -3
  91. package/admin/components/FieldEditor/utils/moveField.js.map +1 -1
  92. package/admin/components/IconPicker.d.ts +7 -0
  93. package/admin/{views/contentModelGroups → components}/IconPicker.js +34 -31
  94. package/admin/components/IconPicker.js.map +1 -0
  95. package/admin/components/ModelFieldProvider/ModelFieldContext.d.ts +36 -0
  96. package/admin/components/ModelFieldProvider/ModelFieldContext.js +24 -0
  97. package/admin/components/ModelFieldProvider/ModelFieldContext.js.map +1 -0
  98. package/admin/components/ModelFieldProvider/index.d.ts +2 -0
  99. package/admin/components/ModelFieldProvider/index.js +31 -0
  100. package/admin/components/ModelFieldProvider/index.js.map +1 -0
  101. package/admin/components/ModelFieldProvider/useModelField.d.ts +35 -0
  102. package/admin/components/ModelFieldProvider/useModelField.js +42 -0
  103. package/admin/components/ModelFieldProvider/useModelField.js.map +1 -0
  104. package/admin/components/ModelProvider/ModelContext.d.ts +9 -0
  105. package/admin/components/ModelProvider/ModelContext.js +24 -0
  106. package/admin/components/ModelProvider/ModelContext.js.map +1 -0
  107. package/admin/components/ModelProvider/index.d.ts +2 -0
  108. package/admin/components/ModelProvider/index.js +31 -0
  109. package/admin/components/ModelProvider/index.js.map +1 -0
  110. package/admin/components/ModelProvider/useModel.d.ts +9 -0
  111. package/admin/components/ModelProvider/useModel.js +25 -0
  112. package/admin/components/ModelProvider/useModel.js.map +1 -0
  113. package/admin/constants/statusLabels.js +2 -4
  114. package/admin/constants/statusLabels.js.map +1 -1
  115. package/admin/graphql/contentEntries.d.ts +2 -29
  116. package/admin/graphql/contentEntries.js +28 -42
  117. package/admin/graphql/contentEntries.js.map +1 -1
  118. package/admin/graphql/contentModels.d.ts +1 -1
  119. package/admin/graphql/contentModels.js +2 -2
  120. package/admin/graphql/contentModels.js.map +1 -1
  121. package/admin/graphql/createFieldsList.d.ts +7 -2
  122. package/admin/graphql/createFieldsList.js +5 -1
  123. package/admin/graphql/createFieldsList.js.map +1 -1
  124. package/admin/hooks/index.d.ts +5 -0
  125. package/admin/hooks/index.js +47 -2
  126. package/admin/hooks/index.js.map +1 -1
  127. package/admin/hooks/usePermission.d.ts +0 -2
  128. package/admin/hooks/usePermission.js +5 -37
  129. package/admin/hooks/usePermission.js.map +1 -1
  130. package/admin/menus/NothingToShowElement.js +4 -1
  131. package/admin/menus/NothingToShowElement.js.map +1 -1
  132. package/admin/plugins/arrayUtils.d.ts +12 -0
  133. package/admin/plugins/arrayUtils.js +53 -0
  134. package/admin/plugins/arrayUtils.js.map +1 -0
  135. package/admin/plugins/editor/defaultBar/CreateContentButton.js +4 -4
  136. package/admin/plugins/editor/defaultBar/CreateContentButton.js.map +1 -1
  137. package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js +5 -5
  138. package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js.map +1 -1
  139. package/admin/plugins/editor/defaultBar/Name/Name.js +4 -4
  140. package/admin/plugins/editor/defaultBar/Name/Name.js.map +1 -1
  141. package/admin/plugins/editor/defaultBar/SaveContentModelButton.js +3 -3
  142. package/admin/plugins/editor/defaultBar/SaveContentModelButton.js.map +1 -1
  143. package/admin/plugins/editor/formSettings/components/GeneralSettings.js +9 -1
  144. package/admin/plugins/editor/formSettings/components/GeneralSettings.js.map +1 -1
  145. package/admin/plugins/fieldRenderers/DynamicSection.d.ts +3 -3
  146. package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -1
  147. package/admin/plugins/fieldRenderers/dateTime/DateOnly.d.ts +2 -2
  148. package/admin/plugins/fieldRenderers/dateTime/DateOnly.js.map +1 -1
  149. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithTimezone.d.ts +2 -2
  150. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithTimezone.js.map +1 -1
  151. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithoutTimezone.d.ts +2 -2
  152. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithoutTimezone.js.map +1 -1
  153. package/admin/plugins/fieldRenderers/dateTime/Input.d.ts +2 -2
  154. package/admin/plugins/fieldRenderers/dateTime/Input.js.map +1 -1
  155. package/admin/plugins/fieldRenderers/dateTime/utils.d.ts +2 -2
  156. package/admin/plugins/fieldRenderers/dateTime/utils.js.map +1 -1
  157. package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.d.ts +12 -0
  158. package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.js +107 -0
  159. package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.js.map +1 -0
  160. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.d.ts +11 -0
  161. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js +139 -0
  162. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -0
  163. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.d.ts +11 -0
  164. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js +68 -0
  165. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js.map +1 -0
  166. package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.d.ts +8 -0
  167. package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.js +63 -0
  168. package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.js.map +1 -0
  169. package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.d.ts +8 -0
  170. package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.js +53 -0
  171. package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.js.map +1 -0
  172. package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.d.ts +6 -0
  173. package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.js +22 -0
  174. package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.js.map +1 -0
  175. package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.d.ts +2 -0
  176. package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js +66 -0
  177. package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js.map +1 -0
  178. package/admin/plugins/fieldRenderers/file/fileFields.js.map +1 -1
  179. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.d.ts +2 -2
  180. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
  181. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.d.ts +2 -2
  182. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js.map +1 -1
  183. package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js +10 -9
  184. package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js.map +1 -1
  185. package/admin/plugins/fieldRenderers/ref/components/useReference.d.ts +2 -2
  186. package/admin/plugins/fieldRenderers/ref/components/useReference.js.map +1 -1
  187. package/admin/plugins/fieldRenderers/ref/components/useReferences.d.ts +2 -2
  188. package/admin/plugins/fieldRenderers/ref/components/useReferences.js.map +1 -1
  189. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.d.ts +2 -2
  190. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.js +15 -14
  191. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.js.map +1 -1
  192. package/admin/plugins/fieldRenderers/ref/refInputs.js.map +1 -1
  193. package/admin/plugins/fieldRenderers/richText/richTextInput.js.map +1 -1
  194. package/admin/plugins/fieldRenderers/richText/richTextInputs.js.map +1 -1
  195. package/admin/plugins/fieldValidators/date/createDateInputField.d.ts +2 -2
  196. package/admin/plugins/fieldValidators/date/createDateInputField.js.map +1 -1
  197. package/admin/plugins/fieldValidators/dateGte.d.ts +2 -2
  198. package/admin/plugins/fieldValidators/dateGte.js +79 -23
  199. package/admin/plugins/fieldValidators/dateGte.js.map +1 -1
  200. package/admin/plugins/fieldValidators/dateLte.d.ts +2 -2
  201. package/admin/plugins/fieldValidators/dateLte.js +79 -23
  202. package/admin/plugins/fieldValidators/dateLte.js.map +1 -1
  203. package/admin/plugins/fieldValidators/dynamicZone.d.ts +2 -0
  204. package/admin/plugins/fieldValidators/dynamicZone.js +215 -0
  205. package/admin/plugins/fieldValidators/dynamicZone.js.map +1 -0
  206. package/admin/plugins/fieldValidators/gte.d.ts +2 -2
  207. package/admin/plugins/fieldValidators/gte.js +44 -5
  208. package/admin/plugins/fieldValidators/gte.js.map +1 -1
  209. package/admin/plugins/fieldValidators/in.d.ts +2 -2
  210. package/admin/plugins/fieldValidators/in.js +44 -5
  211. package/admin/plugins/fieldValidators/in.js.map +1 -1
  212. package/admin/plugins/fieldValidators/lte.d.ts +2 -2
  213. package/admin/plugins/fieldValidators/lte.js +44 -5
  214. package/admin/plugins/fieldValidators/lte.js.map +1 -1
  215. package/admin/plugins/fieldValidators/maxLength.d.ts +2 -2
  216. package/admin/plugins/fieldValidators/maxLength.js +55 -6
  217. package/admin/plugins/fieldValidators/maxLength.js.map +1 -1
  218. package/admin/plugins/fieldValidators/minLength.d.ts +2 -2
  219. package/admin/plugins/fieldValidators/minLength.js +55 -6
  220. package/admin/plugins/fieldValidators/minLength.js.map +1 -1
  221. package/admin/plugins/fieldValidators/pattern.d.ts +2 -2
  222. package/admin/plugins/fieldValidators/pattern.js +129 -60
  223. package/admin/plugins/fieldValidators/pattern.js.map +1 -1
  224. package/admin/plugins/fieldValidators/patternPlugins/email.d.ts +2 -2
  225. package/admin/plugins/fieldValidators/patternPlugins/email.js +6 -4
  226. package/admin/plugins/fieldValidators/patternPlugins/email.js.map +1 -1
  227. package/admin/plugins/fieldValidators/patternPlugins/lowerCase.d.ts +2 -2
  228. package/admin/plugins/fieldValidators/patternPlugins/lowerCase.js +5 -3
  229. package/admin/plugins/fieldValidators/patternPlugins/lowerCase.js.map +1 -1
  230. package/admin/plugins/fieldValidators/patternPlugins/lowerCaseSpace.d.ts +2 -2
  231. package/admin/plugins/fieldValidators/patternPlugins/lowerCaseSpace.js +5 -3
  232. package/admin/plugins/fieldValidators/patternPlugins/lowerCaseSpace.js.map +1 -1
  233. package/admin/plugins/fieldValidators/patternPlugins/upperCase.d.ts +2 -2
  234. package/admin/plugins/fieldValidators/patternPlugins/upperCase.js +5 -3
  235. package/admin/plugins/fieldValidators/patternPlugins/upperCase.js.map +1 -1
  236. package/admin/plugins/fieldValidators/patternPlugins/upperCaseSpace.d.ts +2 -2
  237. package/admin/plugins/fieldValidators/patternPlugins/upperCaseSpace.js +5 -3
  238. package/admin/plugins/fieldValidators/patternPlugins/upperCaseSpace.js.map +1 -1
  239. package/admin/plugins/fieldValidators/patternPlugins/url.d.ts +2 -2
  240. package/admin/plugins/fieldValidators/patternPlugins/url.js +5 -3
  241. package/admin/plugins/fieldValidators/patternPlugins/url.js.map +1 -1
  242. package/admin/plugins/fieldValidators/required.d.ts +2 -2
  243. package/admin/plugins/fieldValidators/required.js +8 -2
  244. package/admin/plugins/fieldValidators/required.js.map +1 -1
  245. package/admin/plugins/fieldValidators/unique.d.ts +2 -2
  246. package/admin/plugins/fieldValidators/unique.js +30 -2
  247. package/admin/plugins/fieldValidators/unique.js.map +1 -1
  248. package/admin/plugins/fields/PredefinedValuesDynamicFieldset.d.ts +1 -2
  249. package/admin/plugins/fields/PredefinedValuesDynamicFieldset.js +25 -26
  250. package/admin/plugins/fields/PredefinedValuesDynamicFieldset.js.map +1 -1
  251. package/admin/plugins/fields/boolean.d.ts +2 -2
  252. package/admin/plugins/fields/boolean.js +6 -5
  253. package/admin/plugins/fields/boolean.js.map +1 -1
  254. package/admin/plugins/fields/dateTime.d.ts +2 -2
  255. package/admin/plugins/fields/dateTime.js +58 -48
  256. package/admin/plugins/fields/dateTime.js.map +1 -1
  257. package/admin/plugins/fields/dynamicZone/AddTemplate.d.ts +11 -0
  258. package/admin/plugins/fields/dynamicZone/AddTemplate.js +114 -0
  259. package/admin/plugins/fields/dynamicZone/AddTemplate.js.map +1 -0
  260. package/admin/plugins/fields/dynamicZone/DynamicZone.d.ts +2 -0
  261. package/admin/plugins/fields/dynamicZone/DynamicZone.js +82 -0
  262. package/admin/plugins/fields/dynamicZone/DynamicZone.js.map +1 -0
  263. package/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.d.ts +11 -0
  264. package/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.js +127 -0
  265. package/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.js.map +1 -0
  266. package/admin/plugins/fields/dynamicZone/TemplateDialog.d.ts +9 -0
  267. package/admin/plugins/fields/dynamicZone/TemplateDialog.js +174 -0
  268. package/admin/plugins/fields/dynamicZone/TemplateDialog.js.map +1 -0
  269. package/admin/plugins/fields/dynamicZone/commonValidators.d.ts +2 -0
  270. package/admin/plugins/fields/dynamicZone/commonValidators.js +26 -0
  271. package/admin/plugins/fields/dynamicZone/commonValidators.js.map +1 -0
  272. package/admin/plugins/fields/dynamicZone.d.ts +2 -0
  273. package/admin/plugins/fields/dynamicZone.js +97 -0
  274. package/admin/plugins/fields/dynamicZone.js.map +1 -0
  275. package/admin/plugins/fields/file.d.ts +2 -2
  276. package/admin/plugins/fields/file.js +6 -5
  277. package/admin/plugins/fields/file.js.map +1 -1
  278. package/admin/plugins/fields/longText.d.ts +2 -2
  279. package/admin/plugins/fields/longText.js +4 -3
  280. package/admin/plugins/fields/longText.js.map +1 -1
  281. package/admin/plugins/fields/number.d.ts +2 -2
  282. package/admin/plugins/fields/number.js +6 -5
  283. package/admin/plugins/fields/number.js.map +1 -1
  284. package/admin/plugins/fields/object/ObjectFields.d.ts +2 -2
  285. package/admin/plugins/fields/object/ObjectFields.js +3 -3
  286. package/admin/plugins/fields/object/ObjectFields.js.map +1 -1
  287. package/admin/plugins/fields/object.d.ts +2 -2
  288. package/admin/plugins/fields/object.js +9 -4
  289. package/admin/plugins/fields/object.js.map +1 -1
  290. package/admin/plugins/fields/ref.d.ts +2 -2
  291. package/admin/plugins/fields/ref.js +108 -100
  292. package/admin/plugins/fields/ref.js.map +1 -1
  293. package/admin/plugins/fields/richText.d.ts +2 -2
  294. package/admin/plugins/fields/richText.js +6 -5
  295. package/admin/plugins/fields/richText.js.map +1 -1
  296. package/admin/plugins/fields/text.d.ts +2 -2
  297. package/admin/plugins/fields/text.js +4 -3
  298. package/admin/plugins/fields/text.js.map +1 -1
  299. package/admin/plugins/index.d.ts +28 -1
  300. package/admin/plugins/permissionRenderer/CmsPermissions.js +2 -7
  301. package/admin/plugins/permissionRenderer/CmsPermissions.js.map +1 -1
  302. package/admin/plugins/permissionRenderer/components/ContentEntryPermission.js +11 -17
  303. package/admin/plugins/permissionRenderer/components/ContentEntryPermission.js.map +1 -1
  304. package/admin/plugins/transformers/dateTransformer.d.ts +1 -2
  305. package/admin/plugins/transformers/dateTransformer.js +3 -3
  306. package/admin/plugins/transformers/dateTransformer.js.map +1 -1
  307. package/admin/plugins/transformers/dynamicZoneTransformer.d.ts +2 -0
  308. package/admin/plugins/transformers/dynamicZoneTransformer.js +45 -0
  309. package/admin/plugins/transformers/dynamicZoneTransformer.js.map +1 -0
  310. package/admin/plugins/transformers/index.js +5 -5
  311. package/admin/plugins/transformers/index.js.map +1 -1
  312. package/admin/plugins/transformers/numberTransformer.d.ts +1 -2
  313. package/admin/plugins/transformers/numberTransformer.js +3 -3
  314. package/admin/plugins/transformers/numberTransformer.js.map +1 -1
  315. package/admin/views/contentEntries/ContentEntries.js +6 -2
  316. package/admin/views/contentEntries/ContentEntries.js.map +1 -1
  317. package/admin/views/contentEntries/ContentEntriesContext.d.ts +4 -4
  318. package/admin/views/contentEntries/ContentEntriesContext.js +1 -9
  319. package/admin/views/contentEntries/ContentEntriesContext.js.map +1 -1
  320. package/admin/views/contentEntries/ContentEntriesList.js +23 -8
  321. package/admin/views/contentEntries/ContentEntriesList.js.map +1 -1
  322. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +19 -4
  323. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
  324. package/admin/views/contentEntries/ContentEntry/RevisionListItem.js +60 -60
  325. package/admin/views/contentEntries/ContentEntry/RevisionListItem.js.map +1 -1
  326. package/admin/views/contentEntries/ContentEntry/cache.js +5 -1
  327. package/admin/views/contentEntries/ContentEntry/cache.js.map +1 -1
  328. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.d.ts +1 -1
  329. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js +3 -80
  330. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js.map +1 -1
  331. package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.d.ts +1 -1
  332. package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js +3 -84
  333. package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js.map +1 -1
  334. package/admin/views/contentEntries/ContentEntry/prepareFormData.d.ts +2 -2
  335. package/admin/views/contentEntries/ContentEntry/prepareFormData.js.map +1 -1
  336. package/admin/views/contentEntries/ContentEntry/useRevision.d.ts +0 -8
  337. package/admin/views/contentEntries/ContentEntry/useRevision.js +10 -122
  338. package/admin/views/contentEntries/ContentEntry/useRevision.js.map +1 -1
  339. package/admin/views/contentEntries/ContentEntry.js +0 -2
  340. package/admin/views/contentEntries/ContentEntry.js.map +1 -1
  341. package/admin/views/contentEntries/experiment/ContentEntriesModule.d.ts +2 -2
  342. package/admin/views/contentEntries/experiment/ContentEntriesModule.js +27 -14
  343. package/admin/views/contentEntries/experiment/ContentEntriesModule.js.map +1 -1
  344. package/admin/views/contentEntries/hooks/useContentEntries.js +7 -1
  345. package/admin/views/contentEntries/hooks/useContentEntries.js.map +1 -1
  346. package/admin/views/contentEntries/hooks/useContentEntriesList.d.ts +1 -1
  347. package/admin/views/contentEntries/hooks/useContentEntriesList.js.map +1 -1
  348. package/admin/views/contentModelGroups/ContentModelGroupsForm.js +2 -2
  349. package/admin/views/contentModelGroups/ContentModelGroupsForm.js.map +1 -1
  350. package/admin/views/contentModels/CloneContentModelDialog.js +4 -17
  351. package/admin/views/contentModels/CloneContentModelDialog.js.map +1 -1
  352. package/admin/views/contentModels/ContentModelEditor.js +2 -2
  353. package/admin/views/contentModels/ContentModelEditor.js.map +1 -1
  354. package/admin/views/contentModels/NewContentModelDialog.js +5 -17
  355. package/admin/views/contentModels/NewContentModelDialog.js.map +1 -1
  356. package/admin/viewsGraphql.js +1 -1
  357. package/admin/viewsGraphql.js.map +1 -1
  358. package/allPlugins.d.ts +34 -0
  359. package/allPlugins.js +95 -0
  360. package/allPlugins.js.map +1 -0
  361. package/index.d.ts +1 -0
  362. package/index.js +15 -1
  363. package/index.js.map +1 -1
  364. package/package.json +29 -29
  365. package/{types.d.ts → types/index.d.ts} +59 -176
  366. package/types/index.js +44 -0
  367. package/types/index.js.map +1 -0
  368. package/types/model.d.ts +83 -0
  369. package/{types.js → types/model.js} +0 -0
  370. package/types/model.js.map +1 -0
  371. package/types/shared.d.ts +5 -0
  372. package/types/shared.js +5 -0
  373. package/types/shared.js.map +1 -0
  374. package/types/validation.d.ts +70 -0
  375. package/types/validation.js +5 -0
  376. package/types/validation.js.map +1 -0
  377. package/utils/CmsModelFieldValidatorConfigAdapter.d.ts +15 -0
  378. package/utils/CmsModelFieldValidatorConfigAdapter.js +91 -0
  379. package/utils/CmsModelFieldValidatorConfigAdapter.js.map +1 -0
  380. package/utils/createTypeName.d.ts +1 -0
  381. package/utils/createTypeName.js +18 -0
  382. package/utils/createTypeName.js.map +1 -0
  383. package/utils/createValidators.d.ts +3 -0
  384. package/{admin/components/ContentEntryForm/functions → utils}/createValidators.js +37 -16
  385. package/utils/createValidators.js.map +1 -0
  386. package/utils/getFetchPolicy.d.ts +6 -0
  387. package/utils/getFetchPolicy.js +19 -0
  388. package/utils/getFetchPolicy.js.map +1 -0
  389. package/utils/getModelTitleFieldId.d.ts +2 -0
  390. package/utils/getModelTitleFieldId.js +16 -0
  391. package/utils/getModelTitleFieldId.js.map +1 -0
  392. package/admin/components/ContentEntryForm/functions/createValidators.d.ts +0 -3
  393. package/admin/components/ContentEntryForm/functions/createValidators.js.map +0 -1
  394. package/admin/components/ContentModelEditor/Context.js.map +0 -1
  395. package/admin/components/ContentModelEditor/useContentModelEditor.d.ts +0 -1
  396. package/admin/components/ContentModelEditor/useContentModelEditor.js.map +0 -1
  397. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.d.ts +0 -15
  398. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js +0 -148
  399. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js.map +0 -1
  400. package/admin/components/FieldEditor/useFieldEditor.d.ts +0 -1
  401. package/admin/components/FieldEditor/useFieldEditor.js +0 -14
  402. package/admin/components/FieldEditor/useFieldEditor.js.map +0 -1
  403. package/admin/plugins/validators/dateGte.d.ts +0 -3
  404. package/admin/plugins/validators/dateGte.js +0 -68
  405. package/admin/plugins/validators/dateGte.js.map +0 -1
  406. package/admin/plugins/validators/dateLte.d.ts +0 -3
  407. package/admin/plugins/validators/dateLte.js +0 -68
  408. package/admin/plugins/validators/dateLte.js.map +0 -1
  409. package/admin/plugins/validators/gte.d.ts +0 -3
  410. package/admin/plugins/validators/gte.js +0 -57
  411. package/admin/plugins/validators/gte.js.map +0 -1
  412. package/admin/plugins/validators/in.d.ts +0 -3
  413. package/admin/plugins/validators/in.js +0 -57
  414. package/admin/plugins/validators/in.js.map +0 -1
  415. package/admin/plugins/validators/lte.d.ts +0 -3
  416. package/admin/plugins/validators/lte.js +0 -57
  417. package/admin/plugins/validators/lte.js.map +0 -1
  418. package/admin/plugins/validators/maxLength.d.ts +0 -3
  419. package/admin/plugins/validators/maxLength.js +0 -57
  420. package/admin/plugins/validators/maxLength.js.map +0 -1
  421. package/admin/plugins/validators/minLength.d.ts +0 -3
  422. package/admin/plugins/validators/minLength.js +0 -57
  423. package/admin/plugins/validators/minLength.js.map +0 -1
  424. package/admin/plugins/validators/pattern.d.ts +0 -3
  425. package/admin/plugins/validators/pattern.js +0 -77
  426. package/admin/plugins/validators/pattern.js.map +0 -1
  427. package/admin/plugins/validators/patternPlugins/email.d.ts +0 -3
  428. package/admin/plugins/validators/patternPlugins/email.js +0 -17
  429. package/admin/plugins/validators/patternPlugins/email.js.map +0 -1
  430. package/admin/plugins/validators/patternPlugins/lowerCase.d.ts +0 -3
  431. package/admin/plugins/validators/patternPlugins/lowerCase.js +0 -17
  432. package/admin/plugins/validators/patternPlugins/lowerCase.js.map +0 -1
  433. package/admin/plugins/validators/patternPlugins/lowerCaseSpace.d.ts +0 -3
  434. package/admin/plugins/validators/patternPlugins/lowerCaseSpace.js +0 -17
  435. package/admin/plugins/validators/patternPlugins/lowerCaseSpace.js.map +0 -1
  436. package/admin/plugins/validators/patternPlugins/upperCase.d.ts +0 -3
  437. package/admin/plugins/validators/patternPlugins/upperCase.js +0 -17
  438. package/admin/plugins/validators/patternPlugins/upperCase.js.map +0 -1
  439. package/admin/plugins/validators/patternPlugins/upperCaseSpace.d.ts +0 -3
  440. package/admin/plugins/validators/patternPlugins/upperCaseSpace.js +0 -17
  441. package/admin/plugins/validators/patternPlugins/upperCaseSpace.js.map +0 -1
  442. package/admin/plugins/validators/patternPlugins/url.d.ts +0 -3
  443. package/admin/plugins/validators/patternPlugins/url.js +0 -17
  444. package/admin/plugins/validators/patternPlugins/url.js.map +0 -1
  445. package/admin/plugins/validators/required.d.ts +0 -3
  446. package/admin/plugins/validators/required.js +0 -21
  447. package/admin/plugins/validators/required.js.map +0 -1
  448. package/admin/plugins/validators/timeGte.d.ts +0 -3
  449. package/admin/plugins/validators/timeGte.js +0 -59
  450. package/admin/plugins/validators/timeGte.js.map +0 -1
  451. package/admin/plugins/validators/timeLte.d.ts +0 -3
  452. package/admin/plugins/validators/timeLte.js +0 -59
  453. package/admin/plugins/validators/timeLte.js.map +0 -1
  454. package/admin/plugins/validators/unique.d.ts +0 -7
  455. package/admin/plugins/validators/unique.js +0 -50
  456. package/admin/plugins/validators/unique.js.map +0 -1
  457. package/admin/views/contentEntries/ContentEntry/header/requestChanges/rule-24px.svg +0 -1
  458. package/admin/views/contentEntries/ContentEntry/header/requestReview/emoji_people-24px.svg +0 -1
  459. package/admin/views/contentModelGroups/IconPicker.d.ts +0 -8
  460. package/admin/views/contentModelGroups/IconPicker.js.map +0 -1
  461. package/types.js.map +0 -1
@@ -9,18 +9,16 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.default = void 0;
11
11
 
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
12
14
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
15
 
14
16
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
17
 
16
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
17
-
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _get = _interopRequireDefault(require("lodash/get"));
21
21
 
22
- var _hooks = require("../../hooks");
23
-
24
22
  var _viewsGraphql = require("../../viewsGraphql");
25
23
 
26
24
  var _validation = require("@webiny/validation");
@@ -37,10 +35,111 @@ var _roundLink24px = require("./icons/round-link-24px.svg");
37
35
 
38
36
  var _i18n = require("@webiny/app/i18n");
39
37
 
38
+ var _form = require("@webiny/form");
39
+
40
+ var _hooks = require("../../hooks");
41
+
40
42
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
41
43
 
42
44
  var t = _i18n.i18n.ns("app-headless-cms/admin/fields");
43
45
 
46
+ var RefFieldSettings = function RefFieldSettings() {
47
+ var _useModel = (0, _hooks.useModel)(),
48
+ model = _useModel.model;
49
+
50
+ var _useForm = (0, _form.useForm)(),
51
+ formData = _useForm.data;
52
+
53
+ var lockedFields = model.lockedFields || [];
54
+ var fieldId = (formData || {}).fieldId || null;
55
+ var isFieldLocked = lockedFields.some(function (lockedField) {
56
+ return fieldId && lockedField.fieldId === fieldId;
57
+ });
58
+
59
+ var _useQuery = (0, _hooks.useQuery)(_viewsGraphql.LIST_CONTENT_MODELS),
60
+ data = _useQuery.data,
61
+ loading = _useQuery.loading,
62
+ error = _useQuery.error;
63
+
64
+ var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
65
+ showSnackbar = _useSnackbar.showSnackbar;
66
+
67
+ if (error) {
68
+ showSnackbar(error.message);
69
+ return null;
70
+ } // Format options for the Autocomplete component.
71
+
72
+
73
+ var options = (0, _react.useMemo)(function () {
74
+ var models = (0, _get.default)(data, "listContentModels.data", []);
75
+ return models.map(function (model) {
76
+ return {
77
+ id: model.modelId,
78
+ name: model.name
79
+ };
80
+ });
81
+ }, [data]);
82
+ var atLeastOneItem = (0, _react.useCallback)( /*#__PURE__*/function () {
83
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(value) {
84
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
85
+ while (1) {
86
+ switch (_context.prev = _context.next) {
87
+ case 0:
88
+ _context.prev = 0;
89
+ _context.next = 3;
90
+ return _validation.validation.validate(value, "required,minLength:1");
91
+
92
+ case 3:
93
+ _context.next = 8;
94
+ break;
95
+
96
+ case 5:
97
+ _context.prev = 5;
98
+ _context.t0 = _context["catch"](0);
99
+ throw new _validation.ValidationError("Please select at least 1 item");
100
+
101
+ case 8:
102
+ case "end":
103
+ return _context.stop();
104
+ }
105
+ }
106
+ }, _callee, null, [[0, 5]]);
107
+ }));
108
+
109
+ return function (_x) {
110
+ return _ref.apply(this, arguments);
111
+ };
112
+ }(), []);
113
+ return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, loading && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
114
+ span: 12
115
+ }, /*#__PURE__*/_react.default.createElement(_form.Bind, {
116
+ name: "settings.models",
117
+ validators: atLeastOneItem
118
+ }, function (bind) {
119
+ // Format value prop for MultiAutoComplete component.
120
+ var formattedValueForAutoComplete = options.filter(function (option) {
121
+ return bind.value.some(function (_ref2) {
122
+ var modelId = _ref2.modelId;
123
+ return option.id === modelId;
124
+ });
125
+ });
126
+ return /*#__PURE__*/_react.default.createElement(_AutoComplete.MultiAutoComplete, Object.assign({}, bind, {
127
+ value: formattedValueForAutoComplete,
128
+ onChange: function onChange(values) {
129
+ bind.onChange(values.map(function (value) {
130
+ return {
131
+ modelId: value.id
132
+ };
133
+ }));
134
+ },
135
+ label: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Content Models"]))),
136
+ description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Cannot be changed later"]))),
137
+ options: options,
138
+ disabled: isFieldLocked
139
+ }));
140
+ })));
141
+ };
142
+
44
143
  var plugin = {
45
144
  type: "cms-editor-field-type",
46
145
  name: "cms-editor-field-type-ref",
@@ -48,12 +147,12 @@ var plugin = {
48
147
  type: "ref",
49
148
  validators: ["required"],
50
149
  listValidators: ["minLength", "maxLength"],
51
- label: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Reference"]))),
52
- description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Reference existing content entries. For example, a book can reference one or more authors."]))),
150
+ label: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Reference"]))),
151
+ description: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Reference existing content entries. For example, a book can reference one or more authors."]))),
53
152
  icon: /*#__PURE__*/_react.default.createElement(_roundLink24px.ReactComponent, null),
54
153
  allowMultipleValues: true,
55
154
  allowPredefinedValues: false,
56
- multipleValuesLabel: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Use as a list of references"]))),
155
+ multipleValuesLabel: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Use as a list of references"]))),
57
156
  createField: function createField() {
58
157
  return {
59
158
  type: this.type,
@@ -66,99 +165,8 @@ var plugin = {
66
165
  }
67
166
  };
68
167
  },
69
- renderSettings: function renderSettings(_ref) {
70
- var _ref$form = _ref.form,
71
- Bind = _ref$form.Bind,
72
- formData = _ref$form.data,
73
- contentModel = _ref.contentModel;
74
- var lockedFields = contentModel.lockedFields || [];
75
- var fieldId = (formData || {}).fieldId || null;
76
- var isFieldLocked = lockedFields.some(function (lockedField) {
77
- return fieldId && lockedField.fieldId === fieldId;
78
- });
79
-
80
- var _useQuery = (0, _hooks.useQuery)(_viewsGraphql.LIST_CONTENT_MODELS),
81
- data = _useQuery.data,
82
- loading = _useQuery.loading,
83
- error = _useQuery.error;
84
-
85
- var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
86
- showSnackbar = _useSnackbar.showSnackbar;
87
-
88
- if (error) {
89
- showSnackbar(error.message);
90
- return null;
91
- } // Format options for the Autocomplete component.
92
-
93
-
94
- var options = (0, _react.useMemo)(function () {
95
- var models = (0, _get.default)(data, "listContentModels.data", []);
96
- return models.map(function (model) {
97
- return {
98
- id: model.modelId,
99
- name: model.name
100
- };
101
- });
102
- }, [data]);
103
- var atLeastOneItem = (0, _react.useCallback)( /*#__PURE__*/function () {
104
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(value) {
105
- return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
106
- while (1) {
107
- switch (_context.prev = _context.next) {
108
- case 0:
109
- _context.prev = 0;
110
- _context.next = 3;
111
- return _validation.validation.validate(value, "required,minLength:1");
112
-
113
- case 3:
114
- _context.next = 8;
115
- break;
116
-
117
- case 5:
118
- _context.prev = 5;
119
- _context.t0 = _context["catch"](0);
120
- throw new _validation.ValidationError("Please select at least 1 item");
121
-
122
- case 8:
123
- case "end":
124
- return _context.stop();
125
- }
126
- }
127
- }, _callee, null, [[0, 5]]);
128
- }));
129
-
130
- return function (_x) {
131
- return _ref2.apply(this, arguments);
132
- };
133
- }(), []);
134
- return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, loading && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
135
- span: 12
136
- }, /*#__PURE__*/_react.default.createElement(Bind, {
137
- name: "settings.models",
138
- validators: atLeastOneItem
139
- }, function (bind) {
140
- // Format value prop for MultiAutoComplete component.
141
- var formattedValueForAutoComplete = options.filter(function (option) {
142
- return bind.value.some(function (_ref3) {
143
- var modelId = _ref3.modelId;
144
- return option.id === modelId;
145
- });
146
- });
147
- return /*#__PURE__*/_react.default.createElement(_AutoComplete.MultiAutoComplete, Object.assign({}, bind, {
148
- value: formattedValueForAutoComplete,
149
- onChange: function onChange(values) {
150
- bind.onChange(values.map(function (value) {
151
- return {
152
- modelId: value.id
153
- };
154
- }));
155
- },
156
- label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Content Models"]))),
157
- description: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Cannot be changed later"]))),
158
- options: options,
159
- disabled: isFieldLocked
160
- }));
161
- })));
168
+ renderSettings: function renderSettings() {
169
+ return /*#__PURE__*/_react.default.createElement(RefFieldSettings, null);
162
170
  },
163
171
  graphql: {
164
172
  queryField:
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","plugin","type","name","field","validators","listValidators","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","settings","models","validation","renderer","renderSettings","form","Bind","formData","data","contentModel","lockedFields","fieldId","isFieldLocked","some","lockedField","useQuery","LIST_CONTENT_MODELS","loading","error","useSnackbar","showSnackbar","message","options","useMemo","get","map","model","id","modelId","atLeastOneItem","useCallback","value","validate","ValidationError","bind","formattedValueForAutoComplete","filter","option","values","onChange","graphql","queryField"],"sources":["ref.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { useQuery } from \"../../hooks\";\nimport { LIST_CONTENT_MODELS, ListCmsModelsQueryResponse } from \"../../viewsGraphql\";\nimport { validation, ValidationError } from \"@webiny/validation\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CmsEditorFieldTypePlugin, CmsModel } from \"~/types\";\nimport { ReactComponent as RefIcon } from \"./icons/round-link-24px.svg\";\n\nimport { i18n } from \"@webiny/app/i18n\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst plugin: CmsEditorFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-ref\",\n field: {\n type: \"ref\",\n validators: [\"required\"],\n listValidators: [\"minLength\", \"maxLength\"],\n label: t`Reference`,\n description: t`Reference existing content entries. For example, a book can reference one or more authors.`,\n icon: <RefIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: false,\n multipleValuesLabel: t`Use as a list of references`,\n createField() {\n return {\n type: this.type,\n settings: {\n models: []\n },\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings({ form: { Bind, data: formData }, contentModel }) {\n const lockedFields = contentModel.lockedFields || [];\n const fieldId = (formData || {}).fieldId || null;\n const isFieldLocked = lockedFields.some(\n lockedField => fieldId && lockedField.fieldId === fieldId\n );\n\n const { data, loading, error } =\n useQuery<ListCmsModelsQueryResponse>(LIST_CONTENT_MODELS);\n const { showSnackbar } = useSnackbar();\n\n if (error) {\n showSnackbar(error.message);\n return null;\n }\n\n // Format options for the Autocomplete component.\n const options = useMemo(() => {\n const models = get(data, \"listContentModels.data\", []) as CmsModel[];\n return models.map(model => {\n return { id: model.modelId, name: model.name };\n });\n }, [data]);\n\n const atLeastOneItem = useCallback(async value => {\n try {\n await validation.validate(value, \"required,minLength:1\");\n } catch (err) {\n throw new ValidationError(`Please select at least 1 item`);\n }\n }, []);\n\n return (\n <Grid>\n {loading && <CircularProgress />}\n <Cell span={12}>\n <Bind name={\"settings.models\"} validators={atLeastOneItem}>\n {(bind: BindComponentRenderProp<CmsModel[]>) => {\n // Format value prop for MultiAutoComplete component.\n const formattedValueForAutoComplete = options.filter(option =>\n bind.value.some(({ modelId }) => option.id === modelId)\n );\n\n return (\n <MultiAutoComplete\n {...bind}\n value={formattedValueForAutoComplete}\n onChange={(values: CmsModel[]) => {\n bind.onChange(\n values.map(value => ({ modelId: value.id }))\n );\n }}\n label={t`Content Models`}\n description={t`Cannot be changed later`}\n options={options}\n disabled={isFieldLocked}\n />\n );\n }}\n </Bind>\n </Cell>\n </Grid>\n );\n },\n graphql: {\n queryField: /* GraphQL */ `\n {\n modelId\n id\n }\n `\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
1
+ {"version":3,"names":["t","i18n","ns","RefFieldSettings","useModel","model","useForm","formData","data","lockedFields","fieldId","isFieldLocked","some","lockedField","useQuery","LIST_CONTENT_MODELS","loading","error","useSnackbar","showSnackbar","message","options","useMemo","models","get","map","id","modelId","name","atLeastOneItem","useCallback","value","validation","validate","ValidationError","bind","formattedValueForAutoComplete","filter","option","values","onChange","plugin","type","field","validators","listValidators","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","settings","renderer","renderSettings","graphql","queryField"],"sources":["ref.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { LIST_CONTENT_MODELS, ListCmsModelsQueryResponse } from \"../../viewsGraphql\";\nimport { validation, ValidationError } from \"@webiny/validation\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CmsModelFieldTypePlugin, CmsModel } from \"~/types\";\nimport { ReactComponent as RefIcon } from \"./icons/round-link-24px.svg\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Bind, BindComponentRenderProp, useForm } from \"@webiny/form\";\nimport { useQuery, useModel } from \"~/admin/hooks\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst RefFieldSettings = () => {\n const { model } = useModel();\n const { data: formData } = useForm();\n const lockedFields = model.lockedFields || [];\n const fieldId = (formData || {}).fieldId || null;\n const isFieldLocked = lockedFields.some(\n lockedField => fieldId && lockedField.fieldId === fieldId\n );\n\n const { data, loading, error } = useQuery<ListCmsModelsQueryResponse>(LIST_CONTENT_MODELS);\n const { showSnackbar } = useSnackbar();\n\n if (error) {\n showSnackbar(error.message);\n return null;\n }\n\n // Format options for the Autocomplete component.\n const options = useMemo(() => {\n const models = get(data, \"listContentModels.data\", []) as CmsModel[];\n return models.map(model => {\n return { id: model.modelId, name: model.name };\n });\n }, [data]);\n\n const atLeastOneItem = useCallback(async value => {\n try {\n await validation.validate(value, \"required,minLength:1\");\n } catch (err) {\n throw new ValidationError(`Please select at least 1 item`);\n }\n }, []);\n\n return (\n <Grid>\n {loading && <CircularProgress />}\n <Cell span={12}>\n <Bind name={\"settings.models\"} validators={atLeastOneItem}>\n {(bind: BindComponentRenderProp<CmsModel[]>) => {\n // Format value prop for MultiAutoComplete component.\n const formattedValueForAutoComplete = options.filter(option =>\n bind.value.some(({ modelId }) => option.id === modelId)\n );\n\n return (\n <MultiAutoComplete\n {...bind}\n value={formattedValueForAutoComplete}\n onChange={(values: CmsModel[]) => {\n bind.onChange(values.map(value => ({ modelId: value.id })));\n }}\n label={t`Content Models`}\n description={t`Cannot be changed later`}\n options={options}\n disabled={isFieldLocked}\n />\n );\n }}\n </Bind>\n </Cell>\n </Grid>\n );\n};\n\nconst plugin: CmsModelFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-ref\",\n field: {\n type: \"ref\",\n validators: [\"required\"],\n listValidators: [\"minLength\", \"maxLength\"],\n label: t`Reference`,\n description: t`Reference existing content entries. For example, a book can reference one or more authors.`,\n icon: <RefIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: false,\n multipleValuesLabel: t`Use as a list of references`,\n createField() {\n return {\n type: this.type,\n settings: {\n models: []\n },\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings() {\n return <RefFieldSettings />;\n },\n graphql: {\n queryField: /* GraphQL */ `\n {\n modelId\n id\n }\n `\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { CmsEditorFieldTypePlugin } from "../../../types";
2
- declare const plugin: CmsEditorFieldTypePlugin;
1
+ import { CmsModelFieldTypePlugin } from "../../../types";
2
+ declare const plugin: CmsModelFieldTypePlugin;
3
3
  export default plugin;
@@ -15,10 +15,12 @@ var _i18n = require("@webiny/app/i18n");
15
15
 
16
16
  var _Grid = require("@webiny/ui/Grid");
17
17
 
18
- var _roundText_fields24px = require("./icons/round-text_fields-24px.svg");
18
+ var _text_snippet = require("@material-design-icons/svg/outlined/text_snippet.svg");
19
19
 
20
20
  var _Input = require("@webiny/ui/Input");
21
21
 
22
+ var _form = require("@webiny/form");
23
+
22
24
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
23
25
 
24
26
  var t = _i18n.i18n.ns("app-headless-cms/admin/fields");
@@ -30,7 +32,7 @@ var plugin = {
30
32
  type: "rich-text",
31
33
  label: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Rich text"]))),
32
34
  description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Text formatting with references and media."]))),
33
- icon: /*#__PURE__*/_react.default.createElement(_roundText_fields24px.ReactComponent, null),
35
+ icon: /*#__PURE__*/_react.default.createElement(_text_snippet.ReactComponent, null),
34
36
  allowMultipleValues: true,
35
37
  allowPredefinedValues: false,
36
38
  multipleValuesLabel: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Use as a list of rich texts"]))),
@@ -43,11 +45,10 @@ var plugin = {
43
45
  }
44
46
  };
45
47
  },
46
- renderSettings: function renderSettings(_ref) {
47
- var Bind = _ref.form.Bind;
48
+ renderSettings: function renderSettings() {
48
49
  return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
49
50
  span: 12
50
- }, /*#__PURE__*/_react.default.createElement(Bind, {
51
+ }, /*#__PURE__*/_react.default.createElement(_form.Bind, {
51
52
  name: "placeholderText"
52
53
  }, /*#__PURE__*/_react.default.createElement(_Input.Input, {
53
54
  label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Placeholder text"]))),
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","plugin","type","name","field","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","validation","renderer","renderSettings","Bind","form"],"sources":["richText.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorFieldTypePlugin } from \"~/types\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { ReactComponent as NotesIcon } from \"./icons/round-text_fields-24px.svg\";\nimport { Input } from \"@webiny/ui/Input\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst plugin: CmsEditorFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-richText\",\n field: {\n type: \"rich-text\",\n label: t`Rich text`,\n description: t`Text formatting with references and media.`,\n icon: <NotesIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: false,\n multipleValuesLabel: t`Use as a list of rich texts`,\n createField() {\n return {\n type: this.type,\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings({ form: { Bind } }) {\n return (\n <Grid>\n <Cell span={12}>\n <Bind name={\"placeholderText\"}>\n <Input\n label={t`Placeholder text`}\n description={t`Placeholder text (optional)`}\n />\n </Bind>\n </Cell>\n </Grid>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,+BAAR,CAAV;;AAEA,IAAMC,MAAgC,GAAG;EACrCC,IAAI,EAAE,uBAD+B;EAErCC,IAAI,EAAE,gCAF+B;EAGrCC,KAAK,EAAE;IACHF,IAAI,EAAE,WADH;IAEHG,KAAK,EAAEP,CAAF,4FAFF;IAGHQ,WAAW,EAAER,CAAF,+HAHR;IAIHS,IAAI,eAAE,6BAAC,oCAAD,OAJH;IAKHC,mBAAmB,EAAE,IALlB;IAMHC,qBAAqB,EAAE,KANpB;IAOHC,mBAAmB,EAAEZ,CAAF,gHAPhB;IAQHa,WARG,yBAQW;MACV,OAAO;QACHT,IAAI,EAAE,KAAKA,IADR;QAEHU,UAAU,EAAE,EAFT;QAGHC,QAAQ,EAAE;UACNV,IAAI,EAAE;QADA;MAHP,CAAP;IAOH,CAhBE;IAiBHW,cAjBG,gCAiBgC;MAAA,IAAVC,IAAU,QAAlBC,IAAkB,CAAVD,IAAU;MAC/B,oBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,IAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,YAAD;QACI,KAAK,EAAEjB,CAAF,qGADT;QAEI,WAAW,EAAEA,CAAF;MAFf,EADJ,CADJ,CADJ,CADJ;IAYH;EA9BE;AAH8B,CAAzC;eAqCeG,M"}
1
+ {"version":3,"names":["t","i18n","ns","plugin","type","name","field","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","validation","renderer","renderSettings"],"sources":["richText.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelFieldTypePlugin } from \"~/types\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { ReactComponent as NotesIcon } from \"@material-design-icons/svg/outlined/text_snippet.svg\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Bind } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst plugin: CmsModelFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-richText\",\n field: {\n type: \"rich-text\",\n label: t`Rich text`,\n description: t`Text formatting with references and media.`,\n icon: <NotesIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: false,\n multipleValuesLabel: t`Use as a list of rich texts`,\n createField() {\n return {\n type: this.type,\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings() {\n return (\n <Grid>\n <Cell span={12}>\n <Bind name={\"placeholderText\"}>\n <Input\n label={t`Placeholder text`}\n description={t`Placeholder text (optional)`}\n />\n </Bind>\n </Cell>\n </Grid>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,+BAAR,CAAV;;AAEA,IAAMC,MAA+B,GAAG;EACpCC,IAAI,EAAE,uBAD8B;EAEpCC,IAAI,EAAE,gCAF8B;EAGpCC,KAAK,EAAE;IACHF,IAAI,EAAE,WADH;IAEHG,KAAK,EAAEP,CAAF,4FAFF;IAGHQ,WAAW,EAAER,CAAF,+HAHR;IAIHS,IAAI,eAAE,6BAAC,4BAAD,OAJH;IAKHC,mBAAmB,EAAE,IALlB;IAMHC,qBAAqB,EAAE,KANpB;IAOHC,mBAAmB,EAAEZ,CAAF,gHAPhB;IAQHa,WARG,yBAQW;MACV,OAAO;QACHT,IAAI,EAAE,KAAKA,IADR;QAEHU,UAAU,EAAE,EAFT;QAGHC,QAAQ,EAAE;UACNV,IAAI,EAAE;QADA;MAHP,CAAP;IAOH,CAhBE;IAiBHW,cAjBG,4BAiBc;MACb,oBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,YAAD;QACI,KAAK,EAAEhB,CAAF,qGADT;QAEI,WAAW,EAAEA,CAAF;MAFf,EADJ,CADJ,CADJ,CADJ;IAYH;EA9BE;AAH6B,CAAxC;eAqCeG,M"}
@@ -1,3 +1,3 @@
1
- import { CmsEditorFieldTypePlugin } from "../../../types";
2
- declare const plugin: CmsEditorFieldTypePlugin;
1
+ import { CmsModelFieldTypePlugin } from "../../../types";
2
+ declare const plugin: CmsModelFieldTypePlugin;
3
3
  export default plugin;
@@ -21,6 +21,8 @@ var _Input = require("@webiny/ui/Input");
21
21
 
22
22
  var _PredefinedValuesDynamicFieldset = _interopRequireDefault(require("./PredefinedValuesDynamicFieldset"));
23
23
 
24
+ var _form = require("@webiny/form");
25
+
24
26
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
25
27
 
26
28
  var t = _i18n.i18n.ns("app-headless-cms/admin/fields");
@@ -46,11 +48,10 @@ var plugin = {
46
48
  }
47
49
  };
48
50
  },
49
- renderSettings: function renderSettings(_ref) {
50
- var Bind = _ref.form.Bind;
51
+ renderSettings: function renderSettings() {
51
52
  return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
52
53
  span: 12
53
- }, /*#__PURE__*/_react.default.createElement(Bind, {
54
+ }, /*#__PURE__*/_react.default.createElement(_form.Bind, {
54
55
  name: "placeholderText"
55
56
  }, /*#__PURE__*/_react.default.createElement(_Input.Input, {
56
57
  label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Placeholder text"]))),
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","plugin","type","name","field","validators","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","validation","renderer","renderSettings","Bind","form","renderPredefinedValues","props"],"sources":["text.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as TextIcon } from \"./icons/round-text_fields-24px.svg\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { CmsEditorFieldTypePlugin } from \"~/types\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Input } from \"@webiny/ui/Input\";\nimport PredefinedValuesDynamicFieldset from \"./PredefinedValuesDynamicFieldset\";\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst plugin: CmsEditorFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-text\",\n field: {\n type: \"text\",\n validators: [\"required\", \"minLength\", \"maxLength\", \"pattern\", \"unique\"],\n label: t`Text`,\n description: t`Titles, names, single line values.`,\n icon: <TextIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: true,\n multipleValuesLabel: t`Use as a list of texts`,\n createField() {\n return {\n type: this.type,\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings({ form: { Bind } }) {\n return (\n <Grid>\n <Cell span={12}>\n <Bind name={\"placeholderText\"}>\n <Input\n label={t`Placeholder text`}\n description={t`Placeholder text (optional)`}\n />\n </Bind>\n </Cell>\n </Grid>\n );\n },\n renderPredefinedValues(props) {\n return (\n <PredefinedValuesDynamicFieldset {...props}>\n <Input label={t`Value`} />\n </PredefinedValuesDynamicFieldset>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;AACA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,+BAAR,CAAV;;AAEA,IAAMC,MAAgC,GAAG;EACrCC,IAAI,EAAE,uBAD+B;EAErCC,IAAI,EAAE,4BAF+B;EAGrCC,KAAK,EAAE;IACHF,IAAI,EAAE,MADH;IAEHG,UAAU,EAAE,CAAC,UAAD,EAAa,WAAb,EAA0B,WAA1B,EAAuC,SAAvC,EAAkD,QAAlD,CAFT;IAGHC,KAAK,EAAER,CAAF,uFAHF;IAIHS,WAAW,EAAET,CAAF,uHAJR;IAKHU,IAAI,eAAE,6BAAC,oCAAD,OALH;IAMHC,mBAAmB,EAAE,IANlB;IAOHC,qBAAqB,EAAE,IAPpB;IAQHC,mBAAmB,EAAEb,CAAF,2GARhB;IASHc,WATG,yBASW;MACV,OAAO;QACHV,IAAI,EAAE,KAAKA,IADR;QAEHW,UAAU,EAAE,EAFT;QAGHC,QAAQ,EAAE;UACNX,IAAI,EAAE;QADA;MAHP,CAAP;IAOH,CAjBE;IAkBHY,cAlBG,gCAkBgC;MAAA,IAAVC,IAAU,QAAlBC,IAAkB,CAAVD,IAAU;MAC/B,oBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,IAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,YAAD;QACI,KAAK,EAAElB,CAAF,qGADT;QAEI,WAAW,EAAEA,CAAF;MAFf,EADJ,CADJ,CADJ,CADJ;IAYH,CA/BE;IAgCHoB,sBAhCG,kCAgCoBC,KAhCpB,EAgC2B;MAC1B,oBACI,6BAAC,wCAAD,EAAqCA,KAArC,eACI,6BAAC,YAAD;QAAO,KAAK,EAAErB,CAAF;MAAZ,EADJ,CADJ;IAKH;EAtCE;AAH8B,CAAzC;eA6CeG,M"}
1
+ {"version":3,"names":["t","i18n","ns","plugin","type","name","field","validators","label","description","icon","allowMultipleValues","allowPredefinedValues","multipleValuesLabel","createField","validation","renderer","renderSettings","renderPredefinedValues","props"],"sources":["text.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as TextIcon } from \"./icons/round-text_fields-24px.svg\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { CmsModelFieldTypePlugin } from \"~/types\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Input } from \"@webiny/ui/Input\";\nimport PredefinedValuesDynamicFieldset from \"./PredefinedValuesDynamicFieldset\";\nimport { Bind } from \"@webiny/form\";\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst plugin: CmsModelFieldTypePlugin = {\n type: \"cms-editor-field-type\",\n name: \"cms-editor-field-type-text\",\n field: {\n type: \"text\",\n validators: [\"required\", \"minLength\", \"maxLength\", \"pattern\", \"unique\"],\n label: t`Text`,\n description: t`Titles, names, single line values.`,\n icon: <TextIcon />,\n allowMultipleValues: true,\n allowPredefinedValues: true,\n multipleValuesLabel: t`Use as a list of texts`,\n createField() {\n return {\n type: this.type,\n validation: [],\n renderer: {\n name: \"\"\n }\n };\n },\n renderSettings() {\n return (\n <Grid>\n <Cell span={12}>\n <Bind name={\"placeholderText\"}>\n <Input\n label={t`Placeholder text`}\n description={t`Placeholder text (optional)`}\n />\n </Bind>\n </Cell>\n </Grid>\n );\n },\n renderPredefinedValues(props) {\n return (\n <PredefinedValuesDynamicFieldset {...props}>\n <Input label={t`Value`} />\n </PredefinedValuesDynamicFieldset>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AACA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,+BAAR,CAAV;;AAEA,IAAMC,MAA+B,GAAG;EACpCC,IAAI,EAAE,uBAD8B;EAEpCC,IAAI,EAAE,4BAF8B;EAGpCC,KAAK,EAAE;IACHF,IAAI,EAAE,MADH;IAEHG,UAAU,EAAE,CAAC,UAAD,EAAa,WAAb,EAA0B,WAA1B,EAAuC,SAAvC,EAAkD,QAAlD,CAFT;IAGHC,KAAK,EAAER,CAAF,uFAHF;IAIHS,WAAW,EAAET,CAAF,uHAJR;IAKHU,IAAI,eAAE,6BAAC,oCAAD,OALH;IAMHC,mBAAmB,EAAE,IANlB;IAOHC,qBAAqB,EAAE,IAPpB;IAQHC,mBAAmB,EAAEb,CAAF,2GARhB;IASHc,WATG,yBASW;MACV,OAAO;QACHV,IAAI,EAAE,KAAKA,IADR;QAEHW,UAAU,EAAE,EAFT;QAGHC,QAAQ,EAAE;UACNX,IAAI,EAAE;QADA;MAHP,CAAP;IAOH,CAjBE;IAkBHY,cAlBG,4BAkBc;MACb,oBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,YAAD;QACI,KAAK,EAAEjB,CAAF,qGADT;QAEI,WAAW,EAAEA,CAAF;MAFf,EADJ,CADJ,CADJ,CADJ;IAYH,CA/BE;IAgCHkB,sBAhCG,kCAgCoBC,KAhCpB,EAgC2B;MAC1B,oBACI,6BAAC,wCAAD,EAAqCA,KAArC,eACI,6BAAC,YAAD;QAAO,KAAK,EAAEnB,CAAF;MAAZ,EADJ,CADJ;IAKH;EAtCE;AAH6B,CAAxC;eA6CeG,M"}
@@ -1,5 +1,32 @@
1
1
  /// <reference types="react" />
2
- declare const _default: () => (import("../../types").CmsEditorFormSettingsPlugin | import("../../types").CmsIconsPlugin | import("../../types").CmsFieldValueTransformer[] | import("@webiny/app").ApolloCacheObjectIdPlugin<import("@webiny/app/plugins/ApolloCacheObjectIdPlugin").ApolloCacheObject> | import("@webiny/app/types").RoutePlugin[] | import("@webiny/app-admin/types").AdminInstallationPlugin | import("@webiny/app-admin/types").AdminAppPermissionRendererPlugin | import("../../types").CmsContentDetailsPlugin[] | {
2
+ declare const _default: () => (import("../../types").CmsEditorFormSettingsPlugin | import("../../types").CmsIconsPlugin | import("../../types").CmsFieldValueTransformer<{
3
+ id: string;
4
+ type: string;
5
+ fieldId: string;
6
+ storageId?: string | undefined;
7
+ label?: string | undefined;
8
+ helpText?: string | undefined;
9
+ placeholderText?: string | undefined;
10
+ validation?: import("../../types").CmsModelFieldValidator[] | undefined;
11
+ listValidation?: import("../../types").CmsModelFieldValidator[] | undefined;
12
+ multipleValues?: boolean | undefined;
13
+ predefinedValues?: import("../../types").CmsEditorFieldPredefinedValues | undefined;
14
+ settings?: {
15
+ [key: string]: any;
16
+ defaultValue?: string | null | undefined;
17
+ defaultSetValue?: string | undefined;
18
+ type?: string | undefined;
19
+ fields?: any[] | undefined;
20
+ layout?: string[][] | undefined;
21
+ models?: Pick<import("../../types").CmsModel, "name" | "modelId">[] | undefined;
22
+ templates?: import("../../types").CmsDynamicZoneTemplate[] | undefined;
23
+ imagesOnly?: boolean | undefined;
24
+ } | undefined;
25
+ renderer: {
26
+ name: string;
27
+ };
28
+ tags?: string[] | undefined;
29
+ }>[] | import("@webiny/app/types").RoutePlugin[] | import("@webiny/app-admin/types").AdminInstallationPlugin | import("@webiny/app-admin/types").AdminAppPermissionRendererPlugin | import("@webiny/app").ApolloCacheObjectIdPlugin<import("@webiny/app/plugins/ApolloCacheObjectIdPlugin").ApolloCacheObject> | import("../../types").CmsContentDetailsPlugin[] | {
3
30
  name: string;
4
31
  type: string;
5
32
  render(): JSX.Element;
@@ -210,7 +210,7 @@ var CMSPermissions = function CMSPermissions(_ref) {
210
210
  };
211
211
  }
212
212
 
213
- var hasFullAccess = value.find(function (item) {
213
+ var hasFullAccess = value.some(function (item) {
214
214
  return item.name === CMS_PERMISSION_FULL_ACCESS || item.name === "*";
215
215
  });
216
216
 
@@ -291,12 +291,7 @@ var CMSPermissions = function CMSPermissions(_ref) {
291
291
  }, []);
292
292
  return /*#__PURE__*/_react.default.createElement(_form.Form, {
293
293
  data: formData,
294
- onChange: function onChange(data) {
295
- /**
296
- * We know that data is CmsSecurityPermission.
297
- */
298
- return onFormChange(data);
299
- }
294
+ onChange: onFormChange
300
295
  }, function (_ref2) {
301
296
  var data = _ref2.data,
302
297
  Bind = _ref2.Bind,
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","CMS_PERMISSION","CMS_PERMISSION_FULL_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","ENTITIES","API_ENDPOINTS","id","name","GRAPHQL_API_TYPES_LINK","CMSPermissions","value","onChange","useI18N","getLocales","canRead","useCallback","permissionName","permission","find","item","rwd","includes","getFormLocales","localePermission","startsWith","map","l","code","Array","isArray","locales","onFormChange","data","newValue","filter","accessLevel","push","endpoints","forEach","api","entity","accessScope","own","pw","groups","undefined","models","join","props","reduce","acc","locale","formData","useMemo","hasFullAccess","permissions","length","returnData","p","replace","entityPermission","split","Object","assign","getSelectedContentModelGroups","contentModelGroupAccessScope","contentModelGroupProps","Bind","setValue","graphQLEndpointAccess","gridNoPaddingClass","link","getValue"],"sources":["CmsPermissions.tsx"],"sourcesContent":["/**\n * @pavel Please review types for security permissions\n * TODO @ts-refactor\n */\nimport React, { Fragment, useCallback, useMemo } from \"react\";\nimport ContentModelGroupPermission from \"./components/ContentModelGroupPermission\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { ContentModelPermission } from \"./components/ContentModelPermission\";\nimport { ContentEntryPermission } from \"./components/ContentEntryPermission\";\nimport { Checkbox, CheckboxGroup } from \"@webiny/ui/Checkbox\";\nimport { useI18N } from \"@webiny/app-i18n/hooks/useI18N\";\nimport { Link } from \"@webiny/react-router\";\nimport { CmsSecurityPermission } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/plugins/permissionRenderer\");\n\nconst CMS_PERMISSION = \"cms\";\nconst CMS_PERMISSION_FULL_ACCESS = \"cms.*\";\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\nconst ENTITIES = [\"contentModel\", \"contentModelGroup\", \"contentEntry\"];\nconst API_ENDPOINTS = [\n { id: \"read\", name: \"Read\" },\n { id: \"manage\", name: \"Manage\" },\n { id: \"preview\", name: \"Preview\" }\n];\n\nconst GRAPHQL_API_TYPES_LINK =\n \"https://www.webiny.com/docs/key-topics/webiny-applications/headless-cms/graphql-api/#graphql-api-types\";\n\nexport interface CMSPermissionsProps {\n value: CmsSecurityPermission[];\n onChange: (value: CmsSecurityPermission[]) => void;\n}\nexport const CMSPermissions: React.FC<CMSPermissionsProps> = ({ value, onChange }) => {\n const { getLocales } = useI18N();\n\n const canRead = useCallback((value: any[], permissionName: string) => {\n const permission = value.find(item => item.name === permissionName);\n\n if (!permission) {\n return false;\n }\n\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n\n return permission.rwd.includes(\"r\");\n }, []);\n\n const getFormLocales = () => {\n const localePermission = (value || []).find(item => item.name.startsWith(\"content.i18n\"));\n if (!localePermission) {\n return getLocales().map(l => l.code);\n }\n\n return Array.isArray(localePermission.locales)\n ? localePermission.locales\n : getLocales().map(l => l.code);\n };\n\n const onFormChange = useCallback(\n (data: CmsSecurityPermission) => {\n let newValue: CmsSecurityPermission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `cms*` permission objects.\n // Based on the `data` we rebuild new permission object from scratch.\n newValue = value.filter(item => !item.name.startsWith(CMS_PERMISSION));\n }\n\n if (data.accessLevel === NO_ACCESS) {\n onChange(newValue);\n return;\n }\n\n if (data.accessLevel === FULL_ACCESS) {\n newValue.push({\n name: CMS_PERMISSION_FULL_ACCESS\n });\n onChange(newValue);\n return;\n }\n\n const endpoints = data.endpoints;\n\n // Handling custom access level.\n if (endpoints && Array.isArray(data.endpoints)) {\n API_ENDPOINTS.forEach(api => {\n if (endpoints.includes(api.id)) {\n newValue.push({\n name: `${CMS_PERMISSION}.endpoint.${api.id}`\n });\n }\n });\n }\n\n const locales = getFormLocales();\n\n // Content models, content model groups, content entries\n ENTITIES.forEach(entity => {\n const accessScope = data[`${entity}AccessScope`];\n if (accessScope && accessScope !== NO_ACCESS) {\n const permission: CmsSecurityPermission = {\n name: `${CMS_PERMISSION}.${entity}`,\n own: false,\n rwd: \"r\",\n pw: \"\",\n groups: undefined,\n models: undefined\n };\n\n if (accessScope === \"own\") {\n permission.own = true;\n permission.rwd = \"rwd\";\n } else {\n permission.rwd = data[`${entity}RWD`] || \"r\";\n }\n\n permission.pw = (data[`${entity}PW`] || []).join(\"\");\n\n if (accessScope === \"models\") {\n permission.models = {};\n }\n\n if (accessScope === \"groups\") {\n permission.groups = {};\n }\n\n const props = data[`${entity}Props`];\n if (props) {\n [\"models\", \"groups\"].forEach(entity => {\n if (accessScope === entity && props[entity]) {\n permission[entity] = locales.reduce((acc, locale) => {\n if (props[entity][locale]) {\n acc[locale] = props[entity][locale];\n }\n return acc;\n }, {} as Record<string, string>);\n }\n });\n }\n\n newValue.push(permission);\n }\n });\n // Remove dependent permissions.\n // The \"cms.contentModel\" permission can only be assigned if the user has the \"read\" access for the \"cms.contentModelGroup\".\n if (!canRead(newValue, \"cms.contentModelGroup\")) {\n newValue = newValue.filter(item => item.name !== \"cms.contentModel\");\n }\n // The \"cms.contentEntry\" permission can only be assigned if the user has the \"read\" access for the \"cms.contentModel\".\n if (!canRead(newValue, \"cms.contentModel\")) {\n newValue = newValue.filter(item => item.name !== \"cms.contentEntry\");\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n // This function only runs once on Form mount\n if (!Array.isArray(value)) {\n return {\n accessLevel: NO_ACCESS\n };\n }\n\n const hasFullAccess = value.find(\n item => item.name === CMS_PERMISSION_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return {\n accessLevel: FULL_ACCESS,\n endpoints: API_ENDPOINTS.map(item => item.id)\n };\n }\n\n const permissions = value.filter(item => item.name.startsWith(CMS_PERMISSION));\n\n if (!permissions.length) {\n return {\n accessLevel: NO_ACCESS\n };\n }\n\n // We're dealing with custom permissions. Let's first prepare data for \"content models\", \"content model groups\", \"content entries\" and \"environments\".\n const returnData = {\n accessLevel: CUSTOM_ACCESS,\n endpoints: permissions\n .filter(p => p.name.startsWith(\"cms.endpoint.\"))\n .map(p => p.name.replace(\"cms.endpoint.\", \"\"))\n };\n\n ENTITIES.forEach(entity => {\n const data: Record<string, any> = {\n [`${entity}AccessScope`]: FULL_ACCESS,\n [`${entity}RWD`]: \"r\",\n [`${entity}Props`]: {}\n };\n\n const entityPermission = permissions.find(\n item => item.name === `${CMS_PERMISSION}.${entity}`\n );\n\n if (entityPermission) {\n data[`${entity}AccessScope`] = entityPermission.own ? \"own\" : FULL_ACCESS;\n if (data[`${entity}AccessScope`] === \"own\") {\n data[`${entity}RWD`] = \"rwd\";\n } else {\n data[`${entity}RWD`] = entityPermission.rwd;\n }\n\n // If there are any non-empty props we'll set \"AccessScope\" to that prop.\n if (entityPermission.models) {\n data[`${entity}AccessScope`] = \"models\";\n data[`${entity}Props`] = { models: entityPermission.models };\n }\n\n if (entityPermission.groups) {\n data[`${entity}AccessScope`] = \"groups\";\n data[`${entity}Props`] = { groups: entityPermission.groups };\n }\n\n if (entity === \"contentEntry\") {\n data[`${entity}PW`] = entityPermission.pw ? entityPermission.pw.split(\"\") : [];\n }\n }\n\n Object.assign(returnData, data);\n });\n\n return returnData;\n }, []);\n\n const locales = getFormLocales();\n\n const getSelectedContentModelGroups = useCallback(data => {\n if (data && data.contentModelGroupAccessScope === \"groups\" && data.contentModelGroupProps) {\n return data.contentModelGroupProps.groups;\n }\n }, []);\n\n return (\n <Form\n data={formData}\n onChange={data => {\n /**\n * We know that data is CmsSecurityPermission.\n */\n return onFormChange(data as unknown as CmsSecurityPermission);\n }}\n >\n {({ data, Bind, setValue }) => {\n const endpoints = data.endpoints || [];\n const graphQLEndpointAccess =\n endpoints.includes(\"read\") ||\n endpoints.includes(\"manage\") ||\n endpoints.includes(\"preview\");\n\n return (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <>\n <Grid>\n <Cell span={12}>\n <Bind name={\"endpoints\"}>\n <CheckboxGroup\n label={t`GraphQL API types`}\n description={t`Each type has a separate URL and a specific purpose.\n Check out the {link} key topic to learn more.`({\n link: (\n <Link\n to={GRAPHQL_API_TYPES_LINK}\n target={\"_blank\"}\n >\n Headless CMS GraphQL API\n </Link>\n )\n })}\n >\n {({ getValue, onChange }) =>\n API_ENDPOINTS.map(({ id, name }) => (\n <Checkbox\n key={id}\n label={name}\n value={getValue(id)}\n onChange={onChange(id)}\n />\n ))\n }\n </CheckboxGroup>\n </Bind>\n </Cell>\n </Grid>\n {graphQLEndpointAccess && (\n <ContentModelGroupPermission\n data={data}\n Bind={Bind}\n entity={\"contentModelGroup\"}\n title={\"Content Model Groups\"}\n locales={locales}\n />\n )}\n\n {graphQLEndpointAccess &&\n canRead(value, \"cms.contentModelGroup\") && (\n <ContentModelPermission\n locales={locales}\n data={data}\n setValue={setValue}\n Bind={Bind}\n entity={\"contentModel\"}\n title={\"Content Models\"}\n selectedContentModelGroups={getSelectedContentModelGroups(\n data\n )}\n />\n )}\n\n {graphQLEndpointAccess && canRead(value, \"cms.contentModel\") && (\n <ContentEntryPermission\n data={data}\n Bind={Bind}\n setValue={setValue}\n entity={\"contentEntry\"}\n title={\"Content Entries\"}\n />\n )}\n </>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["t","i18n","ns","CMS_PERMISSION","CMS_PERMISSION_FULL_ACCESS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","ENTITIES","API_ENDPOINTS","id","name","GRAPHQL_API_TYPES_LINK","CMSPermissions","value","onChange","useI18N","getLocales","canRead","useCallback","permissionName","permission","find","item","rwd","includes","getFormLocales","localePermission","startsWith","map","l","code","Array","isArray","locales","onFormChange","data","newValue","filter","accessLevel","push","endpoints","forEach","api","entity","accessScope","own","pw","groups","undefined","models","join","props","reduce","acc","locale","formData","useMemo","hasFullAccess","some","permissions","length","returnData","p","replace","entityPermission","split","Object","assign","getSelectedContentModelGroups","contentModelGroupAccessScope","contentModelGroupProps","Bind","setValue","graphQLEndpointAccess","gridNoPaddingClass","link","getValue"],"sources":["CmsPermissions.tsx"],"sourcesContent":["/**\n * @pavel Please review types for security permissions\n * TODO @ts-refactor\n */\nimport React, { Fragment, useCallback, useMemo } from \"react\";\nimport ContentModelGroupPermission from \"./components/ContentModelGroupPermission\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { PermissionInfo, gridNoPaddingClass } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport { ContentModelPermission } from \"./components/ContentModelPermission\";\nimport { ContentEntryPermission } from \"./components/ContentEntryPermission\";\nimport { Checkbox, CheckboxGroup } from \"@webiny/ui/Checkbox\";\nimport { useI18N } from \"@webiny/app-i18n/hooks/useI18N\";\nimport { Link } from \"@webiny/react-router\";\nimport { CmsSecurityPermission } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/plugins/permissionRenderer\");\n\nconst CMS_PERMISSION = \"cms\";\nconst CMS_PERMISSION_FULL_ACCESS = \"cms.*\";\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\nconst ENTITIES = [\"contentModel\", \"contentModelGroup\", \"contentEntry\"];\nconst API_ENDPOINTS = [\n { id: \"read\", name: \"Read\" },\n { id: \"manage\", name: \"Manage\" },\n { id: \"preview\", name: \"Preview\" }\n];\n\nconst GRAPHQL_API_TYPES_LINK =\n \"https://www.webiny.com/docs/key-topics/webiny-applications/headless-cms/graphql-api/#graphql-api-types\";\n\nexport interface CMSPermissionsProps {\n value: CmsSecurityPermission[];\n onChange: (value: CmsSecurityPermission[]) => void;\n}\nexport const CMSPermissions: React.FC<CMSPermissionsProps> = ({ value, onChange }) => {\n const { getLocales } = useI18N();\n\n const canRead = useCallback((value: any[], permissionName: string) => {\n const permission = value.find(item => item.name === permissionName);\n\n if (!permission) {\n return false;\n }\n\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n\n return permission.rwd.includes(\"r\");\n }, []);\n\n const getFormLocales = () => {\n const localePermission = (value || []).find(item => item.name.startsWith(\"content.i18n\"));\n if (!localePermission) {\n return getLocales().map(l => l.code);\n }\n\n return Array.isArray(localePermission.locales)\n ? localePermission.locales\n : getLocales().map(l => l.code);\n };\n\n const onFormChange = useCallback(\n (data: CmsSecurityPermission) => {\n let newValue: CmsSecurityPermission[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `cms*` permission objects.\n // Based on the `data` we rebuild new permission object from scratch.\n newValue = value.filter(item => !item.name.startsWith(CMS_PERMISSION));\n }\n\n if (data.accessLevel === NO_ACCESS) {\n onChange(newValue);\n return;\n }\n\n if (data.accessLevel === FULL_ACCESS) {\n newValue.push({\n name: CMS_PERMISSION_FULL_ACCESS\n });\n onChange(newValue);\n return;\n }\n\n const endpoints = data.endpoints;\n\n // Handling custom access level.\n if (endpoints && Array.isArray(data.endpoints)) {\n API_ENDPOINTS.forEach(api => {\n if (endpoints.includes(api.id)) {\n newValue.push({\n name: `${CMS_PERMISSION}.endpoint.${api.id}`\n });\n }\n });\n }\n\n const locales = getFormLocales();\n\n // Content models, content model groups, content entries\n ENTITIES.forEach(entity => {\n const accessScope = data[`${entity}AccessScope`];\n if (accessScope && accessScope !== NO_ACCESS) {\n const permission: CmsSecurityPermission = {\n name: `${CMS_PERMISSION}.${entity}`,\n own: false,\n rwd: \"r\",\n pw: \"\",\n groups: undefined,\n models: undefined\n };\n\n if (accessScope === \"own\") {\n permission.own = true;\n permission.rwd = \"rwd\";\n } else {\n permission.rwd = data[`${entity}RWD`] || \"r\";\n }\n\n permission.pw = (data[`${entity}PW`] || []).join(\"\");\n\n if (accessScope === \"models\") {\n permission.models = {};\n }\n\n if (accessScope === \"groups\") {\n permission.groups = {};\n }\n\n const props = data[`${entity}Props`];\n if (props) {\n [\"models\", \"groups\"].forEach(entity => {\n if (accessScope === entity && props[entity]) {\n permission[entity] = locales.reduce((acc, locale) => {\n if (props[entity][locale]) {\n acc[locale] = props[entity][locale];\n }\n return acc;\n }, {} as Record<string, string>);\n }\n });\n }\n\n newValue.push(permission);\n }\n });\n // Remove dependent permissions.\n // The \"cms.contentModel\" permission can only be assigned if the user has the \"read\" access for the \"cms.contentModelGroup\".\n if (!canRead(newValue, \"cms.contentModelGroup\")) {\n newValue = newValue.filter(item => item.name !== \"cms.contentModel\");\n }\n // The \"cms.contentEntry\" permission can only be assigned if the user has the \"read\" access for the \"cms.contentModel\".\n if (!canRead(newValue, \"cms.contentModel\")) {\n newValue = newValue.filter(item => item.name !== \"cms.contentEntry\");\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n // This function only runs once on Form mount\n if (!Array.isArray(value)) {\n return {\n accessLevel: NO_ACCESS\n };\n }\n\n const hasFullAccess = value.some(\n item => item.name === CMS_PERMISSION_FULL_ACCESS || item.name === \"*\"\n );\n\n if (hasFullAccess) {\n return {\n accessLevel: FULL_ACCESS,\n endpoints: API_ENDPOINTS.map(item => item.id)\n };\n }\n\n const permissions = value.filter(item => item.name.startsWith(CMS_PERMISSION));\n\n if (!permissions.length) {\n return {\n accessLevel: NO_ACCESS\n };\n }\n\n // We're dealing with custom permissions. Let's first prepare data for \"content models\", \"content model groups\", \"content entries\" and \"environments\".\n const returnData = {\n accessLevel: CUSTOM_ACCESS,\n endpoints: permissions\n .filter(p => p.name.startsWith(\"cms.endpoint.\"))\n .map(p => p.name.replace(\"cms.endpoint.\", \"\"))\n };\n\n ENTITIES.forEach(entity => {\n const data: Record<string, any> = {\n [`${entity}AccessScope`]: FULL_ACCESS,\n [`${entity}RWD`]: \"r\",\n [`${entity}Props`]: {}\n };\n\n const entityPermission = permissions.find(\n item => item.name === `${CMS_PERMISSION}.${entity}`\n );\n\n if (entityPermission) {\n data[`${entity}AccessScope`] = entityPermission.own ? \"own\" : FULL_ACCESS;\n if (data[`${entity}AccessScope`] === \"own\") {\n data[`${entity}RWD`] = \"rwd\";\n } else {\n data[`${entity}RWD`] = entityPermission.rwd;\n }\n\n // If there are any non-empty props we'll set \"AccessScope\" to that prop.\n if (entityPermission.models) {\n data[`${entity}AccessScope`] = \"models\";\n data[`${entity}Props`] = { models: entityPermission.models };\n }\n\n if (entityPermission.groups) {\n data[`${entity}AccessScope`] = \"groups\";\n data[`${entity}Props`] = { groups: entityPermission.groups };\n }\n\n if (entity === \"contentEntry\") {\n data[`${entity}PW`] = entityPermission.pw ? entityPermission.pw.split(\"\") : [];\n }\n }\n\n Object.assign(returnData, data);\n });\n\n return returnData;\n }, []) as CmsSecurityPermission;\n\n const locales = getFormLocales();\n\n const getSelectedContentModelGroups = useCallback(data => {\n if (data && data.contentModelGroupAccessScope === \"groups\" && data.contentModelGroupProps) {\n return data.contentModelGroupProps.groups;\n }\n }, []);\n\n return (\n <Form<CmsSecurityPermission> data={formData} onChange={onFormChange}>\n {({ data, Bind, setValue }) => {\n const endpoints = data.endpoints || [];\n const graphQLEndpointAccess =\n endpoints.includes(\"read\") ||\n endpoints.includes(\"manage\") ||\n endpoints.includes(\"preview\");\n\n return (\n <Fragment>\n <Grid className={gridNoPaddingClass}>\n <Cell span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Cell>\n <Cell span={6}>\n <Bind name={\"accessLevel\"}>\n <Select label={t`Access Level`}>\n <option value={NO_ACCESS}>{t`No access`}</option>\n <option value={FULL_ACCESS}>{t`Full access`}</option>\n <option value={CUSTOM_ACCESS}>{t`Custom access`}</option>\n </Select>\n </Bind>\n </Cell>\n </Grid>\n {data.accessLevel === CUSTOM_ACCESS && (\n <>\n <Grid>\n <Cell span={12}>\n <Bind name={\"endpoints\"}>\n <CheckboxGroup\n label={t`GraphQL API types`}\n description={t`Each type has a separate URL and a specific purpose.\n Check out the {link} key topic to learn more.`({\n link: (\n <Link\n to={GRAPHQL_API_TYPES_LINK}\n target={\"_blank\"}\n >\n Headless CMS GraphQL API\n </Link>\n )\n })}\n >\n {({ getValue, onChange }) =>\n API_ENDPOINTS.map(({ id, name }) => (\n <Checkbox\n key={id}\n label={name}\n value={getValue(id)}\n onChange={onChange(id)}\n />\n ))\n }\n </CheckboxGroup>\n </Bind>\n </Cell>\n </Grid>\n {graphQLEndpointAccess && (\n <ContentModelGroupPermission\n data={data}\n Bind={Bind}\n entity={\"contentModelGroup\"}\n title={\"Content Model Groups\"}\n locales={locales}\n />\n )}\n\n {graphQLEndpointAccess &&\n canRead(value, \"cms.contentModelGroup\") && (\n <ContentModelPermission\n locales={locales}\n data={data}\n setValue={setValue}\n Bind={Bind}\n entity={\"contentModel\"}\n title={\"Content Models\"}\n selectedContentModelGroups={getSelectedContentModelGroups(\n data\n )}\n />\n )}\n\n {graphQLEndpointAccess && canRead(value, \"cms.contentModel\") && (\n <ContentEntryPermission\n data={data}\n Bind={Bind}\n setValue={setValue}\n entity={\"contentEntry\"}\n title={\"Content Entries\"}\n />\n )}\n </>\n )}\n </Fragment>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}