@webiny/app-headless-cms 5.39.3 → 5.40.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/admin/components/ContentEntries/Table/Cells/Cells.styled.d.ts +2 -0
  2. package/admin/components/ContentEntryForm/ContentEntryForm.js +2 -2
  3. package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -1
  4. package/admin/components/ContentEntryForm/ContentEntryFormPreview.js +7 -4
  5. package/admin/components/ContentEntryForm/ContentEntryFormPreview.js.map +1 -1
  6. package/admin/components/ContentEntryForm/FieldElement.d.ts +26 -0
  7. package/admin/components/ContentEntryForm/{RenderFieldElement.js → FieldElement.js} +13 -3
  8. package/admin/components/ContentEntryForm/FieldElement.js.map +1 -0
  9. package/admin/components/ContentEntryForm/Fields.js +2 -2
  10. package/admin/components/ContentEntryForm/Fields.js.map +1 -1
  11. package/admin/components/ContentEntryForm/Header/RevisionSelector/RevisionSelector.styles.d.ts +1 -1
  12. package/admin/components/ContentEntryForm/Header/SaveAndPublishContent/SaveAndPublishContent.d.ts +6 -1
  13. package/admin/components/ContentEntryForm/ParentValue.d.ts +25 -0
  14. package/admin/components/ContentEntryForm/ParentValue.js +67 -0
  15. package/admin/components/ContentEntryForm/ParentValue.js.map +1 -0
  16. package/admin/components/ContentEntryForm/useBind.d.ts +1 -1
  17. package/admin/components/ContentEntryForm/useBind.js +6 -8
  18. package/admin/components/ContentEntryForm/useBind.js.map +1 -1
  19. package/admin/components/ContentModelEditor/Editor.js +3 -2
  20. package/admin/components/ContentModelEditor/Editor.js.map +1 -1
  21. package/admin/config/contentEntries/editor/ContentEntryEditorConfig.d.ts +6 -3
  22. package/admin/config/contentEntries/editor/ContentEntryEditorConfig.js +3 -1
  23. package/admin/config/contentEntries/editor/ContentEntryEditorConfig.js.map +1 -1
  24. package/admin/config/contentEntries/editor/FieldElement.d.ts +6 -0
  25. package/admin/config/contentEntries/editor/FieldElement.js +23 -0
  26. package/admin/config/contentEntries/editor/FieldElement.js.map +1 -0
  27. package/admin/config/contentEntries/list/Browser/Filter.d.ts +5 -3
  28. package/admin/config/contentEntries/list/Browser/index.d.ts +5 -3
  29. package/admin/config/contentEntries/list/ContentEntryListConfig.d.ts +6 -6
  30. package/admin/hooks/index.d.ts +1 -0
  31. package/admin/hooks/index.js +15 -0
  32. package/admin/hooks/index.js.map +1 -1
  33. package/admin/plugins/fieldRenderers/DynamicSection.js +25 -17
  34. package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -1
  35. package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.js +1 -1
  36. package/admin/plugins/fieldRenderers/dynamicZone/AddTemplate.js.map +1 -1
  37. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.d.ts +18 -3
  38. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js +18 -7
  39. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -1
  40. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js +10 -3
  41. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js.map +1 -1
  42. package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.d.ts +70 -4
  43. package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.js +45 -18
  44. package/admin/plugins/fieldRenderers/dynamicZone/TemplateGallery.js.map +1 -1
  45. package/admin/plugins/fieldRenderers/dynamicZone/TemplateItem.d.ts +12 -0
  46. package/admin/plugins/fieldRenderers/dynamicZone/{TemplateCard.js → TemplateItem.js} +12 -11
  47. package/admin/plugins/fieldRenderers/dynamicZone/TemplateItem.js.map +1 -0
  48. package/admin/plugins/fieldRenderers/dynamicZone/TemplateProvider.d.ts +11 -0
  49. package/admin/plugins/fieldRenderers/dynamicZone/TemplateProvider.js +28 -0
  50. package/admin/plugins/fieldRenderers/dynamicZone/TemplateProvider.js.map +1 -0
  51. package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.d.ts +6 -1
  52. package/admin/plugins/fieldRenderers/dynamicZone/index.d.ts +2 -0
  53. package/admin/plugins/fieldRenderers/dynamicZone/index.js +27 -0
  54. package/admin/plugins/fieldRenderers/dynamicZone/index.js.map +1 -1
  55. package/admin/plugins/fieldRenderers/object/multipleObjects.js +3 -4
  56. package/admin/plugins/fieldRenderers/object/multipleObjects.js.map +1 -1
  57. package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js +6 -3
  58. package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js.map +1 -1
  59. package/admin/plugins/fieldRenderers/object/singleObjectAccordion.js +16 -10
  60. package/admin/plugins/fieldRenderers/object/singleObjectAccordion.js.map +1 -1
  61. package/admin/plugins/fieldRenderers/object/singleObjectInline.js +19 -13
  62. package/admin/plugins/fieldRenderers/object/singleObjectInline.js.map +1 -1
  63. package/admin/plugins/fields/dynamicZone/TemplateDialog.js +8 -0
  64. package/admin/plugins/fields/dynamicZone/TemplateDialog.js.map +1 -1
  65. package/admin/plugins/index.d.ts +2 -2
  66. package/admin/views/contentEntries/ContentEntry/PublishEntryRevisionListItem.d.ts +6 -1
  67. package/admin/views/contentModels/OptionsMenu.d.ts +6 -1
  68. package/allPlugins.d.ts +3 -3
  69. package/components.d.ts +79 -4
  70. package/components.js +5 -1
  71. package/components.js.map +1 -1
  72. package/index.d.ts +198 -8
  73. package/index.js +16 -21
  74. package/index.js.map +1 -1
  75. package/package.json +26 -26
  76. package/admin/components/ContentEntryForm/RenderFieldElement.d.ts +0 -7
  77. package/admin/components/ContentEntryForm/RenderFieldElement.js.map +0 -1
  78. package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.d.ts +0 -8
  79. package/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.js.map +0 -1
@@ -4,6 +4,8 @@ export declare const RowTitle: import("@emotion/styled").StyledComponent<{
4
4
  as?: import("react").ElementType<any> | undefined;
5
5
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
6
6
  export declare const LinkTitle: import("@emotion/styled").StyledComponent<import("react-router-dom").LinkProps & {
7
+ children?: import("react").ReactNode;
8
+ } & {
7
9
  theme?: import("@emotion/react").Theme | undefined;
8
10
  }, {}, {}>;
9
11
  export declare const RowIcon: import("@emotion/styled").StyledComponent<{
@@ -10,7 +10,7 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
12
  var _react = _interopRequireWildcard(require("react"));
13
- var _RenderFieldElement = require("./RenderFieldElement");
13
+ var _FieldElement = require("./FieldElement");
14
14
  var _styled = _interopRequireDefault(require("@emotion/styled"));
15
15
  var _form = require("@webiny/form");
16
16
  var _plugins = require("@webiny/plugins");
@@ -85,7 +85,7 @@ var ContentEntryForm = function ContentEntryForm(_ref) {
85
85
  });
86
86
  var renderCustomLayout = (0, _react.useCallback)(function (formRenderProps) {
87
87
  var fields = model.fields.reduce(function (acc, field) {
88
- acc[field.fieldId] = /*#__PURE__*/_react.default.createElement(_RenderFieldElement.RenderFieldElement, {
88
+ acc[field.fieldId] = /*#__PURE__*/_react.default.createElement(_FieldElement.FieldElement, {
89
89
  field: field
90
90
  /**
91
91
  * TODO @ts-refactor
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_RenderFieldElement","_styled","_interopRequireDefault","_form","_plugins","_Progress","_useContentEntryForm2","_Fields","_reactRouter","_appAdmin","_ModelProvider","_excluded","FormWrapper","styled","target","label","height","overflow","omitTypename","key","value","undefined","stringify","JSON","isDifferent","compare","ContentEntryForm","_ref","onForm","props","_objectWithoutProperties2","default","formElementRef","useRef","_useModel","useModel","model","_useContentEntryForm","useContentEntryForm","loading","initialData","data","onChange","onSubmit","invalidFields","_React$useState","React","useState","_React$useState2","_slicedToArray2","isDirty","setIsDirty","useEffect","_useSnackbar","useSnackbar","showSnackbar","ref","current","scrollTo","id","formRenderer","plugins","byType","find","pl","modelId","renderCustomLayout","useCallback","formRenderProps","fields","reduce","acc","field","fieldId","createElement","RenderFieldElement","Bind","contentModel","Fragment","concat","render","_objectSpread2","Form","form","different","onInvalid","formProps","ModelProvider","Prompt","when","message","CircularProgress","Fields","Object","assign","layout","exports"],"sources":["ContentEntryForm.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from \"react\";\nimport { RenderFieldElement } from \"./RenderFieldElement\";\nimport styled from \"@emotion/styled\";\nimport { Form } from \"@webiny/form\";\nimport { FormAPI, FormRenderPropParams } from \"@webiny/form/types\";\nimport { plugins } from \"@webiny/plugins\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { CmsContentEntry, CmsContentFormRendererPlugin } from \"~/types\";\nimport { useContentEntryForm, UseContentEntryFormParams } from \"./useContentEntryForm\";\nimport { Fields } from \"./Fields\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { ModelProvider, useModel } from \"~/admin/components/ModelProvider\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\ninterface ContentEntryFormProps extends UseContentEntryFormParams {\n onForm?: (form: FormAPI) => void;\n}\n\nfunction omitTypename(key: string, value: string): string | undefined {\n return key === \"__typename\" ? undefined : value;\n}\n\nconst stringify = (value: any): string => {\n return JSON.stringify(value || {}, omitTypename);\n};\n\nconst isDifferent = (value: any, compare: any): boolean => {\n if (!value && !compare) {\n return false;\n }\n return stringify(value) !== stringify(compare);\n};\n\nexport const ContentEntryForm = ({ onForm, ...props }: ContentEntryFormProps) => {\n const formElementRef = useRef<HTMLDivElement>(null);\n const { model } = useModel();\n const {\n loading,\n data: initialData,\n onChange,\n onSubmit,\n invalidFields\n } = useContentEntryForm(props);\n\n const [isDirty, setIsDirty] = React.useState<boolean>(false);\n /**\n * Reset isDirty when the loaded data changes.\n */\n useEffect(() => {\n if (!isDirty) {\n return;\n }\n setIsDirty(false);\n }, [initialData]);\n\n const { showSnackbar } = useSnackbar();\n\n const ref = useRef<FormAPI | null>(null);\n\n useEffect(() => {\n if (typeof onForm !== \"function\" || !ref.current) {\n return;\n }\n onForm(ref.current);\n }, []);\n\n useEffect(() => {\n if (!formElementRef.current) {\n return;\n }\n\n formElementRef.current.scrollTo(0, 0);\n }, [initialData.id, formElementRef.current]);\n\n const formRenderer = plugins\n .byType<CmsContentFormRendererPlugin>(\"cms-content-form-renderer\")\n .find(pl => pl.modelId === model.modelId);\n\n const renderCustomLayout = useCallback(\n (formRenderProps: FormRenderPropParams) => {\n const fields = model.fields.reduce((acc, field) => {\n acc[field.fieldId] = (\n <RenderFieldElement\n field={field}\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind={formRenderProps.Bind}\n contentModel={model}\n />\n );\n\n return acc;\n }, {} as Record<string, React.ReactElement>);\n if (!formRenderer) {\n return <>{`Missing form renderer for modelId \"${model.modelId}\".`}</>;\n }\n return formRenderer.render({\n ...formRenderProps,\n contentModel: model,\n fields,\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind: formRenderProps.Bind\n });\n },\n [formRenderer]\n );\n\n return (\n <Form<CmsContentEntry>\n onChange={(data, form) => {\n const different = isDifferent(data, initialData);\n if (isDirty !== different) {\n setIsDirty(different);\n }\n return onChange(data, form);\n }}\n onSubmit={(data, form) => {\n setIsDirty(false);\n return onSubmit(data, form);\n }}\n data={initialData}\n ref={ref}\n invalidFields={invalidFields}\n onInvalid={() => {\n setIsDirty(true);\n showSnackbar(\"Some fields did not pass the validation. Please check the form.\");\n }}\n >\n {formProps => {\n return (\n <ModelProvider model={model}>\n <Prompt\n when={isDirty}\n message={\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\"\n }\n />\n <FormWrapper data-testid={\"cms-content-form\"} ref={formElementRef}>\n {loading && <CircularProgress />}\n {formRenderer ? (\n renderCustomLayout(formProps)\n ) : (\n <Fields\n contentModel={model}\n fields={model.fields || []}\n layout={model.layout || []}\n {...formProps}\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind={formProps.Bind}\n />\n )}\n </FormWrapper>\n </ModelProvider>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_FieldElement","_styled","_interopRequireDefault","_form","_plugins","_Progress","_useContentEntryForm2","_Fields","_reactRouter","_appAdmin","_ModelProvider","_excluded","FormWrapper","styled","target","label","height","overflow","omitTypename","key","value","undefined","stringify","JSON","isDifferent","compare","ContentEntryForm","_ref","onForm","props","_objectWithoutProperties2","default","formElementRef","useRef","_useModel","useModel","model","_useContentEntryForm","useContentEntryForm","loading","initialData","data","onChange","onSubmit","invalidFields","_React$useState","React","useState","_React$useState2","_slicedToArray2","isDirty","setIsDirty","useEffect","_useSnackbar","useSnackbar","showSnackbar","ref","current","scrollTo","id","formRenderer","plugins","byType","find","pl","modelId","renderCustomLayout","useCallback","formRenderProps","fields","reduce","acc","field","fieldId","createElement","FieldElement","Bind","contentModel","Fragment","concat","render","_objectSpread2","Form","form","different","onInvalid","formProps","ModelProvider","Prompt","when","message","CircularProgress","Fields","Object","assign","layout","exports"],"sources":["ContentEntryForm.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from \"react\";\nimport { FieldElement } from \"./FieldElement\";\nimport styled from \"@emotion/styled\";\nimport { Form } from \"@webiny/form\";\nimport { FormAPI, FormRenderPropParams } from \"@webiny/form/types\";\nimport { plugins } from \"@webiny/plugins\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { CmsContentEntry, CmsContentFormRendererPlugin } from \"~/types\";\nimport { useContentEntryForm, UseContentEntryFormParams } from \"./useContentEntryForm\";\nimport { Fields } from \"./Fields\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { ModelProvider, useModel } from \"~/admin/components/ModelProvider\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\ninterface ContentEntryFormProps extends UseContentEntryFormParams {\n onForm?: (form: FormAPI) => void;\n}\n\nfunction omitTypename(key: string, value: string): string | undefined {\n return key === \"__typename\" ? undefined : value;\n}\n\nconst stringify = (value: any): string => {\n return JSON.stringify(value || {}, omitTypename);\n};\n\nconst isDifferent = (value: any, compare: any): boolean => {\n if (!value && !compare) {\n return false;\n }\n return stringify(value) !== stringify(compare);\n};\n\nexport const ContentEntryForm = ({ onForm, ...props }: ContentEntryFormProps) => {\n const formElementRef = useRef<HTMLDivElement>(null);\n const { model } = useModel();\n const {\n loading,\n data: initialData,\n onChange,\n onSubmit,\n invalidFields\n } = useContentEntryForm(props);\n\n const [isDirty, setIsDirty] = React.useState<boolean>(false);\n /**\n * Reset isDirty when the loaded data changes.\n */\n useEffect(() => {\n if (!isDirty) {\n return;\n }\n setIsDirty(false);\n }, [initialData]);\n\n const { showSnackbar } = useSnackbar();\n\n const ref = useRef<FormAPI | null>(null);\n\n useEffect(() => {\n if (typeof onForm !== \"function\" || !ref.current) {\n return;\n }\n onForm(ref.current);\n }, []);\n\n useEffect(() => {\n if (!formElementRef.current) {\n return;\n }\n\n formElementRef.current.scrollTo(0, 0);\n }, [initialData.id, formElementRef.current]);\n\n const formRenderer = plugins\n .byType<CmsContentFormRendererPlugin>(\"cms-content-form-renderer\")\n .find(pl => pl.modelId === model.modelId);\n\n const renderCustomLayout = useCallback(\n (formRenderProps: FormRenderPropParams) => {\n const fields = model.fields.reduce((acc, field) => {\n acc[field.fieldId] = (\n <FieldElement\n field={field}\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind={formRenderProps.Bind}\n contentModel={model}\n />\n );\n\n return acc;\n }, {} as Record<string, React.ReactElement>);\n if (!formRenderer) {\n return <>{`Missing form renderer for modelId \"${model.modelId}\".`}</>;\n }\n return formRenderer.render({\n ...formRenderProps,\n contentModel: model,\n fields,\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind: formRenderProps.Bind\n });\n },\n [formRenderer]\n );\n\n return (\n <Form<CmsContentEntry>\n onChange={(data, form) => {\n const different = isDifferent(data, initialData);\n if (isDirty !== different) {\n setIsDirty(different);\n }\n return onChange(data, form);\n }}\n onSubmit={(data, form) => {\n setIsDirty(false);\n return onSubmit(data, form);\n }}\n data={initialData}\n ref={ref}\n invalidFields={invalidFields}\n onInvalid={() => {\n setIsDirty(true);\n showSnackbar(\"Some fields did not pass the validation. Please check the form.\");\n }}\n >\n {formProps => {\n return (\n <ModelProvider model={model}>\n <Prompt\n when={isDirty}\n message={\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\"\n }\n />\n <FormWrapper data-testid={\"cms-content-form\"} ref={formElementRef}>\n {loading && <CircularProgress />}\n {formRenderer ? (\n renderCustomLayout(formProps)\n ) : (\n <Fields\n contentModel={model}\n fields={model.fields || []}\n layout={model.layout || []}\n {...formProps}\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind={formProps.Bind}\n />\n )}\n </FormWrapper>\n </ModelProvider>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
@@ -11,8 +11,9 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _styled = _interopRequireDefault(require("@emotion/styled"));
12
12
  var _form = require("@webiny/form");
13
13
  var _plugins = require("@webiny/plugins");
14
- var _RenderFieldElement = require("./RenderFieldElement");
14
+ var _FieldElement = require("./FieldElement");
15
15
  var _Fields = require("./Fields");
16
+ var _ModelProvider = require("../ModelProvider");
16
17
  var FormWrapper = /*#__PURE__*/(0, _styled.default)("div", {
17
18
  target: "eh1hbib0",
18
19
  label: "FormWrapper"
@@ -27,7 +28,7 @@ var ContentEntryFormPreview = function ContentEntryFormPreview(props) {
27
28
  });
28
29
  var renderCustomLayout = (0, _react.useCallback)(function (formRenderProps) {
29
30
  var fields = contentModel.fields.reduce(function (acc, field) {
30
- acc[field.fieldId] = /*#__PURE__*/_react.default.createElement(_RenderFieldElement.RenderFieldElement, {
31
+ acc[field.fieldId] = /*#__PURE__*/_react.default.createElement(_FieldElement.FieldElement, {
31
32
  field: field
32
33
  /**
33
34
  * TODO @ts-refactor
@@ -55,7 +56,9 @@ var ContentEntryFormPreview = function ContentEntryFormPreview(props) {
55
56
  }));
56
57
  }, [formRenderer, contentModel.fields]);
57
58
  return /*#__PURE__*/_react.default.createElement(_form.Form, null, function (formProps) {
58
- return /*#__PURE__*/_react.default.createElement(FormWrapper, {
59
+ return /*#__PURE__*/_react.default.createElement(_ModelProvider.ModelProvider, {
60
+ model: contentModel
61
+ }, /*#__PURE__*/_react.default.createElement(FormWrapper, {
59
62
  "data-testid": "cms-content-form"
60
63
  }, formRenderer ? renderCustomLayout(formProps) : /*#__PURE__*/_react.default.createElement(_Fields.Fields, Object.assign({
61
64
  contentModel: contentModel,
@@ -68,7 +71,7 @@ var ContentEntryFormPreview = function ContentEntryFormPreview(props) {
68
71
  */
69
72
  // @ts-expect-error
70
73
  Bind: formProps.Bind
71
- })));
74
+ }))));
72
75
  });
73
76
  };
74
77
  exports.ContentEntryFormPreview = ContentEntryFormPreview;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_styled","_interopRequireDefault","_form","_plugins","_RenderFieldElement","_Fields","FormWrapper","styled","target","label","height","overflow","ContentEntryFormPreview","props","contentModel","formRenderer","plugins","byType","find","pl","modelId","renderCustomLayout","useCallback","formRenderProps","fields","reduce","acc","field","fieldId","default","createElement","RenderFieldElement","Bind","Fragment","concat","render","_objectSpread2","Form","formProps","Fields","Object","assign","layout","exports"],"sources":["ContentEntryFormPreview.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Form, FormRenderPropParams } from \"@webiny/form\";\nimport { plugins } from \"@webiny/plugins\";\nimport { RenderFieldElement } from \"./RenderFieldElement\";\nimport { CmsContentFormRendererPlugin, CmsEditorContentModel } from \"~/types\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\ninterface ContentEntryFormPreviewProps {\n contentModel: CmsEditorContentModel;\n}\n\nexport const ContentEntryFormPreview = (props: ContentEntryFormPreviewProps) => {\n const { contentModel } = props;\n\n const formRenderer = plugins\n .byType<CmsContentFormRendererPlugin>(\"cms-content-form-renderer\")\n .find(pl => pl.modelId === contentModel.modelId);\n\n const renderCustomLayout = useCallback(\n (formRenderProps: FormRenderPropParams) => {\n const fields = contentModel.fields.reduce((acc, field) => {\n acc[field.fieldId] = (\n <RenderFieldElement\n field={field}\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind={formRenderProps.Bind}\n contentModel={contentModel}\n />\n );\n\n return acc;\n }, {} as Record<string, React.ReactElement>);\n if (!formRenderer) {\n return <>{`Missing form renderer for modelId \"${contentModel.modelId}\".`}</>;\n }\n return formRenderer.render({\n ...formRenderProps,\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind: formRenderProps.Bind,\n contentModel,\n fields\n });\n },\n [formRenderer, contentModel.fields]\n );\n\n return (\n <Form>\n {formProps => (\n <FormWrapper data-testid={\"cms-content-form\"}>\n {formRenderer ? (\n renderCustomLayout(formProps)\n ) : (\n <Fields\n contentModel={contentModel}\n fields={contentModel.fields}\n layout={contentModel.layout || []}\n {...formProps}\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind={formProps.Bind}\n />\n )}\n </FormWrapper>\n )}\n </Form>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAL,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AAEA,IAAMO,WAAW,oBAAGC,eAAM,EAAC,KAAK;EAAAC,MAAA;EAAAC,KAAA;AAAA,GAAE;EAC9BC,MAAM,EAAE,qBAAqB;EAC7BC,QAAQ,EAAE;AACd,CAAC,CAAC;AAMK,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIC,KAAmC,EAAK;EAC5E,IAAQC,YAAY,GAAKD,KAAK,CAAtBC,YAAY;EAEpB,IAAMC,YAAY,GAAGC,gBAAO,CACvBC,MAAM,CAA+B,2BAA2B,CAAC,CACjEC,IAAI,CAAC,UAAAC,EAAE;IAAA,OAAIA,EAAE,CAACC,OAAO,KAAKN,YAAY,CAACM,OAAO;EAAA,EAAC;EAEpD,IAAMC,kBAAkB,GAAG,IAAAC,kBAAW,EAClC,UAACC,eAAqC,EAAK;IACvC,IAAMC,MAAM,GAAGV,YAAY,CAACU,MAAM,CAACC,MAAM,CAAC,UAACC,GAAG,EAAEC,KAAK,EAAK;MACtDD,GAAG,CAACC,KAAK,CAACC,OAAO,CAAC,gBACd/B,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAC1B,mBAAA,CAAA2B,kBAAkB;QACfJ,KAAK,EAAEA;QACP;AACxB;AACA;AACA;QACwB;QAAA;QACAK,IAAI,EAAET,eAAe,CAACS,IAAK;QAC3BlB,YAAY,EAAEA;MAAa,CAC9B,CACJ;MAED,OAAOY,GAAG;IACd,CAAC,EAAE,CAAC,CAAuC,CAAC;IAC5C,IAAI,CAACX,YAAY,EAAE;MACf,oBAAOlB,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAAjC,MAAA,CAAAgC,OAAA,CAAAI,QAAA,+CAAAC,MAAA,CAAyCpB,YAAY,CAACM,OAAO,QAAO,CAAC;IAChF;IACA,OAAOL,YAAY,CAACoB,MAAM,KAAAC,cAAA,CAAAP,OAAA,MAAAO,cAAA,CAAAP,OAAA,MACnBN,eAAe;MAClB;AAChB;AACA;AACA;MACgB;MACAS,IAAI,EAAET,eAAe,CAACS,IAAI;MAC1BlB,YAAY,EAAZA,YAAY;MACZU,MAAM,EAANA;IAAM,EACT,CAAC;EACN,CAAC,EACD,CAACT,YAAY,EAAED,YAAY,CAACU,MAAM,CACtC,CAAC;EAED,oBACI3B,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAC5B,KAAA,CAAAmC,IAAI,QACA,UAAAC,SAAS;IAAA,oBACNzC,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAACxB,WAAW;MAAC,eAAa;IAAmB,GACxCS,YAAY,GACTM,kBAAkB,CAACiB,SAAS,CAAC,gBAE7BzC,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAACzB,OAAA,CAAAkC,MAAM,EAAAC,MAAA,CAAAC,MAAA;MACH3B,YAAY,EAAEA,YAAa;MAC3BU,MAAM,EAAEV,YAAY,CAACU,MAAO;MAC5BkB,MAAM,EAAE5B,YAAY,CAAC4B,MAAM,IAAI;IAAG,GAC9BJ,SAAS;MACb;AAC5B;AACA;AACA;MAC4B;MACAN,IAAI,EAAEM,SAAS,CAACN;IAAK,EACxB,CAEI,CAAC;EAAA,CAEhB,CAAC;AAEf,CAAC;AAACW,OAAA,CAAA/B,uBAAA,GAAAA,uBAAA"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_styled","_interopRequireDefault","_form","_plugins","_FieldElement","_Fields","_ModelProvider","FormWrapper","styled","target","label","height","overflow","ContentEntryFormPreview","props","contentModel","formRenderer","plugins","byType","find","pl","modelId","renderCustomLayout","useCallback","formRenderProps","fields","reduce","acc","field","fieldId","default","createElement","FieldElement","Bind","Fragment","concat","render","_objectSpread2","Form","formProps","ModelProvider","model","Fields","Object","assign","layout","exports"],"sources":["ContentEntryFormPreview.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Form, FormRenderPropParams } from \"@webiny/form\";\nimport { plugins } from \"@webiny/plugins\";\nimport { FieldElement } from \"./FieldElement\";\nimport { CmsContentFormRendererPlugin, CmsEditorContentModel } from \"~/types\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { ModelProvider } from \"~/admin/components/ModelProvider\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\ninterface ContentEntryFormPreviewProps {\n contentModel: CmsEditorContentModel;\n}\n\nexport const ContentEntryFormPreview = (props: ContentEntryFormPreviewProps) => {\n const { contentModel } = props;\n\n const formRenderer = plugins\n .byType<CmsContentFormRendererPlugin>(\"cms-content-form-renderer\")\n .find(pl => pl.modelId === contentModel.modelId);\n\n const renderCustomLayout = useCallback(\n (formRenderProps: FormRenderPropParams) => {\n const fields = contentModel.fields.reduce((acc, field) => {\n acc[field.fieldId] = (\n <FieldElement\n field={field}\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind={formRenderProps.Bind}\n contentModel={contentModel}\n />\n );\n\n return acc;\n }, {} as Record<string, React.ReactElement>);\n if (!formRenderer) {\n return <>{`Missing form renderer for modelId \"${contentModel.modelId}\".`}</>;\n }\n return formRenderer.render({\n ...formRenderProps,\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind: formRenderProps.Bind,\n contentModel,\n fields\n });\n },\n [formRenderer, contentModel.fields]\n );\n\n return (\n <Form>\n {formProps => (\n <ModelProvider model={contentModel}>\n <FormWrapper data-testid={\"cms-content-form\"}>\n {formRenderer ? (\n renderCustomLayout(formProps)\n ) : (\n <Fields\n contentModel={contentModel}\n fields={contentModel.fields}\n layout={contentModel.layout || []}\n {...formProps}\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n // @ts-expect-error\n Bind={formProps.Bind}\n />\n )}\n </FormWrapper>\n </ModelProvider>\n )}\n </Form>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /// <reference types="react" />
2
+ import { CmsModelField, CmsEditorContentModel, BindComponent } from "../../../types";
3
+ export interface FieldElementProps {
4
+ field: CmsModelField;
5
+ Bind: BindComponent;
6
+ contentModel: CmsEditorContentModel;
7
+ }
8
+ export declare const FieldElement: import("@webiny/app-admin").GenericComponent<FieldElementProps> & {
9
+ original: import("@webiny/app-admin").GenericComponent<FieldElementProps>;
10
+ originalName: string;
11
+ } & {
12
+ createDecorator: (decorator: import("@webiny/app-admin").Decorator<(props: FieldElementProps) => JSX.Element | null>) => (props: unknown) => JSX.Element;
13
+ };
14
+ /**
15
+ * @deprecated Use `FieldElement` instead.
16
+ */
17
+ export declare const RenderFieldElement: import("@webiny/app-admin").GenericComponent<FieldElementProps> & {
18
+ original: import("@webiny/app-admin").GenericComponent<FieldElementProps>;
19
+ originalName: string;
20
+ } & {
21
+ createDecorator: (decorator: import("@webiny/app-admin").Decorator<(props: FieldElementProps) => JSX.Element | null>) => (props: unknown) => JSX.Element;
22
+ };
23
+ /**
24
+ * @deprecated Use `FieldElementProps` instead.
25
+ */
26
+ export declare type RenderFieldElementProps = FieldElementProps;
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.RenderFieldElement = void 0;
7
+ exports.RenderFieldElement = exports.FieldElement = void 0;
8
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _get = _interopRequireDefault(require("lodash/get"));
@@ -16,7 +16,7 @@ var _useRenderPlugins = require("./useRenderPlugins");
16
16
  var _ModelFieldProvider = require("../ModelFieldProvider");
17
17
  var _templateObject;
18
18
  var t = _i18n.i18n.ns("app-headless-cms/admin/components/content-form");
19
- var RenderFieldElement = (0, _appAdmin.makeDecoratable)("RenderFieldElement", function (props) {
19
+ var FieldElement = (0, _appAdmin.makeDecoratable)("FieldElement", function (props) {
20
20
  var renderPlugins = (0, _useRenderPlugins.useRenderPlugins)();
21
21
  var field = props.field,
22
22
  Bind = props.Bind,
@@ -52,6 +52,16 @@ var RenderFieldElement = (0, _appAdmin.makeDecoratable)("RenderFieldElement", fu
52
52
  contentModel: contentModel
53
53
  }));
54
54
  });
55
+
56
+ /**
57
+ * @deprecated Use `FieldElement` instead.
58
+ */
59
+ exports.FieldElement = FieldElement;
60
+ var RenderFieldElement = FieldElement;
61
+
62
+ /**
63
+ * @deprecated Use `FieldElementProps` instead.
64
+ */
55
65
  exports.RenderFieldElement = RenderFieldElement;
56
66
 
57
- //# sourceMappingURL=RenderFieldElement.js.map
67
+ //# sourceMappingURL=FieldElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_get","_appAdmin","_i18n","_Label","_useBind","_useRenderPlugins","_ModelFieldProvider","_templateObject","t","i18n","ns","FieldElement","makeDecoratable","props","renderPlugins","useRenderPlugins","field","Bind","contentModel","getBind","useBind","renderer","default","createElement","ModelFieldProvider","Label","renderPlugin","find","plugin","rendererName","get","_taggedTemplateLiteral2","fieldName","fieldId","render","exports","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 } from \"../ModelFieldProvider\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/content-form\");\n\nexport interface FieldElementProps {\n field: CmsModelField;\n Bind: BindComponent;\n contentModel: CmsEditorContentModel;\n}\n\nexport const FieldElement = makeDecoratable(\"FieldElement\", (props: FieldElementProps) => {\n const renderPlugins = useRenderPlugins();\n const { field, Bind, contentModel } = props;\n const getBind = useBind({ Bind, field });\n\n if (typeof field.renderer === \"function\") {\n return (\n <ModelFieldProvider field={field}>\n {field.renderer({ field, getBind, Label, contentModel })}\n </ModelFieldProvider>\n );\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 (\n <ModelFieldProvider field={field}>\n {renderPlugin.renderer.render({ field, getBind, Label, contentModel })}\n </ModelFieldProvider>\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;AAA2D,IAAAQ,eAAA;AAE3D,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,gDAAgD,CAAC;AAQ5D,IAAMC,YAAY,GAAG,IAAAC,yBAAe,EAAC,cAAc,EAAE,UAACC,KAAwB,EAAK;EACtF,IAAMC,aAAa,GAAG,IAAAC,kCAAgB,EAAC,CAAC;EACxC,IAAQC,KAAK,GAAyBH,KAAK,CAAnCG,KAAK;IAAEC,IAAI,GAAmBJ,KAAK,CAA5BI,IAAI;IAAEC,YAAY,GAAKL,KAAK,CAAtBK,YAAY;EACjC,IAAMC,OAAO,GAAG,IAAAC,gBAAO,EAAC;IAAEH,IAAI,EAAJA,IAAI;IAAED,KAAK,EAALA;EAAM,CAAC,CAAC;EAExC,IAAI,OAAOA,KAAK,CAACK,QAAQ,KAAK,UAAU,EAAE;IACtC,oBACIxB,MAAA,CAAAyB,OAAA,CAAAC,aAAA,CAACjB,mBAAA,CAAAkB,kBAAkB;MAACR,KAAK,EAAEA;IAAM,GAC5BA,KAAK,CAACK,QAAQ,CAAC;MAAEL,KAAK,EAALA,KAAK;MAAEG,OAAO,EAAPA,OAAO;MAAEM,KAAK,EAALA,cAAK;MAAEP,YAAY,EAAZA;IAAa,CAAC,CACvC,CAAC;EAE7B;EAEA,IAAMQ,YAAY,GAAGZ,aAAa,CAACa,IAAI,CACnC,UAAAC,MAAM;IAAA,OAAIA,MAAM,CAACP,QAAQ,CAACQ,YAAY,KAAK,IAAAC,YAAG,EAACd,KAAK,EAAE,eAAe,CAAC;EAAA,CAC1E,CAAC;EAED,IAAI,CAACU,YAAY,EAAE;IACf,OAAOlB,CAAC,CAAAD,eAAA,KAAAA,eAAA,OAAAwB,uBAAA,CAAAT,OAAA,uEAA8D;MAClEU,SAAS,eAAEnC,MAAA,CAAAyB,OAAA,CAAAC,aAAA,iBAASP,KAAK,CAACiB,OAAgB;IAC9C,CAAC,CAAC;EACN;EAEA,oBACIpC,MAAA,CAAAyB,OAAA,CAAAC,aAAA,CAACjB,mBAAA,CAAAkB,kBAAkB;IAACR,KAAK,EAAEA;EAAM,GAC5BU,YAAY,CAACL,QAAQ,CAACa,MAAM,CAAC;IAAElB,KAAK,EAALA,KAAK;IAAEG,OAAO,EAAPA,OAAO;IAAEM,KAAK,EAALA,cAAK;IAAEP,YAAY,EAAZA;EAAa,CAAC,CACrD,CAAC;AAE7B,CAAC,CAAC;;AAEF;AACA;AACA;AAFAiB,OAAA,CAAAxB,YAAA,GAAAA,YAAA;AAGO,IAAMyB,kBAAkB,GAAGzB,YAAY;;AAE9C;AACA;AACA;AAFAwB,OAAA,CAAAC,kBAAA,GAAAA,kBAAA"}
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.Fields = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _Grid = require("@webiny/ui/Grid");
10
- var _RenderFieldElement = require("./RenderFieldElement");
10
+ var _FieldElement = require("./FieldElement");
11
11
  var getFieldById = function getFieldById(fields, id) {
12
12
  return fields.find(function (field) {
13
13
  return field.id === id;
@@ -28,7 +28,7 @@ var Fields = function Fields(_ref) {
28
28
  return /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
29
29
  span: Math.floor(12 / row.length),
30
30
  key: fieldId
31
- }, /*#__PURE__*/_react.default.createElement(_RenderFieldElement.RenderFieldElement, {
31
+ }, /*#__PURE__*/_react.default.createElement(_FieldElement.FieldElement, {
32
32
  field: getFieldById(fields, fieldId),
33
33
  Bind: Bind,
34
34
  contentModel: contentModel
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_Grid","_RenderFieldElement","getFieldById","fields","id","find","field","Fields","_ref","Bind","layout","contentModel","gridClassName","default","createElement","Grid","className","map","row","rowIndex","Fragment","key","fieldId","Cell","span","Math","floor","length","RenderFieldElement","exports"],"sources":["Fields.tsx"],"sourcesContent":["import React from \"react\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { RenderFieldElement } from \"./RenderFieldElement\";\nimport {\n CmsEditorContentModel,\n CmsModelField,\n CmsEditorFieldsLayout,\n BindComponent\n} from \"~/types\";\n\ninterface FieldsProps {\n Bind: BindComponent;\n contentModel: CmsEditorContentModel;\n fields: CmsModelField[];\n layout: CmsEditorFieldsLayout;\n gridClassName?: string;\n}\n\nconst getFieldById = (fields: CmsModelField[], id: string): CmsModelField | null => {\n return fields.find(field => field.id === id) || null;\n};\n\nexport const Fields = ({ Bind, fields, layout, contentModel, gridClassName }: FieldsProps) => {\n return (\n <Grid className={gridClassName}>\n {layout.map((row, rowIndex) => (\n <React.Fragment key={rowIndex}>\n {row.map(fieldId => (\n <Cell span={Math.floor(12 / row.length)} key={fieldId}>\n <RenderFieldElement\n field={getFieldById(fields, fieldId) as CmsModelField}\n Bind={Bind}\n contentModel={contentModel}\n />\n </Cell>\n ))}\n </React.Fragment>\n ))}\n </Grid>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAgBA,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAIC,MAAuB,EAAEC,EAAU,EAA2B;EAChF,OAAOD,MAAM,CAACE,IAAI,CAAC,UAAAC,KAAK;IAAA,OAAIA,KAAK,CAACF,EAAE,KAAKA,EAAE;EAAA,EAAC,IAAI,IAAI;AACxD,CAAC;AAEM,IAAMG,MAAM,GAAG,SAATA,MAAMA,CAAAC,IAAA,EAA2E;EAAA,IAArEC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEN,MAAM,GAAAK,IAAA,CAANL,MAAM;IAAEO,MAAM,GAAAF,IAAA,CAANE,MAAM;IAAEC,YAAY,GAAAH,IAAA,CAAZG,YAAY;IAAEC,aAAa,GAAAJ,IAAA,CAAbI,aAAa;EACtE,oBACIf,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,KAAA,CAAAe,IAAI;IAACC,SAAS,EAAEJ;EAAc,GAC1BF,MAAM,CAACO,GAAG,CAAC,UAACC,GAAG,EAAEC,QAAQ;IAAA,oBACtBtB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACjB,MAAA,CAAAgB,OAAK,CAACO,QAAQ;MAACC,GAAG,EAAEF;IAAS,GACzBD,GAAG,CAACD,GAAG,CAAC,UAAAK,OAAO;MAAA,oBACZzB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,KAAA,CAAAuB,IAAI;QAACC,IAAI,EAAEC,IAAI,CAACC,KAAK,CAAC,EAAE,GAAGR,GAAG,CAACS,MAAM,CAAE;QAACN,GAAG,EAAEC;MAAQ,gBAClDzB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACb,mBAAA,CAAA2B,kBAAkB;QACftB,KAAK,EAAEJ,YAAY,CAACC,MAAM,EAAEmB,OAAO,CAAmB;QACtDb,IAAI,EAAEA,IAAK;QACXE,YAAY,EAAEA;MAAa,CAC9B,CACC,CAAC;IAAA,CACV,CACW,CAAC;EAAA,CACpB,CACC,CAAC;AAEf,CAAC;AAACkB,OAAA,CAAAtB,MAAA,GAAAA,MAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_Grid","_FieldElement","getFieldById","fields","id","find","field","Fields","_ref","Bind","layout","contentModel","gridClassName","default","createElement","Grid","className","map","row","rowIndex","Fragment","key","fieldId","Cell","span","Math","floor","length","FieldElement","exports"],"sources":["Fields.tsx"],"sourcesContent":["import React from \"react\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { FieldElement } from \"./FieldElement\";\nimport {\n CmsEditorContentModel,\n CmsModelField,\n CmsEditorFieldsLayout,\n BindComponent\n} from \"~/types\";\n\ninterface FieldsProps {\n Bind: BindComponent;\n contentModel: CmsEditorContentModel;\n fields: CmsModelField[];\n layout: CmsEditorFieldsLayout;\n gridClassName?: string;\n}\n\nconst getFieldById = (fields: CmsModelField[], id: string): CmsModelField | null => {\n return fields.find(field => field.id === id) || null;\n};\n\nexport const Fields = ({ Bind, fields, layout, contentModel, gridClassName }: FieldsProps) => {\n return (\n <Grid className={gridClassName}>\n {layout.map((row, rowIndex) => (\n <React.Fragment key={rowIndex}>\n {row.map(fieldId => (\n <Cell span={Math.floor(12 / row.length)} key={fieldId}>\n <FieldElement\n field={getFieldById(fields, fieldId) as CmsModelField}\n Bind={Bind}\n contentModel={contentModel}\n />\n </Cell>\n ))}\n </React.Fragment>\n ))}\n </Grid>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AAgBA,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAIC,MAAuB,EAAEC,EAAU,EAA2B;EAChF,OAAOD,MAAM,CAACE,IAAI,CAAC,UAAAC,KAAK;IAAA,OAAIA,KAAK,CAACF,EAAE,KAAKA,EAAE;EAAA,EAAC,IAAI,IAAI;AACxD,CAAC;AAEM,IAAMG,MAAM,GAAG,SAATA,MAAMA,CAAAC,IAAA,EAA2E;EAAA,IAArEC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEN,MAAM,GAAAK,IAAA,CAANL,MAAM;IAAEO,MAAM,GAAAF,IAAA,CAANE,MAAM;IAAEC,YAAY,GAAAH,IAAA,CAAZG,YAAY;IAAEC,aAAa,GAAAJ,IAAA,CAAbI,aAAa;EACtE,oBACIf,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,KAAA,CAAAe,IAAI;IAACC,SAAS,EAAEJ;EAAc,GAC1BF,MAAM,CAACO,GAAG,CAAC,UAACC,GAAG,EAAEC,QAAQ;IAAA,oBACtBtB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACjB,MAAA,CAAAgB,OAAK,CAACO,QAAQ;MAACC,GAAG,EAAEF;IAAS,GACzBD,GAAG,CAACD,GAAG,CAAC,UAAAK,OAAO;MAAA,oBACZzB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,KAAA,CAAAuB,IAAI;QAACC,IAAI,EAAEC,IAAI,CAACC,KAAK,CAAC,EAAE,GAAGR,GAAG,CAACS,MAAM,CAAE;QAACN,GAAG,EAAEC;MAAQ,gBAClDzB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACb,aAAA,CAAA2B,YAAY;QACTtB,KAAK,EAAEJ,YAAY,CAACC,MAAM,EAAEmB,OAAO,CAAmB;QACtDb,IAAI,EAAEA,IAAK;QACXE,YAAY,EAAEA;MAAa,CAC9B,CACC,CAAC;IAAA,CACV,CACW,CAAC;EAAA,CACpB,CACC,CAAC;AAEf,CAAC;AAACkB,OAAA,CAAAtB,MAAA,GAAAA,MAAA"}
@@ -21,7 +21,7 @@ export declare const Menu: import("@emotion/styled").StyledComponent<Pick<import
21
21
  onOpen?: (() => void) | undefined;
22
22
  onClose?: (() => void) | undefined;
23
23
  "data-testid"?: string | undefined;
24
- }, "anchor" | "disabled" | "data-testid" | "className" | keyof import("@rmwc/menu").MenuProps | "handle">> & Partial<Pick<Partial<import("@rmwc/menu").MenuProps & {
24
+ }, "anchor" | "className" | "disabled" | "data-testid" | "handle" | keyof import("@rmwc/menu").MenuProps>> & Partial<Pick<Partial<import("@rmwc/menu").MenuProps & {
25
25
  children: import("react").ReactNode;
26
26
  handle?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
27
27
  anchor?: "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "bottomEnd" | "bottomStart" | "topEnd" | "topStart" | undefined;
@@ -1,2 +1,7 @@
1
1
  /// <reference types="react" />
2
- export declare const SaveAndPublishButton: import("@webiny/react-composition").DecoratableComponent<() => JSX.Element | null>;
2
+ export declare const SaveAndPublishButton: import("@webiny/react-composition").GenericComponent<any> & {
3
+ original: import("@webiny/react-composition").GenericComponent<any>;
4
+ originalName: string;
5
+ } & {
6
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: any) => JSX.Element | null>) => (props: unknown) => JSX.Element;
7
+ };
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import { CmsModelField } from "@webiny/app-headless-cms-common/types";
3
+ declare global {
4
+ namespace JSX {
5
+ interface IntrinsicElements {
6
+ "hcms-parent-field-provider": React.HTMLProps<HTMLDivElement>;
7
+ }
8
+ }
9
+ }
10
+ interface ParentField {
11
+ value: any;
12
+ setValue: (fieldId: string, cb: (prevValue: any) => any) => void;
13
+ field: CmsModelField;
14
+ getParentField(level: number): ParentField | undefined;
15
+ path: string;
16
+ }
17
+ declare const ParentField: React.Context<ParentField | undefined>;
18
+ export declare function useParentField(level?: number): ParentField | undefined;
19
+ interface ParentFieldProviderProps {
20
+ value: any;
21
+ path: string;
22
+ children: React.ReactNode;
23
+ }
24
+ export declare const ParentFieldProvider: ({ path, value, children }: ParentFieldProviderProps) => JSX.Element;
25
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ParentFieldProvider = void 0;
9
+ exports.useParentField = useParentField;
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _get = _interopRequireDefault(require("lodash/get"));
12
+ var _ModelFieldProvider = require("../ModelFieldProvider");
13
+ var _form = require("@webiny/form");
14
+ var ParentField = /*#__PURE__*/(0, _react.createContext)(undefined);
15
+ function useParentField() {
16
+ var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
17
+ var parent = (0, _react.useContext)(ParentField);
18
+ if (!parent) {
19
+ return undefined;
20
+ }
21
+ return level === 0 ? parent : parent.getParentField(level);
22
+ }
23
+ var ParentFieldProvider = function ParentFieldProvider(_ref) {
24
+ var path = _ref.path,
25
+ value = _ref.value,
26
+ children = _ref.children;
27
+ var parent = (0, _react.useContext)(ParentField);
28
+ var form = (0, _form.useForm)();
29
+ var formRef = (0, _react.useRef)();
30
+ var field;
31
+ try {
32
+ var fieldContext = (0, _ModelFieldProvider.useModelField)();
33
+ field = fieldContext.field;
34
+ } catch (_unused) {
35
+ field = undefined;
36
+ }
37
+ var getParentField = function getParentField() {
38
+ var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
39
+ return parent ? level === 0 ? parent : parent.getParentField(level - 1) : undefined;
40
+ };
41
+ (0, _react.useEffect)(function () {
42
+ formRef.current = form;
43
+ }, [form.data]);
44
+ var setValue = (0, _react.useCallback)(function (fieldId, cb) {
45
+ var fieldPath = "".concat(path, ".").concat(fieldId);
46
+ if (!path || !formRef.current) {
47
+ return;
48
+ }
49
+ formRef.current.setValue(fieldPath, cb((0, _get.default)(formRef.current.data, fieldPath)));
50
+ }, []);
51
+ var context = field ? {
52
+ value: value,
53
+ field: field,
54
+ getParentField: getParentField,
55
+ path: path,
56
+ setValue: setValue
57
+ } : undefined;
58
+ return /*#__PURE__*/_react.default.createElement("hcms-parent-field-provider", {
59
+ "data-path": path,
60
+ "data-field-type": field?.type
61
+ }, /*#__PURE__*/_react.default.createElement(ParentField.Provider, {
62
+ value: context
63
+ }, children));
64
+ };
65
+ exports.ParentFieldProvider = ParentFieldProvider;
66
+
67
+ //# sourceMappingURL=ParentValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_get","_interopRequireDefault","_ModelFieldProvider","_form","ParentField","createContext","undefined","useParentField","level","arguments","length","parent","useContext","getParentField","ParentFieldProvider","_ref","path","value","children","form","useForm","formRef","useRef","field","fieldContext","useModelField","_unused","useEffect","current","data","setValue","useCallback","fieldId","cb","fieldPath","concat","get","context","default","createElement","type","Provider","exports"],"sources":["ParentValue.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef } from \"react\";\nimport get from \"lodash/get\";\nimport { CmsModelField } from \"@webiny/app-headless-cms-common/types\";\nimport { useModelField } from \"~/admin/components/ModelFieldProvider\";\nimport { useForm, FormAPI } from \"@webiny/form\";\n\ndeclare global {\n // eslint-disable-next-line\n namespace JSX {\n interface IntrinsicElements {\n \"hcms-parent-field-provider\": React.HTMLProps<HTMLDivElement>;\n }\n }\n}\n\ninterface ParentField {\n value: any;\n setValue: (fieldId: string, cb: (prevValue: any) => any) => void;\n field: CmsModelField;\n getParentField(level: number): ParentField | undefined;\n path: string;\n}\n\nconst ParentField = createContext<ParentField | undefined>(undefined);\n\nexport function useParentField(level = 0): ParentField | undefined {\n const parent = useContext(ParentField);\n\n if (!parent) {\n return undefined;\n }\n\n return level === 0 ? parent : parent.getParentField(level);\n}\n\ninterface ParentFieldProviderProps {\n value: any;\n path: string;\n children: React.ReactNode;\n}\n\nexport const ParentFieldProvider = ({ path, value, children }: ParentFieldProviderProps) => {\n const parent = useContext(ParentField);\n const form = useForm();\n const formRef = useRef<FormAPI>();\n\n let field: CmsModelField | undefined;\n try {\n const fieldContext = useModelField();\n field = fieldContext.field;\n } catch {\n field = undefined;\n }\n\n const getParentField = (level = 0) => {\n return parent ? (level === 0 ? parent : parent.getParentField(level - 1)) : undefined;\n };\n\n useEffect(() => {\n formRef.current = form;\n }, [form.data]);\n\n const setValue = useCallback<ParentField[\"setValue\"]>((fieldId, cb) => {\n const fieldPath = `${path}.${fieldId}`;\n if (!path || !formRef.current) {\n return;\n }\n\n formRef.current.setValue(fieldPath, cb(get(formRef.current.data, fieldPath)));\n }, []);\n\n const context: ParentField | undefined = field\n ? {\n value,\n field,\n getParentField,\n path,\n setValue\n }\n : undefined;\n\n return (\n <hcms-parent-field-provider data-path={path} data-field-type={field?.type}>\n <ParentField.Provider value={context}>{children}</ParentField.Provider>\n </hcms-parent-field-provider>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAmBA,IAAMK,WAAW,gBAAG,IAAAC,oBAAa,EAA0BC,SAAS,CAAC;AAE9D,SAASC,cAAcA,CAAA,EAAqC;EAAA,IAApCC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAH,SAAA,GAAAG,SAAA,MAAG,CAAC;EACpC,IAAME,MAAM,GAAG,IAAAC,iBAAU,EAACR,WAAW,CAAC;EAEtC,IAAI,CAACO,MAAM,EAAE;IACT,OAAOL,SAAS;EACpB;EAEA,OAAOE,KAAK,KAAK,CAAC,GAAGG,MAAM,GAAGA,MAAM,CAACE,cAAc,CAACL,KAAK,CAAC;AAC9D;AAQO,IAAMM,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,EAA4D;EAAA,IAAtDC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK;IAAEC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;EACvD,IAAMP,MAAM,GAAG,IAAAC,iBAAU,EAACR,WAAW,CAAC;EACtC,IAAMe,IAAI,GAAG,IAAAC,aAAO,EAAC,CAAC;EACtB,IAAMC,OAAO,GAAG,IAAAC,aAAM,EAAU,CAAC;EAEjC,IAAIC,KAAgC;EACpC,IAAI;IACA,IAAMC,YAAY,GAAG,IAAAC,iCAAa,EAAC,CAAC;IACpCF,KAAK,GAAGC,YAAY,CAACD,KAAK;EAC9B,CAAC,CAAC,OAAAG,OAAA,EAAM;IACJH,KAAK,GAAGjB,SAAS;EACrB;EAEA,IAAMO,cAAc,GAAG,SAAjBA,cAAcA,CAAA,EAAkB;IAAA,IAAdL,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAH,SAAA,GAAAG,SAAA,MAAG,CAAC;IAC7B,OAAOE,MAAM,GAAIH,KAAK,KAAK,CAAC,GAAGG,MAAM,GAAGA,MAAM,CAACE,cAAc,CAACL,KAAK,GAAG,CAAC,CAAC,GAAIF,SAAS;EACzF,CAAC;EAED,IAAAqB,gBAAS,EAAC,YAAM;IACZN,OAAO,CAACO,OAAO,GAAGT,IAAI;EAC1B,CAAC,EAAE,CAACA,IAAI,CAACU,IAAI,CAAC,CAAC;EAEf,IAAMC,QAAQ,GAAG,IAAAC,kBAAW,EAA0B,UAACC,OAAO,EAAEC,EAAE,EAAK;IACnE,IAAMC,SAAS,MAAAC,MAAA,CAAMnB,IAAI,OAAAmB,MAAA,CAAIH,OAAO,CAAE;IACtC,IAAI,CAAChB,IAAI,IAAI,CAACK,OAAO,CAACO,OAAO,EAAE;MAC3B;IACJ;IAEAP,OAAO,CAACO,OAAO,CAACE,QAAQ,CAACI,SAAS,EAAED,EAAE,CAAC,IAAAG,YAAG,EAACf,OAAO,CAACO,OAAO,CAACC,IAAI,EAAEK,SAAS,CAAC,CAAC,CAAC;EACjF,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMG,OAAgC,GAAGd,KAAK,GACxC;IACIN,KAAK,EAALA,KAAK;IACLM,KAAK,EAALA,KAAK;IACLV,cAAc,EAAdA,cAAc;IACdG,IAAI,EAAJA,IAAI;IACJc,QAAQ,EAARA;EACJ,CAAC,GACDxB,SAAS;EAEf,oBACIT,MAAA,CAAAyC,OAAA,CAAAC,aAAA;IAA4B,aAAWvB,IAAK;IAAC,mBAAiBO,KAAK,EAAEiB;EAAK,gBACtE3C,MAAA,CAAAyC,OAAA,CAAAC,aAAA,CAACnC,WAAW,CAACqC,QAAQ;IAACxB,KAAK,EAAEoB;EAAQ,GAAEnB,QAA+B,CAC9C,CAAC;AAErC,CAAC;AAACwB,OAAA,CAAA5B,mBAAA,GAAAA,mBAAA"}
@@ -6,5 +6,5 @@ interface UseBindProps {
6
6
  export interface GetBindCallable {
7
7
  (index?: number): BindComponent;
8
8
  }
9
- export declare function useBind({ Bind: ParentBind, field }: UseBindProps): (index?: any) => BindComponent<any, any>;
9
+ export declare function useBind({ Bind, field }: UseBindProps): (index?: any) => BindComponent<any, any>;
10
10
  export {};
@@ -11,12 +11,12 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _createValidators = require("../../../utils/createValidators");
13
13
  function useBind(_ref) {
14
- var ParentBind = _ref.Bind,
14
+ var Bind = _ref.Bind,
15
15
  field = _ref.field;
16
16
  var memoizedBindComponents = (0, _react.useRef)({});
17
17
  return (0, _react.useCallback)(function () {
18
18
  var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
19
- var parentName = ParentBind.parentName;
19
+ var parentName = Bind.parentName;
20
20
  // If there's a parent name assigned to the given Bind component, we need to include it in the new field "name".
21
21
  // This allows us to have nested fields (like "object" field with nested properties)
22
22
  var name = [parentName, field.fieldId, index >= 0 ? index : undefined].filter(function (v) {
@@ -34,7 +34,7 @@ function useBind(_ref) {
34
34
  var childName = params.name,
35
35
  childValidators = params.validators,
36
36
  children = params.children;
37
- return /*#__PURE__*/_react.default.createElement(ParentBind, {
37
+ return /*#__PURE__*/_react.default.createElement(Bind, {
38
38
  name: childName || name,
39
39
  validators: childValidators || inputValidators,
40
40
  defaultValue: index === -1 ? defaultValue : null
@@ -83,16 +83,14 @@ function useBind(_ref) {
83
83
  bind.onChange(value);
84
84
  };
85
85
  }
86
- if (typeof children === "function") {
87
- return children(props);
88
- }
89
- return /*#__PURE__*/(0, _react.cloneElement)(children, props);
86
+ var element = typeof children === "function" ? children(props) : /*#__PURE__*/(0, _react.cloneElement)(children, props);
87
+ return element;
90
88
  });
91
89
  };
92
90
 
93
91
  // We need to keep track of current field name, to support nested fields.
94
92
  memoizedBindComponents.current[name].parentName = name;
95
- memoizedBindComponents.current[name].displayName = "ParentBind<".concat(name, ">");
93
+ memoizedBindComponents.current[name].displayName = "Bind<".concat(name, ">");
96
94
  return memoizedBindComponents.current[name];
97
95
  }, [field.fieldId]);
98
96
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_createValidators","useBind","_ref","ParentBind","Bind","field","memoizedBindComponents","useRef","useCallback","index","arguments","length","undefined","parentName","name","fieldId","filter","v","join","current","validators","createValidators","validation","listValidators","listValidation","defaultValue","isMultipleValues","multipleValues","inputValidators","UseBind","params","childName","childValidators","children","default","createElement","bind","props","_objectSpread2","appendValue","newValue","currentValue","value","newIndex","onChange","concat","_toConsumableArray2","slice","prependValue","appendValues","newValues","removeValue","form","validateInput","moveValueUp","splice","moveValueDown","cloneElement","displayName"],"sources":["useBind.tsx"],"sourcesContent":["import React, { useRef, useCallback, cloneElement } from \"react\";\nimport { createValidators } from \"~/utils/createValidators\";\nimport { BindComponent, CmsModelField } from \"~/types\";\nimport { Validator } from \"@webiny/validation/types\";\n\ninterface UseBindProps {\n field: CmsModelField;\n Bind: BindComponent;\n}\n\ninterface UseBindParams {\n name?: string;\n validators?: Validator | Validator[];\n children?: any;\n}\n\nexport interface GetBindCallable {\n (index?: number): BindComponent;\n}\n\nexport function useBind({ Bind: ParentBind, field }: UseBindProps) {\n const memoizedBindComponents = useRef<Record<string, BindComponent>>({});\n\n return useCallback(\n (index = -1) => {\n const { parentName } = ParentBind;\n // If there's a parent name assigned to the given Bind component, we need to include it in the new field \"name\".\n // This allows us to have nested fields (like \"object\" field with nested properties)\n const name = [parentName, field.fieldId, index >= 0 ? index : undefined]\n .filter(v => v !== undefined)\n .join(\".\");\n\n if (memoizedBindComponents.current[name]) {\n return memoizedBindComponents.current[name];\n }\n\n const validators = createValidators(field, field.validation || []);\n const listValidators = createValidators(field, field.listValidation || []);\n const defaultValue: string[] | undefined = undefined;\n const isMultipleValues = index === -1 && field.multipleValues;\n const inputValidators = isMultipleValues ? listValidators : validators;\n\n memoizedBindComponents.current[name] = function UseBind(params: UseBindParams) {\n const { name: childName, validators: childValidators, children } = params;\n\n return (\n <ParentBind\n name={childName || name}\n validators={childValidators || inputValidators}\n defaultValue={index === -1 ? defaultValue : null}\n >\n {bind => {\n // Multiple-values functions below.\n const props = { ...bind };\n if (field.multipleValues && index === -1) {\n props.appendValue = (newValue: any, index?: number) => {\n const currentValue = bind.value || [];\n const newIndex = index ?? currentValue.length;\n\n bind.onChange([\n ...currentValue.slice(0, newIndex),\n newValue,\n ...currentValue.slice(newIndex)\n ]);\n };\n props.prependValue = (newValue: any) => {\n bind.onChange([newValue, ...(bind.value || [])]);\n };\n props.appendValues = (newValues: any[]) => {\n bind.onChange([...(bind.value || []), ...newValues]);\n };\n\n props.removeValue = (index: number) => {\n if (index < 0) {\n return;\n }\n let value = bind.value;\n value = [...value.slice(0, index), ...value.slice(index + 1)];\n\n bind.onChange(value);\n\n // To make sure the field is still valid, we must trigger validation.\n bind.form.validateInput(field.fieldId);\n };\n\n props.moveValueUp = (index: number) => {\n if (index <= 0) {\n return;\n }\n\n const value = [...bind.value];\n value.splice(index, 1);\n value.splice(index - 1, 0, bind.value[index]);\n\n bind.onChange(value);\n };\n\n props.moveValueDown = (index: number) => {\n if (index >= bind.value.length) {\n return;\n }\n\n const value = [...bind.value];\n value.splice(index, 1);\n value.splice(index + 1, 0, bind.value[index]);\n\n bind.onChange(value);\n };\n }\n\n if (typeof children === \"function\") {\n return children(props);\n }\n\n return cloneElement(children, props);\n }}\n </ParentBind>\n );\n };\n\n // We need to keep track of current field name, to support nested fields.\n memoizedBindComponents.current[name].parentName = name;\n memoizedBindComponents.current[name].displayName = `ParentBind<${name}>`;\n\n return memoizedBindComponents.current[name];\n },\n [field.fieldId]\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_createValidators","useBind","_ref","Bind","field","memoizedBindComponents","useRef","useCallback","index","arguments","length","undefined","parentName","name","fieldId","filter","v","join","current","validators","createValidators","validation","listValidators","listValidation","defaultValue","isMultipleValues","multipleValues","inputValidators","UseBind","params","childName","childValidators","children","default","createElement","bind","props","_objectSpread2","appendValue","newValue","currentValue","value","newIndex","onChange","concat","_toConsumableArray2","slice","prependValue","appendValues","newValues","removeValue","form","validateInput","moveValueUp","splice","moveValueDown","element","cloneElement","displayName"],"sources":["useBind.tsx"],"sourcesContent":["import React, { useRef, useCallback, cloneElement } from \"react\";\nimport { createValidators } from \"~/utils/createValidators\";\nimport { BindComponent, CmsModelField } from \"~/types\";\nimport { Validator } from \"@webiny/validation/types\";\n\ninterface UseBindProps {\n field: CmsModelField;\n Bind: BindComponent;\n}\n\ninterface UseBindParams {\n name?: string;\n validators?: Validator | Validator[];\n children?: any;\n}\n\nexport interface GetBindCallable {\n (index?: number): BindComponent;\n}\n\nexport function useBind({ Bind, field }: UseBindProps) {\n const memoizedBindComponents = useRef<Record<string, BindComponent>>({});\n\n return useCallback(\n (index = -1) => {\n const { parentName } = Bind;\n // If there's a parent name assigned to the given Bind component, we need to include it in the new field \"name\".\n // This allows us to have nested fields (like \"object\" field with nested properties)\n const name = [parentName, field.fieldId, index >= 0 ? index : undefined]\n .filter(v => v !== undefined)\n .join(\".\");\n\n if (memoizedBindComponents.current[name]) {\n return memoizedBindComponents.current[name];\n }\n\n const validators = createValidators(field, field.validation || []);\n const listValidators = createValidators(field, field.listValidation || []);\n const defaultValue: string[] | undefined = undefined;\n const isMultipleValues = index === -1 && field.multipleValues;\n const inputValidators = isMultipleValues ? listValidators : validators;\n\n memoizedBindComponents.current[name] = function UseBind(params: UseBindParams) {\n const { name: childName, validators: childValidators, children } = params;\n\n return (\n <Bind\n name={childName || name}\n validators={childValidators || inputValidators}\n defaultValue={index === -1 ? defaultValue : null}\n >\n {bind => {\n // Multiple-values functions below.\n const props = { ...bind };\n if (field.multipleValues && index === -1) {\n props.appendValue = (newValue: any, index?: number) => {\n const currentValue = bind.value || [];\n const newIndex = index ?? currentValue.length;\n\n bind.onChange([\n ...currentValue.slice(0, newIndex),\n newValue,\n ...currentValue.slice(newIndex)\n ]);\n };\n props.prependValue = (newValue: any) => {\n bind.onChange([newValue, ...(bind.value || [])]);\n };\n props.appendValues = (newValues: any[]) => {\n bind.onChange([...(bind.value || []), ...newValues]);\n };\n\n props.removeValue = (index: number) => {\n if (index < 0) {\n return;\n }\n let value = bind.value;\n value = [...value.slice(0, index), ...value.slice(index + 1)];\n\n bind.onChange(value);\n\n // To make sure the field is still valid, we must trigger validation.\n bind.form.validateInput(field.fieldId);\n };\n\n props.moveValueUp = (index: number) => {\n if (index <= 0) {\n return;\n }\n\n const value = [...bind.value];\n value.splice(index, 1);\n value.splice(index - 1, 0, bind.value[index]);\n\n bind.onChange(value);\n };\n\n props.moveValueDown = (index: number) => {\n if (index >= bind.value.length) {\n return;\n }\n\n const value = [...bind.value];\n value.splice(index, 1);\n value.splice(index + 1, 0, bind.value[index]);\n\n bind.onChange(value);\n };\n }\n\n const element =\n typeof children === \"function\"\n ? children(props)\n : cloneElement(children, props);\n\n return element;\n }}\n </Bind>\n );\n } as BindComponent;\n\n // We need to keep track of current field name, to support nested fields.\n memoizedBindComponents.current[name].parentName = name;\n memoizedBindComponents.current[name].displayName = `Bind<${name}>`;\n\n return memoizedBindComponents.current[name];\n },\n [field.fieldId]\n );\n}\n"],"mappings":"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"}
@@ -26,6 +26,7 @@ var _PreviewTab = require("./PreviewTab");
26
26
  var _Header = _interopRequireDefault(require("./Header"));
27
27
  var _DragPreview = _interopRequireDefault(require("../DragPreview"));
28
28
  var _useModelEditor2 = require("./useModelEditor");
29
+ var _contentEntries = require("../../config/contentEntries");
29
30
  var _templateObject;
30
31
  var t = _i18n.i18n.ns("app-headless-cms/admin/editor");
31
32
  var prompt = t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["There are some unsaved changes! Are you sure you want to navigate away and discard all changes?"])));
@@ -131,9 +132,9 @@ var Editor = function Editor() {
131
132
  }))), /*#__PURE__*/_react.default.createElement(_Tabs.Tab, {
132
133
  label: "Preview",
133
134
  "data-testid": "cms.editor.tab.preview"
134
- }, /*#__PURE__*/_react.default.createElement(_PreviewTab.PreviewTab, {
135
+ }, /*#__PURE__*/_react.default.createElement(_contentEntries.ContentEntryEditorWithConfig, null, /*#__PURE__*/_react.default.createElement(_PreviewTab.PreviewTab, {
135
136
  activeTab: activeTabIndex === 1
136
- })))))), /*#__PURE__*/_react.default.createElement(_DragPreview.default, null));
137
+ }))))))), /*#__PURE__*/_react.default.createElement(_DragPreview.default, null));
137
138
  };
138
139
  exports.Editor = Editor;
139
140
 
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactRouter","_styled","_interopRequireDefault","_emotion","_i18n","_Progress","_SplitView","_Icon","_Typography","_Tabs","_roundAssignment24px","_FieldsSidebar","_FieldEditor","_PreviewTab","_Header","_DragPreview","_useModelEditor2","_templateObject","t","i18n","ns","prompt","_taggedTemplateLiteral2","default","ContentContainer","styled","target","label","paddingTop","EditContainer","padding","position","exports","LeftBarTitle","borderBottom","display","alignItems","color","titleIcon","css","height","marginRight","LeftBarFieldList","overflow","formTabs","backgroundColor","Editor","_useModelEditor","useModelEditor","data","setData","isPristine","_useState","useState","_useState2","_slicedToArray2","activeTabIndex","setActiveTabIndex","onChange","_ref","fields","layout","_objectSpread2","createElement","CircularProgress","className","Prompt","when","message","SplitView","LeftPanel","span","Icon","icon","ReactComponent","Typography","use","FieldsSidebar","onFieldDragStart","RightPanel","Tabs","value","onActivate","e","Tab","FieldEditor","PreviewTab","activeTab"],"sources":["Editor.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Prompt } from \"@webiny/react-router\";\nimport styled from \"@emotion/styled\";\nimport { css } from \"emotion\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { LeftPanel, RightPanel, SplitView } from \"@webiny/app-admin/components/SplitView\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Tab, Tabs } from \"@webiny/ui/Tabs\";\nimport { ReactComponent as FormIcon } from \"./icons/round-assignment-24px.svg\";\nimport { FieldsSidebar } from \"./FieldsSidebar\";\nimport { FieldEditor } from \"../FieldEditor\";\nimport { PreviewTab } from \"./PreviewTab\";\nimport Header from \"./Header\";\nimport DragPreview from \"../DragPreview\";\nimport { useModelEditor } from \"./useModelEditor\";\nimport { CmsModelField, CmsEditorFieldsLayout } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/editor\");\n\nconst prompt = t`There are some unsaved changes! Are you sure you want to navigate away and discard all changes?`;\n\nconst ContentContainer = styled(\"div\")({\n paddingTop: 65\n});\n\nexport const EditContainer = styled(\"div\")({\n padding: 40,\n position: \"relative\"\n});\n\nconst LeftBarTitle = styled(\"div\")({\n borderBottom: \"1px solid var(--mdc-theme-on-background)\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 25,\n color: \"var(--mdc-theme-on-surface)\"\n});\n\nconst titleIcon = css({\n height: 24,\n marginRight: 15,\n color: \"var(--mdc-theme-primary)\"\n});\n\nconst LeftBarFieldList = styled(\"div\")({\n padding: 40,\n overflow: \"auto\",\n height: \"calc(100vh - 250px)\"\n});\n\nconst formTabs = css({\n \"&.webiny-ui-tabs\": {\n \".webiny-ui-tabs__tab-bar\": {\n backgroundColor: \"var(--mdc-theme-surface)\"\n }\n }\n});\n\ninterface OnChangeParams {\n fields: CmsModelField[];\n layout: CmsEditorFieldsLayout;\n}\n\nexport const Editor = () => {\n const { data, setData, isPristine } = useModelEditor();\n\n const [activeTabIndex, setActiveTabIndex] = useState(0);\n\n const onChange = ({ fields, layout }: OnChangeParams) => {\n setData(data => ({ ...data, fields, layout }));\n };\n\n if (!data) {\n return <CircularProgress label={\"Loading content model...\"} />;\n }\n\n return (\n <div className={\"content-model-editor\"}>\n <Prompt when={!isPristine} message={prompt} />\n <Header />\n <ContentContainer>\n <SplitView>\n <LeftPanel span={4}>\n <LeftBarTitle>\n <Icon className={titleIcon} icon={<FormIcon />} />\n <Typography use={\"headline6\"}>Fields</Typography>\n </LeftBarTitle>\n <LeftBarFieldList>\n <FieldsSidebar\n onFieldDragStart={() => {\n setActiveTabIndex(0);\n }}\n />\n </LeftBarFieldList>\n </LeftPanel>\n <RightPanel span={8}>\n <Tabs\n value={activeTabIndex}\n className={formTabs}\n onActivate={e => setActiveTabIndex(e)}\n >\n <Tab label={\"Edit\"} data-testid={\"cms.editor.tab.edit\"}>\n <EditContainer>\n <FieldEditor\n fields={data.fields}\n layout={data.layout || []}\n onChange={onChange}\n />\n </EditContainer>\n </Tab>\n <Tab label={\"Preview\"} data-testid={\"cms.editor.tab.preview\"}>\n <PreviewTab activeTab={activeTabIndex === 1} />\n </Tab>\n </Tabs>\n </RightPanel>\n </SplitView>\n </ContentContainer>\n <DragPreview />\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactRouter","_styled","_interopRequireDefault","_emotion","_i18n","_Progress","_SplitView","_Icon","_Typography","_Tabs","_roundAssignment24px","_FieldsSidebar","_FieldEditor","_PreviewTab","_Header","_DragPreview","_useModelEditor2","_contentEntries","_templateObject","t","i18n","ns","prompt","_taggedTemplateLiteral2","default","ContentContainer","styled","target","label","paddingTop","EditContainer","padding","position","exports","LeftBarTitle","borderBottom","display","alignItems","color","titleIcon","css","height","marginRight","LeftBarFieldList","overflow","formTabs","backgroundColor","Editor","_useModelEditor","useModelEditor","data","setData","isPristine","_useState","useState","_useState2","_slicedToArray2","activeTabIndex","setActiveTabIndex","onChange","_ref","fields","layout","_objectSpread2","createElement","CircularProgress","className","Prompt","when","message","SplitView","LeftPanel","span","Icon","icon","ReactComponent","Typography","use","FieldsSidebar","onFieldDragStart","RightPanel","Tabs","value","onActivate","e","Tab","FieldEditor","ContentEntryEditorWithConfig","PreviewTab","activeTab"],"sources":["Editor.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Prompt } from \"@webiny/react-router\";\nimport styled from \"@emotion/styled\";\nimport { css } from \"emotion\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { LeftPanel, RightPanel, SplitView } from \"@webiny/app-admin/components/SplitView\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Tab, Tabs } from \"@webiny/ui/Tabs\";\nimport { ReactComponent as FormIcon } from \"./icons/round-assignment-24px.svg\";\nimport { FieldsSidebar } from \"./FieldsSidebar\";\nimport { FieldEditor } from \"../FieldEditor\";\nimport { PreviewTab } from \"./PreviewTab\";\nimport Header from \"./Header\";\nimport DragPreview from \"../DragPreview\";\nimport { useModelEditor } from \"./useModelEditor\";\nimport { CmsModelField, CmsEditorFieldsLayout } from \"~/types\";\nimport { ContentEntryEditorWithConfig } from \"~/admin/config/contentEntries\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/editor\");\n\nconst prompt = t`There are some unsaved changes! Are you sure you want to navigate away and discard all changes?`;\n\nconst ContentContainer = styled(\"div\")({\n paddingTop: 65\n});\n\nexport const EditContainer = styled(\"div\")({\n padding: 40,\n position: \"relative\"\n});\n\nconst LeftBarTitle = styled(\"div\")({\n borderBottom: \"1px solid var(--mdc-theme-on-background)\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 25,\n color: \"var(--mdc-theme-on-surface)\"\n});\n\nconst titleIcon = css({\n height: 24,\n marginRight: 15,\n color: \"var(--mdc-theme-primary)\"\n});\n\nconst LeftBarFieldList = styled(\"div\")({\n padding: 40,\n overflow: \"auto\",\n height: \"calc(100vh - 250px)\"\n});\n\nconst formTabs = css({\n \"&.webiny-ui-tabs\": {\n \".webiny-ui-tabs__tab-bar\": {\n backgroundColor: \"var(--mdc-theme-surface)\"\n }\n }\n});\n\ninterface OnChangeParams {\n fields: CmsModelField[];\n layout: CmsEditorFieldsLayout;\n}\n\nexport const Editor = () => {\n const { data, setData, isPristine } = useModelEditor();\n\n const [activeTabIndex, setActiveTabIndex] = useState(0);\n\n const onChange = ({ fields, layout }: OnChangeParams) => {\n setData(data => ({ ...data, fields, layout }));\n };\n\n if (!data) {\n return <CircularProgress label={\"Loading content model...\"} />;\n }\n\n return (\n <div className={\"content-model-editor\"}>\n <Prompt when={!isPristine} message={prompt} />\n <Header />\n <ContentContainer>\n <SplitView>\n <LeftPanel span={4}>\n <LeftBarTitle>\n <Icon className={titleIcon} icon={<FormIcon />} />\n <Typography use={\"headline6\"}>Fields</Typography>\n </LeftBarTitle>\n <LeftBarFieldList>\n <FieldsSidebar\n onFieldDragStart={() => {\n setActiveTabIndex(0);\n }}\n />\n </LeftBarFieldList>\n </LeftPanel>\n <RightPanel span={8}>\n <Tabs\n value={activeTabIndex}\n className={formTabs}\n onActivate={e => setActiveTabIndex(e)}\n >\n <Tab label={\"Edit\"} data-testid={\"cms.editor.tab.edit\"}>\n <EditContainer>\n <FieldEditor\n fields={data.fields}\n layout={data.layout || []}\n onChange={onChange}\n />\n </EditContainer>\n </Tab>\n <Tab label={\"Preview\"} data-testid={\"cms.editor.tab.preview\"}>\n <ContentEntryEditorWithConfig>\n <PreviewTab activeTab={activeTabIndex === 1} />\n </ContentEntryEditorWithConfig>\n </Tab>\n </Tabs>\n </RightPanel>\n </SplitView>\n </ContentContainer>\n <DragPreview />\n </div>\n );\n};\n"],"mappings":"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"}