@webiny/app-headless-cms 5.25.0-beta.1 → 5.25.0-beta.4

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 (73) 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 +13 -10
  5. package/admin/components/ContentEntryForm/useContentEntryForm.js.map +1 -1
  6. package/admin/components/FieldEditor/Styled.d.ts +0 -1
  7. package/admin/graphql/contentEntries.js.map +1 -1
  8. package/admin/icons/draft.svg +3 -0
  9. package/admin/icons/published.svg +3 -0
  10. package/admin/icons/unpublished.svg +3 -0
  11. package/admin/menus/GlobalSearchPlugins.d.ts +0 -1
  12. package/admin/plugins/editor/defaultBar/BackButton.js +4 -2
  13. package/admin/plugins/editor/defaultBar/BackButton.js.map +1 -1
  14. package/admin/plugins/editor/defaultBar/Divider.d.ts +0 -1
  15. package/admin/plugins/editor/defaultBar/Name/NameStyled.d.ts +0 -1
  16. package/admin/plugins/editor/defaultBar/index.d.ts +0 -1
  17. package/admin/plugins/editor/formSettings/components/GeneralSettings.d.ts +0 -1
  18. package/admin/plugins/editor/formSettings/components/GroupSelect.d.ts +0 -1
  19. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js.map +1 -1
  20. package/admin/plugins/fieldRenderers/file/fileFields.js.map +1 -1
  21. package/admin/plugins/fieldRenderers/file/utils.d.ts +0 -1
  22. package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -1
  23. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +29 -3
  24. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
  25. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js +5 -3
  26. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js.map +1 -1
  27. package/admin/plugins/fieldRenderers/ref/components/EntryStatus.d.ts +10 -0
  28. package/admin/plugins/fieldRenderers/ref/components/EntryStatus.js +50 -0
  29. package/admin/plugins/fieldRenderers/ref/components/EntryStatus.js.map +1 -0
  30. package/admin/plugins/fieldRenderers/ref/components/graphql.d.ts +19 -11
  31. package/admin/plugins/fieldRenderers/ref/components/graphql.js +5 -6
  32. package/admin/plugins/fieldRenderers/ref/components/graphql.js.map +1 -1
  33. package/admin/plugins/fieldRenderers/ref/components/helpers.d.ts +6 -0
  34. package/admin/plugins/fieldRenderers/ref/components/helpers.js +41 -0
  35. package/admin/plugins/fieldRenderers/ref/components/helpers.js.map +1 -0
  36. package/admin/plugins/fieldRenderers/ref/components/renderItem.d.ts +4 -2
  37. package/admin/plugins/fieldRenderers/ref/components/renderItem.js +15 -0
  38. package/admin/plugins/fieldRenderers/ref/components/renderItem.js.map +1 -1
  39. package/admin/plugins/fieldRenderers/ref/components/types.d.ts +26 -0
  40. package/admin/plugins/fieldRenderers/ref/components/types.js +1 -0
  41. package/admin/plugins/fieldRenderers/ref/components/types.js.map +1 -0
  42. package/admin/plugins/fieldRenderers/ref/components/useReference.d.ts +1 -1
  43. package/admin/plugins/fieldRenderers/ref/components/useReference.js +61 -66
  44. package/admin/plugins/fieldRenderers/ref/components/useReference.js.map +1 -1
  45. package/admin/plugins/fieldRenderers/ref/components/useReferences.d.ts +4 -11
  46. package/admin/plugins/fieldRenderers/ref/components/useReferences.js +52 -40
  47. package/admin/plugins/fieldRenderers/ref/components/useReferences.js.map +1 -1
  48. package/admin/plugins/fieldValidators/date/createDateInputField.d.ts +0 -1
  49. package/admin/plugins/fields/file.js +2 -2
  50. package/admin/plugins/fields/file.js.map +1 -1
  51. package/admin/plugins/icons.js +1 -0
  52. package/admin/plugins/icons.js.map +1 -1
  53. package/admin/plugins/index.d.ts +0 -1
  54. package/admin/plugins/permissionRenderer/components/StyledComponents.d.ts +0 -1
  55. package/admin/plugins/upgrades/v5.0.0.d.ts +0 -1
  56. package/admin/plugins/upgrades/v5.19.0.d.ts +0 -1
  57. package/admin/plugins/upgrades/v5.5.0.d.ts +0 -1
  58. package/admin/plugins/upgrades/v5.8.0.d.ts +0 -1
  59. package/admin/views/contentEntries/ContentEntries.js +12 -7
  60. package/admin/views/contentEntries/ContentEntries.js.map +1 -1
  61. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +2 -2
  62. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
  63. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.d.ts +0 -1
  64. package/admin/views/contentEntries/hooks/useContentEntriesList.d.ts +0 -1
  65. package/admin/views/contentModels/CloneContentModelDialog.js +55 -40
  66. package/admin/views/contentModels/CloneContentModelDialog.js.map +1 -1
  67. package/admin/views/contentModels/ContentModelEditor.js +2 -2
  68. package/admin/views/contentModels/ContentModelEditor.js.map +1 -1
  69. package/package.json +22 -22
  70. package/types.d.ts +3 -8
  71. package/admin/plugins/fieldRenderers/ref/components/getOptions.d.ts +0 -16
  72. package/admin/plugins/fieldRenderers/ref/components/getOptions.js +0 -21
  73. 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":"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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\";\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
  }
@@ -1,4 +1,3 @@
1
- import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
1
  import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper";
3
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
3
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
@@ -338,6 +337,14 @@ export function useContentEntryForm(params) {
338
337
  };
339
338
  }(), [contentModel.modelId, listQueryVariables]);
340
339
 
340
+ var onChange = function onChange(data, form) {
341
+ if (!params.onChange) {
342
+ return;
343
+ }
344
+
345
+ return params.onChange(data, form);
346
+ };
347
+
341
348
  var onSubmit = /*#__PURE__*/function () {
342
349
  var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(data) {
343
350
  var fieldsIds, formData, gqlData, meta, _ref7, isLocked;
@@ -386,8 +393,7 @@ export function useContentEntryForm(params) {
386
393
  };
387
394
  }();
388
395
 
389
- var getDefaultValues = function getDefaultValues() {
390
- var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
396
+ var defaultValues = useMemo(function () {
391
397
  var values = {};
392
398
  /**
393
399
  * Assign the default values:
@@ -469,19 +475,16 @@ export function useContentEntryForm(params) {
469
475
  _iterator.f();
470
476
  }
471
477
 
472
- return _objectSpread(_objectSpread({}, values), overrides);
473
- };
474
-
478
+ return values;
479
+ }, [contentModel.modelId]);
475
480
  return {
476
481
  /**
477
482
  * If entry is not set or entry.id does not exist, it means that form is for the new entry, so fetch default values.
478
483
  */
479
- data: entry && entry.id ? entry : getDefaultValues(),
484
+ data: entry && entry.id ? entry : defaultValues,
480
485
  loading: loading,
481
486
  setLoading: setLoading,
482
- onChange: params.onChange || function () {
483
- return void 0;
484
- },
487
+ onChange: onChange,
485
488
  onSubmit: onSubmit,
486
489
  invalidFields: invalidFields,
487
490
  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","defaultValues","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 defaultValues = useMemo((): 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;\n }, [contentModel.modelId]);\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 : defaultValues,\n loading,\n setLoading,\n onChange,\n onSubmit,\n invalidFields,\n renderPlugins\n };\n}\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const RowContainer: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
3
2
  export declare const Row: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
4
3
  export declare const fieldContainer: string;
@@ -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,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * DISCLAIMER!
4
3
  * This file is OLD and needs refactoring into something that makes more sense in the context of the new UI Composer.
@@ -7,12 +7,14 @@ var backStyles = /*#__PURE__*/css({
7
7
  marginLeft: -10
8
8
  }, "label:backStyles;");
9
9
  var BackButton = /*#__PURE__*/React.memo(function () {
10
- var router = useRouter();
10
+ var _useRouter = useRouter(),
11
+ history = _useRouter.history;
12
+
11
13
  return /*#__PURE__*/React.createElement(IconButton, {
12
14
  "data-testid": "cms-editor-back-button",
13
15
  className: backStyles,
14
16
  onClick: function onClick() {
15
- return router.history.push("/cms/content-models");
17
+ return history.push("/cms/content-models");
16
18
  },
17
19
  icon: /*#__PURE__*/React.createElement(BackIcon, null)
18
20
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["BackButton.tsx"],"names":["React","css","IconButton","useRouter","ReactComponent","BackIcon","backStyles","marginLeft","BackButton","memo","router","history","push","displayName"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,GAAT,QAAoB,SAApB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AACA,SAASC,SAAT,QAA0B,sBAA1B;AACA,SAASC,cAAc,IAAIC,QAA3B;AAEA,IAAMC,UAAU,gBAAGL,GAAG,CAAC;AACnBM,EAAAA,UAAU,EAAE,CAAC;AADM,CAAD,sBAAtB;AAIA,IAAMC,UAAoB,gBAAGR,KAAK,CAACS,IAAN,CAAW,YAAM;AAC1C,MAAMC,MAAM,GAAGP,SAAS,EAAxB;AAEA,sBACI,oBAAC,UAAD;AACI,mBAAY,wBADhB;AAEI,IAAA,SAAS,EAAEG,UAFf;AAGI,IAAA,OAAO,EAAE;AAAA,aAAMI,MAAM,CAACC,OAAP,CAAeC,IAAf,uBAAN;AAAA,KAHb;AAII,IAAA,IAAI,eAAE,oBAAC,QAAD;AAJV,IADJ;AAQH,CAX4B,CAA7B;AAaAJ,UAAU,CAACK,WAAX,GAAyB,YAAzB;AAEA,eAAeL,UAAf","sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { ReactComponent as BackIcon } from \"./icons/round-arrow_back-24px.svg\";\n\nconst backStyles = css({\n marginLeft: -10\n});\n\nconst BackButton: React.FC = React.memo(() => {\n const router = useRouter();\n\n return (\n <IconButton\n data-testid=\"cms-editor-back-button\"\n className={backStyles}\n onClick={() => router.history.push(`/cms/content-models`)}\n icon={<BackIcon />}\n />\n );\n});\n\nBackButton.displayName = \"BackButton\";\n\nexport default BackButton;\n"]}
1
+ {"version":3,"sources":["BackButton.tsx"],"names":["React","css","IconButton","useRouter","ReactComponent","BackIcon","backStyles","marginLeft","BackButton","memo","history","push","displayName"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,GAAT,QAAoB,SAApB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AACA,SAASC,SAAT,QAA0B,sBAA1B;AACA,SAASC,cAAc,IAAIC,QAA3B;AAEA,IAAMC,UAAU,gBAAGL,GAAG,CAAC;AACnBM,EAAAA,UAAU,EAAE,CAAC;AADM,CAAD,sBAAtB;AAIA,IAAMC,UAAoB,gBAAGR,KAAK,CAACS,IAAN,CAAW,YAAM;AAC1C,mBAAoBN,SAAS,EAA7B;AAAA,MAAQO,OAAR,cAAQA,OAAR;;AAEA,sBACI,oBAAC,UAAD;AACI,mBAAY,wBADhB;AAEI,IAAA,SAAS,EAAEJ,UAFf;AAGI,IAAA,OAAO,EAAE;AAAA,aAAMI,OAAO,CAACC,IAAR,uBAAN;AAAA,KAHb;AAII,IAAA,IAAI,eAAE,oBAAC,QAAD;AAJV,IADJ;AAQH,CAX4B,CAA7B;AAaAH,UAAU,CAACI,WAAX,GAAyB,YAAzB;AAEA,eAAeJ,UAAf","sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { ReactComponent as BackIcon } from \"./icons/round-arrow_back-24px.svg\";\n\nconst backStyles = css({\n marginLeft: -10\n});\n\nconst BackButton: React.FC = React.memo(() => {\n const { history } = useRouter();\n\n return (\n <IconButton\n data-testid=\"cms-editor-back-button\"\n className={backStyles}\n onClick={() => history.push(`/cms/content-models`)}\n icon={<BackIcon />}\n />\n );\n});\n\nBackButton.displayName = \"BackButton\";\n\nexport default BackButton;\n"]}
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const Divider: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
3
2
  export default Divider;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const NameInputWrapper: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
3
2
  export declare const NameWrapper: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
4
3
  export declare const FormName: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  declare const _default: {
3
2
  name: string;
4
3
  type: string;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { BindComponent } from "@webiny/form";
3
2
  interface GeneralSettingsProps {
4
3
  Bind: BindComponent;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { FormComponentProps } from "@webiny/ui/types";
3
2
  export default function GroupSelect({ value, ...props }: FormComponentProps): JSX.Element;
@@ -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":["fileFields.tsx"],"names":["React","dotProp","i18n","Cell","GridInner","imageWrapperStyles","FileManager","styled","File","t","ns","FileUploadWrapper","position","opacity","pointerEvents","color","FieldRenderer","getBind","Label","field","Bind","imagesOnly","settings","bind","value","onChange","showFileManager","selectFiles","index","initialFiles","length","files","Array","isArray","urls","map","f","src","slice","label","url","delete","defaultProps","validation","isValid","styles","width","height","plugin","type","name","renderer","rendererName","description","canUse","multipleValues","render"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport { CmsEditorField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Cell, GridInner } from \"@webiny/ui/Grid\";\nimport { imageWrapperStyles } from \"./utils\";\nimport { FileManager } from \"@webiny/app-admin/components\";\nimport styled from \"@emotion/styled\";\nimport File from \"./File\";\nimport { GetBindCallable } from \"~/admin/components/ContentEntryForm/useBind\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/file\");\n\nconst FileUploadWrapper = styled(\"div\")({\n position: \"relative\",\n \".disabled\": {\n opacity: 0.75,\n pointerEvents: \"none\"\n },\n \".mdc-text-field-helper-text\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n});\n\ninterface FieldRendererProps {\n getBind: GetBindCallable;\n Label: React.FC;\n field: CmsEditorField;\n}\nconst FieldRenderer: React.FC<FieldRendererProps> = ({ getBind, Label, field }) => {\n const Bind = getBind();\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n return (\n <Bind>\n {bind => {\n const { value, onChange } = bind;\n return (\n <FileUploadWrapper className={imageWrapperStyles}>\n <FileManager multiple={true} images={imagesOnly}>\n {({ showFileManager }) => {\n const selectFiles = (index = -1) => {\n showFileManager(initialFiles => {\n if (!initialFiles || initialFiles.length === 0) {\n return;\n }\n const files = Array.isArray(initialFiles)\n ? initialFiles\n : [initialFiles];\n\n const urls = files.map(f => f.src);\n if (index === -1) {\n onChange([...(value || []), ...urls]);\n } else {\n onChange([\n ...value.slice(0, index),\n ...urls,\n ...value.slice(index + 1)\n ]);\n }\n });\n };\n return (\n <GridInner>\n <Cell span={12}>\n <Label>{field.label}</Label>\n </Cell>\n\n {value.map((url: string, index: number) => (\n <Cell span={3} key={url}>\n <File\n url={url}\n showFileManager={() => selectFiles(index)}\n onRemove={() =>\n onChange(dotProp.delete(value, index))\n }\n placeholder={t`Select a file\"`}\n />\n </Cell>\n ))}\n\n <Cell span={3}>\n <File\n url={\"\"}\n onRemove={() => {\n return void 0;\n }}\n {...bind}\n showFileManager={() => selectFiles()}\n placeholder={t`Select a file\"`}\n />\n </Cell>\n </GridInner>\n );\n }}\n </FileManager>\n </FileUploadWrapper>\n );\n }}\n </Bind>\n );\n};\n/**\n * Not used?\n */\n// TODO @ts-refactor\nFieldRenderer.defaultProps = {\n validation: { isValid: null },\n styles: { width: \"100%\", height: \"auto\" }\n} as Partial<FieldRendererProps>;\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-files\",\n renderer: {\n rendererName: \"file-inputs\",\n name: t`File Inputs`,\n description: t`Enables selecting multiple files via File Manager.`,\n canUse({ field }) {\n return field.type === \"file\" && !!field.multipleValues;\n },\n render({ field, getBind, Label }) {\n return <FieldRenderer field={field} getBind={getBind} Label={Label} />;\n }\n }\n};\n\nexport default plugin;\n"]}
1
+ {"version":3,"sources":["fileFields.tsx"],"names":["React","dotProp","i18n","Cell","GridInner","imageWrapperStyles","FileManager","styled","File","t","ns","FileUploadWrapper","position","opacity","pointerEvents","color","FieldRenderer","getBind","Label","field","Bind","imagesOnly","settings","bind","value","onChange","showFileManager","selectFiles","index","initialFiles","length","files","Array","isArray","urls","map","f","src","slice","label","url","delete","defaultProps","validation","isValid","styles","width","height","plugin","type","name","renderer","rendererName","description","canUse","multipleValues","render"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport { CmsEditorField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Cell, GridInner } from \"@webiny/ui/Grid\";\nimport { imageWrapperStyles } from \"./utils\";\nimport { FileManager } from \"@webiny/app-admin/components\";\nimport styled from \"@emotion/styled\";\nimport File from \"./File\";\nimport { GetBindCallable } from \"~/admin/components/ContentEntryForm/useBind\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/file\");\n\nconst FileUploadWrapper = styled(\"div\")({\n position: \"relative\",\n \".disabled\": {\n opacity: 0.75,\n pointerEvents: \"none\"\n },\n \".mdc-text-field-helper-text\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n});\n\ninterface FieldRendererProps {\n getBind: GetBindCallable;\n Label: React.FC;\n field: CmsEditorField;\n}\nconst FieldRenderer: React.FC<FieldRendererProps> = ({ getBind, Label, field }) => {\n const Bind = getBind();\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n return (\n <Bind>\n {bind => {\n const { value, onChange } = bind;\n return (\n <FileUploadWrapper className={imageWrapperStyles}>\n <FileManager multiple={true} images={imagesOnly}>\n {({ showFileManager }) => {\n const selectFiles = (index = -1) => {\n showFileManager(initialFiles => {\n if (!initialFiles || initialFiles.length === 0) {\n return;\n }\n const files = Array.isArray(initialFiles)\n ? initialFiles\n : [initialFiles];\n\n const urls = files.map(f => f.src);\n if (index === -1) {\n onChange([...(value || []), ...urls]);\n } else {\n onChange([\n ...value.slice(0, index),\n ...urls,\n ...value.slice(index + 1)\n ]);\n }\n });\n };\n return (\n <GridInner>\n <Cell span={12}>\n <Label>{field.label}</Label>\n </Cell>\n\n {value.map((url: string, index: number) => (\n <Cell span={3} key={url}>\n <File\n url={url}\n showFileManager={() => selectFiles(index)}\n onRemove={() =>\n onChange(dotProp.delete(value, index))\n }\n placeholder={t`Select a file\"`}\n />\n </Cell>\n ))}\n\n <Cell span={3}>\n <File\n url={\"\"}\n onRemove={() => {\n return void 0;\n }}\n {...bind}\n showFileManager={() => selectFiles()}\n placeholder={t`Select a file\"`}\n />\n </Cell>\n </GridInner>\n );\n }}\n </FileManager>\n </FileUploadWrapper>\n );\n }}\n </Bind>\n );\n};\n/**\n * Not used?\n */\n// TODO @ts-refactor\nFieldRenderer.defaultProps = {\n validation: {\n isValid: null\n },\n styles: { width: \"100%\", height: \"auto\" }\n} as Partial<FieldRendererProps>;\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-files\",\n renderer: {\n rendererName: \"file-inputs\",\n name: t`File Inputs`,\n description: t`Enables selecting multiple files via File Manager.`,\n canUse({ field }) {\n return field.type === \"file\" && !!field.multipleValues;\n },\n render({ field, getBind, Label }) {\n return <FieldRenderer field={field} getBind={getBind} Label={Label} />;\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const imagePlugins: string[];
3
2
  export declare const imageWrapperStyles: string;
4
3
  interface CreateRenderImagePreviewProps {
@@ -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"]}