@webiny/app-headless-cms 5.42.2-beta.0 → 5.42.2-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 (119) hide show
  1. package/ContentEntryEditorConfig.d.ts +38 -14
  2. package/ContentEntryEditorConfig.js +14 -7
  3. package/ContentEntryEditorConfig.js.map +1 -1
  4. package/admin/components/ContentEntryForm/ContentEntryForm.d.ts +8 -7
  5. package/admin/components/ContentEntryForm/ContentEntryForm.js +4 -2
  6. package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -1
  7. package/admin/components/ContentEntryForm/ContentEntryFormProvider.d.ts +3 -2
  8. package/admin/components/ContentEntryForm/ContentEntryFormProvider.js +2 -0
  9. package/admin/components/ContentEntryForm/ContentEntryFormProvider.js.map +1 -1
  10. package/admin/components/ContentEntryForm/FieldElement.js +1 -2
  11. package/admin/components/ContentEntryForm/FieldElement.js.map +1 -1
  12. package/admin/components/ContentEntryForm/Header/Header.js +9 -3
  13. package/admin/components/ContentEntryForm/Header/Header.js.map +1 -1
  14. package/admin/components/ContentEntryForm/createValidationScope.d.ts +18 -0
  15. package/admin/components/ContentEntryForm/createValidationScope.js +31 -0
  16. package/admin/components/ContentEntryForm/createValidationScope.js.map +1 -0
  17. package/admin/components/ContentEntryForm/useBind.d.ts +2 -3
  18. package/admin/components/ContentEntryForm/useBind.js +15 -7
  19. package/admin/components/ContentEntryForm/useBind.js.map +1 -1
  20. package/admin/config/contentEntries/editor/ContentEntryEditorConfig.d.ts +1 -0
  21. package/admin/config/contentEntries/editor/ContentEntryEditorConfig.js +3 -1
  22. package/admin/config/contentEntries/editor/ContentEntryEditorConfig.js.map +1 -1
  23. package/admin/config/contentEntries/editor/ValidationIndicators.d.ts +5 -0
  24. package/admin/config/contentEntries/editor/ValidationIndicators.js +22 -0
  25. package/admin/config/contentEntries/editor/ValidationIndicators.js.map +1 -0
  26. package/admin/plugins/fieldRenderers/Accordion.d.ts +2 -1
  27. package/admin/plugins/fieldRenderers/Accordion.js +28 -28
  28. package/admin/plugins/fieldRenderers/Accordion.js.map +1 -1
  29. package/admin/plugins/fieldRenderers/DynamicSection.d.ts +3 -1
  30. package/admin/plugins/fieldRenderers/DynamicSection.js +21 -9
  31. package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -1
  32. package/admin/plugins/fieldRenderers/MultiValueRendererSettings.d.ts +8 -0
  33. package/admin/plugins/fieldRenderers/MultiValueRendererSettings.js +33 -0
  34. package/admin/plugins/fieldRenderers/MultiValueRendererSettings.js.map +1 -0
  35. package/admin/plugins/fieldRenderers/checkboxes.js +17 -15
  36. package/admin/plugins/fieldRenderers/checkboxes.js.map +1 -1
  37. package/admin/plugins/fieldRenderers/dateTime/dateTimeField.js +14 -18
  38. package/admin/plugins/fieldRenderers/dateTime/dateTimeField.js.map +1 -1
  39. package/admin/plugins/fieldRenderers/dateTime/dateTimeFields.js +6 -2
  40. package/admin/plugins/fieldRenderers/dateTime/dateTimeFields.js.map +1 -1
  41. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js +23 -21
  42. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -1
  43. package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js +2 -2
  44. package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js.map +1 -1
  45. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInput.js +1 -1
  46. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInput.js.map +1 -1
  47. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInputs.js +7 -3
  48. package/admin/plugins/fieldRenderers/lexicalText/lexicalTextInputs.js.map +1 -1
  49. package/admin/plugins/fieldRenderers/longText/longText.js +2 -2
  50. package/admin/plugins/fieldRenderers/longText/longText.js.map +1 -1
  51. package/admin/plugins/fieldRenderers/longText/longTexts.js +6 -2
  52. package/admin/plugins/fieldRenderers/longText/longTexts.js.map +1 -1
  53. package/admin/plugins/fieldRenderers/number/numberInput.js +2 -2
  54. package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -1
  55. package/admin/plugins/fieldRenderers/number/numberInputs.js +6 -2
  56. package/admin/plugins/fieldRenderers/number/numberInputs.js.map +1 -1
  57. package/admin/plugins/fieldRenderers/object/MultiValueContainer.d.ts +10 -0
  58. package/admin/plugins/fieldRenderers/object/MultiValueContainer.js +118 -0
  59. package/admin/plugins/fieldRenderers/object/MultiValueContainer.js.map +1 -0
  60. package/admin/plugins/fieldRenderers/object/MultiValueItemContainer.d.ts +33 -0
  61. package/admin/plugins/fieldRenderers/object/MultiValueItemContainer.js +54 -0
  62. package/admin/plugins/fieldRenderers/object/MultiValueItemContainer.js.map +1 -0
  63. package/admin/plugins/fieldRenderers/object/index.d.ts +22 -0
  64. package/admin/plugins/fieldRenderers/object/index.js +5 -1
  65. package/admin/plugins/fieldRenderers/object/index.js.map +1 -1
  66. package/admin/plugins/fieldRenderers/object/multipleObjects.js +15 -104
  67. package/admin/plugins/fieldRenderers/object/multipleObjects.js.map +1 -1
  68. package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js +15 -108
  69. package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js.map +1 -1
  70. package/admin/plugins/fieldRenderers/object/singleObjectAccordion.js +2 -2
  71. package/admin/plugins/fieldRenderers/object/singleObjectAccordion.js.map +1 -1
  72. package/admin/plugins/fieldRenderers/object/singleObjectInline.js +25 -14
  73. package/admin/plugins/fieldRenderers/object/singleObjectInline.js.map +1 -1
  74. package/admin/plugins/fieldRenderers/radioButtons.js +18 -16
  75. package/admin/plugins/fieldRenderers/radioButtons.js.map +1 -1
  76. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Remove.js +6 -3
  77. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/Remove.js.map +1 -1
  78. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/View.js +2 -2
  79. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/View.js.map +1 -1
  80. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/elements/ButtonLink.js +6 -6
  81. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/elements/ButtonLink.js.map +1 -1
  82. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferenceRenderer.js +2 -2
  83. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferenceRenderer.js.map +1 -1
  84. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferencesRenderer.js +2 -2
  85. package/admin/plugins/fieldRenderers/ref/advanced/detailedReferencesRenderer.js.map +1 -1
  86. package/admin/plugins/fieldRenderers/ref/refInput.js +2 -2
  87. package/admin/plugins/fieldRenderers/ref/refInput.js.map +1 -1
  88. package/admin/plugins/fieldRenderers/ref/refInputs.js +2 -2
  89. package/admin/plugins/fieldRenderers/ref/refInputs.js.map +1 -1
  90. package/admin/plugins/fieldRenderers/ref/simple/simpleMultipleRenderer.js +2 -2
  91. package/admin/plugins/fieldRenderers/ref/simple/simpleMultipleRenderer.js.map +1 -1
  92. package/admin/plugins/fieldRenderers/ref/simple/simpleSingleRenderer.js +2 -2
  93. package/admin/plugins/fieldRenderers/ref/simple/simpleSingleRenderer.js.map +1 -1
  94. package/admin/plugins/fieldRenderers/richText/richTextInput.js +10 -8
  95. package/admin/plugins/fieldRenderers/richText/richTextInput.js.map +1 -1
  96. package/admin/plugins/fieldRenderers/richText/richTextInputs.js +7 -3
  97. package/admin/plugins/fieldRenderers/richText/richTextInputs.js.map +1 -1
  98. package/admin/plugins/fieldRenderers/select.js +9 -7
  99. package/admin/plugins/fieldRenderers/select.js.map +1 -1
  100. package/admin/plugins/fieldRenderers/text/tags.js +7 -5
  101. package/admin/plugins/fieldRenderers/text/tags.js.map +1 -1
  102. package/admin/plugins/fieldRenderers/text/textInput.js +2 -2
  103. package/admin/plugins/fieldRenderers/text/textInput.js.map +1 -1
  104. package/admin/plugins/fieldRenderers/text/textInputs.js +6 -2
  105. package/admin/plugins/fieldRenderers/text/textInputs.js.map +1 -1
  106. package/admin/views/contentEntries/ContentEntriesModule.js +1 -1
  107. package/admin/views/contentEntries/ContentEntriesModule.js.map +1 -1
  108. package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntry.js +5 -5
  109. package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntry.js.map +1 -1
  110. package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntry.styled.d.ts +9 -9
  111. package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntry.styled.js +25 -25
  112. package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntry.styled.js.map +1 -1
  113. package/admin/views/contentEntries/ContentEntry.js +17 -5
  114. package/admin/views/contentEntries/ContentEntry.js.map +1 -1
  115. package/admin/views/contentEntries/ValidationIndicators.d.ts +25 -0
  116. package/admin/views/contentEntries/ValidationIndicators.js +45 -0
  117. package/admin/views/contentEntries/ValidationIndicators.js.map +1 -0
  118. package/allPlugins.d.ts +2 -2
  119. package/package.json +29 -30
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { useTemplate } from "./admin/plugins/fieldRenderers/dynamicZone";
2
+ import * as DzField from "./admin/plugins/fieldRenderers/dynamicZone";
3
3
  export declare const ContentEntryEditorConfig: (({ priority, children }: import("@webiny/react-properties").ConfigProps) => import("react").JSX.Element) & {
4
4
  Actions: {
5
5
  ButtonAction: ((props: import("./admin/config/contentEntries/editor/Actions/ButtonAction").ButtonActionProps) => import("react").JSX.Element) & {
@@ -55,6 +55,7 @@ export declare const ContentEntryEditorConfig: (({ priority, children }: import(
55
55
  }) => import("react").JSX.Element;
56
56
  };
57
57
  Width: ({ value, modelIds }: import("./admin/config/contentEntries/editor/Width").WidthProps) => import("react").JSX.Element;
58
+ ValidationIndicators: ({ className }: import("./admin/config/contentEntries/editor/ValidationIndicators").ValidationIndicatorsProps) => import("react").JSX.Element;
58
59
  } & {
59
60
  ContentEntry: (() => import("react").JSX.Element) & {
60
61
  original: () => import("react").JSX.Element;
@@ -100,21 +101,21 @@ export declare const ContentEntryEditorConfig: (({ priority, children }: import(
100
101
  displayName: string;
101
102
  }>) => (props: unknown) => import("react").JSX.Element;
102
103
  };
103
- ContentEntryForm: (({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element) & {
104
- original: ({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element;
104
+ ContentEntryForm: (({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element) & {
105
+ original: ({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element;
105
106
  originalName: string;
106
107
  displayName: string;
107
108
  } & {
108
- original: (({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element) & {
109
- original: ({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element;
109
+ original: (({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element) & {
110
+ original: ({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element;
110
111
  originalName: string;
111
112
  displayName: string;
112
113
  };
113
114
  originalName: string;
114
115
  displayName: string;
115
116
  } & {
116
- createDecorator: (decorator: import("@webiny/react-composition").ComponentDecorator<(({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element) & {
117
- original: ({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element;
117
+ createDecorator: (decorator: import("@webiny/react-composition").ComponentDecorator<(({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element) & {
118
+ original: ({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: import("./admin/components/ContentEntryForm/ContentEntryForm").ContentEntryFormProps) => import("react").JSX.Element;
118
119
  originalName: string;
119
120
  displayName: string;
120
121
  }>) => (props: unknown) => import("react").JSX.Element;
@@ -231,25 +232,48 @@ export declare const ContentEntryEditorConfig: (({ priority, children }: import(
231
232
  };
232
233
  };
233
234
  FieldRenderers: {
235
+ Object: {
236
+ MultiValue: {
237
+ ItemContainer: (({ children, ...props }: import("./admin/plugins/fieldRenderers/object/MultiValueItemContainer").MultiValueItemContainerProps) => import("react").JSX.Element) & {
238
+ original: ({ children, ...props }: import("./admin/plugins/fieldRenderers/object/MultiValueItemContainer").MultiValueItemContainerProps) => import("react").JSX.Element;
239
+ originalName: string;
240
+ displayName: string;
241
+ } & {
242
+ original: (({ children, ...props }: import("./admin/plugins/fieldRenderers/object/MultiValueItemContainer").MultiValueItemContainerProps) => import("react").JSX.Element) & {
243
+ original: ({ children, ...props }: import("./admin/plugins/fieldRenderers/object/MultiValueItemContainer").MultiValueItemContainerProps) => import("react").JSX.Element;
244
+ originalName: string;
245
+ displayName: string;
246
+ };
247
+ originalName: string;
248
+ displayName: string;
249
+ } & {
250
+ createDecorator: (decorator: import("@webiny/react-composition").ComponentDecorator<(({ children, ...props }: import("./admin/plugins/fieldRenderers/object/MultiValueItemContainer").MultiValueItemContainerProps) => import("react").JSX.Element) & {
251
+ original: ({ children, ...props }: import("./admin/plugins/fieldRenderers/object/MultiValueItemContainer").MultiValueItemContainerProps) => import("react").JSX.Element;
252
+ originalName: string;
253
+ displayName: string;
254
+ }>) => (props: unknown) => import("react").JSX.Element;
255
+ };
256
+ };
257
+ };
234
258
  DynamicZone: {
235
259
  Template: {
236
- useTemplate: typeof useTemplate;
260
+ useTemplate: typeof DzField.useTemplate;
237
261
  };
238
- Container: ((props: import("./admin/plugins/fieldRenderers/dynamicZone").DynamicZoneContainerProps) => import("react").JSX.Element) & {
239
- original: (props: import("./admin/plugins/fieldRenderers/dynamicZone").DynamicZoneContainerProps) => import("react").JSX.Element;
262
+ Container: ((props: DzField.DynamicZoneContainerProps) => import("react").JSX.Element) & {
263
+ original: (props: DzField.DynamicZoneContainerProps) => import("react").JSX.Element;
240
264
  originalName: string;
241
265
  displayName: string;
242
266
  } & {
243
- original: ((props: import("./admin/plugins/fieldRenderers/dynamicZone").DynamicZoneContainerProps) => import("react").JSX.Element) & {
244
- original: (props: import("./admin/plugins/fieldRenderers/dynamicZone").DynamicZoneContainerProps) => import("react").JSX.Element;
267
+ original: ((props: DzField.DynamicZoneContainerProps) => import("react").JSX.Element) & {
268
+ original: (props: DzField.DynamicZoneContainerProps) => import("react").JSX.Element;
245
269
  originalName: string;
246
270
  displayName: string;
247
271
  };
248
272
  originalName: string;
249
273
  displayName: string;
250
274
  } & {
251
- createDecorator: (decorator: import("@webiny/react-composition").ComponentDecorator<((props: import("./admin/plugins/fieldRenderers/dynamicZone").DynamicZoneContainerProps) => import("react").JSX.Element) & {
252
- original: (props: import("./admin/plugins/fieldRenderers/dynamicZone").DynamicZoneContainerProps) => import("react").JSX.Element;
275
+ createDecorator: (decorator: import("@webiny/react-composition").ComponentDecorator<((props: DzField.DynamicZoneContainerProps) => import("react").JSX.Element) & {
276
+ original: (props: DzField.DynamicZoneContainerProps) => import("react").JSX.Element;
253
277
  originalName: string;
254
278
  displayName: string;
255
279
  }>) => (props: unknown) => import("react").JSX.Element;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.ContentEntryEditorConfig = void 0;
7
- var _dynamicZone = require("./admin/plugins/fieldRenderers/dynamicZone");
8
+ var DzField = _interopRequireWildcard(require("./admin/plugins/fieldRenderers/dynamicZone"));
9
+ var _object = require("./admin/plugins/fieldRenderers/object");
8
10
  var _ContentEntryForm = require("./admin/components/ContentEntryForm/ContentEntryForm");
9
11
  var _Header = require("./admin/components/ContentEntryForm/Header");
10
12
  var _ContentEntryFormPreview = require("./admin/components/ContentEntryForm/ContentEntryFormPreview");
@@ -33,22 +35,27 @@ var ContentEntryEditorConfig = exports.ContentEntryEditorConfig = Object.assign(
33
35
  useSingletonContentEntry: _useSingletonContentEntry.useSingletonContentEntry
34
36
  }),
35
37
  FieldRenderers: {
38
+ Object: {
39
+ MultiValue: {
40
+ ItemContainer: _object.Components.MultiValueItemContainer
41
+ }
42
+ },
36
43
  DynamicZone: {
37
44
  Template: {
38
- useTemplate: _dynamicZone.useTemplate
45
+ useTemplate: DzField.useTemplate
39
46
  },
40
- Container: _dynamicZone.DynamicZoneContainer,
47
+ Container: DzField.DynamicZoneContainer,
41
48
  // SingleValue: {
42
49
  // Container: null,
43
50
  // ItemContainer: null,
44
51
  // Item: null
45
52
  // },
46
53
  MultiValue: {
47
- Container: _dynamicZone.MultiValueContainer,
48
- ItemContainer: _dynamicZone.MultiValueItemContainer,
49
- Item: _dynamicZone.MultiValueItem
54
+ Container: DzField.MultiValueContainer,
55
+ ItemContainer: DzField.MultiValueItemContainer,
56
+ Item: DzField.MultiValueItem
50
57
  },
51
- TemplateGallery: _dynamicZone.TemplateGallery
58
+ TemplateGallery: DzField.TemplateGallery
52
59
  }
53
60
  }
54
61
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_dynamicZone","require","_ContentEntryForm","_Header","_ContentEntryFormPreview","_useContentEntryForm","_DefaultLayout","_hooks","_ContentEntry","_contentEntries","_SingletonContentEntry","_useSingletonContentEntry","_FullScreenContentEntryHeaderLeft","ContentEntryEditorConfig","exports","Object","assign","BaseContentEntryEditorConfig","ContentEntry","useContentEntry","DefaultLayout","ContentEntryForm","BaseContentEntryForm","useContentEntryForm","Header","ContentEntryFormHeader","Title","ContentEntryFormTitle","Meta","ContentEntryFormMeta","ContentEntryFormPreview","SingletonContentEntry","useSingletonContentEntry","FieldRenderers","DynamicZone","Template","useTemplate","Container","DynamicZoneContainer","MultiValue","MultiValueContainer","ItemContainer","MultiValueItemContainer","Item","MultiValueItem","TemplateGallery"],"sources":["ContentEntryEditorConfig.ts"],"sourcesContent":["import {\n DynamicZoneContainer,\n MultiValueContainer,\n MultiValueItemContainer,\n MultiValueItem,\n TemplateGallery,\n useTemplate\n} from \"~/admin/plugins/fieldRenderers/dynamicZone\";\nimport { ContentEntryForm as BaseContentEntryForm } from \"./admin/components/ContentEntryForm/ContentEntryForm\";\nimport { Header as ContentEntryFormHeader } from \"./admin/components/ContentEntryForm/Header\";\nimport { ContentEntryFormPreview } from \"./admin/components/ContentEntryForm/ContentEntryFormPreview\";\nimport { useContentEntryForm } from \"./admin/components/ContentEntryForm/useContentEntryForm\";\nimport { DefaultLayout } from \"~/admin/components/ContentEntryForm/DefaultLayout\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks\";\nimport { ContentEntry } from \"~/admin/views/contentEntries/ContentEntry\";\nimport { ContentEntryEditorConfig as BaseContentEntryEditorConfig } from \"./admin/config/contentEntries\";\nimport { SingletonContentEntry } from \"~/admin/views/contentEntries/ContentEntry/SingletonContentEntry\";\nimport { useSingletonContentEntry } from \"~/admin/views/contentEntries/hooks/useSingletonContentEntry\";\nimport {\n ContentEntryFormMeta,\n ContentEntryFormTitle\n} from \"~/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntryHeaderLeft\";\n\nexport const ContentEntryEditorConfig = Object.assign(BaseContentEntryEditorConfig, {\n ContentEntry: Object.assign(ContentEntry, {\n useContentEntry,\n DefaultLayout,\n ContentEntryForm: Object.assign(BaseContentEntryForm, {\n useContentEntryForm,\n Header: Object.assign(ContentEntryFormHeader, {\n Title: ContentEntryFormTitle,\n Meta: ContentEntryFormMeta\n })\n }),\n ContentEntryFormPreview\n }),\n SingletonContentEntry: Object.assign(SingletonContentEntry, {\n useSingletonContentEntry\n }),\n FieldRenderers: {\n DynamicZone: {\n Template: {\n useTemplate\n },\n Container: DynamicZoneContainer,\n // SingleValue: {\n // Container: null,\n // ItemContainer: null,\n // Item: null\n // },\n MultiValue: {\n Container: MultiValueContainer,\n ItemContainer: MultiValueItemContainer,\n Item: MultiValueItem\n },\n TemplateGallery\n }\n }\n});\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAQA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,wBAAA,GAAAH,OAAA;AACA,IAAAI,oBAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,aAAA,GAAAP,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AACA,IAAAS,sBAAA,GAAAT,OAAA;AACA,IAAAU,yBAAA,GAAAV,OAAA;AACA,IAAAW,iCAAA,GAAAX,OAAA;AAKO,IAAMY,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,GAAGE,MAAM,CAACC,MAAM,CAACC,wCAA4B,EAAE;EAChFC,YAAY,EAAEH,MAAM,CAACC,MAAM,CAACE,0BAAY,EAAE;IACtCC,eAAe,EAAfA,sBAAe;IACfC,aAAa,EAAbA,4BAAa;IACbC,gBAAgB,EAAEN,MAAM,CAACC,MAAM,CAACM,kCAAoB,EAAE;MAClDC,mBAAmB,EAAnBA,wCAAmB;MACnBC,MAAM,EAAET,MAAM,CAACC,MAAM,CAACS,cAAsB,EAAE;QAC1CC,KAAK,EAAEC,uDAAqB;QAC5BC,IAAI,EAAEC;MACV,CAAC;IACL,CAAC,CAAC;IACFC,uBAAuB,EAAvBA;EACJ,CAAC,CAAC;EACFC,qBAAqB,EAAEhB,MAAM,CAACC,MAAM,CAACe,4CAAqB,EAAE;IACxDC,wBAAwB,EAAxBA;EACJ,CAAC,CAAC;EACFC,cAAc,EAAE;IACZC,WAAW,EAAE;MACTC,QAAQ,EAAE;QACNC,WAAW,EAAXA;MACJ,CAAC;MACDC,SAAS,EAAEC,iCAAoB;MAC/B;MACA;MACA;MACA;MACA;MACAC,UAAU,EAAE;QACRF,SAAS,EAAEG,gCAAmB;QAC9BC,aAAa,EAAEC,oCAAuB;QACtCC,IAAI,EAAEC;MACV,CAAC;MACDC,eAAe,EAAfA;IACJ;EACJ;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["DzField","_interopRequireWildcard","require","_object","_ContentEntryForm","_Header","_ContentEntryFormPreview","_useContentEntryForm","_DefaultLayout","_hooks","_ContentEntry","_contentEntries","_SingletonContentEntry","_useSingletonContentEntry","_FullScreenContentEntryHeaderLeft","ContentEntryEditorConfig","exports","Object","assign","BaseContentEntryEditorConfig","ContentEntry","useContentEntry","DefaultLayout","ContentEntryForm","BaseContentEntryForm","useContentEntryForm","Header","ContentEntryFormHeader","Title","ContentEntryFormTitle","Meta","ContentEntryFormMeta","ContentEntryFormPreview","SingletonContentEntry","useSingletonContentEntry","FieldRenderers","MultiValue","ItemContainer","ObjectField","MultiValueItemContainer","DynamicZone","Template","useTemplate","Container","DynamicZoneContainer","MultiValueContainer","Item","MultiValueItem","TemplateGallery"],"sources":["ContentEntryEditorConfig.ts"],"sourcesContent":["import * as DzField from \"~/admin/plugins/fieldRenderers/dynamicZone\";\nimport { Components as ObjectField } from \"~/admin/plugins/fieldRenderers/object\";\nimport { ContentEntryForm as BaseContentEntryForm } from \"./admin/components/ContentEntryForm/ContentEntryForm\";\nimport { Header as ContentEntryFormHeader } from \"./admin/components/ContentEntryForm/Header\";\nimport { ContentEntryFormPreview } from \"./admin/components/ContentEntryForm/ContentEntryFormPreview\";\nimport { useContentEntryForm } from \"./admin/components/ContentEntryForm/useContentEntryForm\";\nimport { DefaultLayout } from \"~/admin/components/ContentEntryForm/DefaultLayout\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks\";\nimport { ContentEntry } from \"~/admin/views/contentEntries/ContentEntry\";\nimport { ContentEntryEditorConfig as BaseContentEntryEditorConfig } from \"./admin/config/contentEntries\";\nimport { SingletonContentEntry } from \"~/admin/views/contentEntries/ContentEntry/SingletonContentEntry\";\nimport { useSingletonContentEntry } from \"~/admin/views/contentEntries/hooks/useSingletonContentEntry\";\nimport {\n ContentEntryFormMeta,\n ContentEntryFormTitle\n} from \"~/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntryHeaderLeft\";\n\nexport const ContentEntryEditorConfig = Object.assign(BaseContentEntryEditorConfig, {\n ContentEntry: Object.assign(ContentEntry, {\n useContentEntry,\n DefaultLayout,\n ContentEntryForm: Object.assign(BaseContentEntryForm, {\n useContentEntryForm,\n Header: Object.assign(ContentEntryFormHeader, {\n Title: ContentEntryFormTitle,\n Meta: ContentEntryFormMeta\n })\n }),\n ContentEntryFormPreview\n }),\n SingletonContentEntry: Object.assign(SingletonContentEntry, {\n useSingletonContentEntry\n }),\n FieldRenderers: {\n Object: {\n MultiValue: {\n ItemContainer: ObjectField.MultiValueItemContainer\n }\n },\n DynamicZone: {\n Template: {\n useTemplate: DzField.useTemplate\n },\n Container: DzField.DynamicZoneContainer,\n // SingleValue: {\n // Container: null,\n // ItemContainer: null,\n // Item: null\n // },\n MultiValue: {\n Container: DzField.MultiValueContainer,\n ItemContainer: DzField.MultiValueItemContainer,\n Item: DzField.MultiValueItem\n },\n TemplateGallery: DzField.TemplateGallery\n }\n }\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,wBAAA,GAAAJ,OAAA;AACA,IAAAK,oBAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,aAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAT,OAAA;AACA,IAAAU,sBAAA,GAAAV,OAAA;AACA,IAAAW,yBAAA,GAAAX,OAAA;AACA,IAAAY,iCAAA,GAAAZ,OAAA;AAKO,IAAMa,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,GAAGE,MAAM,CAACC,MAAM,CAACC,wCAA4B,EAAE;EAChFC,YAAY,EAAEH,MAAM,CAACC,MAAM,CAACE,0BAAY,EAAE;IACtCC,eAAe,EAAfA,sBAAe;IACfC,aAAa,EAAbA,4BAAa;IACbC,gBAAgB,EAAEN,MAAM,CAACC,MAAM,CAACM,kCAAoB,EAAE;MAClDC,mBAAmB,EAAnBA,wCAAmB;MACnBC,MAAM,EAAET,MAAM,CAACC,MAAM,CAACS,cAAsB,EAAE;QAC1CC,KAAK,EAAEC,uDAAqB;QAC5BC,IAAI,EAAEC;MACV,CAAC;IACL,CAAC,CAAC;IACFC,uBAAuB,EAAvBA;EACJ,CAAC,CAAC;EACFC,qBAAqB,EAAEhB,MAAM,CAACC,MAAM,CAACe,4CAAqB,EAAE;IACxDC,wBAAwB,EAAxBA;EACJ,CAAC,CAAC;EACFC,cAAc,EAAE;IACZlB,MAAM,EAAE;MACJmB,UAAU,EAAE;QACRC,aAAa,EAAEC,kBAAW,CAACC;MAC/B;IACJ,CAAC;IACDC,WAAW,EAAE;MACTC,QAAQ,EAAE;QACNC,WAAW,EAAE1C,OAAO,CAAC0C;MACzB,CAAC;MACDC,SAAS,EAAE3C,OAAO,CAAC4C,oBAAoB;MACvC;MACA;MACA;MACA;MACA;MACAR,UAAU,EAAE;QACRO,SAAS,EAAE3C,OAAO,CAAC6C,mBAAmB;QACtCR,aAAa,EAAErC,OAAO,CAACuC,uBAAuB;QAC9CO,IAAI,EAAE9C,OAAO,CAAC+C;MAClB,CAAC;MACDC,eAAe,EAAEhD,OAAO,CAACgD;IAC7B;EACJ;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { FormOnSubmit } from "@webiny/form";
2
+ import { FormOnSubmit, FormValidation } from "@webiny/form";
3
3
  import { CmsContentEntry } from "../../../types";
4
4
  import { ContentEntryFormContext, PersistEntry } from "./ContentEntryFormProvider";
5
5
  export interface ContentEntryFormProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
@@ -14,6 +14,7 @@ export interface ContentEntryFormProps extends Omit<React.HTMLAttributes<HTMLDiv
14
14
  */
15
15
  persistEntry: PersistEntry;
16
16
  onChange?: FormOnSubmit<Partial<CmsContentEntry>>;
17
+ onInvalidFields?: (invalidFields: FormValidation) => void;
17
18
  header?: React.ReactNode;
18
19
  /**
19
20
  * This prop is used to get a reference to `saveEntry` callback, so it can be triggered by components
@@ -22,21 +23,21 @@ export interface ContentEntryFormProps extends Omit<React.HTMLAttributes<HTMLDiv
22
23
  */
23
24
  setSaveEntry?: (cb: ContentEntryFormContext["saveEntry"]) => void;
24
25
  }
25
- export declare const ContentEntryForm: (({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element) & {
26
- original: ({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element;
26
+ export declare const ContentEntryForm: (({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element) & {
27
+ original: ({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element;
27
28
  originalName: string;
28
29
  displayName: string;
29
30
  } & {
30
- original: (({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element) & {
31
- original: ({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element;
31
+ original: (({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element) & {
32
+ original: ({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element;
32
33
  originalName: string;
33
34
  displayName: string;
34
35
  };
35
36
  originalName: string;
36
37
  displayName: string;
37
38
  } & {
38
- createDecorator: (decorator: import("@webiny/app-admin").ComponentDecorator<(({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element) & {
39
- original: ({ entry, persistEntry, onChange, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element;
39
+ createDecorator: (decorator: import("@webiny/app-admin").ComponentDecorator<(({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element) & {
40
+ original: ({ entry, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, header, ...props }: ContentEntryFormProps) => React.JSX.Element;
40
41
  originalName: string;
41
42
  displayName: string;
42
43
  }>) => (props: unknown) => React.JSX.Element;
@@ -16,7 +16,7 @@ var _ContentEntryFormProvider = require("./ContentEntryFormProvider");
16
16
  var _CustomLayout = require("./CustomLayout");
17
17
  var _DefaultLayout = require("./DefaultLayout");
18
18
  var _useGoToRevision2 = require("./useGoToRevision");
19
- var _excluded = ["entry", "persistEntry", "onChange", "onAfterCreate", "setSaveEntry", "header"];
19
+ var _excluded = ["entry", "persistEntry", "onChange", "onInvalidFields", "onAfterCreate", "setSaveEntry", "header"];
20
20
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
21
21
  var FormWrapper = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
22
22
  target: "ejw5gwy0"
@@ -29,13 +29,14 @@ var FormWrapper = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV ==
29
29
  } : {
30
30
  name: "1x0mv1y",
31
31
  styles: "height:calc(100vh - 260px);overflow:auto",
32
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRlbnRFbnRyeUZvcm0udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCb0IiLCJmaWxlIjoiQ29udGVudEVudHJ5Rm9ybS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtT25TdWJtaXQgfSBmcm9tIFwiQHdlYmlueS9mb3JtXCI7XG5pbXBvcnQgeyBtYWtlRGVjb3JhdGFibGUgfSBmcm9tIFwiQHdlYmlueS9hcHAtYWRtaW5cIjtcbmltcG9ydCB7IENtc0NvbnRlbnRFbnRyeSB9IGZyb20gXCJ+L3R5cGVzXCI7XG5pbXBvcnQgeyBNb2RlbFByb3ZpZGVyLCB1c2VNb2RlbCB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvTW9kZWxQcm92aWRlclwiO1xuaW1wb3J0IHsgdXNlRm9ybVJlbmRlcmVyIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL3VzZUZvcm1SZW5kZXJlclwiO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RW50cnlGb3JtQ29udGV4dCxcbiAgICBDb250ZW50RW50cnlGb3JtUHJvdmlkZXIsXG4gICAgUGVyc2lzdEVudHJ5XG59IGZyb20gXCIuL0NvbnRlbnRFbnRyeUZvcm1Qcm92aWRlclwiO1xuaW1wb3J0IHsgQ3VzdG9tTGF5b3V0IH0gZnJvbSBcIi4vQ3VzdG9tTGF5b3V0XCI7XG5pbXBvcnQgeyBEZWZhdWx0TGF5b3V0IH0gZnJvbSBcIi4vRGVmYXVsdExheW91dFwiO1xuaW1wb3J0IHsgdXNlR29Ub1JldmlzaW9uIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL3VzZUdvVG9SZXZpc2lvblwiO1xuXG5jb25zdCBGb3JtV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gICAgaGVpZ2h0OiBcImNhbGMoMTAwdmggLSAyNjBweClcIixcbiAgICBvdmVyZmxvdzogXCJhdXRvXCJcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRFbnRyeUZvcm1Qcm9wc1xuICAgIGV4dGVuZHMgT21pdDxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFwib25DaGFuZ2VcIj4ge1xuICAgIGVudHJ5OiBQYXJ0aWFsPENtc0NvbnRlbnRFbnRyeT47XG4gICAgLyoqXG4gICAgICogVGhpcyBjYWxsYmFjayBpcyBleGVjdXRlZCB3aGVuIGFuIGVudHJ5LCBvciBhIHJldmlzaW9uLCBhcmUgY3JlYXRlZC5cbiAgICAgKiBAcGFyYW0gZW50cnlcbiAgICAgKi9cbiAgICBvbkFmdGVyQ3JlYXRlPzogKGVudHJ5OiBDbXNDb250ZW50RW50cnkpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogVGhpcyBjYWxsYmFjayBpcyBleGVjdXRlZCB3aGVuIHRoZSBmb3JtIGlzIHZhbGlkLCBhbmQgaXQgbmVlZHMgdG8gcGVyc2lzdCB0aGUgY29udGVudCBlbnRyeS5cbiAgICAgKi9cbiAgICBwZXJzaXN0RW50cnk6IFBlcnNpc3RFbnRyeTtcbiAgICBvbkNoYW5nZT86IEZvcm1PblN1Ym1pdDxQYXJ0aWFsPENtc0NvbnRlbnRFbnRyeT4+O1xuICAgIGhlYWRlcj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICAvKipcbiAgICAgKiBUaGlzIHByb3AgaXMgdXNlZCB0byBnZXQgYSByZWZlcmVuY2UgdG8gYHNhdmVFbnRyeWAgY2FsbGJhY2ssIHNvIGl0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY29tcG9uZW50c1xuICAgICAqIG91dHNpZGUgdGhlIENvbnRlbnRFbnRyeUZvcm0gY29udGV4dC5cbiAgICAgKiBUT0RPOiBpbnRyb2R1Y2UgYSBgbGF5b3V0YCBwcm9wIHRvIGJlIGFibGUgdG8gbW91bnQgYXJiaXRyYXJ5IGNvbXBvbmVudHMgYXJvdW5kIHRoZSBlbnRyeSBmb3JtLCB3aXRoaW4gdGhlIGNvbnRleHQuXG4gICAgICovXG4gICAgc2V0U2F2ZUVudHJ5PzogKGNiOiBDb250ZW50RW50cnlGb3JtQ29udGV4dFtcInNhdmVFbnRyeVwiXSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRlbnRFbnRyeUZvcm0gPSBtYWtlRGVjb3JhdGFibGUoXG4gICAgXCJDb250ZW50RW50cnlGb3JtXCIsXG4gICAgKHtcbiAgICAgICAgZW50cnksXG4gICAgICAgIHBlcnNpc3RFbnRyeSxcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICAgIG9uQWZ0ZXJDcmVhdGUsXG4gICAgICAgIHNldFNhdmVFbnRyeSxcbiAgICAgICAgaGVhZGVyID0gdHJ1ZSxcbiAgICAgICAgLi4ucHJvcHNcbiAgICB9OiBDb250ZW50RW50cnlGb3JtUHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgZm9ybUVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgICAgICBjb25zdCB7IG1vZGVsIH0gPSB1c2VNb2RlbCgpO1xuICAgICAgICBjb25zdCB7IGdvVG9SZXZpc2lvbiB9ID0gdXNlR29Ub1JldmlzaW9uKCk7XG4gICAgICAgIGNvbnN0IGZvcm1SZW5kZXJlciA9IHVzZUZvcm1SZW5kZXJlcihtb2RlbCk7XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdE9uQWZ0ZXJDcmVhdGUgPSAoZW50cnk6IENtc0NvbnRlbnRFbnRyeSkgPT4ge1xuICAgICAgICAgICAgZ29Ub1JldmlzaW9uKGVudHJ5LmlkKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBXaGVuIGVudHJ5IGNoYW5nZXMsIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBmb3JtLlxuICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFmb3JtRWxlbWVudFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtRWxlbWVudFJlZi5jdXJyZW50Py5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIH0sIDIwKTtcbiAgICAgICAgfSwgW2VudHJ5LmlkLCBmb3JtRWxlbWVudFJlZi5jdXJyZW50XSk7XG5cbiAgICAgICAgaWYgKG1vZGVsLmlzQmVpbmdEZWxldGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gPD5Nb2RlbCBpcyBiZWluZyBkZWxldGVkLjwvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Q29udGVudEVudHJ5Rm9ybVByb3ZpZGVyXG4gICAgICAgICAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICAgICAgICAgIGVudHJ5PXtlbnRyeX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25BZnRlckNyZWF0ZT17b25BZnRlckNyZWF0ZSB8fCBkZWZhdWx0T25BZnRlckNyZWF0ZX1cbiAgICAgICAgICAgICAgICBzZXRTYXZlRW50cnk9e3NldFNhdmVFbnRyeX1cbiAgICAgICAgICAgICAgICBjb25maXJtTmF2aWdhdGlvbklmRGlydHk9e3RydWV9XG4gICAgICAgICAgICAgICAgcGVyc2lzdEVudHJ5PXtwZXJzaXN0RW50cnl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPE1vZGVsUHJvdmlkZXIgbW9kZWw9e21vZGVsfT5cbiAgICAgICAgICAgICAgICAgICAge2hlYWRlciA/IGhlYWRlciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtV3JhcHBlciB7Li4ucHJvcHN9IGRhdGEtdGVzdGlkPXtcImNtcy1jb250ZW50LWZvcm1cIn0gcmVmPXtmb3JtRWxlbWVudFJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Zm9ybVJlbmRlcmVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXN0b21MYXlvdXQgbW9kZWw9e21vZGVsfSBmb3JtUmVuZGVyZXI9e2Zvcm1SZW5kZXJlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRMYXlvdXQgbW9kZWw9e21vZGVsfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtV3JhcHBlcj5cbiAgICAgICAgICAgICAgICA8L01vZGVsUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0NvbnRlbnRFbnRyeUZvcm1Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICB9XG4pO1xuIl19 */",
32
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRlbnRFbnRyeUZvcm0udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCb0IiLCJmaWxlIjoiQ29udGVudEVudHJ5Rm9ybS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgRm9ybU9uU3VibWl0LCBGb3JtVmFsaWRhdGlvbiB9IGZyb20gXCJAd2ViaW55L2Zvcm1cIjtcbmltcG9ydCB7IG1ha2VEZWNvcmF0YWJsZSB9IGZyb20gXCJAd2ViaW55L2FwcC1hZG1pblwiO1xuaW1wb3J0IHsgQ21zQ29udGVudEVudHJ5IH0gZnJvbSBcIn4vdHlwZXNcIjtcbmltcG9ydCB7IE1vZGVsUHJvdmlkZXIsIHVzZU1vZGVsIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Nb2RlbFByb3ZpZGVyXCI7XG5pbXBvcnQgeyB1c2VGb3JtUmVuZGVyZXIgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL0NvbnRlbnRFbnRyeUZvcm0vdXNlRm9ybVJlbmRlcmVyXCI7XG5pbXBvcnQge1xuICAgIENvbnRlbnRFbnRyeUZvcm1Db250ZXh0LFxuICAgIENvbnRlbnRFbnRyeUZvcm1Qcm92aWRlcixcbiAgICBQZXJzaXN0RW50cnlcbn0gZnJvbSBcIi4vQ29udGVudEVudHJ5Rm9ybVByb3ZpZGVyXCI7XG5pbXBvcnQgeyBDdXN0b21MYXlvdXQgfSBmcm9tIFwiLi9DdXN0b21MYXlvdXRcIjtcbmltcG9ydCB7IERlZmF1bHRMYXlvdXQgfSBmcm9tIFwiLi9EZWZhdWx0TGF5b3V0XCI7XG5pbXBvcnQgeyB1c2VHb1RvUmV2aXNpb24gfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL0NvbnRlbnRFbnRyeUZvcm0vdXNlR29Ub1JldmlzaW9uXCI7XG5cbmNvbnN0IEZvcm1XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKHtcbiAgICBoZWlnaHQ6IFwiY2FsYygxMDB2aCAtIDI2MHB4KVwiLFxuICAgIG92ZXJmbG93OiBcImF1dG9cIlxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEVudHJ5Rm9ybVByb3BzXG4gICAgZXh0ZW5kcyBPbWl0PFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgXCJvbkNoYW5nZVwiPiB7XG4gICAgZW50cnk6IFBhcnRpYWw8Q21zQ29udGVudEVudHJ5PjtcbiAgICAvKipcbiAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGV4ZWN1dGVkIHdoZW4gYW4gZW50cnksIG9yIGEgcmV2aXNpb24sIGFyZSBjcmVhdGVkLlxuICAgICAqIEBwYXJhbSBlbnRyeVxuICAgICAqL1xuICAgIG9uQWZ0ZXJDcmVhdGU/OiAoZW50cnk6IENtc0NvbnRlbnRFbnRyeSkgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGV4ZWN1dGVkIHdoZW4gdGhlIGZvcm0gaXMgdmFsaWQsIGFuZCBpdCBuZWVkcyB0byBwZXJzaXN0IHRoZSBjb250ZW50IGVudHJ5LlxuICAgICAqL1xuICAgIHBlcnNpc3RFbnRyeTogUGVyc2lzdEVudHJ5O1xuICAgIG9uQ2hhbmdlPzogRm9ybU9uU3VibWl0PFBhcnRpYWw8Q21zQ29udGVudEVudHJ5Pj47XG4gICAgb25JbnZhbGlkRmllbGRzPzogKGludmFsaWRGaWVsZHM6IEZvcm1WYWxpZGF0aW9uKSA9PiB2b2lkO1xuICAgIGhlYWRlcj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICAvKipcbiAgICAgKiBUaGlzIHByb3AgaXMgdXNlZCB0byBnZXQgYSByZWZlcmVuY2UgdG8gYHNhdmVFbnRyeWAgY2FsbGJhY2ssIHNvIGl0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY29tcG9uZW50c1xuICAgICAqIG91dHNpZGUgdGhlIENvbnRlbnRFbnRyeUZvcm0gY29udGV4dC5cbiAgICAgKiBUT0RPOiBpbnRyb2R1Y2UgYSBgbGF5b3V0YCBwcm9wIHRvIGJlIGFibGUgdG8gbW91bnQgYXJiaXRyYXJ5IGNvbXBvbmVudHMgYXJvdW5kIHRoZSBlbnRyeSBmb3JtLCB3aXRoaW4gdGhlIGNvbnRleHQuXG4gICAgICovXG4gICAgc2V0U2F2ZUVudHJ5PzogKGNiOiBDb250ZW50RW50cnlGb3JtQ29udGV4dFtcInNhdmVFbnRyeVwiXSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRlbnRFbnRyeUZvcm0gPSBtYWtlRGVjb3JhdGFibGUoXG4gICAgXCJDb250ZW50RW50cnlGb3JtXCIsXG4gICAgKHtcbiAgICAgICAgZW50cnksXG4gICAgICAgIHBlcnNpc3RFbnRyeSxcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICAgIG9uSW52YWxpZEZpZWxkcyxcbiAgICAgICAgb25BZnRlckNyZWF0ZSxcbiAgICAgICAgc2V0U2F2ZUVudHJ5LFxuICAgICAgICBoZWFkZXIgPSB0cnVlLFxuICAgICAgICAuLi5wcm9wc1xuICAgIH06IENvbnRlbnRFbnRyeUZvcm1Qcm9wcykgPT4ge1xuICAgICAgICBjb25zdCBmb3JtRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgICAgIGNvbnN0IHsgbW9kZWwgfSA9IHVzZU1vZGVsKCk7XG4gICAgICAgIGNvbnN0IHsgZ29Ub1JldmlzaW9uIH0gPSB1c2VHb1RvUmV2aXNpb24oKTtcbiAgICAgICAgY29uc3QgZm9ybVJlbmRlcmVyID0gdXNlRm9ybVJlbmRlcmVyKG1vZGVsKTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0T25BZnRlckNyZWF0ZSA9IChlbnRyeTogQ21zQ29udGVudEVudHJ5KSA9PiB7XG4gICAgICAgICAgICBnb1RvUmV2aXNpb24oZW50cnkuaWQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFdoZW4gZW50cnkgY2hhbmdlcywgc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIGZvcm0uXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZvcm1FbGVtZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50UmVmLmN1cnJlbnQ/LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICAgICAgfSwgMjApO1xuICAgICAgICB9LCBbZW50cnkuaWQsIGZvcm1FbGVtZW50UmVmLmN1cnJlbnRdKTtcblxuICAgICAgICBpZiAobW9kZWwuaXNCZWluZ0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiA8Pk1vZGVsIGlzIGJlaW5nIGRlbGV0ZWQuPC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDb250ZW50RW50cnlGb3JtUHJvdmlkZXJcbiAgICAgICAgICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBvbkludmFsaWRGaWVsZHM9e29uSW52YWxpZEZpZWxkc31cbiAgICAgICAgICAgICAgICBvbkFmdGVyQ3JlYXRlPXtvbkFmdGVyQ3JlYXRlIHx8IGRlZmF1bHRPbkFmdGVyQ3JlYXRlfVxuICAgICAgICAgICAgICAgIHNldFNhdmVFbnRyeT17c2V0U2F2ZUVudHJ5fVxuICAgICAgICAgICAgICAgIGNvbmZpcm1OYXZpZ2F0aW9uSWZEaXJ0eT17dHJ1ZX1cbiAgICAgICAgICAgICAgICBwZXJzaXN0RW50cnk9e3BlcnNpc3RFbnRyeX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TW9kZWxQcm92aWRlciBtb2RlbD17bW9kZWx9PlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyID8gaGVhZGVyIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1XcmFwcGVyIHsuLi5wcm9wc30gZGF0YS10ZXN0aWQ9e1wiY21zLWNvbnRlbnQtZm9ybVwifSByZWY9e2Zvcm1FbGVtZW50UmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmb3JtUmVuZGVyZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEN1c3RvbUxheW91dCBtb2RlbD17bW9kZWx9IGZvcm1SZW5kZXJlcj17Zm9ybVJlbmRlcmVyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdExheW91dCBtb2RlbD17bW9kZWx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Zvcm1XcmFwcGVyPlxuICAgICAgICAgICAgICAgIDwvTW9kZWxQcm92aWRlcj5cbiAgICAgICAgICAgIDwvQ29udGVudEVudHJ5Rm9ybVByb3ZpZGVyPlxuICAgICAgICApO1xuICAgIH1cbik7XG4iXX0= */",
33
33
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
34
34
  });
35
35
  var ContentEntryForm = exports.ContentEntryForm = (0, _appAdmin.makeDecoratable)("ContentEntryForm", function (_ref) {
36
36
  var entry = _ref.entry,
37
37
  persistEntry = _ref.persistEntry,
38
38
  onChange = _ref.onChange,
39
+ onInvalidFields = _ref.onInvalidFields,
39
40
  onAfterCreate = _ref.onAfterCreate,
40
41
  setSaveEntry = _ref.setSaveEntry,
41
42
  _ref$header = _ref.header,
@@ -67,6 +68,7 @@ var ContentEntryForm = exports.ContentEntryForm = (0, _appAdmin.makeDecoratable)
67
68
  model: model,
68
69
  entry: entry,
69
70
  onChange: onChange,
71
+ onInvalidFields: onInvalidFields,
70
72
  onAfterCreate: onAfterCreate || defaultOnAfterCreate,
71
73
  setSaveEntry: setSaveEntry,
72
74
  confirmNavigationIfDirty: true,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_appAdmin","_ModelProvider","_useFormRenderer","_ContentEntryFormProvider","_CustomLayout","_DefaultLayout","_useGoToRevision2","_excluded","_EMOTION_STRINGIFIED_CSS_ERROR__","FormWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","ContentEntryForm","exports","makeDecoratable","_ref","entry","persistEntry","onChange","onAfterCreate","setSaveEntry","_ref$header","header","props","_objectWithoutProperties2","formElementRef","useRef","_useModel","useModel","model","_useGoToRevision","useGoToRevision","goToRevision","formRenderer","useFormRenderer","defaultOnAfterCreate","id","useEffect","current","setTimeout","scrollTo","isBeingDeleted","createElement","Fragment","ContentEntryFormProvider","confirmNavigationIfDirty","ModelProvider","Object","assign","ref","CustomLayout","DefaultLayout"],"sources":["ContentEntryForm.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport styled from \"@emotion/styled\";\nimport type { FormOnSubmit } from \"@webiny/form\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { CmsContentEntry } from \"~/types\";\nimport { ModelProvider, useModel } from \"~/admin/components/ModelProvider\";\nimport { useFormRenderer } from \"~/admin/components/ContentEntryForm/useFormRenderer\";\nimport {\n ContentEntryFormContext,\n ContentEntryFormProvider,\n PersistEntry\n} from \"./ContentEntryFormProvider\";\nimport { CustomLayout } from \"./CustomLayout\";\nimport { DefaultLayout } from \"./DefaultLayout\";\nimport { useGoToRevision } from \"~/admin/components/ContentEntryForm/useGoToRevision\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\nexport interface ContentEntryFormProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n entry: Partial<CmsContentEntry>;\n /**\n * This callback is executed when an entry, or a revision, are created.\n * @param entry\n */\n onAfterCreate?: (entry: CmsContentEntry) => void;\n /**\n * This callback is executed when the form is valid, and it needs to persist the content entry.\n */\n persistEntry: PersistEntry;\n onChange?: FormOnSubmit<Partial<CmsContentEntry>>;\n header?: React.ReactNode;\n /**\n * This prop is used to get a reference to `saveEntry` callback, so it can be triggered by components\n * outside the ContentEntryForm context.\n * TODO: introduce a `layout` prop to be able to mount arbitrary components around the entry form, within the context.\n */\n setSaveEntry?: (cb: ContentEntryFormContext[\"saveEntry\"]) => void;\n}\n\nexport const ContentEntryForm = makeDecoratable(\n \"ContentEntryForm\",\n ({\n entry,\n persistEntry,\n onChange,\n onAfterCreate,\n setSaveEntry,\n header = true,\n ...props\n }: ContentEntryFormProps) => {\n const formElementRef = useRef<HTMLDivElement>(null);\n const { model } = useModel();\n const { goToRevision } = useGoToRevision();\n const formRenderer = useFormRenderer(model);\n\n const defaultOnAfterCreate = (entry: CmsContentEntry) => {\n goToRevision(entry.id);\n };\n\n // When entry changes, scroll to the top of the form.\n useEffect(() => {\n if (!formElementRef.current) {\n return;\n }\n\n setTimeout(() => {\n formElementRef.current?.scrollTo(0, 0);\n }, 20);\n }, [entry.id, formElementRef.current]);\n\n if (model.isBeingDeleted) {\n return <>Model is being deleted.</>;\n }\n\n return (\n <ContentEntryFormProvider\n model={model}\n entry={entry}\n onChange={onChange}\n onAfterCreate={onAfterCreate || defaultOnAfterCreate}\n setSaveEntry={setSaveEntry}\n confirmNavigationIfDirty={true}\n persistEntry={persistEntry}\n >\n <ModelProvider model={model}>\n {header ? header : null}\n <FormWrapper {...props} data-testid={\"cms-content-form\"} ref={formElementRef}>\n {formRenderer ? (\n <CustomLayout model={model} formRenderer={formRenderer} />\n ) : (\n <DefaultLayout model={model} />\n )}\n </FormWrapper>\n </ModelProvider>\n </ContentEntryFormProvider>\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_appAdmin","_ModelProvider","_useFormRenderer","_ContentEntryFormProvider","_CustomLayout","_DefaultLayout","_useGoToRevision2","_excluded","_EMOTION_STRINGIFIED_CSS_ERROR__","FormWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","ContentEntryForm","exports","makeDecoratable","_ref","entry","persistEntry","onChange","onInvalidFields","onAfterCreate","setSaveEntry","_ref$header","header","props","_objectWithoutProperties2","formElementRef","useRef","_useModel","useModel","model","_useGoToRevision","useGoToRevision","goToRevision","formRenderer","useFormRenderer","defaultOnAfterCreate","id","useEffect","current","setTimeout","scrollTo","isBeingDeleted","createElement","Fragment","ContentEntryFormProvider","confirmNavigationIfDirty","ModelProvider","Object","assign","ref","CustomLayout","DefaultLayout"],"sources":["ContentEntryForm.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { FormOnSubmit, FormValidation } from \"@webiny/form\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { CmsContentEntry } from \"~/types\";\nimport { ModelProvider, useModel } from \"~/admin/components/ModelProvider\";\nimport { useFormRenderer } from \"~/admin/components/ContentEntryForm/useFormRenderer\";\nimport {\n ContentEntryFormContext,\n ContentEntryFormProvider,\n PersistEntry\n} from \"./ContentEntryFormProvider\";\nimport { CustomLayout } from \"./CustomLayout\";\nimport { DefaultLayout } from \"./DefaultLayout\";\nimport { useGoToRevision } from \"~/admin/components/ContentEntryForm/useGoToRevision\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\nexport interface ContentEntryFormProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n entry: Partial<CmsContentEntry>;\n /**\n * This callback is executed when an entry, or a revision, are created.\n * @param entry\n */\n onAfterCreate?: (entry: CmsContentEntry) => void;\n /**\n * This callback is executed when the form is valid, and it needs to persist the content entry.\n */\n persistEntry: PersistEntry;\n onChange?: FormOnSubmit<Partial<CmsContentEntry>>;\n onInvalidFields?: (invalidFields: FormValidation) => void;\n header?: React.ReactNode;\n /**\n * This prop is used to get a reference to `saveEntry` callback, so it can be triggered by components\n * outside the ContentEntryForm context.\n * TODO: introduce a `layout` prop to be able to mount arbitrary components around the entry form, within the context.\n */\n setSaveEntry?: (cb: ContentEntryFormContext[\"saveEntry\"]) => void;\n}\n\nexport const ContentEntryForm = makeDecoratable(\n \"ContentEntryForm\",\n ({\n entry,\n persistEntry,\n onChange,\n onInvalidFields,\n onAfterCreate,\n setSaveEntry,\n header = true,\n ...props\n }: ContentEntryFormProps) => {\n const formElementRef = useRef<HTMLDivElement>(null);\n const { model } = useModel();\n const { goToRevision } = useGoToRevision();\n const formRenderer = useFormRenderer(model);\n\n const defaultOnAfterCreate = (entry: CmsContentEntry) => {\n goToRevision(entry.id);\n };\n\n // When entry changes, scroll to the top of the form.\n useEffect(() => {\n if (!formElementRef.current) {\n return;\n }\n\n setTimeout(() => {\n formElementRef.current?.scrollTo(0, 0);\n }, 20);\n }, [entry.id, formElementRef.current]);\n\n if (model.isBeingDeleted) {\n return <>Model is being deleted.</>;\n }\n\n return (\n <ContentEntryFormProvider\n model={model}\n entry={entry}\n onChange={onChange}\n onInvalidFields={onInvalidFields}\n onAfterCreate={onAfterCreate || defaultOnAfterCreate}\n setSaveEntry={setSaveEntry}\n confirmNavigationIfDirty={true}\n persistEntry={persistEntry}\n >\n <ModelProvider model={model}>\n {header ? header : null}\n <FormWrapper {...props} data-testid={\"cms-content-form\"} ref={formElementRef}>\n {formRenderer ? (\n <CustomLayout model={model} formRenderer={formRenderer} />\n ) : (\n <DefaultLayout model={model} />\n )}\n </FormWrapper>\n </ModelProvider>\n </ContentEntryFormProvider>\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { FormOnSubmit, FormInvalidFields } from "@webiny/form";
2
+ import type { FormOnSubmit, FormValidation, FormInvalidFields } from "@webiny/form";
3
3
  import type { CmsContentEntry, CmsModel } from "@webiny/app-headless-cms-common/types";
4
4
  import type { CreateEntryResponse, UpdateEntryRevisionResponse } from "../../contexts/Cms";
5
5
  interface SaveEntryOptions {
@@ -24,9 +24,10 @@ interface ContentEntryFormProviderProps {
24
24
  persistEntry: PersistEntry;
25
25
  confirmNavigationIfDirty: boolean;
26
26
  onChange?: FormOnSubmit<Partial<CmsContentEntry>>;
27
+ onInvalidFields?: (invalidFields: FormValidation) => void;
27
28
  onAfterCreate?: (entry: CmsContentEntry) => void;
28
29
  setSaveEntry?: SetSaveEntry;
29
30
  children: React.ReactNode;
30
31
  }
31
- export declare const ContentEntryFormProvider: ({ model, entry, children, persistEntry, onChange, onAfterCreate, setSaveEntry, confirmNavigationIfDirty }: ContentEntryFormProviderProps) => React.JSX.Element;
32
+ export declare const ContentEntryFormProvider: ({ model, entry, children, persistEntry, onChange, onInvalidFields, onAfterCreate, setSaveEntry, confirmNavigationIfDirty }: ContentEntryFormProviderProps) => React.JSX.Element;
32
33
  export {};
@@ -29,6 +29,7 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
29
29
  children = _ref.children,
30
30
  persistEntry = _ref.persistEntry,
31
31
  onChange = _ref.onChange,
32
+ onInvalidFields = _ref.onInvalidFields,
32
33
  onAfterCreate = _ref.onAfterCreate,
33
34
  setSaveEntry = _ref.setSaveEntry,
34
35
  confirmNavigationIfDirty = _ref.confirmNavigationIfDirty;
@@ -102,6 +103,7 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
102
103
  invalidFields: invalidFields,
103
104
  onInvalid: function onInvalid(invalidFields) {
104
105
  setInvalidFields(formValidationToMap(invalidFields));
106
+ onInvalidFields && onInvalidFields(invalidFields);
105
107
  showSnackbar("Some fields did not pass the validation. Please check the form.");
106
108
  }
107
109
  }, function (formProps) {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_pick","_interopRequireDefault","_reactRouter","_form","_appHeadlessCmsCommon","_appAdmin","promptMessage","ContentEntryFormContext","exports","React","createContext","undefined","formValidationToMap","invalidFields","Object","keys","reduce","acc","key","_objectSpread4","default","_defineProperty2","message","ContentEntryFormProvider","_ref","model","entry","children","persistEntry","onChange","onAfterCreate","setSaveEntry","confirmNavigationIfDirty","ref","useRef","_useState","useState","_useState2","_slicedToArray2","setInvalidFields","_useSnackbar","useSnackbar","showSnackbar","saveOptionsRef","skipValidators","saveEntry","useCallback","options","arguments","length","current","submit","onFormSubmit","data","fieldsIds","fields","map","item","fieldId","formData","pick","_toConsumableArray2","gqlData","prepareFormData","isNewEntry","id","_await$persistEntry","createNewRevision","meta","locked","error","code","errors","isNewRevision","Promise","resolve","setTimeout","useEffect","createElement","Form","onSubmit","validateOnFirstSubmit","onInvalid","formProps","context","Provider","value","CompositionScope","name","Prompt","when","form","isPristine"],"sources":["ContentEntryFormProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { Form } from \"@webiny/form\";\nimport { prepareFormData } from \"@webiny/app-headless-cms-common\";\nimport type { FormAPI, FormOnSubmit, FormValidation, FormInvalidFields } from \"@webiny/form\";\nimport type { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types\";\nimport { CompositionScope, useSnackbar } from \"@webiny/app-admin\";\nimport type { CreateEntryResponse, UpdateEntryRevisionResponse } from \"~/admin/contexts/Cms\";\n\nconst promptMessage =\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\";\n\ninterface SaveEntryOptions {\n skipValidators?: string[];\n createNewRevision?: boolean;\n}\n\nexport interface ContentEntryFormContext {\n entry: Partial<CmsContentEntry>;\n saveEntry: (options?: SaveEntryOptions) => Promise<CmsContentEntry | null>;\n invalidFields: FormInvalidFields;\n}\n\nexport const ContentEntryFormContext = React.createContext<ContentEntryFormContext | undefined>(\n undefined\n);\n\nexport interface SetSaveEntry {\n (cb: ContentEntryFormContext[\"saveEntry\"]): void;\n}\n\nexport interface PersistEntry {\n (entry: Partial<CmsContentEntry>, options?: SaveEntryOptions): Promise<\n CreateEntryResponse | UpdateEntryRevisionResponse\n >;\n}\n\ninterface ContentEntryFormProviderProps {\n entry: Partial<CmsContentEntry>;\n model: CmsModel;\n persistEntry: PersistEntry;\n confirmNavigationIfDirty: boolean;\n onChange?: FormOnSubmit<Partial<CmsContentEntry>>;\n onAfterCreate?: (entry: CmsContentEntry) => void;\n setSaveEntry?: SetSaveEntry;\n children: React.ReactNode;\n}\n\ninterface InvalidFieldError {\n fieldId: string;\n error: string;\n}\n\nconst formValidationToMap = (invalidFields: FormValidation): FormInvalidFields => {\n return Object.keys(invalidFields).reduce(\n (acc, key) => ({ ...acc, [key]: invalidFields[key].message || \"Value is invalid.\" }),\n {} as FormInvalidFields\n );\n};\n\nexport const ContentEntryFormProvider = ({\n model,\n entry,\n children,\n persistEntry,\n onChange,\n onAfterCreate,\n setSaveEntry,\n confirmNavigationIfDirty\n}: ContentEntryFormProviderProps) => {\n const ref = useRef<FormAPI<CmsContentEntry> | null>(null);\n const [invalidFields, setInvalidFields] = useState<FormInvalidFields>({});\n const { showSnackbar } = useSnackbar();\n const saveOptionsRef = useRef<SaveEntryOptions>({ skipValidators: undefined });\n\n const saveEntry = useCallback(async (options: SaveEntryOptions = {}) => {\n saveOptionsRef.current.skipValidators = options.skipValidators;\n\n return ref.current!.submit(undefined, {\n skipValidators: options.skipValidators\n }) as unknown as Promise<CmsContentEntry | null>;\n }, []);\n\n const onFormSubmit: FormOnSubmit<CmsContentEntry> = async data => {\n const fieldsIds = model.fields.map(item => item.fieldId);\n const formData = pick(data, [...fieldsIds]);\n\n const gqlData = prepareFormData(formData, model.fields) as Partial<CmsContentEntry>;\n const isNewEntry = data.id === undefined;\n\n const { entry, error } = await persistEntry(\n { id: data.id, ...gqlData },\n {\n skipValidators: saveOptionsRef.current.skipValidators,\n createNewRevision: data.meta?.locked\n }\n );\n\n if (error) {\n if (error.code === \"VALIDATION_FAILED\") {\n const errors: InvalidFieldError[] = error.data || [];\n\n setInvalidFields(\n errors.reduce((acc, item) => ({ ...acc, [item.fieldId]: item.error }), {})\n );\n }\n showSnackbar(error.message);\n\n return;\n }\n\n showSnackbar(\"Entry saved successfully!\");\n setInvalidFields({});\n\n const isNewRevision = !isNewEntry && data.id !== entry.id;\n\n if ((isNewEntry || isNewRevision) && onAfterCreate) {\n // We need a timeout to let the Prompt component update.\n await new Promise<void>(resolve => {\n setTimeout(() => {\n onAfterCreate(entry);\n resolve();\n }, 50);\n });\n }\n\n return entry;\n };\n\n useEffect(() => {\n if (typeof setSaveEntry === \"function\") {\n setSaveEntry(saveEntry);\n }\n }, [setSaveEntry]);\n\n return (\n <Form<CmsContentEntry>\n onSubmit={onFormSubmit}\n onChange={onChange}\n data={entry}\n ref={ref}\n validateOnFirstSubmit\n invalidFields={invalidFields}\n onInvalid={invalidFields => {\n setInvalidFields(formValidationToMap(invalidFields));\n showSnackbar(\"Some fields did not pass the validation. Please check the form.\");\n }}\n >\n {formProps => {\n const context: ContentEntryFormContext = {\n entry: formProps.data,\n saveEntry,\n invalidFields\n };\n return (\n <ContentEntryFormContext.Provider value={context}>\n {confirmNavigationIfDirty ? (\n <CompositionScope name={\"cms.contentEntryForm\"}>\n <Prompt when={!formProps.form.isPristine} message={promptMessage} />\n </CompositionScope>\n ) : null}\n {children}\n </ContentEntryFormContext.Provider>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_pick","_interopRequireDefault","_reactRouter","_form","_appHeadlessCmsCommon","_appAdmin","promptMessage","ContentEntryFormContext","exports","React","createContext","undefined","formValidationToMap","invalidFields","Object","keys","reduce","acc","key","_objectSpread4","default","_defineProperty2","message","ContentEntryFormProvider","_ref","model","entry","children","persistEntry","onChange","onInvalidFields","onAfterCreate","setSaveEntry","confirmNavigationIfDirty","ref","useRef","_useState","useState","_useState2","_slicedToArray2","setInvalidFields","_useSnackbar","useSnackbar","showSnackbar","saveOptionsRef","skipValidators","saveEntry","useCallback","options","arguments","length","current","submit","onFormSubmit","data","fieldsIds","fields","map","item","fieldId","formData","pick","_toConsumableArray2","gqlData","prepareFormData","isNewEntry","id","_await$persistEntry","createNewRevision","meta","locked","error","code","errors","isNewRevision","Promise","resolve","setTimeout","useEffect","createElement","Form","onSubmit","validateOnFirstSubmit","onInvalid","formProps","context","Provider","value","CompositionScope","name","Prompt","when","form","isPristine"],"sources":["ContentEntryFormProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { Form } from \"@webiny/form\";\nimport { prepareFormData } from \"@webiny/app-headless-cms-common\";\nimport type { FormAPI, FormOnSubmit, FormValidation, FormInvalidFields } from \"@webiny/form\";\nimport type { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types\";\nimport { CompositionScope, useSnackbar } from \"@webiny/app-admin\";\nimport type { CreateEntryResponse, UpdateEntryRevisionResponse } from \"~/admin/contexts/Cms\";\n\nconst promptMessage =\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\";\n\ninterface SaveEntryOptions {\n skipValidators?: string[];\n createNewRevision?: boolean;\n}\n\nexport interface ContentEntryFormContext {\n entry: Partial<CmsContentEntry>;\n saveEntry: (options?: SaveEntryOptions) => Promise<CmsContentEntry | null>;\n invalidFields: FormInvalidFields;\n}\n\nexport const ContentEntryFormContext = React.createContext<ContentEntryFormContext | undefined>(\n undefined\n);\n\nexport interface SetSaveEntry {\n (cb: ContentEntryFormContext[\"saveEntry\"]): void;\n}\n\nexport interface PersistEntry {\n (entry: Partial<CmsContentEntry>, options?: SaveEntryOptions): Promise<\n CreateEntryResponse | UpdateEntryRevisionResponse\n >;\n}\n\ninterface ContentEntryFormProviderProps {\n entry: Partial<CmsContentEntry>;\n model: CmsModel;\n persistEntry: PersistEntry;\n confirmNavigationIfDirty: boolean;\n onChange?: FormOnSubmit<Partial<CmsContentEntry>>;\n onInvalidFields?: (invalidFields: FormValidation) => void;\n onAfterCreate?: (entry: CmsContentEntry) => void;\n setSaveEntry?: SetSaveEntry;\n children: React.ReactNode;\n}\n\ninterface InvalidFieldError {\n fieldId: string;\n error: string;\n}\n\nconst formValidationToMap = (invalidFields: FormValidation): FormInvalidFields => {\n return Object.keys(invalidFields).reduce(\n (acc, key) => ({ ...acc, [key]: invalidFields[key].message || \"Value is invalid.\" }),\n {} as FormInvalidFields\n );\n};\n\nexport const ContentEntryFormProvider = ({\n model,\n entry,\n children,\n persistEntry,\n onChange,\n onInvalidFields,\n onAfterCreate,\n setSaveEntry,\n confirmNavigationIfDirty\n}: ContentEntryFormProviderProps) => {\n const ref = useRef<FormAPI<CmsContentEntry> | null>(null);\n const [invalidFields, setInvalidFields] = useState<FormInvalidFields>({});\n const { showSnackbar } = useSnackbar();\n const saveOptionsRef = useRef<SaveEntryOptions>({ skipValidators: undefined });\n\n const saveEntry = useCallback(async (options: SaveEntryOptions = {}) => {\n saveOptionsRef.current.skipValidators = options.skipValidators;\n\n return ref.current!.submit(undefined, {\n skipValidators: options.skipValidators\n }) as unknown as Promise<CmsContentEntry | null>;\n }, []);\n\n const onFormSubmit: FormOnSubmit<CmsContentEntry> = async data => {\n const fieldsIds = model.fields.map(item => item.fieldId);\n const formData = pick(data, [...fieldsIds]);\n\n const gqlData = prepareFormData(formData, model.fields) as Partial<CmsContentEntry>;\n const isNewEntry = data.id === undefined;\n\n const { entry, error } = await persistEntry(\n { id: data.id, ...gqlData },\n {\n skipValidators: saveOptionsRef.current.skipValidators,\n createNewRevision: data.meta?.locked\n }\n );\n\n if (error) {\n if (error.code === \"VALIDATION_FAILED\") {\n const errors: InvalidFieldError[] = error.data || [];\n\n setInvalidFields(\n errors.reduce((acc, item) => ({ ...acc, [item.fieldId]: item.error }), {})\n );\n }\n showSnackbar(error.message);\n\n return;\n }\n\n showSnackbar(\"Entry saved successfully!\");\n setInvalidFields({});\n\n const isNewRevision = !isNewEntry && data.id !== entry.id;\n\n if ((isNewEntry || isNewRevision) && onAfterCreate) {\n // We need a timeout to let the Prompt component update.\n await new Promise<void>(resolve => {\n setTimeout(() => {\n onAfterCreate(entry);\n resolve();\n }, 50);\n });\n }\n\n return entry;\n };\n\n useEffect(() => {\n if (typeof setSaveEntry === \"function\") {\n setSaveEntry(saveEntry);\n }\n }, [setSaveEntry]);\n\n return (\n <Form<CmsContentEntry>\n onSubmit={onFormSubmit}\n onChange={onChange}\n data={entry}\n ref={ref}\n validateOnFirstSubmit\n invalidFields={invalidFields}\n onInvalid={invalidFields => {\n setInvalidFields(formValidationToMap(invalidFields));\n onInvalidFields && onInvalidFields(invalidFields);\n showSnackbar(\"Some fields did not pass the validation. Please check the form.\");\n }}\n >\n {formProps => {\n const context: ContentEntryFormContext = {\n entry: formProps.data,\n saveEntry,\n invalidFields\n };\n return (\n <ContentEntryFormContext.Provider value={context}>\n {confirmNavigationIfDirty ? (\n <CompositionScope name={\"cms.contentEntryForm\"}>\n <Prompt when={!formProps.form.isPristine} message={promptMessage} />\n </CompositionScope>\n ) : null}\n {children}\n </ContentEntryFormContext.Provider>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -25,8 +25,7 @@ var RenderField = function RenderField(props) {
25
25
  var _useModelField = (0, _ModelFieldProvider.useModelField)(),
26
26
  field = _useModelField.field;
27
27
  var getBind = (0, _useBind.useBind)({
28
- Bind: Bind,
29
- field: field
28
+ Bind: Bind
30
29
  });
31
30
  if (typeof field.renderer === "function") {
32
31
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, field.renderer({
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_get","_appAdmin","_i18n","_Label","_useBind","_useRenderPlugins","_ModelFieldProvider","_excluded","_templateObject","t","i18n","ns","RenderField","props","renderPlugins","useRenderPlugins","Bind","contentModel","_useModelField","useModelField","field","getBind","useBind","renderer","default","createElement","Fragment","Label","renderPlugin","find","plugin","rendererName","get","_taggedTemplateLiteral2","fieldName","fieldId","render","FieldElement","exports","makeDecoratable","_ref","_objectWithoutProperties2","ModelFieldProvider","RenderFieldElement"],"sources":["FieldElement.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelField, CmsEditorContentModel, BindComponent } from \"~/types\";\nimport Label from \"./Label\";\nimport { useBind } from \"./useBind\";\nimport { useRenderPlugins } from \"./useRenderPlugins\";\nimport { ModelFieldProvider, useModelField } from \"../ModelFieldProvider\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/content-form\");\n\ntype RenderFieldProps = Omit<FieldElementProps, \"field\">;\n\nconst RenderField = (props: RenderFieldProps) => {\n const renderPlugins = useRenderPlugins();\n const { Bind, contentModel } = props;\n const { field } = useModelField();\n const getBind = useBind({ Bind, field });\n\n if (typeof field.renderer === \"function\") {\n return <>{field.renderer({ field, getBind, Label, contentModel })}</>;\n }\n\n const renderPlugin = renderPlugins.find(\n plugin => plugin.renderer.rendererName === get(field, \"renderer.name\")\n );\n\n if (!renderPlugin) {\n return t`Cannot render \"{fieldName}\" field - field renderer missing.`({\n fieldName: <strong>{field.fieldId}</strong>\n });\n }\n\n return <>{renderPlugin.renderer.render({ field, getBind, Label, contentModel })}</>;\n};\n\nexport interface FieldElementProps {\n field: CmsModelField;\n Bind: BindComponent;\n contentModel: CmsEditorContentModel;\n}\n\nexport const FieldElement = makeDecoratable(\n \"FieldElement\",\n ({ field, ...props }: FieldElementProps) => {\n return (\n <ModelFieldProvider field={field}>\n <RenderField {...props} />\n </ModelFieldProvider>\n );\n }\n);\n\n/**\n * @deprecated Use `FieldElement` instead.\n */\nexport const RenderFieldElement = FieldElement;\n\n/**\n * @deprecated Use `FieldElementProps` instead.\n */\nexport type RenderFieldElementProps = FieldElementProps;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAEA,IAAAI,MAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AAA0E,IAAAQ,SAAA;AAAA,IAAAC,eAAA;AAE1E,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,gDAAgD,CAAC;AAInE,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAAuB,EAAK;EAC7C,IAAMC,aAAa,GAAG,IAAAC,kCAAgB,EAAC,CAAC;EACxC,IAAQC,IAAI,GAAmBH,KAAK,CAA5BG,IAAI;IAAEC,YAAY,GAAKJ,KAAK,CAAtBI,YAAY;EAC1B,IAAAC,cAAA,GAAkB,IAAAC,iCAAa,EAAC,CAAC;IAAzBC,KAAK,GAAAF,cAAA,CAALE,KAAK;EACb,IAAMC,OAAO,GAAG,IAAAC,gBAAO,EAAC;IAAEN,IAAI,EAAJA,IAAI;IAAEI,KAAK,EAALA;EAAM,CAAC,CAAC;EAExC,IAAI,OAAOA,KAAK,CAACG,QAAQ,KAAK,UAAU,EAAE;IACtC,oBAAO1B,MAAA,CAAA2B,OAAA,CAAAC,aAAA,CAAA5B,MAAA,CAAA2B,OAAA,CAAAE,QAAA,QAAGN,KAAK,CAACG,QAAQ,CAAC;MAAEH,KAAK,EAALA,KAAK;MAAEC,OAAO,EAAPA,OAAO;MAAEM,KAAK,EAALA,cAAK;MAAEV,YAAY,EAAZA;IAAa,CAAC,CAAI,CAAC;EACzE;EAEA,IAAMW,YAAY,GAAGd,aAAa,CAACe,IAAI,CACnC,UAAAC,MAAM;IAAA,OAAIA,MAAM,CAACP,QAAQ,CAACQ,YAAY,KAAK,IAAAC,YAAG,EAACZ,KAAK,EAAE,eAAe,CAAC;EAAA,CAC1E,CAAC;EAED,IAAI,CAACQ,YAAY,EAAE;IACf,OAAOnB,CAAC,CAAAD,eAAA,KAAAA,eAAA,OAAAyB,uBAAA,CAAAT,OAAA,uEAA8D;MAClEU,SAAS,eAAErC,MAAA,CAAA2B,OAAA,CAAAC,aAAA,iBAASL,KAAK,CAACe,OAAgB;IAC9C,CAAC,CAAC;EACN;EAEA,oBAAOtC,MAAA,CAAA2B,OAAA,CAAAC,aAAA,CAAA5B,MAAA,CAAA2B,OAAA,CAAAE,QAAA,QAAGE,YAAY,CAACL,QAAQ,CAACa,MAAM,CAAC;IAAEhB,KAAK,EAALA,KAAK;IAAEC,OAAO,EAAPA,OAAO;IAAEM,KAAK,EAALA,cAAK;IAAEV,YAAY,EAAZA;EAAa,CAAC,CAAI,CAAC;AACvF,CAAC;AAQM,IAAMoB,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,IAAAE,yBAAe,EACvC,cAAc,EACd,UAAAC,IAAA,EAA4C;EAAA,IAAzCpB,KAAK,GAAAoB,IAAA,CAALpB,KAAK;IAAKP,KAAK,OAAA4B,yBAAA,CAAAjB,OAAA,EAAAgB,IAAA,EAAAjC,SAAA;EACd,oBACIV,MAAA,CAAA2B,OAAA,CAAAC,aAAA,CAACnB,mBAAA,CAAAoC,kBAAkB;IAACtB,KAAK,EAAEA;EAAM,gBAC7BvB,MAAA,CAAA2B,OAAA,CAAAC,aAAA,CAACb,WAAW,EAAKC,KAAQ,CACT,CAAC;AAE7B,CACJ,CAAC;;AAED;AACA;AACA;AACO,IAAM8B,kBAAkB,GAAAL,OAAA,CAAAK,kBAAA,GAAGN,YAAY;;AAE9C;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_get","_appAdmin","_i18n","_Label","_useBind","_useRenderPlugins","_ModelFieldProvider","_excluded","_templateObject","t","i18n","ns","RenderField","props","renderPlugins","useRenderPlugins","Bind","contentModel","_useModelField","useModelField","field","getBind","useBind","renderer","default","createElement","Fragment","Label","renderPlugin","find","plugin","rendererName","get","_taggedTemplateLiteral2","fieldName","fieldId","render","FieldElement","exports","makeDecoratable","_ref","_objectWithoutProperties2","ModelFieldProvider","RenderFieldElement"],"sources":["FieldElement.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelField, CmsEditorContentModel, BindComponent } from \"~/types\";\nimport Label from \"./Label\";\nimport { useBind } from \"./useBind\";\nimport { useRenderPlugins } from \"./useRenderPlugins\";\nimport { ModelFieldProvider, useModelField } from \"../ModelFieldProvider\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/content-form\");\n\ntype RenderFieldProps = Omit<FieldElementProps, \"field\">;\n\nconst RenderField = (props: RenderFieldProps) => {\n const renderPlugins = useRenderPlugins();\n const { Bind, contentModel } = props;\n const { field } = useModelField();\n const getBind = useBind({ Bind });\n\n if (typeof field.renderer === \"function\") {\n return <>{field.renderer({ field, getBind, Label, contentModel })}</>;\n }\n\n const renderPlugin = renderPlugins.find(\n plugin => plugin.renderer.rendererName === get(field, \"renderer.name\")\n );\n\n if (!renderPlugin) {\n return t`Cannot render \"{fieldName}\" field - field renderer missing.`({\n fieldName: <strong>{field.fieldId}</strong>\n });\n }\n\n return <>{renderPlugin.renderer.render({ field, getBind, Label, contentModel })}</>;\n};\n\nexport interface FieldElementProps {\n field: CmsModelField;\n Bind: BindComponent;\n contentModel: CmsEditorContentModel;\n}\n\nexport const FieldElement = makeDecoratable(\n \"FieldElement\",\n ({ field, ...props }: FieldElementProps) => {\n return (\n <ModelFieldProvider field={field}>\n <RenderField {...props} />\n </ModelFieldProvider>\n );\n }\n);\n\n/**\n * @deprecated Use `FieldElement` instead.\n */\nexport const RenderFieldElement = FieldElement;\n\n/**\n * @deprecated Use `FieldElementProps` instead.\n */\nexport type RenderFieldElementProps = FieldElementProps;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAEA,IAAAI,MAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AAA0E,IAAAQ,SAAA;AAAA,IAAAC,eAAA;AAE1E,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,gDAAgD,CAAC;AAInE,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAAuB,EAAK;EAC7C,IAAMC,aAAa,GAAG,IAAAC,kCAAgB,EAAC,CAAC;EACxC,IAAQC,IAAI,GAAmBH,KAAK,CAA5BG,IAAI;IAAEC,YAAY,GAAKJ,KAAK,CAAtBI,YAAY;EAC1B,IAAAC,cAAA,GAAkB,IAAAC,iCAAa,EAAC,CAAC;IAAzBC,KAAK,GAAAF,cAAA,CAALE,KAAK;EACb,IAAMC,OAAO,GAAG,IAAAC,gBAAO,EAAC;IAAEN,IAAI,EAAJA;EAAK,CAAC,CAAC;EAEjC,IAAI,OAAOI,KAAK,CAACG,QAAQ,KAAK,UAAU,EAAE;IACtC,oBAAO1B,MAAA,CAAA2B,OAAA,CAAAC,aAAA,CAAA5B,MAAA,CAAA2B,OAAA,CAAAE,QAAA,QAAGN,KAAK,CAACG,QAAQ,CAAC;MAAEH,KAAK,EAALA,KAAK;MAAEC,OAAO,EAAPA,OAAO;MAAEM,KAAK,EAALA,cAAK;MAAEV,YAAY,EAAZA;IAAa,CAAC,CAAI,CAAC;EACzE;EAEA,IAAMW,YAAY,GAAGd,aAAa,CAACe,IAAI,CACnC,UAAAC,MAAM;IAAA,OAAIA,MAAM,CAACP,QAAQ,CAACQ,YAAY,KAAK,IAAAC,YAAG,EAACZ,KAAK,EAAE,eAAe,CAAC;EAAA,CAC1E,CAAC;EAED,IAAI,CAACQ,YAAY,EAAE;IACf,OAAOnB,CAAC,CAAAD,eAAA,KAAAA,eAAA,OAAAyB,uBAAA,CAAAT,OAAA,uEAA8D;MAClEU,SAAS,eAAErC,MAAA,CAAA2B,OAAA,CAAAC,aAAA,iBAASL,KAAK,CAACe,OAAgB;IAC9C,CAAC,CAAC;EACN;EAEA,oBAAOtC,MAAA,CAAA2B,OAAA,CAAAC,aAAA,CAAA5B,MAAA,CAAA2B,OAAA,CAAAE,QAAA,QAAGE,YAAY,CAACL,QAAQ,CAACa,MAAM,CAAC;IAAEhB,KAAK,EAALA,KAAK;IAAEC,OAAO,EAAPA,OAAO;IAAEM,KAAK,EAALA,cAAK;IAAEV,YAAY,EAAZA;EAAa,CAAC,CAAI,CAAC;AACvF,CAAC;AAQM,IAAMoB,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,IAAAE,yBAAe,EACvC,cAAc,EACd,UAAAC,IAAA,EAA4C;EAAA,IAAzCpB,KAAK,GAAAoB,IAAA,CAALpB,KAAK;IAAKP,KAAK,OAAA4B,yBAAA,CAAAjB,OAAA,EAAAgB,IAAA,EAAAjC,SAAA;EACd,oBACIV,MAAA,CAAA2B,OAAA,CAAAC,aAAA,CAACnB,mBAAA,CAAAoC,kBAAkB;IAACtB,KAAK,EAAEA;EAAM,gBAC7BvB,MAAA,CAAA2B,OAAA,CAAAC,aAAA,CAACb,WAAW,EAAKC,KAAQ,CACT,CAAC;AAE7B,CACJ,CAAC;;AAED;AACA;AACA;AACO,IAAM8B,kBAAkB,GAAAL,OAAA,CAAAK,kBAAA,GAAGN,YAAY;;AAE9C;AACA;AACA","ignoreList":[]}
@@ -11,6 +11,8 @@ var _appAdmin = require("@webiny/app-admin");
11
11
  var _contentEntries = require("../../../config/contentEntries");
12
12
  var _ContentFormOptionsMenu = require("./ContentFormOptionsMenu");
13
13
  var _RevisionSelector = require("./RevisionSelector");
14
+ var _reactHelmet = require("react-helmet");
15
+ var _hooks = require("../../../views/contentEntries/hooks");
14
16
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
15
17
  var ToolbarGrid = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
16
18
  target: "euhddwt1"
@@ -23,7 +25,7 @@ var ToolbarGrid = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV ==
23
25
  } : {
24
26
  name: "10cyi6j",
25
27
  styles: "padding:15px;border-bottom:1px solid var(--mdc-theme-on-background);display:flex;justify-content:space-between;align-items:center",
26
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUzhCIiwiZmlsZSI6IkhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBCdXR0b25zLCBtYWtlRGVjb3JhdGFibGUgfSBmcm9tIFwiQHdlYmlueS9hcHAtYWRtaW5cIjtcblxuaW1wb3J0IHsgdXNlQ29udGVudEVudHJ5RWRpdG9yQ29uZmlnIH0gZnJvbSBcIn4vYWRtaW4vY29uZmlnL2NvbnRlbnRFbnRyaWVzXCI7XG5cbmltcG9ydCB7IENvbnRlbnRGb3JtT3B0aW9uc01lbnUgfSBmcm9tIFwiLi9Db250ZW50Rm9ybU9wdGlvbnNNZW51XCI7XG5pbXBvcnQgeyBSZXZpc2lvblNlbGVjdG9yIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL0hlYWRlci9SZXZpc2lvblNlbGVjdG9yXCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcblxuY29uc3QgVG9vbGJhckdyaWQgPSBzdHlsZWQuZGl2YFxuICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLW1kYy10aGVtZS1vbi1iYWNrZ3JvdW5kKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQWN0aW9ucyA9IHN0eWxlZC5kaXZgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuZXhwb3J0IGNvbnN0IEhlYWRlciA9IG1ha2VEZWNvcmF0YWJsZShcIkNvbnRlbnRFbnRyeUZvcm1IZWFkZXJcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHsgYnV0dG9uQWN0aW9ucyB9ID0gdXNlQ29udGVudEVudHJ5RWRpdG9yQ29uZmlnKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8VG9vbGJhckdyaWQgaWQ9XCJoZWFkZXJUb29sYmFyR3JpZFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8UmV2aXNpb25TZWxlY3RvciAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8QWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9ucyBhY3Rpb25zPXtidXR0b25BY3Rpb25zfSAvPlxuICAgICAgICAgICAgICAgIDxDb250ZW50Rm9ybU9wdGlvbnNNZW51IC8+XG4gICAgICAgICAgICA8L0FjdGlvbnM+XG4gICAgICAgIDwvVG9vbGJhckdyaWQ+XG4gICAgKTtcbn0pO1xuIl19 */",
28
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVzhCIiwiZmlsZSI6IkhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBCdXR0b25zLCBtYWtlRGVjb3JhdGFibGUgfSBmcm9tIFwiQHdlYmlueS9hcHAtYWRtaW5cIjtcblxuaW1wb3J0IHsgdXNlQ29udGVudEVudHJ5RWRpdG9yQ29uZmlnIH0gZnJvbSBcIn4vYWRtaW4vY29uZmlnL2NvbnRlbnRFbnRyaWVzXCI7XG5cbmltcG9ydCB7IENvbnRlbnRGb3JtT3B0aW9uc01lbnUgfSBmcm9tIFwiLi9Db250ZW50Rm9ybU9wdGlvbnNNZW51XCI7XG5pbXBvcnQgeyBSZXZpc2lvblNlbGVjdG9yIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL0hlYWRlci9SZXZpc2lvblNlbGVjdG9yXCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IEhlbG1ldCB9IGZyb20gXCJyZWFjdC1oZWxtZXRcIjtcbmltcG9ydCB7IHVzZUNvbnRlbnRFbnRyeSB9IGZyb20gXCJ+L2FkbWluL3ZpZXdzL2NvbnRlbnRFbnRyaWVzL2hvb2tzXCI7XG5cbmNvbnN0IFRvb2xiYXJHcmlkID0gc3R5bGVkLmRpdmBcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1tZGMtdGhlbWUtb24tYmFja2dyb3VuZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmV4cG9ydCBjb25zdCBIZWFkZXIgPSBtYWtlRGVjb3JhdGFibGUoXCJDb250ZW50RW50cnlGb3JtSGVhZGVyXCIsICgpID0+IHtcbiAgICBjb25zdCB7IGJ1dHRvbkFjdGlvbnMgfSA9IHVzZUNvbnRlbnRFbnRyeUVkaXRvckNvbmZpZygpO1xuICAgIGNvbnN0IHsgZW50cnkgfSA9IHVzZUNvbnRlbnRFbnRyeSgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFRvb2xiYXJHcmlkIGlkPVwiaGVhZGVyVG9vbGJhckdyaWRcIj5cbiAgICAgICAgICAgIHtlbnRyeS5tZXRhPy50aXRsZSA/IDxIZWxtZXQgdGl0bGU9e2VudHJ5Lm1ldGEudGl0bGV9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPFJldmlzaW9uU2VsZWN0b3IgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbnMgYWN0aW9ucz17YnV0dG9uQWN0aW9uc30gLz5cbiAgICAgICAgICAgICAgICA8Q29udGVudEZvcm1PcHRpb25zTWVudSAvPlxuICAgICAgICAgICAgPC9BY3Rpb25zPlxuICAgICAgICA8L1Rvb2xiYXJHcmlkPlxuICAgICk7XG59KTtcbiJdfQ== */",
27
29
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
28
30
  });
29
31
  var Actions = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
@@ -37,15 +39,19 @@ var Actions = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "p
37
39
  } : {
38
40
  name: "s5xdrg",
39
41
  styles: "display:flex;align-items:center",
40
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUIwQiIsImZpbGUiOiJIZWFkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQnV0dG9ucywgbWFrZURlY29yYXRhYmxlIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluXCI7XG5cbmltcG9ydCB7IHVzZUNvbnRlbnRFbnRyeUVkaXRvckNvbmZpZyB9IGZyb20gXCJ+L2FkbWluL2NvbmZpZy9jb250ZW50RW50cmllc1wiO1xuXG5pbXBvcnQgeyBDb250ZW50Rm9ybU9wdGlvbnNNZW51IH0gZnJvbSBcIi4vQ29udGVudEZvcm1PcHRpb25zTWVudVwiO1xuaW1wb3J0IHsgUmV2aXNpb25TZWxlY3RvciB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvQ29udGVudEVudHJ5Rm9ybS9IZWFkZXIvUmV2aXNpb25TZWxlY3RvclwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5cbmNvbnN0IFRvb2xiYXJHcmlkID0gc3R5bGVkLmRpdmBcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1tZGMtdGhlbWUtb24tYmFja2dyb3VuZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmV4cG9ydCBjb25zdCBIZWFkZXIgPSBtYWtlRGVjb3JhdGFibGUoXCJDb250ZW50RW50cnlGb3JtSGVhZGVyXCIsICgpID0+IHtcbiAgICBjb25zdCB7IGJ1dHRvbkFjdGlvbnMgfSA9IHVzZUNvbnRlbnRFbnRyeUVkaXRvckNvbmZpZygpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFRvb2xiYXJHcmlkIGlkPVwiaGVhZGVyVG9vbGJhckdyaWRcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPFJldmlzaW9uU2VsZWN0b3IgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbnMgYWN0aW9ucz17YnV0dG9uQWN0aW9uc30gLz5cbiAgICAgICAgICAgICAgICA8Q29udGVudEZvcm1PcHRpb25zTWVudSAvPlxuICAgICAgICAgICAgPC9BY3Rpb25zPlxuICAgICAgICA8L1Rvb2xiYXJHcmlkPlxuICAgICk7XG59KTtcbiJdfQ== */",
42
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUIwQiIsImZpbGUiOiJIZWFkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQnV0dG9ucywgbWFrZURlY29yYXRhYmxlIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluXCI7XG5cbmltcG9ydCB7IHVzZUNvbnRlbnRFbnRyeUVkaXRvckNvbmZpZyB9IGZyb20gXCJ+L2FkbWluL2NvbmZpZy9jb250ZW50RW50cmllc1wiO1xuXG5pbXBvcnQgeyBDb250ZW50Rm9ybU9wdGlvbnNNZW51IH0gZnJvbSBcIi4vQ29udGVudEZvcm1PcHRpb25zTWVudVwiO1xuaW1wb3J0IHsgUmV2aXNpb25TZWxlY3RvciB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvQ29udGVudEVudHJ5Rm9ybS9IZWFkZXIvUmV2aXNpb25TZWxlY3RvclwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBIZWxtZXQgfSBmcm9tIFwicmVhY3QtaGVsbWV0XCI7XG5pbXBvcnQgeyB1c2VDb250ZW50RW50cnkgfSBmcm9tIFwifi9hZG1pbi92aWV3cy9jb250ZW50RW50cmllcy9ob29rc1wiO1xuXG5jb25zdCBUb29sYmFyR3JpZCA9IHN0eWxlZC5kaXZgXG4gICAgcGFkZGluZzogMTVweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbWRjLXRoZW1lLW9uLWJhY2tncm91bmQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBBY3Rpb25zID0gc3R5bGVkLmRpdmBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5leHBvcnQgY29uc3QgSGVhZGVyID0gbWFrZURlY29yYXRhYmxlKFwiQ29udGVudEVudHJ5Rm9ybUhlYWRlclwiLCAoKSA9PiB7XG4gICAgY29uc3QgeyBidXR0b25BY3Rpb25zIH0gPSB1c2VDb250ZW50RW50cnlFZGl0b3JDb25maWcoKTtcbiAgICBjb25zdCB7IGVudHJ5IH0gPSB1c2VDb250ZW50RW50cnkoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxUb29sYmFyR3JpZCBpZD1cImhlYWRlclRvb2xiYXJHcmlkXCI+XG4gICAgICAgICAgICB7ZW50cnkubWV0YT8udGl0bGUgPyA8SGVsbWV0IHRpdGxlPXtlbnRyeS5tZXRhLnRpdGxlfSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxSZXZpc2lvblNlbGVjdG9yIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxBY3Rpb25zPlxuICAgICAgICAgICAgICAgIDxCdXR0b25zIGFjdGlvbnM9e2J1dHRvbkFjdGlvbnN9IC8+XG4gICAgICAgICAgICAgICAgPENvbnRlbnRGb3JtT3B0aW9uc01lbnUgLz5cbiAgICAgICAgICAgIDwvQWN0aW9ucz5cbiAgICAgICAgPC9Ub29sYmFyR3JpZD5cbiAgICApO1xufSk7XG4iXX0= */",
41
43
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
42
44
  });
43
45
  var Header = exports.Header = (0, _appAdmin.makeDecoratable)("ContentEntryFormHeader", function () {
44
46
  var _useContentEntryEdito = (0, _contentEntries.useContentEntryEditorConfig)(),
45
47
  buttonActions = _useContentEntryEdito.buttonActions;
48
+ var _useContentEntry = (0, _hooks.useContentEntry)(),
49
+ entry = _useContentEntry.entry;
46
50
  return /*#__PURE__*/_react.default.createElement(ToolbarGrid, {
47
51
  id: "headerToolbarGrid"
48
- }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_RevisionSelector.RevisionSelector, null)), /*#__PURE__*/_react.default.createElement(Actions, null, /*#__PURE__*/_react.default.createElement(_appAdmin.Buttons, {
52
+ }, entry.meta?.title ? /*#__PURE__*/_react.default.createElement(_reactHelmet.Helmet, {
53
+ title: entry.meta.title
54
+ }) : null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_RevisionSelector.RevisionSelector, null)), /*#__PURE__*/_react.default.createElement(Actions, null, /*#__PURE__*/_react.default.createElement(_appAdmin.Buttons, {
49
55
  actions: buttonActions
50
56
  }), /*#__PURE__*/_react.default.createElement(_ContentFormOptionsMenu.ContentFormOptionsMenu, null)));
51
57
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_appAdmin","_contentEntries","_ContentFormOptionsMenu","_RevisionSelector","_EMOTION_STRINGIFIED_CSS_ERROR__","ToolbarGrid","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","Actions","Header","exports","makeDecoratable","_useContentEntryEdito","useContentEntryEditorConfig","buttonActions","createElement","id","RevisionSelector","Buttons","actions","ContentFormOptionsMenu"],"sources":["Header.tsx"],"sourcesContent":["import React from \"react\";\nimport { Buttons, makeDecoratable } from \"@webiny/app-admin\";\n\nimport { useContentEntryEditorConfig } from \"~/admin/config/contentEntries\";\n\nimport { ContentFormOptionsMenu } from \"./ContentFormOptionsMenu\";\nimport { RevisionSelector } from \"~/admin/components/ContentEntryForm/Header/RevisionSelector\";\nimport styled from \"@emotion/styled\";\n\nconst ToolbarGrid = styled.div`\n padding: 15px;\n border-bottom: 1px solid var(--mdc-theme-on-background);\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Actions = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const Header = makeDecoratable(\"ContentEntryFormHeader\", () => {\n const { buttonActions } = useContentEntryEditorConfig();\n\n return (\n <ToolbarGrid id=\"headerToolbarGrid\">\n <div>\n <RevisionSelector />\n </div>\n <Actions>\n <Buttons actions={buttonActions} />\n <ContentFormOptionsMenu />\n </Actions>\n </ToolbarGrid>\n );\n});\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAEA,IAAAG,uBAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAA+F,SAAAK,iCAAA;AAG/F,IAAMC,WAAW,oBAAAC,KAAA,CAAAC,OAAA,SAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,EAMhB;AAED,IAAMa,OAAO,oBAAAX,KAAA,CAAAC,OAAA,SAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,EAGZ;AAEM,IAAMc,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG,IAAAE,yBAAe,EAAC,wBAAwB,EAAE,YAAM;EAClE,IAAAC,qBAAA,GAA0B,IAAAC,2CAA2B,EAAC,CAAC;IAA/CC,aAAa,GAAAF,qBAAA,CAAbE,aAAa;EAErB,oBACI1B,MAAA,CAAAU,OAAA,CAAAiB,aAAA,CAACnB,WAAW;IAACoB,EAAE,EAAC;EAAmB,gBAC/B5B,MAAA,CAAAU,OAAA,CAAAiB,aAAA,2BACI3B,MAAA,CAAAU,OAAA,CAAAiB,aAAA,CAACrB,iBAAA,CAAAuB,gBAAgB,MAAE,CAClB,CAAC,eACN7B,MAAA,CAAAU,OAAA,CAAAiB,aAAA,CAACP,OAAO,qBACJpB,MAAA,CAAAU,OAAA,CAAAiB,aAAA,CAACxB,SAAA,CAAA2B,OAAO;IAACC,OAAO,EAAEL;EAAc,CAAE,CAAC,eACnC1B,MAAA,CAAAU,OAAA,CAAAiB,aAAA,CAACtB,uBAAA,CAAA2B,sBAAsB,MAAE,CACpB,CACA,CAAC;AAEtB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_appAdmin","_contentEntries","_ContentFormOptionsMenu","_RevisionSelector","_reactHelmet","_hooks","_EMOTION_STRINGIFIED_CSS_ERROR__","ToolbarGrid","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","Actions","Header","exports","makeDecoratable","_useContentEntryEdito","useContentEntryEditorConfig","buttonActions","_useContentEntry","useContentEntry","entry","createElement","id","meta","title","Helmet","RevisionSelector","Buttons","actions","ContentFormOptionsMenu"],"sources":["Header.tsx"],"sourcesContent":["import React from \"react\";\nimport { Buttons, makeDecoratable } from \"@webiny/app-admin\";\n\nimport { useContentEntryEditorConfig } from \"~/admin/config/contentEntries\";\n\nimport { ContentFormOptionsMenu } from \"./ContentFormOptionsMenu\";\nimport { RevisionSelector } from \"~/admin/components/ContentEntryForm/Header/RevisionSelector\";\nimport styled from \"@emotion/styled\";\nimport { Helmet } from \"react-helmet\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks\";\n\nconst ToolbarGrid = styled.div`\n padding: 15px;\n border-bottom: 1px solid var(--mdc-theme-on-background);\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Actions = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const Header = makeDecoratable(\"ContentEntryFormHeader\", () => {\n const { buttonActions } = useContentEntryEditorConfig();\n const { entry } = useContentEntry();\n\n return (\n <ToolbarGrid id=\"headerToolbarGrid\">\n {entry.meta?.title ? <Helmet title={entry.meta.title} /> : null}\n <div>\n <RevisionSelector />\n </div>\n <Actions>\n <Buttons actions={buttonActions} />\n <ContentFormOptionsMenu />\n </Actions>\n </ToolbarGrid>\n );\n});\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAEA,IAAAG,uBAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAEA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAAqE,SAAAO,iCAAA;AAErE,IAAMC,WAAW,oBAAAC,KAAA,CAAAC,OAAA,SAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,EAMhB;AAED,IAAMa,OAAO,oBAAAX,KAAA,CAAAC,OAAA,SAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,EAGZ;AAEM,IAAMc,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG,IAAAE,yBAAe,EAAC,wBAAwB,EAAE,YAAM;EAClE,IAAAC,qBAAA,GAA0B,IAAAC,2CAA2B,EAAC,CAAC;IAA/CC,aAAa,GAAAF,qBAAA,CAAbE,aAAa;EACrB,IAAAC,gBAAA,GAAkB,IAAAC,sBAAe,EAAC,CAAC;IAA3BC,KAAK,GAAAF,gBAAA,CAALE,KAAK;EAEb,oBACI/B,MAAA,CAAAY,OAAA,CAAAoB,aAAA,CAACtB,WAAW;IAACuB,EAAE,EAAC;EAAmB,GAC9BF,KAAK,CAACG,IAAI,EAAEC,KAAK,gBAAGnC,MAAA,CAAAY,OAAA,CAAAoB,aAAA,CAACzB,YAAA,CAAA6B,MAAM;IAACD,KAAK,EAAEJ,KAAK,CAACG,IAAI,CAACC;EAAM,CAAE,CAAC,GAAG,IAAI,eAC/DnC,MAAA,CAAAY,OAAA,CAAAoB,aAAA,2BACIhC,MAAA,CAAAY,OAAA,CAAAoB,aAAA,CAAC1B,iBAAA,CAAA+B,gBAAgB,MAAE,CAClB,CAAC,eACNrC,MAAA,CAAAY,OAAA,CAAAoB,aAAA,CAACV,OAAO,qBACJtB,MAAA,CAAAY,OAAA,CAAAoB,aAAA,CAAC7B,SAAA,CAAAmC,OAAO;IAACC,OAAO,EAAEX;EAAc,CAAE,CAAC,eACnC5B,MAAA,CAAAY,OAAA,CAAAoB,aAAA,CAAC3B,uBAAA,CAAAmC,sBAAsB,MAAE,CACpB,CACA,CAAC;AAEtB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ declare global {
3
+ namespace JSX {
4
+ interface IntrinsicElements {
5
+ "hcms-field-validation-scope": {
6
+ "data-path": string;
7
+ "data-field-type": string;
8
+ "data-field-multiple-values": string;
9
+ "data-field-renderer": string;
10
+ style: React.CSSProperties;
11
+ children: React.ReactNode;
12
+ };
13
+ }
14
+ }
15
+ }
16
+ export declare const createValidationScope: (path: string) => ({ children }: {
17
+ children: React.ReactNode;
18
+ }) => React.JSX.Element;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createValidationScope = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _ModelFieldProvider = require("../ModelFieldProvider");
10
+ var validationScopeStyles = {
11
+ display: "inherit"
12
+ };
13
+ var createValidationScope = exports.createValidationScope = function createValidationScope(path) {
14
+ return function ValidationScope(_ref) {
15
+ var children = _ref.children;
16
+ var _useModelField = (0, _ModelFieldProvider.useModelField)(),
17
+ field = _useModelField.field;
18
+ if (field.multipleValues === undefined) {
19
+ field.multipleValues = false;
20
+ }
21
+ return /*#__PURE__*/_react.default.createElement("hcms-field-validation-scope", {
22
+ style: validationScopeStyles,
23
+ "data-path": path,
24
+ "data-field-type": field.type,
25
+ "data-field-multiple-values": String(field.multipleValues),
26
+ "data-field-renderer": String(field.renderer.name)
27
+ }, children);
28
+ };
29
+ };
30
+
31
+ //# sourceMappingURL=createValidationScope.js.map