@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
@@ -1,7 +1,5 @@
1
1
  /// <reference types="react" />
2
- export declare const ContentEntryEditorConfig: (({ children }: {
3
- children: import("react").ReactNode;
4
- }) => JSX.Element) & {
2
+ export declare const ContentEntryEditorConfig: (({ priority, children }: import("@webiny/react-properties").ConfigProps) => JSX.Element) & {
5
3
  Actions: {
6
4
  ButtonAction: ((props: import("./Actions/ButtonAction").ButtonActionProps) => JSX.Element) & {
7
5
  useButtons: () => import("@webiny/app-admin/components/Buttons/useButtons").ButtonsProviderContext;
@@ -10,6 +8,11 @@ export declare const ContentEntryEditorConfig: (({ children }: {
10
8
  useOptionsMenuItem: () => import("@webiny/app-admin/components/OptionsMenu/useOptionsMenuItem").OptionsMenuItemProviderContext;
11
9
  };
12
10
  };
11
+ FieldElement: {
12
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: import("react").PropsWithChildren<import("../../../..").FieldElementProps>, context?: any) => import("react").ReactElement<any, any> | null>) => (props: {
13
+ modelIds?: string[] | undefined;
14
+ }) => JSX.Element;
15
+ };
13
16
  };
14
17
  export declare const ContentEntryEditorWithConfig: ({ onProperties, children }: import("@webiny/react-properties").WithConfigProps) => JSX.Element;
15
18
  export declare function useContentEntryEditorConfig(): {
@@ -10,9 +10,11 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
10
10
  var _react = require("react");
11
11
  var _reactProperties = require("@webiny/react-properties");
12
12
  var _Actions = require("./Actions");
13
+ var _FieldElement = require("./FieldElement");
13
14
  var base = (0, _reactProperties.createConfigurableComponent)("ContentEntryEditorConfig");
14
15
  var ContentEntryEditorConfig = Object.assign(base.Config, {
15
- Actions: _Actions.Actions
16
+ Actions: _Actions.Actions,
17
+ FieldElement: _FieldElement.FieldElement
16
18
  });
17
19
  exports.ContentEntryEditorConfig = ContentEntryEditorConfig;
18
20
  var ContentEntryEditorWithConfig = base.WithConfig;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactProperties","_Actions","base","createConfigurableComponent","ContentEntryEditorConfig","Object","assign","Config","Actions","exports","ContentEntryEditorWithConfig","WithConfig","useContentEntryEditorConfig","config","useConfig","actions","useMemo","buttonActions","_toConsumableArray2","default","filter","action","$type","menuItemActions"],"sources":["ContentEntryEditorConfig.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { createConfigurableComponent } from \"@webiny/react-properties\";\nimport { Actions, ActionsConfig } from \"./Actions\";\n\nconst base = createConfigurableComponent<ContentEntryEditorConfig>(\"ContentEntryEditorConfig\");\n\nexport const ContentEntryEditorConfig = Object.assign(base.Config, { Actions });\n\nexport const ContentEntryEditorWithConfig = base.WithConfig;\n\ninterface ContentEntryEditorConfig {\n actions: ActionsConfig;\n}\n\nexport function useContentEntryEditorConfig() {\n const config = base.useConfig();\n\n const actions = config.actions || [];\n\n return useMemo(\n () => ({\n buttonActions: [...(actions.filter(action => action.$type === \"button-action\") || [])],\n menuItemActions: [\n ...(actions.filter(action => action.$type === \"menu-item-action\") || [])\n ]\n }),\n [config]\n );\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAEA,IAAMG,IAAI,GAAG,IAAAC,4CAA2B,EAA2B,0BAA0B,CAAC;AAEvF,IAAMC,wBAAwB,GAAGC,MAAM,CAACC,MAAM,CAACJ,IAAI,CAACK,MAAM,EAAE;EAAEC,OAAO,EAAPA;AAAQ,CAAC,CAAC;AAACC,OAAA,CAAAL,wBAAA,GAAAA,wBAAA;AAEzE,IAAMM,4BAA4B,GAAGR,IAAI,CAACS,UAAU;AAACF,OAAA,CAAAC,4BAAA,GAAAA,4BAAA;AAMrD,SAASE,2BAA2BA,CAAA,EAAG;EAC1C,IAAMC,MAAM,GAAGX,IAAI,CAACY,SAAS,CAAC,CAAC;EAE/B,IAAMC,OAAO,GAAGF,MAAM,CAACE,OAAO,IAAI,EAAE;EAEpC,OAAO,IAAAC,cAAO,EACV;IAAA,OAAO;MACHC,aAAa,MAAAC,mBAAA,CAAAC,OAAA,EAAOJ,OAAO,CAACK,MAAM,CAAC,UAAAC,MAAM;QAAA,OAAIA,MAAM,CAACC,KAAK,KAAK,eAAe;MAAA,EAAC,IAAI,EAAE,CAAE;MACtFC,eAAe,MAAAL,mBAAA,CAAAC,OAAA,EACPJ,OAAO,CAACK,MAAM,CAAC,UAAAC,MAAM;QAAA,OAAIA,MAAM,CAACC,KAAK,KAAK,kBAAkB;MAAA,EAAC,IAAI,EAAE;IAE/E,CAAC;EAAA,CAAC,EACF,CAACT,MAAM,CACX,CAAC;AACL"}
1
+ {"version":3,"names":["_react","require","_reactProperties","_Actions","_FieldElement","base","createConfigurableComponent","ContentEntryEditorConfig","Object","assign","Config","Actions","FieldElement","exports","ContentEntryEditorWithConfig","WithConfig","useContentEntryEditorConfig","config","useConfig","actions","useMemo","buttonActions","_toConsumableArray2","default","filter","action","$type","menuItemActions"],"sources":["ContentEntryEditorConfig.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { createConfigurableComponent } from \"@webiny/react-properties\";\nimport { Actions, ActionsConfig } from \"./Actions\";\nimport { FieldElement } from \"./FieldElement\";\n\nconst base = createConfigurableComponent<ContentEntryEditorConfig>(\"ContentEntryEditorConfig\");\n\nexport const ContentEntryEditorConfig = Object.assign(base.Config, { Actions, FieldElement });\n\nexport const ContentEntryEditorWithConfig = base.WithConfig;\n\ninterface ContentEntryEditorConfig {\n actions: ActionsConfig;\n}\n\nexport function useContentEntryEditorConfig() {\n const config = base.useConfig();\n\n const actions = config.actions || [];\n\n return useMemo(\n () => ({\n buttonActions: [...(actions.filter(action => action.$type === \"button-action\") || [])],\n menuItemActions: [\n ...(actions.filter(action => action.$type === \"menu-item-action\") || [])\n ]\n }),\n [config]\n );\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAEA,IAAMI,IAAI,GAAG,IAAAC,4CAA2B,EAA2B,0BAA0B,CAAC;AAEvF,IAAMC,wBAAwB,GAAGC,MAAM,CAACC,MAAM,CAACJ,IAAI,CAACK,MAAM,EAAE;EAAEC,OAAO,EAAPA,gBAAO;EAAEC,YAAY,EAAZA;AAAa,CAAC,CAAC;AAACC,OAAA,CAAAN,wBAAA,GAAAA,wBAAA;AAEvF,IAAMO,4BAA4B,GAAGT,IAAI,CAACU,UAAU;AAACF,OAAA,CAAAC,4BAAA,GAAAA,4BAAA;AAMrD,SAASE,2BAA2BA,CAAA,EAAG;EAC1C,IAAMC,MAAM,GAAGZ,IAAI,CAACa,SAAS,CAAC,CAAC;EAE/B,IAAMC,OAAO,GAAGF,MAAM,CAACE,OAAO,IAAI,EAAE;EAEpC,OAAO,IAAAC,cAAO,EACV;IAAA,OAAO;MACHC,aAAa,MAAAC,mBAAA,CAAAC,OAAA,EAAOJ,OAAO,CAACK,MAAM,CAAC,UAAAC,MAAM;QAAA,OAAIA,MAAM,CAACC,KAAK,KAAK,eAAe;MAAA,EAAC,IAAI,EAAE,CAAE;MACtFC,eAAe,MAAAL,mBAAA,CAAAC,OAAA,EACPJ,OAAO,CAACK,MAAM,CAAC,UAAAC,MAAM;QAAA,OAAIA,MAAM,CAACC,KAAK,KAAK,kBAAkB;MAAA,EAAC,IAAI,EAAE;IAE/E,CAAC;EAAA,CAAC,EACF,CAACT,MAAM,CACX,CAAC;AACL"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export declare const FieldElement: {
3
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: import("react").PropsWithChildren<import("../../../components/ContentEntryForm/FieldElement").FieldElementProps>, context?: any) => import("react").ReactElement<any, any> | null>) => (props: {
4
+ modelIds?: string[] | undefined;
5
+ }) => JSX.Element;
6
+ };
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FieldElement = void 0;
7
+ var _reactComposition = require("@webiny/react-composition");
8
+ var _FieldElement = require("../../../components/ContentEntryForm/FieldElement");
9
+ var _ModelProvider = require("../../../components/ModelProvider");
10
+ var createDecorator = (0, _reactComposition.createDecoratorFactory)()(_FieldElement.FieldElement, function (decoratorProps) {
11
+ var _useModel = (0, _ModelProvider.useModel)(),
12
+ model = _useModel.model;
13
+ if (decoratorProps?.modelIds?.length && !decoratorProps.modelIds.includes(model.modelId)) {
14
+ return false;
15
+ }
16
+ return true;
17
+ });
18
+ var FieldElement = {
19
+ createDecorator: createDecorator
20
+ };
21
+ exports.FieldElement = FieldElement;
22
+
23
+ //# sourceMappingURL=FieldElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactComposition","require","_FieldElement","_ModelProvider","createDecorator","createDecoratorFactory","FieldElementComponent","decoratorProps","_useModel","useModel","model","modelIds","length","includes","modelId","FieldElement","exports"],"sources":["FieldElement.tsx"],"sourcesContent":["import { createDecoratorFactory } from \"@webiny/react-composition\";\nimport { FieldElement as FieldElementComponent } from \"~/admin/components/ContentEntryForm/FieldElement\";\nimport { useModel } from \"~/admin/components/ModelProvider\";\n\nconst createDecorator = createDecoratorFactory<{ modelIds?: string[] }>()(\n FieldElementComponent,\n decoratorProps => {\n const { model } = useModel();\n\n if (decoratorProps?.modelIds?.length && !decoratorProps.modelIds.includes(model.modelId)) {\n return false;\n }\n\n return true;\n }\n);\n\nexport const FieldElement = {\n createDecorator\n};\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA,IAAMG,eAAe,GAAG,IAAAC,wCAAsB,EAA0B,CAAC,CACrEC,0BAAqB,EACrB,UAAAC,cAAc,EAAI;EACd,IAAAC,SAAA,GAAkB,IAAAC,uBAAQ,EAAC,CAAC;IAApBC,KAAK,GAAAF,SAAA,CAALE,KAAK;EAEb,IAAIH,cAAc,EAAEI,QAAQ,EAAEC,MAAM,IAAI,CAACL,cAAc,CAACI,QAAQ,CAACE,QAAQ,CAACH,KAAK,CAACI,OAAO,CAAC,EAAE;IACtF,OAAO,KAAK;EAChB;EAEA,OAAO,IAAI;AACf,CACJ,CAAC;AAEM,IAAMC,YAAY,GAAG;EACxBX,eAAe,EAAfA;AACJ,CAAC;AAACY,OAAA,CAAAD,YAAA,GAAAA,YAAA"}
@@ -15,9 +15,11 @@ export interface CreateDecoratorParams {
15
15
  name: string;
16
16
  modelIds?: string[];
17
17
  }
18
- export declare const Filter: ((args_0: FilterProps) => JSX.Element | null) & {
19
- original: (args_0: FilterProps) => JSX.Element | null;
18
+ export declare const Filter: import("@webiny/react-composition").GenericComponent<FilterProps> & {
19
+ original: import("@webiny/react-composition").GenericComponent<FilterProps>;
20
20
  originalName: string;
21
21
  } & {
22
- createDecorator: (decorator: import("@webiny/react-composition").Decorator<(args_0: FilterProps) => JSX.Element | null>) => (props: CreateDecoratorParams) => JSX.Element;
22
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(args_0: FilterProps) => JSX.Element | null>) => (props: unknown) => JSX.Element;
23
+ } & {
24
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: React.PropsWithChildren<FilterProps>, context?: any) => React.ReactElement<any, any> | null>) => (props: CreateDecoratorParams) => JSX.Element;
23
25
  };
@@ -29,11 +29,13 @@ export declare const Browser: {
29
29
  OptionsMenuItem: (props: import("@webiny/app-admin").OptionsMenuItemProps) => JSX.Element;
30
30
  OptionsMenuLink: (props: import("@webiny/app-admin").OptionsMenuLinkProps) => JSX.Element;
31
31
  };
32
- Filter: ((args_0: import("./Filter").FilterProps) => JSX.Element | null) & {
33
- original: (args_0: import("./Filter").FilterProps) => JSX.Element | null;
32
+ Filter: import("@webiny/react-composition").GenericComponent<import("./Filter").FilterProps> & {
33
+ original: import("@webiny/react-composition").GenericComponent<import("./Filter").FilterProps>;
34
34
  originalName: string;
35
35
  } & {
36
- createDecorator: (decorator: import("@webiny/react-composition").Decorator<(args_0: import("./Filter").FilterProps) => JSX.Element | null>) => (props: import("./Filter").CreateDecoratorParams) => JSX.Element;
36
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(args_0: import("./Filter").FilterProps) => JSX.Element | null>) => (props: unknown) => JSX.Element;
37
+ } & {
38
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: import("react").PropsWithChildren<import("./Filter").FilterProps>, context?: any) => import("react").ReactElement<any, any> | null>) => (props: import("./Filter").CreateDecoratorParams) => JSX.Element;
37
39
  };
38
40
  FiltersToWhere: ({ converter, modelIds }: import("./FiltersToWhere").FiltersToWhereProps) => JSX.Element | null;
39
41
  FolderAction: (({ modelIds, ...props }: import("./FolderAction").FolderActionProps) => JSX.Element | null) & {
@@ -1,7 +1,5 @@
1
1
  /// <reference types="react" />
2
- export declare const ContentEntryListConfig: (({ children }: {
3
- children: import("react").ReactNode;
4
- }) => JSX.Element) & {
2
+ export declare const ContentEntryListConfig: (({ priority, children }: import("@webiny/react-properties").ConfigProps) => JSX.Element) & {
5
3
  Browser: {
6
4
  BulkAction: (({ name, after, before, remove, modelIds, element }: import("./Browser/BulkAction").BulkActionProps) => JSX.Element | null) & {
7
5
  useButtons: () => import("@webiny/app-admin/components/Buttons/useButtons").ButtonsProviderContext;
@@ -18,11 +16,13 @@ export declare const ContentEntryListConfig: (({ children }: {
18
16
  OptionsMenuItem: (props: import("@webiny/app-admin").OptionsMenuItemProps) => JSX.Element;
19
17
  OptionsMenuLink: (props: import("@webiny/app-admin").OptionsMenuLinkProps) => JSX.Element;
20
18
  };
21
- Filter: ((args_0: import("./Browser/Filter").FilterProps) => JSX.Element | null) & {
22
- original: (args_0: import("./Browser/Filter").FilterProps) => JSX.Element | null;
19
+ Filter: import("@webiny/react-composition").GenericComponent<import("./Browser/Filter").FilterProps> & {
20
+ original: import("@webiny/react-composition").GenericComponent<import("./Browser/Filter").FilterProps>;
23
21
  originalName: string;
24
22
  } & {
25
- createDecorator: (decorator: import("@webiny/react-composition").Decorator<(args_0: import("./Browser/Filter").FilterProps) => JSX.Element | null>) => (props: import("./Browser/Filter").CreateDecoratorParams) => JSX.Element;
23
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(args_0: import("./Browser/Filter").FilterProps) => JSX.Element | null>) => (props: unknown) => JSX.Element;
24
+ } & {
25
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: import("react").PropsWithChildren<import("./Browser/Filter").FilterProps>, context?: any) => import("react").ReactElement<any, any> | null>) => (props: import("./Browser/Filter").CreateDecoratorParams) => JSX.Element;
26
26
  };
27
27
  FiltersToWhere: ({ converter, modelIds }: import("./Browser/FiltersToWhere").FiltersToWhereProps) => JSX.Element | null;
28
28
  FolderAction: (({ modelIds, ...props }: import("./Browser/FolderAction").FolderActionProps) => JSX.Element | null) & {
@@ -7,6 +7,7 @@ export { default as useApolloClient } from "./useApolloClient";
7
7
  export { default as usePermission } from "./usePermission";
8
8
  export { useModel } from "../components/ModelProvider";
9
9
  export { useModelEditor } from "../components/ContentModelEditor";
10
+ export { useParentField, ParentFieldProvider } from "../components/ContentEntryForm/ParentValue";
10
11
  export { useModelField } from "../components/ModelFieldProvider";
11
12
  export { useModelFieldEditor } from "../components/FieldEditor";
12
13
  export { useChangeEntryStatus } from "./useChangeEntryStatus";
@@ -13,12 +13,20 @@ var _exportNames = {
13
13
  usePermission: true,
14
14
  useModel: true,
15
15
  useModelEditor: true,
16
+ useParentField: true,
17
+ ParentFieldProvider: true,
16
18
  useModelField: true,
17
19
  useModelFieldEditor: true,
18
20
  useChangeEntryStatus: true,
19
21
  useDeleteEntry: true,
20
22
  useEntry: true
21
23
  };
24
+ Object.defineProperty(exports, "ParentFieldProvider", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _ParentValue.ParentFieldProvider;
28
+ }
29
+ });
22
30
  Object.defineProperty(exports, "useApolloClient", {
23
31
  enumerable: true,
24
32
  get: function get() {
@@ -85,6 +93,12 @@ Object.defineProperty(exports, "useMutation", {
85
93
  return _useMutation.default;
86
94
  }
87
95
  });
96
+ Object.defineProperty(exports, "useParentField", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _ParentValue.useParentField;
100
+ }
101
+ });
88
102
  Object.defineProperty(exports, "usePermission", {
89
103
  enumerable: true,
90
104
  get: function get() {
@@ -117,6 +131,7 @@ var _useApolloClient = _interopRequireDefault(require("./useApolloClient"));
117
131
  var _usePermission = _interopRequireDefault(require("./usePermission"));
118
132
  var _ModelProvider = require("../components/ModelProvider");
119
133
  var _ContentModelEditor = require("../components/ContentModelEditor");
134
+ var _ParentValue = require("../components/ContentEntryForm/ParentValue");
120
135
  var _ModelFieldProvider = require("../components/ModelFieldProvider");
121
136
  var _FieldEditor = require("../components/FieldEditor");
122
137
  var _useChangeEntryStatus = require("./useChangeEntryStatus");
@@ -1 +1 @@
1
- {"version":3,"names":["_useCms","_interopRequireDefault","require","_useQuery","_useQueryLocale","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useLazyQuery","_useMutation","_useApolloClient","_usePermission","_ModelProvider","_ContentModelEditor","_ModelFieldProvider","_FieldEditor","_useChangeEntryStatus","_useDeleteEntry","_useEntry","_useContentModels","_hooks","_useModelFieldGraphqlContext"],"sources":["index.ts"],"sourcesContent":["export { default as useCms } from \"./useCms\";\nexport { default as useQuery } from \"./useQuery\";\nexport * from \"./useQueryLocale\";\nexport { default as useLazyQuery } from \"./useLazyQuery\";\nexport { default as useMutation } from \"./useMutation\";\nexport { default as useApolloClient } from \"./useApolloClient\";\nexport { default as usePermission } from \"./usePermission\";\nexport { useModel } from \"../components/ModelProvider\";\nexport { useModelEditor } from \"../components/ContentModelEditor\";\nexport { useModelField } from \"../components/ModelFieldProvider\";\nexport { useModelFieldEditor } from \"../components/FieldEditor\";\nexport { useChangeEntryStatus } from \"~/admin/hooks/useChangeEntryStatus\";\nexport { useDeleteEntry } from \"~/admin/hooks/useDeleteEntry\";\nexport { useEntry } from \"~/admin/hooks/useEntry\";\nexport * from \"./useContentModels\";\nexport * from \"~/admin/views/contentEntries/hooks\";\nexport * from \"./useModelFieldGraphqlContext\";\n"],"mappings":"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"}
1
+ {"version":3,"names":["_useCms","_interopRequireDefault","require","_useQuery","_useQueryLocale","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useLazyQuery","_useMutation","_useApolloClient","_usePermission","_ModelProvider","_ContentModelEditor","_ParentValue","_ModelFieldProvider","_FieldEditor","_useChangeEntryStatus","_useDeleteEntry","_useEntry","_useContentModels","_hooks","_useModelFieldGraphqlContext"],"sources":["index.ts"],"sourcesContent":["export { default as useCms } from \"./useCms\";\nexport { default as useQuery } from \"./useQuery\";\nexport * from \"./useQueryLocale\";\nexport { default as useLazyQuery } from \"./useLazyQuery\";\nexport { default as useMutation } from \"./useMutation\";\nexport { default as useApolloClient } from \"./useApolloClient\";\nexport { default as usePermission } from \"./usePermission\";\nexport { useModel } from \"../components/ModelProvider\";\nexport { useModelEditor } from \"../components/ContentModelEditor\";\nexport { useParentField, ParentFieldProvider } from \"../components/ContentEntryForm/ParentValue\";\nexport { useModelField } from \"../components/ModelFieldProvider\";\nexport { useModelFieldEditor } from \"../components/FieldEditor\";\nexport { useChangeEntryStatus } from \"~/admin/hooks/useChangeEntryStatus\";\nexport { useDeleteEntry } from \"~/admin/hooks/useDeleteEntry\";\nexport { useEntry } from \"~/admin/hooks/useEntry\";\nexport * from \"./useContentModels\";\nexport * from \"~/admin/views/contentEntries/hooks\";\nexport * from \"./useModelFieldGraphqlContext\";\n"],"mappings":"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"}
@@ -13,6 +13,7 @@ var _Grid = require("@webiny/ui/Grid");
13
13
  var _Button = require("@webiny/ui/Button");
14
14
  var _FormElementMessage = require("@webiny/ui/FormElementMessage");
15
15
  var _add18px = require("@webiny/app-admin/assets/icons/add-18px.svg");
16
+ var _hooks = require("../../hooks");
16
17
  var _templateObject;
17
18
  var t = _i18n.i18n.ns("app-headless-cms/admin/fields/text");
18
19
  var style = {
@@ -46,24 +47,28 @@ var DynamicSection = function DynamicSection(_ref) {
46
47
  var value = bindField.value,
47
48
  appendValue = bindField.appendValue;
48
49
  var bindFieldValue = value || [];
49
- return /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
50
+ return /*#__PURE__*/_react.default.createElement(_hooks.ParentFieldProvider, {
51
+ value: value,
52
+ path: Bind.parentName
53
+ }, /*#__PURE__*/_react.default.createElement(_Grid.Grid, {
50
54
  className: gridClassName
51
55
  }, typeof renderTitle === "function" && renderTitle(bindFieldValue), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
52
56
  span: 12
53
57
  }, showLabel && field.label && /*#__PURE__*/_react.default.createElement(Label, null, field.label), /*#__PURE__*/_react.default.createElement(FirstFieldBind, null, function (bindProps) {
54
- return (/* We bind it to index "0", so when you start typing, that index in parent array will be populated */
55
- children({
56
- Bind: FirstFieldBind,
57
- field: field,
58
- // "index" contains Bind props for this particular item in the array
59
- // "field" contains Bind props for the main (parent) field.
60
- bind: {
61
- index: bindProps,
62
- field: bindField
63
- },
64
- index: 0 // Binds to "items.0" in the <Form>.
65
- })
66
- );
58
+ return /*#__PURE__*/_react.default.createElement(_hooks.ParentFieldProvider, {
59
+ value: bindProps.value,
60
+ path: FirstFieldBind.parentName
61
+ }, children({
62
+ Bind: FirstFieldBind,
63
+ field: field,
64
+ // "index" contains Bind props for this particular item in the array
65
+ // "field" contains Bind props for the main (parent) field.
66
+ bind: {
67
+ index: bindProps,
68
+ field: bindField
69
+ },
70
+ index: 0 // Binds to "items.0" in the <Form>.
71
+ }));
67
72
  })), bindFieldValue.slice(1).map(function (_, index) {
68
73
  /* We simply increase index, and as you type, the appropriate indexes in the parent array will be updated. */
69
74
  var realIndex = index + 1;
@@ -72,7 +77,10 @@ var DynamicSection = function DynamicSection(_ref) {
72
77
  span: 12,
73
78
  key: realIndex
74
79
  }, /*#__PURE__*/_react.default.createElement(BindField, null, function (bindProps) {
75
- return children({
80
+ return /*#__PURE__*/_react.default.createElement(_hooks.ParentFieldProvider, {
81
+ value: bindProps.value,
82
+ path: BindField.parentName
83
+ }, children({
76
84
  Bind: BindField,
77
85
  field: field,
78
86
  bind: {
@@ -80,7 +88,7 @@ var DynamicSection = function DynamicSection(_ref) {
80
88
  field: bindField
81
89
  },
82
90
  index: realIndex
83
- });
91
+ }));
84
92
  }));
85
93
  }), bindField.validation.isValid === false && /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
86
94
  span: 12
@@ -96,7 +104,7 @@ var DynamicSection = function DynamicSection(_ref) {
96
104
  }
97
105
  }, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
98
106
  icon: /*#__PURE__*/_react.default.createElement(_add18px.ReactComponent, null)
99
- }), t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Add value"]))))));
107
+ }), t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Add value"])))))));
100
108
  })
101
109
  );
102
110
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_emotion","_i18n","_Grid","_Button","_FormElementMessage","_add18px","_templateObject","t","i18n","ns","style","addButton","css","width","borderTop","paddingTop","DynamicSection","_ref","field","getBind","Label","children","_ref$showLabel","showLabel","_ref$emptyValue","emptyValue","renderTitle","gridClassName","Bind","FirstFieldBind","default","createElement","bindField","value","appendValue","bindFieldValue","Grid","className","Cell","span","label","bindProps","bind","index","slice","map","_","realIndex","BindField","key","validation","isValid","FormElementMessage","error","message","ButtonDefault","disabled","undefined","onClick","ButtonIcon","icon","ReactComponent","_taggedTemplateLiteral2","_default","exports"],"sources":["DynamicSection.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { ButtonDefault, ButtonIcon } from \"@webiny/ui/Button\";\nimport { BindComponent, BindComponentRenderProp, CmsModelField } from \"~/types\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { GetBindCallable } from \"~/admin/components/ContentEntryForm/useBind\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst style = {\n addButton: css({\n width: \"100%\",\n borderTop: \"1px solid var(--mdc-theme-background)\",\n paddingTop: 8\n })\n};\n\nexport interface DynamicSectionPropsChildrenParams {\n Bind: BindComponent;\n field: CmsModelField;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n index: number;\n}\n\nexport interface DynamicSectionProps {\n field: CmsModelField;\n getBind: GetBindCallable;\n showLabel?: boolean;\n Label: React.ComponentType<any>;\n children: (params: DynamicSectionPropsChildrenParams) => JSX.Element;\n emptyValue?: any;\n renderTitle?: (value: any[]) => React.ReactElement;\n gridClassName?: string;\n}\n\nconst DynamicSection = ({\n field,\n getBind,\n Label,\n children,\n showLabel = true,\n emptyValue = \"\",\n renderTitle,\n gridClassName\n}: DynamicSectionProps) => {\n const Bind = getBind();\n const FirstFieldBind = getBind(0);\n\n return (\n /* First we mount the top level field, for example: \"items\" */\n <Bind>\n {bindField => {\n /**\n * \"value\" -> an array of items\n * \"appendValue\" -> a callback to add a new value to the top level \"items\" array\n */\n const { value, appendValue } = bindField;\n\n const bindFieldValue: string[] = value || [];\n return (\n <Grid className={gridClassName}>\n {typeof renderTitle === \"function\" && renderTitle(bindFieldValue)}\n <Cell span={12}>\n {/* We always render the first item, for better UX */}\n {showLabel && field.label && <Label>{field.label}</Label>}\n <FirstFieldBind>\n {bindProps =>\n /* We bind it to index \"0\", so when you start typing, that index in parent array will be populated */\n children({\n Bind: FirstFieldBind,\n field,\n // \"index\" contains Bind props for this particular item in the array\n // \"field\" contains Bind props for the main (parent) field.\n bind: {\n index: bindProps,\n field: bindField\n },\n index: 0 // Binds to \"items.0\" in the <Form>.\n })\n }\n </FirstFieldBind>\n </Cell>\n\n {/* Now we skip the first item, because we already rendered it above, and proceed with all other items. */}\n {bindFieldValue.slice(1).map((_, index) => {\n /* We simply increase index, and as you type, the appropriate indexes in the parent array will be updated. */\n const realIndex = index + 1;\n const BindField = getBind(realIndex);\n return (\n <Cell span={12} key={realIndex}>\n <BindField>\n {bindProps =>\n children({\n Bind: BindField,\n field,\n bind: {\n index: bindProps,\n field: bindField\n },\n index: realIndex\n })\n }\n </BindField>\n </Cell>\n );\n })}\n\n {bindField.validation.isValid === false && (\n <Cell span={12}>\n <FormElementMessage error>\n {bindField.validation.message}\n </FormElementMessage>\n </Cell>\n )}\n <Cell span={12} className={style.addButton}>\n <ButtonDefault\n disabled={bindFieldValue[0] === undefined}\n onClick={() => appendValue(emptyValue)}\n >\n <ButtonIcon icon={<AddIcon />} />\n {t`Add value`}\n </ButtonDefault>\n </Cell>\n </Grid>\n );\n }}\n </Bind>\n );\n};\n\nexport default DynamicSection;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_emotion","_i18n","_Grid","_Button","_FormElementMessage","_add18px","_hooks","_templateObject","t","i18n","ns","style","addButton","css","width","borderTop","paddingTop","DynamicSection","_ref","field","getBind","Label","children","_ref$showLabel","showLabel","_ref$emptyValue","emptyValue","renderTitle","gridClassName","Bind","FirstFieldBind","default","createElement","bindField","value","appendValue","bindFieldValue","ParentFieldProvider","path","parentName","Grid","className","Cell","span","label","bindProps","bind","index","slice","map","_","realIndex","BindField","key","validation","isValid","FormElementMessage","error","message","ButtonDefault","disabled","undefined","onClick","ButtonIcon","icon","ReactComponent","_taggedTemplateLiteral2","_default","exports"],"sources":["DynamicSection.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { ButtonDefault, ButtonIcon } from \"@webiny/ui/Button\";\nimport { BindComponent, BindComponentRenderProp, CmsModelField } from \"~/types\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { GetBindCallable } from \"~/admin/components/ContentEntryForm/useBind\";\nimport { ParentFieldProvider } from \"~/admin/hooks\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst style = {\n addButton: css({\n width: \"100%\",\n borderTop: \"1px solid var(--mdc-theme-background)\",\n paddingTop: 8\n })\n};\n\nexport interface DynamicSectionPropsChildrenParams {\n Bind: BindComponent;\n field: CmsModelField;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n index: number;\n}\n\nexport interface DynamicSectionProps {\n field: CmsModelField;\n getBind: GetBindCallable;\n showLabel?: boolean;\n Label: React.ComponentType<any>;\n children: (params: DynamicSectionPropsChildrenParams) => JSX.Element;\n emptyValue?: any;\n renderTitle?: (value: any[]) => React.ReactElement;\n gridClassName?: string;\n}\n\nconst DynamicSection = ({\n field,\n getBind,\n Label,\n children,\n showLabel = true,\n emptyValue = \"\",\n renderTitle,\n gridClassName\n}: DynamicSectionProps) => {\n const Bind = getBind();\n const FirstFieldBind = getBind(0);\n\n return (\n /* First we mount the top level field, for example: \"items\" */\n <Bind>\n {bindField => {\n /**\n * \"value\" -> an array of items\n * \"appendValue\" -> a callback to add a new value to the top level \"items\" array\n */\n const { value, appendValue } = bindField;\n\n const bindFieldValue: string[] = value || [];\n return (\n <ParentFieldProvider value={value} path={Bind.parentName}>\n <Grid className={gridClassName}>\n {typeof renderTitle === \"function\" && renderTitle(bindFieldValue)}\n <Cell span={12}>\n {/* We always render the first item, for better UX */}\n {showLabel && field.label && <Label>{field.label}</Label>}\n\n <FirstFieldBind>\n {bindProps => (\n <ParentFieldProvider\n value={bindProps.value}\n path={FirstFieldBind.parentName}\n >\n {/* We bind it to index \"0\", so when you start typing, that index in parent array will be populated */}\n {children({\n Bind: FirstFieldBind,\n field,\n // \"index\" contains Bind props for this particular item in the array\n // \"field\" contains Bind props for the main (parent) field.\n bind: {\n index: bindProps,\n field: bindField\n },\n index: 0 // Binds to \"items.0\" in the <Form>.\n })}\n </ParentFieldProvider>\n )}\n </FirstFieldBind>\n </Cell>\n\n {/* Now we skip the first item, because we already rendered it above, and proceed with all other items. */}\n {bindFieldValue.slice(1).map((_, index) => {\n /* We simply increase index, and as you type, the appropriate indexes in the parent array will be updated. */\n const realIndex = index + 1;\n const BindField = getBind(realIndex);\n return (\n <Cell span={12} key={realIndex}>\n <BindField>\n {bindProps => (\n <ParentFieldProvider\n value={bindProps.value}\n path={BindField.parentName}\n >\n {children({\n Bind: BindField,\n field,\n bind: {\n index: bindProps,\n field: bindField\n },\n index: realIndex\n })}\n </ParentFieldProvider>\n )}\n </BindField>\n </Cell>\n );\n })}\n\n {bindField.validation.isValid === false && (\n <Cell span={12}>\n <FormElementMessage error>\n {bindField.validation.message}\n </FormElementMessage>\n </Cell>\n )}\n <Cell span={12} className={style.addButton}>\n <ButtonDefault\n disabled={bindFieldValue[0] === undefined}\n onClick={() => appendValue(emptyValue)}\n >\n <ButtonIcon icon={<AddIcon />} />\n {t`Add value`}\n </ButtonDefault>\n </Cell>\n </Grid>\n </ParentFieldProvider>\n );\n }}\n </Bind>\n );\n};\n\nexport default DynamicSection;\n"],"mappings":"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"}
@@ -63,7 +63,7 @@ var AddTemplateButton = function AddTemplateButton(props) {
63
63
  onClick: browseTemplates
64
64
  }, "+ Add a template"), /*#__PURE__*/_react.default.createElement(Info, null, /*#__PURE__*/_react.default.createElement(_info.ReactComponent, null), /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
65
65
  use: "caption"
66
- }, "Click here to learn how templates and dynamic zones work"))));
66
+ }, "Click here to learn how templates and dynamic zones work."))));
67
67
  };
68
68
  exports.AddTemplateButton = AddTemplateButton;
69
69
  var AddTemplateIcon = function AddTemplateIcon(props) {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_styled","_interopRequireDefault","_info","_add_circle_outline","_Typography","_TemplateGallery","_Button","AddIconContainer","styled","label","target","AddButtonContainer","Info","useAddTemplate","params","_useState","useState","_useState2","_slicedToArray2","default","showGallery","setShowGallery","browseTemplates","onTemplate","template","onGalleryClose","AddTemplateButton","props","_useAddTemplate","createElement","TemplateGallery","onClose","Fragment","ButtonSecondary","onClick","ReactComponent","Typography","use","exports","AddTemplateIcon","_useAddTemplate2","IconButton","icon"],"sources":["AddTemplate.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { ReactComponent as InfoIcon } from \"@material-design-icons/svg/outlined/info.svg\";\nimport { ReactComponent as AddIcon } from \"@material-design-icons/svg/round/add_circle_outline.svg\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { CmsDynamicZoneTemplate } from \"~/types\";\nimport { TemplateGallery } from \"./TemplateGallery\";\nimport { IconButton, ButtonSecondary } from \"@webiny/ui/Button\";\n\nconst AddIconContainer = styled.div`\n text-align: center;\n padding-top: 3px;\n`;\n\nconst AddButtonContainer = styled.div`\n text-align: center;\n margin-top: 20px;\n\n :first-of-type {\n margin-top: 0;\n }\n`;\n\nconst Info = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 5px;\n\n > svg {\n width: 20px;\n margin-right: 5px;\n }\n`;\n\ninterface UseAddTemplateParams {\n onTemplate: (template: CmsDynamicZoneTemplate) => void;\n}\n\nfunction useAddTemplate(params: UseAddTemplateParams) {\n const [showGallery, setShowGallery] = useState(false);\n\n const browseTemplates = () => {\n setShowGallery(true);\n };\n\n const onTemplate = (template: CmsDynamicZoneTemplate) => {\n params.onTemplate(template);\n onGalleryClose();\n };\n\n const onGalleryClose = () => {\n setShowGallery(false);\n };\n\n return {\n showGallery,\n browseTemplates,\n onTemplate,\n onGalleryClose\n };\n}\n\ninterface AddTemplateProps {\n label?: string;\n onTemplate: UseAddTemplateParams[\"onTemplate\"];\n}\n\nexport const AddTemplateButton = (props: AddTemplateProps) => {\n const { showGallery, onTemplate, browseTemplates, onGalleryClose } = useAddTemplate({\n onTemplate: props.onTemplate\n });\n\n return (\n <AddButtonContainer>\n {showGallery ? (\n <TemplateGallery onTemplate={onTemplate} onClose={onGalleryClose} />\n ) : (\n <>\n <ButtonSecondary onClick={browseTemplates}>+ Add a template</ButtonSecondary>\n <Info>\n <InfoIcon />\n <Typography use={\"caption\"}>\n Click here to learn how templates and dynamic zones work\n </Typography>\n </Info>\n </>\n )}\n </AddButtonContainer>\n );\n};\n\nexport const AddTemplateIcon = (props: AddTemplateProps) => {\n const { showGallery, onTemplate, browseTemplates, onGalleryClose } = useAddTemplate({\n onTemplate: props.onTemplate\n });\n\n return (\n <AddIconContainer>\n {showGallery ? (\n <TemplateGallery onTemplate={onTemplate} onClose={onGalleryClose} />\n ) : (\n <IconButton onClick={browseTemplates} icon={<AddIcon />} />\n )}\n </AddIconContainer>\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,mBAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAEA,IAAAM,gBAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAEA,IAAMQ,gBAAgB,oBAAGC,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,wCAG9B;AAED,IAAMC,kBAAkB,oBAAGH,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,qEAOhC;AAED,IAAME,IAAI,oBAAGJ,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,+GAUlB;AAMD,SAASG,cAAcA,CAACC,MAA4B,EAAE;EAClD,IAAAC,SAAA,GAAsC,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAAC,UAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,SAAA;IAA9CK,WAAW,GAAAH,UAAA;IAAEI,cAAc,GAAAJ,UAAA;EAElC,IAAMK,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS;IAC1BD,cAAc,CAAC,IAAI,CAAC;EACxB,CAAC;EAED,IAAME,UAAU,GAAG,SAAbA,UAAUA,CAAIC,QAAgC,EAAK;IACrDV,MAAM,CAACS,UAAU,CAACC,QAAQ,CAAC;IAC3BC,cAAc,CAAC,CAAC;EACpB,CAAC;EAED,IAAMA,cAAc,GAAG,SAAjBA,cAAcA,CAAA,EAAS;IACzBJ,cAAc,CAAC,KAAK,CAAC;EACzB,CAAC;EAED,OAAO;IACHD,WAAW,EAAXA,WAAW;IACXE,eAAe,EAAfA,eAAe;IACfC,UAAU,EAAVA,UAAU;IACVE,cAAc,EAAdA;EACJ,CAAC;AACL;AAOO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,KAAuB,EAAK;EAC1D,IAAAC,eAAA,GAAqEf,cAAc,CAAC;MAChFU,UAAU,EAAEI,KAAK,CAACJ;IACtB,CAAC,CAAC;IAFMH,WAAW,GAAAQ,eAAA,CAAXR,WAAW;IAAEG,UAAU,GAAAK,eAAA,CAAVL,UAAU;IAAED,eAAe,GAAAM,eAAA,CAAfN,eAAe;IAAEG,cAAc,GAAAG,eAAA,CAAdH,cAAc;EAIhE,oBACI5B,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAAClB,kBAAkB,QACdS,WAAW,gBACRvB,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAACxB,gBAAA,CAAAyB,eAAe;IAACP,UAAU,EAAEA,UAAW;IAACQ,OAAO,EAAEN;EAAe,CAAE,CAAC,gBAEpE5B,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAAAhC,MAAA,CAAAsB,OAAA,CAAAa,QAAA,qBACInC,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAACvB,OAAA,CAAA2B,eAAe;IAACC,OAAO,EAAEZ;EAAgB,GAAC,kBAAiC,CAAC,eAC7EzB,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAACjB,IAAI,qBACDf,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAAC3B,KAAA,CAAAiC,cAAQ,MAAE,CAAC,eACZtC,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAACzB,WAAA,CAAAgC,UAAU;IAACC,GAAG,EAAE;EAAU,GAAC,0DAEhB,CACV,CACR,CAEU,CAAC;AAE7B,CAAC;AAACC,OAAA,CAAAZ,iBAAA,GAAAA,iBAAA;AAEK,IAAMa,eAAe,GAAG,SAAlBA,eAAeA,CAAIZ,KAAuB,EAAK;EACxD,IAAAa,gBAAA,GAAqE3B,cAAc,CAAC;MAChFU,UAAU,EAAEI,KAAK,CAACJ;IACtB,CAAC,CAAC;IAFMH,WAAW,GAAAoB,gBAAA,CAAXpB,WAAW;IAAEG,UAAU,GAAAiB,gBAAA,CAAVjB,UAAU;IAAED,eAAe,GAAAkB,gBAAA,CAAflB,eAAe;IAAEG,cAAc,GAAAe,gBAAA,CAAdf,cAAc;EAIhE,oBACI5B,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAACtB,gBAAgB,QACZa,WAAW,gBACRvB,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAACxB,gBAAA,CAAAyB,eAAe;IAACP,UAAU,EAAEA,UAAW;IAACQ,OAAO,EAAEN;EAAe,CAAE,CAAC,gBAEpE5B,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAACvB,OAAA,CAAAmC,UAAU;IAACP,OAAO,EAAEZ,eAAgB;IAACoB,IAAI,eAAE7C,MAAA,CAAAsB,OAAA,CAAAU,aAAA,CAAC1B,mBAAA,CAAAgC,cAAO,MAAE;EAAE,CAAE,CAEhD,CAAC;AAE3B,CAAC;AAACG,OAAA,CAAAC,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_styled","_interopRequireDefault","_info","_add_circle_outline","_Typography","_TemplateGallery","_Button","AddIconContainer","styled","label","target","AddButtonContainer","Info","useAddTemplate","params","_useState","useState","_useState2","_slicedToArray2","default","showGallery","setShowGallery","browseTemplates","onTemplate","template","onGalleryClose","AddTemplateButton","props","_useAddTemplate","createElement","TemplateGallery","onClose","Fragment","ButtonSecondary","onClick","ReactComponent","Typography","use","exports","AddTemplateIcon","_useAddTemplate2","IconButton","icon"],"sources":["AddTemplate.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { ReactComponent as InfoIcon } from \"@material-design-icons/svg/outlined/info.svg\";\nimport { ReactComponent as AddIcon } from \"@material-design-icons/svg/round/add_circle_outline.svg\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { CmsDynamicZoneTemplate } from \"~/types\";\nimport { TemplateGallery } from \"./TemplateGallery\";\nimport { IconButton, ButtonSecondary } from \"@webiny/ui/Button\";\n\nconst AddIconContainer = styled.div`\n text-align: center;\n padding-top: 3px;\n`;\n\nconst AddButtonContainer = styled.div`\n text-align: center;\n margin-top: 20px;\n\n :first-of-type {\n margin-top: 0;\n }\n`;\n\nconst Info = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 5px;\n\n > svg {\n width: 20px;\n margin-right: 5px;\n }\n`;\n\ninterface UseAddTemplateParams {\n onTemplate: (template: CmsDynamicZoneTemplate) => void;\n}\n\nfunction useAddTemplate(params: UseAddTemplateParams) {\n const [showGallery, setShowGallery] = useState(false);\n\n const browseTemplates = () => {\n setShowGallery(true);\n };\n\n const onTemplate = (template: CmsDynamicZoneTemplate) => {\n params.onTemplate(template);\n onGalleryClose();\n };\n\n const onGalleryClose = () => {\n setShowGallery(false);\n };\n\n return {\n showGallery,\n browseTemplates,\n onTemplate,\n onGalleryClose\n };\n}\n\ninterface AddTemplateProps {\n label?: string;\n onTemplate: UseAddTemplateParams[\"onTemplate\"];\n}\n\nexport const AddTemplateButton = (props: AddTemplateProps) => {\n const { showGallery, onTemplate, browseTemplates, onGalleryClose } = useAddTemplate({\n onTemplate: props.onTemplate\n });\n\n return (\n <AddButtonContainer>\n {showGallery ? (\n <TemplateGallery onTemplate={onTemplate} onClose={onGalleryClose} />\n ) : (\n <>\n <ButtonSecondary onClick={browseTemplates}>+ Add a template</ButtonSecondary>\n <Info>\n <InfoIcon />\n <Typography use={\"caption\"}>\n Click here to learn how templates and dynamic zones work.\n </Typography>\n </Info>\n </>\n )}\n </AddButtonContainer>\n );\n};\n\nexport const AddTemplateIcon = (props: AddTemplateProps) => {\n const { showGallery, onTemplate, browseTemplates, onGalleryClose } = useAddTemplate({\n onTemplate: props.onTemplate\n });\n\n return (\n <AddIconContainer>\n {showGallery ? (\n <TemplateGallery onTemplate={onTemplate} onClose={onGalleryClose} />\n ) : (\n <IconButton onClick={browseTemplates} icon={<AddIcon />} />\n )}\n </AddIconContainer>\n );\n};\n"],"mappings":"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"}
@@ -17,13 +17,23 @@ export interface MultiValueItemContainerProps {
17
17
  template: CmsDynamicZoneTemplate;
18
18
  children: React.ReactNode;
19
19
  }
20
- export declare const MultiValueItemContainer: import("@webiny/react-composition").DecoratableComponent<(args_0: MultiValueItemContainerProps) => JSX.Element | null>;
20
+ export declare const MultiValueItemContainer: import("@webiny/react-composition").GenericComponent<MultiValueItemContainerProps> & {
21
+ original: import("@webiny/react-composition").GenericComponent<MultiValueItemContainerProps>;
22
+ originalName: string;
23
+ } & {
24
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: MultiValueItemContainerProps) => JSX.Element | null>) => (props: unknown) => JSX.Element;
25
+ };
21
26
  export interface MultiValueItemItemProps {
22
27
  template: CmsDynamicZoneTemplate;
23
28
  contentModel: CmsModel;
24
29
  Bind: BindComponent;
25
30
  }
26
- export declare const MultiValueItem: import("@webiny/react-composition").DecoratableComponent<(props: MultiValueItemItemProps) => JSX.Element | null>;
31
+ export declare const MultiValueItem: import("@webiny/react-composition").GenericComponent<MultiValueItemItemProps> & {
32
+ original: import("@webiny/react-composition").GenericComponent<MultiValueItemItemProps>;
33
+ originalName: string;
34
+ } & {
35
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: MultiValueItemItemProps) => JSX.Element | null>) => (props: unknown) => JSX.Element;
36
+ };
27
37
  interface TemplateValue {
28
38
  _templateId: string;
29
39
  [key: string]: any;
@@ -31,7 +41,12 @@ interface TemplateValue {
31
41
  export interface MultiValueContainerProps extends MultiValueDynamicZoneProps {
32
42
  children: React.ReactNode;
33
43
  }
34
- export declare const MultiValueContainer: import("@webiny/react-composition").DecoratableComponent<(props: React.PropsWithChildren<MultiValueContainerProps>, context?: any) => React.ReactElement<any, any> | null>;
44
+ export declare const MultiValueContainer: import("@webiny/react-composition").GenericComponent<MultiValueContainerProps> & {
45
+ original: import("@webiny/react-composition").GenericComponent<MultiValueContainerProps>;
46
+ originalName: string;
47
+ } & {
48
+ createDecorator: (decorator: import("@webiny/react-composition").Decorator<(props: MultiValueContainerProps) => JSX.Element | null>) => (props: unknown) => JSX.Element;
49
+ };
35
50
  interface MultiValueDynamicZoneProps {
36
51
  field: CmsModelField;
37
52
  bind: BindComponentRenderProp;
@@ -18,6 +18,7 @@ var _TemplateIcon = require("./TemplateIcon");
18
18
  var _hooks = require("../../../hooks");
19
19
  var _Fields = require("../../../components/ContentEntryForm/Fields");
20
20
  var _reactComposition = require("@webiny/react-composition");
21
+ var _TemplateProvider = require("./TemplateProvider");
21
22
  var BottomMargin = /*#__PURE__*/(0, _styled.default)("div", {
22
23
  label: "BottomMargin",
23
24
  target: "e1mhu37c0"
@@ -40,12 +41,14 @@ var MultiValueItem = (0, _reactComposition.makeDecoratable)("MultiValueItem", fu
40
41
  var template = props.template,
41
42
  Bind = props.Bind,
42
43
  contentModel = props.contentModel;
43
- return /*#__PURE__*/_react.default.createElement(_Fields.Fields, {
44
+ return /*#__PURE__*/_react.default.createElement(_TemplateProvider.TemplateProvider, {
45
+ template: template
46
+ }, /*#__PURE__*/_react.default.createElement(_Fields.Fields, {
44
47
  fields: template.fields,
45
48
  layout: template.layout || [],
46
49
  contentModel: contentModel,
47
50
  Bind: Bind
48
- });
51
+ }));
49
52
  });
50
53
  exports.MultiValueItem = MultiValueItem;
51
54
  var TemplateValueForm = function TemplateValueForm(_ref2) {
@@ -123,12 +126,20 @@ var MultiValueDynamicZone = function MultiValueDynamicZone(props) {
123
126
  };
124
127
  var values = bind.value || [];
125
128
  var hasValues = values.length > 0;
126
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, hasValues ? /*#__PURE__*/_react.default.createElement(MultiValueContainer, props, values.map(function (value, index) {
127
- return /*#__PURE__*/_react.default.createElement(TemplateValueForm, {
129
+ var Bind = getBind();
130
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, hasValues ? /*#__PURE__*/_react.default.createElement(_hooks.ParentFieldProvider, {
131
+ value: bind.value,
132
+ path: Bind.parentName
133
+ }, /*#__PURE__*/_react.default.createElement(MultiValueContainer, props, values.map(function (value, index) {
134
+ var Bind = getBind(index);
135
+ return /*#__PURE__*/_react.default.createElement(_hooks.ParentFieldProvider, {
136
+ value: value,
128
137
  key: index,
138
+ path: Bind.parentName
139
+ }, /*#__PURE__*/_react.default.createElement(TemplateValueForm, {
129
140
  value: value,
130
141
  contentModel: contentModel,
131
- Bind: getBind(index),
142
+ Bind: Bind,
132
143
  isFirst: index === 0,
133
144
  isLast: index === values.length - 1,
134
145
  onMoveUp: function onMoveUp() {
@@ -143,8 +154,8 @@ var MultiValueDynamicZone = function MultiValueDynamicZone(props) {
143
154
  onClone: function onClone() {
144
155
  return cloneValue(index);
145
156
  }
146
- });
147
- })) : null, hasValues ? /*#__PURE__*/_react.default.createElement(_AddTemplate.AddTemplateIcon, {
157
+ }));
158
+ }))) : null, hasValues ? /*#__PURE__*/_react.default.createElement(_AddTemplate.AddTemplateIcon, {
148
159
  onTemplate: onTemplate
149
160
  }) : /*#__PURE__*/_react.default.createElement(BottomMargin, null, /*#__PURE__*/_react.default.createElement(_AddTemplate.AddTemplateButton, {
150
161
  onTemplate: onTemplate
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_styled","_cloneDeep","_Accordion","_delete_outline","_library_add","_expand_less","_expand_more","_AddTemplate","_TemplateIcon","_hooks","_Fields","_reactComposition","BottomMargin","styled","label","target","MultiValueItemContainer","makeDecoratable","_ref","title","description","icon","actions","children","default","createElement","AccordionItem","exports","MultiValueItem","props","template","Bind","contentModel","Fields","fields","layout","TemplateValueForm","_ref2","value","isLast","isFirst","onMoveUp","onMoveDown","onDelete","onClone","_useModelField","useModelField","field","templates","settings","find","tpl","id","_templateId","name","TemplateIcon","Actions","Action","ReactComponent","onClick","disabled","Divider","MultiValueContainer","_ref3","Accordion","Fragment","MultiValueDynamicZone","bind","getBind","onTemplate","appendValue","cloneValue","index","newValue","cloneDeep","values","hasValues","length","map","key","moveValueUp","moveValueDown","removeValue","AddTemplateIcon","AddTemplateButton"],"sources":["MultiValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete_outline.svg\";\nimport { ReactComponent as CloneIcon } from \"@material-design-icons/svg/outlined/library_add.svg\";\nimport { ReactComponent as ArrowUpIcon } from \"@material-design-icons/svg/round/expand_less.svg\";\nimport { ReactComponent as ArrowDownIcon } from \"@material-design-icons/svg/round/expand_more.svg\";\nimport { AddTemplateButton, AddTemplateIcon } from \"./AddTemplate\";\nimport { TemplateIcon } from \"./TemplateIcon\";\nimport { useModelField } from \"~/admin/hooks\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport {\n BindComponent,\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsModelFieldRendererProps,\n CmsModel,\n CmsModelField\n} from \"~/types\";\nimport { makeDecoratable } from \"@webiny/react-composition\";\n\nconst BottomMargin = styled.div`\n margin-bottom: 20px;\n`;\n\ntype GetBind = CmsModelFieldRendererProps[\"getBind\"];\n\nexport interface MultiValueItemContainerProps {\n value: TemplateValue;\n contentModel: CmsModel;\n isFirst: boolean;\n isLast: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: () => void;\n title: React.ReactNode;\n description: string;\n icon: JSX.Element;\n actions: JSX.Element;\n template: CmsDynamicZoneTemplate;\n children: React.ReactNode;\n}\n\nexport const MultiValueItemContainer = makeDecoratable(\n \"MultiValueItemContainer\",\n ({ title, description, icon, actions, children }: MultiValueItemContainerProps) => {\n return (\n <AccordionItem title={title} description={description} icon={icon} actions={actions}>\n {children}\n </AccordionItem>\n );\n }\n);\n\nexport interface MultiValueItemItemProps {\n template: CmsDynamicZoneTemplate;\n contentModel: CmsModel;\n Bind: BindComponent;\n}\n\nexport const MultiValueItem = makeDecoratable(\n \"MultiValueItem\",\n (props: MultiValueItemItemProps) => {\n const { template, Bind, contentModel } = props;\n\n return (\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n );\n }\n);\n\ninterface TemplateValue {\n _templateId: string;\n [key: string]: any;\n}\n\ninterface TemplateValueFormProps {\n value: TemplateValue;\n contentModel: CmsModel;\n Bind: BindComponent;\n isFirst: boolean;\n isLast: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: () => void;\n}\n\nconst TemplateValueForm = ({\n value,\n contentModel,\n Bind,\n isLast,\n isFirst,\n onMoveUp,\n onMoveDown,\n onDelete,\n onClone\n}: TemplateValueFormProps) => {\n const { field } = useModelField();\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = templates.find(\n tpl => tpl.id === value._templateId\n );\n\n if (!template) {\n return null;\n }\n\n return (\n <MultiValueItemContainer\n value={value}\n contentModel={contentModel}\n onClone={onClone}\n isFirst={isFirst}\n isLast={isLast}\n onDelete={onDelete}\n onMoveUp={onMoveUp}\n onMoveDown={onMoveDown}\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n template={template}\n actions={\n <AccordionItem.Actions>\n <AccordionItem.Action\n icon={<ArrowUpIcon />}\n onClick={onMoveUp}\n disabled={isFirst}\n />\n <AccordionItem.Action\n icon={<ArrowDownIcon />}\n onClick={onMoveDown}\n disabled={isLast}\n />\n <AccordionItem.Divider />\n <AccordionItem.Action icon={<CloneIcon />} onClick={onClone} />\n <AccordionItem.Action icon={<DeleteIcon />} onClick={onDelete} />\n </AccordionItem.Actions>\n }\n >\n <MultiValueItem template={template} contentModel={contentModel} Bind={Bind} />\n </MultiValueItemContainer>\n );\n};\n\nexport interface MultiValueContainerProps extends MultiValueDynamicZoneProps {\n children: React.ReactNode;\n}\n\nexport const MultiValueContainer = makeDecoratable<\n React.FunctionComponent<MultiValueContainerProps>\n>(\"MultiValueContainer\", ({ children }) => {\n return (\n <Accordion>\n <>{children}</>\n </Accordion>\n );\n});\n\ninterface MultiValueDynamicZoneProps {\n // TODO: this prop might be useless, because we now have a `useModelField` hook.\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\nexport const MultiValueDynamicZone = (props: MultiValueDynamicZoneProps) => {\n const { bind, getBind, contentModel } = props;\n const onTemplate = (template: CmsDynamicZoneTemplate) => {\n bind.appendValue({ _templateId: template.id });\n };\n\n const cloneValue = (index: number) => {\n const newValue = cloneDeep(bind.value[index]);\n bind.appendValue(newValue, index + 1);\n };\n\n const values: TemplateValue[] = bind.value || [];\n const hasValues = values.length > 0;\n\n return (\n <>\n {hasValues ? (\n <MultiValueContainer {...props}>\n {values.map((value, index) => (\n <TemplateValueForm\n key={index}\n value={value}\n contentModel={contentModel}\n Bind={getBind(index)}\n isFirst={index === 0}\n isLast={index === values.length - 1}\n onMoveUp={() => bind.moveValueUp(index)}\n onMoveDown={() => bind.moveValueDown(index)}\n onDelete={() => bind.removeValue(index)}\n onClone={() => cloneValue(index)}\n />\n ))}\n </MultiValueContainer>\n ) : null}\n {hasValues ? (\n <AddTemplateIcon onTemplate={onTemplate} />\n ) : (\n <BottomMargin>\n <AddTemplateButton onTemplate={onTemplate} />\n </BottomMargin>\n )}\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_styled","_cloneDeep","_Accordion","_delete_outline","_library_add","_expand_less","_expand_more","_AddTemplate","_TemplateIcon","_hooks","_Fields","_reactComposition","_TemplateProvider","BottomMargin","styled","label","target","MultiValueItemContainer","makeDecoratable","_ref","title","description","icon","actions","children","default","createElement","AccordionItem","exports","MultiValueItem","props","template","Bind","contentModel","TemplateProvider","Fields","fields","layout","TemplateValueForm","_ref2","value","isLast","isFirst","onMoveUp","onMoveDown","onDelete","onClone","_useModelField","useModelField","field","templates","settings","find","tpl","id","_templateId","name","TemplateIcon","Actions","Action","ReactComponent","onClick","disabled","Divider","MultiValueContainer","_ref3","Accordion","Fragment","MultiValueDynamicZone","bind","getBind","onTemplate","appendValue","cloneValue","index","newValue","cloneDeep","values","hasValues","length","ParentFieldProvider","path","parentName","map","key","moveValueUp","moveValueDown","removeValue","AddTemplateIcon","AddTemplateButton"],"sources":["MultiValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete_outline.svg\";\nimport { ReactComponent as CloneIcon } from \"@material-design-icons/svg/outlined/library_add.svg\";\nimport { ReactComponent as ArrowUpIcon } from \"@material-design-icons/svg/round/expand_less.svg\";\nimport { ReactComponent as ArrowDownIcon } from \"@material-design-icons/svg/round/expand_more.svg\";\nimport { AddTemplateButton, AddTemplateIcon } from \"./AddTemplate\";\nimport { TemplateIcon } from \"./TemplateIcon\";\nimport { ParentFieldProvider, useModelField } from \"~/admin/hooks\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport {\n BindComponent,\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsModelFieldRendererProps,\n CmsModel,\n CmsModelField\n} from \"~/types\";\nimport { makeDecoratable } from \"@webiny/react-composition\";\nimport { TemplateProvider } from \"~/admin/plugins/fieldRenderers/dynamicZone/TemplateProvider\";\n\nconst BottomMargin = styled.div`\n margin-bottom: 20px;\n`;\n\ntype GetBind = CmsModelFieldRendererProps[\"getBind\"];\n\nexport interface MultiValueItemContainerProps {\n value: TemplateValue;\n contentModel: CmsModel;\n isFirst: boolean;\n isLast: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: () => void;\n title: React.ReactNode;\n description: string;\n icon: JSX.Element;\n actions: JSX.Element;\n template: CmsDynamicZoneTemplate;\n children: React.ReactNode;\n}\n\nexport const MultiValueItemContainer = makeDecoratable(\n \"MultiValueItemContainer\",\n ({ title, description, icon, actions, children }: MultiValueItemContainerProps) => {\n return (\n <AccordionItem title={title} description={description} icon={icon} actions={actions}>\n {children}\n </AccordionItem>\n );\n }\n);\n\nexport interface MultiValueItemItemProps {\n template: CmsDynamicZoneTemplate;\n contentModel: CmsModel;\n Bind: BindComponent;\n}\n\nexport const MultiValueItem = makeDecoratable(\n \"MultiValueItem\",\n (props: MultiValueItemItemProps) => {\n const { template, Bind, contentModel } = props;\n\n return (\n <TemplateProvider template={template}>\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </TemplateProvider>\n );\n }\n);\n\ninterface TemplateValue {\n _templateId: string;\n [key: string]: any;\n}\n\ninterface TemplateValueFormProps {\n value: TemplateValue;\n contentModel: CmsModel;\n Bind: BindComponent;\n isFirst: boolean;\n isLast: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: () => void;\n}\n\nconst TemplateValueForm = ({\n value,\n contentModel,\n Bind,\n isLast,\n isFirst,\n onMoveUp,\n onMoveDown,\n onDelete,\n onClone\n}: TemplateValueFormProps) => {\n const { field } = useModelField();\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = templates.find(\n tpl => tpl.id === value._templateId\n );\n\n if (!template) {\n return null;\n }\n\n return (\n <MultiValueItemContainer\n value={value}\n contentModel={contentModel}\n onClone={onClone}\n isFirst={isFirst}\n isLast={isLast}\n onDelete={onDelete}\n onMoveUp={onMoveUp}\n onMoveDown={onMoveDown}\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n template={template}\n actions={\n <AccordionItem.Actions>\n <AccordionItem.Action\n icon={<ArrowUpIcon />}\n onClick={onMoveUp}\n disabled={isFirst}\n />\n <AccordionItem.Action\n icon={<ArrowDownIcon />}\n onClick={onMoveDown}\n disabled={isLast}\n />\n <AccordionItem.Divider />\n <AccordionItem.Action icon={<CloneIcon />} onClick={onClone} />\n <AccordionItem.Action icon={<DeleteIcon />} onClick={onDelete} />\n </AccordionItem.Actions>\n }\n >\n <MultiValueItem template={template} contentModel={contentModel} Bind={Bind} />\n </MultiValueItemContainer>\n );\n};\n\nexport interface MultiValueContainerProps extends MultiValueDynamicZoneProps {\n children: React.ReactNode;\n}\n\nexport const MultiValueContainer = makeDecoratable(\n \"MultiValueContainer\",\n ({ children }: MultiValueContainerProps) => {\n return (\n <Accordion>\n <>{children}</>\n </Accordion>\n );\n }\n);\n\ninterface MultiValueDynamicZoneProps {\n // TODO: this prop might be useless, because we now have a `useModelField` hook.\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\nexport const MultiValueDynamicZone = (props: MultiValueDynamicZoneProps) => {\n const { bind, getBind, contentModel } = props;\n const onTemplate = (template: CmsDynamicZoneTemplate) => {\n bind.appendValue({ _templateId: template.id });\n };\n\n const cloneValue = (index: number) => {\n const newValue = cloneDeep(bind.value[index]);\n bind.appendValue(newValue, index + 1);\n };\n\n const values: TemplateValue[] = bind.value || [];\n const hasValues = values.length > 0;\n\n const Bind = getBind();\n\n return (\n <>\n {hasValues ? (\n <ParentFieldProvider value={bind.value} path={Bind.parentName}>\n <MultiValueContainer {...props}>\n {values.map((value, index) => {\n const Bind = getBind(index);\n\n return (\n <ParentFieldProvider\n value={value}\n key={index}\n path={Bind.parentName}\n >\n <TemplateValueForm\n value={value}\n contentModel={contentModel}\n Bind={Bind}\n isFirst={index === 0}\n isLast={index === values.length - 1}\n onMoveUp={() => bind.moveValueUp(index)}\n onMoveDown={() => bind.moveValueDown(index)}\n onDelete={() => bind.removeValue(index)}\n onClone={() => cloneValue(index)}\n />\n </ParentFieldProvider>\n );\n })}\n </MultiValueContainer>\n </ParentFieldProvider>\n ) : null}\n {hasValues ? (\n <AddTemplateIcon onTemplate={onTemplate} />\n ) : (\n <BottomMargin>\n <AddTemplateButton onTemplate={onTemplate} />\n </BottomMargin>\n )}\n </>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;AACA,IAAAQ,YAAA,GAAAR,OAAA;AACA,IAAAS,aAAA,GAAAT,OAAA;AACA,IAAAU,MAAA,GAAAV,OAAA;AACA,IAAAW,OAAA,GAAAX,OAAA;AASA,IAAAY,iBAAA,GAAAZ,OAAA;AACA,IAAAa,iBAAA,GAAAb,OAAA;AAEA,IAAMc,YAAY,oBAAGC,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,yBAE1B;AAqBM,IAAMC,uBAAuB,GAAG,IAAAC,iCAAe,EAClD,yBAAyB,EACzB,UAAAC,IAAA,EAAmF;EAAA,IAAhFC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAEC,WAAW,GAAAF,IAAA,CAAXE,WAAW;IAAEC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IAAEC,OAAO,GAAAJ,IAAA,CAAPI,OAAO;IAAEC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;EAC1C,oBACI3B,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACxB,UAAA,CAAAyB,aAAa;IAACP,KAAK,EAAEA,KAAM;IAACC,WAAW,EAAEA,WAAY;IAACC,IAAI,EAAEA,IAAK;IAACC,OAAO,EAAEA;EAAQ,GAC/EC,QACU,CAAC;AAExB,CACJ,CAAC;AAACI,OAAA,CAAAX,uBAAA,GAAAA,uBAAA;AAQK,IAAMY,cAAc,GAAG,IAAAX,iCAAe,EACzC,gBAAgB,EAChB,UAACY,KAA8B,EAAK;EAChC,IAAQC,QAAQ,GAAyBD,KAAK,CAAtCC,QAAQ;IAAEC,IAAI,GAAmBF,KAAK,CAA5BE,IAAI;IAAEC,YAAY,GAAKH,KAAK,CAAtBG,YAAY;EAEpC,oBACIpC,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACd,iBAAA,CAAAsB,gBAAgB;IAACH,QAAQ,EAAEA;EAAS,gBACjClC,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAAChB,OAAA,CAAAyB,MAAM;IACHC,MAAM,EAAEL,QAAQ,CAACK,MAAO;IACxBC,MAAM,EAAEN,QAAQ,CAACM,MAAM,IAAI,EAAG;IAC9BJ,YAAY,EAAEA,YAAa;IAC3BD,IAAI,EAAEA;EAAK,CACd,CACa,CAAC;AAE3B,CACJ,CAAC;AAACJ,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAmBF,IAAMS,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,KAAA,EAUO;EAAA,IAT1BC,KAAK,GAAAD,KAAA,CAALC,KAAK;IACLP,YAAY,GAAAM,KAAA,CAAZN,YAAY;IACZD,IAAI,GAAAO,KAAA,CAAJP,IAAI;IACJS,MAAM,GAAAF,KAAA,CAANE,MAAM;IACNC,OAAO,GAAAH,KAAA,CAAPG,OAAO;IACPC,QAAQ,GAAAJ,KAAA,CAARI,QAAQ;IACRC,UAAU,GAAAL,KAAA,CAAVK,UAAU;IACVC,QAAQ,GAAAN,KAAA,CAARM,QAAQ;IACRC,OAAO,GAAAP,KAAA,CAAPO,OAAO;EAEP,IAAAC,cAAA,GAAkB,IAAAC,oBAAa,EAAC,CAAC;IAAzBC,KAAK,GAAAF,cAAA,CAALE,KAAK;EACb,IAAMC,SAAS,GAAGD,KAAK,CAACE,QAAQ,EAAED,SAAS,IAAI,EAAE;EAEjD,IAAMnB,QAA4C,GAAGmB,SAAS,CAACE,IAAI,CAC/D,UAAAC,GAAG;IAAA,OAAIA,GAAG,CAACC,EAAE,KAAKd,KAAK,CAACe,WAAW;EAAA,CACvC,CAAC;EAED,IAAI,CAACxB,QAAQ,EAAE;IACX,OAAO,IAAI;EACf;EAEA,oBACIlC,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACT,uBAAuB;IACpBuB,KAAK,EAAEA,KAAM;IACbP,YAAY,EAAEA,YAAa;IAC3Ba,OAAO,EAAEA,OAAQ;IACjBJ,OAAO,EAAEA,OAAQ;IACjBD,MAAM,EAAEA,MAAO;IACfI,QAAQ,EAAEA,QAAS;IACnBF,QAAQ,EAAEA,QAAS;IACnBC,UAAU,EAAEA,UAAW;IACvBxB,KAAK,EAAEW,QAAQ,CAACyB,IAAK;IACrBnC,WAAW,EAAEU,QAAQ,CAACV,WAAY;IAClCC,IAAI,eAAEzB,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAAClB,aAAA,CAAAiD,YAAY;MAACnC,IAAI,EAAES,QAAQ,CAACT;IAAK,CAAE,CAAE;IAC5CS,QAAQ,EAAEA,QAAS;IACnBR,OAAO,eACH1B,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACxB,UAAA,CAAAyB,aAAa,CAAC+B,OAAO,qBAClB7D,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACxB,UAAA,CAAAyB,aAAa,CAACgC,MAAM;MACjBrC,IAAI,eAAEzB,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACrB,YAAA,CAAAuD,cAAW,MAAE,CAAE;MACtBC,OAAO,EAAElB,QAAS;MAClBmB,QAAQ,EAAEpB;IAAQ,CACrB,CAAC,eACF7C,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACxB,UAAA,CAAAyB,aAAa,CAACgC,MAAM;MACjBrC,IAAI,eAAEzB,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACpB,YAAA,CAAAsD,cAAa,MAAE,CAAE;MACxBC,OAAO,EAAEjB,UAAW;MACpBkB,QAAQ,EAAErB;IAAO,CACpB,CAAC,eACF5C,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACxB,UAAA,CAAAyB,aAAa,CAACoC,OAAO,MAAE,CAAC,eACzBlE,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACxB,UAAA,CAAAyB,aAAa,CAACgC,MAAM;MAACrC,IAAI,eAAEzB,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACtB,YAAA,CAAAwD,cAAS,MAAE,CAAE;MAACC,OAAO,EAAEf;IAAQ,CAAE,CAAC,eAC/DjD,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACxB,UAAA,CAAAyB,aAAa,CAACgC,MAAM;MAACrC,IAAI,eAAEzB,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACvB,eAAA,CAAAyD,cAAU,MAAE,CAAE;MAACC,OAAO,EAAEhB;IAAS,CAAE,CAC7C;EAC1B,gBAEDhD,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACG,cAAc;IAACE,QAAQ,EAAEA,QAAS;IAACE,YAAY,EAAEA,YAAa;IAACD,IAAI,EAAEA;EAAK,CAAE,CACxD,CAAC;AAElC,CAAC;AAMM,IAAMgC,mBAAmB,GAAG,IAAA9C,iCAAe,EAC9C,qBAAqB,EACrB,UAAA+C,KAAA,EAA4C;EAAA,IAAzCzC,QAAQ,GAAAyC,KAAA,CAARzC,QAAQ;EACP,oBACI3B,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACxB,UAAA,CAAAgE,SAAS,qBACNrE,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAAA7B,MAAA,CAAA4B,OAAA,CAAA0C,QAAA,QAAG3C,QAAW,CACP,CAAC;AAEpB,CACJ,CAAC;AAACI,OAAA,CAAAoC,mBAAA,GAAAA,mBAAA;AAUK,IAAMI,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAItC,KAAiC,EAAK;EACxE,IAAQuC,IAAI,GAA4BvC,KAAK,CAArCuC,IAAI;IAAEC,OAAO,GAAmBxC,KAAK,CAA/BwC,OAAO;IAAErC,YAAY,GAAKH,KAAK,CAAtBG,YAAY;EACnC,IAAMsC,UAAU,GAAG,SAAbA,UAAUA,CAAIxC,QAAgC,EAAK;IACrDsC,IAAI,CAACG,WAAW,CAAC;MAAEjB,WAAW,EAAExB,QAAQ,CAACuB;IAAG,CAAC,CAAC;EAClD,CAAC;EAED,IAAMmB,UAAU,GAAG,SAAbA,UAAUA,CAAIC,KAAa,EAAK;IAClC,IAAMC,QAAQ,GAAG,IAAAC,kBAAS,EAACP,IAAI,CAAC7B,KAAK,CAACkC,KAAK,CAAC,CAAC;IAC7CL,IAAI,CAACG,WAAW,CAACG,QAAQ,EAAED,KAAK,GAAG,CAAC,CAAC;EACzC,CAAC;EAED,IAAMG,MAAuB,GAAGR,IAAI,CAAC7B,KAAK,IAAI,EAAE;EAChD,IAAMsC,SAAS,GAAGD,MAAM,CAACE,MAAM,GAAG,CAAC;EAEnC,IAAM/C,IAAI,GAAGsC,OAAO,CAAC,CAAC;EAEtB,oBACIzE,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAAA7B,MAAA,CAAA4B,OAAA,CAAA0C,QAAA,QACKW,SAAS,gBACNjF,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACjB,MAAA,CAAAuE,mBAAmB;IAACxC,KAAK,EAAE6B,IAAI,CAAC7B,KAAM;IAACyC,IAAI,EAAEjD,IAAI,CAACkD;EAAW,gBAC1DrF,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACsC,mBAAmB,EAAKlC,KAAK,EACzB+C,MAAM,CAACM,GAAG,CAAC,UAAC3C,KAAK,EAAEkC,KAAK,EAAK;IAC1B,IAAM1C,IAAI,GAAGsC,OAAO,CAACI,KAAK,CAAC;IAE3B,oBACI7E,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACjB,MAAA,CAAAuE,mBAAmB;MAChBxC,KAAK,EAAEA,KAAM;MACb4C,GAAG,EAAEV,KAAM;MACXO,IAAI,EAAEjD,IAAI,CAACkD;IAAW,gBAEtBrF,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACY,iBAAiB;MACdE,KAAK,EAAEA,KAAM;MACbP,YAAY,EAAEA,YAAa;MAC3BD,IAAI,EAAEA,IAAK;MACXU,OAAO,EAAEgC,KAAK,KAAK,CAAE;MACrBjC,MAAM,EAAEiC,KAAK,KAAKG,MAAM,CAACE,MAAM,GAAG,CAAE;MACpCpC,QAAQ,EAAE,SAAAA,SAAA;QAAA,OAAM0B,IAAI,CAACgB,WAAW,CAACX,KAAK,CAAC;MAAA,CAAC;MACxC9B,UAAU,EAAE,SAAAA,WAAA;QAAA,OAAMyB,IAAI,CAACiB,aAAa,CAACZ,KAAK,CAAC;MAAA,CAAC;MAC5C7B,QAAQ,EAAE,SAAAA,SAAA;QAAA,OAAMwB,IAAI,CAACkB,WAAW,CAACb,KAAK,CAAC;MAAA,CAAC;MACxC5B,OAAO,EAAE,SAAAA,QAAA;QAAA,OAAM2B,UAAU,CAACC,KAAK,CAAC;MAAA;IAAC,CACpC,CACgB,CAAC;EAE9B,CAAC,CACgB,CACJ,CAAC,GACtB,IAAI,EACPI,SAAS,gBACNjF,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACnB,YAAA,CAAAiF,eAAe;IAACjB,UAAU,EAAEA;EAAW,CAAE,CAAC,gBAE3C1E,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACb,YAAY,qBACThB,MAAA,CAAA4B,OAAA,CAAAC,aAAA,CAACnB,YAAA,CAAAkF,iBAAiB;IAAClB,UAAU,EAAEA;EAAW,CAAE,CAClC,CAEpB,CAAC;AAEX,CAAC;AAAC3C,OAAA,CAAAwC,qBAAA,GAAAA,qBAAA"}