@webiny/app-headless-cms 0.0.0-unstable.d65ec29d44 → 0.0.0-unstable.da99e0b846

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 (267) hide show
  1. package/HeadlessCMS.js +8 -0
  2. package/HeadlessCMS.js.map +1 -1
  3. package/admin/components/ContentEntryForm/useRenderPlugins.d.ts +1 -2
  4. package/admin/components/ContentModelEditor/ContentModelEditorProvider.js +1 -1
  5. package/admin/components/ContentModelEditor/ContentModelEditorProvider.js.map +1 -1
  6. package/admin/components/ContentModelEditor/Editor.d.ts +4 -1
  7. package/admin/components/Dialog.d.ts +5 -1
  8. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +1 -1
  9. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js.map +1 -1
  10. package/admin/components/FieldEditor/Field.js +230 -36
  11. package/admin/components/FieldEditor/Field.js.map +1 -1
  12. package/admin/components/FieldEditor/Styled.d.ts +9 -3
  13. package/admin/components/FieldEditor/Styled.js +1 -1
  14. package/admin/components/FieldEditor/Styled.js.map +1 -1
  15. package/admin/components/ModelFieldProvider/ModelFieldContext.d.ts +1 -1
  16. package/admin/components/ModelFieldProvider/useModelField.d.ts +1 -1
  17. package/admin/graphql/contentEntries.js +23 -26
  18. package/admin/graphql/contentEntries.js.map +1 -1
  19. package/admin/graphql/contentModels.js +1 -1
  20. package/admin/graphql/contentModels.js.map +1 -1
  21. package/admin/graphql/createFieldsList.js +7 -1
  22. package/admin/graphql/createFieldsList.js.map +1 -1
  23. package/admin/hooks/index.d.ts +2 -0
  24. package/admin/hooks/index.js +25 -1
  25. package/admin/hooks/index.js.map +1 -1
  26. package/admin/hooks/useContentModels.d.ts +6 -0
  27. package/admin/hooks/useContentModels.js +33 -0
  28. package/admin/hooks/useContentModels.js.map +1 -0
  29. package/admin/hooks/usePermission.d.ts +2 -2
  30. package/admin/hooks/usePermission.js.map +1 -1
  31. package/admin/plugins/editor/defaultBar/Divider.d.ts +5 -2
  32. package/admin/plugins/editor/defaultBar/FormSettings/FormSettingsStyled.d.ts +8 -2
  33. package/admin/plugins/editor/defaultBar/Name/NameStyled.d.ts +13 -4
  34. package/admin/plugins/editor/formSettings/components/GeneralSettings.d.ts +2 -2
  35. package/admin/plugins/editor/formSettings/components/GeneralSettings.js +22 -0
  36. package/admin/plugins/editor/formSettings/components/GeneralSettings.js.map +1 -1
  37. package/admin/plugins/fieldRenderers/boolean/index.d.ts +1 -1
  38. package/admin/plugins/fieldRenderers/dateTime/index.d.ts +1 -1
  39. package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.d.ts +3 -3
  40. package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.js.map +1 -1
  41. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.d.ts +4 -4
  42. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -1
  43. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.d.ts +4 -4
  44. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js.map +1 -1
  45. package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.d.ts +2 -2
  46. package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.js.map +1 -1
  47. package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.d.ts +2 -2
  48. package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.js.map +1 -1
  49. package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.d.ts +2 -2
  50. package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.js.map +1 -1
  51. package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js.map +1 -1
  52. package/admin/plugins/fieldRenderers/file/index.d.ts +1 -1
  53. package/admin/plugins/fieldRenderers/longText/index.d.ts +1 -1
  54. package/admin/plugins/fieldRenderers/number/index.d.ts +1 -1
  55. package/admin/plugins/fieldRenderers/object/StyledComponents.d.ts +9 -3
  56. package/admin/plugins/fieldRenderers/object/index.d.ts +1 -1
  57. package/admin/plugins/fieldRenderers/object/multipleObjects.js.map +1 -1
  58. package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js.map +1 -1
  59. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.d.ts +8 -0
  60. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.js +277 -0
  61. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.js.map +1 -0
  62. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.d.ts +8 -0
  63. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.js +181 -0
  64. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.js.map +1 -0
  65. package/admin/plugins/fieldRenderers/ref/advanced/components/Entries.d.ts +9 -0
  66. package/admin/plugins/fieldRenderers/ref/advanced/components/Entries.js +62 -0
  67. package/admin/plugins/fieldRenderers/ref/advanced/components/Entries.js.map +1 -0
  68. package/admin/plugins/fieldRenderers/ref/advanced/components/Entry.d.ts +27 -0
  69. package/admin/plugins/fieldRenderers/ref/advanced/components/Entry.js +153 -0
  70. package/admin/plugins/fieldRenderers/ref/advanced/components/Entry.js.map +1 -0
  71. package/admin/plugins/fieldRenderers/ref/advanced/components/Loader.d.ts +3 -0
  72. package/admin/plugins/fieldRenderers/ref/advanced/components/Loader.js +37 -0
  73. package/admin/plugins/fieldRenderers/ref/advanced/components/Loader.js.map +1 -0
  74. package/admin/plugins/fieldRenderers/ref/advanced/components/NewReferencedEntryDialog.d.ts +9 -0
  75. package/admin/plugins/fieldRenderers/ref/advanced/components/NewReferencedEntryDialog.js +142 -0
  76. package/admin/plugins/fieldRenderers/ref/advanced/components/NewReferencedEntryDialog.js.map +1 -0
  77. package/admin/plugins/fieldRenderers/ref/advanced/components/Options.d.ts +9 -0
  78. package/admin/plugins/fieldRenderers/ref/advanced/components/Options.js +118 -0
  79. package/admin/plugins/fieldRenderers/ref/advanced/components/Options.js.map +1 -0
  80. package/admin/plugins/fieldRenderers/ref/advanced/components/ReferencesDialog.d.ts +11 -0
  81. package/admin/plugins/fieldRenderers/ref/advanced/components/ReferencesDialog.js +183 -0
  82. package/admin/plugins/fieldRenderers/ref/advanced/components/ReferencesDialog.js.map +1 -0
  83. package/admin/plugins/fieldRenderers/ref/advanced/components/Search.d.ts +7 -0
  84. package/admin/plugins/fieldRenderers/ref/advanced/components/Search.js +60 -0
  85. package/admin/plugins/fieldRenderers/ref/advanced/components/Search.js.map +1 -0
  86. package/admin/plugins/fieldRenderers/ref/advanced/components/assets/add-circle.svg +1 -0
  87. package/admin/plugins/fieldRenderers/ref/advanced/components/assets/down-arrow.svg +1 -0
  88. package/admin/plugins/fieldRenderers/ref/advanced/components/assets/link.svg +1 -0
  89. package/admin/plugins/fieldRenderers/ref/advanced/components/assets/search.svg +1 -0
  90. package/admin/plugins/fieldRenderers/ref/advanced/components/dialog/Dialog.d.ts +19 -0
  91. package/admin/plugins/fieldRenderers/ref/advanced/components/dialog/Dialog.js +35 -0
  92. package/admin/plugins/fieldRenderers/ref/advanced/components/dialog/Dialog.js.map +1 -0
  93. package/admin/plugins/fieldRenderers/ref/advanced/components/dialog/DialogHeader.d.ts +8 -0
  94. package/admin/plugins/fieldRenderers/ref/advanced/components/dialog/DialogHeader.js +90 -0
  95. package/admin/plugins/fieldRenderers/ref/advanced/components/dialog/DialogHeader.js.map +1 -0
  96. package/admin/plugins/fieldRenderers/ref/advanced/components/dialog/assets/close.svg +3 -0
  97. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Box.d.ts +8 -0
  98. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Box.js +64 -0
  99. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Box.js.map +1 -0
  100. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/CreatedBy.d.ts +8 -0
  101. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/CreatedBy.js +26 -0
  102. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/CreatedBy.js.map +1 -0
  103. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Description.d.ts +6 -0
  104. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Description.js +31 -0
  105. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Description.js.map +1 -0
  106. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Image.d.ts +9 -0
  107. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Image.js +65 -0
  108. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Image.js.map +1 -0
  109. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/ModelName.d.ts +6 -0
  110. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/ModelName.js +25 -0
  111. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/ModelName.js.map +1 -0
  112. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/ModifiedBy.d.ts +8 -0
  113. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/ModifiedBy.js +30 -0
  114. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/ModifiedBy.js.map +1 -0
  115. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/MoveDown.d.ts +7 -0
  116. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/MoveDown.js +24 -0
  117. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/MoveDown.js.map +1 -0
  118. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/MoveUp.d.ts +7 -0
  119. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/MoveUp.js +24 -0
  120. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/MoveUp.js.map +1 -0
  121. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Remove.d.ts +8 -0
  122. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Remove.js +44 -0
  123. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Remove.js.map +1 -0
  124. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Select.d.ts +9 -0
  125. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Select.js +82 -0
  126. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Select.js.map +1 -0
  127. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Status.d.ts +7 -0
  128. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Status.js +32 -0
  129. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Status.js.map +1 -0
  130. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Title.d.ts +6 -0
  131. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Title.js +24 -0
  132. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Title.js.map +1 -0
  133. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/View.d.ts +7 -0
  134. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/View.js +22 -0
  135. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/View.js.map +1 -0
  136. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/assets/move-down.svg +3 -0
  137. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/assets/move-up.svg +3 -0
  138. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/assets/remove.svg +3 -0
  139. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/assets/selected.svg +3 -0
  140. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/assets/status-draft.svg +3 -0
  141. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/assets/status-published.svg +3 -0
  142. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/assets/status-unpublished.svg +3 -0
  143. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/assets/view.svg +3 -0
  144. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/elements/ButtonLink.d.ts +18 -0
  145. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/elements/ButtonLink.js +84 -0
  146. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/elements/ButtonLink.js.map +1 -0
  147. package/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelList.d.ts +8 -0
  148. package/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelList.js +55 -0
  149. package/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelList.js.map +1 -0
  150. package/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelListItem.d.ts +8 -0
  151. package/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelListItem.js +98 -0
  152. package/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelListItem.js.map +1 -0
  153. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferenceRenderer.d.ts +2 -0
  154. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferenceRenderer.js +46 -0
  155. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferenceRenderer.js.map +1 -0
  156. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferencesRenderer.d.ts +2 -0
  157. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferencesRenderer.js +45 -0
  158. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferencesRenderer.js.map +1 -0
  159. package/admin/plugins/fieldRenderers/ref/advanced/hooks/graphql.d.ts +44 -0
  160. package/admin/plugins/fieldRenderers/ref/advanced/hooks/graphql.js +21 -0
  161. package/admin/plugins/fieldRenderers/ref/advanced/hooks/graphql.js.map +1 -0
  162. package/admin/plugins/fieldRenderers/ref/advanced/hooks/useEntries.d.ts +15 -0
  163. package/admin/plugins/fieldRenderers/ref/advanced/hooks/useEntries.js +187 -0
  164. package/admin/plugins/fieldRenderers/ref/advanced/hooks/useEntries.js.map +1 -0
  165. package/admin/plugins/fieldRenderers/ref/advanced/hooks/useReferences.d.ts +12 -0
  166. package/admin/plugins/fieldRenderers/ref/advanced/hooks/useReferences.js +214 -0
  167. package/admin/plugins/fieldRenderers/ref/advanced/hooks/useReferences.js.map +1 -0
  168. package/admin/plugins/fieldRenderers/ref/advanced/index.d.ts +1 -0
  169. package/admin/plugins/fieldRenderers/ref/advanced/index.js +12 -0
  170. package/admin/plugins/fieldRenderers/ref/advanced/index.js.map +1 -0
  171. package/admin/plugins/fieldRenderers/ref/components/graphql.js +1 -1
  172. package/admin/plugins/fieldRenderers/ref/components/graphql.js.map +1 -1
  173. package/admin/plugins/fieldRenderers/ref/components/types.d.ts +11 -1
  174. package/admin/plugins/fieldRenderers/ref/components/types.js.map +1 -1
  175. package/admin/plugins/fieldRenderers/ref/index.d.ts +1 -1
  176. package/admin/plugins/fieldRenderers/ref/index.js +3 -1
  177. package/admin/plugins/fieldRenderers/ref/index.js.map +1 -1
  178. package/admin/plugins/fieldRenderers/richText/index.d.ts +1 -1
  179. package/admin/plugins/fieldRenderers/text/index.d.ts +1 -1
  180. package/admin/plugins/fields/dynamicZone/AddTemplate.d.ts +3 -3
  181. package/admin/plugins/fields/dynamicZone/AddTemplate.js.map +1 -1
  182. package/admin/plugins/fields/dynamicZone/DynamicZone.d.ts +2 -2
  183. package/admin/plugins/fields/dynamicZone/DynamicZone.js.map +1 -1
  184. package/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.d.ts +2 -2
  185. package/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.js.map +1 -1
  186. package/admin/plugins/fields/dynamicZone/TemplateDialog.d.ts +2 -2
  187. package/admin/plugins/fields/dynamicZone/TemplateDialog.js.map +1 -1
  188. package/admin/plugins/fields/dynamicZone.js +2 -2
  189. package/admin/plugins/fields/dynamicZone.js.map +1 -1
  190. package/admin/plugins/fields/object.js +3 -0
  191. package/admin/plugins/fields/object.js.map +1 -1
  192. package/admin/plugins/fields/ref/graphql.d.ts +8 -0
  193. package/admin/plugins/fields/ref/graphql.js +12 -0
  194. package/admin/plugins/fields/ref/graphql.js.map +1 -0
  195. package/admin/plugins/fields/ref/renderInfo.d.ts +9 -0
  196. package/admin/plugins/fields/ref/renderInfo.js +116 -0
  197. package/admin/plugins/fields/ref/renderInfo.js.map +1 -0
  198. package/admin/plugins/fields/ref.js +3 -1
  199. package/admin/plugins/fields/ref.js.map +1 -1
  200. package/admin/plugins/index.d.ts +1 -1
  201. package/admin/plugins/install.js +3 -39
  202. package/admin/plugins/install.js.map +1 -1
  203. package/admin/plugins/permissionRenderer/components/StyledComponents.d.ts +5 -2
  204. package/admin/plugins/permissionRenderer/components/useCmsData.d.ts +1 -0
  205. package/admin/plugins/permissionRenderer/components/useCmsData.js +1 -1
  206. package/admin/plugins/permissionRenderer/components/useCmsData.js.map +1 -1
  207. package/admin/plugins/upgrades/5.19.0/UpgradeItemsInfo.js +17 -3
  208. package/admin/plugins/upgrades/5.19.0/UpgradeItemsInfo.js.map +1 -1
  209. package/admin/plugins/upgrades/5.19.0/createCmsApolloClient.js +16 -3
  210. package/admin/plugins/upgrades/5.19.0/createCmsApolloClient.js.map +1 -1
  211. package/admin/plugins/upgrades/5.19.0/createListEntriesQuery.js +8 -0
  212. package/admin/plugins/upgrades/5.19.0/createListEntriesQuery.js.map +1 -1
  213. package/admin/plugins/upgrades/5.19.0/createListModelsQuery.js +6 -0
  214. package/admin/plugins/upgrades/5.19.0/createListModelsQuery.js.map +1 -1
  215. package/admin/plugins/upgrades/5.19.0/createRepublishMutation.js +7 -0
  216. package/admin/plugins/upgrades/5.19.0/createRepublishMutation.js.map +1 -1
  217. package/admin/plugins/upgrades/5.19.0/createUpgradeMutation.js +6 -0
  218. package/admin/plugins/upgrades/5.19.0/createUpgradeMutation.js.map +1 -1
  219. package/admin/plugins/upgrades/5.19.0/fetchModelEntries.js +101 -72
  220. package/admin/plugins/upgrades/5.19.0/fetchModelEntries.js.map +1 -1
  221. package/admin/plugins/upgrades/5.33.0/locales.js +42 -25
  222. package/admin/plugins/upgrades/5.33.0/locales.js.map +1 -1
  223. package/admin/plugins/upgrades/5.33.0/upgrade.js +56 -34
  224. package/admin/plugins/upgrades/5.33.0/upgrade.js.map +1 -1
  225. package/admin/plugins/upgrades/v5.0.0.js +57 -28
  226. package/admin/plugins/upgrades/v5.0.0.js.map +1 -1
  227. package/admin/plugins/upgrades/v5.19.0.js +480 -334
  228. package/admin/plugins/upgrades/v5.19.0.js.map +1 -1
  229. package/admin/plugins/upgrades/v5.33.0.js +45 -16
  230. package/admin/plugins/upgrades/v5.33.0.js.map +1 -1
  231. package/admin/plugins/upgrades/v5.5.0.js +57 -28
  232. package/admin/plugins/upgrades/v5.5.0.js.map +1 -1
  233. package/admin/plugins/upgrades/v5.8.0.js +57 -28
  234. package/admin/plugins/upgrades/v5.8.0.js.map +1 -1
  235. package/admin/views/contentEntries/ContentEntry/cache.js +1 -1
  236. package/admin/views/contentEntries/ContentEntry/cache.js.map +1 -1
  237. package/admin/views/contentEntries/hooks/index.d.ts +3 -0
  238. package/admin/views/contentEntries/hooks/index.js +38 -0
  239. package/admin/views/contentEntries/hooks/index.js.map +1 -0
  240. package/admin/views/contentEntries/hooks/useContentEntriesList.d.ts +1 -1
  241. package/admin/views/contentModelGroups/ContentModelGroupsForm.js +4 -1
  242. package/admin/views/contentModelGroups/ContentModelGroupsForm.js.map +1 -1
  243. package/admin/views/contentModels/CloneContentModelDialog.d.ts +5 -6
  244. package/admin/views/contentModels/CloneContentModelDialog.js +78 -53
  245. package/admin/views/contentModels/CloneContentModelDialog.js.map +1 -1
  246. package/admin/views/contentModels/ContentModels.js +2 -3
  247. package/admin/views/contentModels/ContentModels.js.map +1 -1
  248. package/admin/views/contentModels/ContentModelsDataList.js +49 -22
  249. package/admin/views/contentModels/ContentModelsDataList.js.map +1 -1
  250. package/admin/views/contentModels/NewContentModelDialog.js +85 -101
  251. package/admin/views/contentModels/NewContentModelDialog.js.map +1 -1
  252. package/admin/views/contentModels/helpers/apiNameValidator.d.ts +8 -0
  253. package/admin/views/contentModels/helpers/apiNameValidator.js +116 -0
  254. package/admin/views/contentModels/helpers/apiNameValidator.js.map +1 -0
  255. package/admin/views/contentModels/helpers/nameValidator.d.ts +6 -0
  256. package/admin/views/contentModels/helpers/nameValidator.js +63 -0
  257. package/admin/views/contentModels/helpers/nameValidator.js.map +1 -0
  258. package/admin/viewsGraphql.js +5 -2
  259. package/admin/viewsGraphql.js.map +1 -1
  260. package/allPlugins.d.ts +2 -2
  261. package/package.json +21 -22
  262. package/types/index.d.ts +31 -13
  263. package/types/index.js.map +1 -1
  264. package/types/model.d.ts +10 -5
  265. package/types/model.js.map +1 -1
  266. package/types/shared.d.ts +1 -1
  267. package/types/shared.js.map +1 -1
package/HeadlessCMS.js CHANGED
@@ -27,6 +27,12 @@ var createHeadlessCMSProvider = function createHeadlessCMSProvider(createApolloC
27
27
  };
28
28
  };
29
29
  };
30
+ /**
31
+ * If there is a problem with some state being reset, it's probably because of this plugin.
32
+ * Check that __typename from the API and the __typename in the state are the same.
33
+ * If not, add it into the attachTypeName array.
34
+ */
35
+ var attachTypeName = ["CmsContentEntry", "RefField"];
30
36
  var HeadlessCMSExtension = function HeadlessCMSExtension(_ref2) {
31
37
  var createApolloClient = _ref2.createApolloClient;
32
38
  _plugins.plugins.register(_apiInformation.default);
@@ -34,6 +40,8 @@ var HeadlessCMSExtension = function HeadlessCMSExtension(_ref2) {
34
40
  _plugins.plugins.register(new _app.ApolloCacheObjectIdPlugin(function (obj) {
35
41
  if (obj.__typename === "CmsContentModelField") {
36
42
  return null;
43
+ } else if (obj.__typename && attachTypeName.includes(obj.__typename)) {
44
+ return "".concat(obj.__typename, "_").concat(obj.id);
37
45
  }
38
46
  return undefined;
39
47
  }));
@@ -1 +1 @@
1
- {"version":3,"names":["createHeadlessCMSProvider","createApolloClient","Component","HeadlessCMSProvider","children","HeadlessCMSExtension","plugins","register","apiInformation","allPlugins","ApolloCacheObjectIdPlugin","obj","__typename","undefined","HeadlessCMS","memo"],"sources":["HeadlessCMS.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Plugins, Provider } from \"@webiny/app-admin\";\nimport { ApolloCacheObjectIdPlugin } from \"@webiny/app\";\nimport { ApolloClient } from \"apollo-client\";\nimport { CmsProvider } from \"./admin/contexts/Cms\";\nimport { CmsMenuLoader } from \"~/admin/menus/CmsMenuLoader\";\nimport apiInformation from \"./admin/plugins/apiInformation\";\nimport { ContentEntriesModule } from \"./admin/views/contentEntries/experiment/ContentEntriesModule\";\nimport { DefaultOnEntryDelete } from \"./admin/plugins/entry/DefaultOnEntryDelete\";\nimport { DefaultOnEntryPublish } from \"~/admin/plugins/entry/DefaultOnEntryPublish\";\nimport allPlugins from \"./allPlugins\";\n\nconst createHeadlessCMSProvider =\n (createApolloClient: CreateApolloClient) =>\n (Component: React.FC): React.FC => {\n return function HeadlessCMSProvider({ children }) {\n return (\n <CmsProvider createApolloClient={createApolloClient}>\n <Component>{children}</Component>\n </CmsProvider>\n );\n };\n };\n\ninterface CreateApolloClientParams {\n uri: string;\n}\ninterface CreateApolloClient {\n (params: CreateApolloClientParams): ApolloClient<any>;\n}\n\nexport interface HeadlessCMSProps {\n createApolloClient: CreateApolloClient;\n}\n\nconst HeadlessCMSExtension = ({ createApolloClient }: HeadlessCMSProps) => {\n plugins.register(apiInformation);\n plugins.register(allPlugins);\n\n plugins.register(\n new ApolloCacheObjectIdPlugin(obj => {\n if (obj.__typename === \"CmsContentModelField\") {\n return null;\n }\n\n return undefined;\n })\n );\n\n return (\n <Fragment>\n <ContentEntriesModule />\n <Provider hoc={createHeadlessCMSProvider(createApolloClient)} />\n <Plugins>\n <CmsMenuLoader />\n <DefaultOnEntryDelete />\n <DefaultOnEntryPublish />\n </Plugins>\n </Fragment>\n );\n};\n\nexport const HeadlessCMS = memo(HeadlessCMSExtension);\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,yBAAyB,GAC3B,SADEA,yBAAyB,CAC1BC,kBAAsC;EAAA,OACvC,UAACC,SAAmB,EAAe;IAC/B,OAAO,SAASC,mBAAmB,OAAe;MAAA,IAAZC,QAAQ,QAARA,QAAQ;MAC1C,oBACI,6BAAC,gBAAW;QAAC,kBAAkB,EAAEH;MAAmB,gBAChD,6BAAC,SAAS,QAAEG,QAAQ,CAAa,CACvB;IAEtB,CAAC;EACL,CAAC;AAAA;AAaL,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoB,QAAiD;EAAA,IAA3CJ,kBAAkB,SAAlBA,kBAAkB;EAC9CK,gBAAO,CAACC,QAAQ,CAACC,uBAAc,CAAC;EAChCF,gBAAO,CAACC,QAAQ,CAACE,mBAAU,CAAC;EAE5BH,gBAAO,CAACC,QAAQ,CACZ,IAAIG,8BAAyB,CAAC,UAAAC,GAAG,EAAI;IACjC,IAAIA,GAAG,CAACC,UAAU,KAAK,sBAAsB,EAAE;MAC3C,OAAO,IAAI;IACf;IAEA,OAAOC,SAAS;EACpB,CAAC,CAAC,CACL;EAED,oBACI,6BAAC,eAAQ,qBACL,6BAAC,0CAAoB,OAAG,eACxB,6BAAC,kBAAQ;IAAC,GAAG,EAAEb,yBAAyB,CAACC,kBAAkB;EAAE,EAAG,eAChE,6BAAC,iBAAO,qBACJ,6BAAC,4BAAa,OAAG,eACjB,6BAAC,0CAAoB,OAAG,eACxB,6BAAC,4CAAqB,OAAG,CACnB,CACH;AAEnB,CAAC;AAEM,IAAMa,WAAW,gBAAG,IAAAC,WAAI,EAACV,oBAAoB,CAAC;AAAC"}
1
+ {"version":3,"names":["createHeadlessCMSProvider","createApolloClient","Component","HeadlessCMSProvider","children","attachTypeName","HeadlessCMSExtension","plugins","register","apiInformation","allPlugins","ApolloCacheObjectIdPlugin","obj","__typename","includes","id","undefined","HeadlessCMS","memo"],"sources":["HeadlessCMS.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Plugins, Provider } from \"@webiny/app-admin\";\nimport { ApolloCacheObjectIdPlugin } from \"@webiny/app\";\nimport { ApolloClient } from \"apollo-client\";\nimport { CmsProvider } from \"./admin/contexts/Cms\";\nimport { CmsMenuLoader } from \"~/admin/menus/CmsMenuLoader\";\nimport apiInformation from \"./admin/plugins/apiInformation\";\nimport { ContentEntriesModule } from \"./admin/views/contentEntries/experiment/ContentEntriesModule\";\nimport { DefaultOnEntryDelete } from \"./admin/plugins/entry/DefaultOnEntryDelete\";\nimport { DefaultOnEntryPublish } from \"~/admin/plugins/entry/DefaultOnEntryPublish\";\nimport allPlugins from \"./allPlugins\";\n\nconst createHeadlessCMSProvider =\n (createApolloClient: CreateApolloClient) =>\n (Component: React.FC): React.FC => {\n return function HeadlessCMSProvider({ children }) {\n return (\n <CmsProvider createApolloClient={createApolloClient}>\n <Component>{children}</Component>\n </CmsProvider>\n );\n };\n };\n\ninterface CreateApolloClientParams {\n uri: string;\n}\ninterface CreateApolloClient {\n (params: CreateApolloClientParams): ApolloClient<any>;\n}\n\nexport interface HeadlessCMSProps {\n createApolloClient: CreateApolloClient;\n}\n\n/**\n * If there is a problem with some state being reset, it's probably because of this plugin.\n * Check that __typename from the API and the __typename in the state are the same.\n * If not, add it into the attachTypeName array.\n */\nconst attachTypeName = [\"CmsContentEntry\", \"RefField\"];\n\nconst HeadlessCMSExtension = ({ createApolloClient }: HeadlessCMSProps) => {\n plugins.register(apiInformation);\n plugins.register(allPlugins);\n\n plugins.register(\n new ApolloCacheObjectIdPlugin(obj => {\n if (obj.__typename === \"CmsContentModelField\") {\n return null;\n } else if (obj.__typename && attachTypeName.includes(obj.__typename)) {\n return `${obj.__typename}_${obj.id}`;\n }\n\n return undefined;\n })\n );\n\n return (\n <Fragment>\n <ContentEntriesModule />\n <Provider hoc={createHeadlessCMSProvider(createApolloClient)} />\n <Plugins>\n <CmsMenuLoader />\n <DefaultOnEntryDelete />\n <DefaultOnEntryPublish />\n </Plugins>\n </Fragment>\n );\n};\n\nexport const HeadlessCMS = memo(HeadlessCMSExtension);\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,yBAAyB,GAC3B,SADEA,yBAAyB,CAC1BC,kBAAsC;EAAA,OACvC,UAACC,SAAmB,EAAe;IAC/B,OAAO,SAASC,mBAAmB,OAAe;MAAA,IAAZC,QAAQ,QAARA,QAAQ;MAC1C,oBACI,6BAAC,gBAAW;QAAC,kBAAkB,EAAEH;MAAmB,gBAChD,6BAAC,SAAS,QAAEG,QAAQ,CAAa,CACvB;IAEtB,CAAC;EACL,CAAC;AAAA;AAaL;AACA;AACA;AACA;AACA;AACA,IAAMC,cAAc,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC;AAEtD,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoB,QAAiD;EAAA,IAA3CL,kBAAkB,SAAlBA,kBAAkB;EAC9CM,gBAAO,CAACC,QAAQ,CAACC,uBAAc,CAAC;EAChCF,gBAAO,CAACC,QAAQ,CAACE,mBAAU,CAAC;EAE5BH,gBAAO,CAACC,QAAQ,CACZ,IAAIG,8BAAyB,CAAC,UAAAC,GAAG,EAAI;IACjC,IAAIA,GAAG,CAACC,UAAU,KAAK,sBAAsB,EAAE;MAC3C,OAAO,IAAI;IACf,CAAC,MAAM,IAAID,GAAG,CAACC,UAAU,IAAIR,cAAc,CAACS,QAAQ,CAACF,GAAG,CAACC,UAAU,CAAC,EAAE;MAClE,iBAAUD,GAAG,CAACC,UAAU,cAAID,GAAG,CAACG,EAAE;IACtC;IAEA,OAAOC,SAAS;EACpB,CAAC,CAAC,CACL;EAED,oBACI,6BAAC,eAAQ,qBACL,6BAAC,0CAAoB,OAAG,eACxB,6BAAC,kBAAQ;IAAC,GAAG,EAAEhB,yBAAyB,CAACC,kBAAkB;EAAE,EAAG,eAChE,6BAAC,iBAAO,qBACJ,6BAAC,4BAAa,OAAG,eACjB,6BAAC,0CAAoB,OAAG,eACxB,6BAAC,4CAAqB,OAAG,CACnB,CACH;AAEnB,CAAC;AAEM,IAAMgB,WAAW,gBAAG,IAAAC,WAAI,EAACZ,oBAAoB,CAAC;AAAC"}
@@ -1,2 +1 @@
1
- import { CmsEditorFieldRendererPlugin } from "../../../types";
2
- export declare function useRenderPlugins(): CmsEditorFieldRendererPlugin[];
1
+ export declare function useRenderPlugins(): import("../../../types").CmsModelFieldRendererPlugin[];
@@ -104,7 +104,7 @@ var ContentModelEditorProvider = function ContentModelEditorProvider(_ref3) {
104
104
  if (!data) {
105
105
  data = state.data;
106
106
  }
107
- modelData = (0, _pick.default)(data, ["group", "layout", "fields", "tags", "name", "settings", "description", "titleFieldId"]);
107
+ modelData = (0, _pick.default)(data, ["group", "layout", "fields", "tags", "name", "settings", "description", "titleFieldId", "descriptionFieldId", "imageFieldId", "icon"]);
108
108
  _context.next = 4;
109
109
  return apolloClient.mutate({
110
110
  mutation: _contentModels.UPDATE_CONTENT_MODEL,
@@ -1 +1 @@
1
- {"version":3,"names":["contentModelEditorContext","React","createContext","undefined","contentModelEditorReducer","prev","action","data","type","cleanupModelDataFields","fields","map","field","predefinedValues","enabled","values","label","value","selected","String","cleanupModelData","ContentModelEditorProvider","children","apolloClient","modelId","useReducer","isPristine","activeTabIndex","state","dispatch","tabsRef","useRef","useRouter","history","useSnackbar","showSnackbar","setPristine","flag","saveContentModel","modelData","pick","mutate","mutation","UPDATE_CONTENT_MODEL","variables","refetchQueries","query","LIST_MENU_CONTENT_GROUPS_MODELS","response","updateContentModel","error","setActiveTabIndex","useCallback","setData","setter","saveModel","getContentModel","GET_CONTENT_MODEL","get","Error","message","useEffect","catch","push","useMemo","contentModel","Provider"],"sources":["ContentModelEditorProvider.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef\n} from \"react\";\nimport get from \"lodash/get\";\nimport pick from \"lodash/pick\";\nimport { ApolloClient } from \"apollo-client\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables,\n UPDATE_CONTENT_MODEL,\n UpdateCmsModelMutationResponse,\n UpdateCmsModelMutationVariables\n} from \"~/admin/graphql/contentModels\";\nimport { LIST_MENU_CONTENT_GROUPS_MODELS } from \"~/admin/viewsGraphql\";\nimport { CmsModelField, CmsModel } from \"~/types\";\nimport { FetchResult } from \"apollo-link\";\nimport { TabsImperativeApi } from \"@webiny/ui/Tabs\";\nimport { ModelProvider } from \"~/admin/components/ModelProvider\";\n\nexport interface ContentModelEditorProviderContext {\n apolloClient: ApolloClient<any>;\n data: CmsModel;\n contentModel: CmsModel;\n isPristine: boolean;\n getContentModel: (modelId: string) => Promise<FetchResult<GetCmsModelQueryResponse>>;\n saveContentModel: (\n data?: CmsModel\n ) => Promise<UpdateCmsModelMutationResponse[\"updateContentModel\"]>;\n setData: (setter: (model: CmsModel) => void, saveContentModel?: boolean) => Promise<any>;\n tabsRef: MutableRefObject<TabsImperativeApi | undefined>;\n activeTabIndex: number;\n setActiveTabIndex: (index: number) => void;\n}\n\nexport const contentModelEditorContext = React.createContext<\n ContentModelEditorProviderContext | undefined\n>(undefined);\n\ntype PickedCmsModel = Pick<\n CmsModel,\n \"layout\" | \"fields\" | \"name\" | \"settings\" | \"description\" | \"titleFieldId\" | \"group\"\n>;\ninterface State {\n modelId: string | null;\n isPristine: boolean;\n data: CmsModel;\n activeTabIndex: number;\n}\ninterface Action {\n data: Partial<State> | Partial<CmsModel>;\n type: \"state\" | \"data\";\n}\ninterface Reducer {\n (prev: State, action: Action): State;\n}\nexport const contentModelEditorReducer: Reducer = (prev: State, action: Action): State => {\n const { data, type } = action;\n switch (type) {\n case \"state\":\n return { ...prev, ...data };\n\n case \"data\":\n return { ...prev, data: data as CmsModel };\n default:\n return prev;\n }\n};\n\n/**\n * Cleanup is required because backend always expects string value in predefined values entries\n */\nconst cleanupModelDataFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.map(field => {\n const { predefinedValues } = field;\n const { enabled = false, values = [] } = predefinedValues || {};\n return {\n ...field,\n predefinedValues: {\n enabled,\n values: values.map(({ label, value, selected }) => {\n return {\n label,\n selected: selected || false,\n value: String(value)\n };\n })\n }\n };\n });\n};\n\nconst cleanupModelData = (data: PickedCmsModel): PickedCmsModel => {\n return {\n ...data,\n fields: cleanupModelDataFields(data.fields)\n };\n};\n\ninterface ContentModelEditorProviderProps {\n apolloClient: ApolloClient<any>;\n modelId?: string;\n children: React.ReactElement;\n}\n\nexport const ContentModelEditorProvider: React.FC<ContentModelEditorProviderProps> = ({\n children,\n apolloClient,\n modelId\n}) => {\n const [state, dispatch] = useReducer<Reducer>(contentModelEditorReducer, {\n modelId: modelId || null,\n isPristine: true,\n data: null as unknown as CmsModel,\n activeTabIndex: 0\n });\n\n const tabsRef = useRef<TabsImperativeApi>();\n\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n\n const setPristine = (flag: boolean): void => {\n dispatch({ type: \"state\", data: { isPristine: flag } });\n };\n\n const saveContentModel = async (\n data?: CmsModel\n ): Promise<UpdateCmsModelMutationResponse[\"updateContentModel\"]> => {\n if (!data) {\n data = state.data;\n }\n const modelData: PickedCmsModel = pick(data, [\n \"group\",\n \"layout\",\n \"fields\",\n \"tags\",\n \"name\",\n \"settings\",\n \"description\",\n \"titleFieldId\"\n ]);\n const response = await apolloClient.mutate<\n UpdateCmsModelMutationResponse,\n UpdateCmsModelMutationVariables\n >({\n mutation: UPDATE_CONTENT_MODEL,\n variables: {\n modelId: data.modelId,\n data: cleanupModelData(modelData)\n },\n refetchQueries: [\n {\n query: LIST_MENU_CONTENT_GROUPS_MODELS\n }\n ]\n });\n\n setPristine(true);\n\n if (!response.data || !response.data.updateContentModel) {\n return {\n data: null,\n error: null\n };\n }\n\n return response.data.updateContentModel;\n };\n\n const setActiveTabIndex = useCallback((activeTabIndex: number) => {\n dispatch({ type: \"state\", data: { activeTabIndex } });\n }, []);\n\n /**\n * Set form data by providing a callback, which receives a fresh copy of data on which you can work on.\n * Return new data once finished.\n */\n const setData = async (setter: (value: any) => any, saveModel = false): Promise<void> => {\n setPristine(false);\n const data = setter(state.data);\n dispatch({ type: \"data\", data });\n if (!saveModel) {\n return;\n }\n await saveContentModel(data);\n };\n\n const getContentModel = async (\n modelId: string\n ): Promise<FetchResult<GetCmsModelQueryResponse>> => {\n const response = await apolloClient.query<\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n >({\n query: GET_CONTENT_MODEL,\n variables: {\n modelId\n }\n });\n\n const { data, error } = get(response, \"data.getContentModel\");\n if (error) {\n throw new Error(error.message);\n }\n\n await setData(() => data, false);\n setPristine(true);\n return response;\n };\n\n useEffect(() => {\n if (!modelId) {\n return;\n }\n getContentModel(modelId).catch(() => {\n history.push(`/cms/content-models`);\n showSnackbar(`Could not load content model with given ID.`);\n });\n }, [modelId]);\n\n const value = useMemo<ContentModelEditorProviderContext>(\n () => ({\n // Keeping `data` for compatibility\n data: state.data,\n contentModel: state.data,\n modelId,\n apolloClient,\n dispatch,\n isPristine: state.isPristine,\n getContentModel,\n saveContentModel,\n setData,\n tabsRef,\n activeTabIndex: state.activeTabIndex,\n setActiveTabIndex\n }),\n [state, apolloClient]\n );\n\n const { Provider } = contentModelEditorContext;\n\n return (\n <Provider value={value}>\n <ModelProvider model={value.contentModel}>{children}</ModelProvider>\n </Provider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["contentModelEditorContext","React","createContext","undefined","contentModelEditorReducer","prev","action","data","type","cleanupModelDataFields","fields","map","field","predefinedValues","enabled","values","label","value","selected","String","cleanupModelData","ContentModelEditorProvider","children","apolloClient","modelId","useReducer","isPristine","activeTabIndex","state","dispatch","tabsRef","useRef","useRouter","history","useSnackbar","showSnackbar","setPristine","flag","saveContentModel","modelData","pick","mutate","mutation","UPDATE_CONTENT_MODEL","variables","refetchQueries","query","LIST_MENU_CONTENT_GROUPS_MODELS","response","updateContentModel","error","setActiveTabIndex","useCallback","setData","setter","saveModel","getContentModel","GET_CONTENT_MODEL","get","Error","message","useEffect","catch","push","useMemo","contentModel","Provider"],"sources":["ContentModelEditorProvider.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef\n} from \"react\";\nimport get from \"lodash/get\";\nimport pick from \"lodash/pick\";\nimport { ApolloClient } from \"apollo-client\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables,\n UPDATE_CONTENT_MODEL,\n UpdateCmsModelMutationResponse,\n UpdateCmsModelMutationVariables\n} from \"~/admin/graphql/contentModels\";\nimport { LIST_MENU_CONTENT_GROUPS_MODELS } from \"~/admin/viewsGraphql\";\nimport { CmsModelField, CmsModel } from \"~/types\";\nimport { FetchResult } from \"apollo-link\";\nimport { TabsImperativeApi } from \"@webiny/ui/Tabs\";\nimport { ModelProvider } from \"~/admin/components/ModelProvider\";\n\nexport interface ContentModelEditorProviderContext {\n apolloClient: ApolloClient<any>;\n data: CmsModel;\n contentModel: CmsModel;\n isPristine: boolean;\n getContentModel: (modelId: string) => Promise<FetchResult<GetCmsModelQueryResponse>>;\n saveContentModel: (\n data?: CmsModel\n ) => Promise<UpdateCmsModelMutationResponse[\"updateContentModel\"]>;\n setData: (setter: (model: CmsModel) => void, saveContentModel?: boolean) => Promise<any>;\n tabsRef: MutableRefObject<TabsImperativeApi | undefined>;\n activeTabIndex: number;\n setActiveTabIndex: (index: number) => void;\n}\n\nexport const contentModelEditorContext = React.createContext<\n ContentModelEditorProviderContext | undefined\n>(undefined);\n\ntype PickedCmsModel = Pick<\n CmsModel,\n \"layout\" | \"fields\" | \"name\" | \"settings\" | \"description\" | \"titleFieldId\" | \"group\"\n>;\ninterface State {\n modelId: string | null;\n isPristine: boolean;\n data: CmsModel;\n activeTabIndex: number;\n}\ninterface Action {\n data: Partial<State> | Partial<CmsModel>;\n type: \"state\" | \"data\";\n}\ninterface Reducer {\n (prev: State, action: Action): State;\n}\nexport const contentModelEditorReducer: Reducer = (prev: State, action: Action): State => {\n const { data, type } = action;\n switch (type) {\n case \"state\":\n return { ...prev, ...data };\n\n case \"data\":\n return { ...prev, data: data as CmsModel };\n default:\n return prev;\n }\n};\n\n/**\n * Cleanup is required because backend always expects string value in predefined values entries\n */\nconst cleanupModelDataFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.map(field => {\n const { predefinedValues } = field;\n const { enabled = false, values = [] } = predefinedValues || {};\n return {\n ...field,\n predefinedValues: {\n enabled,\n values: values.map(({ label, value, selected }) => {\n return {\n label,\n selected: selected || false,\n value: String(value)\n };\n })\n }\n };\n });\n};\n\nconst cleanupModelData = (data: PickedCmsModel): PickedCmsModel => {\n return {\n ...data,\n fields: cleanupModelDataFields(data.fields)\n };\n};\n\ninterface ContentModelEditorProviderProps {\n apolloClient: ApolloClient<any>;\n modelId?: string;\n children: React.ReactElement;\n}\n\nexport const ContentModelEditorProvider: React.FC<ContentModelEditorProviderProps> = ({\n children,\n apolloClient,\n modelId\n}) => {\n const [state, dispatch] = useReducer<Reducer>(contentModelEditorReducer, {\n modelId: modelId || null,\n isPristine: true,\n data: null as unknown as CmsModel,\n activeTabIndex: 0\n });\n\n const tabsRef = useRef<TabsImperativeApi>();\n\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n\n const setPristine = (flag: boolean): void => {\n dispatch({ type: \"state\", data: { isPristine: flag } });\n };\n\n const saveContentModel = async (\n data?: CmsModel\n ): Promise<UpdateCmsModelMutationResponse[\"updateContentModel\"]> => {\n if (!data) {\n data = state.data;\n }\n const modelData: PickedCmsModel = pick(data, [\n \"group\",\n \"layout\",\n \"fields\",\n \"tags\",\n \"name\",\n \"settings\",\n \"description\",\n \"titleFieldId\",\n \"descriptionFieldId\",\n \"imageFieldId\",\n \"icon\"\n ]);\n const response = await apolloClient.mutate<\n UpdateCmsModelMutationResponse,\n UpdateCmsModelMutationVariables\n >({\n mutation: UPDATE_CONTENT_MODEL,\n variables: {\n modelId: data.modelId,\n data: cleanupModelData(modelData)\n },\n refetchQueries: [\n {\n query: LIST_MENU_CONTENT_GROUPS_MODELS\n }\n ]\n });\n\n setPristine(true);\n\n if (!response.data || !response.data.updateContentModel) {\n return {\n data: null,\n error: null\n };\n }\n\n return response.data.updateContentModel;\n };\n\n const setActiveTabIndex = useCallback((activeTabIndex: number) => {\n dispatch({ type: \"state\", data: { activeTabIndex } });\n }, []);\n\n /**\n * Set form data by providing a callback, which receives a fresh copy of data on which you can work on.\n * Return new data once finished.\n */\n const setData = async (setter: (value: any) => any, saveModel = false): Promise<void> => {\n setPristine(false);\n const data = setter(state.data);\n dispatch({ type: \"data\", data });\n if (!saveModel) {\n return;\n }\n await saveContentModel(data);\n };\n\n const getContentModel = async (\n modelId: string\n ): Promise<FetchResult<GetCmsModelQueryResponse>> => {\n const response = await apolloClient.query<\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n >({\n query: GET_CONTENT_MODEL,\n variables: {\n modelId\n }\n });\n\n const { data, error } = get(response, \"data.getContentModel\");\n if (error) {\n throw new Error(error.message);\n }\n\n await setData(() => data, false);\n setPristine(true);\n return response;\n };\n\n useEffect(() => {\n if (!modelId) {\n return;\n }\n getContentModel(modelId).catch(() => {\n history.push(`/cms/content-models`);\n showSnackbar(`Could not load content model with given ID.`);\n });\n }, [modelId]);\n\n const value = useMemo<ContentModelEditorProviderContext>(\n () => ({\n // Keeping `data` for compatibility\n data: state.data,\n contentModel: state.data,\n modelId,\n apolloClient,\n dispatch,\n isPristine: state.isPristine,\n getContentModel,\n saveContentModel,\n setData,\n tabsRef,\n activeTabIndex: state.activeTabIndex,\n setActiveTabIndex\n }),\n [state, apolloClient]\n );\n\n const { Provider } = contentModelEditorContext;\n\n return (\n <Provider value={value}>\n <ModelProvider model={value.contentModel}>{children}</ModelProvider>\n </Provider>\n );\n};\n"],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  /// <reference types="web" />
2
2
  import React from "react";
3
- export declare const EditContainer: import("@emotion/styled-base").StyledComponent<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement>>, object>;
3
+ export declare const EditContainer: import("@emotion/styled").StyledComponent<{
4
+ theme?: import("@emotion/react").Theme | undefined;
5
+ as?: React.ElementType<any> | undefined;
6
+ }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
4
7
  export declare const Editor: React.FC;
@@ -1,4 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import { Dialog as BaseDialog } from "@webiny/ui/Dialog";
3
3
  export * from "@webiny/ui/Dialog";
4
- export declare const Dialog: import("@emotion/styled-base").StyledComponent<import("@webiny/ui/Dialog").DialogProps & import("react").RefAttributes<BaseDialog>, Pick<import("@webiny/ui/Dialog").DialogProps & import("react").RefAttributes<BaseDialog>, keyof import("@webiny/ui/Dialog").DialogProps>, object>;
4
+ export declare const Dialog: import("@emotion/styled").StyledComponent<import("@webiny/ui/Dialog").DialogProps & {
5
+ theme?: import("@emotion/react").Theme | undefined;
6
+ }, {}, {
7
+ ref?: import("react").Ref<BaseDialog> | undefined;
8
+ }>;
@@ -74,7 +74,7 @@ var GeneralTab = function GeneralTab() {
74
74
  });
75
75
  }
76
76
  var predefinedValuesEnabled = (0, _react.useMemo)(function () {
77
- return fieldPlugin.field.allowPredefinedValues && typeof fieldPlugin.field.renderPredefinedValues === "function";
77
+ return (fieldPlugin.field.allowPredefinedValues || false) && typeof fieldPlugin.field.renderPredefinedValues === "function";
78
78
  }, [field.fieldId]);
79
79
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
80
80
  span: 6
@@ -1 +1 @@
1
- {"version":3,"names":["GeneralTab","form","useForm","useModelField","field","fieldPlugin","inputRef","useRef","useModelEditor","contentModel","data","useModelFieldEditor","getField","useEffect","setTimeout","current","focus","afterChangeLabel","useCallback","value","setValue","beforeChangeFieldId","baseOnChange","trim","fieldIdValidator","fieldId","toLowerCase","Error","uniqueFieldIdValidator","existingField","id","additionalSettings","renderSettings","predefinedValuesEnabled","useMemo","allowPredefinedValues","renderPredefinedValues","validation","create","multipleValuesLabel","allowMultipleValues","tags"],"sources":["GeneralTab.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useRef, useMemo } from \"react\";\nimport { camelCase } from \"lodash\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Switch } from \"@webiny/ui/Switch\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { validation } from \"@webiny/validation\";\nimport { Tags } from \"@webiny/ui/Tags\";\nimport { useForm, Bind } from \"@webiny/form\";\nimport { useModelFieldEditor } from \"~/admin/components/FieldEditor\";\nimport { useModelEditor } from \"~/admin/hooks\";\nimport { useModelField } from \"~/admin/hooks\";\n\nconst GeneralTab = () => {\n const form = useForm();\n const { field, fieldPlugin } = useModelField();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const { data: contentModel } = useModelEditor();\n const { getField } = useModelFieldEditor();\n\n // Had problems with auto-focusing the \"label\" field. A couple of comments on this.\n // 1. It's probably caused by the Tabs component which wraps this component.\n // 2. It seems that the \"autoFocus\" prop on the Input doesn't work. I can't see it attached in the actual DOM.\n // 3. This works, but it's not 100%. Visually, the cursor is frozen, and that's probably caused by a bug / design\n // in the RMWC / Material library. If you were to click somewhere on screen, and then apply focus, then\n // it seems it's behaving correctly. ¯\\_(ツ)_/¯\n useEffect(() => {\n setTimeout(() => {\n if (!inputRef.current) {\n return;\n }\n inputRef.current.focus();\n }, /* The value of 400 was determined by manual testing. */ 400);\n }, []);\n\n const afterChangeLabel = useCallback((value: string) => {\n form.setValue(\"fieldId\", camelCase(value));\n }, []);\n\n const beforeChangeFieldId = useCallback(\n (value: string, baseOnChange: (value: string) => void) => {\n baseOnChange(value.trim());\n },\n []\n );\n\n const fieldIdValidator = useCallback(fieldId => {\n if (fieldId.trim().toLowerCase() !== \"id\") {\n return true;\n }\n\n throw new Error(`Cannot use \"id\" as Field ID.`);\n }, []);\n\n const uniqueFieldIdValidator = useCallback((fieldId: string) => {\n const existingField = getField({ fieldId });\n if (!existingField) {\n return false;\n }\n\n if (existingField.id === field.id) {\n return true;\n }\n throw new Error(\"Please enter a unique Field ID.\");\n }, []);\n\n let additionalSettings: React.ReactNode | null = null;\n if (typeof fieldPlugin.field.renderSettings === \"function\") {\n additionalSettings = fieldPlugin.field.renderSettings({\n afterChangeLabel,\n uniqueFieldIdValidator,\n contentModel\n });\n }\n\n const predefinedValuesEnabled = useMemo(\n (): boolean =>\n fieldPlugin.field.allowPredefinedValues &&\n typeof fieldPlugin.field.renderPredefinedValues === \"function\",\n [field.fieldId]\n );\n\n return (\n <>\n <Grid>\n <Cell span={6}>\n <Bind\n name={\"label\"}\n validators={validation.create(\"required\")}\n afterChange={(value: string) => {\n if (field.id) {\n return;\n }\n afterChangeLabel(value);\n }}\n >\n <Input\n label={\"Label\"}\n inputRef={inputRef}\n data-testid=\"cms.editor.field.settings.general.label\"\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind\n name={\"fieldId\"}\n validators={[\n validation.create(\"required\"),\n uniqueFieldIdValidator,\n fieldIdValidator\n ]}\n beforeChange={beforeChangeFieldId}\n >\n <Input\n label={\"Field ID\"}\n data-testid={`cms.editor.field.settings.general.label-${field.id}`}\n />\n </Bind>\n </Cell>\n\n <Cell span={6}>\n <Bind name={\"multipleValues\"}>\n <Switch\n label={fieldPlugin.field.multipleValuesLabel}\n disabled={!fieldPlugin.field.allowMultipleValues}\n data-testid={`cms.editor.field.settings.general.switch-multiplevalues`}\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind name={\"predefinedValues.enabled\"}>\n <Switch\n label={\"Use predefined values\"}\n disabled={!predefinedValuesEnabled}\n data-testid={`cms.editor.field.settings.general.switch-predefinedvalues`}\n />\n </Bind>\n </Cell>\n\n <Cell span={12}>\n <Bind name={\"helpText\"}>\n <Input\n label={\"Help text\"}\n description={\"Help text (optional)\"}\n data-testid={`cms.editor.field.settings.general.helptext`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name={\"tags\"}>\n <Tags\n label={\"Tags\"}\n protectedTags={fieldPlugin.field.tags}\n description={\"Field tags (optional)\"}\n data-testid={`cms.editor.field.settings.general.tags`}\n />\n </Bind>\n </Cell>\n </Grid>\n {additionalSettings}\n </>\n );\n};\n\nexport default GeneralTab;\n"],"mappings":"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"}
1
+ {"version":3,"names":["GeneralTab","form","useForm","useModelField","field","fieldPlugin","inputRef","useRef","useModelEditor","contentModel","data","useModelFieldEditor","getField","useEffect","setTimeout","current","focus","afterChangeLabel","useCallback","value","setValue","beforeChangeFieldId","baseOnChange","trim","fieldIdValidator","fieldId","toLowerCase","Error","uniqueFieldIdValidator","existingField","id","additionalSettings","renderSettings","predefinedValuesEnabled","useMemo","allowPredefinedValues","renderPredefinedValues","validation","create","multipleValuesLabel","allowMultipleValues","tags"],"sources":["GeneralTab.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useRef, useMemo } from \"react\";\nimport { camelCase } from \"lodash\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Switch } from \"@webiny/ui/Switch\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { validation } from \"@webiny/validation\";\nimport { Tags } from \"@webiny/ui/Tags\";\nimport { useForm, Bind } from \"@webiny/form\";\nimport { useModelFieldEditor } from \"~/admin/components/FieldEditor\";\nimport { useModelEditor } from \"~/admin/hooks\";\nimport { useModelField } from \"~/admin/hooks\";\n\nconst GeneralTab = () => {\n const form = useForm();\n const { field, fieldPlugin } = useModelField();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const { data: contentModel } = useModelEditor();\n const { getField } = useModelFieldEditor();\n\n // Had problems with auto-focusing the \"label\" field. A couple of comments on this.\n // 1. It's probably caused by the Tabs component which wraps this component.\n // 2. It seems that the \"autoFocus\" prop on the Input doesn't work. I can't see it attached in the actual DOM.\n // 3. This works, but it's not 100%. Visually, the cursor is frozen, and that's probably caused by a bug / design\n // in the RMWC / Material library. If you were to click somewhere on screen, and then apply focus, then\n // it seems it's behaving correctly. ¯\\_(ツ)_/¯\n useEffect(() => {\n setTimeout(() => {\n if (!inputRef.current) {\n return;\n }\n inputRef.current.focus();\n }, /* The value of 400 was determined by manual testing. */ 400);\n }, []);\n\n const afterChangeLabel = useCallback((value: string) => {\n form.setValue(\"fieldId\", camelCase(value));\n }, []);\n\n const beforeChangeFieldId = useCallback(\n (value: string, baseOnChange: (value: string) => void) => {\n baseOnChange(value.trim());\n },\n []\n );\n\n const fieldIdValidator = useCallback(fieldId => {\n if (fieldId.trim().toLowerCase() !== \"id\") {\n return true;\n }\n\n throw new Error(`Cannot use \"id\" as Field ID.`);\n }, []);\n\n const uniqueFieldIdValidator = useCallback((fieldId: string) => {\n const existingField = getField({ fieldId });\n if (!existingField) {\n return false;\n }\n\n if (existingField.id === field.id) {\n return true;\n }\n throw new Error(\"Please enter a unique Field ID.\");\n }, []);\n\n let additionalSettings: React.ReactNode | null = null;\n if (typeof fieldPlugin.field.renderSettings === \"function\") {\n additionalSettings = fieldPlugin.field.renderSettings({\n afterChangeLabel,\n uniqueFieldIdValidator,\n contentModel\n });\n }\n\n const predefinedValuesEnabled = useMemo(\n (): boolean =>\n (fieldPlugin.field.allowPredefinedValues || false) &&\n typeof fieldPlugin.field.renderPredefinedValues === \"function\",\n [field.fieldId]\n );\n\n return (\n <>\n <Grid>\n <Cell span={6}>\n <Bind\n name={\"label\"}\n validators={validation.create(\"required\")}\n afterChange={(value: string) => {\n if (field.id) {\n return;\n }\n afterChangeLabel(value);\n }}\n >\n <Input\n label={\"Label\"}\n inputRef={inputRef}\n data-testid=\"cms.editor.field.settings.general.label\"\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind\n name={\"fieldId\"}\n validators={[\n validation.create(\"required\"),\n uniqueFieldIdValidator,\n fieldIdValidator\n ]}\n beforeChange={beforeChangeFieldId}\n >\n <Input\n label={\"Field ID\"}\n data-testid={`cms.editor.field.settings.general.label-${field.id}`}\n />\n </Bind>\n </Cell>\n\n <Cell span={6}>\n <Bind name={\"multipleValues\"}>\n <Switch\n label={fieldPlugin.field.multipleValuesLabel}\n disabled={!fieldPlugin.field.allowMultipleValues}\n data-testid={`cms.editor.field.settings.general.switch-multiplevalues`}\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind name={\"predefinedValues.enabled\"}>\n <Switch\n label={\"Use predefined values\"}\n disabled={!predefinedValuesEnabled}\n data-testid={`cms.editor.field.settings.general.switch-predefinedvalues`}\n />\n </Bind>\n </Cell>\n\n <Cell span={12}>\n <Bind name={\"helpText\"}>\n <Input\n label={\"Help text\"}\n description={\"Help text (optional)\"}\n data-testid={`cms.editor.field.settings.general.helptext`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name={\"tags\"}>\n <Tags\n label={\"Tags\"}\n protectedTags={fieldPlugin.field.tags}\n description={\"Field tags (optional)\"}\n data-testid={`cms.editor.field.settings.general.tags`}\n />\n </Bind>\n </Cell>\n </Grid>\n {additionalSettings}\n </>\n );\n};\n\nexport default GeneralTab;\n"],"mappings":"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"}
@@ -28,7 +28,7 @@ var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
28
28
  var _hooks = require("../../hooks");
29
29
  var _useModelFieldEditor2 = require("./useModelFieldEditor");
30
30
  var _appAdmin = require("@webiny/app-admin");
31
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
31
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
32
32
  var t = _i18n.i18n.ns("app-headless-cms/admin/components/editor/field");
33
33
  var FieldContainer = /*#__PURE__*/(0, _styled.default)("div", {
34
34
  target: "erv8xml0",
@@ -61,14 +61,30 @@ var Actions = /*#__PURE__*/(0, _styled.default)("div", {
61
61
  display: "flex",
62
62
  flexDirection: "row",
63
63
  alignItems: "right",
64
+ position: "relative",
64
65
  "> *": {
65
66
  flex: "1 100%"
66
67
  }
67
68
  });
69
+
70
+ /**
71
+ * TODO @sven to give correct values
72
+ */
73
+ var FieldTypeName = /*#__PURE__*/(0, _styled.default)("div", {
74
+ target: "erv8xml4",
75
+ label: "FieldTypeName"
76
+ })({
77
+ display: "flex",
78
+ flexDirection: "column",
79
+ textTransform: "uppercase",
80
+ color: "#938F99",
81
+ flex: "1",
82
+ textAlign: "right",
83
+ fontSize: "14px",
84
+ paddingRight: "10px"
85
+ });
68
86
  var menuStyles = /*#__PURE__*/(0, _emotion.css)({
69
- width: 220,
70
- right: -105,
71
- left: "auto !important",
87
+ width: "220px",
72
88
  ".disabled": {
73
89
  opacity: 0.5,
74
90
  pointerEvents: "none"
@@ -76,26 +92,55 @@ var menuStyles = /*#__PURE__*/(0, _emotion.css)({
76
92
  }, "label:menuStyles;");
77
93
  var FieldExtra = /*#__PURE__*/(0, _styled.default)("div", {
78
94
  label: "FieldExtra",
79
- target: "erv8xml4"
95
+ target: "erv8xml5"
80
96
  })("padding:10px 0 10px;:empty{display:none;}");
81
97
  var allowedTitleFieldTypes = ["text", "number"];
82
- var isFieldAllowedToBeTitle = function isFieldAllowedToBeTitle(field, parent) {
98
+ var isFieldAllowedToBeTitle = function isFieldAllowedToBeTitle(model, field, parent) {
83
99
  if (field.multipleValues || parent) {
84
100
  return false;
85
101
  } else if (allowedTitleFieldTypes.includes(field.type) === false) {
86
102
  return false;
103
+ } else if (model.titleFieldId === field.fieldId) {
104
+ return false;
87
105
  }
88
106
  return true;
89
107
  };
108
+ var isFieldAllowedToBeDescription = function isFieldAllowedToBeDescription(model, field, parent) {
109
+ if (field.multipleValues || parent) {
110
+ return false;
111
+ } else if (model.descriptionFieldId === field.fieldId) {
112
+ return false;
113
+ }
114
+ return field.type === "long-text";
115
+ };
116
+ var isFieldAllowedToBeImage = function isFieldAllowedToBeImage(model, field, parent) {
117
+ var _field$settings;
118
+ if (field.multipleValues || parent) {
119
+ return false;
120
+ } else if (model.imageFieldId === field.fieldId) {
121
+ return false;
122
+ }
123
+ return field.type === "file" && ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.imagesOnly);
124
+ };
125
+ var getFieldTypeName = function getFieldTypeName(model, field, parent) {
126
+ if (parent) {
127
+ return null;
128
+ }
129
+ var isTitleField = field.fieldId === (model === null || model === void 0 ? void 0 : model.titleFieldId) && !parent;
130
+ var isDescriptionField = field.fieldId === (model === null || model === void 0 ? void 0 : model.descriptionFieldId) && !parent;
131
+ var isImageField = field.fieldId === (model === null || model === void 0 ? void 0 : model.imageFieldId) && !parent;
132
+ return [isTitleField ? "entry title" : null, isDescriptionField ? "entry description" : null, isImageField ? "entry image" : null].filter(Boolean).join("") || null;
133
+ };
90
134
  var Field = function Field(props) {
135
+ var _fieldPlugin$field;
91
136
  var field = props.field,
92
137
  onEdit = props.onEdit,
93
138
  parent = props.parent;
94
139
  var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
95
140
  showSnackbar = _useSnackbar.showSnackbar;
96
141
  var _useModelEditor = (0, _hooks.useModelEditor)(),
97
- setData = _useModelEditor.setData,
98
- data = _useModelEditor.data;
142
+ setModel = _useModelEditor.setData,
143
+ model = _useModelEditor.data;
99
144
  var _useModelFieldEditor = (0, _useModelFieldEditor2.useModelFieldEditor)(),
100
145
  getFieldPlugin = _useModelFieldEditor.getFieldPlugin,
101
146
  getFieldRendererPlugin = _useModelFieldEditor.getFieldRendererPlugin;
@@ -104,45 +149,170 @@ var Field = function Field(props) {
104
149
  message: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", null, t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["You are about to delete a field which is used in the data storage"])))), /*#__PURE__*/_react.default.createElement("p", null, t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["All data in that field will be lost and there is no going back!"])))), /*#__PURE__*/_react.default.createElement("p", null, "\xA0"), /*#__PURE__*/_react.default.createElement("p", null, t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Are you sure you want to continue?"])))))
105
150
  }),
106
151
  showConfirmation = _useConfirmationDialo.showConfirmation;
107
- var lockedFields = data ? data.lockedFields || [] : [];
152
+ var lockedFields = (model === null || model === void 0 ? void 0 : model.lockedFields) || [];
108
153
  var isLocked = lockedFields.some(function (lockedField) {
109
154
  return lockedField.fieldId === field.storageId;
110
155
  });
111
- var onDelete = (0, _react.useCallback)(function () {
112
- if (!isLocked) {
113
- props.onDelete(field);
114
- return;
115
- }
116
- showConfirmation(function () {
117
- props.onDelete(field);
118
- });
119
- }, [field.fieldId, lockedFields]);
120
- var setAsTitle = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
121
- var response;
156
+ var removeFieldFromSelected = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
122
157
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
123
158
  while (1) switch (_context.prev = _context.next) {
124
159
  case 0:
125
- _context.next = 2;
126
- return setData(function (data) {
160
+ if (!(model.titleFieldId === field.fieldId)) {
161
+ _context.next = 5;
162
+ break;
163
+ }
164
+ _context.next = 3;
165
+ return setModel(function (data) {
166
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
167
+ titleFieldId: null
168
+ });
169
+ });
170
+ case 3:
171
+ _context.next = 13;
172
+ break;
173
+ case 5:
174
+ if (!(model.descriptionFieldId === field.fieldId)) {
175
+ _context.next = 10;
176
+ break;
177
+ }
178
+ _context.next = 8;
179
+ return setModel(function (data) {
180
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
181
+ descriptionFieldId: null
182
+ });
183
+ });
184
+ case 8:
185
+ _context.next = 13;
186
+ break;
187
+ case 10:
188
+ if (!(model.imageFieldId === field.fieldId)) {
189
+ _context.next = 13;
190
+ break;
191
+ }
192
+ _context.next = 13;
193
+ return setModel(function (data) {
194
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
195
+ imageFieldId: null
196
+ });
197
+ });
198
+ case 13:
199
+ case "end":
200
+ return _context.stop();
201
+ }
202
+ }, _callee);
203
+ })), [field.id, setModel, model]);
204
+ var onDelete = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee3() {
205
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee3$(_context3) {
206
+ while (1) switch (_context3.prev = _context3.next) {
207
+ case 0:
208
+ if (isLocked) {
209
+ _context3.next = 5;
210
+ break;
211
+ }
212
+ _context3.next = 3;
213
+ return removeFieldFromSelected();
214
+ case 3:
215
+ props.onDelete(field);
216
+ return _context3.abrupt("return");
217
+ case 5:
218
+ showConfirmation( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
219
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
220
+ while (1) switch (_context2.prev = _context2.next) {
221
+ case 0:
222
+ _context2.next = 2;
223
+ return removeFieldFromSelected();
224
+ case 2:
225
+ props.onDelete(field);
226
+ case 3:
227
+ case "end":
228
+ return _context2.stop();
229
+ }
230
+ }, _callee2);
231
+ })));
232
+ case 6:
233
+ case "end":
234
+ return _context3.stop();
235
+ }
236
+ }, _callee3);
237
+ })), [field.fieldId, lockedFields]);
238
+ var setAsTitle = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee4() {
239
+ var response;
240
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee4$(_context4) {
241
+ while (1) switch (_context4.prev = _context4.next) {
242
+ case 0:
243
+ _context4.next = 2;
244
+ return setModel(function (data) {
127
245
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
128
246
  titleFieldId: field.fieldId
129
247
  });
130
248
  });
131
249
  case 2:
132
- response = _context.sent;
250
+ response = _context4.sent;
133
251
  if (!(response && response.error)) {
134
- _context.next = 5;
252
+ _context4.next = 5;
135
253
  break;
136
254
  }
137
- return _context.abrupt("return", showSnackbar(response.error.message));
255
+ return _context4.abrupt("return", showSnackbar(response.error.message));
138
256
  case 5:
139
257
  showSnackbar(t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Title field set successfully."]))));
140
258
  case 6:
141
259
  case "end":
142
- return _context.stop();
260
+ return _context4.stop();
143
261
  }
144
- }, _callee);
145
- })), [field.fieldId, setData]);
262
+ }, _callee4);
263
+ })), [field.fieldId, setModel]);
264
+ var setAsDescription = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee5() {
265
+ var response;
266
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee5$(_context5) {
267
+ while (1) switch (_context5.prev = _context5.next) {
268
+ case 0:
269
+ _context5.next = 2;
270
+ return setModel(function (data) {
271
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
272
+ descriptionFieldId: field.fieldId
273
+ });
274
+ });
275
+ case 2:
276
+ response = _context5.sent;
277
+ if (!(response && response.error)) {
278
+ _context5.next = 5;
279
+ break;
280
+ }
281
+ return _context5.abrupt("return", showSnackbar(response.error.message));
282
+ case 5:
283
+ showSnackbar(t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Description field set successfully."]))));
284
+ case 6:
285
+ case "end":
286
+ return _context5.stop();
287
+ }
288
+ }, _callee5);
289
+ })), [field.fieldId, setModel]);
290
+ var setAsImage = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee6() {
291
+ var response;
292
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee6$(_context6) {
293
+ while (1) switch (_context6.prev = _context6.next) {
294
+ case 0:
295
+ _context6.next = 2;
296
+ return setModel(function (data) {
297
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
298
+ imageFieldId: field.fieldId
299
+ });
300
+ });
301
+ case 2:
302
+ response = _context6.sent;
303
+ if (!(response && response.error)) {
304
+ _context6.next = 5;
305
+ break;
306
+ }
307
+ return _context6.abrupt("return", showSnackbar(response.error.message));
308
+ case 5:
309
+ showSnackbar(t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Image field set successfully."]))));
310
+ case 6:
311
+ case "end":
312
+ return _context6.stop();
313
+ }
314
+ }, _callee6);
315
+ })), [field.fieldId, setModel]);
146
316
  var fieldPlugin = getFieldPlugin(field.type);
147
317
  var editorFieldOptionPlugins = _plugins.plugins.byType("cms-editor-field-option");
148
318
  if (!fieldPlugin) {
@@ -150,13 +320,27 @@ var Field = function Field(props) {
150
320
  }
151
321
  var rendererPlugin = getFieldRendererPlugin(field.renderer.name);
152
322
  var canEdit = fieldPlugin.field.canEditSettings !== false;
153
- var isTitleField = data && field.fieldId === data.titleFieldId && !parent;
154
- var info = [rendererPlugin === null || rendererPlugin === void 0 ? void 0 : rendererPlugin.renderer.name, field.multipleValues ? "multiple values" : null, isTitleField ? "entry title" : null].filter(Boolean).join(", ");
323
+ var defaultInformationRenderer = (0, _react.useMemo)(function () {
324
+ var fieldTypeName = getFieldTypeName(model, field, parent);
325
+ var fn = function fn() {
326
+ if (!fieldTypeName) {
327
+ return null;
328
+ }
329
+ return /*#__PURE__*/_react.default.createElement(FieldTypeName, null, fieldTypeName);
330
+ };
331
+ fn.displayName = "FieldTypeRenderer";
332
+ return fn;
333
+ }, [field.id]);
334
+ var fieldInformationRenderer = (_fieldPlugin$field = fieldPlugin.field) === null || _fieldPlugin$field === void 0 ? void 0 : _fieldPlugin$field.renderInfo;
335
+ var info = [rendererPlugin === null || rendererPlugin === void 0 ? void 0 : rendererPlugin.renderer.name, field.multipleValues ? "multiple values" : null].filter(Boolean).join(", ");
155
336
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(FieldContainer, null, /*#__PURE__*/_react.default.createElement(Info, null, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
156
337
  use: "subtitle1"
157
338
  }, field.label), /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
158
339
  use: "caption"
159
- }, fieldPlugin.field.label, " ", field.multipleValues && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), /*#__PURE__*/_react.default.createElement(LowerCase, null, "(", info, ")"))), /*#__PURE__*/_react.default.createElement(Actions, null, canEdit ? /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
340
+ }, fieldPlugin.field.label, info && /*#__PURE__*/_react.default.createElement(LowerCase, null, " (", info, ")"))), fieldInformationRenderer ? fieldInformationRenderer({
341
+ model: model,
342
+ field: field
343
+ }) : defaultInformationRenderer(), /*#__PURE__*/_react.default.createElement(Actions, null, canEdit ? /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
160
344
  "data-testid": "cms.editor.edit-field",
161
345
  icon: /*#__PURE__*/_react.default.createElement(_edit.ReactComponent, null),
162
346
  onClick: function onClick() {
@@ -172,18 +356,28 @@ var Field = function Field(props) {
172
356
  key: pl.name
173
357
  });
174
358
  }), /*#__PURE__*/_react.default.createElement(_Menu.MenuItem, {
175
- disabled: !isFieldAllowedToBeTitle(field, parent),
359
+ disabled: !isFieldAllowedToBeTitle(model, field, parent),
176
360
  onClick: setAsTitle
177
361
  }, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
178
362
  icon: /*#__PURE__*/_react.default.createElement(_title24px.ReactComponent, null)
179
- })), t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Use as title"])))), /*#__PURE__*/_react.default.createElement(_Menu.MenuItem, {
363
+ })), t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["Use as title"])))), /*#__PURE__*/_react.default.createElement(_Menu.MenuItem, {
364
+ disabled: !isFieldAllowedToBeDescription(model, field, parent),
365
+ onClick: setAsDescription
366
+ }, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
367
+ icon: /*#__PURE__*/_react.default.createElement(_title24px.ReactComponent, null)
368
+ })), t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Use as description"])))), /*#__PURE__*/_react.default.createElement(_Menu.MenuItem, {
369
+ disabled: !isFieldAllowedToBeImage(model, field, parent),
370
+ onClick: setAsImage
371
+ }, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
372
+ icon: /*#__PURE__*/_react.default.createElement(_title24px.ReactComponent, null)
373
+ })), t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Use as image"])))), /*#__PURE__*/_react.default.createElement(_Menu.MenuItem, {
180
374
  onClick: onDelete
181
375
  }, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
182
376
  icon: /*#__PURE__*/_react.default.createElement(_delete.ReactComponent, null)
183
- })), t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Delete"]))))))), /*#__PURE__*/_react.default.createElement(FieldExtra, null, fieldPlugin.field.render && fieldPlugin.field.render({
377
+ })), t(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["Delete"]))))))), /*#__PURE__*/_react.default.createElement(FieldExtra, null, fieldPlugin.field.render && fieldPlugin.field.render({
184
378
  field: field,
185
- data: data,
186
- setData: setData
379
+ data: model,
380
+ setData: setModel
187
381
  })));
188
382
  };
189
383
  var _default = /*#__PURE__*/_react.default.memo(Field);