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

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 (48) hide show
  1. package/admin/components/ContentEntryForm/ContentEntryForm.js +43 -7
  2. package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -1
  3. package/admin/components/ContentEntryForm/useContentEntryForm.d.ts +1 -1
  4. package/admin/components/ContentEntryForm/useContentEntryForm.js +9 -3
  5. package/admin/components/ContentEntryForm/useContentEntryForm.js.map +1 -1
  6. package/admin/graphql/contentEntries.js.map +1 -1
  7. package/admin/icons/draft.svg +3 -0
  8. package/admin/icons/published.svg +3 -0
  9. package/admin/icons/unpublished.svg +3 -0
  10. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js.map +1 -1
  11. package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -1
  12. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +29 -3
  13. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
  14. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js +5 -3
  15. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js.map +1 -1
  16. package/admin/plugins/fieldRenderers/ref/components/EntryStatus.d.ts +10 -0
  17. package/admin/plugins/fieldRenderers/ref/components/EntryStatus.js +50 -0
  18. package/admin/plugins/fieldRenderers/ref/components/EntryStatus.js.map +1 -0
  19. package/admin/plugins/fieldRenderers/ref/components/graphql.d.ts +19 -11
  20. package/admin/plugins/fieldRenderers/ref/components/graphql.js +5 -6
  21. package/admin/plugins/fieldRenderers/ref/components/graphql.js.map +1 -1
  22. package/admin/plugins/fieldRenderers/ref/components/helpers.d.ts +6 -0
  23. package/admin/plugins/fieldRenderers/ref/components/helpers.js +41 -0
  24. package/admin/plugins/fieldRenderers/ref/components/helpers.js.map +1 -0
  25. package/admin/plugins/fieldRenderers/ref/components/renderItem.d.ts +4 -2
  26. package/admin/plugins/fieldRenderers/ref/components/renderItem.js +15 -0
  27. package/admin/plugins/fieldRenderers/ref/components/renderItem.js.map +1 -1
  28. package/admin/plugins/fieldRenderers/ref/components/types.d.ts +26 -0
  29. package/admin/plugins/fieldRenderers/ref/components/types.js +1 -0
  30. package/admin/plugins/fieldRenderers/ref/components/types.js.map +1 -0
  31. package/admin/plugins/fieldRenderers/ref/components/useReference.d.ts +1 -1
  32. package/admin/plugins/fieldRenderers/ref/components/useReference.js +61 -66
  33. package/admin/plugins/fieldRenderers/ref/components/useReference.js.map +1 -1
  34. package/admin/plugins/fieldRenderers/ref/components/useReferences.d.ts +4 -10
  35. package/admin/plugins/fieldRenderers/ref/components/useReferences.js +52 -40
  36. package/admin/plugins/fieldRenderers/ref/components/useReferences.js.map +1 -1
  37. package/admin/plugins/index.d.ts +1 -1
  38. package/admin/views/contentEntries/ContentEntries.js +11 -6
  39. package/admin/views/contentEntries/ContentEntries.js.map +1 -1
  40. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +2 -2
  41. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
  42. package/admin/views/contentModels/CloneContentModelDialog.js +55 -40
  43. package/admin/views/contentModels/CloneContentModelDialog.js.map +1 -1
  44. package/package.json +17 -17
  45. package/types.d.ts +3 -8
  46. package/admin/plugins/fieldRenderers/ref/components/getOptions.d.ts +0 -16
  47. package/admin/plugins/fieldRenderers/ref/components/getOptions.js +0 -21
  48. package/admin/plugins/fieldRenderers/ref/components/getOptions.js.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
4
  var _excluded = ["onForm"];
4
5
  import React, { useCallback, useEffect, useRef } from "react";
@@ -9,6 +10,8 @@ import { plugins } from "@webiny/plugins";
9
10
  import { CircularProgress } from "@webiny/ui/Progress";
10
11
  import { useContentEntryForm } from "./useContentEntryForm";
11
12
  import { Fields } from "./Fields";
13
+ import { Prompt } from "@webiny/react-router";
14
+ import { useSnackbar } from "@webiny/app-admin";
12
15
  var FormWrapper = /*#__PURE__*/styled("div", {
13
16
  target: "ejw5gwy0",
14
17
  label: "FormWrapper"
@@ -25,10 +28,30 @@ export var ContentEntryForm = function ContentEntryForm(_ref) {
25
28
  var _useContentEntryForm = useContentEntryForm(props),
26
29
  loading = _useContentEntryForm.loading,
27
30
  data = _useContentEntryForm.data,
28
- onChange = _useContentEntryForm.onChange,
29
- onSubmit = _useContentEntryForm.onSubmit,
31
+ _onChange = _useContentEntryForm.onChange,
32
+ _onSubmit = _useContentEntryForm.onSubmit,
30
33
  invalidFields = _useContentEntryForm.invalidFields;
31
34
 
35
+ var _React$useState = React.useState(false),
36
+ _React$useState2 = _slicedToArray(_React$useState, 2),
37
+ isDirty = _React$useState2[0],
38
+ setIsDirty = _React$useState2[1];
39
+ /**
40
+ * Reset isDirty when the loaded data changes.
41
+ */
42
+
43
+
44
+ useEffect(function () {
45
+ if (!isDirty) {
46
+ return;
47
+ }
48
+
49
+ setIsDirty(false);
50
+ }, [data]);
51
+
52
+ var _useSnackbar = useSnackbar(),
53
+ showSnackbar = _useSnackbar.showSnackbar;
54
+
32
55
  var ref = useRef(null);
33
56
  useEffect(function () {
34
57
  if (typeof onForm !== "function" || !ref.current) {
@@ -70,13 +93,26 @@ export var ContentEntryForm = function ContentEntryForm(_ref) {
70
93
  }));
71
94
  }, [formRenderer]);
72
95
  return /*#__PURE__*/React.createElement(Form, {
73
- onChange: onChange,
74
- onSubmit: onSubmit,
96
+ onChange: function onChange(data, form) {
97
+ setIsDirty(true);
98
+ return _onChange(data, form);
99
+ },
100
+ onSubmit: function onSubmit(data, form) {
101
+ setIsDirty(false);
102
+ return _onSubmit(data, form);
103
+ },
75
104
  data: data,
76
105
  ref: ref,
77
- invalidFields: invalidFields
106
+ invalidFields: invalidFields,
107
+ onInvalid: function onInvalid() {
108
+ setIsDirty(true);
109
+ showSnackbar("You have fields that did not pass the validation. Please check the form.");
110
+ }
78
111
  }, function (formProps) {
79
- return /*#__PURE__*/React.createElement(FormWrapper, {
112
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Prompt, {
113
+ when: isDirty,
114
+ message: "There are some unsaved changes! Are you sure you want to navigate away and discard all changes?"
115
+ }), /*#__PURE__*/React.createElement(FormWrapper, {
80
116
  "data-testid": "cms-content-form"
81
117
  }, loading && /*#__PURE__*/React.createElement(CircularProgress, null), formRenderer ? renderCustomLayout(formProps) : /*#__PURE__*/React.createElement(Fields, Object.assign({
82
118
  contentModel: contentModel,
@@ -84,6 +120,6 @@ export var ContentEntryForm = function ContentEntryForm(_ref) {
84
120
  layout: contentModel.layout || []
85
121
  }, formProps, {
86
122
  Bind: formProps.Bind
87
- })));
123
+ }))));
88
124
  });
89
125
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["ContentEntryForm.tsx"],"names":["React","useCallback","useEffect","useRef","RenderFieldElement","styled","Form","plugins","CircularProgress","useContentEntryForm","Fields","FormWrapper","height","overflow","ContentEntryForm","onForm","props","contentModel","loading","data","onChange","onSubmit","invalidFields","ref","current","formRenderer","byType","find","pl","modelId","renderCustomLayout","formRenderProps","fields","reduce","acc","field","fieldId","Bind","render","formProps","layout"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef } from \"react\";\nimport RenderFieldElement from \"./RenderFieldElement\";\nimport styled from \"@emotion/styled\";\nimport { Form } from \"@webiny/form\";\nimport { FormAPI, FormRenderPropParams } from \"@webiny/form/types\";\nimport { plugins } from \"@webiny/plugins\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { CmsContentFormRendererPlugin } from \"~/types\";\nimport { useContentEntryForm, UseContentEntryFormParams } from \"./useContentEntryForm\";\nimport { Fields } from \"./Fields\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\ninterface ContentEntryFormProps extends UseContentEntryFormParams {\n onForm?: (form: FormAPI) => void;\n}\n\nexport const ContentEntryForm: React.FC<ContentEntryFormProps> = ({ onForm, ...props }) => {\n const { contentModel } = props;\n const { loading, data, onChange, onSubmit, invalidFields } = useContentEntryForm(props);\n\n const ref = useRef<FormAPI | null>(null);\n\n useEffect(() => {\n if (typeof onForm !== \"function\" || !ref.current) {\n return;\n }\n onForm(ref.current);\n }, []);\n\n const formRenderer = plugins\n .byType<CmsContentFormRendererPlugin>(\"cms-content-form-renderer\")\n .find(pl => pl.modelId === contentModel.modelId);\n\n const renderCustomLayout = useCallback(\n (formRenderProps: FormRenderPropParams) => {\n const fields = contentModel.fields.reduce((acc, field) => {\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n acc[field.fieldId] = (\n <RenderFieldElement\n field={field}\n Bind={formRenderProps.Bind as any}\n contentModel={contentModel}\n />\n );\n\n return acc;\n }, {} as Record<string, React.ReactElement>);\n if (!formRenderer) {\n return <>{`Missing form renderer for modelId \"${contentModel.modelId}\".`}</>;\n }\n return formRenderer.render({\n ...formRenderProps,\n contentModel,\n fields,\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n Bind: formRenderProps.Bind as any\n });\n },\n [formRenderer]\n );\n\n return (\n <Form\n onChange={onChange}\n onSubmit={onSubmit}\n data={data}\n ref={ref}\n invalidFields={invalidFields}\n >\n {formProps => (\n <FormWrapper data-testid={\"cms-content-form\"}>\n {loading && <CircularProgress />}\n {formRenderer ? (\n renderCustomLayout(formProps)\n ) : (\n <Fields\n contentModel={contentModel}\n fields={contentModel.fields || []}\n layout={contentModel.layout || []}\n {...formProps}\n Bind={formProps.Bind as any}\n />\n )}\n </FormWrapper>\n )}\n </Form>\n );\n};\n"]}
1
+ {"version":3,"sources":["ContentEntryForm.tsx"],"names":["React","useCallback","useEffect","useRef","RenderFieldElement","styled","Form","plugins","CircularProgress","useContentEntryForm","Fields","Prompt","useSnackbar","FormWrapper","height","overflow","ContentEntryForm","onForm","props","contentModel","loading","data","onChange","onSubmit","invalidFields","useState","isDirty","setIsDirty","showSnackbar","ref","current","formRenderer","byType","find","pl","modelId","renderCustomLayout","formRenderProps","fields","reduce","acc","field","fieldId","Bind","render","form","formProps","layout"],"mappings":";;;;AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,SAA7B,EAAwCC,MAAxC,QAAsD,OAAtD;AACA,OAAOC,kBAAP;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,OAAT,QAAwB,iBAAxB;AACA,SAASC,gBAAT,QAAiC,qBAAjC;AAEA,SAASC,mBAAT;AACA,SAASC,MAAT;AACA,SAASC,MAAT,QAAuB,sBAAvB;AACA,SAASC,WAAT,QAA4B,mBAA5B;AAEA,IAAMC,WAAW,gBAAGR,MAAH,CAAU,KAAV;AAAA;AAAA;AAAA,GAAiB;AAC9BS,EAAAA,MAAM,EAAE,qBADsB;AAE9BC,EAAAA,QAAQ,EAAE;AAFoB,CAAjB,CAAjB;AASA,OAAO,IAAMC,gBAAiD,GAAG,SAApDA,gBAAoD,OAA0B;AAAA,MAAvBC,MAAuB,QAAvBA,MAAuB;AAAA,MAAZC,KAAY;;AACvF,MAAQC,YAAR,GAAyBD,KAAzB,CAAQC,YAAR;;AACA,6BAA6DV,mBAAmB,CAACS,KAAD,CAAhF;AAAA,MAAQE,OAAR,wBAAQA,OAAR;AAAA,MAAiBC,IAAjB,wBAAiBA,IAAjB;AAAA,MAAuBC,SAAvB,wBAAuBA,QAAvB;AAAA,MAAiCC,SAAjC,wBAAiCA,QAAjC;AAAA,MAA2CC,aAA3C,wBAA2CA,aAA3C;;AAEA,wBAA8BxB,KAAK,CAACyB,QAAN,CAAwB,KAAxB,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;AACA;AACJ;AACA;;;AACIzB,EAAAA,SAAS,CAAC,YAAM;AACZ,QAAI,CAACwB,OAAL,EAAc;AACV;AACH;;AACDC,IAAAA,UAAU,CAAC,KAAD,CAAV;AACH,GALQ,EAKN,CAACN,IAAD,CALM,CAAT;;AAOA,qBAAyBT,WAAW,EAApC;AAAA,MAAQgB,YAAR,gBAAQA,YAAR;;AAEA,MAAMC,GAAG,GAAG1B,MAAM,CAAiB,IAAjB,CAAlB;AAEAD,EAAAA,SAAS,CAAC,YAAM;AACZ,QAAI,OAAOe,MAAP,KAAkB,UAAlB,IAAgC,CAACY,GAAG,CAACC,OAAzC,EAAkD;AAC9C;AACH;;AACDb,IAAAA,MAAM,CAACY,GAAG,CAACC,OAAL,CAAN;AACH,GALQ,EAKN,EALM,CAAT;AAOA,MAAMC,YAAY,GAAGxB,OAAO,CACvByB,MADgB,CACqB,2BADrB,EAEhBC,IAFgB,CAEX,UAAAC,EAAE;AAAA,WAAIA,EAAE,CAACC,OAAH,KAAehB,YAAY,CAACgB,OAAhC;AAAA,GAFS,CAArB;AAIA,MAAMC,kBAAkB,GAAGnC,WAAW,CAClC,UAACoC,eAAD,EAA2C;AACvC,QAAMC,MAAM,GAAGnB,YAAY,CAACmB,MAAb,CAAoBC,MAApB,CAA2B,UAACC,GAAD,EAAMC,KAAN,EAAgB;AACtD;AAChB;AACA;AACA;AACgBD,MAAAA,GAAG,CAACC,KAAK,CAACC,OAAP,CAAH,gBACI,oBAAC,kBAAD;AACI,QAAA,KAAK,EAAED,KADX;AAEI,QAAA,IAAI,EAAEJ,eAAe,CAACM,IAF1B;AAGI,QAAA,YAAY,EAAExB;AAHlB,QADJ;AAQA,aAAOqB,GAAP;AACH,KAdc,EAcZ,EAdY,CAAf;;AAeA,QAAI,CAACT,YAAL,EAAmB;AACf,0BAAO,wFAAyCZ,YAAY,CAACgB,OAAtD,SAAP;AACH;;AACD,WAAOJ,YAAY,CAACa,MAAb,iCACAP,eADA;AAEHlB,MAAAA,YAAY,EAAZA,YAFG;AAGHmB,MAAAA,MAAM,EAANA,MAHG;;AAIH;AAChB;AACA;AACA;AACgBK,MAAAA,IAAI,EAAEN,eAAe,CAACM;AARnB,OAAP;AAUH,GA9BiC,EA+BlC,CAACZ,YAAD,CA/BkC,CAAtC;AAkCA,sBACI,oBAAC,IAAD;AACI,IAAA,QAAQ,EAAE,kBAACV,IAAD,EAAOwB,IAAP,EAAgB;AACtBlB,MAAAA,UAAU,CAAC,IAAD,CAAV;AACA,aAAOL,SAAQ,CAACD,IAAD,EAAOwB,IAAP,CAAf;AACH,KAJL;AAKI,IAAA,QAAQ,EAAE,kBAACxB,IAAD,EAAOwB,IAAP,EAAgB;AACtBlB,MAAAA,UAAU,CAAC,KAAD,CAAV;AACA,aAAOJ,SAAQ,CAACF,IAAD,EAAOwB,IAAP,CAAf;AACH,KARL;AASI,IAAA,IAAI,EAAExB,IATV;AAUI,IAAA,GAAG,EAAEQ,GAVT;AAWI,IAAA,aAAa,EAAEL,aAXnB;AAYI,IAAA,SAAS,EAAE,qBAAM;AACbG,MAAAA,UAAU,CAAC,IAAD,CAAV;AACAC,MAAAA,YAAY,CACR,0EADQ,CAAZ;AAGH;AAjBL,KAmBK,UAAAkB,SAAS,EAAI;AACV,wBACI,uDACI,oBAAC,MAAD;AACI,MAAA,IAAI,EAAEpB,OADV;AAEI,MAAA,OAAO,EACH;AAHR,MADJ,eAOI,oBAAC,WAAD;AAAa,qBAAa;AAA1B,OACKN,OAAO,iBAAI,oBAAC,gBAAD,OADhB,EAEKW,YAAY,GACTK,kBAAkB,CAACU,SAAD,CADT,gBAGT,oBAAC,MAAD;AACI,MAAA,YAAY,EAAE3B,YADlB;AAEI,MAAA,MAAM,EAAEA,YAAY,CAACmB,MAAb,IAAuB,EAFnC;AAGI,MAAA,MAAM,EAAEnB,YAAY,CAAC4B,MAAb,IAAuB;AAHnC,OAIQD,SAJR;AAKI,MAAA,IAAI,EAAEA,SAAS,CAACH;AALpB,OALR,CAPJ,CADJ;AAwBH,GA5CL,CADJ;AAgDH,CAhHM","sourcesContent":["import React, { useCallback, useEffect, useRef } from \"react\";\nimport RenderFieldElement from \"./RenderFieldElement\";\nimport styled from \"@emotion/styled\";\nimport { Form } from \"@webiny/form\";\nimport { FormAPI, FormRenderPropParams } from \"@webiny/form/types\";\nimport { plugins } from \"@webiny/plugins\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { CmsContentFormRendererPlugin } from \"~/types\";\nimport { useContentEntryForm, UseContentEntryFormParams } from \"./useContentEntryForm\";\nimport { Fields } from \"./Fields\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin\";\n\nconst FormWrapper = styled(\"div\")({\n height: \"calc(100vh - 260px)\",\n overflow: \"auto\"\n});\n\ninterface ContentEntryFormProps extends UseContentEntryFormParams {\n onForm?: (form: FormAPI) => void;\n}\n\nexport const ContentEntryForm: React.FC<ContentEntryFormProps> = ({ onForm, ...props }) => {\n const { contentModel } = props;\n const { loading, data, onChange, onSubmit, invalidFields } = useContentEntryForm(props);\n\n const [isDirty, setIsDirty] = React.useState<boolean>(false);\n /**\n * Reset isDirty when the loaded data changes.\n */\n useEffect(() => {\n if (!isDirty) {\n return;\n }\n setIsDirty(false);\n }, [data]);\n\n const { showSnackbar } = useSnackbar();\n\n const ref = useRef<FormAPI | null>(null);\n\n useEffect(() => {\n if (typeof onForm !== \"function\" || !ref.current) {\n return;\n }\n onForm(ref.current);\n }, []);\n\n const formRenderer = plugins\n .byType<CmsContentFormRendererPlugin>(\"cms-content-form-renderer\")\n .find(pl => pl.modelId === contentModel.modelId);\n\n const renderCustomLayout = useCallback(\n (formRenderProps: FormRenderPropParams) => {\n const fields = contentModel.fields.reduce((acc, field) => {\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n acc[field.fieldId] = (\n <RenderFieldElement\n field={field}\n Bind={formRenderProps.Bind as any}\n contentModel={contentModel}\n />\n );\n\n return acc;\n }, {} as Record<string, React.ReactElement>);\n if (!formRenderer) {\n return <>{`Missing form renderer for modelId \"${contentModel.modelId}\".`}</>;\n }\n return formRenderer.render({\n ...formRenderProps,\n contentModel,\n fields,\n /**\n * TODO @ts-refactor\n * Figure out type for Bind.\n */\n Bind: formRenderProps.Bind as any\n });\n },\n [formRenderer]\n );\n\n return (\n <Form\n onChange={(data, form) => {\n setIsDirty(true);\n return onChange(data, form);\n }}\n onSubmit={(data, form) => {\n setIsDirty(false);\n return onSubmit(data, form);\n }}\n data={data}\n ref={ref}\n invalidFields={invalidFields}\n onInvalid={() => {\n setIsDirty(true);\n showSnackbar(\n \"You have fields that did not pass the validation. Please check the form.\"\n );\n }}\n >\n {formProps => {\n return (\n <>\n <Prompt\n when={isDirty}\n message={\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\"\n }\n />\n <FormWrapper data-testid={\"cms-content-form\"}>\n {loading && <CircularProgress />}\n {formRenderer ? (\n renderCustomLayout(formProps)\n ) : (\n <Fields\n contentModel={contentModel}\n fields={contentModel.fields || []}\n layout={contentModel.layout || []}\n {...formProps}\n Bind={formProps.Bind as any}\n />\n )}\n </FormWrapper>\n </>\n );\n }}\n </Form>\n );\n};\n"]}
@@ -6,7 +6,7 @@ interface UseContentEntryForm {
6
6
  loading: boolean;
7
7
  setLoading: Dispatch<SetStateAction<boolean>>;
8
8
  onChange: FormOnSubmit;
9
- onSubmit: (data: Record<string, any>) => void;
9
+ onSubmit: FormOnSubmit;
10
10
  invalidFields: Record<string, string>;
11
11
  renderPlugins: CmsEditorFieldRendererPlugin[];
12
12
  }
@@ -338,6 +338,14 @@ export function useContentEntryForm(params) {
338
338
  };
339
339
  }(), [contentModel.modelId, listQueryVariables]);
340
340
 
341
+ var onChange = function onChange(data, form) {
342
+ if (!params.onChange) {
343
+ return;
344
+ }
345
+
346
+ return params.onChange(data, form);
347
+ };
348
+
341
349
  var onSubmit = /*#__PURE__*/function () {
342
350
  var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(data) {
343
351
  var fieldsIds, formData, gqlData, meta, _ref7, isLocked;
@@ -479,9 +487,7 @@ export function useContentEntryForm(params) {
479
487
  data: entry && entry.id ? entry : getDefaultValues(),
480
488
  loading: loading,
481
489
  setLoading: setLoading,
482
- onChange: params.onChange || function () {
483
- return void 0;
484
- },
490
+ onChange: onChange,
485
491
  onSubmit: onSubmit,
486
492
  invalidFields: invalidFields,
487
493
  renderPlugins: renderPlugins
@@ -1 +1 @@
1
- {"version":3,"sources":["useContentEntryForm.ts"],"names":["useCallback","useMemo","useState","pick","useRouter","useSnackbar","createCreateFromMutation","createCreateMutation","createUpdateMutation","useMutation","GQLCache","prepareFormData","useContentEntry","plugins","convertDefaultValue","field","value","type","Boolean","Number","useContentEntryForm","params","listQueryVariables","contentModel","entry","history","showSnackbar","invalidFields","setInvalidFields","loading","setLoading","renderPlugins","byType","goToRevision","id","push","modelId","encodeURIComponent","CREATE_CONTENT","UPDATE_CONTENT","CREATE_CONTENT_FROM","createMutation","updateMutation","createFromMutation","setInvalidFieldValues","errors","values","reduce","acc","er","fieldId","error","resetInvalidFieldValues","createContent","data","variables","update","cache","response","content","message","addEntryToListCache","name","onSubmit","updateContent","revision","createContentFrom","formData","newRevision","updateLatestRevisionInListCache","addRevisionToRevisionsCache","fieldsIds","fields","map","item","gqlData","meta","isLocked","locked","getDefaultValues","overrides","settings","multipleValues","defaultValue","undefined","predefinedValues","enabled","Array","isArray","selectedValue","find","selected","filter","onChange"],"mappings":"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","sourcesContent":["import { Dispatch, SetStateAction, useCallback, useMemo, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { FormOnSubmit } from \"@webiny/form\";\nimport {\n createCreateFromMutation,\n createCreateMutation,\n createUpdateMutation,\n CmsEntryCreateMutationResponse,\n CmsEntryCreateMutationVariables,\n CmsEntryUpdateMutationResponse,\n CmsEntryUpdateMutationVariables,\n CmsEntryCreateFromMutationResponse,\n CmsEntryCreateFromMutationVariables\n} from \"~/admin/graphql/contentEntries\";\nimport { useMutation } from \"~/admin/hooks\";\nimport * as GQLCache from \"~/admin/views/contentEntries/ContentEntry/cache\";\nimport { prepareFormData } from \"~/admin/views/contentEntries/ContentEntry/prepareFormData\";\nimport {\n CmsEditorContentEntry,\n CmsEditorContentModel,\n CmsEditorField,\n CmsEditorFieldRendererPlugin\n} from \"~/types\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\nimport { plugins } from \"@webiny/plugins\";\n\n/**\n * Used for some fields to convert their values.\n */\nconst convertDefaultValue = (field: CmsEditorField, value: any): string | number | boolean => {\n switch (field.type) {\n case \"boolean\":\n return Boolean(value);\n case \"number\":\n return Number(value);\n default:\n return value;\n }\n};\n\ninterface InvalidFieldError {\n fieldId: string;\n error: string;\n}\n\ninterface UseContentEntryForm {\n data: Record<string, any>;\n loading: boolean;\n setLoading: Dispatch<SetStateAction<boolean>>;\n onChange: FormOnSubmit;\n onSubmit: (data: Record<string, any>) => void;\n invalidFields: Record<string, string>;\n renderPlugins: CmsEditorFieldRendererPlugin[];\n}\n\nexport interface UseContentEntryFormParams {\n contentModel: CmsEditorContentModel;\n entry: Partial<CmsEditorContentEntry>;\n onChange?: FormOnSubmit;\n onSubmit?: FormOnSubmit;\n addEntryToListCache: boolean;\n}\n\nexport function useContentEntryForm(params: UseContentEntryFormParams): UseContentEntryForm {\n const { listQueryVariables } = useContentEntry();\n const { contentModel, entry } = params;\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const [invalidFields, setInvalidFields] = useState<Record<string, string>>({});\n const [loading, setLoading] = useState(false);\n\n const renderPlugins = useMemo(\n () => plugins.byType<CmsEditorFieldRendererPlugin>(\"cms-editor-field-renderer\"),\n []\n );\n\n const goToRevision = useCallback(id => {\n history.push(`/cms/content-entries/${contentModel.modelId}?id=${encodeURIComponent(id)}`);\n }, []);\n\n const { CREATE_CONTENT, UPDATE_CONTENT, CREATE_CONTENT_FROM } = useMemo(() => {\n return {\n // LIST_CONTENT: createListQuery(contentModel),\n CREATE_CONTENT: createCreateMutation(contentModel),\n UPDATE_CONTENT: createUpdateMutation(contentModel),\n CREATE_CONTENT_FROM: createCreateFromMutation(contentModel)\n };\n }, [contentModel.modelId]);\n\n const [createMutation] = useMutation<\n CmsEntryCreateMutationResponse,\n CmsEntryCreateMutationVariables\n >(CREATE_CONTENT);\n const [updateMutation] = useMutation<\n CmsEntryUpdateMutationResponse,\n CmsEntryUpdateMutationVariables\n >(UPDATE_CONTENT);\n const [createFromMutation] = useMutation<\n CmsEntryCreateFromMutationResponse,\n CmsEntryCreateFromMutationVariables\n >(CREATE_CONTENT_FROM);\n\n /**\n * Note that when passing error.data variable we cast as InvalidFieldError[] because we know it is so.\n */\n const setInvalidFieldValues = (errors?: InvalidFieldError[]): void => {\n const values = (errors || []).reduce((acc, er) => {\n acc[er.fieldId] = er.error;\n return acc;\n }, {} as Record<string, string>);\n setInvalidFields(() => values);\n };\n\n const resetInvalidFieldValues = (): void => {\n setInvalidFields(() => ({}));\n };\n\n const createContent = useCallback(\n async data => {\n setLoading(true);\n const response = await createMutation({\n variables: { data },\n update(cache, response) {\n if (!response.data) {\n showSnackbar(\"Missing response data in Create Entry.\");\n return;\n }\n const { data } = response;\n const { data: entry, error } = data.content || {};\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return;\n } else if (!entry) {\n showSnackbar(\n \"Missing entry data in update callback on Create Entry Response.\"\n );\n return;\n }\n resetInvalidFieldValues();\n if (params.addEntryToListCache) {\n GQLCache.addEntryToListCache(\n contentModel,\n cache,\n entry,\n listQueryVariables\n );\n }\n }\n });\n setLoading(false);\n\n const { error, data: entry } = response.data?.content || {};\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return null;\n } else if (!entry) {\n showSnackbar(\"Missing entry data in Create Entry Response.\");\n return null;\n }\n resetInvalidFieldValues();\n showSnackbar(`${contentModel.name} entry created successfully!`);\n if (typeof params.onSubmit === \"function\") {\n params.onSubmit(entry);\n } else {\n goToRevision(entry.id);\n }\n return entry;\n },\n [contentModel.modelId, listQueryVariables, params.onSubmit, params.addEntryToListCache]\n );\n\n const updateContent = useCallback(\n async (revision, data) => {\n setLoading(true);\n const response = await updateMutation({\n variables: { revision, data }\n });\n setLoading(false);\n if (!response.data) {\n showSnackbar(\"Missing response data on Update Entry Response.\");\n return;\n }\n\n const { error } = response.data.content;\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return null;\n }\n\n resetInvalidFieldValues();\n showSnackbar(\"Content saved successfully.\");\n const { data: entry } = response.data.content;\n return entry;\n },\n [contentModel.modelId]\n );\n\n const createContentFrom = useCallback(\n async (revision: string, formData: Record<string, any>) => {\n setLoading(true);\n const response = await createFromMutation({\n variables: { revision, data: formData },\n update(cache, response) {\n if (!response.data) {\n showSnackbar(\n \"Missing data in update callback on Create From Entry Response.\"\n );\n return;\n }\n const { data: newRevision, error } = response.data.content;\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return;\n } else if (!newRevision) {\n showSnackbar(\"Missing entry data in update callback on Create From Entry.\");\n return;\n }\n resetInvalidFieldValues();\n GQLCache.updateLatestRevisionInListCache(\n contentModel,\n cache,\n newRevision,\n listQueryVariables\n );\n GQLCache.addRevisionToRevisionsCache(contentModel, cache, newRevision);\n\n showSnackbar(\"A new revision was created!\");\n goToRevision(newRevision.id);\n }\n });\n setLoading(false);\n\n if (!response.data) {\n showSnackbar(\"Missing response data on Create From Entry Mutation.\");\n return;\n }\n\n const { data, error } = response.data.content;\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return null;\n }\n resetInvalidFieldValues();\n\n return data;\n },\n [contentModel.modelId, listQueryVariables]\n );\n\n const onSubmit = async (data: Record<string, any>) => {\n const fieldsIds = contentModel.fields.map(item => item.fieldId);\n const formData = pick(data, [...fieldsIds]);\n\n const gqlData = prepareFormData(formData, contentModel);\n if (!entry.id) {\n return createContent(gqlData);\n }\n\n const { meta } = entry;\n const { locked: isLocked } = meta || {};\n\n if (!isLocked) {\n return updateContent(entry.id, gqlData);\n }\n return createContentFrom(entry.id, gqlData);\n };\n\n const getDefaultValues = (overrides: Record<string, any> = {}): Record<string, any> => {\n const values: Record<string, any> = {};\n /**\n * Assign the default values:\n * * check the settings.defaultValue\n * * check the predefinedValues for selected value\n */\n for (const field of contentModel.fields) {\n /**\n * When checking if defaultValue is set in settings, we do the undefined check because it can be null, 0, empty string, false, etc...\n */\n const { settings, multipleValues = false } = field;\n if (settings && settings.defaultValue !== undefined) {\n /**\n * Special type of field is the boolean one.\n * We MUST set true/false for default value.\n */\n values[field.fieldId] = convertDefaultValue(field, settings.defaultValue);\n continue;\n }\n /**\n * No point in going further if predefined values are not enabled.\n */\n const { predefinedValues } = field;\n if (\n !predefinedValues ||\n !predefinedValues.enabled ||\n Array.isArray(predefinedValues.values) === false\n ) {\n continue;\n }\n /**\n * When field is not a multiple values one, we find the first possible default selected value and set it as field value.\n */\n if (!multipleValues) {\n const selectedValue = predefinedValues.values.find(({ selected }) => {\n return !!selected;\n });\n if (selectedValue) {\n values[field.fieldId] = convertDefaultValue(field, selectedValue.value);\n }\n continue;\n }\n /**\n *\n */\n values[field.fieldId] = predefinedValues.values\n .filter(({ selected }) => !!selected)\n .map(({ value }) => {\n return convertDefaultValue(field, value);\n });\n }\n return { ...values, ...overrides };\n };\n return {\n /**\n * If entry is not set or entry.id does not exist, it means that form is for the new entry, so fetch default values.\n */\n data: entry && entry.id ? entry : getDefaultValues(),\n loading,\n setLoading,\n onChange:\n params.onChange ||\n (() => {\n return void 0;\n }),\n onSubmit,\n invalidFields,\n renderPlugins\n };\n}\n"]}
1
+ {"version":3,"sources":["useContentEntryForm.ts"],"names":["useCallback","useMemo","useState","pick","useRouter","useSnackbar","createCreateFromMutation","createCreateMutation","createUpdateMutation","useMutation","GQLCache","prepareFormData","useContentEntry","plugins","convertDefaultValue","field","value","type","Boolean","Number","useContentEntryForm","params","listQueryVariables","contentModel","entry","history","showSnackbar","invalidFields","setInvalidFields","loading","setLoading","renderPlugins","byType","goToRevision","id","push","modelId","encodeURIComponent","CREATE_CONTENT","UPDATE_CONTENT","CREATE_CONTENT_FROM","createMutation","updateMutation","createFromMutation","setInvalidFieldValues","errors","values","reduce","acc","er","fieldId","error","resetInvalidFieldValues","createContent","data","variables","update","cache","response","content","message","addEntryToListCache","name","onSubmit","updateContent","revision","createContentFrom","formData","newRevision","updateLatestRevisionInListCache","addRevisionToRevisionsCache","onChange","form","fieldsIds","fields","map","item","gqlData","meta","isLocked","locked","getDefaultValues","overrides","settings","multipleValues","defaultValue","undefined","predefinedValues","enabled","Array","isArray","selectedValue","find","selected","filter"],"mappings":"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","sourcesContent":["import { Dispatch, SetStateAction, useCallback, useMemo, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { FormOnSubmit } from \"@webiny/form\";\nimport {\n createCreateFromMutation,\n createCreateMutation,\n createUpdateMutation,\n CmsEntryCreateMutationResponse,\n CmsEntryCreateMutationVariables,\n CmsEntryUpdateMutationResponse,\n CmsEntryUpdateMutationVariables,\n CmsEntryCreateFromMutationResponse,\n CmsEntryCreateFromMutationVariables\n} from \"~/admin/graphql/contentEntries\";\nimport { useMutation } from \"~/admin/hooks\";\nimport * as GQLCache from \"~/admin/views/contentEntries/ContentEntry/cache\";\nimport { prepareFormData } from \"~/admin/views/contentEntries/ContentEntry/prepareFormData\";\nimport {\n CmsEditorContentEntry,\n CmsEditorContentModel,\n CmsEditorField,\n CmsEditorFieldRendererPlugin\n} from \"~/types\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\nimport { plugins } from \"@webiny/plugins\";\n\n/**\n * Used for some fields to convert their values.\n */\nconst convertDefaultValue = (field: CmsEditorField, value: any): string | number | boolean => {\n switch (field.type) {\n case \"boolean\":\n return Boolean(value);\n case \"number\":\n return Number(value);\n default:\n return value;\n }\n};\n\ninterface InvalidFieldError {\n fieldId: string;\n error: string;\n}\n\ninterface UseContentEntryForm {\n data: Record<string, any>;\n loading: boolean;\n setLoading: Dispatch<SetStateAction<boolean>>;\n onChange: FormOnSubmit;\n onSubmit: FormOnSubmit;\n invalidFields: Record<string, string>;\n renderPlugins: CmsEditorFieldRendererPlugin[];\n}\n\nexport interface UseContentEntryFormParams {\n contentModel: CmsEditorContentModel;\n entry: Partial<CmsEditorContentEntry>;\n onChange?: FormOnSubmit;\n onSubmit?: FormOnSubmit;\n addEntryToListCache: boolean;\n}\n\nexport function useContentEntryForm(params: UseContentEntryFormParams): UseContentEntryForm {\n const { listQueryVariables } = useContentEntry();\n const { contentModel, entry } = params;\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const [invalidFields, setInvalidFields] = useState<Record<string, string>>({});\n const [loading, setLoading] = useState(false);\n\n const renderPlugins = useMemo(\n () => plugins.byType<CmsEditorFieldRendererPlugin>(\"cms-editor-field-renderer\"),\n []\n );\n\n const goToRevision = useCallback(id => {\n history.push(`/cms/content-entries/${contentModel.modelId}?id=${encodeURIComponent(id)}`);\n }, []);\n\n const { CREATE_CONTENT, UPDATE_CONTENT, CREATE_CONTENT_FROM } = useMemo(() => {\n return {\n // LIST_CONTENT: createListQuery(contentModel),\n CREATE_CONTENT: createCreateMutation(contentModel),\n UPDATE_CONTENT: createUpdateMutation(contentModel),\n CREATE_CONTENT_FROM: createCreateFromMutation(contentModel)\n };\n }, [contentModel.modelId]);\n\n const [createMutation] = useMutation<\n CmsEntryCreateMutationResponse,\n CmsEntryCreateMutationVariables\n >(CREATE_CONTENT);\n const [updateMutation] = useMutation<\n CmsEntryUpdateMutationResponse,\n CmsEntryUpdateMutationVariables\n >(UPDATE_CONTENT);\n const [createFromMutation] = useMutation<\n CmsEntryCreateFromMutationResponse,\n CmsEntryCreateFromMutationVariables\n >(CREATE_CONTENT_FROM);\n\n /**\n * Note that when passing error.data variable we cast as InvalidFieldError[] because we know it is so.\n */\n const setInvalidFieldValues = (errors?: InvalidFieldError[]): void => {\n const values = (errors || []).reduce((acc, er) => {\n acc[er.fieldId] = er.error;\n return acc;\n }, {} as Record<string, string>);\n setInvalidFields(() => values);\n };\n\n const resetInvalidFieldValues = (): void => {\n setInvalidFields(() => ({}));\n };\n\n const createContent = useCallback(\n async data => {\n setLoading(true);\n const response = await createMutation({\n variables: { data },\n update(cache, response) {\n if (!response.data) {\n showSnackbar(\"Missing response data in Create Entry.\");\n return;\n }\n const { data } = response;\n const { data: entry, error } = data.content || {};\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return;\n } else if (!entry) {\n showSnackbar(\n \"Missing entry data in update callback on Create Entry Response.\"\n );\n return;\n }\n resetInvalidFieldValues();\n if (params.addEntryToListCache) {\n GQLCache.addEntryToListCache(\n contentModel,\n cache,\n entry,\n listQueryVariables\n );\n }\n }\n });\n setLoading(false);\n\n const { error, data: entry } = response.data?.content || {};\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return null;\n } else if (!entry) {\n showSnackbar(\"Missing entry data in Create Entry Response.\");\n return null;\n }\n resetInvalidFieldValues();\n showSnackbar(`${contentModel.name} entry created successfully!`);\n if (typeof params.onSubmit === \"function\") {\n params.onSubmit(entry);\n } else {\n goToRevision(entry.id);\n }\n return entry;\n },\n [contentModel.modelId, listQueryVariables, params.onSubmit, params.addEntryToListCache]\n );\n\n const updateContent = useCallback(\n async (revision, data) => {\n setLoading(true);\n const response = await updateMutation({\n variables: { revision, data }\n });\n setLoading(false);\n if (!response.data) {\n showSnackbar(\"Missing response data on Update Entry Response.\");\n return;\n }\n\n const { error } = response.data.content;\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return null;\n }\n\n resetInvalidFieldValues();\n showSnackbar(\"Content saved successfully.\");\n const { data: entry } = response.data.content;\n return entry;\n },\n [contentModel.modelId]\n );\n\n const createContentFrom = useCallback(\n async (revision: string, formData: Record<string, any>) => {\n setLoading(true);\n const response = await createFromMutation({\n variables: { revision, data: formData },\n update(cache, response) {\n if (!response.data) {\n showSnackbar(\n \"Missing data in update callback on Create From Entry Response.\"\n );\n return;\n }\n const { data: newRevision, error } = response.data.content;\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return;\n } else if (!newRevision) {\n showSnackbar(\"Missing entry data in update callback on Create From Entry.\");\n return;\n }\n resetInvalidFieldValues();\n GQLCache.updateLatestRevisionInListCache(\n contentModel,\n cache,\n newRevision,\n listQueryVariables\n );\n GQLCache.addRevisionToRevisionsCache(contentModel, cache, newRevision);\n\n showSnackbar(\"A new revision was created!\");\n goToRevision(newRevision.id);\n }\n });\n setLoading(false);\n\n if (!response.data) {\n showSnackbar(\"Missing response data on Create From Entry Mutation.\");\n return;\n }\n\n const { data, error } = response.data.content;\n if (error) {\n showSnackbar(error.message);\n setInvalidFieldValues(error.data as InvalidFieldError[]);\n return null;\n }\n resetInvalidFieldValues();\n\n return data;\n },\n [contentModel.modelId, listQueryVariables]\n );\n\n const onChange: FormOnSubmit = (data, form) => {\n if (!params.onChange) {\n return;\n }\n return params.onChange(data, form);\n };\n\n const onSubmit = async (data: Record<string, any>) => {\n const fieldsIds = contentModel.fields.map(item => item.fieldId);\n const formData = pick(data, [...fieldsIds]);\n\n const gqlData = prepareFormData(formData, contentModel);\n if (!entry.id) {\n return createContent(gqlData);\n }\n\n const { meta } = entry;\n const { locked: isLocked } = meta || {};\n\n if (!isLocked) {\n return updateContent(entry.id, gqlData);\n }\n return createContentFrom(entry.id, gqlData);\n };\n\n const getDefaultValues = (overrides: Record<string, any> = {}): Record<string, any> => {\n const values: Record<string, any> = {};\n /**\n * Assign the default values:\n * * check the settings.defaultValue\n * * check the predefinedValues for selected value\n */\n for (const field of contentModel.fields) {\n /**\n * When checking if defaultValue is set in settings, we do the undefined check because it can be null, 0, empty string, false, etc...\n */\n const { settings, multipleValues = false } = field;\n if (settings && settings.defaultValue !== undefined) {\n /**\n * Special type of field is the boolean one.\n * We MUST set true/false for default value.\n */\n values[field.fieldId] = convertDefaultValue(field, settings.defaultValue);\n continue;\n }\n /**\n * No point in going further if predefined values are not enabled.\n */\n const { predefinedValues } = field;\n if (\n !predefinedValues ||\n !predefinedValues.enabled ||\n Array.isArray(predefinedValues.values) === false\n ) {\n continue;\n }\n /**\n * When field is not a multiple values one, we find the first possible default selected value and set it as field value.\n */\n if (!multipleValues) {\n const selectedValue = predefinedValues.values.find(({ selected }) => {\n return !!selected;\n });\n if (selectedValue) {\n values[field.fieldId] = convertDefaultValue(field, selectedValue.value);\n }\n continue;\n }\n /**\n *\n */\n values[field.fieldId] = predefinedValues.values\n .filter(({ selected }) => !!selected)\n .map(({ value }) => {\n return convertDefaultValue(field, value);\n });\n }\n return { ...values, ...overrides };\n };\n return {\n /**\n * If entry is not set or entry.id does not exist, it means that form is for the new entry, so fetch default values.\n */\n data: entry && entry.id ? entry : getDefaultValues(),\n loading,\n setLoading,\n onChange,\n onSubmit,\n invalidFields,\n renderPlugins\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["contentEntries.ts"],"names":["upperFirst","gql","pluralize","createFieldsList","ERROR_FIELD","CONTENT_META_FIELDS","createReadQuery","model","ucFirstModelId","modelId","fields","createRevisionsQuery","getModelTitleFieldId","titleFieldId","createListQuery","ucFirstPluralizedModelId","createDeleteMutation","createCreateMutation","createCreateFromMutation","createUpdateMutation","createPublishMutation","createUnpublishMutation","createRequestReviewMutation","createRequestChangesMutation"],"mappings":"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","sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport gql from \"graphql-tag\";\nimport pluralize from \"pluralize\";\nimport {\n CmsContentEntryRevision,\n CmsEditorContentEntry,\n CmsEditorContentModel,\n CmsErrorResponse,\n CmsMetaResponse\n} from \"~/types\";\nimport { createFieldsList } from \"./createFieldsList\";\n\nconst ERROR_FIELD = /* GraphQL */ `\n {\n message\n code\n data\n }\n`;\n\nconst CONTENT_META_FIELDS = /* GraphQL */ `\n title\n publishedOn\n version\n locked\n status\n`;\n/**\n * ############################################\n * Get CMS Entry Query\n */\nexport interface CmsEntryGetQueryResponse {\n content: {\n data: CmsEditorContentEntry;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryGetQueryVariables {\n revision: string;\n}\n\nexport const createReadQuery = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesGet${ucFirstModelId}($revision: ID!) {\n content: get${ucFirstModelId}(revision: $revision) {\n data {\n id\n createdBy {\n id\n }\n ${createFieldsList(model.fields)}\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * List CMS Entry Revisions Query\n */\nexport interface CmsEntriesListRevisionsQueryResponse {\n revisions: {\n data: CmsContentEntryRevision[];\n error: CmsErrorResponse | null;\n meta: CmsMetaResponse;\n };\n}\nexport interface CmsEntriesListRevisionsQueryVariables {\n id: string;\n}\nexport const createRevisionsQuery = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesGet${ucFirstModelId}Revisions($id: ID!) {\n revisions: get${ucFirstModelId}Revisions(id: $id) {\n data {\n id\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n\nconst getModelTitleFieldId = (model: CmsEditorContentModel): string => {\n if (!model.titleFieldId || model.titleFieldId === \"id\") {\n return \"\";\n }\n return model.titleFieldId;\n};\n\n/**\n * ############################################\n * List CMS Entries Query\n */\nexport interface CmsEntriesListQueryResponse {\n content: {\n data: CmsEditorContentEntry[];\n error: CmsErrorResponse | null;\n meta: CmsMetaResponse;\n };\n}\nexport interface CmsEntriesListQueryVariables {\n // TODO @ts-refactor better list types\n where?: {\n [key: string]: any;\n };\n sort?: string[];\n limit?: number;\n after?: string;\n}\nexport const createListQuery = (model: CmsEditorContentModel) => {\n const ucFirstPluralizedModelId = upperFirst(pluralize(model.modelId));\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesList${ucFirstPluralizedModelId}($where: ${ucFirstModelId}ListWhereInput, $sort: [${ucFirstModelId}ListSorter], $limit: Int, $after: String) {\n content: list${ucFirstPluralizedModelId}(\n where: $where\n sort: $sort\n limit: $limit\n after: $after\n ) {\n data {\n id\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n ${getModelTitleFieldId(model)}\n }\n meta {\n cursor\n hasMoreItems\n totalCount\n } \n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Delete Mutation\n */\nexport interface CmsEntryDeleteMutationResponse {\n content: {\n data: CmsEditorContentEntry | null;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryDeleteMutationVariables {\n revision: string;\n}\nexport const createDeleteMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsEntriesDelete${ucFirstModelId}($revision: ID!) {\n content: delete${ucFirstModelId}(revision: $revision) {\n data\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Create Mutation\n */\nexport interface CmsEntryCreateMutationResponse {\n content: {\n data: CmsEditorContentEntry | null;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryCreateMutationVariables {\n /**\n * We have any here because we do not know which fields does entry have\n */\n data: Record<string, any>;\n}\nexport const createCreateMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsEntriesCreate${ucFirstModelId}($data: ${ucFirstModelId}Input!) {\n content: create${ucFirstModelId}(data: $data) {\n data {\n id\n savedOn\n ${createFieldsList(model.fields)}\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Create From Mutation\n */\nexport interface CmsEntryCreateFromMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryCreateFromMutationVariables {\n revision: string;\n /**\n * We have any here because we do not know which fields does entry have\n */\n data?: Record<string, any>;\n}\nexport const createCreateFromMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsCreate${ucFirstModelId}From($revision: ID!, $data: ${ucFirstModelId}Input) {\n content: create${ucFirstModelId}From(revision: $revision, data: $data) {\n data {\n id\n savedOn\n ${createFieldsList(model.fields)}\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Update Mutation\n */\nexport interface CmsEntryUpdateMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryUpdateMutationVariables {\n revision: string;\n /**\n * We have any here because we do not know which fields does entry have\n */\n data: Record<string, any>;\n}\nexport const createUpdateMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsUpdate${ucFirstModelId}($revision: ID!, $data: ${ucFirstModelId}Input!) {\n content: update${ucFirstModelId}(revision: $revision, data: $data) {\n data {\n id\n ${createFieldsList(model.fields)}\n savedOn\n meta { \n ${CONTENT_META_FIELDS} \n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Publish Mutation\n */\nexport interface CmsEntryPublishMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryPublishMutationVariables {\n revision: string;\n}\nexport const createPublishMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsPublish${ucFirstModelId}($revision: ID!) {\n content: publish${ucFirstModelId}(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Unpublish Mutation\n */\nexport interface CmsEntryUnpublishMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryUnpublishMutationVariables {\n revision: string;\n}\nexport const createUnpublishMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsUnpublish${ucFirstModelId}($revision: ID!) {\n content: unpublish${ucFirstModelId}(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Request Review Mutation\n */\nexport interface CmsEntryRequestReviewMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryRequestReviewMutationVariables {\n revision: string;\n}\nexport const createRequestReviewMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsRequest${ucFirstModelId}Review($revision: ID!) {\n content: request${ucFirstModelId}Review(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n\n/**\n * ############################################\n * Request Changes Mutation\n */\nexport interface CmsEntryRequestChangesMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryRequestChangesMutationVariables {\n revision: string;\n}\nexport const createRequestChangesMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsRequest${ucFirstModelId}Changes($revision: ID!) {\n content: request${ucFirstModelId}Changes(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n"]}
1
+ {"version":3,"sources":["contentEntries.ts"],"names":["upperFirst","gql","pluralize","createFieldsList","ERROR_FIELD","CONTENT_META_FIELDS","createReadQuery","model","ucFirstModelId","modelId","fields","createRevisionsQuery","getModelTitleFieldId","titleFieldId","createListQuery","ucFirstPluralizedModelId","createDeleteMutation","createCreateMutation","createCreateFromMutation","createUpdateMutation","createPublishMutation","createUnpublishMutation","createRequestReviewMutation","createRequestChangesMutation"],"mappings":"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","sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport gql from \"graphql-tag\";\nimport pluralize from \"pluralize\";\nimport {\n CmsContentEntryRevision,\n CmsEditorContentEntry,\n CmsEditorContentModel,\n CmsErrorResponse,\n CmsMetaResponse\n} from \"~/types\";\nimport { createFieldsList } from \"./createFieldsList\";\n\nconst ERROR_FIELD = /* GraphQL */ `\n {\n message\n code\n data\n }\n`;\n\nconst CONTENT_META_FIELDS = /* GraphQL */ `\n title\n publishedOn\n version\n locked\n status\n`;\n/**\n * ############################################\n * Get CMS Entry Query\n */\nexport interface CmsEntryGetQueryResponse {\n content: {\n data: CmsEditorContentEntry;\n error: CmsErrorResponse | null;\n };\n}\n\nexport interface CmsEntryGetQueryVariables {\n revision: string;\n}\n\nexport const createReadQuery = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesGet${ucFirstModelId}($revision: ID!) {\n content: get${ucFirstModelId}(revision: $revision) {\n data {\n id\n createdBy {\n id\n }\n ${createFieldsList(model.fields)}\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * List CMS Entry Revisions Query\n */\nexport interface CmsEntriesListRevisionsQueryResponse {\n revisions: {\n data: CmsContentEntryRevision[];\n error: CmsErrorResponse | null;\n meta: CmsMetaResponse;\n };\n}\nexport interface CmsEntriesListRevisionsQueryVariables {\n id: string;\n}\nexport const createRevisionsQuery = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesGet${ucFirstModelId}Revisions($id: ID!) {\n revisions: get${ucFirstModelId}Revisions(id: $id) {\n data {\n id\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n\nconst getModelTitleFieldId = (model: CmsEditorContentModel): string => {\n if (!model.titleFieldId || model.titleFieldId === \"id\") {\n return \"\";\n }\n return model.titleFieldId;\n};\n\n/**\n * ############################################\n * List CMS Entries Query\n */\nexport interface CmsEntriesListQueryResponse {\n content: {\n data: CmsEditorContentEntry[];\n error: CmsErrorResponse | null;\n meta: CmsMetaResponse;\n };\n}\nexport interface CmsEntriesListQueryVariables {\n // TODO @ts-refactor better list types\n where?: {\n [key: string]: any;\n };\n sort?: string[];\n limit?: number;\n after?: string;\n}\nexport const createListQuery = (model: CmsEditorContentModel) => {\n const ucFirstPluralizedModelId = upperFirst(pluralize(model.modelId));\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesList${ucFirstPluralizedModelId}($where: ${ucFirstModelId}ListWhereInput, $sort: [${ucFirstModelId}ListSorter], $limit: Int, $after: String) {\n content: list${ucFirstPluralizedModelId}(\n where: $where\n sort: $sort\n limit: $limit\n after: $after\n ) {\n data {\n id\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n ${getModelTitleFieldId(model)}\n }\n meta {\n cursor\n hasMoreItems\n totalCount\n } \n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Delete Mutation\n */\nexport interface CmsEntryDeleteMutationResponse {\n content: {\n data: CmsEditorContentEntry | null;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryDeleteMutationVariables {\n revision: string;\n}\nexport const createDeleteMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsEntriesDelete${ucFirstModelId}($revision: ID!) {\n content: delete${ucFirstModelId}(revision: $revision) {\n data\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Create Mutation\n */\nexport interface CmsEntryCreateMutationResponse {\n content: {\n data: CmsEditorContentEntry | null;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryCreateMutationVariables {\n /**\n * We have any here because we do not know which fields does entry have\n */\n data: Record<string, any>;\n}\nexport const createCreateMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsEntriesCreate${ucFirstModelId}($data: ${ucFirstModelId}Input!) {\n content: create${ucFirstModelId}(data: $data) {\n data {\n id\n savedOn\n ${createFieldsList(model.fields)}\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Create From Mutation\n */\nexport interface CmsEntryCreateFromMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryCreateFromMutationVariables {\n revision: string;\n /**\n * We have any here because we do not know which fields does entry have\n */\n data?: Record<string, any>;\n}\nexport const createCreateFromMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsCreate${ucFirstModelId}From($revision: ID!, $data: ${ucFirstModelId}Input) {\n content: create${ucFirstModelId}From(revision: $revision, data: $data) {\n data {\n id\n savedOn\n ${createFieldsList(model.fields)}\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Update Mutation\n */\nexport interface CmsEntryUpdateMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryUpdateMutationVariables {\n revision: string;\n /**\n * We have any here because we do not know which fields does entry have\n */\n data: Record<string, any>;\n}\nexport const createUpdateMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsUpdate${ucFirstModelId}($revision: ID!, $data: ${ucFirstModelId}Input!) {\n content: update${ucFirstModelId}(revision: $revision, data: $data) {\n data {\n id\n ${createFieldsList(model.fields)}\n savedOn\n meta { \n ${CONTENT_META_FIELDS} \n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Publish Mutation\n */\nexport interface CmsEntryPublishMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryPublishMutationVariables {\n revision: string;\n}\nexport const createPublishMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsPublish${ucFirstModelId}($revision: ID!) {\n content: publish${ucFirstModelId}(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Unpublish Mutation\n */\nexport interface CmsEntryUnpublishMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryUnpublishMutationVariables {\n revision: string;\n}\nexport const createUnpublishMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsUnpublish${ucFirstModelId}($revision: ID!) {\n content: unpublish${ucFirstModelId}(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Request Review Mutation\n */\nexport interface CmsEntryRequestReviewMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryRequestReviewMutationVariables {\n revision: string;\n}\nexport const createRequestReviewMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsRequest${ucFirstModelId}Review($revision: ID!) {\n content: request${ucFirstModelId}Review(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n\n/**\n * ############################################\n * Request Changes Mutation\n */\nexport interface CmsEntryRequestChangesMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryRequestChangesMutationVariables {\n revision: string;\n}\nexport const createRequestChangesMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsRequest${ucFirstModelId}Changes($revision: ID!) {\n content: request${ucFirstModelId}Changes(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n"]}
@@ -0,0 +1,3 @@
1
+ <svg width="22" height="19" viewBox="0 0 22 19" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 19H22L11 0L0 19ZM12 16H10V14H12V16ZM12 12H10V8H12V12Z" fill="#FFB020"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM8 15L3 10L4.41 8.59L8 12.17L15.59 4.58L17 6L8 15Z" fill="#5CC8B1"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12.73 0H5.27L0 5.27V12.73L5.27 18H12.73L18 12.73V5.27L12.73 0ZM14 12.74L12.74 14L9 10.26L5.26 14L4 12.74L7.74 9L4 5.26L5.26 4L9 7.74L12.74 4L14 5.26L10.26 9L14 12.74Z" fill="#D11F1F"/>
3
+ </svg>
@@ -1 +1 @@
1
- {"version":3,"sources":["booleanSwitch.tsx"],"names":["React","get","Switch","i18n","t","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","render","getBind","Bind","bindProps","label","helpText"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,GAAP,MAAgB,YAAhB;AAEA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAASC,IAAT,QAAqB,kBAArB;AAEA,IAAMC,CAAC,GAAGD,IAAI,CAACE,EAAL,CAAQ,uCAAR,CAAV;AAEA,IAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,2BADmC;AAEzCC,EAAAA,IAAI,EAAE,mCAFmC;AAGzCC,EAAAA,QAAQ,EAAE;AACNC,IAAAA,YAAY,EAAE,eADR;AAENF,IAAAA,IAAI,EAAEJ,CAAF,kFAFE;AAGNO,IAAAA,WAAW,EAAEP,CAAF,sGAHL;AAINQ,IAAAA,MAJM,wBAIY;AAAA,UAATC,KAAS,QAATA,KAAS;AACd,aACIA,KAAK,CAACN,IAAN,KAAe,SAAf,IACA,CAACM,KAAK,CAACC,cADP,IAEA,CAACb,GAAG,CAACY,KAAD,EAAQ,0BAAR,CAHR;AAKH,KAVK;AAWNE,IAAAA,MAXM,yBAWqB;AAAA,UAAlBF,KAAkB,SAAlBA,KAAkB;AAAA,UAAXG,OAAW,SAAXA,OAAW;AACvB,UAAMC,IAAI,GAAGD,OAAO,EAApB;AAEA,0BACI,oBAAC,IAAD,QACK,UAACE,SAAD;AAAA,4BACG,oBAAC,MAAD,oBAAYA,SAAZ;AAAuB,UAAA,KAAK,EAAEL,KAAK,CAACM,KAApC;AAA2C,UAAA,WAAW,EAAEN,KAAK,CAACO;AAA9D,WADH;AAAA,OADL,CADJ;AAOH;AArBK;AAH+B,CAA7C;AA4BA,eAAed,MAAf","sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Switch } from \"@webiny/ui/Switch\";\nimport { i18n } from \"@webiny/app/i18n\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/boolean\");\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-boolean\",\n renderer: {\n rendererName: \"boolean-input\",\n name: t`Boolean Input`,\n description: t`Renders a simple switch button.`,\n canUse({ field }) {\n return (\n field.type === \"boolean\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n return (\n <Bind>\n {(bindProps: any) => (\n <Switch {...bindProps} label={field.label} description={field.helpText} />\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"]}
1
+ {"version":3,"sources":["booleanSwitch.tsx"],"names":["React","get","Switch","i18n","t","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","render","getBind","Bind","bindProps","label","helpText"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,GAAP,MAAgB,YAAhB;AAEA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAASC,IAAT,QAAqB,kBAArB;AAEA,IAAMC,CAAC,GAAGD,IAAI,CAACE,EAAL,CAAQ,uCAAR,CAAV;AAEA,IAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,2BADmC;AAEzCC,EAAAA,IAAI,EAAE,mCAFmC;AAGzCC,EAAAA,QAAQ,EAAE;AACNC,IAAAA,YAAY,EAAE,eADR;AAENF,IAAAA,IAAI,EAAEJ,CAAF,kFAFE;AAGNO,IAAAA,WAAW,EAAEP,CAAF,sGAHL;AAINQ,IAAAA,MAJM,wBAIY;AAAA,UAATC,KAAS,QAATA,KAAS;AACd,aACIA,KAAK,CAACN,IAAN,KAAe,SAAf,IACA,CAACM,KAAK,CAACC,cADP,IAEA,CAACb,GAAG,CAACY,KAAD,EAAQ,0BAAR,CAHR;AAKH,KAVK;AAWNE,IAAAA,MAXM,yBAWqB;AAAA,UAAlBF,KAAkB,SAAlBA,KAAkB;AAAA,UAAXG,OAAW,SAAXA,OAAW;AACvB,UAAMC,IAAI,GAAGD,OAAO,EAApB;AAEA,0BACI,oBAAC,IAAD,QACK,UAAAE,SAAS;AAAA,4BACN,oBAAC,MAAD,oBAAYA,SAAZ;AAAuB,UAAA,KAAK,EAAEL,KAAK,CAACM,KAApC;AAA2C,UAAA,WAAW,EAAEN,KAAK,CAACO;AAA9D,WADM;AAAA,OADd,CADJ;AAOH;AArBK;AAH+B,CAA7C;AA4BA,eAAed,MAAf","sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Switch } from \"@webiny/ui/Switch\";\nimport { i18n } from \"@webiny/app/i18n\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/boolean\");\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-boolean\",\n renderer: {\n rendererName: \"boolean-input\",\n name: t`Boolean Input`,\n description: t`Renders a simple switch button.`,\n canUse({ field }) {\n return (\n field.type === \"boolean\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n return (\n <Bind>\n {bindProps => (\n <Switch {...bindProps} label={field.label} description={field.helpText} />\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["numberInput.tsx"],"names":["React","get","Input","i18n","t","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","render","getBind","Bind","bindProps","value","onChange","label","placeholderText","helpText"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,GAAP,MAAgB,YAAhB;AAEA,SAASC,KAAT,QAAsB,kBAAtB;AACA,SAASC,IAAT,QAAqB,kBAArB;AAEA,IAAMC,CAAC,GAAGD,IAAI,CAACE,EAAL,CAAQ,sCAAR,CAAV;AAEA,IAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,2BADmC;AAEzCC,EAAAA,IAAI,EAAE,kCAFmC;AAGzCC,EAAAA,QAAQ,EAAE;AACNC,IAAAA,YAAY,EAAE,cADR;AAENF,IAAAA,IAAI,EAAEJ,CAAF,iFAFE;AAGNO,IAAAA,WAAW,EAAEP,CAAF,8HAHL;AAINQ,IAAAA,MAJM,wBAIY;AAAA,UAATC,KAAS,QAATA,KAAS;AACd,aACIA,KAAK,CAACN,IAAN,KAAe,QAAf,IACA,CAACM,KAAK,CAACC,cADP,IAEA,CAACb,GAAG,CAACY,KAAD,EAAQ,0BAAR,CAHR;AAKH,KAVK;AAWNE,IAAAA,MAXM,yBAWqB;AAAA,UAAlBF,KAAkB,SAAlBA,KAAkB;AAAA,UAAXG,OAAW,SAAXA,OAAW;AACvB,UAAMC,IAAI,GAAGD,OAAO,EAApB;AAEA,0BACI,oBAAC,IAAD,QACK,UAACE,SAAD,EAAoB;AACjB,4BACI,oBAAC,KAAD,oBACQA,SADR;AAEI,UAAA,QAAQ,EAAE,kBAAAC,KAAK,EAAI;AACf,mBAAOD,SAAS,CAACE,QAAV,CAAmBD,KAAnB,CAAP;AACH,WAJL;AAKI,UAAA,KAAK,EAAEN,KAAK,CAACQ,KALjB;AAMI,UAAA,WAAW,EAAER,KAAK,CAACS,eANvB;AAOI,UAAA,WAAW,EAAET,KAAK,CAACU,QAPvB;AAQI,UAAA,IAAI,EAAC;AART,WADJ;AAYH,OAdL,CADJ;AAkBH;AAhCK;AAH+B,CAA7C;AAuCA,eAAejB,MAAf","sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { i18n } from \"@webiny/app/i18n\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/number\");\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-number\",\n renderer: {\n rendererName: \"number-input\",\n name: t`Number Input`,\n description: t`Renders a simple input with its type set to \"number\".`,\n canUse({ field }) {\n return (\n field.type === \"number\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n return (\n <Bind>\n {(bindProps: any) => {\n return (\n <Input\n {...bindProps}\n onChange={value => {\n return bindProps.onChange(value);\n }}\n label={field.label}\n placeholder={field.placeholderText}\n description={field.helpText}\n type=\"number\"\n />\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"]}
1
+ {"version":3,"sources":["numberInput.tsx"],"names":["React","get","Input","i18n","t","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","render","getBind","Bind","bindProps","value","onChange","label","placeholderText","helpText"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,GAAP,MAAgB,YAAhB;AAEA,SAASC,KAAT,QAAsB,kBAAtB;AACA,SAASC,IAAT,QAAqB,kBAArB;AAEA,IAAMC,CAAC,GAAGD,IAAI,CAACE,EAAL,CAAQ,sCAAR,CAAV;AAEA,IAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,2BADmC;AAEzCC,EAAAA,IAAI,EAAE,kCAFmC;AAGzCC,EAAAA,QAAQ,EAAE;AACNC,IAAAA,YAAY,EAAE,cADR;AAENF,IAAAA,IAAI,EAAEJ,CAAF,iFAFE;AAGNO,IAAAA,WAAW,EAAEP,CAAF,8HAHL;AAINQ,IAAAA,MAJM,wBAIY;AAAA,UAATC,KAAS,QAATA,KAAS;AACd,aACIA,KAAK,CAACN,IAAN,KAAe,QAAf,IACA,CAACM,KAAK,CAACC,cADP,IAEA,CAACb,GAAG,CAACY,KAAD,EAAQ,0BAAR,CAHR;AAKH,KAVK;AAWNE,IAAAA,MAXM,yBAWqB;AAAA,UAAlBF,KAAkB,SAAlBA,KAAkB;AAAA,UAAXG,OAAW,SAAXA,OAAW;AACvB,UAAMC,IAAI,GAAGD,OAAO,EAApB;AAEA,0BACI,oBAAC,IAAD,QACK,UAAAE,SAAS,EAAI;AACV,4BACI,oBAAC,KAAD,oBACQA,SADR;AAEI,UAAA,QAAQ,EAAE,kBAAAC,KAAK,EAAI;AACf,mBAAOD,SAAS,CAACE,QAAV,CAAmBD,KAAnB,CAAP;AACH,WAJL;AAKI,UAAA,KAAK,EAAEN,KAAK,CAACQ,KALjB;AAMI,UAAA,WAAW,EAAER,KAAK,CAACS,eANvB;AAOI,UAAA,WAAW,EAAET,KAAK,CAACU,QAPvB;AAQI,UAAA,IAAI,EAAC;AART,WADJ;AAYH,OAdL,CADJ;AAkBH;AAhCK;AAH+B,CAA7C;AAuCA,eAAejB,MAAf","sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { i18n } from \"@webiny/app/i18n\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/number\");\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-number\",\n renderer: {\n rendererName: \"number-input\",\n name: t`Number Input`,\n description: t`Renders a simple input with its type set to \"number\".`,\n canUse({ field }) {\n return (\n field.type === \"number\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n return (\n <Bind>\n {bindProps => {\n return (\n <Input\n {...bindProps}\n onChange={value => {\n return bindProps.onChange(value);\n }}\n label={field.label}\n placeholder={field.placeholderText}\n description={field.helpText}\n type=\"number\"\n />\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -1,3 +1,4 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
2
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
3
 
3
4
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
@@ -12,10 +13,25 @@ import { useNewRefEntry } from "../hooks/useNewRefEntry";
12
13
  import { useReference } from "./useReference";
13
14
  import { renderItem } from "./renderItem";
14
15
  import { createEntryUrl } from "./createEntryUrl";
16
+ import { EntryStatus } from "./EntryStatus";
15
17
  var t = i18n.ns("app-headless-cms/admin/fields/ref");
16
18
  var unpublishedLabel = t(_templateObject || (_templateObject = _taggedTemplateLiteral(["Selected content entry is not published. Make sure to {publishItLink} before publishing the main content entry."])));
17
19
  var publishedLabel = t(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["Selected content entry is published. You can view it {here}."])));
18
20
 
21
+ var getItemOption = function getItemOption(options, id) {
22
+ if (!id || !options || options.length === 0) {
23
+ return null;
24
+ }
25
+
26
+ var _id$split = id.split("#"),
27
+ _id$split2 = _slicedToArray(_id$split, 1),
28
+ entryId = _id$split2[0];
29
+
30
+ return options.find(function (item) {
31
+ return item.entryId === entryId;
32
+ }) || null;
33
+ };
34
+
19
35
  var ContentEntriesAutocomplete = function ContentEntriesAutocomplete(_ref) {
20
36
  var bind = _ref.bind,
21
37
  field = _ref.field;
@@ -55,15 +71,21 @@ var ContentEntriesAutocomplete = function ContentEntriesAutocomplete(_ref) {
55
71
  renderNewEntryModal = _useNewRefEntry.renderNewEntryModal,
56
72
  refModelId = _useNewRefEntry.refModelId,
57
73
  helpText = _useNewRefEntry.helpText;
74
+
75
+ var item = getItemOption(options, bind.value ? bind.value.id : null);
58
76
  /*
59
77
  * Wrap AutoComplete input in NewRefEntry modal.
60
78
  */
61
79
 
62
-
63
80
  if (renderNewEntryModal) {
64
81
  return /*#__PURE__*/React.createElement(NewRefEntryFormDialog, {
65
82
  modelId: refModelId,
66
83
  onChange: function onChange(entry) {
84
+ /**
85
+ * TODO @ts-refactor @ashutosh
86
+ * Need to figure out correct types.
87
+ */
88
+ // @ts-ignore
67
89
  return _onChange(entry, entry);
68
90
  }
69
91
  }, /*#__PURE__*/React.createElement(AutoComplete, Object.assign({}, bind, {
@@ -73,7 +95,9 @@ var ContentEntriesAutocomplete = function ContentEntriesAutocomplete(_ref) {
73
95
  value: value || undefined,
74
96
  options: options,
75
97
  label: field.label,
76
- description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, entryInfo),
98
+ description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, /*#__PURE__*/React.createElement(EntryStatus, {
99
+ item: item
100
+ }, entryInfo)),
77
101
  onInput: debounce(function (search) {
78
102
  return setSearch(search);
79
103
  }, 250),
@@ -88,7 +112,9 @@ var ContentEntriesAutocomplete = function ContentEntriesAutocomplete(_ref) {
88
112
  value: value || undefined,
89
113
  options: options,
90
114
  label: field.label,
91
- description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, entryInfo),
115
+ description: /*#__PURE__*/React.createElement(React.Fragment, null, field.helpText, /*#__PURE__*/React.createElement(EntryStatus, {
116
+ item: item
117
+ }, entryInfo)),
92
118
  onInput: debounce(function (search) {
93
119
  return setSearch(search);
94
120
  }, 250),
@@ -1 +1 @@
1
- {"version":3,"sources":["ContentEntriesAutocomplete.tsx"],"names":["React","debounce","NewRefEntryFormDialog","NewEntryButton","AutoComplete","i18n","Link","useNewRefEntry","useReference","renderItem","createEntryUrl","t","ns","unpublishedLabel","publishedLabel","ContentEntriesAutocomplete","bind","field","options","setSearch","value","loading","onChange","entryInfo","published","link","publishItLink","here","renderNewEntryModal","refModelId","helpText","entry","undefined","label","search"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport debounce from \"lodash/debounce\";\nimport NewRefEntryFormDialog, { NewEntryButton } from \"./NewRefEntryFormDialog\";\nimport { AutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Link } from \"@webiny/react-router\";\nimport { useNewRefEntry } from \"../hooks/useNewRefEntry\";\nimport { useReference } from \"./useReference\";\nimport { renderItem } from \"./renderItem\";\nimport { createEntryUrl } from \"./createEntryUrl\";\nimport { CmsEditorField } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst unpublishedLabel = t`Selected content entry is not published. Make sure to {publishItLink} before publishing the main content entry.`;\nconst publishedLabel = t`Selected content entry is published. You can view it {here}.`;\n\ninterface ContentEntriesAutocompleteProps {\n bind: BindComponentRenderProp;\n field: CmsEditorField;\n}\nconst ContentEntriesAutocomplete: React.FC<ContentEntriesAutocompleteProps> = ({ bind, field }) => {\n const { options, setSearch, value, loading, onChange } = useReference({\n bind,\n field\n });\n\n let entryInfo: string | null = null;\n if (value && !value.published) {\n const link = createEntryUrl(value);\n entryInfo = unpublishedLabel({ publishItLink: <Link to={link}>{t`publish it`}</Link> });\n } else if (value) {\n const link = createEntryUrl(value);\n entryInfo = publishedLabel({\n here: <Link to={link}>{t`here`}</Link>\n });\n }\n const { renderNewEntryModal, refModelId, helpText } = useNewRefEntry({ field });\n\n /*\n * Wrap AutoComplete input in NewRefEntry modal.\n */\n if (renderNewEntryModal) {\n return (\n <NewRefEntryFormDialog\n modelId={refModelId}\n onChange={entry => onChange(entry, entry as any)}\n >\n <AutoComplete\n {...bind}\n renderItem={renderItem}\n onChange={onChange}\n loading={loading}\n value={value || undefined}\n options={options}\n label={field.label}\n description={\n <>\n {field.helpText}\n {entryInfo}\n </>\n }\n onInput={debounce(search => setSearch(search), 250)}\n noResultFound={<NewEntryButton />}\n />\n </NewRefEntryFormDialog>\n );\n }\n\n return (\n <AutoComplete\n {...bind}\n renderItem={renderItem}\n onChange={onChange}\n loading={loading}\n value={value || undefined}\n options={options}\n label={field.label}\n description={\n <>\n {field.helpText}\n {entryInfo}\n </>\n }\n onInput={debounce(search => setSearch(search), 250)}\n noResultFound={helpText}\n />\n );\n};\n\nexport default ContentEntriesAutocomplete;\n"]}
1
+ {"version":3,"sources":["ContentEntriesAutocomplete.tsx"],"names":["React","debounce","NewRefEntryFormDialog","NewEntryButton","AutoComplete","i18n","Link","useNewRefEntry","useReference","renderItem","createEntryUrl","EntryStatus","t","ns","unpublishedLabel","publishedLabel","getItemOption","options","id","length","split","entryId","find","item","ContentEntriesAutocomplete","bind","field","setSearch","value","loading","onChange","entryInfo","published","link","publishItLink","here","renderNewEntryModal","refModelId","helpText","entry","undefined","label","search"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport debounce from \"lodash/debounce\";\nimport NewRefEntryFormDialog, { NewEntryButton } from \"./NewRefEntryFormDialog\";\nimport { AutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Link } from \"@webiny/react-router\";\nimport { useNewRefEntry } from \"../hooks/useNewRefEntry\";\nimport { useReference } from \"./useReference\";\nimport { renderItem } from \"./renderItem\";\nimport { createEntryUrl } from \"./createEntryUrl\";\nimport { CmsEditorField } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { OptionItem } from \"./types\";\nimport { EntryStatus } from \"./EntryStatus\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst unpublishedLabel = t`Selected content entry is not published. Make sure to {publishItLink} before publishing the main content entry.`;\nconst publishedLabel = t`Selected content entry is published. You can view it {here}.`;\n\nconst getItemOption = (options: OptionItem[], id?: string | null): OptionItem | null => {\n if (!id || !options || options.length === 0) {\n return null;\n }\n const [entryId] = id.split(\"#\");\n return options.find(item => item.entryId === entryId) || null;\n};\n\ninterface ContentEntriesAutocompleteProps {\n bind: BindComponentRenderProp;\n field: CmsEditorField;\n}\nconst ContentEntriesAutocomplete: React.FC<ContentEntriesAutocompleteProps> = ({ bind, field }) => {\n const { options, setSearch, value, loading, onChange } = useReference({\n bind,\n field\n });\n\n let entryInfo: string | null = null;\n if (value && !value.published) {\n const link = createEntryUrl(value);\n entryInfo = unpublishedLabel({ publishItLink: <Link to={link}>{t`publish it`}</Link> });\n } else if (value) {\n const link = createEntryUrl(value);\n entryInfo = publishedLabel({\n here: <Link to={link}>{t`here`}</Link>\n });\n }\n const { renderNewEntryModal, refModelId, helpText } = useNewRefEntry({ field });\n\n const item = getItemOption(options, bind.value ? bind.value.id : null);\n /*\n * Wrap AutoComplete input in NewRefEntry modal.\n */\n if (renderNewEntryModal) {\n return (\n <NewRefEntryFormDialog\n modelId={refModelId}\n onChange={entry => {\n /**\n * TODO @ts-refactor @ashutosh\n * Need to figure out correct types.\n */\n // @ts-ignore\n return onChange(entry, entry);\n }}\n >\n <AutoComplete\n {...bind}\n renderItem={renderItem}\n onChange={onChange}\n loading={loading}\n value={value || undefined}\n options={options}\n label={field.label}\n description={\n <>\n {field.helpText}\n <EntryStatus item={item}>{entryInfo}</EntryStatus>\n </>\n }\n onInput={debounce(search => setSearch(search), 250)}\n noResultFound={<NewEntryButton />}\n />\n </NewRefEntryFormDialog>\n );\n }\n\n return (\n <AutoComplete\n {...bind}\n renderItem={renderItem}\n onChange={onChange}\n loading={loading}\n value={value || undefined}\n options={options}\n label={field.label}\n description={\n <>\n {field.helpText}\n <EntryStatus item={item}>{entryInfo}</EntryStatus>\n </>\n }\n onInput={debounce(search => setSearch(search), 250)}\n noResultFound={helpText}\n />\n );\n};\n\nexport default ContentEntriesAutocomplete;\n"]}
@@ -9,7 +9,7 @@ import { MultiAutoComplete } from "@webiny/ui/AutoComplete";
9
9
  import { Link } from "@webiny/react-router";
10
10
  import { i18n } from "@webiny/app/i18n";
11
11
  import { useReferences } from "./useReferences";
12
- import { renderItem } from "./renderItem";
12
+ import { renderItem, renderListItemOptions } from "./renderItem";
13
13
  import NewRefEntryFormDialog, { NewEntryButton } from "./NewRefEntryFormDialog";
14
14
  import { useNewRefEntry } from "../hooks/useNewRefEntry";
15
15
  var t = i18n.ns("app-headless-cms/admin/fields/ref");
@@ -54,10 +54,10 @@ var ContentEntriesMultiAutocomplete = function ContentEntriesMultiAutocomplete(_
54
54
  };
55
55
 
56
56
  var warning = entries.filter(function (item) {
57
- return item.published === false;
57
+ return !item.published;
58
58
  });
59
59
 
60
- if (warning.length) {
60
+ if (warning.length > 0) {
61
61
  warning = warn({
62
62
  entries: /*#__PURE__*/React.createElement(React.Fragment, null, warning.map(entryWarning))
63
63
  });
@@ -78,6 +78,7 @@ var ContentEntriesMultiAutocomplete = function ContentEntriesMultiAutocomplete(_
78
78
  }, /*#__PURE__*/React.createElement(MultiAutoComplete, Object.assign({}, bind, {
79
79
  renderItem: renderItem,
80
80
  renderListItemLabel: renderItem,
81
+ renderListItemOptions: renderListItemOptions,
81
82
  useMultipleSelectionList: true,
82
83
  onChange: onChange,
83
84
  loading: loading,
@@ -93,6 +94,7 @@ var ContentEntriesMultiAutocomplete = function ContentEntriesMultiAutocomplete(_
93
94
  return /*#__PURE__*/React.createElement(MultiAutoComplete, Object.assign({}, bind, {
94
95
  renderItem: renderItem,
95
96
  renderListItemLabel: renderItem,
97
+ renderListItemOptions: renderListItemOptions,
96
98
  useMultipleSelectionList: true,
97
99
  onChange: onChange,
98
100
  loading: loading,
@@ -1 +1 @@
1
- {"version":3,"sources":["ContentEntriesMultiAutoComplete.tsx"],"names":["React","useCallback","debounce","MultiAutoComplete","Link","i18n","useReferences","renderItem","NewRefEntryFormDialog","NewEntryButton","useNewRefEntry","t","ns","warn","ContentEntriesMultiAutocomplete","bind","field","options","setSearch","entries","loading","onChange","renderNewEntryModal","refModelId","helpText","entryWarning","entry","index","id","modelId","name","published","encodeURIComponent","warning","filter","item","length","map","refEntryOnChange","value","label"],"mappings":"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","sourcesContent":["import React, { useCallback } from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { Link } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReferencedCmsEntry, useReferences } from \"./useReferences\";\nimport { renderItem } from \"./renderItem\";\nimport NewRefEntryFormDialog, { NewEntryButton } from \"./NewRefEntryFormDialog\";\nimport { useNewRefEntry } from \"../hooks/useNewRefEntry\";\nimport { CmsEditorField } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst warn = t`Before publishing the main content entry, make sure you publish the following referenced entries: {entries}`;\n\ninterface ContentEntriesMultiAutocompleteProps {\n bind: BindComponentRenderProp;\n field: CmsEditorField;\n}\nconst ContentEntriesMultiAutocomplete: React.FC<ContentEntriesMultiAutocompleteProps> = ({\n bind,\n field\n}) => {\n const { options, setSearch, entries, loading, onChange } = useReferences({ bind, field });\n\n const { renderNewEntryModal, refModelId, helpText } = useNewRefEntry({ field });\n\n const entryWarning = (entry: ReferencedCmsEntry, index: number): React.ReactElement | null => {\n const { id, modelId, name, published } = entry;\n if (published) {\n return null;\n }\n return (\n <React.Fragment key={id}>\n {index > 0 && \", \"}\n <Link to={`/cms/content-entries/${modelId}?id=${encodeURIComponent(id)}`}>\n {name}\n </Link>\n </React.Fragment>\n );\n };\n\n let warning = entries.filter(item => item.published === false);\n if (warning.length) {\n warning = warn({\n entries: <>{warning.map(entryWarning)}</>\n });\n }\n\n const refEntryOnChange = useCallback(\n // TODO @ts-refactor figure out which type is this\n value => {\n /**\n * Append new selected entry at the end of existing entries.\n */\n onChange([...entries, value]);\n },\n [onChange, entries]\n );\n\n if (renderNewEntryModal) {\n return (\n <NewRefEntryFormDialog modelId={refModelId} onChange={refEntryOnChange}>\n <MultiAutoComplete\n {...bind}\n renderItem={renderItem}\n renderListItemLabel={renderItem}\n useMultipleSelectionList\n onChange={onChange}\n loading={loading}\n value={entries}\n options={options}\n label={field.label}\n onInput={debounce(setSearch, 250)}\n description={\n <>\n {field.helpText}\n {warning}\n </>\n }\n noResultFound={<NewEntryButton />}\n />\n </NewRefEntryFormDialog>\n );\n }\n\n return (\n <MultiAutoComplete\n {...bind}\n renderItem={renderItem}\n renderListItemLabel={renderItem}\n useMultipleSelectionList\n onChange={onChange}\n loading={loading}\n value={entries}\n options={options}\n label={field.label}\n onInput={debounce(setSearch, 250)}\n description={\n <>\n {field.helpText}\n {warning}\n </>\n }\n noResultFound={helpText}\n />\n );\n};\n\nexport default ContentEntriesMultiAutocomplete;\n"]}
1
+ {"version":3,"sources":["ContentEntriesMultiAutoComplete.tsx"],"names":["React","useCallback","debounce","MultiAutoComplete","Link","i18n","useReferences","renderItem","renderListItemOptions","NewRefEntryFormDialog","NewEntryButton","useNewRefEntry","t","ns","warn","ContentEntriesMultiAutocomplete","bind","field","options","setSearch","entries","loading","onChange","renderNewEntryModal","refModelId","helpText","entryWarning","entry","index","id","modelId","name","published","encodeURIComponent","warning","filter","item","length","map","refEntryOnChange","value","label"],"mappings":"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","sourcesContent":["import React, { useCallback } from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { Link } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useReferences } from \"./useReferences\";\nimport { renderItem, renderListItemOptions } from \"./renderItem\";\nimport NewRefEntryFormDialog, { NewEntryButton } from \"./NewRefEntryFormDialog\";\nimport { useNewRefEntry } from \"../hooks/useNewRefEntry\";\nimport { CmsEditorField } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { OptionItem } from \"./types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst warn = t`Before publishing the main content entry, make sure you publish the following referenced entries: {entries}`;\n\ninterface ContentEntriesMultiAutocompleteProps {\n bind: BindComponentRenderProp;\n field: CmsEditorField;\n}\nconst ContentEntriesMultiAutocomplete: React.FC<ContentEntriesMultiAutocompleteProps> = ({\n bind,\n field\n}) => {\n const { options, setSearch, entries, loading, onChange } = useReferences({ bind, field });\n\n const { renderNewEntryModal, refModelId, helpText } = useNewRefEntry({ field });\n\n const entryWarning = (entry: OptionItem, index: number): React.ReactElement | null => {\n const { id, modelId, name, published } = entry;\n if (published) {\n return null;\n }\n return (\n <React.Fragment key={id}>\n {index > 0 && \", \"}\n <Link to={`/cms/content-entries/${modelId}?id=${encodeURIComponent(id)}`}>\n {name}\n </Link>\n </React.Fragment>\n );\n };\n\n let warning = entries.filter(item => !item.published);\n if (warning.length > 0) {\n warning = warn({\n entries: <>{warning.map(entryWarning)}</>\n });\n }\n\n const refEntryOnChange = useCallback(\n // TODO @ts-refactor figure out which type is this\n value => {\n /**\n * Append new selected entry at the end of existing entries.\n */\n onChange([...entries, value]);\n },\n [onChange, entries]\n );\n\n if (renderNewEntryModal) {\n return (\n <NewRefEntryFormDialog modelId={refModelId} onChange={refEntryOnChange}>\n <MultiAutoComplete\n {...bind}\n renderItem={renderItem}\n renderListItemLabel={renderItem}\n renderListItemOptions={renderListItemOptions}\n useMultipleSelectionList\n onChange={onChange}\n loading={loading}\n value={entries}\n options={options}\n label={field.label}\n onInput={debounce(setSearch, 250)}\n description={\n <>\n {field.helpText}\n {warning}\n </>\n }\n noResultFound={<NewEntryButton />}\n />\n </NewRefEntryFormDialog>\n );\n }\n\n return (\n <MultiAutoComplete\n {...bind}\n renderItem={renderItem}\n renderListItemLabel={renderItem}\n renderListItemOptions={renderListItemOptions}\n useMultipleSelectionList\n onChange={onChange}\n loading={loading}\n value={entries}\n options={options}\n label={field.label}\n onInput={debounce(setSearch, 250)}\n description={\n <>\n {field.helpText}\n {warning}\n </>\n }\n noResultFound={helpText}\n />\n );\n};\n\nexport default ContentEntriesMultiAutocomplete;\n"]}