@webiny/app-headless-cms 5.25.0-beta.2 → 5.25.0-beta.5
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.
- package/admin/components/ContentEntryForm/ContentEntryForm.js +67 -9
- package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -1
- package/admin/components/ContentEntryForm/useContentEntryForm.d.ts +1 -1
- package/admin/components/ContentEntryForm/useContentEntryForm.js +13 -10
- package/admin/components/ContentEntryForm/useContentEntryForm.js.map +1 -1
- package/admin/graphql/contentEntries.js.map +1 -1
- package/admin/icons/draft.svg +3 -0
- package/admin/icons/published.svg +3 -0
- package/admin/icons/unpublished.svg +3 -0
- package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js.map +1 -1
- package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +29 -3
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js +5 -3
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesMultiAutoComplete.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/EntryStatus.d.ts +10 -0
- package/admin/plugins/fieldRenderers/ref/components/EntryStatus.js +50 -0
- package/admin/plugins/fieldRenderers/ref/components/EntryStatus.js.map +1 -0
- package/admin/plugins/fieldRenderers/ref/components/graphql.d.ts +19 -11
- package/admin/plugins/fieldRenderers/ref/components/graphql.js +5 -6
- package/admin/plugins/fieldRenderers/ref/components/graphql.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/helpers.d.ts +6 -0
- package/admin/plugins/fieldRenderers/ref/components/helpers.js +41 -0
- package/admin/plugins/fieldRenderers/ref/components/helpers.js.map +1 -0
- package/admin/plugins/fieldRenderers/ref/components/renderItem.d.ts +4 -2
- package/admin/plugins/fieldRenderers/ref/components/renderItem.js +15 -0
- package/admin/plugins/fieldRenderers/ref/components/renderItem.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/types.d.ts +26 -0
- package/admin/plugins/fieldRenderers/ref/components/types.js +1 -0
- package/admin/plugins/fieldRenderers/ref/components/types.js.map +1 -0
- package/admin/plugins/fieldRenderers/ref/components/useReference.d.ts +1 -1
- package/admin/plugins/fieldRenderers/ref/components/useReference.js +70 -64
- package/admin/plugins/fieldRenderers/ref/components/useReference.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/useReferences.d.ts +4 -10
- package/admin/plugins/fieldRenderers/ref/components/useReferences.js +52 -40
- package/admin/plugins/fieldRenderers/ref/components/useReferences.js.map +1 -1
- package/admin/views/contentEntries/ContentEntries.js +11 -6
- package/admin/views/contentEntries/ContentEntries.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +2 -2
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
- package/admin/views/contentModels/CloneContentModelDialog.js +55 -40
- package/admin/views/contentModels/CloneContentModelDialog.js.map +1 -1
- package/package.json +17 -17
- package/types.d.ts +3 -8
- package/admin/plugins/fieldRenderers/ref/components/getOptions.d.ts +0 -16
- package/admin/plugins/fieldRenderers/ref/components/getOptions.js +0 -21
- 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"
|
|
@@ -16,6 +19,23 @@ var FormWrapper = /*#__PURE__*/styled("div", {
|
|
|
16
19
|
height: "calc(100vh - 260px)",
|
|
17
20
|
overflow: "auto"
|
|
18
21
|
});
|
|
22
|
+
|
|
23
|
+
function omitTypename(key, value) {
|
|
24
|
+
return key === "__typename" ? undefined : value;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var stringify = function stringify(value) {
|
|
28
|
+
return JSON.stringify(value || {}, omitTypename);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
var isDifferent = function isDifferent(value, compare) {
|
|
32
|
+
if (!value && !compare) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return stringify(value) !== stringify(compare);
|
|
37
|
+
};
|
|
38
|
+
|
|
19
39
|
export var ContentEntryForm = function ContentEntryForm(_ref) {
|
|
20
40
|
var onForm = _ref.onForm,
|
|
21
41
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
@@ -24,11 +44,31 @@ export var ContentEntryForm = function ContentEntryForm(_ref) {
|
|
|
24
44
|
|
|
25
45
|
var _useContentEntryForm = useContentEntryForm(props),
|
|
26
46
|
loading = _useContentEntryForm.loading,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
47
|
+
initialData = _useContentEntryForm.data,
|
|
48
|
+
_onChange = _useContentEntryForm.onChange,
|
|
49
|
+
_onSubmit = _useContentEntryForm.onSubmit,
|
|
30
50
|
invalidFields = _useContentEntryForm.invalidFields;
|
|
31
51
|
|
|
52
|
+
var _React$useState = React.useState(false),
|
|
53
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
54
|
+
isDirty = _React$useState2[0],
|
|
55
|
+
setIsDirty = _React$useState2[1];
|
|
56
|
+
/**
|
|
57
|
+
* Reset isDirty when the loaded data changes.
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
useEffect(function () {
|
|
62
|
+
if (!isDirty) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
setIsDirty(false);
|
|
67
|
+
}, [initialData]);
|
|
68
|
+
|
|
69
|
+
var _useSnackbar = useSnackbar(),
|
|
70
|
+
showSnackbar = _useSnackbar.showSnackbar;
|
|
71
|
+
|
|
32
72
|
var ref = useRef(null);
|
|
33
73
|
useEffect(function () {
|
|
34
74
|
if (typeof onForm !== "function" || !ref.current) {
|
|
@@ -70,13 +110,31 @@ export var ContentEntryForm = function ContentEntryForm(_ref) {
|
|
|
70
110
|
}));
|
|
71
111
|
}, [formRenderer]);
|
|
72
112
|
return /*#__PURE__*/React.createElement(Form, {
|
|
73
|
-
onChange: onChange,
|
|
74
|
-
|
|
75
|
-
|
|
113
|
+
onChange: function onChange(data, form) {
|
|
114
|
+
var different = isDifferent(data, initialData);
|
|
115
|
+
|
|
116
|
+
if (isDirty !== different) {
|
|
117
|
+
setIsDirty(different);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return _onChange(data, form);
|
|
121
|
+
},
|
|
122
|
+
onSubmit: function onSubmit(data, form) {
|
|
123
|
+
setIsDirty(false);
|
|
124
|
+
return _onSubmit(data, form);
|
|
125
|
+
},
|
|
126
|
+
data: initialData,
|
|
76
127
|
ref: ref,
|
|
77
|
-
invalidFields: invalidFields
|
|
128
|
+
invalidFields: invalidFields,
|
|
129
|
+
onInvalid: function onInvalid() {
|
|
130
|
+
setIsDirty(true);
|
|
131
|
+
showSnackbar("You have fields that did not pass the validation. Please check the form.");
|
|
132
|
+
}
|
|
78
133
|
}, function (formProps) {
|
|
79
|
-
return /*#__PURE__*/React.createElement(
|
|
134
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Prompt, {
|
|
135
|
+
when: isDirty,
|
|
136
|
+
message: "There are some unsaved changes! Are you sure you want to navigate away and discard all changes?"
|
|
137
|
+
}), /*#__PURE__*/React.createElement(FormWrapper, {
|
|
80
138
|
"data-testid": "cms-content-form"
|
|
81
139
|
}, loading && /*#__PURE__*/React.createElement(CircularProgress, null), formRenderer ? renderCustomLayout(formProps) : /*#__PURE__*/React.createElement(Fields, Object.assign({
|
|
82
140
|
contentModel: contentModel,
|
|
@@ -84,6 +142,6 @@ export var ContentEntryForm = function ContentEntryForm(_ref) {
|
|
|
84
142
|
layout: contentModel.layout || []
|
|
85
143
|
}, formProps, {
|
|
86
144
|
Bind: formProps.Bind
|
|
87
|
-
})));
|
|
145
|
+
}))));
|
|
88
146
|
});
|
|
89
147
|
};
|
|
@@ -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":"
|
|
1
|
+
{"version":3,"sources":["ContentEntryForm.tsx"],"names":["React","useCallback","useEffect","useRef","RenderFieldElement","styled","Form","plugins","CircularProgress","useContentEntryForm","Fields","Prompt","useSnackbar","FormWrapper","height","overflow","omitTypename","key","value","undefined","stringify","JSON","isDifferent","compare","ContentEntryForm","onForm","props","contentModel","loading","initialData","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","different","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\nfunction omitTypename(key: string, value: string): string | undefined {\n return key === \"__typename\" ? undefined : value;\n}\n\nconst stringify = (value: any): string => {\n return JSON.stringify(value || {}, omitTypename);\n};\n\nconst isDifferent = (value: any, compare: any): boolean => {\n if (!value && !compare) {\n return false;\n }\n return stringify(value) !== stringify(compare);\n};\n\nexport const ContentEntryForm: React.FC<ContentEntryFormProps> = ({ onForm, ...props }) => {\n const { contentModel } = props;\n const {\n loading,\n data: initialData,\n onChange,\n onSubmit,\n invalidFields\n } = useContentEntryForm(props);\n\n const [isDirty, setIsDirty] = React.useState<boolean>(false);\n /**\n * Reset isDirty when the loaded data changes.\n */\n useEffect(() => {\n if (!isDirty) {\n return;\n }\n setIsDirty(false);\n }, [initialData]);\n\n const { showSnackbar } = useSnackbar();\n\n const ref = useRef<FormAPI | null>(null);\n\n useEffect(() => {\n if (typeof onForm !== \"function\" || !ref.current) {\n return;\n }\n onForm(ref.current);\n }, []);\n\n 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 const different = isDifferent(data, initialData);\n if (isDirty !== different) {\n setIsDirty(different);\n }\n return onChange(data, form);\n }}\n onSubmit={(data, form) => {\n setIsDirty(false);\n return onSubmit(data, form);\n }}\n data={initialData}\n ref={ref}\n invalidFields={invalidFields}\n onInvalid={() => {\n setIsDirty(true);\n showSnackbar(\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:
|
|
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
|
|
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
|
|
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 :
|
|
484
|
+
data: entry && entry.id ? entry : defaultValues,
|
|
480
485
|
loading: loading,
|
|
481
486
|
setLoading: setLoading,
|
|
482
|
-
onChange:
|
|
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 +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="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,
|
|
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,
|
|
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,
|
|
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,
|
|
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","
|
|
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"]}
|