@webiny/app-headless-cms 5.24.0 → 5.25.0-beta.2

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 (427) hide show
  1. package/HeadlessCMS.d.ts +4 -3
  2. package/HeadlessCMS.js.map +1 -0
  3. package/admin/components/ContentEntryForm/ContentEntryForm.js +27 -6
  4. package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -0
  5. package/admin/components/ContentEntryForm/ContentEntryFormPreview.js +18 -2
  6. package/admin/components/ContentEntryForm/ContentEntryFormPreview.js.map +1 -0
  7. package/admin/components/ContentEntryForm/Fields.d.ts +1 -2
  8. package/admin/components/ContentEntryForm/Fields.js +1 -1
  9. package/admin/components/ContentEntryForm/Fields.js.map +1 -0
  10. package/admin/components/ContentEntryForm/Label.js.map +1 -0
  11. package/admin/components/ContentEntryForm/RenderFieldElement.d.ts +1 -2
  12. package/admin/components/ContentEntryForm/RenderFieldElement.js.map +1 -0
  13. package/admin/components/ContentEntryForm/functions/createValidators.d.ts +2 -1
  14. package/admin/components/ContentEntryForm/functions/createValidators.js +8 -5
  15. package/admin/components/ContentEntryForm/functions/createValidators.js.map +1 -0
  16. package/admin/components/ContentEntryForm/functions/getValue.d.ts +4 -3
  17. package/admin/components/ContentEntryForm/functions/getValue.js +0 -1
  18. package/admin/components/ContentEntryForm/functions/getValue.js.map +1 -0
  19. package/admin/components/ContentEntryForm/functions/setValue.d.ts +4 -3
  20. package/admin/components/ContentEntryForm/functions/setValue.js +0 -1
  21. package/admin/components/ContentEntryForm/functions/setValue.js.map +1 -0
  22. package/admin/components/ContentEntryForm/useBind.d.ts +3 -7
  23. package/admin/components/ContentEntryForm/useBind.js +6 -0
  24. package/admin/components/ContentEntryForm/useBind.js.map +1 -0
  25. package/admin/components/ContentEntryForm/useContentEntryForm.d.ts +2 -4
  26. package/admin/components/ContentEntryForm/useContentEntryForm.js +75 -26
  27. package/admin/components/ContentEntryForm/useContentEntryForm.js.map +1 -0
  28. package/admin/components/ContentEntryForm/useRenderPlugins.js.map +1 -0
  29. package/admin/components/ContentModelEditor/Context.d.ts +9 -7
  30. package/admin/components/ContentModelEditor/Context.js +158 -36
  31. package/admin/components/ContentModelEditor/Context.js.map +1 -0
  32. package/admin/components/ContentModelEditor/Editor.d.ts +1 -1
  33. package/admin/components/ContentModelEditor/Editor.js +5 -3
  34. package/admin/components/ContentModelEditor/Editor.js.map +1 -0
  35. package/admin/components/ContentModelEditor/FieldsSidebar.js.map +1 -0
  36. package/admin/components/ContentModelEditor/Header.js.map +1 -0
  37. package/admin/components/ContentModelEditor/PreviewTab.js.map +1 -0
  38. package/admin/components/ContentModelEditor/useContentModelEditor.d.ts +1 -1
  39. package/admin/components/ContentModelEditor/useContentModelEditor.js.map +1 -0
  40. package/admin/components/DragPreview.js +6 -1
  41. package/admin/components/DragPreview.js.map +1 -0
  42. package/admin/components/Draggable.js.map +1 -0
  43. package/admin/components/DropZone/Center.js.map +1 -0
  44. package/admin/components/DropZone/Horizontal.js +1 -1
  45. package/admin/components/DropZone/Horizontal.js.map +1 -0
  46. package/admin/components/DropZone/Vertical.js +1 -1
  47. package/admin/components/DropZone/Vertical.js.map +1 -0
  48. package/admin/components/DropZone/index.js.map +1 -0
  49. package/admin/components/Droppable.js.map +1 -0
  50. package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js.map +1 -0
  51. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +14 -4
  52. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js.map +1 -0
  53. package/admin/components/FieldEditor/EditFieldDialog/PredefinedValues.js +5 -1
  54. package/admin/components/FieldEditor/EditFieldDialog/PredefinedValues.js.map +1 -0
  55. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.d.ts +9 -4
  56. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js +13 -6
  57. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js.map +1 -0
  58. package/admin/components/FieldEditor/EditFieldDialog/functions/getValue.d.ts +2 -1
  59. package/admin/components/FieldEditor/EditFieldDialog/functions/getValue.js.map +1 -0
  60. package/admin/components/FieldEditor/EditFieldDialog/functions/setValue.d.ts +2 -1
  61. package/admin/components/FieldEditor/EditFieldDialog/functions/setValue.js +0 -1
  62. package/admin/components/FieldEditor/EditFieldDialog/functions/setValue.js.map +1 -0
  63. package/admin/components/FieldEditor/EditFieldDialog.d.ts +1 -1
  64. package/admin/components/FieldEditor/EditFieldDialog.js +35 -18
  65. package/admin/components/FieldEditor/EditFieldDialog.js.map +1 -0
  66. package/admin/components/FieldEditor/Field.js +2 -2
  67. package/admin/components/FieldEditor/Field.js.map +1 -0
  68. package/admin/components/FieldEditor/FieldEditor.js.map +1 -0
  69. package/admin/components/FieldEditor/FieldEditorContext.d.ts +9 -9
  70. package/admin/components/FieldEditor/FieldEditorContext.js +43 -15
  71. package/admin/components/FieldEditor/FieldEditorContext.js.map +1 -0
  72. package/admin/components/FieldEditor/Styled.d.ts +2 -3
  73. package/admin/components/FieldEditor/Styled.js.map +1 -0
  74. package/admin/components/FieldEditor/index.js.map +1 -0
  75. package/admin/components/FieldEditor/useFieldEditor.js.map +1 -0
  76. package/admin/components/FieldEditor/utils/deleteField.d.ts +5 -5
  77. package/admin/components/FieldEditor/utils/deleteField.js +4 -0
  78. package/admin/components/FieldEditor/utils/deleteField.js.map +1 -0
  79. package/admin/components/FieldEditor/utils/getFieldPosition.d.ts +2 -2
  80. package/admin/components/FieldEditor/utils/getFieldPosition.js +3 -2
  81. package/admin/components/FieldEditor/utils/getFieldPosition.js.map +1 -0
  82. package/admin/components/FieldEditor/utils/index.js.map +1 -0
  83. package/admin/components/FieldEditor/utils/moveField.d.ts +2 -2
  84. package/admin/components/FieldEditor/utils/moveField.js +3 -1
  85. package/admin/components/FieldEditor/utils/moveField.js.map +1 -0
  86. package/admin/components/FieldEditor/utils/moveRow.js.map +1 -0
  87. package/admin/constants/statusLabels.js.map +1 -0
  88. package/admin/contexts/Cms/NetworkError.js.map +1 -0
  89. package/admin/contexts/Cms/index.js +22 -7
  90. package/admin/contexts/Cms/index.js.map +1 -0
  91. package/admin/elements/ContentGroupMenuElement.js.map +1 -0
  92. package/admin/elements/ContentModelMenuElement.js.map +1 -0
  93. package/admin/elements/NothingToShowElement.js.map +1 -0
  94. package/admin/graphql/contentEntries.d.ts +8 -8
  95. package/admin/graphql/contentEntries.js.map +1 -0
  96. package/admin/graphql/contentModels.d.ts +2 -2
  97. package/admin/graphql/contentModels.js.map +1 -0
  98. package/admin/graphql/createFieldsList.js.map +1 -0
  99. package/admin/hooks/index.js.map +1 -0
  100. package/admin/hooks/useApolloClient.js.map +1 -0
  101. package/admin/hooks/useCms.js.map +1 -0
  102. package/admin/hooks/useLazyQuery.d.ts +2 -1
  103. package/admin/hooks/useLazyQuery.js.map +1 -0
  104. package/admin/hooks/useMutation.d.ts +2 -1
  105. package/admin/hooks/useMutation.js.map +1 -0
  106. package/admin/hooks/usePermission.js +20 -19
  107. package/admin/hooks/usePermission.js.map +1 -0
  108. package/admin/hooks/useQuery.d.ts +2 -2
  109. package/admin/hooks/useQuery.js.map +1 -0
  110. package/admin/hooks/useQueryLocale.d.ts +2 -2
  111. package/admin/hooks/useQueryLocale.js.map +1 -0
  112. package/admin/menus/CmsMenuLoader.js.map +1 -0
  113. package/admin/menus/ContentGroupsMenuItems.js +1 -1
  114. package/admin/menus/ContentGroupsMenuItems.js.map +1 -0
  115. package/admin/menus/GlobalSearchPlugins.d.ts +0 -1
  116. package/admin/menus/GlobalSearchPlugins.js +1 -1
  117. package/admin/menus/GlobalSearchPlugins.js.map +1 -0
  118. package/admin/menus/NothingToShowElement.js.map +1 -0
  119. package/admin/plugins/apiInformation/index.js +3 -3
  120. package/admin/plugins/apiInformation/index.js.map +1 -0
  121. package/admin/plugins/definitions/CmsEditorFieldValidatorFileTypePlugin.js.map +1 -0
  122. package/admin/plugins/definitions/CmsFieldValidatorFileTypePlugin.js.map +1 -0
  123. package/admin/plugins/editor/defaultBar/BackButton.js +4 -2
  124. package/admin/plugins/editor/defaultBar/BackButton.js.map +1 -0
  125. package/admin/plugins/editor/defaultBar/CreateContentButton.js.map +1 -0
  126. package/admin/plugins/editor/defaultBar/Divider.d.ts +1 -2
  127. package/admin/plugins/editor/defaultBar/Divider.js.map +1 -0
  128. package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js +11 -1
  129. package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js.map +1 -0
  130. package/admin/plugins/editor/defaultBar/FormSettings/FormSettingsButton.js.map +1 -0
  131. package/admin/plugins/editor/defaultBar/FormSettings/FormSettingsStyled.d.ts +2 -2
  132. package/admin/plugins/editor/defaultBar/FormSettings/FormSettingsStyled.js.map +1 -0
  133. package/admin/plugins/editor/defaultBar/FormSettings/index.js.map +1 -0
  134. package/admin/plugins/editor/defaultBar/Name/Name.js +1 -1
  135. package/admin/plugins/editor/defaultBar/Name/Name.js.map +1 -0
  136. package/admin/plugins/editor/defaultBar/Name/NameStyled.d.ts +3 -4
  137. package/admin/plugins/editor/defaultBar/Name/NameStyled.js.map +1 -0
  138. package/admin/plugins/editor/defaultBar/Name/index.js.map +1 -0
  139. package/admin/plugins/editor/defaultBar/SaveContentModelButton.js +37 -32
  140. package/admin/plugins/editor/defaultBar/SaveContentModelButton.js.map +1 -0
  141. package/admin/plugins/editor/defaultBar/index.d.ts +0 -1
  142. package/admin/plugins/editor/defaultBar/index.js.map +1 -0
  143. package/admin/plugins/editor/formSettings/components/GeneralSettings.d.ts +0 -1
  144. package/admin/plugins/editor/formSettings/components/GeneralSettings.js.map +1 -0
  145. package/admin/plugins/editor/formSettings/components/GroupSelect.d.ts +0 -1
  146. package/admin/plugins/editor/formSettings/components/GroupSelect.js +1 -1
  147. package/admin/plugins/editor/formSettings/components/GroupSelect.js.map +1 -0
  148. package/admin/plugins/editor/formSettings/index.js.map +1 -0
  149. package/admin/plugins/fieldRenderers/Accordion.d.ts +1 -1
  150. package/admin/plugins/fieldRenderers/Accordion.js +1 -1
  151. package/admin/plugins/fieldRenderers/Accordion.js.map +1 -0
  152. package/admin/plugins/fieldRenderers/DynamicSection.d.ts +7 -1
  153. package/admin/plugins/fieldRenderers/DynamicSection.js +7 -4
  154. package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -0
  155. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js +0 -1
  156. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js.map +1 -0
  157. package/admin/plugins/fieldRenderers/boolean/index.js.map +1 -0
  158. package/admin/plugins/fieldRenderers/checkboxes.js +11 -6
  159. package/admin/plugins/fieldRenderers/checkboxes.js.map +1 -0
  160. package/admin/plugins/fieldRenderers/dateTime/DateOnly.d.ts +2 -1
  161. package/admin/plugins/fieldRenderers/dateTime/DateOnly.js +40 -9
  162. package/admin/plugins/fieldRenderers/dateTime/DateOnly.js.map +1 -0
  163. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithTimezone.d.ts +2 -2
  164. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithTimezone.js +74 -18
  165. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithTimezone.js.map +1 -0
  166. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithoutTimezone.d.ts +2 -2
  167. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithoutTimezone.js +72 -16
  168. package/admin/plugins/fieldRenderers/dateTime/DateTimeWithoutTimezone.js.map +1 -0
  169. package/admin/plugins/fieldRenderers/dateTime/Input.js.map +1 -0
  170. package/admin/plugins/fieldRenderers/dateTime/Select.js.map +1 -0
  171. package/admin/plugins/fieldRenderers/dateTime/Time.js.map +1 -0
  172. package/admin/plugins/fieldRenderers/dateTime/dateTimeField.js +4 -4
  173. package/admin/plugins/fieldRenderers/dateTime/dateTimeField.js.map +1 -0
  174. package/admin/plugins/fieldRenderers/dateTime/dateTimeFields.js +15 -10
  175. package/admin/plugins/fieldRenderers/dateTime/dateTimeFields.js.map +1 -0
  176. package/admin/plugins/fieldRenderers/dateTime/index.js.map +1 -0
  177. package/admin/plugins/fieldRenderers/dateTime/utils.d.ts +3 -3
  178. package/admin/plugins/fieldRenderers/dateTime/utils.js.map +1 -0
  179. package/admin/plugins/fieldRenderers/file/File.d.ts +4 -4
  180. package/admin/plugins/fieldRenderers/file/File.js +9 -3
  181. package/admin/plugins/fieldRenderers/file/File.js.map +1 -0
  182. package/admin/plugins/fieldRenderers/file/fileField.js +4 -4
  183. package/admin/plugins/fieldRenderers/file/fileField.js.map +1 -0
  184. package/admin/plugins/fieldRenderers/file/fileFields.js +10 -5
  185. package/admin/plugins/fieldRenderers/file/fileFields.js.map +1 -0
  186. package/admin/plugins/fieldRenderers/file/index.js.map +1 -0
  187. package/admin/plugins/fieldRenderers/file/utils.d.ts +0 -1
  188. package/admin/plugins/fieldRenderers/file/utils.js +2 -2
  189. package/admin/plugins/fieldRenderers/file/utils.js.map +1 -0
  190. package/admin/plugins/fieldRenderers/longText/index.js.map +1 -0
  191. package/admin/plugins/fieldRenderers/longText/longText.js +0 -1
  192. package/admin/plugins/fieldRenderers/longText/longText.js.map +1 -0
  193. package/admin/plugins/fieldRenderers/longText/longTexts.js +1 -1
  194. package/admin/plugins/fieldRenderers/longText/longTexts.js.map +1 -0
  195. package/admin/plugins/fieldRenderers/number/index.js.map +1 -0
  196. package/admin/plugins/fieldRenderers/number/numberInput.js +0 -1
  197. package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -0
  198. package/admin/plugins/fieldRenderers/number/numberInputs.js +1 -1
  199. package/admin/plugins/fieldRenderers/number/numberInputs.js.map +1 -0
  200. package/admin/plugins/fieldRenderers/object/StyledComponents.js.map +1 -0
  201. package/admin/plugins/fieldRenderers/object/index.js.map +1 -0
  202. package/admin/plugins/fieldRenderers/object/multipleObjects.js +5 -5
  203. package/admin/plugins/fieldRenderers/object/multipleObjects.js.map +1 -0
  204. package/admin/plugins/fieldRenderers/object/singleObject.js +3 -2
  205. package/admin/plugins/fieldRenderers/object/singleObject.js.map +1 -0
  206. package/admin/plugins/fieldRenderers/radioButtons.js +11 -5
  207. package/admin/plugins/fieldRenderers/radioButtons.js.map +1 -0
  208. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.d.ts +2 -1
  209. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +2 -4
  210. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -0
  211. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.d.ts +2 -1
  212. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js.map +1 -0
  213. package/admin/plugins/fieldRenderers/ref/components/MissingEntryHelpText.d.ts +3 -2
  214. package/admin/plugins/fieldRenderers/ref/components/MissingEntryHelpText.js.map +1 -0
  215. package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js +14 -8
  216. package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js.map +1 -0
  217. package/admin/plugins/fieldRenderers/ref/components/createEntryUrl.js.map +1 -0
  218. package/admin/plugins/fieldRenderers/ref/components/getOptions.d.ts +4 -3
  219. package/admin/plugins/fieldRenderers/ref/components/getOptions.js +1 -1
  220. package/admin/plugins/fieldRenderers/ref/components/getOptions.js.map +1 -0
  221. package/admin/plugins/fieldRenderers/ref/components/graphql.d.ts +4 -14
  222. package/admin/plugins/fieldRenderers/ref/components/graphql.js +1 -1
  223. package/admin/plugins/fieldRenderers/ref/components/graphql.js.map +1 -0
  224. package/admin/plugins/fieldRenderers/ref/components/renderItem.js.map +1 -0
  225. package/admin/plugins/fieldRenderers/ref/components/useReference.d.ts +6 -11
  226. package/admin/plugins/fieldRenderers/ref/components/useReference.js +4 -3
  227. package/admin/plugins/fieldRenderers/ref/components/useReference.js.map +1 -0
  228. package/admin/plugins/fieldRenderers/ref/components/useReferences.d.ts +3 -9
  229. package/admin/plugins/fieldRenderers/ref/components/useReferences.js +1 -2
  230. package/admin/plugins/fieldRenderers/ref/components/useReferences.js.map +1 -0
  231. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.js +4 -3
  232. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntry.js.map +1 -0
  233. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntryDialog.js +6 -1
  234. package/admin/plugins/fieldRenderers/ref/hooks/useNewRefEntryDialog.js.map +1 -0
  235. package/admin/plugins/fieldRenderers/ref/index.js.map +1 -0
  236. package/admin/plugins/fieldRenderers/ref/refInput.js +0 -1
  237. package/admin/plugins/fieldRenderers/ref/refInput.js.map +1 -0
  238. package/admin/plugins/fieldRenderers/ref/refInputs.js +1 -2
  239. package/admin/plugins/fieldRenderers/ref/refInputs.js.map +1 -0
  240. package/admin/plugins/fieldRenderers/richText/index.js.map +1 -0
  241. package/admin/plugins/fieldRenderers/richText/richTextInput.js +5 -1
  242. package/admin/plugins/fieldRenderers/richText/richTextInput.js.map +1 -0
  243. package/admin/plugins/fieldRenderers/richText/richTextInputs.js +9 -3
  244. package/admin/plugins/fieldRenderers/richText/richTextInputs.js.map +1 -0
  245. package/admin/plugins/fieldRenderers/select.js +28 -7
  246. package/admin/plugins/fieldRenderers/select.js.map +1 -0
  247. package/admin/plugins/fieldRenderers/text/index.js.map +1 -0
  248. package/admin/plugins/fieldRenderers/text/textInput.js +0 -1
  249. package/admin/plugins/fieldRenderers/text/textInput.js.map +1 -0
  250. package/admin/plugins/fieldRenderers/text/textInputs.js +1 -1
  251. package/admin/plugins/fieldRenderers/text/textInputs.js.map +1 -0
  252. package/admin/plugins/fieldValidators/date/availableValidators.d.ts +1 -1
  253. package/admin/plugins/fieldValidators/date/availableValidators.js.map +1 -0
  254. package/admin/plugins/fieldValidators/date/createDateInputField.d.ts +0 -1
  255. package/admin/plugins/fieldValidators/date/createDateInputField.js +5 -3
  256. package/admin/plugins/fieldValidators/date/createDateInputField.js.map +1 -0
  257. package/admin/plugins/fieldValidators/dateGte.js +1 -1
  258. package/admin/plugins/fieldValidators/dateGte.js.map +1 -0
  259. package/admin/plugins/fieldValidators/dateLte.js +1 -1
  260. package/admin/plugins/fieldValidators/dateLte.js.map +1 -0
  261. package/admin/plugins/fieldValidators/gte.js.map +1 -0
  262. package/admin/plugins/fieldValidators/in.js.map +1 -0
  263. package/admin/plugins/fieldValidators/lte.js.map +1 -0
  264. package/admin/plugins/fieldValidators/maxLength.js.map +1 -0
  265. package/admin/plugins/fieldValidators/minLength.js.map +1 -0
  266. package/admin/plugins/fieldValidators/pattern.js +6 -0
  267. package/admin/plugins/fieldValidators/pattern.js.map +1 -0
  268. package/admin/plugins/fieldValidators/patternPlugins/email.js.map +1 -0
  269. package/admin/plugins/fieldValidators/patternPlugins/lowerCase.js.map +1 -0
  270. package/admin/plugins/fieldValidators/patternPlugins/lowerCaseSpace.js.map +1 -0
  271. package/admin/plugins/fieldValidators/patternPlugins/upperCase.js.map +1 -0
  272. package/admin/plugins/fieldValidators/patternPlugins/upperCaseSpace.js.map +1 -0
  273. package/admin/plugins/fieldValidators/patternPlugins/url.js.map +1 -0
  274. package/admin/plugins/fieldValidators/required.js.map +1 -0
  275. package/admin/plugins/fieldValidators/unique.js.map +1 -0
  276. package/admin/plugins/fields/PredefinedValuesDynamicFieldset.js.map +1 -0
  277. package/admin/plugins/fields/boolean.js.map +1 -0
  278. package/admin/plugins/fields/dateTime.js.map +1 -0
  279. package/admin/plugins/fields/file.js +2 -2
  280. package/admin/plugins/fields/file.js.map +1 -0
  281. package/admin/plugins/fields/longText.js.map +1 -0
  282. package/admin/plugins/fields/number.js.map +1 -0
  283. package/admin/plugins/fields/object/ObjectFields.js +2 -2
  284. package/admin/plugins/fields/object/ObjectFields.js.map +1 -0
  285. package/admin/plugins/fields/object.js +1 -1
  286. package/admin/plugins/fields/object.js.map +1 -0
  287. package/admin/plugins/fields/ref.js +5 -5
  288. package/admin/plugins/fields/ref.js.map +1 -0
  289. package/admin/plugins/fields/richText.js.map +1 -0
  290. package/admin/plugins/fields/text.js.map +1 -0
  291. package/admin/plugins/getObjectId.js.map +1 -0
  292. package/admin/plugins/icons.js +10 -3
  293. package/admin/plugins/icons.js.map +1 -0
  294. package/admin/plugins/index.d.ts +0 -1
  295. package/admin/plugins/index.js.map +1 -0
  296. package/admin/plugins/install.js +11 -7
  297. package/admin/plugins/install.js.map +1 -0
  298. package/admin/plugins/permissionRenderer/CmsPermissions.js +14 -9
  299. package/admin/plugins/permissionRenderer/CmsPermissions.js.map +1 -0
  300. package/admin/plugins/permissionRenderer/components/ContentEntryPermission.d.ts +2 -2
  301. package/admin/plugins/permissionRenderer/components/ContentEntryPermission.js +7 -6
  302. package/admin/plugins/permissionRenderer/components/ContentEntryPermission.js.map +1 -0
  303. package/admin/plugins/permissionRenderer/components/ContentModelGroupPermission.d.ts +2 -2
  304. package/admin/plugins/permissionRenderer/components/ContentModelGroupPermission.js +7 -6
  305. package/admin/plugins/permissionRenderer/components/ContentModelGroupPermission.js.map +1 -0
  306. package/admin/plugins/permissionRenderer/components/ContentModelList.js.map +1 -0
  307. package/admin/plugins/permissionRenderer/components/ContentModelPermission.d.ts +2 -2
  308. package/admin/plugins/permissionRenderer/components/ContentModelPermission.js +7 -6
  309. package/admin/plugins/permissionRenderer/components/ContentModelPermission.js.map +1 -0
  310. package/admin/plugins/permissionRenderer/components/PermissionRendererWrapper.js.map +1 -0
  311. package/admin/plugins/permissionRenderer/components/PermissionSelector.d.ts +1 -1
  312. package/admin/plugins/permissionRenderer/components/PermissionSelector.js +13 -1
  313. package/admin/plugins/permissionRenderer/components/PermissionSelector.js.map +1 -0
  314. package/admin/plugins/permissionRenderer/components/StyledComponents.d.ts +1 -2
  315. package/admin/plugins/permissionRenderer/components/StyledComponents.js.map +1 -0
  316. package/admin/plugins/permissionRenderer/components/types.js.map +1 -0
  317. package/admin/plugins/permissionRenderer/components/useCmsData.js +4 -6
  318. package/admin/plugins/permissionRenderer/components/useCmsData.js.map +1 -0
  319. package/admin/plugins/permissionRenderer/index.js.map +1 -0
  320. package/admin/plugins/routes.js.map +1 -0
  321. package/admin/plugins/transformers/dateTransformer.js +20 -24
  322. package/admin/plugins/transformers/dateTransformer.js.map +1 -0
  323. package/admin/plugins/transformers/index.js.map +1 -0
  324. package/admin/plugins/transformers/numberTransformer.js.map +1 -0
  325. package/admin/plugins/upgrades/5.19.0/UpgradeItemsInfo.d.ts +1 -1
  326. package/admin/plugins/upgrades/5.19.0/UpgradeItemsInfo.js.map +1 -0
  327. package/admin/plugins/upgrades/5.19.0/createCmsApolloClient.d.ts +2 -2
  328. package/admin/plugins/upgrades/5.19.0/createCmsApolloClient.js.map +1 -0
  329. package/admin/plugins/upgrades/5.19.0/createListEntriesQuery.js.map +1 -0
  330. package/admin/plugins/upgrades/5.19.0/createListModelsQuery.js.map +1 -0
  331. package/admin/plugins/upgrades/5.19.0/createRepublishMutation.js.map +1 -0
  332. package/admin/plugins/upgrades/5.19.0/createUpgradeMutation.js.map +1 -0
  333. package/admin/plugins/upgrades/5.19.0/fetchModelEntries.d.ts +2 -2
  334. package/admin/plugins/upgrades/5.19.0/fetchModelEntries.js.map +1 -0
  335. package/admin/plugins/upgrades/5.19.0/types.js.map +1 -0
  336. package/admin/plugins/upgrades/v5.0.0.d.ts +0 -1
  337. package/admin/plugins/upgrades/v5.0.0.js.map +1 -0
  338. package/admin/plugins/upgrades/v5.19.0.d.ts +0 -1
  339. package/admin/plugins/upgrades/v5.19.0.js.map +1 -0
  340. package/admin/plugins/upgrades/v5.5.0.d.ts +0 -1
  341. package/admin/plugins/upgrades/v5.5.0.js.map +1 -0
  342. package/admin/plugins/upgrades/v5.8.0.d.ts +0 -1
  343. package/admin/plugins/upgrades/v5.8.0.js.map +1 -0
  344. package/admin/plugins/validators/dateGte.js.map +1 -0
  345. package/admin/plugins/validators/dateLte.js.map +1 -0
  346. package/admin/plugins/validators/gte.js.map +1 -0
  347. package/admin/plugins/validators/in.js.map +1 -0
  348. package/admin/plugins/validators/lte.js.map +1 -0
  349. package/admin/plugins/validators/maxLength.js.map +1 -0
  350. package/admin/plugins/validators/minLength.js.map +1 -0
  351. package/admin/plugins/validators/pattern.js.map +1 -0
  352. package/admin/plugins/validators/patternPlugins/email.js.map +1 -0
  353. package/admin/plugins/validators/patternPlugins/lowerCase.js.map +1 -0
  354. package/admin/plugins/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
  355. package/admin/plugins/validators/patternPlugins/upperCase.js.map +1 -0
  356. package/admin/plugins/validators/patternPlugins/upperCaseSpace.js.map +1 -0
  357. package/admin/plugins/validators/patternPlugins/url.js.map +1 -0
  358. package/admin/plugins/validators/required.js.map +1 -0
  359. package/admin/plugins/validators/timeGte.js.map +1 -0
  360. package/admin/plugins/validators/timeLte.js.map +1 -0
  361. package/admin/plugins/validators/unique.js.map +1 -0
  362. package/admin/plugins/welcomeScreenWidget.js.map +1 -0
  363. package/admin/views/contentEntries/ContentEntries.js +2 -2
  364. package/admin/views/contentEntries/ContentEntries.js.map +1 -0
  365. package/admin/views/contentEntries/ContentEntriesContext.js +13 -4
  366. package/admin/views/contentEntries/ContentEntriesContext.js.map +1 -0
  367. package/admin/views/contentEntries/ContentEntriesList.js.map +1 -0
  368. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.d.ts +10 -7
  369. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +85 -4
  370. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -0
  371. package/admin/views/contentEntries/ContentEntry/RevisionListItem.js +4 -2
  372. package/admin/views/contentEntries/ContentEntry/RevisionListItem.js.map +1 -0
  373. package/admin/views/contentEntries/ContentEntry/RevisionsList.js.map +1 -0
  374. package/admin/views/contentEntries/ContentEntry/cache.js +19 -23
  375. package/admin/views/contentEntries/ContentEntry/cache.js.map +1 -0
  376. package/admin/views/contentEntries/ContentEntry/header/Header.js.map +1 -0
  377. package/admin/views/contentEntries/ContentEntry/header/contentFormOptionsMenu/ContentFormOptionsMenu.js +15 -8
  378. package/admin/views/contentEntries/ContentEntry/header/contentFormOptionsMenu/ContentFormOptionsMenu.js.map +1 -0
  379. package/admin/views/contentEntries/ContentEntry/header/index.js.map +1 -0
  380. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.d.ts +1 -2
  381. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js.map +1 -0
  382. package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js.map +1 -0
  383. package/admin/views/contentEntries/ContentEntry/header/revisionSelector/RevisionSelector.js +8 -7
  384. package/admin/views/contentEntries/ContentEntry/header/revisionSelector/RevisionSelector.js.map +1 -0
  385. package/admin/views/contentEntries/ContentEntry/header/saveAndPublishContent/SaveAndPublishContent.js +2 -2
  386. package/admin/views/contentEntries/ContentEntry/header/saveAndPublishContent/SaveAndPublishContent.js.map +1 -0
  387. package/admin/views/contentEntries/ContentEntry/header/saveContent/SaveContent.js +2 -2
  388. package/admin/views/contentEntries/ContentEntry/header/saveContent/SaveContent.js.map +1 -0
  389. package/admin/views/contentEntries/ContentEntry/prepareFormData.js +2 -1
  390. package/admin/views/contentEntries/ContentEntry/prepareFormData.js.map +1 -0
  391. package/admin/views/contentEntries/ContentEntry/useRevision.js +105 -47
  392. package/admin/views/contentEntries/ContentEntry/useRevision.js.map +1 -0
  393. package/admin/views/contentEntries/ContentEntry.js.map +1 -0
  394. package/admin/views/contentEntries/hooks/useContentEntries.js.map +1 -0
  395. package/admin/views/contentEntries/hooks/useContentEntriesList.d.ts +1 -2
  396. package/admin/views/contentEntries/hooks/useContentEntriesList.js +4 -4
  397. package/admin/views/contentEntries/hooks/useContentEntriesList.js.map +1 -0
  398. package/admin/views/contentEntries/hooks/useContentEntry.js.map +1 -0
  399. package/admin/views/contentModelGroups/ContentModelGroups.js +4 -3
  400. package/admin/views/contentModelGroups/ContentModelGroups.js.map +1 -0
  401. package/admin/views/contentModelGroups/ContentModelGroupsDataList.js +6 -3
  402. package/admin/views/contentModelGroups/ContentModelGroupsDataList.js.map +1 -0
  403. package/admin/views/contentModelGroups/ContentModelGroupsForm.js +23 -8
  404. package/admin/views/contentModelGroups/ContentModelGroupsForm.js.map +1 -0
  405. package/admin/views/contentModelGroups/DelayedOnChange.js.map +1 -0
  406. package/admin/views/contentModelGroups/IconPicker.js +11 -3
  407. package/admin/views/contentModelGroups/IconPicker.js.map +1 -0
  408. package/admin/views/contentModelGroups/graphql.js.map +1 -0
  409. package/admin/views/contentModels/CloneContentModelDialog.js +25 -34
  410. package/admin/views/contentModels/CloneContentModelDialog.js.map +1 -0
  411. package/admin/views/contentModels/ContentModelEditor.js +2 -2
  412. package/admin/views/contentModels/ContentModelEditor.js.map +1 -0
  413. package/admin/views/contentModels/ContentModels.js +5 -4
  414. package/admin/views/contentModels/ContentModels.js.map +1 -0
  415. package/admin/views/contentModels/ContentModelsDataList.js +9 -2
  416. package/admin/views/contentModels/ContentModelsDataList.js.map +1 -0
  417. package/admin/views/contentModels/NewContentModelDialog.js +17 -3
  418. package/admin/views/contentModels/NewContentModelDialog.js.map +1 -0
  419. package/admin/views/contentModels/cache.js +38 -12
  420. package/admin/views/contentModels/cache.js.map +1 -0
  421. package/admin/views/contentModels/types.js.map +1 -0
  422. package/admin/views/utils.js.map +1 -0
  423. package/admin/viewsGraphql.js.map +1 -0
  424. package/index.js.map +1 -0
  425. package/package.json +26 -25
  426. package/types.d.ts +41 -7
  427. package/types.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ContentModelGroupsForm.tsx"],"names":["React","useCallback","styled","isEmpty","get","Form","Grid","Cell","Input","ButtonDefault","ButtonIcon","ButtonPrimary","CircularProgress","i18n","validation","SimpleFormHeader","SimpleForm","SimpleFormFooter","SimpleFormContent","IconPicker","useRouter","useSnackbar","EmptyView","ReactComponent","AddIcon","useMutation","useQuery","GQL","usePermission","Tooltip","t","ns","ButtonWrapper","display","justifyContent","ContentModelGroupsForm","canCreate","location","history","showSnackbar","canEdit","newEntry","URLSearchParams","search","id","getQuery","GET_CONTENT_MODEL_GROUP","variables","skip","onCompleted","data","error","contentModelGroup","push","message","CREATE_CONTENT_MODEL_GROUP","update","cache","gqlParams","query","LIST_CONTENT_MODEL_GROUPS","result","readQuery","listContentModelGroups","writeQuery","create","createMutation","UPDATE_CONTENT_MODEL_GROUP","updateMutation","loading","find","item","createOperation","group","name","description","icon","onSubmit","response","showEmptyView","form","Bind","plugin","ev","submit"],"mappings":"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","sourcesContent":["import React, { useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { Form, FormRenderPropParams } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { validation } from \"@webiny/validation\";\n\nimport {\n SimpleFormHeader,\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport IconPicker from \"./IconPicker\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { useMutation, useQuery } from \"../../hooks\";\nimport * as GQL from \"./graphql\";\nimport usePermission from \"../../hooks/usePermission\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport {\n CmsGroup,\n CreateCmsGroupMutationResponse,\n CreateCmsGroupMutationVariables,\n GetCmsGroupQueryResponse,\n GetCmsGroupQueryVariables,\n ListCmsGroupsQueryResponse,\n UpdateCmsGroupMutationResponse,\n UpdateCmsGroupMutationVariables\n} from \"./graphql\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/content-model-groups/form\");\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\ninterface ContentModelGroupsFormProps {\n canCreate: boolean;\n}\nconst ContentModelGroupsForm: React.FC<ContentModelGroupsFormProps> = ({ canCreate }) => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const { canEdit } = usePermission();\n\n const newEntry = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery<GetCmsGroupQueryResponse, GetCmsGroupQueryVariables>(\n GQL.GET_CONTENT_MODEL_GROUP,\n {\n variables: {\n id: id as string\n },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.contentModelGroup;\n if (error) {\n history.push(\"/cms/content-model-group\");\n showSnackbar(error.message);\n }\n }\n }\n );\n\n // Create a new group and update list cache\n const [create, createMutation] = useMutation<\n CreateCmsGroupMutationResponse,\n CreateCmsGroupMutationVariables\n >(GQL.CREATE_CONTENT_MODEL_GROUP, {\n update(cache, { data }) {\n if (!data || data.contentModelGroup.error) {\n return;\n }\n\n const gqlParams = {\n query: GQL.LIST_CONTENT_MODEL_GROUPS\n };\n const result = cache.readQuery<ListCmsGroupsQueryResponse>(gqlParams);\n if (!result || !result.listContentModelGroups) {\n return;\n }\n const { listContentModelGroups } = result;\n cache.writeQuery({\n ...gqlParams,\n data: {\n listContentModelGroups: {\n ...listContentModelGroups,\n data: [data.contentModelGroup.data, ...listContentModelGroups.data]\n }\n }\n });\n }\n });\n const [update, updateMutation] = useMutation<\n UpdateCmsGroupMutationResponse,\n UpdateCmsGroupMutationVariables\n >(GQL.UPDATE_CONTENT_MODEL_GROUP);\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const createOperation = useCallback(\n (group: Partial<CmsGroup>) => {\n if (!group.id) {\n return create({\n variables: {\n data: {\n name: group.name,\n description: group.description,\n icon: group.icon\n }\n }\n });\n }\n return update({\n variables: {\n id: group.id,\n data: {\n name: group.name,\n description: group.description,\n icon: group.icon\n }\n }\n });\n },\n [create, update]\n );\n\n const onSubmit = useCallback(\n async (group: Partial<CmsGroup>): Promise<void> => {\n /**\n * Create or update, depends if group object has id property\n */\n const response = await createOperation(group);\n if (!response.data) {\n showSnackbar(`Missing response data ain Content Model Group Mutation Response.`);\n return;\n }\n\n const { data, error } = response.data.contentModelGroup;\n if (error) {\n showSnackbar(error.message);\n return;\n }\n /**\n * Redirect to a new group\n */\n if (!group.id) {\n history.push(`/cms/content-model-groups?id=${data.id}`);\n }\n showSnackbar(t`Content model group saved successfully!`);\n },\n [id]\n );\n\n const data: CmsGroup = getQuery.loading\n ? null\n : get(getQuery, \"data.contentModelGroup.data\", null);\n\n const showEmptyView = !newEntry && !loading && isEmpty(data);\n // Render \"No content selected\" view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display group details {message}`({\n message: canCreate ? \"or create a...\" : \"\"\n })}\n action={\n canCreate ? (\n <ButtonDefault\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/cms/content-model-groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New Group`}\n </ButtonDefault>\n ) : (\n <></>\n )\n }\n />\n );\n }\n\n return (\n <Form onSubmit={onSubmit} data={data || { icon: \"fas/star\" }}>\n {({ data, form, Bind }: FormRenderPropParams<CmsGroup>) => (\n <SimpleForm data-testid={\"pb-content-model-groups-form\"}>\n <SimpleFormHeader title={data.name ? data.name : t`New content model group`} />\n {loading && <CircularProgress />}\n <SimpleFormContent>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"name\"\n validators={validation.create(\"required,maxLength:100\")}\n >\n <Input label={t`Name`} />\n </Bind>\n </Cell>\n\n <Cell span={12}>\n <Bind name=\"icon\" validators={validation.create(\"required\")}>\n <IconPicker\n label={t`Group icon`}\n description={t`Icon that will be displayed in the main menu.`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name=\"description\">\n <Input rows={5} label={t`Description`} />\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/cms/content-model-groups\")}\n >{t`Cancel`}</ButtonDefault>\n\n {canEdit(data, \"cms.contentModelGroup\") && (\n <React.Fragment>\n {!data.plugin ? (\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >{t`Save content model group`}</ButtonPrimary>\n ) : (\n <Tooltip\n content={\n \"Content model group is registered via a plugin.\"\n }\n placement={\"bottom\"}\n >\n <ButtonPrimary\n disabled\n >{t`Save content model group`}</ButtonPrimary>\n </Tooltip>\n )}\n </React.Fragment>\n )}\n </ButtonWrapper>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n );\n};\n\nexport default ContentModelGroupsForm;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["DelayedOnChange.ts"],"names":["React","noop","DelayedOnChange","value","callback","delay","clearTimeout","props","onChange","setState","changed","setTimeout","applyValue","state","children","other","newProps","renderProp","child","cloneElement","realOnKeyDown","onKeyDown","realOnBlur","onBlur","ev","persist","target","key","Component"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport noop from \"lodash/noop\";\n\n/**\n * This component is used to wrap Input and Textarea components to optimize form re-render.\n * These 2 are the only components that trigger form model change on each character input.\n * This means, whenever you type a letter an entire form re-renders.\n * On complex forms you will feel and see a significant delay if this component is not used.\n *\n * The logic behind this component is to serve as a middleware between Form and Input/Textarea, and only notify form of a change when\n * a user stops typing for given period of time (400ms by default).\n */\ninterface OnChangeCbCallable {\n (value: string): void;\n}\ninterface OnChangeCallable {\n (value: string, cb?: OnChangeCbCallable): void;\n}\ninterface ChildrenParams {\n value: string;\n onChange: OnChangeCallable;\n}\ninterface DelayedOnChangeProps {\n delay?: number;\n value?: string;\n onChange: OnChangeCallable;\n onKeyDown?: (ev: React.SyntheticEvent) => void;\n onBlur?: (ev: React.SyntheticEvent) => void;\n children: (params: ChildrenParams) => React.ReactElement;\n}\ninterface DelayedOnChangeState {\n value?: string;\n}\nclass DelayedOnChange extends React.Component<DelayedOnChangeProps, DelayedOnChangeState> {\n static defaultProps: Partial<DelayedOnChangeProps> = {\n delay: 400\n };\n\n private delay: number | null = null;\n\n public override readonly state: DelayedOnChangeState = {\n value: \"\"\n };\n\n public override componentDidMount() {\n this.setState({ value: this.props.value });\n }\n\n private applyValue = (value: any, callback: OnChangeCbCallable = noop): void => {\n this.delay && clearTimeout(this.delay);\n this.delay = null;\n this.props.onChange(value, callback);\n };\n\n private onChange = (value: string): void => {\n this.setState({ value }, this.changed);\n };\n\n private changed = (): void => {\n this.delay && clearTimeout(this.delay);\n this.delay = null;\n this.delay = setTimeout(\n () => this.applyValue(this.state.value),\n this.props.delay\n ) as unknown as number;\n };\n\n public override render(): React.ReactNode {\n const { children, ...other } = this.props;\n const newProps: Omit<DelayedOnChangeProps, \"children\"> = {\n ...other,\n value: this.state.value,\n onChange: this.onChange\n };\n\n const renderProp = typeof children === \"function\" ? children : false;\n const child = renderProp\n ? renderProp(newProps as Required<DelayedOnChangeProps>)\n : React.cloneElement(children as unknown as React.ReactElement, newProps);\n\n const props = { ...child.props };\n const realOnKeyDown = props.onKeyDown || noop;\n const realOnBlur = props.onBlur || noop;\n\n // Need to apply value if input lost focus\n props.onBlur = (ev: React.SyntheticEvent) => {\n ev.persist();\n this.applyValue((ev.target as HTMLInputElement).value, () => realOnBlur(ev));\n };\n\n // Need to listen for TAB key to apply new value immediately, without delay. Otherwise validation will be triggered with old value.\n props.onKeyDown = (ev: React.KeyboardEvent) => {\n ev.persist();\n if (ev.key === \"Tab\") {\n this.applyValue((ev.target as HTMLInputElement).value, () => realOnKeyDown(ev));\n } else if (ev.key === \"Enter\" && props[\"data-on-enter\"]) {\n this.applyValue((ev.target as HTMLInputElement).value, () => realOnKeyDown(ev));\n } else {\n realOnKeyDown(ev);\n }\n };\n\n return React.cloneElement(child, props);\n }\n}\n\nexport default DelayedOnChange;\n"]}
@@ -133,7 +133,10 @@ var IconPicker = function IconPicker(_ref) {
133
133
  style: style,
134
134
  className: gridItem,
135
135
  onClick: function onClick() {
136
- onChange(item.id.join("/"));
136
+ if (onChange) {
137
+ onChange(item.id.join("/"));
138
+ }
139
+
137
140
  closeMenu();
138
141
  }
139
142
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
@@ -177,6 +180,11 @@ var IconPicker = function IconPicker(_ref) {
177
180
  }));
178
181
  }, [icons]);
179
182
  var fontAwesomeIconValue = typeof value === "string" && value.includes("/") ? value.split("/") : ["fas", "star"];
183
+
184
+ var _ref6 = validation || {},
185
+ validationIsValid = _ref6.isValid,
186
+ validationMessage = _ref6.message;
187
+
180
188
  return /*#__PURE__*/React.createElement(React.Fragment, null, label && /*#__PURE__*/React.createElement("div", {
181
189
  className: iconPickerLabel
182
190
  }, /*#__PURE__*/React.createElement(Typography, {
@@ -196,9 +204,9 @@ var IconPicker = function IconPicker(_ref) {
196
204
  icon: fontAwesomeIconValue,
197
205
  size: "2x"
198
206
  }))
199
- }, mustRenderGrid && renderGrid)), validation.isValid === false && /*#__PURE__*/React.createElement(FormElementMessage, {
207
+ }, mustRenderGrid && renderGrid)), validationIsValid === false && /*#__PURE__*/React.createElement(FormElementMessage, {
200
208
  error: true
201
- }, validation.message), validation.isValid !== false && description && /*#__PURE__*/React.createElement(FormElementMessage, null, description));
209
+ }, validationMessage), validationIsValid !== false && description && /*#__PURE__*/React.createElement(FormElementMessage, null, description));
202
210
  };
203
211
 
204
212
  export default IconPicker;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["IconPicker.tsx"],"names":["React","css","plugins","Typography","Grid","FontAwesomeIcon","DelayedOnChange","Menu","Input","FormElementMessage","iconPickerLabel","marginBottom","marginLeft","MenuWrapper","color","backgroundColor","padding","NoResultWrapper","width","COLUMN_COUNT","gridItem","display","flexDirection","justifyContent","boxSizing","paddingTop","alignItems","textAlign","cursor","transform","borderRadius","transition","boxShadow","content","position","top","left","height","zIndex","opacity","grid","pickIcon","searchInput","input","useState","useCallback","useMemo","IconPicker","value","onChange","label","description","validation","filter","setFilter","mustRenderGrid","setMustRenderGrid","onFilterChange","cb","allIcons","iconPlugins","byType","reduce","icons","pl","concat","getIcons","ic","name","includes","renderCell","closeMenu","columnIndex","key","rowIndex","style","item","id","join","renderGrid","length","Math","ceil","fontAwesomeIconValue","split","validationIsValid","isValid","validationMessage","message"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { css } from \"emotion\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Grid } from \"react-virtualized\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport DelayedOnChange from \"./DelayedOnChange\";\nimport { Menu } from \"@webiny/ui/Menu\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { CmsIcon, CmsIconsPlugin } from \"~/types\";\nimport { FormComponentProps } from \"@webiny/ui/types\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { GridCellProps } from \"react-virtualized/dist/es/Grid\";\n\n/**\n * Controls the helper text below the checkbox.\n * @type {string}\n */\nconst iconPickerLabel = css({ marginBottom: 5, marginLeft: 2 });\n\nconst MenuWrapper = css({\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n backgroundColor: \"var(--mdc-theme-on-background)\",\n padding: \"16px 8px\"\n});\n\nconst NoResultWrapper = css({\n width: 640,\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n padding: \"16px 12px\"\n});\n\nconst COLUMN_COUNT = 6;\n\nconst gridItem = css({\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n boxSizing: \"border-box\",\n paddingTop: 15,\n alignItems: \"center\",\n textAlign: \"center\",\n cursor: \"pointer\",\n transform: \"translateZ(0)\",\n borderRadius: 2,\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n transition: \"all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)\",\n \"&::after\": {\n boxShadow: \"0 0.25rem 0.125rem 0 rgba(0,0,0,0.05)\",\n transition: \"opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)\",\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n zIndex: -1,\n opacity: 0\n },\n \"&:hover\": {\n backgroundColor: \"var(--mdc-theme-background)\",\n color: \"var(--mdc-theme-text-primary-on-background)\",\n \"&::after\": {\n opacity: 1\n }\n },\n \">svg\": {\n width: 42,\n marginBottom: 5\n }\n});\n\nconst grid = css({\n padding: 20\n});\n\nconst pickIcon = css({\n width: 50,\n textAlign: \"center\",\n cursor: \"pointer\"\n});\n\nconst searchInput = css({\n input: {\n padding: \"20px 12px 20px\"\n }\n});\n\nconst { useState, useCallback, useMemo } = React;\n\ninterface IconPickerProps extends FormComponentProps {\n label?: React.ReactNode;\n description?: React.ReactNode;\n}\nconst IconPicker: React.FC<IconPickerProps> = ({\n value,\n onChange,\n label,\n description,\n validation\n}) => {\n const [filter, setFilter] = useState(\"\");\n const [mustRenderGrid, setMustRenderGrid] = useState(false);\n\n const onFilterChange = useCallback(\n (value, cb) => {\n setFilter(value);\n cb();\n },\n [filter]\n );\n\n const allIcons: CmsIcon[] = useMemo(() => {\n const iconPlugins = plugins.byType<CmsIconsPlugin>(\"cms-icons\");\n return iconPlugins.reduce((icons: Array<CmsIcon>, pl) => {\n return icons.concat(pl.getIcons());\n }, []);\n }, []);\n\n const icons = useMemo(() => {\n return filter ? allIcons.filter(ic => ic.name.includes(filter)) : allIcons;\n }, [filter]);\n\n const renderCell = useCallback(\n ({ closeMenu }) => {\n return function renderCell({\n columnIndex,\n key,\n rowIndex,\n style\n }: GridCellProps): React.ReactNode {\n const item = icons[rowIndex * COLUMN_COUNT + columnIndex];\n if (!item) {\n return null;\n }\n\n return (\n <div\n key={key}\n style={style}\n className={gridItem}\n onClick={() => {\n if (onChange) {\n onChange(item.id.join(\"/\"));\n }\n closeMenu();\n }}\n >\n <FontAwesomeIcon icon={item.id} size={\"2x\"} />\n <Typography use={\"body2\"}>{item.name}</Typography>\n </div>\n );\n };\n },\n [icons]\n );\n\n const renderGrid = useCallback(\n ({ closeMenu }) => {\n return (\n <>\n <DelayedOnChange value={filter} onChange={onFilterChange}>\n {({ value, onChange }) => (\n <Input\n autoFocus\n className={searchInput}\n value={value}\n onChange={onChange}\n placeholder={\"Search icons...\"}\n />\n )}\n </DelayedOnChange>\n {icons.length === 0 ? (\n <div className={NoResultWrapper}>\n <Typography use=\"body1\">No results found.</Typography>\n </div>\n ) : (\n <Grid\n className={grid}\n cellRenderer={renderCell({ closeMenu })}\n columnCount={COLUMN_COUNT}\n columnWidth={100}\n height={440}\n rowCount={Math.ceil(icons.length / COLUMN_COUNT)}\n rowHeight={100}\n width={640}\n />\n )}\n </>\n );\n },\n [icons]\n );\n\n const fontAwesomeIconValue: any =\n typeof value === \"string\" && value.includes(\"/\") ? value.split(\"/\") : [\"fas\", \"star\"];\n\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n\n return (\n <>\n {label && (\n <div className={iconPickerLabel}>\n <Typography use={\"body1\"}>{label}</Typography>\n </div>\n )}\n <div className={MenuWrapper}>\n <Menu\n onOpen={() => setMustRenderGrid(true)}\n onClose={() => setMustRenderGrid(false)}\n handle={\n <div className={pickIcon}>\n <FontAwesomeIcon icon={fontAwesomeIconValue} size={\"2x\"} />\n </div>\n }\n >\n {mustRenderGrid && renderGrid}\n </Menu>\n </div>\n {validationIsValid === false && (\n <FormElementMessage error>{validationMessage}</FormElementMessage>\n )}\n {validationIsValid !== false && description && (\n <FormElementMessage>{description}</FormElementMessage>\n )}\n </>\n );\n};\n\nexport default IconPicker;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["graphql.ts"],"names":["gql","ERROR_FIELS","fields","LIST_CONTENT_MODEL_GROUPS","GET_CONTENT_MODEL_GROUP","CREATE_CONTENT_MODEL_GROUP","UPDATE_CONTENT_MODEL_GROUP","DELETE_CONTENT_MODEL_GROUP"],"mappings":";;;;AAAA,OAAOA,GAAP,MAAgB,aAAhB;AAGA,IAAMC,WAAW,wCAAjB;AAKA,IAAMC,MAAM,gKAAZ;AA4BA,OAAO,IAAMC,yBAAyB,GAAGH,GAAH,iYAIpBE,MAJoB,EAWpBD,WAXoB,CAA/B;AAgBP;AACA;AACA;AACA;;AAUA,OAAO,IAAMG,uBAAuB,GAAGJ,GAAH,yTAIlBE,MAJkB,EAOlBD,WAPkB,CAA7B;AAaP;AACA;AACA;AACA;;AAWA,OAAO,IAAMI,0BAA0B,GAAGL,GAAH,0cAIrBE,MAJqB,EAWrBD,WAXqB,CAAhC;AAgBP;AACA;AACA;AACA;;AAYA,OAAO,IAAMK,0BAA0B,GAAGN,GAAH,kXAIrBE,MAJqB,EAOrBD,WAPqB,CAAhC;AAYP;AACA;AACA;AACA;;AAUA,OAAO,IAAMM,0BAA0B,GAAGP,GAAH,yQAKrBC,WALqB,CAAhC","sourcesContent":["import gql from \"graphql-tag\";\nimport { CmsErrorResponse, CmsGroup as BaseCmsGroup, CmsModel } from \"~/types\";\n\nconst ERROR_FIELS = `\n message\n code\n data\n`;\nconst fields = `\n id\n name\n slug\n description\n icon\n createdOn\n plugin\n createdBy {\n id\n displayName\n type\n }\n`;\nexport type CmsGroup = Omit<BaseCmsGroup, \"contentModels\">;\nexport interface CmsGroupWithModels extends CmsGroup {\n contentModels: Pick<CmsModel, \"modelId\" | \"name\">[];\n}\n/**\n * ############################\n * List groups with basic models info Query\n */\nexport interface ListCmsGroupsQueryResponse {\n listContentModelGroups: {\n data: CmsGroupWithModels[];\n error?: CmsErrorResponse;\n };\n}\nexport const LIST_CONTENT_MODEL_GROUPS = gql`\n query CmsListContentModelGroups {\n listContentModelGroups {\n data {\n ${fields}\n contentModels {\n modelId\n name\n }\n }\n error {\n ${ERROR_FIELS}\n }\n }\n }\n`;\n/**\n * ############################\n * Get Group Query\n */\nexport interface GetCmsGroupQueryResponse {\n contentModelGroup: {\n data: CmsGroup;\n error?: CmsErrorResponse;\n };\n}\nexport interface GetCmsGroupQueryVariables {\n id: string;\n}\nexport const GET_CONTENT_MODEL_GROUP = gql`\n query CmsGetContentModelGroup($id: ID!) {\n contentModelGroup: getContentModelGroup(id: $id){\n data {\n ${fields}\n }\n error {\n ${ERROR_FIELS}\n }\n }\n }\n`;\n\n/**\n * ############################\n * Create Group Mutation\n */\nexport interface CreateCmsGroupMutationResponse {\n contentModelGroup: {\n data: CmsGroupWithModels;\n error?: CmsErrorResponse;\n };\n}\nexport interface CreateCmsGroupMutationVariables {\n // @ts-refactor write the types.\n data: Record<string, any>;\n}\nexport const CREATE_CONTENT_MODEL_GROUP = gql`\n mutation CmsCreateContentModelGroup($data: CmsContentModelGroupInput!){\n contentModelGroup: createContentModelGroup(data: $data) {\n data {\n ${fields}\n contentModels {\n modelId\n name\n }\n }\n error {\n ${ERROR_FIELS}\n }\n }\n }\n`;\n/**\n * ############################\n * Update Group Mutation\n */\nexport interface UpdateCmsGroupMutationResponse {\n contentModelGroup: {\n data: CmsGroup;\n error?: CmsErrorResponse;\n };\n}\nexport interface UpdateCmsGroupMutationVariables {\n id: string;\n // @ts-refactor write the types.\n data: Record<string, any>;\n}\nexport const UPDATE_CONTENT_MODEL_GROUP = gql`\n mutation CmsUpdateContentModelGroup($id: ID!, $data: CmsContentModelGroupInput!){\n contentModelGroup: updateContentModelGroup(id: $id, data: $data) {\n data {\n ${fields}\n }\n error {\n ${ERROR_FIELS}\n }\n }\n }\n`;\n/**\n * ############################\n * Delete Group Mutation\n */\nexport interface DeleteCmsGroupMutationResponse {\n contentModelGroup: {\n data: boolean;\n error?: CmsErrorResponse;\n };\n}\nexport interface DeleteCmsGroupMutationVariables {\n id: string;\n}\nexport const DELETE_CONTENT_MODEL_GROUP = gql`\n mutation CmsDeleteContentModelGroup($id: ID!) {\n deleteContentModelGroup(id: $id) {\n data\n error {\n ${ERROR_FIELS}\n }\n }\n }\n`;\n"]}
@@ -1,11 +1,9 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
2
  import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper";
4
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
4
 
6
5
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
7
6
 
8
- import _regeneratorRuntime from "@babel/runtime/regenerator";
9
7
  import React, { useCallback } from "react";
10
8
  import { css } from "emotion";
11
9
  import get from "lodash/get";
@@ -85,7 +83,7 @@ var CloneContentModelDialog = function CloneContentModelDialog(_ref) {
85
83
 
86
84
  var currentLocale = getCurrentLocale();
87
85
 
88
- var _React$useState3 = React.useState(currentLocale),
86
+ var _React$useState3 = React.useState(currentLocale || ""),
89
87
  _React$useState4 = _slicedToArray(_React$useState3, 2),
90
88
  locale = _React$useState4[0],
91
89
  setLocale = _React$useState4[1];
@@ -96,6 +94,11 @@ var CloneContentModelDialog = function CloneContentModelDialog(_ref) {
96
94
  showSnackbar(error.message);
97
95
  },
98
96
  update: function update(cache, response) {
97
+ if (!response.data) {
98
+ showSnackbar("Missing data on Create Content Model From Mutation Response.");
99
+ return;
100
+ }
101
+
99
102
  var _response$data$create = response.data.createContentModelFrom,
100
103
  model = _response$data$create.data,
101
104
  error = _response$data$create.error;
@@ -167,7 +170,7 @@ var CloneContentModelDialog = function CloneContentModelDialog(_ref) {
167
170
  }
168
171
 
169
172
  return true;
170
- }, undefined);
173
+ }, []);
171
174
  var locales = getLocales().map(function (locale) {
172
175
  return {
173
176
  value: locale.code,
@@ -187,36 +190,22 @@ var CloneContentModelDialog = function CloneContentModelDialog(_ref) {
187
190
  locale: locale,
188
191
  name: contentModel.name
189
192
  },
190
- onSubmit: /*#__PURE__*/function () {
191
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(data) {
192
- return _regeneratorRuntime.wrap(function _callee$(_context) {
193
- while (1) {
194
- switch (_context.prev = _context.next) {
195
- case 0:
196
- setLoading(true);
197
- _context.next = 3;
198
- return createContentModelFrom({
199
- variables: {
200
- modelId: contentModel.modelId,
201
- data: data
202
- }
203
- });
204
-
205
- case 3:
206
- case "end":
207
- return _context.stop();
208
- }
209
- }
210
- }, _callee);
211
- }));
193
+ onSubmit: function onSubmit(data) {
194
+ setLoading(true);
195
+ createContentModelFrom({
196
+ variables: {
197
+ modelId: contentModel.modelId,
212
198
 
213
- return function (_x) {
214
- return _ref2.apply(this, arguments);
215
- };
216
- }()
217
- }, function (_ref3) {
218
- var Bind = _ref3.Bind,
219
- submit = _ref3.submit;
199
+ /**
200
+ * We know that data is CmsModel
201
+ */
202
+ data: data
203
+ }
204
+ });
205
+ }
206
+ }, function (_ref2) {
207
+ var Bind = _ref2.Bind,
208
+ submit = _ref2.submit;
220
209
  return /*#__PURE__*/React.createElement(React.Fragment, null, loading && /*#__PURE__*/React.createElement(CircularProgress, null), /*#__PURE__*/React.createElement(UID.DialogTitle, null, t(_templateObject || (_templateObject = _taggedTemplateLiteral(["Clone Content Model"])))), /*#__PURE__*/React.createElement(UID.DialogContent, null, /*#__PURE__*/React.createElement(Grid, {
221
210
  className: noPadding
222
211
  }, /*#__PURE__*/React.createElement(Cell, {
@@ -265,7 +254,9 @@ var CloneContentModelDialog = function CloneContentModelDialog(_ref) {
265
254
  value: contentModel.description
266
255
  }));
267
256
  })))), /*#__PURE__*/React.createElement(UID.DialogActions, null, /*#__PURE__*/React.createElement(ButtonDefault, {
268
- onClick: submit
257
+ onClick: function onClick(ev) {
258
+ submit(ev);
259
+ }
269
260
  }, "+ ", t(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["Clone"]))))));
270
261
  }));
271
262
  };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["CloneContentModelDialog.tsx"],"names":["React","useCallback","css","get","useRouter","Form","Input","Select","useSnackbar","CircularProgress","validation","useMutation","useQueryLocale","i18n","ButtonDefault","UID","Grid","Cell","addModelToGroupCache","addModelToListCache","useI18N","CREATE_CONTENT_MODEL_FROM","LIST_MENU_CONTENT_GROUPS_MODELS","t","ns","narrowDialog","width","minWidth","noPadding","padding","disallowedModelIdEndingList","getSelectedGroup","groups","model","length","current","group","id","find","g","value","defaultSelected","CloneContentModelDialog","open","onClose","contentModel","closeModal","useState","loading","setLoading","showSnackbar","history","getLocales","getCurrentLocale","setCurrentLocale","currentLocale","locale","setLocale","onError","error","message","update","cache","response","data","createContentModelFrom","window","location","reload","push","skip","loadingGroups","contentModelGroups","map","item","label","name","selectedGroup","nameValidator","target","trim","charAt","match","Error","toLowerCase","ending","re","RegExp","matched","locales","code","variables","modelId","Bind","submit","create","props","description","ev"],"mappings":"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","sourcesContent":["import React, { useCallback } from \"react\";\nimport { css } from \"emotion\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { Form } from \"@webiny/form\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { validation } from \"@webiny/validation\";\nimport { useMutation, useQueryLocale } from \"../../hooks\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ButtonDefault } from \"@webiny/ui/Button\";\nimport * as UID from \"@webiny/ui/Dialog\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { addModelToGroupCache, addModelToListCache } from \"./cache\";\nimport { CmsEditorContentModel, CmsModel } from \"~/types\";\nimport { useI18N } from \"@webiny/app-i18n/hooks/useI18N\";\nimport {\n CREATE_CONTENT_MODEL_FROM,\n LIST_MENU_CONTENT_GROUPS_MODELS,\n CreateCmsModelFromMutationResponse,\n CreateCmsModelFromMutationVariables,\n ListMenuCmsGroupsQueryResponse\n} from \"../../viewsGraphql\";\nimport { CmsGroup } from \"~/admin/views/contentModelGroups/graphql\";\nimport { CmsGroupOption } from \"~/admin/views/contentModels/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/views/content-models/clone-content-model-dialog\");\n\nconst narrowDialog = css({\n \".mdc-dialog__surface\": {\n width: 600,\n minWidth: 600\n }\n});\n\nconst noPadding = css({\n padding: \"5px !important\"\n});\n\nexport interface Props {\n open: boolean;\n onClose: UID.DialogOnClose;\n contentModel: CmsEditorContentModel;\n closeModal: () => void;\n}\n\n/**\n * This list is to disallow creating models that might interfere with GraphQL schema creation.\n * Add more if required.\n */\nconst disallowedModelIdEndingList: string[] = [\"Response\", \"List\", \"Meta\", \"Input\", \"Sorter\"];\n\nconst getSelectedGroup = (\n groups: CmsGroupOption[],\n model: CmsEditorContentModel\n): string | null => {\n if (groups.length === 0 || !model) {\n return \"\";\n }\n const current = model.group.id;\n const group = groups.find(g => g.value === current);\n if (group) {\n return group.value;\n }\n const defaultSelected = groups.find(() => true);\n return defaultSelected ? defaultSelected.value : null;\n};\n\nconst CloneContentModelDialog: React.FC<Props> = ({ open, onClose, contentModel, closeModal }) => {\n const [loading, setLoading] = React.useState<boolean>(false);\n const { showSnackbar } = useSnackbar();\n const { history } = useRouter();\n const { getLocales, getCurrentLocale, setCurrentLocale } = useI18N();\n\n const currentLocale = getCurrentLocale();\n const [locale, setLocale] = React.useState<string>(currentLocale || \"\");\n\n const [createContentModelFrom] = useMutation<\n CreateCmsModelFromMutationResponse,\n CreateCmsModelFromMutationVariables\n >(CREATE_CONTENT_MODEL_FROM, {\n onError(error) {\n setLoading(false);\n showSnackbar(error.message);\n },\n update(cache, response) {\n if (!response.data) {\n showSnackbar(`Missing data on Create Content Model From Mutation Response.`);\n return;\n }\n const { data: model, error } = response.data.createContentModelFrom;\n\n if (error) {\n setLoading(false);\n showSnackbar(error.message);\n return;\n }\n\n if (currentLocale !== locale) {\n setCurrentLocale(locale, \"content\");\n window.location.reload();\n return;\n }\n\n addModelToListCache(cache, model);\n addModelToGroupCache(cache, model);\n\n history.push(\"/cms/content-models/\");\n closeModal();\n }\n });\n\n const { data, loading: loadingGroups } = useQueryLocale<ListMenuCmsGroupsQueryResponse>(\n LIST_MENU_CONTENT_GROUPS_MODELS,\n locale,\n {\n skip: !open\n }\n );\n\n const contentModelGroups: CmsGroupOption[] = get(data, \"listContentModelGroups.data\", []).map(\n (item: CmsGroup): CmsGroupOption => {\n return {\n value: item.id,\n label: item.name\n };\n }\n );\n\n const selectedGroup = getSelectedGroup(contentModelGroups, contentModel);\n\n const nameValidator = useCallback((name: string) => {\n const target = (name || \"\").trim();\n if (!target.charAt(0).match(/[a-zA-Z]/)) {\n throw new Error(\"Value is not valid - must not start with a number.\");\n }\n if (target.toLowerCase() === \"id\") {\n throw new Error('Value is not valid - \"id\" is an auto-generated field.');\n }\n for (const ending of disallowedModelIdEndingList) {\n const re = new RegExp(`${ending}$`, \"i\");\n const matched = target.match(re);\n if (matched === null) {\n continue;\n }\n throw new Error(`Model name that ends with \"${ending}\" is not allowed.`);\n }\n return true;\n }, []);\n\n const locales = getLocales().map(locale => {\n return {\n value: locale.code,\n label: locale.code === currentLocale ? \"Current locale\" : locale.code\n };\n });\n\n return (\n <UID.Dialog\n open={open}\n onClose={onClose}\n className={narrowDialog}\n data-testid=\"cms-clone-content-model-modal\"\n >\n {loadingGroups && (\n <CircularProgress label={\"Please wait while we load required information.\"} />\n )}\n {open && (\n <Form\n data={{\n group: selectedGroup,\n locale,\n name: contentModel.name\n }}\n onSubmit={data => {\n setLoading(true);\n createContentModelFrom({\n variables: {\n modelId: contentModel.modelId,\n /**\n * We know that data is CmsModel\n */\n data: data as unknown as CmsModel\n }\n });\n }}\n >\n {({ Bind, submit }) => (\n <>\n {loading && <CircularProgress />}\n <UID.DialogTitle>{t`Clone Content Model`}</UID.DialogTitle>\n <UID.DialogContent>\n <Grid className={noPadding}>\n <Cell span={12}>\n <Bind\n name={\"name\"}\n validators={[\n validation.create(\"required,maxLength:100\"),\n nameValidator\n ]}\n >\n <Input\n label={t`Name`}\n description={t`The name of the content model`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"group\"}\n validators={validation.create(\"required\")}\n >\n <Select\n description={t`Choose a content model group`}\n label={t`Content model group`}\n options={contentModelGroups}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"locale\"}\n validators={validation.create(\"required\")}\n afterChange={(value?: string) => {\n if (!value) {\n return;\n }\n setLocale(value);\n }}\n >\n <Select\n description={t`Choose a locale into which you wish to clone the model`}\n label={t`Content model locale`}\n options={locales}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name=\"description\">\n {props => (\n <Input\n {...props}\n rows={4}\n maxLength={200}\n characterCount\n label={t`Description`}\n value={contentModel.description}\n />\n )}\n </Bind>\n </Cell>\n </Grid>\n </UID.DialogContent>\n <UID.DialogActions>\n <ButtonDefault\n onClick={ev => {\n submit(ev);\n }}\n >\n + {t`Clone`}\n </ButtonDefault>\n </UID.DialogActions>\n </>\n )}\n </Form>\n )}\n </UID.Dialog>\n );\n};\n\nexport default CloneContentModelDialog;\n"]}
@@ -8,12 +8,12 @@ import { ContentModelEditorProvider } from "../../components/ContentModelEditor/
8
8
 
9
9
  var ContentModelEditorView = function ContentModelEditorView() {
10
10
  var _useRouter = useRouter(),
11
- match = _useRouter.match;
11
+ params = _useRouter.params;
12
12
 
13
13
  var _useCms = useCms(),
14
14
  apolloClient = _useCms.apolloClient;
15
15
 
16
- var _ref = match && match.params ? match.params : {},
16
+ var _ref = params ? params : {},
17
17
  modelId = _ref.modelId;
18
18
 
19
19
  if (!apolloClient) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ContentModelEditor.tsx"],"names":["React","HTML5Backend","DndProvider","Editor","useRouter","useCms","ContentModelEditorProvider","ContentModelEditorView","params","apolloClient","modelId"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,YAAT,QAA6B,yBAA7B;AACA,SAASC,WAAT,QAA4B,WAA5B;AACA,SAASC,MAAT;AACA,SAASC,SAAT,QAA0B,sBAA1B;AACA,SAASC,MAAT;AACA,SAASC,0BAAT;;AAKA,IAAMC,sBAAgC,GAAG,SAAnCA,sBAAmC,GAAM;AAC3C,mBAAmBH,SAAS,EAA5B;AAAA,MAAQI,MAAR,cAAQA,MAAR;;AACA,gBAAyBH,MAAM,EAA/B;AAAA,MAAQI,YAAR,WAAQA,YAAR;;AAEA,aAAqBD,MAAM,GAAGA,MAAH,GAAY,EAAvC;AAAA,MAAQE,OAAR,QAAQA,OAAR;;AACA,MAAI,CAACD,YAAL,EAAmB;AACf,WAAO,IAAP;AACH;;AACD,sBACI,oBAAC,0BAAD;AAA4B,IAAA,GAAG,EAAEC,OAAjC;AAA0C,IAAA,YAAY,EAAED,YAAxD;AAAsE,IAAA,OAAO,EAAEC;AAA/E,kBACI,oBAAC,WAAD;AAAa,IAAA,OAAO,EAAET;AAAtB,kBACI,oBAAC,MAAD,OADJ,CADJ,CADJ;AAOH,CAfD;;AAgBA,eAAeM,sBAAf","sourcesContent":["import React from \"react\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { DndProvider } from \"react-dnd\";\nimport { Editor } from \"~/admin/components/ContentModelEditor/Editor\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useCms } from \"~/admin/hooks\";\nimport { ContentModelEditorProvider } from \"~/admin/components/ContentModelEditor/Context\";\nimport { CmsModel } from \"~/types\";\n\ntype QueryMatch = Pick<Partial<CmsModel>, \"modelId\">;\n\nconst ContentModelEditorView: React.FC = () => {\n const { params } = useRouter();\n const { apolloClient } = useCms();\n\n const { modelId } = (params ? params : {}) as QueryMatch;\n if (!apolloClient) {\n return null;\n }\n return (\n <ContentModelEditorProvider key={modelId} apolloClient={apolloClient} modelId={modelId}>\n <DndProvider backend={HTML5Backend}>\n <Editor />\n </DndProvider>\n </ContentModelEditorProvider>\n );\n};\nexport default ContentModelEditorView;\n"]}
@@ -46,10 +46,11 @@ var ContentModels = function ContentModels() {
46
46
  setCloneContentModel = _React$useState4[1];
47
47
 
48
48
  var _useSecurity = useSecurity(),
49
- identity = _useSecurity.identity;
49
+ identity = _useSecurity.identity,
50
+ getPermission = _useSecurity.getPermission;
50
51
 
51
52
  var canCreate = useMemo(function () {
52
- var permission = identity.getPermission("cms.contentModel");
53
+ var permission = getPermission("cms.contentModel");
53
54
 
54
55
  if (!permission) {
55
56
  return false;
@@ -60,7 +61,7 @@ var ContentModels = function ContentModels() {
60
61
  }
61
62
 
62
63
  return permission.rwd.includes("w");
63
- }, []);
64
+ }, [identity]);
64
65
  var closeModal = useCallback(function () {
65
66
  setCloneContentModel(null);
66
67
  }, []);
@@ -79,7 +80,7 @@ var ContentModels = function ContentModels() {
79
80
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NewContentModelDialog, {
80
81
  open: newContentModelDialogOpened,
81
82
  onClose: onClose
82
- }), /*#__PURE__*/React.createElement(CloneContentModelDialog, {
83
+ }), cloneContentModel && /*#__PURE__*/React.createElement(CloneContentModelDialog, {
83
84
  open: !!cloneContentModel,
84
85
  contentModel: cloneContentModel,
85
86
  onClose: onCloneClose,
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ContentModels.tsx"],"names":["React","useCallback","useMemo","CloneContentModelDialog","NewContentModelDialog","ContentModelsDataList","css","useSecurity","Cell","Grid","grid","padding","backgroundColor","gridGap","centeredContent","display","flexDirection","height","overflow","maxHeight","ContentModels","useState","newContentModelDialogOpened","openNewContentModelDialog","cloneContentModel","setCloneContentModel","identity","getPermission","canCreate","permission","rwd","includes","closeModal","onCreate","onClose","onClone","contentModel","onCloneClose"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport CloneContentModelDialog from \"./CloneContentModelDialog\";\nimport NewContentModelDialog from \"./NewContentModelDialog\";\nimport ContentModelsDataList from \"./ContentModelsDataList\";\nimport { css } from \"emotion\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport { Cell } from \"@webiny/ui/Grid\";\nimport { Grid } from \"@webiny/ui/Grid\";\nimport { CmsModel, CmsSecurityPermission } from \"~/types\";\n\nconst grid = css({\n \"&.mdc-layout-grid\": {\n padding: 0,\n backgroundColor: \"var(--mdc-theme-background)\",\n \">.mdc-layout-grid__inner\": {\n gridGap: 0\n }\n }\n});\n\nconst centeredContent = css({\n backgroundColor: \"var(--mdc-theme-surface)\",\n \">.webiny-data-list\": {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"calc(100vh - 70px)\",\n \".mdc-list\": {\n overflow: \"auto\"\n }\n },\n \">.mdc-list\": {\n display: \"flex\",\n flexDirection: \"column\",\n maxHeight: \"calc(100vh - 70px)\",\n overflow: \"auto\"\n }\n});\n\nconst ContentModels: React.FC = () => {\n const [newContentModelDialogOpened, openNewContentModelDialog] = React.useState(false);\n\n const [cloneContentModel, setCloneContentModel] = React.useState<CmsModel | null>(null);\n\n const { identity, getPermission } = useSecurity();\n\n const canCreate = useMemo((): boolean => {\n const permission = getPermission<CmsSecurityPermission>(\"cms.contentModel\");\n if (!permission) {\n return false;\n }\n\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n\n return permission.rwd.includes(\"w\");\n }, [identity]);\n\n const closeModal = useCallback(() => {\n setCloneContentModel(null);\n }, []);\n\n const onCreate = useCallback((): void => openNewContentModelDialog(true), []);\n const onClose = useCallback((): void => openNewContentModelDialog(false), []);\n const onClone = useCallback(\n (contentModel: CmsModel): void => setCloneContentModel(contentModel),\n []\n );\n const onCloneClose = useCallback((): void => setCloneContentModel(null), []);\n\n return (\n <>\n <NewContentModelDialog open={newContentModelDialogOpened} onClose={onClose} />\n {cloneContentModel && (\n <CloneContentModelDialog\n open={!!cloneContentModel}\n contentModel={cloneContentModel}\n onClose={onCloneClose}\n closeModal={closeModal}\n />\n )}\n <Grid className={grid}>\n <Cell span={3} />\n <Cell span={6} className={centeredContent}>\n <ContentModelsDataList\n canCreate={canCreate}\n onCreate={onCreate}\n onClone={onClone}\n />\n </Cell>\n <Cell span={3} />\n </Grid>\n </>\n );\n};\n\nexport default ContentModels;\n"]}
@@ -130,12 +130,19 @@ var ContentModelsDataList = function ContentModelsDataList(_ref) {
130
130
  },
131
131
  update: function update(cache, _ref5) {
132
132
  var data = _ref5.data;
133
+
134
+ if (!data) {
135
+ showSnackbar("Missing data on Delete Content Model Mutation Response.");
136
+ return;
137
+ }
138
+
133
139
  var error = data.deleteContentModel.error;
134
140
 
135
141
  if (error) {
136
- return showSnackbar(error.message, {
142
+ showSnackbar(error.message, {
137
143
  title: t(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["Something unexpected happened."])))
138
144
  });
145
+ return;
139
146
  }
140
147
 
141
148
  removeModelFromListCache(cache, item);
@@ -175,7 +182,7 @@ var ContentModelsDataList = function ContentModelsDataList(_ref) {
175
182
  return function () {
176
183
  return history.push("/cms/content-entries/" + contentModel.modelId);
177
184
  };
178
- }, undefined);
185
+ }, []);
179
186
  var contentModelsDataListModalOverlay = useMemo(function () {
180
187
  return /*#__PURE__*/React.createElement(UIL.DataListModalOverlay, null, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
181
188
  span: 12
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ContentModelsDataList.tsx"],"names":["React","useCallback","useMemo","useState","TimeAgo","css","get","useRouter","DeleteIcon","EditIcon","ReactComponent","ViewListIcon","CloneIcon","useApolloClient","useQuery","useSnackbar","UIL","ButtonIcon","ButtonSecondary","IconButton","Tooltip","i18n","useConfirmationDialog","removeModelFromGroupCache","removeModelFromListCache","GQL","AddIcon","SearchUI","deserializeSorters","orderBy","Cell","Grid","Select","FilterIcon","usePermission","t","namespace","SORTERS","label","sorters","rightAlign","alignItems","justifyContent","listItemMinHeight","minHeight","ContentModelsDataList","canCreate","onCreate","onClone","filter","setFilter","sort","setSort","history","client","showSnackbar","dataTestId","showConfirmation","LIST_CONTENT_MODELS","data","loading","canDelete","canEdit","filterData","name","toLowerCase","includes","sortData","list","sortField","sortOrderBy","models","deleteRecord","item","mutate","mutation","DELETE_CONTENT_MODEL","variables","modelId","update","cache","error","deleteContentModel","message","title","editRecord","contentModel","push","viewContentEntries","contentModelsDataListModalOverlay","map","filteredData","contentModels","disableViewContent","fields","length","time","savedOn","plugin"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\n/**\n * Package timeago-react does not have types.\n */\n// @ts-ignore\nimport TimeAgo from \"timeago-react\";\nimport { css } from \"emotion\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { DeleteIcon, EditIcon } from \"@webiny/ui/List/DataList/icons\";\nimport { ReactComponent as ViewListIcon } from \"../../icons/view_list.svg\";\nimport { ReactComponent as CloneIcon } from \"../../icons/clone.svg\";\nimport { useApolloClient, useQuery } from \"../../hooks\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport * as UIL from \"@webiny/ui/List\";\nimport { ButtonIcon, ButtonSecondary, IconButton } from \"@webiny/ui/Button\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/useConfirmationDialog\";\nimport { removeModelFromGroupCache, removeModelFromListCache } from \"./cache\";\nimport * as GQL from \"../../viewsGraphql\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport { deserializeSorters } from \"../utils\";\nimport orderBy from \"lodash/orderBy\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport { CmsEditorContentModel, CmsModel } from \"~/types\";\nimport {\n DeleteCmsModelMutationResponse,\n DeleteCmsModelMutationVariables,\n ListCmsModelsQueryResponse\n} from \"../../viewsGraphql\";\nimport usePermission from \"~/admin/hooks/usePermission\";\n\nconst t = i18n.namespace(\"FormsApp.ContentModelsDataList\");\n\ninterface Sorter {\n label: string;\n sorters: string;\n}\nconst SORTERS: Sorter[] = [\n {\n label: t`Newest to oldest`,\n sorters: \"savedOn_DESC\"\n },\n {\n label: t`Oldest to newest`,\n sorters: \"savedOn_ASC\"\n },\n {\n label: t`Name A-Z`,\n sorters: \"name_ASC\"\n },\n {\n label: t`Name Z-A`,\n sorters: \"name_DESC\"\n }\n];\n\nconst rightAlign = css({\n alignItems: \"flex-end !important\",\n justifyContent: \"center !important\"\n});\n\nconst listItemMinHeight = css({\n minHeight: \"66px !important\"\n});\n\ninterface ContentModelsDataListProps {\n canCreate: boolean;\n onCreate: () => void;\n onClone: (contentModel: CmsEditorContentModel) => void;\n}\nconst ContentModelsDataList: React.FC<ContentModelsDataListProps> = ({\n canCreate,\n onCreate,\n onClone\n}) => {\n const [filter, setFilter] = useState<string>(\"\");\n const [sort, setSort] = useState<string>(SORTERS[0].sorters);\n const { history } = useRouter();\n const client = useApolloClient();\n const { showSnackbar } = useSnackbar();\n const { showConfirmation } = useConfirmationDialog({\n dataTestId: \"cms-delete-content-model-dialog\"\n });\n const { data, loading } = useQuery<ListCmsModelsQueryResponse>(GQL.LIST_CONTENT_MODELS);\n const { canDelete, canEdit } = usePermission();\n\n const filterData = useCallback(\n ({ name }: Pick<CmsModel, \"name\">): boolean => {\n return name.toLowerCase().includes(filter);\n },\n [filter]\n );\n\n const sortData = useCallback(\n (list: CmsModel[]): CmsModel[] => {\n if (!sort) {\n return list;\n }\n const [sortField, sortOrderBy] = deserializeSorters(sort);\n return orderBy(list, [sortField], [sortOrderBy]);\n },\n [sort]\n );\n\n const models: CmsModel[] = loading ? [] : get(data, \"listContentModels.data\", []);\n\n const deleteRecord = async (item: CmsModel): Promise<void> => {\n showConfirmation(async () => {\n await client.mutate<DeleteCmsModelMutationResponse, DeleteCmsModelMutationVariables>({\n mutation: GQL.DELETE_CONTENT_MODEL,\n variables: { modelId: item.modelId },\n update(cache, { data }) {\n if (!data) {\n showSnackbar(\"Missing data on Delete Content Model Mutation Response.\");\n return;\n }\n const { error } = data.deleteContentModel;\n\n if (error) {\n showSnackbar(error.message, {\n title: t`Something unexpected happened.`\n });\n return;\n }\n\n removeModelFromListCache(cache, item);\n removeModelFromGroupCache(cache, item);\n\n showSnackbar(\n t`Content model {name} deleted successfully!.`({ name: item.name })\n );\n }\n });\n });\n };\n\n const editRecord = (contentModel: CmsModel): void => {\n history.push(\"/cms/content-models/\" + contentModel.modelId);\n };\n\n const viewContentEntries = useCallback(contentModel => {\n return () => history.push(\"/cms/content-entries/\" + contentModel.modelId);\n }, []);\n\n const contentModelsDataListModalOverlay = useMemo(\n () => (\n <UIL.DataListModalOverlay>\n <Grid>\n <Cell span={12}>\n <Select\n value={sort}\n onChange={setSort}\n label={t`Sort by`}\n description={\"Sort content models by\"}\n >\n {SORTERS.map(({ label, sorters }) => {\n return (\n <option key={label} value={sorters}>\n {label}\n </option>\n );\n })}\n </Select>\n </Cell>\n </Grid>\n </UIL.DataListModalOverlay>\n ),\n [sort]\n );\n\n const filteredData = filter === \"\" ? models : models.filter(filterData);\n const contentModels = sortData(filteredData);\n\n return (\n <UIL.DataList\n loading={loading}\n data={contentModels}\n title={t`Content Models`}\n actions={\n canCreate ? (\n <ButtonSecondary data-testid=\"new-record-button\" onClick={onCreate}>\n <ButtonIcon icon={<AddIcon />} /> {t`New Model`}\n </ButtonSecondary>\n ) : null\n }\n search={\n <SearchUI\n value={filter}\n onChange={setFilter}\n inputPlaceholder={t`Search content models`}\n />\n }\n modalOverlay={contentModelsDataListModalOverlay}\n modalOverlayAction={\n <UIL.DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data = [] }: { data: CmsModel[] }) => (\n <UIL.List data-testid=\"default-data-list\">\n {data.map(contentModel => {\n const disableViewContent = contentModel.fields.length === 0;\n const message = disableViewContent\n ? \"To view the content, you first need to add a field and save the model\"\n : \"View content\";\n return (\n <UIL.ListItem key={contentModel.modelId} className={listItemMinHeight}>\n <UIL.ListItemText>\n {contentModel.name}\n <UIL.ListItemTextSecondary>\n {t`Last modified: {time}.`({\n time: <TimeAgo datetime={contentModel.savedOn} />\n })}\n </UIL.ListItemTextSecondary>\n </UIL.ListItemText>\n <UIL.ListItemMeta className={rightAlign}>\n <UIL.ListActions>\n {canEdit(contentModel, \"cms.contentModel\") && (\n <>\n <Tooltip\n content={t`{message}`({ message })}\n placement={\"top\"}\n >\n <IconButton\n data-testid={\n \"cms-view-content-model-button\"\n }\n icon={<ViewListIcon />}\n label={t`View entries`}\n onClick={viewContentEntries(contentModel)}\n disabled={disableViewContent}\n />\n </Tooltip>\n {contentModel.plugin ? (\n <Tooltip\n content={t`Content model is registered via a plugin.`}\n placement={\"top\"}\n >\n <EditIcon\n disabled\n data-testid={\n \"cms-edit-content-model-button\"\n }\n />\n </Tooltip>\n ) : (\n <Tooltip\n content={t`Edit content model`}\n placement={\"top\"}\n >\n <EditIcon\n onClick={() => editRecord(contentModel)}\n data-testid={\n \"cms-edit-content-model-button\"\n }\n />\n </Tooltip>\n )}\n </>\n )}\n\n <Tooltip content={\"Clone content model\"} placement={\"top\"}>\n <IconButton\n data-testid={\"cms-clone-content-model-button\"}\n icon={<CloneIcon />}\n label={t`View entries`}\n onClick={() => onClone(contentModel)}\n />\n </Tooltip>\n\n {canDelete(contentModel, \"cms.contentModel\") &&\n contentModel.plugin ? (\n <Tooltip\n content={t`Content model is registered via a plugin.`}\n placement={\"top\"}\n >\n <DeleteIcon\n disabled\n data-testid={\"cms-delete-content-model-button\"}\n />\n </Tooltip>\n ) : (\n <Tooltip\n content={t`Delete content model`}\n placement={\"top\"}\n >\n <DeleteIcon\n onClick={() => deleteRecord(contentModel)}\n data-testid={\"cms-delete-content-model-button\"}\n />\n </Tooltip>\n )}\n </UIL.ListActions>\n </UIL.ListItemMeta>\n </UIL.ListItem>\n );\n })}\n </UIL.List>\n )}\n </UIL.DataList>\n );\n};\n\nexport default ContentModelsDataList;\n"]}
@@ -62,6 +62,13 @@ var NewContentModelDialog = function NewContentModelDialog(_ref) {
62
62
  var _useMutation = useMutation(GQL.CREATE_CONTENT_MODEL, {
63
63
  update: function update(cache, _ref2) {
64
64
  var data = _ref2.data;
65
+
66
+ if (!data) {
67
+ setLoading(false);
68
+ showSnackbar("Missing data on Create Content Model Mutation Response.");
69
+ return;
70
+ }
71
+
65
72
  var _data$createContentMo = data.createContentModel,
66
73
  model = _data$createContentMo.data,
67
74
  error = _data$createContentMo.error;
@@ -191,7 +198,7 @@ var NewContentModelDialog = function NewContentModelDialog(_ref) {
191
198
  }(), [client]);
192
199
  var group = (contentModelGroups === null || contentModelGroups === void 0 ? void 0 : contentModelGroups.length) > 0 ? contentModelGroups[0].value : null;
193
200
 
194
- var onSubmit = /*#__PURE__*/function () {
201
+ var _onSubmit = /*#__PURE__*/function () {
195
202
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(data) {
196
203
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
197
204
  while (1) {
@@ -227,7 +234,12 @@ var NewContentModelDialog = function NewContentModelDialog(_ref) {
227
234
  data: {
228
235
  group: group
229
236
  },
230
- onSubmit: onSubmit
237
+ onSubmit: function onSubmit(data) {
238
+ /**
239
+ * We are positive that data is CmsModelData.
240
+ */
241
+ _onSubmit(data);
242
+ }
231
243
  }, function (_ref5) {
232
244
  var Bind = _ref5.Bind,
233
245
  submit = _ref5.submit;
@@ -264,7 +276,9 @@ var NewContentModelDialog = function NewContentModelDialog(_ref) {
264
276
  label: t(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["Description"])))
265
277
  }));
266
278
  })))), /*#__PURE__*/React.createElement(UID.DialogActions, null, /*#__PURE__*/React.createElement(ButtonPrimary, {
267
- onClick: submit
279
+ onClick: function onClick(ev) {
280
+ submit(ev);
281
+ }
268
282
  }, "+ ", t(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["Create Model"]))))));
269
283
  }));
270
284
  };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["NewContentModelDialog.tsx"],"names":["React","useCallback","gql","css","get","useRouter","Form","Input","Select","useSnackbar","CircularProgress","validation","useQuery","useMutation","useApolloClient","i18n","ButtonPrimary","UID","Grid","Cell","addModelToGroupCache","addModelToListCache","GQL","t","ns","narrowDialog","width","minWidth","noPadding","padding","disallowedModelIdEndingList","SCHEMA_TYPES","NewContentModelDialog","open","onClose","useState","loading","setLoading","showSnackbar","history","client","CREATE_CONTENT_MODEL","update","cache","data","createContentModel","model","error","message","push","modelId","listMenuGroupsQuery","LIST_MENU_CONTENT_GROUPS_MODELS","skip","contentModelGroups","map","item","value","id","label","name","nameValidator","target","trim","charAt","match","Error","ending","re","RegExp","matched","query","fetchPolicy","types","__schema","includes","group","length","onSubmit","variables","Bind","submit","create","props","ev"],"mappings":"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","sourcesContent":["import React, { useCallback } from \"react\";\nimport gql from \"graphql-tag\";\nimport { css } from \"emotion\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { Form } from \"@webiny/form\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { validation } from \"@webiny/validation\";\nimport { useQuery, useMutation, useApolloClient } from \"../../hooks\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\nimport * as UID from \"@webiny/ui/Dialog\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { addModelToGroupCache, addModelToListCache } from \"./cache\";\nimport * as GQL from \"../../viewsGraphql\";\nimport {\n CreateCmsModelMutationResponse,\n CreateCmsModelMutationVariables,\n ListMenuCmsGroupsQueryResponse\n} from \"../../viewsGraphql\";\nimport { CmsGroup } from \"~/types\";\nimport { CmsGroupOption } from \"./types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/views/content-models/new-content-model-dialog\");\n\nconst narrowDialog = css({\n \".mdc-dialog__surface\": {\n width: 600,\n minWidth: 600\n }\n});\n\nconst noPadding = css({\n padding: \"5px !important\"\n});\n\n/**\n * This list is to disallow creating models that might interfere with GraphQL schema creation.\n * Add more if required.\n */\nconst disallowedModelIdEndingList: string[] = [\"Response\", \"List\", \"Meta\", \"Input\", \"Sorter\"];\n\nexport interface NewContentModelDialogProps {\n open: boolean;\n onClose: UID.DialogOnClose;\n}\n\nconst SCHEMA_TYPES = gql`\n query ListSchemaTypes {\n __schema {\n types {\n name\n }\n }\n }\n`;\n\ninterface SchemaTypes {\n __schema: {\n types: { name: string }[];\n };\n}\n\ninterface CmsModelData {\n name: string;\n description: string;\n group: string;\n}\n\nconst NewContentModelDialog: React.FC<NewContentModelDialogProps> = ({ open, onClose }) => {\n const [loading, setLoading] = React.useState(false);\n const { showSnackbar } = useSnackbar();\n const { history } = useRouter();\n const client = useApolloClient();\n\n const [createContentModel] = useMutation<\n CreateCmsModelMutationResponse,\n CreateCmsModelMutationVariables\n >(GQL.CREATE_CONTENT_MODEL, {\n update(cache, { data }) {\n if (!data) {\n setLoading(false);\n showSnackbar(\"Missing data on Create Content Model Mutation Response.\");\n return;\n }\n const { data: model, error } = data.createContentModel;\n\n if (error) {\n setLoading(false);\n showSnackbar(error.message);\n return;\n }\n\n addModelToListCache(cache, model);\n addModelToGroupCache(cache, model);\n\n history.push(\"/cms/content-models/\" + model.modelId);\n }\n });\n\n const listMenuGroupsQuery = useQuery<ListMenuCmsGroupsQueryResponse>(\n GQL.LIST_MENU_CONTENT_GROUPS_MODELS,\n {\n skip: !open\n }\n );\n\n const contentModelGroups = get(listMenuGroupsQuery, \"data.listContentModelGroups.data\", []).map(\n (item: CmsGroup): CmsGroupOption => {\n return {\n value: item.id,\n label: item.name\n };\n }\n );\n\n const nameValidator = useCallback(\n async (name: string): Promise<boolean> => {\n const target = (name || \"\").trim();\n if (!target.charAt(0).match(/[a-zA-Z]/)) {\n throw new Error(\"Model name can't start with a number.\");\n }\n\n for (const ending of disallowedModelIdEndingList) {\n const re = new RegExp(`${ending}$`, \"i\");\n const matched = target.match(re);\n if (matched === null) {\n continue;\n }\n throw new Error(`Model must not end with \"${ending}\".`);\n }\n\n // Validate GraphQL Schema type\n const { data } = await client.query<SchemaTypes>({\n query: SCHEMA_TYPES,\n fetchPolicy: \"network-only\"\n });\n\n const types = data.__schema.types.map(t => t.name);\n\n if (types.includes(name)) {\n throw new Error(\n `\"${name}\" type already exists in the GraphQL schema. Please pick a different name.`\n );\n }\n\n return true;\n },\n [client]\n );\n\n const group = contentModelGroups?.length > 0 ? contentModelGroups[0].value : null;\n\n const onSubmit = async (data: CmsModelData) => {\n setLoading(true);\n await createContentModel({\n variables: { data }\n });\n };\n\n return (\n <UID.Dialog\n open={open}\n onClose={onClose}\n className={narrowDialog}\n data-testid=\"cms-new-content-model-modal\"\n >\n {open && (\n <Form\n data={{ group }}\n onSubmit={data => {\n /**\n * We are positive that data is CmsModelData.\n */\n onSubmit(data as unknown as CmsModelData);\n }}\n >\n {({ Bind, submit }) => (\n <>\n {loading && <CircularProgress label={\"Creating content model...\"} />}\n <UID.DialogTitle>{t`New Content Model`}</UID.DialogTitle>\n <UID.DialogContent>\n <Grid className={noPadding}>\n <Cell span={12}>\n <Bind\n name={\"name\"}\n validators={[\n validation.create(\"required,maxLength:100\"),\n nameValidator\n ]}\n >\n <Input\n label={t`Name`}\n description={t`The name of the content model. Use the singular form, e.g. Person, not Persons.`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"group\"}\n validators={validation.create(\"required\")}\n >\n <Select\n description={t`Choose a content model group`}\n label={t`Content model group`}\n options={contentModelGroups}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name=\"description\">\n {props => (\n <Input\n {...props}\n rows={4}\n maxLength={200}\n characterCount\n label={t`Description`}\n />\n )}\n </Bind>\n </Cell>\n </Grid>\n </UID.DialogContent>\n <UID.DialogActions>\n <ButtonPrimary\n onClick={ev => {\n submit(ev);\n }}\n >\n + {t`Create Model`}\n </ButtonPrimary>\n </UID.DialogActions>\n </>\n )}\n </Form>\n )}\n </UID.Dialog>\n );\n};\n\nexport default NewContentModelDialog;\n"]}