@webiny/app-headless-cms 5.40.5-beta.0 → 5.40.6-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 (67) hide show
  1. package/HeadlessCMS.js +2 -1
  2. package/HeadlessCMS.js.map +1 -1
  3. package/admin/components/ContentEntryForm/ContentEntryForm.d.ts +6 -11
  4. package/admin/components/ContentEntryForm/ContentEntryForm.js +5 -6
  5. package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -1
  6. package/admin/components/ContentEntryForm/ContentEntryFormPreview.js +6 -1
  7. package/admin/components/ContentEntryForm/ContentEntryFormPreview.js.map +1 -1
  8. package/admin/components/ContentEntryForm/ContentEntryFormProvider.d.ts +7 -2
  9. package/admin/components/ContentEntryForm/ContentEntryFormProvider.js +8 -42
  10. package/admin/components/ContentEntryForm/ContentEntryFormProvider.js.map +1 -1
  11. package/admin/components/ContentEntryForm/Header/DeleteEntry/DeleteEntry.js +1 -1
  12. package/admin/components/ContentEntryForm/Header/DeleteEntry/DeleteEntry.js.map +1 -1
  13. package/admin/components/ContentEntryForm/SingletonHeader/SaveAction.d.ts +2 -0
  14. package/admin/components/ContentEntryForm/SingletonHeader/SaveAction.js +24 -0
  15. package/admin/components/ContentEntryForm/SingletonHeader/SaveAction.js.map +1 -0
  16. package/admin/components/ContentEntryForm/SingletonHeader/SingletonHeader.d.ts +5 -0
  17. package/admin/components/ContentEntryForm/SingletonHeader/SingletonHeader.js +65 -0
  18. package/admin/components/ContentEntryForm/SingletonHeader/SingletonHeader.js.map +1 -0
  19. package/admin/components/ContentEntryForm/SingletonHeader/index.d.ts +1 -0
  20. package/admin/components/ContentEntryForm/SingletonHeader/index.js +18 -0
  21. package/admin/components/ContentEntryForm/SingletonHeader/index.js.map +1 -0
  22. package/admin/components/Decorators/ShowConfirmationOnDeleteRevision/EntryRevisionDeletedSnackbarMessage.d.ts +8 -0
  23. package/admin/components/Decorators/ShowConfirmationOnDeleteRevision/EntryRevisionDeletedSnackbarMessage.js +18 -0
  24. package/admin/components/Decorators/ShowConfirmationOnDeleteRevision/EntryRevisionDeletedSnackbarMessage.js.map +1 -0
  25. package/admin/components/Decorators/ShowConfirmationOnDeleteRevision.d.ts +2 -0
  26. package/admin/components/Decorators/ShowConfirmationOnDeleteRevision.js +106 -0
  27. package/admin/components/Decorators/ShowConfirmationOnDeleteRevision.js.map +1 -0
  28. package/admin/contexts/Cms/index.d.ts +27 -5
  29. package/admin/contexts/Cms/index.js +136 -38
  30. package/admin/contexts/Cms/index.js.map +1 -1
  31. package/admin/hooks/usePersistEntry.d.ts +12 -0
  32. package/admin/hooks/usePersistEntry.js +48 -0
  33. package/admin/hooks/usePersistEntry.js.map +1 -0
  34. package/admin/plugins/fieldRenderers/ref/components/NewReferencedEntryDialog.js +11 -6
  35. package/admin/plugins/fieldRenderers/ref/components/NewReferencedEntryDialog.js.map +1 -1
  36. package/admin/plugins/fields/ref.js +7 -1
  37. package/admin/plugins/fields/ref.js.map +1 -1
  38. package/admin/views/contentEntries/ContentEntriesModule.js +2 -1
  39. package/admin/views/contentEntries/ContentEntriesModule.js.map +1 -1
  40. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.d.ts +8 -0
  41. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +51 -22
  42. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
  43. package/admin/views/contentEntries/ContentEntry/RevisionsList/PublishEntryRevisionListItem.js +1 -1
  44. package/admin/views/contentEntries/ContentEntry/RevisionsList/PublishEntryRevisionListItem.js.map +1 -1
  45. package/admin/views/contentEntries/ContentEntry/RevisionsList/RevisionListItem.js +6 -6
  46. package/admin/views/contentEntries/ContentEntry/RevisionsList/RevisionListItem.js.map +1 -1
  47. package/admin/views/contentEntries/ContentEntry/RevisionsList/useRevision.js +28 -22
  48. package/admin/views/contentEntries/ContentEntry/RevisionsList/useRevision.js.map +1 -1
  49. package/admin/views/contentEntries/ContentEntry/SingletonContentEntry.d.ts +8 -0
  50. package/admin/views/contentEntries/ContentEntry/SingletonContentEntry.js +66 -0
  51. package/admin/views/contentEntries/ContentEntry/SingletonContentEntry.js.map +1 -0
  52. package/admin/views/contentEntries/ContentEntry/SingletonContentEntryContext.d.ts +20 -0
  53. package/admin/views/contentEntries/ContentEntry/SingletonContentEntryContext.js +75 -0
  54. package/admin/views/contentEntries/ContentEntry/SingletonContentEntryContext.js.map +1 -0
  55. package/admin/views/contentEntries/ContentEntry.js +11 -4
  56. package/admin/views/contentEntries/ContentEntry.js.map +1 -1
  57. package/admin/views/contentEntries/SingletonContentEntryModule.d.ts +2 -0
  58. package/admin/views/contentEntries/SingletonContentEntryModule.js +33 -0
  59. package/admin/views/contentEntries/SingletonContentEntryModule.js.map +1 -0
  60. package/admin/views/contentEntries/hooks/useSingletonContentEntry.d.ts +8 -0
  61. package/admin/views/contentEntries/hooks/useSingletonContentEntry.js +18 -0
  62. package/admin/views/contentEntries/hooks/useSingletonContentEntry.js.map +1 -0
  63. package/admin/views/contentModels/ContentModelsDataList.js +13 -4
  64. package/admin/views/contentModels/ContentModelsDataList.js.map +1 -1
  65. package/admin/views/contentModels/NewContentModelDialog.js +58 -21
  66. package/admin/views/contentModels/NewContentModelDialog.js.map +1 -1
  67. package/package.json +28 -28
package/HeadlessCMS.js CHANGED
@@ -16,6 +16,7 @@ var _apiInformation = _interopRequireDefault(require("./admin/plugins/apiInforma
16
16
  var _ContentEntriesModule = require("./admin/views/contentEntries/ContentEntriesModule");
17
17
  var _allPlugins = _interopRequireDefault(require("./allPlugins"));
18
18
  var _LexicalEditorCmsPlugin = require("./admin/components/LexicalCmsEditor/LexicalEditorCmsPlugin");
19
+ var _SingletonContentEntryModule = require("./admin/views/contentEntries/SingletonContentEntryModule");
19
20
  var createHeadlessCMSProvider = function createHeadlessCMSProvider(createApolloClient) {
20
21
  return function (Component) {
21
22
  return function HeadlessCMSProvider(_ref) {
@@ -44,7 +45,7 @@ var HeadlessCMSExtension = function HeadlessCMSExtension(_ref2) {
44
45
  }
45
46
  return undefined;
46
47
  }));
47
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_ContentEntriesModule.ContentEntriesModule, null), /*#__PURE__*/_react.default.createElement(_appAdmin.Provider, {
48
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_ContentEntriesModule.ContentEntriesModule, null), /*#__PURE__*/_react.default.createElement(_SingletonContentEntryModule.SingletonContentEntryModule, null), /*#__PURE__*/_react.default.createElement(_appAdmin.Provider, {
48
49
  hoc: createHeadlessCMSProvider(createApolloClient)
49
50
  }), /*#__PURE__*/_react.default.createElement(_appAdmin.Plugins, null, /*#__PURE__*/_react.default.createElement(_CmsMenuLoader.CmsMenuLoader, null)), /*#__PURE__*/_react.default.createElement(_LexicalEditorCmsPlugin.LexicalEditorCmsPlugin, null));
50
51
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_plugins","_appAdmin","_app","_Cms","_CmsMenuLoader","_apiInformation","_interopRequireDefault","_ContentEntriesModule","_allPlugins","_LexicalEditorCmsPlugin","createHeadlessCMSProvider","createApolloClient","Component","HeadlessCMSProvider","_ref","children","default","createElement","CmsProvider","attachTypeName","HeadlessCMSExtension","_ref2","plugins","register","apiInformation","allPlugins","ApolloCacheObjectIdPlugin","obj","__typename","includes","concat","id","undefined","Fragment","ContentEntriesModule","Provider","hoc","Plugins","CmsMenuLoader","LexicalEditorCmsPlugin","HeadlessCMS","exports","memo"],"sources":["HeadlessCMS.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { ApolloClient } from \"apollo-client\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Plugins, Provider } from \"@webiny/app-admin\";\nimport { ApolloCacheObjectIdPlugin } from \"@webiny/app\";\nimport { CmsProvider } from \"~/admin/contexts/Cms\";\nimport { CmsMenuLoader } from \"~/admin/menus/CmsMenuLoader\";\nimport apiInformation from \"~/admin/plugins/apiInformation\";\nimport { ContentEntriesModule } from \"~/admin/views/contentEntries/ContentEntriesModule\";\nimport allPlugins from \"~/allPlugins\";\nimport { LexicalEditorCmsPlugin } from \"~/admin/components/LexicalCmsEditor/LexicalEditorCmsPlugin\";\n\ninterface HeadlessCMSProvider {\n children: React.ReactNode;\n}\n\nconst createHeadlessCMSProvider =\n (createApolloClient: CreateApolloClient) =>\n (Component: React.ComponentType<React.PropsWithChildren>) => {\n return function HeadlessCMSProvider({ children }: HeadlessCMSProvider) {\n return (\n <CmsProvider createApolloClient={createApolloClient}>\n <Component>{children}</Component>\n </CmsProvider>\n );\n };\n };\n\ninterface CreateApolloClientParams {\n uri: string;\n}\ninterface CreateApolloClient {\n (params: CreateApolloClientParams): ApolloClient<any>;\n}\n\nexport interface HeadlessCMSProps {\n createApolloClient: CreateApolloClient;\n}\n\n/**\n * If there is a problem with some state being reset, it's probably because of this plugin.\n * Check that __typename from the API and the __typename in the state are the same.\n * If not, add it into the attachTypeName array.\n */\nconst attachTypeName = [\"CmsContentEntry\", \"RefField\"];\n\nconst HeadlessCMSExtension = ({ createApolloClient }: HeadlessCMSProps) => {\n plugins.register(apiInformation);\n plugins.register(allPlugins);\n\n plugins.register(\n new ApolloCacheObjectIdPlugin(obj => {\n if (obj.__typename === \"CmsContentModelField\") {\n return null;\n } else if (obj.__typename && attachTypeName.includes(obj.__typename)) {\n return `${obj.__typename}_${obj.id}`;\n }\n\n return undefined;\n })\n );\n\n return (\n <Fragment>\n <ContentEntriesModule />\n <Provider hoc={createHeadlessCMSProvider(createApolloClient)} />\n <Plugins>\n <CmsMenuLoader />\n </Plugins>\n <LexicalEditorCmsPlugin />\n </Fragment>\n );\n};\n\nexport const HeadlessCMS = memo(HeadlessCMSExtension);\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,IAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAC,sBAAA,CAAAP,OAAA;AACA,IAAAQ,qBAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAF,sBAAA,CAAAP,OAAA;AACA,IAAAU,uBAAA,GAAAV,OAAA;AAMA,IAAMW,yBAAyB,GAC3B,SADEA,yBAAyBA,CAC1BC,kBAAsC;EAAA,OACvC,UAACC,SAAuD,EAAK;IACzD,OAAO,SAASC,mBAAmBA,CAAAC,IAAA,EAAoC;MAAA,IAAjCC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAC1C,oBACIlB,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAACd,IAAA,CAAAe,WAAW;QAACP,kBAAkB,EAAEA;MAAmB,gBAChDd,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAACL,SAAS,QAAEG,QAAoB,CACvB,CAAC;IAEtB,CAAC;EACL,CAAC;AAAA;AAaL;AACA;AACA;AACA;AACA;AACA,IAAMI,cAAc,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC;AAEtD,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,KAAA,EAAiD;EAAA,IAA3CV,kBAAkB,GAAAU,KAAA,CAAlBV,kBAAkB;EAC9CW,gBAAO,CAACC,QAAQ,CAACC,uBAAc,CAAC;EAChCF,gBAAO,CAACC,QAAQ,CAACE,mBAAU,CAAC;EAE5BH,gBAAO,CAACC,QAAQ,CACZ,IAAIG,8BAAyB,CAAC,UAAAC,GAAG,EAAI;IACjC,IAAIA,GAAG,CAACC,UAAU,KAAK,sBAAsB,EAAE;MAC3C,OAAO,IAAI;IACf,CAAC,MAAM,IAAID,GAAG,CAACC,UAAU,IAAIT,cAAc,CAACU,QAAQ,CAACF,GAAG,CAACC,UAAU,CAAC,EAAE;MAClE,UAAAE,MAAA,CAAUH,GAAG,CAACC,UAAU,OAAAE,MAAA,CAAIH,GAAG,CAACI,EAAE;IACtC;IAEA,OAAOC,SAAS;EACpB,CAAC,CACL,CAAC;EAED,oBACInC,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAACpB,MAAA,CAAAoC,QAAQ,qBACLpC,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAACV,qBAAA,CAAA2B,oBAAoB,MAAE,CAAC,eACxBrC,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAAChB,SAAA,CAAAkC,QAAQ;IAACC,GAAG,EAAE1B,yBAAyB,CAACC,kBAAkB;EAAE,CAAE,CAAC,eAChEd,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAAChB,SAAA,CAAAoC,OAAO,qBACJxC,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAACb,cAAA,CAAAkC,aAAa,MAAE,CACX,CAAC,eACVzC,MAAA,CAAAmB,OAAA,CAAAC,aAAA,CAACR,uBAAA,CAAA8B,sBAAsB,MAAE,CACnB,CAAC;AAEnB,CAAC;AAEM,IAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,gBAAG,IAAAE,WAAI,EAACtB,oBAAoB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_plugins","_appAdmin","_app","_Cms","_CmsMenuLoader","_apiInformation","_interopRequireDefault","_ContentEntriesModule","_allPlugins","_LexicalEditorCmsPlugin","_SingletonContentEntryModule","createHeadlessCMSProvider","createApolloClient","Component","HeadlessCMSProvider","_ref","children","default","createElement","CmsProvider","attachTypeName","HeadlessCMSExtension","_ref2","plugins","register","apiInformation","allPlugins","ApolloCacheObjectIdPlugin","obj","__typename","includes","concat","id","undefined","Fragment","ContentEntriesModule","SingletonContentEntryModule","Provider","hoc","Plugins","CmsMenuLoader","LexicalEditorCmsPlugin","HeadlessCMS","exports","memo"],"sources":["HeadlessCMS.tsx"],"sourcesContent":["import React, { Fragment, memo } from \"react\";\nimport { ApolloClient } from \"apollo-client\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Plugins, Provider } from \"@webiny/app-admin\";\nimport { ApolloCacheObjectIdPlugin } from \"@webiny/app\";\nimport { CmsProvider } from \"~/admin/contexts/Cms\";\nimport { CmsMenuLoader } from \"~/admin/menus/CmsMenuLoader\";\nimport apiInformation from \"~/admin/plugins/apiInformation\";\nimport { ContentEntriesModule } from \"~/admin/views/contentEntries/ContentEntriesModule\";\nimport allPlugins from \"~/allPlugins\";\nimport { LexicalEditorCmsPlugin } from \"~/admin/components/LexicalCmsEditor/LexicalEditorCmsPlugin\";\nimport { SingletonContentEntryModule } from \"~/admin/views/contentEntries/SingletonContentEntryModule\";\n\ninterface HeadlessCMSProvider {\n children: React.ReactNode;\n}\n\nconst createHeadlessCMSProvider =\n (createApolloClient: CreateApolloClient) =>\n (Component: React.ComponentType<React.PropsWithChildren>) => {\n return function HeadlessCMSProvider({ children }: HeadlessCMSProvider) {\n return (\n <CmsProvider createApolloClient={createApolloClient}>\n <Component>{children}</Component>\n </CmsProvider>\n );\n };\n };\n\ninterface CreateApolloClientParams {\n uri: string;\n}\ninterface CreateApolloClient {\n (params: CreateApolloClientParams): ApolloClient<any>;\n}\n\nexport interface HeadlessCMSProps {\n createApolloClient: CreateApolloClient;\n}\n\n/**\n * If there is a problem with some state being reset, it's probably because of this plugin.\n * Check that __typename from the API and the __typename in the state are the same.\n * If not, add it into the attachTypeName array.\n */\nconst attachTypeName = [\"CmsContentEntry\", \"RefField\"];\n\nconst HeadlessCMSExtension = ({ createApolloClient }: HeadlessCMSProps) => {\n plugins.register(apiInformation);\n plugins.register(allPlugins);\n\n plugins.register(\n new ApolloCacheObjectIdPlugin(obj => {\n if (obj.__typename === \"CmsContentModelField\") {\n return null;\n } else if (obj.__typename && attachTypeName.includes(obj.__typename)) {\n return `${obj.__typename}_${obj.id}`;\n }\n\n return undefined;\n })\n );\n\n return (\n <Fragment>\n <ContentEntriesModule />\n <SingletonContentEntryModule />\n <Provider hoc={createHeadlessCMSProvider(createApolloClient)} />\n <Plugins>\n <CmsMenuLoader />\n </Plugins>\n <LexicalEditorCmsPlugin />\n </Fragment>\n );\n};\n\nexport const HeadlessCMS = memo(HeadlessCMSExtension);\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,IAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAC,sBAAA,CAAAP,OAAA;AACA,IAAAQ,qBAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAF,sBAAA,CAAAP,OAAA;AACA,IAAAU,uBAAA,GAAAV,OAAA;AACA,IAAAW,4BAAA,GAAAX,OAAA;AAMA,IAAMY,yBAAyB,GAC3B,SADEA,yBAAyBA,CAC1BC,kBAAsC;EAAA,OACvC,UAACC,SAAuD,EAAK;IACzD,OAAO,SAASC,mBAAmBA,CAAAC,IAAA,EAAoC;MAAA,IAAjCC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAC1C,oBACInB,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACf,IAAA,CAAAgB,WAAW;QAACP,kBAAkB,EAAEA;MAAmB,gBAChDf,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACL,SAAS,QAAEG,QAAoB,CACvB,CAAC;IAEtB,CAAC;EACL,CAAC;AAAA;AAaL;AACA;AACA;AACA;AACA;AACA,IAAMI,cAAc,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC;AAEtD,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,KAAA,EAAiD;EAAA,IAA3CV,kBAAkB,GAAAU,KAAA,CAAlBV,kBAAkB;EAC9CW,gBAAO,CAACC,QAAQ,CAACC,uBAAc,CAAC;EAChCF,gBAAO,CAACC,QAAQ,CAACE,mBAAU,CAAC;EAE5BH,gBAAO,CAACC,QAAQ,CACZ,IAAIG,8BAAyB,CAAC,UAAAC,GAAG,EAAI;IACjC,IAAIA,GAAG,CAACC,UAAU,KAAK,sBAAsB,EAAE;MAC3C,OAAO,IAAI;IACf,CAAC,MAAM,IAAID,GAAG,CAACC,UAAU,IAAIT,cAAc,CAACU,QAAQ,CAACF,GAAG,CAACC,UAAU,CAAC,EAAE;MAClE,UAAAE,MAAA,CAAUH,GAAG,CAACC,UAAU,OAAAE,MAAA,CAAIH,GAAG,CAACI,EAAE;IACtC;IAEA,OAAOC,SAAS;EACpB,CAAC,CACL,CAAC;EAED,oBACIpC,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACrB,MAAA,CAAAqC,QAAQ,qBACLrC,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACX,qBAAA,CAAA4B,oBAAoB,MAAE,CAAC,eACxBtC,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACR,4BAAA,CAAA0B,2BAA2B,MAAE,CAAC,eAC/BvC,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACjB,SAAA,CAAAoC,QAAQ;IAACC,GAAG,EAAE3B,yBAAyB,CAACC,kBAAkB;EAAE,CAAE,CAAC,eAChEf,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACjB,SAAA,CAAAsC,OAAO,qBACJ1C,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACd,cAAA,CAAAoC,aAAa,MAAE,CACX,CAAC,eACV3C,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACT,uBAAA,CAAAgC,sBAAsB,MAAE,CACnB,CAAC;AAEnB,CAAC;AAEM,IAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,gBAAG,IAAAE,WAAI,EAACvB,oBAAoB,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { CmsContentEntry } from "../../../types";
3
- import { ContentEntryFormContext } from "./ContentEntryFormProvider";
3
+ import { ContentEntryFormContext, PersistEntry } from "./ContentEntryFormProvider";
4
4
  export interface ContentEntryFormProps {
5
5
  entry: Partial<CmsContentEntry>;
6
6
  /**
@@ -8,22 +8,17 @@ export interface ContentEntryFormProps {
8
8
  * @param entry
9
9
  */
10
10
  onAfterCreate?: (entry: CmsContentEntry) => void;
11
- header?: boolean;
11
+ /**
12
+ * This callback is executed when the form is valid, and it needs to persist the content entry.
13
+ */
14
+ persistEntry: PersistEntry;
15
+ header?: React.ReactNode;
12
16
  /**
13
17
  * This prop is used to get a reference to `saveEntry` callback, so it can be triggered by components
14
18
  * outside the ContentEntryForm context.
15
19
  * TODO: introduce a `layout` prop to be able to mount arbitrary components around the entry form, within the context.
16
20
  */
17
21
  setSaveEntry?: (cb: ContentEntryFormContext["saveEntry"]) => void;
18
- /**
19
- * This flag exists for a lack of better Apollo cache control, at the moment.
20
- * We use this flag when we need to tell the system to add new entries to apollo cache.
21
- * Why would you want to NOT add entries to cache? When using a `ref` field, which usually points to
22
- * a different model than the main entry you're working on. Example: Book -> Author, you don't want
23
- * an Author created via a `ref` field dialog to be added to the list of Books.
24
- * TODO: revisit this, and look for a better solution.
25
- */
26
- addEntryToListCache?: boolean;
27
22
  }
28
23
  export declare const ContentEntryForm: import("@webiny/app-admin").GenericComponent<ContentEntryFormProps> & {
29
24
  original: import("@webiny/app-admin").GenericComponent<ContentEntryFormProps>;
@@ -10,7 +10,6 @@ var _base = _interopRequireDefault(require("@emotion/styled/base"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _appAdmin = require("@webiny/app-admin");
12
12
  var _ModelProvider = require("../ModelProvider");
13
- var _Header = require("./Header");
14
13
  var _useFormRenderer = require("./useFormRenderer");
15
14
  var _ContentEntryFormProvider = require("./ContentEntryFormProvider");
16
15
  var _CustomLayout = require("./CustomLayout");
@@ -28,13 +27,13 @@ var FormWrapper = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV ==
28
27
  } : {
29
28
  name: "1x0mv1y",
30
29
  styles: "height:calc(100vh - 260px);overflow:auto",
31
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRlbnRFbnRyeUZvcm0udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlvQiIsImZpbGUiOiJDb250ZW50RW50cnlGb3JtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBDbXNDb250ZW50RW50cnkgfSBmcm9tIFwifi90eXBlc1wiO1xuaW1wb3J0IHsgbWFrZURlY29yYXRhYmxlIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluXCI7XG5pbXBvcnQgeyBNb2RlbFByb3ZpZGVyLCB1c2VNb2RlbCB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvTW9kZWxQcm92aWRlclwiO1xuaW1wb3J0IHsgSGVhZGVyIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL0hlYWRlclwiO1xuaW1wb3J0IHsgdXNlRm9ybVJlbmRlcmVyIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL3VzZUZvcm1SZW5kZXJlclwiO1xuaW1wb3J0IHsgQ29udGVudEVudHJ5Rm9ybUNvbnRleHQsIENvbnRlbnRFbnRyeUZvcm1Qcm92aWRlciB9IGZyb20gXCIuL0NvbnRlbnRFbnRyeUZvcm1Qcm92aWRlclwiO1xuaW1wb3J0IHsgQ3VzdG9tTGF5b3V0IH0gZnJvbSBcIi4vQ3VzdG9tTGF5b3V0XCI7XG5pbXBvcnQgeyBEZWZhdWx0TGF5b3V0IH0gZnJvbSBcIi4vRGVmYXVsdExheW91dFwiO1xuaW1wb3J0IHsgdXNlR29Ub1JldmlzaW9uIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL3VzZUdvVG9SZXZpc2lvblwiO1xuXG5jb25zdCBGb3JtV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gICAgaGVpZ2h0OiBcImNhbGMoMTAwdmggLSAyNjBweClcIixcbiAgICBvdmVyZmxvdzogXCJhdXRvXCJcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRFbnRyeUZvcm1Qcm9wcyB7XG4gICAgZW50cnk6IFBhcnRpYWw8Q21zQ29udGVudEVudHJ5PjtcbiAgICAvKipcbiAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGV4ZWN1dGVkIHdoZW4gYW4gZW50cnksIG9yIGEgcmV2aXNpb24sIGFyZSBjcmVhdGVkLlxuICAgICAqIEBwYXJhbSBlbnRyeVxuICAgICAqL1xuICAgIG9uQWZ0ZXJDcmVhdGU/OiAoZW50cnk6IENtc0NvbnRlbnRFbnRyeSkgPT4gdm9pZDtcbiAgICBoZWFkZXI/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoaXMgcHJvcCBpcyB1c2VkIHRvIGdldCBhIHJlZmVyZW5jZSB0byBgc2F2ZUVudHJ5YCBjYWxsYmFjaywgc28gaXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjb21wb25lbnRzXG4gICAgICogb3V0c2lkZSB0aGUgQ29udGVudEVudHJ5Rm9ybSBjb250ZXh0LlxuICAgICAqIFRPRE86IGludHJvZHVjZSBhIGBsYXlvdXRgIHByb3AgdG8gYmUgYWJsZSB0byBtb3VudCBhcmJpdHJhcnkgY29tcG9uZW50cyBhcm91bmQgdGhlIGVudHJ5IGZvcm0sIHdpdGhpbiB0aGUgY29udGV4dC5cbiAgICAgKi9cbiAgICBzZXRTYXZlRW50cnk/OiAoY2I6IENvbnRlbnRFbnRyeUZvcm1Db250ZXh0W1wic2F2ZUVudHJ5XCJdKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBleGlzdHMgZm9yIGEgbGFjayBvZiBiZXR0ZXIgQXBvbGxvIGNhY2hlIGNvbnRyb2wsIGF0IHRoZSBtb21lbnQuXG4gICAgICogV2UgdXNlIHRoaXMgZmxhZyB3aGVuIHdlIG5lZWQgdG8gdGVsbCB0aGUgc3lzdGVtIHRvIGFkZCBuZXcgZW50cmllcyB0byBhcG9sbG8gY2FjaGUuXG4gICAgICogV2h5IHdvdWxkIHlvdSB3YW50IHRvIE5PVCBhZGQgZW50cmllcyB0byBjYWNoZT8gV2hlbiB1c2luZyBhIGByZWZgIGZpZWxkLCB3aGljaCB1c3VhbGx5IHBvaW50cyB0b1xuICAgICAqIGEgZGlmZmVyZW50IG1vZGVsIHRoYW4gdGhlIG1haW4gZW50cnkgeW91J3JlIHdvcmtpbmcgb24uIEV4YW1wbGU6IEJvb2sgLT4gQXV0aG9yLCB5b3UgZG9uJ3Qgd2FudFxuICAgICAqIGFuIEF1dGhvciBjcmVhdGVkIHZpYSBhIGByZWZgIGZpZWxkIGRpYWxvZyB0byBiZSBhZGRlZCB0byB0aGUgbGlzdCBvZiBCb29rcy5cbiAgICAgKiBUT0RPOiByZXZpc2l0IHRoaXMsIGFuZCBsb29rIGZvciBhIGJldHRlciBzb2x1dGlvbi5cbiAgICAgKi9cbiAgICBhZGRFbnRyeVRvTGlzdENhY2hlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRlbnRFbnRyeUZvcm0gPSBtYWtlRGVjb3JhdGFibGUoXG4gICAgXCJDb250ZW50RW50cnlGb3JtXCIsXG4gICAgKHtcbiAgICAgICAgZW50cnksXG4gICAgICAgIG9uQWZ0ZXJDcmVhdGUsXG4gICAgICAgIGFkZEVudHJ5VG9MaXN0Q2FjaGUsXG4gICAgICAgIHNldFNhdmVFbnRyeSxcbiAgICAgICAgaGVhZGVyID0gdHJ1ZVxuICAgIH06IENvbnRlbnRFbnRyeUZvcm1Qcm9wcykgPT4ge1xuICAgICAgICBjb25zdCBmb3JtRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgICAgIGNvbnN0IHsgbW9kZWwgfSA9IHVzZU1vZGVsKCk7XG4gICAgICAgIGNvbnN0IHsgZ29Ub1JldmlzaW9uIH0gPSB1c2VHb1RvUmV2aXNpb24oKTtcbiAgICAgICAgY29uc3QgZm9ybVJlbmRlcmVyID0gdXNlRm9ybVJlbmRlcmVyKG1vZGVsKTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0T25BZnRlckNyZWF0ZSA9IChlbnRyeTogQ21zQ29udGVudEVudHJ5KSA9PiB7XG4gICAgICAgICAgICBnb1RvUmV2aXNpb24oZW50cnkuaWQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFdoZW4gZW50cnkgY2hhbmdlcywgc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIGZvcm0uXG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZvcm1FbGVtZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50UmVmLmN1cnJlbnQ/LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICAgICAgfSwgMjApO1xuICAgICAgICB9LCBbZW50cnkuaWQsIGZvcm1FbGVtZW50UmVmLmN1cnJlbnRdKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbnRlbnRFbnRyeUZvcm1Qcm92aWRlclxuICAgICAgICAgICAgICAgIG1vZGVsPXttb2RlbH1cbiAgICAgICAgICAgICAgICBlbnRyeT17ZW50cnl9XG4gICAgICAgICAgICAgICAgb25BZnRlckNyZWF0ZT17b25BZnRlckNyZWF0ZSB8fCBkZWZhdWx0T25BZnRlckNyZWF0ZX1cbiAgICAgICAgICAgICAgICBzZXRTYXZlRW50cnk9e3NldFNhdmVFbnRyeX1cbiAgICAgICAgICAgICAgICBhZGRJdGVtVG9MaXN0Q2FjaGU9e2FkZEVudHJ5VG9MaXN0Q2FjaGV9XG4gICAgICAgICAgICAgICAgY29uZmlybU5hdmlnYXRpb25JZkRpcnR5PXt0cnVlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxNb2RlbFByb3ZpZGVyIG1vZGVsPXttb2RlbH0+XG4gICAgICAgICAgICAgICAgICAgIHtoZWFkZXIgPyA8SGVhZGVyIC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1XcmFwcGVyIGRhdGEtdGVzdGlkPXtcImNtcy1jb250ZW50LWZvcm1cIn0gcmVmPXtmb3JtRWxlbWVudFJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Zm9ybVJlbmRlcmVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXN0b21MYXlvdXQgbW9kZWw9e21vZGVsfSBmb3JtUmVuZGVyZXI9e2Zvcm1SZW5kZXJlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRMYXlvdXQgbW9kZWw9e21vZGVsfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtV3JhcHBlcj5cbiAgICAgICAgICAgICAgICA8L01vZGVsUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0NvbnRlbnRFbnRyeUZvcm1Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICB9XG4pO1xuIl19 */",
30
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRlbnRFbnRyeUZvcm0udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVvQiIsImZpbGUiOiJDb250ZW50RW50cnlGb3JtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBDbXNDb250ZW50RW50cnkgfSBmcm9tIFwifi90eXBlc1wiO1xuaW1wb3J0IHsgbWFrZURlY29yYXRhYmxlIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluXCI7XG5pbXBvcnQgeyBNb2RlbFByb3ZpZGVyLCB1c2VNb2RlbCB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvTW9kZWxQcm92aWRlclwiO1xuaW1wb3J0IHsgdXNlRm9ybVJlbmRlcmVyIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL3VzZUZvcm1SZW5kZXJlclwiO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RW50cnlGb3JtQ29udGV4dCxcbiAgICBDb250ZW50RW50cnlGb3JtUHJvdmlkZXIsXG4gICAgUGVyc2lzdEVudHJ5XG59IGZyb20gXCIuL0NvbnRlbnRFbnRyeUZvcm1Qcm92aWRlclwiO1xuaW1wb3J0IHsgQ3VzdG9tTGF5b3V0IH0gZnJvbSBcIi4vQ3VzdG9tTGF5b3V0XCI7XG5pbXBvcnQgeyBEZWZhdWx0TGF5b3V0IH0gZnJvbSBcIi4vRGVmYXVsdExheW91dFwiO1xuaW1wb3J0IHsgdXNlR29Ub1JldmlzaW9uIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL3VzZUdvVG9SZXZpc2lvblwiO1xuXG5jb25zdCBGb3JtV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gICAgaGVpZ2h0OiBcImNhbGMoMTAwdmggLSAyNjBweClcIixcbiAgICBvdmVyZmxvdzogXCJhdXRvXCJcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRFbnRyeUZvcm1Qcm9wcyB7XG4gICAgZW50cnk6IFBhcnRpYWw8Q21zQ29udGVudEVudHJ5PjtcbiAgICAvKipcbiAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGV4ZWN1dGVkIHdoZW4gYW4gZW50cnksIG9yIGEgcmV2aXNpb24sIGFyZSBjcmVhdGVkLlxuICAgICAqIEBwYXJhbSBlbnRyeVxuICAgICAqL1xuICAgIG9uQWZ0ZXJDcmVhdGU/OiAoZW50cnk6IENtc0NvbnRlbnRFbnRyeSkgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBUaGlzIGNhbGxiYWNrIGlzIGV4ZWN1dGVkIHdoZW4gdGhlIGZvcm0gaXMgdmFsaWQsIGFuZCBpdCBuZWVkcyB0byBwZXJzaXN0IHRoZSBjb250ZW50IGVudHJ5LlxuICAgICAqL1xuICAgIHBlcnNpc3RFbnRyeTogUGVyc2lzdEVudHJ5O1xuICAgIGhlYWRlcj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICAvKipcbiAgICAgKiBUaGlzIHByb3AgaXMgdXNlZCB0byBnZXQgYSByZWZlcmVuY2UgdG8gYHNhdmVFbnRyeWAgY2FsbGJhY2ssIHNvIGl0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY29tcG9uZW50c1xuICAgICAqIG91dHNpZGUgdGhlIENvbnRlbnRFbnRyeUZvcm0gY29udGV4dC5cbiAgICAgKiBUT0RPOiBpbnRyb2R1Y2UgYSBgbGF5b3V0YCBwcm9wIHRvIGJlIGFibGUgdG8gbW91bnQgYXJiaXRyYXJ5IGNvbXBvbmVudHMgYXJvdW5kIHRoZSBlbnRyeSBmb3JtLCB3aXRoaW4gdGhlIGNvbnRleHQuXG4gICAgICovXG4gICAgc2V0U2F2ZUVudHJ5PzogKGNiOiBDb250ZW50RW50cnlGb3JtQ29udGV4dFtcInNhdmVFbnRyeVwiXSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRlbnRFbnRyeUZvcm0gPSBtYWtlRGVjb3JhdGFibGUoXG4gICAgXCJDb250ZW50RW50cnlGb3JtXCIsXG4gICAgKHtcbiAgICAgICAgZW50cnksXG4gICAgICAgIHBlcnNpc3RFbnRyeSxcbiAgICAgICAgb25BZnRlckNyZWF0ZSxcbiAgICAgICAgc2V0U2F2ZUVudHJ5LFxuICAgICAgICBoZWFkZXIgPSB0cnVlXG4gICAgfTogQ29udGVudEVudHJ5Rm9ybVByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1FbGVtZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICAgICAgY29uc3QgeyBtb2RlbCB9ID0gdXNlTW9kZWwoKTtcbiAgICAgICAgY29uc3QgeyBnb1RvUmV2aXNpb24gfSA9IHVzZUdvVG9SZXZpc2lvbigpO1xuICAgICAgICBjb25zdCBmb3JtUmVuZGVyZXIgPSB1c2VGb3JtUmVuZGVyZXIobW9kZWwpO1xuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRPbkFmdGVyQ3JlYXRlID0gKGVudHJ5OiBDbXNDb250ZW50RW50cnkpID0+IHtcbiAgICAgICAgICAgIGdvVG9SZXZpc2lvbihlbnRyeS5pZCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gV2hlbiBlbnRyeSBjaGFuZ2VzLCBzY3JvbGwgdG8gdGhlIHRvcCBvZiB0aGUgZm9ybS5cbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghZm9ybUVsZW1lbnRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybUVsZW1lbnRSZWYuY3VycmVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICB9LCAyMCk7XG4gICAgICAgIH0sIFtlbnRyeS5pZCwgZm9ybUVsZW1lbnRSZWYuY3VycmVudF0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Q29udGVudEVudHJ5Rm9ybVByb3ZpZGVyXG4gICAgICAgICAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICAgICAgICAgIGVudHJ5PXtlbnRyeX1cbiAgICAgICAgICAgICAgICBvbkFmdGVyQ3JlYXRlPXtvbkFmdGVyQ3JlYXRlIHx8IGRlZmF1bHRPbkFmdGVyQ3JlYXRlfVxuICAgICAgICAgICAgICAgIHNldFNhdmVFbnRyeT17c2V0U2F2ZUVudHJ5fVxuICAgICAgICAgICAgICAgIGNvbmZpcm1OYXZpZ2F0aW9uSWZEaXJ0eT17dHJ1ZX1cbiAgICAgICAgICAgICAgICBwZXJzaXN0RW50cnk9e3BlcnNpc3RFbnRyeX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TW9kZWxQcm92aWRlciBtb2RlbD17bW9kZWx9PlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyID8gaGVhZGVyIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1XcmFwcGVyIGRhdGEtdGVzdGlkPXtcImNtcy1jb250ZW50LWZvcm1cIn0gcmVmPXtmb3JtRWxlbWVudFJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Zm9ybVJlbmRlcmVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXN0b21MYXlvdXQgbW9kZWw9e21vZGVsfSBmb3JtUmVuZGVyZXI9e2Zvcm1SZW5kZXJlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRMYXlvdXQgbW9kZWw9e21vZGVsfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtV3JhcHBlcj5cbiAgICAgICAgICAgICAgICA8L01vZGVsUHJvdmlkZXI+XG4gICAgICAgICAgICA8L0NvbnRlbnRFbnRyeUZvcm1Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICB9XG4pO1xuIl19 */",
32
31
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
33
32
  });
34
33
  var ContentEntryForm = exports.ContentEntryForm = (0, _appAdmin.makeDecoratable)("ContentEntryForm", function (_ref) {
35
34
  var entry = _ref.entry,
35
+ persistEntry = _ref.persistEntry,
36
36
  onAfterCreate = _ref.onAfterCreate,
37
- addEntryToListCache = _ref.addEntryToListCache,
38
37
  setSaveEntry = _ref.setSaveEntry,
39
38
  _ref$header = _ref.header,
40
39
  header = _ref$header === void 0 ? true : _ref$header;
@@ -62,11 +61,11 @@ var ContentEntryForm = exports.ContentEntryForm = (0, _appAdmin.makeDecoratable)
62
61
  entry: entry,
63
62
  onAfterCreate: onAfterCreate || defaultOnAfterCreate,
64
63
  setSaveEntry: setSaveEntry,
65
- addItemToListCache: addEntryToListCache,
66
- confirmNavigationIfDirty: true
64
+ confirmNavigationIfDirty: true,
65
+ persistEntry: persistEntry
67
66
  }, /*#__PURE__*/_react.default.createElement(_ModelProvider.ModelProvider, {
68
67
  model: model
69
- }, header ? /*#__PURE__*/_react.default.createElement(_Header.Header, null) : null, /*#__PURE__*/_react.default.createElement(FormWrapper, {
68
+ }, header ? header : null, /*#__PURE__*/_react.default.createElement(FormWrapper, {
70
69
  "data-testid": "cms-content-form",
71
70
  ref: formElementRef
72
71
  }, formRenderer ? /*#__PURE__*/_react.default.createElement(_CustomLayout.CustomLayout, {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_appAdmin","_ModelProvider","_Header","_useFormRenderer","_ContentEntryFormProvider","_CustomLayout","_DefaultLayout","_useGoToRevision2","_EMOTION_STRINGIFIED_CSS_ERROR__","FormWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","ContentEntryForm","exports","makeDecoratable","_ref","entry","onAfterCreate","addEntryToListCache","setSaveEntry","_ref$header","header","formElementRef","useRef","_useModel","useModel","model","_useGoToRevision","useGoToRevision","goToRevision","formRenderer","useFormRenderer","defaultOnAfterCreate","id","useEffect","current","setTimeout","scrollTo","createElement","ContentEntryFormProvider","addItemToListCache","confirmNavigationIfDirty","ModelProvider","Header","ref","CustomLayout","DefaultLayout"],"sources":["ContentEntryForm.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { CmsContentEntry } from \"~/types\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { ModelProvider, useModel } from \"~/admin/components/ModelProvider\";\nimport { Header } from \"~/admin/components/ContentEntryForm/Header\";\nimport { useFormRenderer } from \"~/admin/components/ContentEntryForm/useFormRenderer\";\nimport { ContentEntryFormContext, ContentEntryFormProvider } from \"./ContentEntryFormProvider\";\nimport { CustomLayout } from \"./CustomLayout\";\nimport { DefaultLayout } from \"./DefaultLayout\";\nimport { useGoToRevision } from \"~/admin/components/ContentEntryForm/useGoToRevision\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\nexport interface ContentEntryFormProps {\n entry: Partial<CmsContentEntry>;\n /**\n * This callback is executed when an entry, or a revision, are created.\n * @param entry\n */\n onAfterCreate?: (entry: CmsContentEntry) => void;\n header?: boolean;\n /**\n * This prop is used to get a reference to `saveEntry` callback, so it can be triggered by components\n * outside the ContentEntryForm context.\n * TODO: introduce a `layout` prop to be able to mount arbitrary components around the entry form, within the context.\n */\n setSaveEntry?: (cb: ContentEntryFormContext[\"saveEntry\"]) => void;\n /**\n * This flag exists for a lack of better Apollo cache control, at the moment.\n * We use this flag when we need to tell the system to add new entries to apollo cache.\n * Why would you want to NOT add entries to cache? When using a `ref` field, which usually points to\n * a different model than the main entry you're working on. Example: Book -> Author, you don't want\n * an Author created via a `ref` field dialog to be added to the list of Books.\n * TODO: revisit this, and look for a better solution.\n */\n addEntryToListCache?: boolean;\n}\n\nexport const ContentEntryForm = makeDecoratable(\n \"ContentEntryForm\",\n ({\n entry,\n onAfterCreate,\n addEntryToListCache,\n setSaveEntry,\n header = true\n }: ContentEntryFormProps) => {\n const formElementRef = useRef<HTMLDivElement>(null);\n const { model } = useModel();\n const { goToRevision } = useGoToRevision();\n const formRenderer = useFormRenderer(model);\n\n const defaultOnAfterCreate = (entry: CmsContentEntry) => {\n goToRevision(entry.id);\n };\n\n // When entry changes, scroll to the top of the form.\n useEffect(() => {\n if (!formElementRef.current) {\n return;\n }\n\n setTimeout(() => {\n formElementRef.current?.scrollTo(0, 0);\n }, 20);\n }, [entry.id, formElementRef.current]);\n\n return (\n <ContentEntryFormProvider\n model={model}\n entry={entry}\n onAfterCreate={onAfterCreate || defaultOnAfterCreate}\n setSaveEntry={setSaveEntry}\n addItemToListCache={addEntryToListCache}\n confirmNavigationIfDirty={true}\n >\n <ModelProvider model={model}>\n {header ? <Header /> : null}\n <FormWrapper data-testid={\"cms-content-form\"} ref={formElementRef}>\n {formRenderer ? (\n <CustomLayout model={model} formRenderer={formRenderer} />\n ) : (\n <DefaultLayout model={model} />\n )}\n </FormWrapper>\n </ModelProvider>\n </ContentEntryFormProvider>\n );\n }\n);\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAGA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,yBAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AAAsF,SAAAS,iCAAA;AAEtF,IAAMC,WAAW,gBAAG,IAAAC,KAAA,CAAAC,OAAA,EAAO,KAAK,EAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,EAAC,CAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,CAGhC,CAAC;AA2BK,IAAMa,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,IAAAE,yBAAe,EAC3C,kBAAkB,EAClB,UAAAC,IAAA,EAM6B;EAAA,IALzBC,KAAK,GAAAD,IAAA,CAALC,KAAK;IACLC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,mBAAmB,GAAAH,IAAA,CAAnBG,mBAAmB;IACnBC,YAAY,GAAAJ,IAAA,CAAZI,YAAY;IAAAC,WAAA,GAAAL,IAAA,CACZM,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,IAAI,GAAAA,WAAA;EAEb,IAAME,cAAc,GAAG,IAAAC,aAAM,EAAiB,IAAI,CAAC;EACnD,IAAAC,SAAA,GAAkB,IAAAC,uBAAQ,EAAC,CAAC;IAApBC,KAAK,GAAAF,SAAA,CAALE,KAAK;EACb,IAAAC,gBAAA,GAAyB,IAAAC,iCAAe,EAAC,CAAC;IAAlCC,YAAY,GAAAF,gBAAA,CAAZE,YAAY;EACpB,IAAMC,YAAY,GAAG,IAAAC,gCAAe,EAACL,KAAK,CAAC;EAE3C,IAAMM,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIhB,KAAsB,EAAK;IACrDa,YAAY,CAACb,KAAK,CAACiB,EAAE,CAAC;EAC1B,CAAC;;EAED;EACA,IAAAC,gBAAS,EAAC,YAAM;IACZ,IAAI,CAACZ,cAAc,CAACa,OAAO,EAAE;MACzB;IACJ;IAEAC,UAAU,CAAC,YAAM;MACbd,cAAc,CAACa,OAAO,EAAEE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC;EACV,CAAC,EAAE,CAACrB,KAAK,CAACiB,EAAE,EAAEX,cAAc,CAACa,OAAO,CAAC,CAAC;EAEtC,oBACI/C,MAAA,CAAAc,OAAA,CAAAoC,aAAA,CAAC3C,yBAAA,CAAA4C,wBAAwB;IACrBb,KAAK,EAAEA,KAAM;IACbV,KAAK,EAAEA,KAAM;IACbC,aAAa,EAAEA,aAAa,IAAIe,oBAAqB;IACrDb,YAAY,EAAEA,YAAa;IAC3BqB,kBAAkB,EAAEtB,mBAAoB;IACxCuB,wBAAwB,EAAE;EAAK,gBAE/BrD,MAAA,CAAAc,OAAA,CAAAoC,aAAA,CAAC9C,cAAA,CAAAkD,aAAa;IAAChB,KAAK,EAAEA;EAAM,GACvBL,MAAM,gBAAGjC,MAAA,CAAAc,OAAA,CAAAoC,aAAA,CAAC7C,OAAA,CAAAkD,MAAM,MAAE,CAAC,GAAG,IAAI,eAC3BvD,MAAA,CAAAc,OAAA,CAAAoC,aAAA,CAACtC,WAAW;IAAC,eAAa,kBAAmB;IAAC4C,GAAG,EAAEtB;EAAe,GAC7DQ,YAAY,gBACT1C,MAAA,CAAAc,OAAA,CAAAoC,aAAA,CAAC1C,aAAA,CAAAiD,YAAY;IAACnB,KAAK,EAAEA,KAAM;IAACI,YAAY,EAAEA;EAAa,CAAE,CAAC,gBAE1D1C,MAAA,CAAAc,OAAA,CAAAoC,aAAA,CAACzC,cAAA,CAAAiD,aAAa;IAACpB,KAAK,EAAEA;EAAM,CAAE,CAEzB,CACF,CACO,CAAC;AAEnC,CACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_appAdmin","_ModelProvider","_useFormRenderer","_ContentEntryFormProvider","_CustomLayout","_DefaultLayout","_useGoToRevision2","_EMOTION_STRINGIFIED_CSS_ERROR__","FormWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","ContentEntryForm","exports","makeDecoratable","_ref","entry","persistEntry","onAfterCreate","setSaveEntry","_ref$header","header","formElementRef","useRef","_useModel","useModel","model","_useGoToRevision","useGoToRevision","goToRevision","formRenderer","useFormRenderer","defaultOnAfterCreate","id","useEffect","current","setTimeout","scrollTo","createElement","ContentEntryFormProvider","confirmNavigationIfDirty","ModelProvider","ref","CustomLayout","DefaultLayout"],"sources":["ContentEntryForm.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { CmsContentEntry } from \"~/types\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { ModelProvider, useModel } from \"~/admin/components/ModelProvider\";\nimport { useFormRenderer } from \"~/admin/components/ContentEntryForm/useFormRenderer\";\nimport {\n ContentEntryFormContext,\n ContentEntryFormProvider,\n PersistEntry\n} from \"./ContentEntryFormProvider\";\nimport { CustomLayout } from \"./CustomLayout\";\nimport { DefaultLayout } from \"./DefaultLayout\";\nimport { useGoToRevision } from \"~/admin/components/ContentEntryForm/useGoToRevision\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\nexport interface ContentEntryFormProps {\n entry: Partial<CmsContentEntry>;\n /**\n * This callback is executed when an entry, or a revision, are created.\n * @param entry\n */\n onAfterCreate?: (entry: CmsContentEntry) => void;\n /**\n * This callback is executed when the form is valid, and it needs to persist the content entry.\n */\n persistEntry: PersistEntry;\n header?: React.ReactNode;\n /**\n * This prop is used to get a reference to `saveEntry` callback, so it can be triggered by components\n * outside the ContentEntryForm context.\n * TODO: introduce a `layout` prop to be able to mount arbitrary components around the entry form, within the context.\n */\n setSaveEntry?: (cb: ContentEntryFormContext[\"saveEntry\"]) => void;\n}\n\nexport const ContentEntryForm = makeDecoratable(\n \"ContentEntryForm\",\n ({\n entry,\n persistEntry,\n onAfterCreate,\n setSaveEntry,\n header = true\n }: ContentEntryFormProps) => {\n const formElementRef = useRef<HTMLDivElement>(null);\n const { model } = useModel();\n const { goToRevision } = useGoToRevision();\n const formRenderer = useFormRenderer(model);\n\n const defaultOnAfterCreate = (entry: CmsContentEntry) => {\n goToRevision(entry.id);\n };\n\n // When entry changes, scroll to the top of the form.\n useEffect(() => {\n if (!formElementRef.current) {\n return;\n }\n\n setTimeout(() => {\n formElementRef.current?.scrollTo(0, 0);\n }, 20);\n }, [entry.id, formElementRef.current]);\n\n return (\n <ContentEntryFormProvider\n model={model}\n entry={entry}\n onAfterCreate={onAfterCreate || defaultOnAfterCreate}\n setSaveEntry={setSaveEntry}\n confirmNavigationIfDirty={true}\n persistEntry={persistEntry}\n >\n <ModelProvider model={model}>\n {header ? header : null}\n <FormWrapper data-testid={\"cms-content-form\"} ref={formElementRef}>\n {formRenderer ? (\n <CustomLayout model={model} formRenderer={formRenderer} />\n ) : (\n <DefaultLayout model={model} />\n )}\n </FormWrapper>\n </ModelProvider>\n </ContentEntryFormProvider>\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
@@ -25,7 +25,7 @@ var FormWrapper = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV ==
25
25
  } : {
26
26
  name: "1x0mv1y",
27
27
  styles: "height:calc(100vh - 260px);overflow:auto",
28
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRlbnRFbnRyeUZvcm1QcmV2aWV3LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVb0IiLCJmaWxlIjoiQ29udGVudEVudHJ5Rm9ybVByZXZpZXcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBtYWtlRGVjb3JhdGFibGUgfSBmcm9tIFwiQHdlYmlueS9hcHAtYWRtaW5cIjtcbmltcG9ydCB7IENtc0VkaXRvckNvbnRlbnRNb2RlbCB9IGZyb20gXCJ+L3R5cGVzXCI7XG5pbXBvcnQgeyBNb2RlbFByb3ZpZGVyIH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Nb2RlbFByb3ZpZGVyXCI7XG5pbXBvcnQgeyB1c2VGb3JtUmVuZGVyZXIgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL0NvbnRlbnRFbnRyeUZvcm0vdXNlRm9ybVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBDdXN0b21MYXlvdXQgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL0NvbnRlbnRFbnRyeUZvcm0vQ3VzdG9tTGF5b3V0XCI7XG5pbXBvcnQgeyBEZWZhdWx0TGF5b3V0IH0gZnJvbSBcIn4vYWRtaW4vY29tcG9uZW50cy9Db250ZW50RW50cnlGb3JtL0RlZmF1bHRMYXlvdXRcIjtcbmltcG9ydCB7IENvbnRlbnRFbnRyeUZvcm1Qcm92aWRlciB9IGZyb20gXCIuL0NvbnRlbnRFbnRyeUZvcm1Qcm92aWRlclwiO1xuXG5jb25zdCBGb3JtV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gICAgaGVpZ2h0OiBcImNhbGMoMTAwdmggLSAyNjBweClcIixcbiAgICBvdmVyZmxvdzogXCJhdXRvXCJcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRFbnRyeUZvcm1QcmV2aWV3UHJvcHMge1xuICAgIGNvbnRlbnRNb2RlbDogQ21zRWRpdG9yQ29udGVudE1vZGVsO1xufVxuXG5leHBvcnQgY29uc3QgQ29udGVudEVudHJ5Rm9ybVByZXZpZXcgPSBtYWtlRGVjb3JhdGFibGUoXG4gICAgXCJDb250ZW50RW50cnlGb3JtUHJldmlld1wiLFxuICAgIChwcm9wczogQ29udGVudEVudHJ5Rm9ybVByZXZpZXdQcm9wcykgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbnRlbnRNb2RlbCB9ID0gcHJvcHM7XG5cbiAgICAgICAgY29uc3QgZm9ybVJlbmRlcmVyID0gdXNlRm9ybVJlbmRlcmVyKGNvbnRlbnRNb2RlbCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDb250ZW50RW50cnlGb3JtUHJvdmlkZXJcbiAgICAgICAgICAgICAgICBlbnRyeT17e319XG4gICAgICAgICAgICAgICAgbW9kZWw9e2NvbnRlbnRNb2RlbH1cbiAgICAgICAgICAgICAgICBjb25maXJtTmF2aWdhdGlvbklmRGlydHk9e2ZhbHNlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxNb2RlbFByb3ZpZGVyIG1vZGVsPXtjb250ZW50TW9kZWx9PlxuICAgICAgICAgICAgICAgICAgICA8Rm9ybVdyYXBwZXIgZGF0YS10ZXN0aWQ9e1wiY21zLWNvbnRlbnQtZm9ybVwifT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmb3JtUmVuZGVyZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEN1c3RvbUxheW91dCBtb2RlbD17Y29udGVudE1vZGVsfSBmb3JtUmVuZGVyZXI9e2Zvcm1SZW5kZXJlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRMYXlvdXQgbW9kZWw9e2NvbnRlbnRNb2RlbH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvRm9ybVdyYXBwZXI+XG4gICAgICAgICAgICAgICAgPC9Nb2RlbFByb3ZpZGVyPlxuICAgICAgICAgICAgPC9Db250ZW50RW50cnlGb3JtUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgfVxuKTtcbiJdfQ== */",
28
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRlbnRFbnRyeUZvcm1QcmV2aWV3LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVb0IiLCJmaWxlIjoiQ29udGVudEVudHJ5Rm9ybVByZXZpZXcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBtYWtlRGVjb3JhdGFibGUgfSBmcm9tIFwiQHdlYmlueS9hcHAtYWRtaW5cIjtcbmltcG9ydCB7IENtc0NvbnRlbnRFbnRyeSwgQ21zRWRpdG9yQ29udGVudE1vZGVsIH0gZnJvbSBcIn4vdHlwZXNcIjtcbmltcG9ydCB7IE1vZGVsUHJvdmlkZXIgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL01vZGVsUHJvdmlkZXJcIjtcbmltcG9ydCB7IHVzZUZvcm1SZW5kZXJlciB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvQ29udGVudEVudHJ5Rm9ybS91c2VGb3JtUmVuZGVyZXJcIjtcbmltcG9ydCB7IEN1c3RvbUxheW91dCB9IGZyb20gXCJ+L2FkbWluL2NvbXBvbmVudHMvQ29udGVudEVudHJ5Rm9ybS9DdXN0b21MYXlvdXRcIjtcbmltcG9ydCB7IERlZmF1bHRMYXlvdXQgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL0NvbnRlbnRFbnRyeUZvcm0vRGVmYXVsdExheW91dFwiO1xuaW1wb3J0IHsgQ29udGVudEVudHJ5Rm9ybVByb3ZpZGVyIH0gZnJvbSBcIi4vQ29udGVudEVudHJ5Rm9ybVByb3ZpZGVyXCI7XG5cbmNvbnN0IEZvcm1XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKHtcbiAgICBoZWlnaHQ6IFwiY2FsYygxMDB2aCAtIDI2MHB4KVwiLFxuICAgIG92ZXJmbG93OiBcImF1dG9cIlxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEVudHJ5Rm9ybVByZXZpZXdQcm9wcyB7XG4gICAgY29udGVudE1vZGVsOiBDbXNFZGl0b3JDb250ZW50TW9kZWw7XG59XG5cbmV4cG9ydCBjb25zdCBDb250ZW50RW50cnlGb3JtUHJldmlldyA9IG1ha2VEZWNvcmF0YWJsZShcbiAgICBcIkNvbnRlbnRFbnRyeUZvcm1QcmV2aWV3XCIsXG4gICAgKHByb3BzOiBDb250ZW50RW50cnlGb3JtUHJldmlld1Byb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY29udGVudE1vZGVsIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCBmb3JtUmVuZGVyZXIgPSB1c2VGb3JtUmVuZGVyZXIoY29udGVudE1vZGVsKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbnRlbnRFbnRyeUZvcm1Qcm92aWRlclxuICAgICAgICAgICAgICAgIGVudHJ5PXt7fX1cbiAgICAgICAgICAgICAgICBtb2RlbD17Y29udGVudE1vZGVsfVxuICAgICAgICAgICAgICAgIHBlcnNpc3RFbnRyeT17ZW50cnkgPT4gUHJvbWlzZS5yZXNvbHZlKHsgZW50cnkgfSBhcyB7IGVudHJ5OiBDbXNDb250ZW50RW50cnkgfSl9XG4gICAgICAgICAgICAgICAgY29uZmlybU5hdmlnYXRpb25JZkRpcnR5PXtmYWxzZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TW9kZWxQcm92aWRlciBtb2RlbD17Y29udGVudE1vZGVsfT5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1XcmFwcGVyIGRhdGEtdGVzdGlkPXtcImNtcy1jb250ZW50LWZvcm1cIn0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Zm9ybVJlbmRlcmVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXN0b21MYXlvdXQgbW9kZWw9e2NvbnRlbnRNb2RlbH0gZm9ybVJlbmRlcmVyPXtmb3JtUmVuZGVyZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0TGF5b3V0IG1vZGVsPXtjb250ZW50TW9kZWx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Zvcm1XcmFwcGVyPlxuICAgICAgICAgICAgICAgIDwvTW9kZWxQcm92aWRlcj5cbiAgICAgICAgICAgIDwvQ29udGVudEVudHJ5Rm9ybVByb3ZpZGVyPlxuICAgICAgICApO1xuICAgIH1cbik7XG4iXX0= */",
29
29
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
30
30
  });
31
31
  var ContentEntryFormPreview = exports.ContentEntryFormPreview = (0, _appAdmin.makeDecoratable)("ContentEntryFormPreview", function (props) {
@@ -34,6 +34,11 @@ var ContentEntryFormPreview = exports.ContentEntryFormPreview = (0, _appAdmin.ma
34
34
  return /*#__PURE__*/_react.default.createElement(_ContentEntryFormProvider.ContentEntryFormProvider, {
35
35
  entry: {},
36
36
  model: contentModel,
37
+ persistEntry: function persistEntry(entry) {
38
+ return Promise.resolve({
39
+ entry: entry
40
+ });
41
+ },
37
42
  confirmNavigationIfDirty: false
38
43
  }, /*#__PURE__*/_react.default.createElement(_ModelProvider.ModelProvider, {
39
44
  model: contentModel
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_appAdmin","_ModelProvider","_useFormRenderer","_CustomLayout","_DefaultLayout","_ContentEntryFormProvider","_EMOTION_STRINGIFIED_CSS_ERROR__","FormWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","ContentEntryFormPreview","exports","makeDecoratable","props","contentModel","formRenderer","useFormRenderer","createElement","ContentEntryFormProvider","entry","model","confirmNavigationIfDirty","ModelProvider","CustomLayout","DefaultLayout"],"sources":["ContentEntryFormPreview.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { CmsEditorContentModel } from \"~/types\";\nimport { ModelProvider } from \"~/admin/components/ModelProvider\";\nimport { useFormRenderer } from \"~/admin/components/ContentEntryForm/useFormRenderer\";\nimport { CustomLayout } from \"~/admin/components/ContentEntryForm/CustomLayout\";\nimport { DefaultLayout } from \"~/admin/components/ContentEntryForm/DefaultLayout\";\nimport { ContentEntryFormProvider } from \"./ContentEntryFormProvider\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\nexport interface ContentEntryFormPreviewProps {\n contentModel: CmsEditorContentModel;\n}\n\nexport const ContentEntryFormPreview = makeDecoratable(\n \"ContentEntryFormPreview\",\n (props: ContentEntryFormPreviewProps) => {\n const { contentModel } = props;\n\n const formRenderer = useFormRenderer(contentModel);\n\n return (\n <ContentEntryFormProvider\n entry={{}}\n model={contentModel}\n confirmNavigationIfDirty={false}\n >\n <ModelProvider model={contentModel}>\n <FormWrapper data-testid={\"cms-content-form\"}>\n {formRenderer ? (\n <CustomLayout model={contentModel} formRenderer={formRenderer} />\n ) : (\n <DefaultLayout model={contentModel} />\n )}\n </FormWrapper>\n </ModelProvider>\n </ContentEntryFormProvider>\n );\n }\n);\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,yBAAA,GAAAN,OAAA;AAAsE,SAAAO,iCAAA;AAEtE,IAAMC,WAAW,gBAAG,IAAAC,KAAA,CAAAC,OAAA,EAAO,KAAK,EAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,EAAC,CAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,CAGhC,CAAC;AAMK,IAAMa,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,IAAAE,yBAAe,EAClD,yBAAyB,EACzB,UAACC,KAAmC,EAAK;EACrC,IAAQC,YAAY,GAAKD,KAAK,CAAtBC,YAAY;EAEpB,IAAMC,YAAY,GAAG,IAAAC,gCAAe,EAACF,YAAY,CAAC;EAElD,oBACI1B,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACrB,yBAAA,CAAAsB,wBAAwB;IACrBC,KAAK,EAAE,CAAC,CAAE;IACVC,KAAK,EAAEN,YAAa;IACpBO,wBAAwB,EAAE;EAAM,gBAEhCjC,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACzB,cAAA,CAAA8B,aAAa;IAACF,KAAK,EAAEN;EAAa,gBAC/B1B,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACnB,WAAW;IAAC,eAAa;EAAmB,GACxCiB,YAAY,gBACT3B,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACvB,aAAA,CAAA6B,YAAY;IAACH,KAAK,EAAEN,YAAa;IAACC,YAAY,EAAEA;EAAa,CAAE,CAAC,gBAEjE3B,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACtB,cAAA,CAAA6B,aAAa;IAACJ,KAAK,EAAEN;EAAa,CAAE,CAEhC,CACF,CACO,CAAC;AAEnC,CACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_appAdmin","_ModelProvider","_useFormRenderer","_CustomLayout","_DefaultLayout","_ContentEntryFormProvider","_EMOTION_STRINGIFIED_CSS_ERROR__","FormWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","ContentEntryFormPreview","exports","makeDecoratable","props","contentModel","formRenderer","useFormRenderer","createElement","ContentEntryFormProvider","entry","model","persistEntry","Promise","resolve","confirmNavigationIfDirty","ModelProvider","CustomLayout","DefaultLayout"],"sources":["ContentEntryFormPreview.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { CmsContentEntry, CmsEditorContentModel } from \"~/types\";\nimport { ModelProvider } from \"~/admin/components/ModelProvider\";\nimport { useFormRenderer } from \"~/admin/components/ContentEntryForm/useFormRenderer\";\nimport { CustomLayout } from \"~/admin/components/ContentEntryForm/CustomLayout\";\nimport { DefaultLayout } from \"~/admin/components/ContentEntryForm/DefaultLayout\";\nimport { ContentEntryFormProvider } from \"./ContentEntryFormProvider\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\nexport interface ContentEntryFormPreviewProps {\n contentModel: CmsEditorContentModel;\n}\n\nexport const ContentEntryFormPreview = makeDecoratable(\n \"ContentEntryFormPreview\",\n (props: ContentEntryFormPreviewProps) => {\n const { contentModel } = props;\n\n const formRenderer = useFormRenderer(contentModel);\n\n return (\n <ContentEntryFormProvider\n entry={{}}\n model={contentModel}\n persistEntry={entry => Promise.resolve({ entry } as { entry: CmsContentEntry })}\n confirmNavigationIfDirty={false}\n >\n <ModelProvider model={contentModel}>\n <FormWrapper data-testid={\"cms-content-form\"}>\n {formRenderer ? (\n <CustomLayout model={contentModel} formRenderer={formRenderer} />\n ) : (\n <DefaultLayout model={contentModel} />\n )}\n </FormWrapper>\n </ModelProvider>\n </ContentEntryFormProvider>\n );\n }\n);\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,yBAAA,GAAAN,OAAA;AAAsE,SAAAO,iCAAA;AAEtE,IAAMC,WAAW,gBAAG,IAAAC,KAAA,CAAAC,OAAA,EAAO,KAAK,EAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,EAAC,CAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,CAGhC,CAAC;AAMK,IAAMa,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,IAAAE,yBAAe,EAClD,yBAAyB,EACzB,UAACC,KAAmC,EAAK;EACrC,IAAQC,YAAY,GAAKD,KAAK,CAAtBC,YAAY;EAEpB,IAAMC,YAAY,GAAG,IAAAC,gCAAe,EAACF,YAAY,CAAC;EAElD,oBACI1B,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACrB,yBAAA,CAAAsB,wBAAwB;IACrBC,KAAK,EAAE,CAAC,CAAE;IACVC,KAAK,EAAEN,YAAa;IACpBO,YAAY,EAAE,SAAAA,aAAAF,KAAK;MAAA,OAAIG,OAAO,CAACC,OAAO,CAAC;QAAEJ,KAAK,EAALA;MAAM,CAA+B,CAAC;IAAA,CAAC;IAChFK,wBAAwB,EAAE;EAAM,gBAEhCpC,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACzB,cAAA,CAAAiC,aAAa;IAACL,KAAK,EAAEN;EAAa,gBAC/B1B,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACnB,WAAW;IAAC,eAAa;EAAmB,GACxCiB,YAAY,gBACT3B,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACvB,aAAA,CAAAgC,YAAY;IAACN,KAAK,EAAEN,YAAa;IAACC,YAAY,EAAEA;EAAa,CAAE,CAAC,gBAEjE3B,MAAA,CAAAY,OAAA,CAAAiB,aAAA,CAACtB,cAAA,CAAAgC,aAAa;IAACP,KAAK,EAAEN;EAAa,CAAE,CAEhC,CACF,CACO,CAAC;AAEnC,CACJ,CAAC","ignoreList":[]}
@@ -1,8 +1,10 @@
1
1
  import React from "react";
2
2
  import { FormValidation } from "@webiny/form";
3
3
  import { CmsContentEntry, CmsModel } from "@webiny/app-headless-cms-common/types";
4
+ import { CreateEntryResponse, UpdateEntryRevisionResponse } from "../../contexts/Cms";
4
5
  interface SaveEntryOptions {
5
6
  skipValidators?: string[];
7
+ createNewRevision?: boolean;
6
8
  }
7
9
  export interface ContentEntryFormContext {
8
10
  entry: Partial<CmsContentEntry>;
@@ -13,14 +15,17 @@ export declare const ContentEntryFormContext: React.Context<ContentEntryFormCont
13
15
  export interface SetSaveEntry {
14
16
  (cb: ContentEntryFormContext["saveEntry"]): void;
15
17
  }
18
+ export interface PersistEntry {
19
+ (entry: Partial<CmsContentEntry>, options?: SaveEntryOptions): Promise<CreateEntryResponse | UpdateEntryRevisionResponse>;
20
+ }
16
21
  interface ContentEntryFormProviderProps {
17
22
  entry: Partial<CmsContentEntry>;
18
23
  model: CmsModel;
24
+ persistEntry: PersistEntry;
19
25
  confirmNavigationIfDirty: boolean;
20
26
  onAfterCreate?: (entry: CmsContentEntry) => void;
21
27
  setSaveEntry?: SetSaveEntry;
22
- addItemToListCache?: boolean;
23
28
  children: React.ReactNode;
24
29
  }
25
- export declare const ContentEntryFormProvider: ({ model, entry, children, onAfterCreate, setSaveEntry, addItemToListCache, confirmNavigationIfDirty }: ContentEntryFormProviderProps) => React.JSX.Element;
30
+ export declare const ContentEntryFormProvider: ({ model, entry, children, persistEntry, onAfterCreate, setSaveEntry, confirmNavigationIfDirty }: ContentEntryFormProviderProps) => React.JSX.Element;
26
31
  export {};
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.ContentEntryFormProvider = exports.ContentEntryFormContext = void 0;
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
12
  var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
@@ -17,8 +16,6 @@ var _reactRouter = require("@webiny/react-router");
17
16
  var _form = require("@webiny/form");
18
17
  var _appAdmin = require("@webiny/app-admin");
19
18
  var _appHeadlessCmsCommon = require("@webiny/app-headless-cms-common");
20
- var _ = require("../../..");
21
- var _excluded = ["id"];
22
19
  var promptMessage = "There are some unsaved changes! Are you sure you want to navigate away and discard all changes?";
23
20
  var ContentEntryFormContext = exports.ContentEntryFormContext = /*#__PURE__*/_react.default.createContext(undefined);
24
21
  var formValidationToMap = function formValidationToMap(invalidFields) {
@@ -30,9 +27,9 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
30
27
  var model = _ref.model,
31
28
  entry = _ref.entry,
32
29
  children = _ref.children,
30
+ persistEntry = _ref.persistEntry,
33
31
  onAfterCreate = _ref.onAfterCreate,
34
32
  setSaveEntry = _ref.setSaveEntry,
35
- addItemToListCache = _ref.addItemToListCache,
36
33
  confirmNavigationIfDirty = _ref.confirmNavigationIfDirty;
37
34
  var ref = (0, _react.useRef)(null);
38
35
  var _useState = (0, _react.useState)({}),
@@ -41,7 +38,6 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
41
38
  setInvalidFields = _useState2[1];
42
39
  var _useSnackbar = (0, _appAdmin.useSnackbar)(),
43
40
  showSnackbar = _useSnackbar.showSnackbar;
44
- var contentEntry = (0, _.useContentEntry)();
45
41
  var saveOptionsRef = (0, _react.useRef)({
46
42
  skipValidators: undefined
47
43
  });
@@ -52,37 +48,6 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
52
48
  skipValidators: options.skipValidators
53
49
  });
54
50
  }, []);
55
- var persistEntry = function persistEntry(_ref2) {
56
- var entry = _ref2.entry,
57
- isLocked = _ref2.isLocked;
58
- var options = {
59
- skipValidators: saveOptionsRef.current.skipValidators,
60
- addItemToListCache: addItemToListCache
61
- };
62
- if (!entry.id) {
63
- return contentEntry.createEntry({
64
- entry: entry,
65
- options: options
66
- });
67
- }
68
- if (!isLocked) {
69
- return contentEntry.updateEntryRevision({
70
- entry: entry,
71
- options: {
72
- skipValidators: options?.skipValidators
73
- }
74
- });
75
- }
76
- var id = entry.id,
77
- input = (0, _objectWithoutProperties2.default)(entry, _excluded);
78
- return contentEntry.createEntryRevisionFrom({
79
- id: id,
80
- input: input,
81
- options: {
82
- skipValidators: options?.skipValidators
83
- }
84
- });
85
- };
86
51
  var onFormSubmit = async function onFormSubmit(data) {
87
52
  var fieldsIds = model.fields.map(function (item) {
88
53
  return item.fieldId;
@@ -90,11 +55,11 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
90
55
  var formData = (0, _pick.default)(data, (0, _toConsumableArray2.default)(fieldsIds));
91
56
  var gqlData = (0, _appHeadlessCmsCommon.prepareFormData)(formData, model.fields);
92
57
  var isNewEntry = data.id === undefined;
93
- var _await$persistEntry = await persistEntry({
94
- entry: (0, _objectSpread3.default)({
95
- id: data.id
96
- }, gqlData),
97
- isLocked: data.meta?.locked === true
58
+ var _await$persistEntry = await persistEntry((0, _objectSpread3.default)({
59
+ id: data.id
60
+ }, gqlData), {
61
+ skipValidators: saveOptionsRef.current.skipValidators,
62
+ createNewRevision: data.meta?.locked
98
63
  }),
99
64
  entry = _await$persistEntry.entry,
100
65
  error = _await$persistEntry.error;
@@ -103,6 +68,7 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
103
68
  setInvalidFields(error.data);
104
69
  return;
105
70
  }
71
+ showSnackbar("Entry saved successfully!");
106
72
  setInvalidFields({});
107
73
  var isNewRevision = !isNewEntry && data.id !== entry.id;
108
74
  if ((isNewEntry || isNewRevision) && onAfterCreate) {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_pick","_interopRequireDefault","_reactRouter","_form","_appAdmin","_appHeadlessCmsCommon","_","_excluded","promptMessage","ContentEntryFormContext","exports","React","createContext","undefined","formValidationToMap","invalidFields","Object","keys","reduce","acc","key","_objectSpread3","default","_defineProperty2","message","ContentEntryFormProvider","_ref","model","entry","children","onAfterCreate","setSaveEntry","addItemToListCache","confirmNavigationIfDirty","ref","useRef","_useState","useState","_useState2","_slicedToArray2","setInvalidFields","_useSnackbar","useSnackbar","showSnackbar","contentEntry","useContentEntry","saveOptionsRef","skipValidators","saveEntry","useCallback","options","arguments","length","current","submit","persistEntry","_ref2","isLocked","id","createEntry","updateEntryRevision","input","_objectWithoutProperties2","createEntryRevisionFrom","onFormSubmit","data","fieldsIds","fields","map","item","fieldId","formData","pick","_toConsumableArray2","gqlData","prepareFormData","isNewEntry","_await$persistEntry","meta","locked","error","isNewRevision","Promise","resolve","setTimeout","useEffect","createElement","Form","onSubmit","onInvalid","formProps","context","Provider","value","CompositionScope","name","Prompt","when","form","isPristine"],"sources":["ContentEntryFormProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { Form, FormAPI, FormOnSubmit, FormValidation } from \"@webiny/form\";\nimport { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types\";\nimport { CompositionScope, useSnackbar } from \"@webiny/app-admin\";\nimport { prepareFormData } from \"@webiny/app-headless-cms-common\";\nimport { useContentEntry } from \"~/index\";\nimport { PartialCmsContentEntryWithId } from \"~/admin/contexts/Cms\";\n\nconst promptMessage =\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\";\n\ninterface SaveEntryOptions {\n skipValidators?: string[];\n}\n\nexport interface ContentEntryFormContext {\n entry: Partial<CmsContentEntry>;\n saveEntry: (options?: SaveEntryOptions) => Promise<CmsContentEntry | null>;\n invalidFields: FormValidation;\n}\n\nexport const ContentEntryFormContext = React.createContext<ContentEntryFormContext | undefined>(\n undefined\n);\n\ninterface InvalidFieldError {\n fieldId: string;\n error: string;\n}\n\ninterface PersistEntryParams {\n entry: PartialCmsContentEntryWithId;\n isLocked: boolean;\n}\n\nexport interface SetSaveEntry {\n (cb: ContentEntryFormContext[\"saveEntry\"]): void;\n}\n\ninterface ContentEntryFormProviderProps {\n entry: Partial<CmsContentEntry>;\n model: CmsModel;\n confirmNavigationIfDirty: boolean;\n onAfterCreate?: (entry: CmsContentEntry) => void;\n setSaveEntry?: SetSaveEntry;\n addItemToListCache?: boolean;\n children: React.ReactNode;\n}\n\nconst formValidationToMap = (invalidFields: FormValidation) => {\n return Object.keys(invalidFields).reduce(\n (acc, key) => ({ ...acc, [key]: invalidFields[key].message }),\n {} as Record<string, string | undefined>\n );\n};\n\nexport const ContentEntryFormProvider = ({\n model,\n entry,\n children,\n onAfterCreate,\n setSaveEntry,\n addItemToListCache,\n confirmNavigationIfDirty\n}: ContentEntryFormProviderProps) => {\n const ref = useRef<FormAPI<CmsContentEntry> | null>(null);\n const [invalidFields, setInvalidFields] = useState({});\n const { showSnackbar } = useSnackbar();\n const contentEntry = useContentEntry();\n const saveOptionsRef = useRef<SaveEntryOptions>({ skipValidators: undefined });\n\n const saveEntry = useCallback(async (options: SaveEntryOptions = {}) => {\n saveOptionsRef.current.skipValidators = options.skipValidators;\n\n return ref.current!.submit(undefined, {\n skipValidators: options.skipValidators\n }) as unknown as Promise<CmsContentEntry | null>;\n }, []);\n\n const persistEntry = ({ entry, isLocked }: PersistEntryParams) => {\n const options = {\n skipValidators: saveOptionsRef.current.skipValidators,\n addItemToListCache\n };\n\n if (!entry.id) {\n return contentEntry.createEntry({ entry, options });\n }\n\n if (!isLocked) {\n return contentEntry.updateEntryRevision({\n entry,\n options: { skipValidators: options?.skipValidators }\n });\n }\n\n const { id, ...input } = entry;\n\n return contentEntry.createEntryRevisionFrom({\n id,\n input,\n options: { skipValidators: options?.skipValidators }\n });\n };\n\n const onFormSubmit: FormOnSubmit<CmsContentEntry> = async data => {\n const fieldsIds = model.fields.map(item => item.fieldId);\n const formData = pick(data, [...fieldsIds]);\n\n const gqlData = prepareFormData(formData, model.fields) as Partial<CmsContentEntry>;\n const isNewEntry = data.id === undefined;\n\n const { entry, error } = await persistEntry({\n entry: { id: data.id, ...gqlData },\n isLocked: data.meta?.locked === true\n });\n\n if (error) {\n showSnackbar(error.message);\n setInvalidFields(error.data as InvalidFieldError[]);\n return;\n }\n\n setInvalidFields({});\n\n const isNewRevision = !isNewEntry && data.id !== entry.id;\n\n if ((isNewEntry || isNewRevision) && onAfterCreate) {\n // We need a timeout to let the Prompt component update.\n await new Promise<void>(resolve => {\n setTimeout(() => {\n onAfterCreate(entry);\n resolve();\n }, 50);\n });\n }\n\n return entry;\n };\n\n useEffect(() => {\n if (typeof setSaveEntry === \"function\") {\n setSaveEntry(saveEntry);\n }\n }, [setSaveEntry]);\n\n return (\n <Form<CmsContentEntry>\n onSubmit={onFormSubmit}\n data={entry}\n ref={ref}\n invalidFields={invalidFields}\n onInvalid={invalidFields => {\n setInvalidFields(formValidationToMap(invalidFields));\n showSnackbar(\"Some fields did not pass the validation. Please check the form.\");\n }}\n >\n {formProps => {\n const context: ContentEntryFormContext = {\n entry: formProps.data,\n saveEntry,\n invalidFields\n };\n return (\n <ContentEntryFormContext.Provider value={context}>\n {confirmNavigationIfDirty ? (\n <CompositionScope name={\"cms.contentEntryForm\"}>\n <Prompt when={!formProps.form.isPristine} message={promptMessage} />\n </CompositionScope>\n ) : null}\n {children}\n </ContentEntryFormContext.Provider>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_pick","_interopRequireDefault","_reactRouter","_form","_appAdmin","_appHeadlessCmsCommon","promptMessage","ContentEntryFormContext","exports","React","createContext","undefined","formValidationToMap","invalidFields","Object","keys","reduce","acc","key","_objectSpread3","default","_defineProperty2","message","ContentEntryFormProvider","_ref","model","entry","children","persistEntry","onAfterCreate","setSaveEntry","confirmNavigationIfDirty","ref","useRef","_useState","useState","_useState2","_slicedToArray2","setInvalidFields","_useSnackbar","useSnackbar","showSnackbar","saveOptionsRef","skipValidators","saveEntry","useCallback","options","arguments","length","current","submit","onFormSubmit","data","fieldsIds","fields","map","item","fieldId","formData","pick","_toConsumableArray2","gqlData","prepareFormData","isNewEntry","id","_await$persistEntry","createNewRevision","meta","locked","error","isNewRevision","Promise","resolve","setTimeout","useEffect","createElement","Form","onSubmit","onInvalid","formProps","context","Provider","value","CompositionScope","name","Prompt","when","form","isPristine"],"sources":["ContentEntryFormProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { Form, FormAPI, FormOnSubmit, FormValidation } from \"@webiny/form\";\nimport { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types\";\nimport { CompositionScope, useSnackbar } from \"@webiny/app-admin\";\nimport { prepareFormData } from \"@webiny/app-headless-cms-common\";\nimport { CreateEntryResponse, UpdateEntryRevisionResponse } from \"~/admin/contexts/Cms\";\n\nconst promptMessage =\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\";\n\ninterface SaveEntryOptions {\n skipValidators?: string[];\n createNewRevision?: boolean;\n}\n\nexport interface ContentEntryFormContext {\n entry: Partial<CmsContentEntry>;\n saveEntry: (options?: SaveEntryOptions) => Promise<CmsContentEntry | null>;\n invalidFields: FormValidation;\n}\n\nexport const ContentEntryFormContext = React.createContext<ContentEntryFormContext | undefined>(\n undefined\n);\n\ninterface InvalidFieldError {\n fieldId: string;\n error: string;\n}\n\nexport interface SetSaveEntry {\n (cb: ContentEntryFormContext[\"saveEntry\"]): void;\n}\n\nexport interface PersistEntry {\n (entry: Partial<CmsContentEntry>, options?: SaveEntryOptions): Promise<\n CreateEntryResponse | UpdateEntryRevisionResponse\n >;\n}\n\ninterface ContentEntryFormProviderProps {\n entry: Partial<CmsContentEntry>;\n model: CmsModel;\n persistEntry: PersistEntry;\n confirmNavigationIfDirty: boolean;\n onAfterCreate?: (entry: CmsContentEntry) => void;\n setSaveEntry?: SetSaveEntry;\n children: React.ReactNode;\n}\n\nconst formValidationToMap = (invalidFields: FormValidation) => {\n return Object.keys(invalidFields).reduce(\n (acc, key) => ({ ...acc, [key]: invalidFields[key].message }),\n {} as Record<string, string | undefined>\n );\n};\n\nexport const ContentEntryFormProvider = ({\n model,\n entry,\n children,\n persistEntry,\n onAfterCreate,\n setSaveEntry,\n confirmNavigationIfDirty\n}: ContentEntryFormProviderProps) => {\n const ref = useRef<FormAPI<CmsContentEntry> | null>(null);\n const [invalidFields, setInvalidFields] = useState({});\n const { showSnackbar } = useSnackbar();\n const saveOptionsRef = useRef<SaveEntryOptions>({ skipValidators: undefined });\n\n const saveEntry = useCallback(async (options: SaveEntryOptions = {}) => {\n saveOptionsRef.current.skipValidators = options.skipValidators;\n\n return ref.current!.submit(undefined, {\n skipValidators: options.skipValidators\n }) as unknown as Promise<CmsContentEntry | null>;\n }, []);\n\n const onFormSubmit: FormOnSubmit<CmsContentEntry> = async data => {\n const fieldsIds = model.fields.map(item => item.fieldId);\n const formData = pick(data, [...fieldsIds]);\n\n const gqlData = prepareFormData(formData, model.fields) as Partial<CmsContentEntry>;\n const isNewEntry = data.id === undefined;\n\n const { entry, error } = await persistEntry(\n { id: data.id, ...gqlData },\n {\n skipValidators: saveOptionsRef.current.skipValidators,\n createNewRevision: data.meta?.locked\n }\n );\n\n if (error) {\n showSnackbar(error.message);\n setInvalidFields(error.data as InvalidFieldError[]);\n return;\n }\n\n showSnackbar(\"Entry saved successfully!\");\n setInvalidFields({});\n\n const isNewRevision = !isNewEntry && data.id !== entry.id;\n\n if ((isNewEntry || isNewRevision) && onAfterCreate) {\n // We need a timeout to let the Prompt component update.\n await new Promise<void>(resolve => {\n setTimeout(() => {\n onAfterCreate(entry);\n resolve();\n }, 50);\n });\n }\n\n return entry;\n };\n\n useEffect(() => {\n if (typeof setSaveEntry === \"function\") {\n setSaveEntry(saveEntry);\n }\n }, [setSaveEntry]);\n\n return (\n <Form<CmsContentEntry>\n onSubmit={onFormSubmit}\n data={entry}\n ref={ref}\n invalidFields={invalidFields}\n onInvalid={invalidFields => {\n setInvalidFields(formValidationToMap(invalidFields));\n showSnackbar(\"Some fields did not pass the validation. Please check the form.\");\n }}\n >\n {formProps => {\n const context: ContentEntryFormContext = {\n entry: formProps.data,\n saveEntry,\n invalidFields\n };\n return (\n <ContentEntryFormContext.Provider value={context}>\n {confirmNavigationIfDirty ? (\n <CompositionScope name={\"cms.contentEntryForm\"}>\n <Prompt when={!formProps.form.isPristine} message={promptMessage} />\n </CompositionScope>\n ) : null}\n {children}\n </ContentEntryFormContext.Provider>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -37,7 +37,7 @@ var DeleteEntry = exports.DeleteEntry = function DeleteEntry() {
37
37
  }
38
38
  return /*#__PURE__*/_react.default.createElement(OptionsMenuItem, {
39
39
  icon: /*#__PURE__*/_react.default.createElement(_delete.ReactComponent, null),
40
- label: "Trash",
40
+ label: "Trash entry",
41
41
  onAction: deleteEntry,
42
42
  disabled: !entry.id || loading,
43
43
  "data-testid": "cms.content-form.header.delete"
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_delete","_appAco","_hooks","_contentEntries","_useContentEntry2","_excluded","DeleteEntry","exports","_useNavigateFolder","useNavigateFolder","navigateToFolder","_useContentEntry","useContentEntry","entry","loading","contentEntry","_objectWithoutProperties2","default","_usePermission","usePermission","canDelete","_ContentEntryEditorCo","ContentEntryEditorConfig","Actions","MenuItemAction","useOptionsMenuItem","OptionsMenuItem","deleteEntry","response","id","entryId","wbyAco_location","folderId","createElement","icon","ReactComponent","label","onAction","disabled"],"sources":["DeleteEntry.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete.svg\";\nimport { useNavigateFolder } from \"@webiny/app-aco\";\nimport { usePermission } from \"~/admin/hooks\";\nimport { ContentEntryEditorConfig } from \"~/admin/config/contentEntries\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\n\nexport const DeleteEntry = () => {\n const { navigateToFolder } = useNavigateFolder();\n const { entry, loading, ...contentEntry } = useContentEntry();\n const { canDelete } = usePermission();\n\n const { OptionsMenuItem } =\n ContentEntryEditorConfig.Actions.MenuItemAction.useOptionsMenuItem();\n\n const deleteEntry = async () => {\n const response = await contentEntry.deleteEntry({ id: entry.entryId });\n if (typeof response === \"boolean\") {\n navigateToFolder(entry.wbyAco_location.folderId);\n }\n };\n\n if (!canDelete(entry, \"cms.contentEntry\")) {\n return null;\n }\n\n return (\n <OptionsMenuItem\n icon={<DeleteIcon />}\n label={\"Trash\"}\n onAction={deleteEntry}\n disabled={!entry.id || loading}\n data-testid={\"cms.content-form.header.delete\"}\n />\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AAAqF,IAAAM,SAAA;AAE9E,IAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,SAAdA,WAAWA,CAAA,EAAS;EAC7B,IAAAE,kBAAA,GAA6B,IAAAC,yBAAiB,EAAC,CAAC;IAAxCC,gBAAgB,GAAAF,kBAAA,CAAhBE,gBAAgB;EACxB,IAAAC,gBAAA,GAA4C,IAAAC,iCAAe,EAAC,CAAC;IAArDC,KAAK,GAAAF,gBAAA,CAALE,KAAK;IAAEC,OAAO,GAAAH,gBAAA,CAAPG,OAAO;IAAKC,YAAY,OAAAC,yBAAA,CAAAC,OAAA,EAAAN,gBAAA,EAAAN,SAAA;EACvC,IAAAa,cAAA,GAAsB,IAAAC,oBAAa,EAAC,CAAC;IAA7BC,SAAS,GAAAF,cAAA,CAATE,SAAS;EAEjB,IAAAC,qBAAA,GACIC,wCAAwB,CAACC,OAAO,CAACC,cAAc,CAACC,kBAAkB,CAAC,CAAC;IADhEC,eAAe,GAAAL,qBAAA,CAAfK,eAAe;EAGvB,IAAMC,WAAW,GAAG,eAAdA,WAAWA,CAAA,EAAe;IAC5B,IAAMC,QAAQ,GAAG,MAAMb,YAAY,CAACY,WAAW,CAAC;MAAEE,EAAE,EAAEhB,KAAK,CAACiB;IAAQ,CAAC,CAAC;IACtE,IAAI,OAAOF,QAAQ,KAAK,SAAS,EAAE;MAC/BlB,gBAAgB,CAACG,KAAK,CAACkB,eAAe,CAACC,QAAQ,CAAC;IACpD;EACJ,CAAC;EAED,IAAI,CAACZ,SAAS,CAACP,KAAK,EAAE,kBAAkB,CAAC,EAAE;IACvC,OAAO,IAAI;EACf;EAEA,oBACIhB,MAAA,CAAAoB,OAAA,CAAAgB,aAAA,CAACP,eAAe;IACZQ,IAAI,eAAErC,MAAA,CAAAoB,OAAA,CAAAgB,aAAA,CAACjC,OAAA,CAAAmC,cAAU,MAAE,CAAE;IACrBC,KAAK,EAAE,OAAQ;IACfC,QAAQ,EAAEV,WAAY;IACtBW,QAAQ,EAAE,CAACzB,KAAK,CAACgB,EAAE,IAAIf,OAAQ;IAC/B,eAAa;EAAiC,CACjD,CAAC;AAEV,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_delete","_appAco","_hooks","_contentEntries","_useContentEntry2","_excluded","DeleteEntry","exports","_useNavigateFolder","useNavigateFolder","navigateToFolder","_useContentEntry","useContentEntry","entry","loading","contentEntry","_objectWithoutProperties2","default","_usePermission","usePermission","canDelete","_ContentEntryEditorCo","ContentEntryEditorConfig","Actions","MenuItemAction","useOptionsMenuItem","OptionsMenuItem","deleteEntry","response","id","entryId","wbyAco_location","folderId","createElement","icon","ReactComponent","label","onAction","disabled"],"sources":["DeleteEntry.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete.svg\";\nimport { useNavigateFolder } from \"@webiny/app-aco\";\nimport { usePermission } from \"~/admin/hooks\";\nimport { ContentEntryEditorConfig } from \"~/admin/config/contentEntries\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\n\nexport const DeleteEntry = () => {\n const { navigateToFolder } = useNavigateFolder();\n const { entry, loading, ...contentEntry } = useContentEntry();\n const { canDelete } = usePermission();\n\n const { OptionsMenuItem } =\n ContentEntryEditorConfig.Actions.MenuItemAction.useOptionsMenuItem();\n\n const deleteEntry = async () => {\n const response = await contentEntry.deleteEntry({ id: entry.entryId });\n if (typeof response === \"boolean\") {\n navigateToFolder(entry.wbyAco_location.folderId);\n }\n };\n\n if (!canDelete(entry, \"cms.contentEntry\")) {\n return null;\n }\n\n return (\n <OptionsMenuItem\n icon={<DeleteIcon />}\n label={\"Trash entry\"}\n onAction={deleteEntry}\n disabled={!entry.id || loading}\n data-testid={\"cms.content-form.header.delete\"}\n />\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AAAqF,IAAAM,SAAA;AAE9E,IAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,SAAdA,WAAWA,CAAA,EAAS;EAC7B,IAAAE,kBAAA,GAA6B,IAAAC,yBAAiB,EAAC,CAAC;IAAxCC,gBAAgB,GAAAF,kBAAA,CAAhBE,gBAAgB;EACxB,IAAAC,gBAAA,GAA4C,IAAAC,iCAAe,EAAC,CAAC;IAArDC,KAAK,GAAAF,gBAAA,CAALE,KAAK;IAAEC,OAAO,GAAAH,gBAAA,CAAPG,OAAO;IAAKC,YAAY,OAAAC,yBAAA,CAAAC,OAAA,EAAAN,gBAAA,EAAAN,SAAA;EACvC,IAAAa,cAAA,GAAsB,IAAAC,oBAAa,EAAC,CAAC;IAA7BC,SAAS,GAAAF,cAAA,CAATE,SAAS;EAEjB,IAAAC,qBAAA,GACIC,wCAAwB,CAACC,OAAO,CAACC,cAAc,CAACC,kBAAkB,CAAC,CAAC;IADhEC,eAAe,GAAAL,qBAAA,CAAfK,eAAe;EAGvB,IAAMC,WAAW,GAAG,eAAdA,WAAWA,CAAA,EAAe;IAC5B,IAAMC,QAAQ,GAAG,MAAMb,YAAY,CAACY,WAAW,CAAC;MAAEE,EAAE,EAAEhB,KAAK,CAACiB;IAAQ,CAAC,CAAC;IACtE,IAAI,OAAOF,QAAQ,KAAK,SAAS,EAAE;MAC/BlB,gBAAgB,CAACG,KAAK,CAACkB,eAAe,CAACC,QAAQ,CAAC;IACpD;EACJ,CAAC;EAED,IAAI,CAACZ,SAAS,CAACP,KAAK,EAAE,kBAAkB,CAAC,EAAE;IACvC,OAAO,IAAI;EACf;EAEA,oBACIhB,MAAA,CAAAoB,OAAA,CAAAgB,aAAA,CAACP,eAAe;IACZQ,IAAI,eAAErC,MAAA,CAAAoB,OAAA,CAAAgB,aAAA,CAACjC,OAAA,CAAAmC,cAAU,MAAE,CAAE;IACrBC,KAAK,EAAE,aAAc;IACrBC,QAAQ,EAAEV,WAAY;IACtBW,QAAQ,EAAE,CAACzB,KAAK,CAACgB,EAAE,IAAIf,OAAQ;IAC/B,eAAa;EAAiC,CACjD,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const SaveAction: () => React.JSX.Element;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SaveAction = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _ContentEntryEditorConfig = require("../../../../ContentEntryEditorConfig");
10
+ var _useContentEntryForm2 = require("../useContentEntryForm");
11
+ var Actions = _ContentEntryEditorConfig.ContentEntryEditorConfig.Actions;
12
+ var SaveAction = exports.SaveAction = function SaveAction() {
13
+ var useButtons = Actions.ButtonAction.useButtons;
14
+ var _useButtons = useButtons(),
15
+ ButtonPrimary = _useButtons.ButtonPrimary;
16
+ var _useContentEntryForm = (0, _useContentEntryForm2.useContentEntryForm)(),
17
+ saveEntry = _useContentEntryForm.saveEntry;
18
+ return /*#__PURE__*/_react.default.createElement(ButtonPrimary, {
19
+ "data-testid": "cms-content-save-content-button",
20
+ onAction: saveEntry
21
+ }, "Save");
22
+ };
23
+
24
+ //# sourceMappingURL=SaveAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_ContentEntryEditorConfig","_useContentEntryForm2","Actions","ContentEntryEditorConfig","SaveAction","exports","useButtons","ButtonAction","_useButtons","ButtonPrimary","_useContentEntryForm","useContentEntryForm","saveEntry","default","createElement","onAction"],"sources":["SaveAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"~/ContentEntryEditorConfig\";\nimport { useContentEntryForm } from \"~/admin/components/ContentEntryForm/useContentEntryForm\";\n\nconst { Actions } = ContentEntryEditorConfig;\n\nexport const SaveAction = () => {\n const { useButtons } = Actions.ButtonAction;\n const { ButtonPrimary } = useButtons();\n const { saveEntry } = useContentEntryForm();\n\n return (\n <ButtonPrimary data-testid={\"cms-content-save-content-button\"} onAction={saveEntry}>\n Save\n </ButtonPrimary>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAEA,IAAQG,OAAO,GAAKC,kDAAwB,CAApCD,OAAO;AAER,IAAME,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,SAAbA,UAAUA,CAAA,EAAS;EAC5B,IAAQE,UAAU,GAAKJ,OAAO,CAACK,YAAY,CAAnCD,UAAU;EAClB,IAAAE,WAAA,GAA0BF,UAAU,CAAC,CAAC;IAA9BG,aAAa,GAAAD,WAAA,CAAbC,aAAa;EACrB,IAAAC,oBAAA,GAAsB,IAAAC,yCAAmB,EAAC,CAAC;IAAnCC,SAAS,GAAAF,oBAAA,CAATE,SAAS;EAEjB,oBACIf,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACL,aAAa;IAAC,eAAa,iCAAkC;IAACM,QAAQ,EAAEH;EAAU,GAAC,MAErE,CAAC;AAExB,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ export interface SingletonHeaderProps {
3
+ title: string;
4
+ }
5
+ export declare const SingletonHeader: ({ title }: SingletonHeaderProps) => React.JSX.Element;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SingletonHeader = void 0;
8
+ var _base = _interopRequireDefault(require("@emotion/styled/base"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _appAdmin = require("@webiny/app-admin");
11
+ var _SaveAction = require("./SaveAction");
12
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
13
+ var ToolbarGrid = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
14
+ target: "et5j2kp2"
15
+ } : {
16
+ target: "et5j2kp2",
17
+ label: "ToolbarGrid"
18
+ })(process.env.NODE_ENV === "production" ? {
19
+ name: "10cyi6j",
20
+ styles: "padding:15px;border-bottom:1px solid var(--mdc-theme-on-background);display:flex;justify-content:space-between;align-items:center"
21
+ } : {
22
+ name: "10cyi6j",
23
+ styles: "padding:15px;border-bottom:1px solid var(--mdc-theme-on-background);display:flex;justify-content:space-between;align-items:center",
24
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpbmdsZXRvbkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSzhCIiwiZmlsZSI6IlNpbmdsZXRvbkhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBCdXR0b25zIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluXCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IFNhdmVBY3Rpb24gfSBmcm9tIFwiLi9TYXZlQWN0aW9uXCI7XG5cbmNvbnN0IFRvb2xiYXJHcmlkID0gc3R5bGVkLmRpdmBcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1tZGMtdGhlbWUtb24tYmFja2dyb3VuZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IE1vZGVsTmFtZSA9IHN0eWxlZC5kaXZgXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1kYy10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5KTtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuYDtcblxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGV0b25IZWFkZXJQcm9wcyB7XG4gICAgdGl0bGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNpbmdsZXRvbkhlYWRlciA9ICh7IHRpdGxlIH06IFNpbmdsZXRvbkhlYWRlclByb3BzKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPFRvb2xiYXJHcmlkPlxuICAgICAgICAgICAgPE1vZGVsTmFtZT57dGl0bGV9PC9Nb2RlbE5hbWU+XG4gICAgICAgICAgICA8QWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9ucyBhY3Rpb25zPXtbeyBuYW1lOiBcInNhdmVcIiwgZWxlbWVudDogPFNhdmVBY3Rpb24gLz4gfV19IC8+XG4gICAgICAgICAgICA8L0FjdGlvbnM+XG4gICAgICAgIDwvVG9vbGJhckdyaWQ+XG4gICAgKTtcbn07XG4iXX0= */",
25
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
26
+ });
27
+ var Actions = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
28
+ target: "et5j2kp1"
29
+ } : {
30
+ target: "et5j2kp1",
31
+ label: "Actions"
32
+ })(process.env.NODE_ENV === "production" ? {
33
+ name: "s5xdrg",
34
+ styles: "display:flex;align-items:center"
35
+ } : {
36
+ name: "s5xdrg",
37
+ styles: "display:flex;align-items:center",
38
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpbmdsZXRvbkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYTBCIiwiZmlsZSI6IlNpbmdsZXRvbkhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBCdXR0b25zIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluXCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IFNhdmVBY3Rpb24gfSBmcm9tIFwiLi9TYXZlQWN0aW9uXCI7XG5cbmNvbnN0IFRvb2xiYXJHcmlkID0gc3R5bGVkLmRpdmBcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1tZGMtdGhlbWUtb24tYmFja2dyb3VuZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IE1vZGVsTmFtZSA9IHN0eWxlZC5kaXZgXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1kYy10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5KTtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuYDtcblxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGV0b25IZWFkZXJQcm9wcyB7XG4gICAgdGl0bGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNpbmdsZXRvbkhlYWRlciA9ICh7IHRpdGxlIH06IFNpbmdsZXRvbkhlYWRlclByb3BzKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPFRvb2xiYXJHcmlkPlxuICAgICAgICAgICAgPE1vZGVsTmFtZT57dGl0bGV9PC9Nb2RlbE5hbWU+XG4gICAgICAgICAgICA8QWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9ucyBhY3Rpb25zPXtbeyBuYW1lOiBcInNhdmVcIiwgZWxlbWVudDogPFNhdmVBY3Rpb24gLz4gfV19IC8+XG4gICAgICAgICAgICA8L0FjdGlvbnM+XG4gICAgICAgIDwvVG9vbGJhckdyaWQ+XG4gICAgKTtcbn07XG4iXX0= */",
39
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
40
+ });
41
+ var ModelName = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
42
+ target: "et5j2kp0"
43
+ } : {
44
+ target: "et5j2kp0",
45
+ label: "ModelName"
46
+ })(process.env.NODE_ENV === "production" ? {
47
+ name: "8yntog",
48
+ styles: "font-family:var(--mdc-typography-font-family);padding:10px 0;font-size:24px"
49
+ } : {
50
+ name: "8yntog",
51
+ styles: "font-family:var(--mdc-typography-font-family);padding:10px 0;font-size:24px",
52
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpbmdsZXRvbkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0I0QiIsImZpbGUiOiJTaW5nbGV0b25IZWFkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQnV0dG9ucyB9IGZyb20gXCJAd2ViaW55L2FwcC1hZG1pblwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBTYXZlQWN0aW9uIH0gZnJvbSBcIi4vU2F2ZUFjdGlvblwiO1xuXG5jb25zdCBUb29sYmFyR3JpZCA9IHN0eWxlZC5kaXZgXG4gICAgcGFkZGluZzogMTVweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbWRjLXRoZW1lLW9uLWJhY2tncm91bmQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBBY3Rpb25zID0gc3R5bGVkLmRpdmBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBNb2RlbE5hbWUgPSBzdHlsZWQuZGl2YFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tZGMtdHlwb2dyYXBoeS1mb250LWZhbWlseSk7XG4gICAgcGFkZGluZzogMTBweCAwO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2luZ2xldG9uSGVhZGVyUHJvcHMge1xuICAgIHRpdGxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTaW5nbGV0b25IZWFkZXIgPSAoeyB0aXRsZSB9OiBTaW5nbGV0b25IZWFkZXJQcm9wcykgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxUb29sYmFyR3JpZD5cbiAgICAgICAgICAgIDxNb2RlbE5hbWU+e3RpdGxlfTwvTW9kZWxOYW1lPlxuICAgICAgICAgICAgPEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbnMgYWN0aW9ucz17W3sgbmFtZTogXCJzYXZlXCIsIGVsZW1lbnQ6IDxTYXZlQWN0aW9uIC8+IH1dfSAvPlxuICAgICAgICAgICAgPC9BY3Rpb25zPlxuICAgICAgICA8L1Rvb2xiYXJHcmlkPlxuICAgICk7XG59O1xuIl19 */",
53
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
54
+ });
55
+ var SingletonHeader = exports.SingletonHeader = function SingletonHeader(_ref) {
56
+ var title = _ref.title;
57
+ return /*#__PURE__*/_react.default.createElement(ToolbarGrid, null, /*#__PURE__*/_react.default.createElement(ModelName, null, title), /*#__PURE__*/_react.default.createElement(Actions, null, /*#__PURE__*/_react.default.createElement(_appAdmin.Buttons, {
58
+ actions: [{
59
+ name: "save",
60
+ element: /*#__PURE__*/_react.default.createElement(_SaveAction.SaveAction, null)
61
+ }]
62
+ })));
63
+ };
64
+
65
+ //# sourceMappingURL=SingletonHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_appAdmin","_SaveAction","_EMOTION_STRINGIFIED_CSS_ERROR__","ToolbarGrid","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","Actions","ModelName","SingletonHeader","exports","_ref","title","createElement","Buttons","actions","element","SaveAction"],"sources":["SingletonHeader.tsx"],"sourcesContent":["import React from \"react\";\nimport { Buttons } from \"@webiny/app-admin\";\nimport styled from \"@emotion/styled\";\nimport { SaveAction } from \"./SaveAction\";\n\nconst ToolbarGrid = styled.div`\n padding: 15px;\n border-bottom: 1px solid var(--mdc-theme-on-background);\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst Actions = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ModelName = styled.div`\n font-family: var(--mdc-typography-font-family);\n padding: 10px 0;\n font-size: 24px;\n`;\n\nexport interface SingletonHeaderProps {\n title: string;\n}\n\nexport const SingletonHeader = ({ title }: SingletonHeaderProps) => {\n return (\n <ToolbarGrid>\n <ModelName>{title}</ModelName>\n <Actions>\n <Buttons actions={[{ name: \"save\", element: <SaveAction /> }]} />\n </Actions>\n </ToolbarGrid>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAA0C,SAAAG,iCAAA;AAE1C,IAAMC,WAAW,oBAAAC,KAAA,CAAAC,OAAA,SAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,EAMhB;AAED,IAAMa,OAAO,oBAAAX,KAAA,CAAAC,OAAA,SAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,EAGZ;AAED,IAAMc,SAAS,oBAAAZ,KAAA,CAAAC,OAAA,SAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAC,MAAA;AAAA;EAAAA,MAAA;EAAAC,KAAA;AAAA,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAAAG,IAAA;EAAAC,MAAA;AAAA;EAAAD,IAAA;EAAAC,MAAA;EAAAC,GAAA;EAAAC,QAAA,EAAAZ;AAAA,EAId;AAMM,IAAMe,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAAlBA,eAAeA,CAAAE,IAAA,EAAwC;EAAA,IAAlCC,KAAK,GAAAD,IAAA,CAALC,KAAK;EACnC,oBACIvB,MAAA,CAAAQ,OAAA,CAAAgB,aAAA,CAAClB,WAAW,qBACRN,MAAA,CAAAQ,OAAA,CAAAgB,aAAA,CAACL,SAAS,QAAEI,KAAiB,CAAC,eAC9BvB,MAAA,CAAAQ,OAAA,CAAAgB,aAAA,CAACN,OAAO,qBACJlB,MAAA,CAAAQ,OAAA,CAAAgB,aAAA,CAACrB,SAAA,CAAAsB,OAAO;IAACC,OAAO,EAAE,CAAC;MAAEZ,IAAI,EAAE,MAAM;MAAEa,OAAO,eAAE3B,MAAA,CAAAQ,OAAA,CAAAgB,aAAA,CAACpB,WAAA,CAAAwB,UAAU,MAAE;IAAE,CAAC;EAAE,CAAE,CAC3D,CACA,CAAC;AAEtB,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export * from "./SingletonHeader";