@webiny/app-headless-cms 5.40.3 → 5.40.4-beta.1
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/ContentEntryFormProvider.d.ts +0 -1
- package/admin/components/ContentEntryForm/ContentEntryFormProvider.js +1 -38
- package/admin/components/ContentEntryForm/ContentEntryFormProvider.js.map +1 -1
- package/admin/components/ContentModelEditor/ContentModelEditorProvider.js +8 -1
- package/admin/components/ContentModelEditor/ContentModelEditorProvider.js.map +1 -1
- package/admin/plugins/fieldRenderers/select.js +1 -0
- package/admin/plugins/fieldRenderers/select.js.map +1 -1
- package/package.json +29 -29
|
@@ -13,7 +13,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
13
13
|
var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
14
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
15
|
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
16
|
-
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
17
16
|
var _reactRouter = require("@webiny/react-router");
|
|
18
17
|
var _form = require("@webiny/form");
|
|
19
18
|
var _appAdmin = require("@webiny/app-admin");
|
|
@@ -21,18 +20,6 @@ var _appHeadlessCmsCommon = require("@webiny/app-headless-cms-common");
|
|
|
21
20
|
var _ = require("../../..");
|
|
22
21
|
var _excluded = ["id"];
|
|
23
22
|
var promptMessage = "There are some unsaved changes! Are you sure you want to navigate away and discard all changes?";
|
|
24
|
-
function omitTypename(key, value) {
|
|
25
|
-
return key === "__typename" ? undefined : value;
|
|
26
|
-
}
|
|
27
|
-
var stringify = function stringify(value) {
|
|
28
|
-
return JSON.stringify(value || {}, omitTypename);
|
|
29
|
-
};
|
|
30
|
-
var isDifferent = function isDifferent(value, compare) {
|
|
31
|
-
if (!value && !compare) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
return stringify(value) !== stringify(compare);
|
|
35
|
-
};
|
|
36
23
|
var ContentEntryFormContext = exports.ContentEntryFormContext = /*#__PURE__*/_react.default.createContext(undefined);
|
|
37
24
|
var formValidationToMap = function formValidationToMap(invalidFields) {
|
|
38
25
|
return Object.keys(invalidFields).reduce(function (acc, key) {
|
|
@@ -58,18 +45,6 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
|
|
|
58
45
|
var saveOptionsRef = (0, _react.useRef)({
|
|
59
46
|
skipValidators: undefined
|
|
60
47
|
});
|
|
61
|
-
var _React$useState = _react.default.useState(false),
|
|
62
|
-
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
|
63
|
-
isDirty = _React$useState2[0],
|
|
64
|
-
setIsDirty = _React$useState2[1];
|
|
65
|
-
|
|
66
|
-
// Reset `isDirty` when data changes from outside.
|
|
67
|
-
(0, _react.useEffect)(function () {
|
|
68
|
-
if (!isDirty) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
setIsDirty(false);
|
|
72
|
-
}, [entry]);
|
|
73
48
|
var saveEntry = (0, _react.useCallback)(async function () {
|
|
74
49
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
75
50
|
saveOptionsRef.current.skipValidators = options.skipValidators;
|
|
@@ -108,14 +83,6 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
|
|
|
108
83
|
}
|
|
109
84
|
});
|
|
110
85
|
};
|
|
111
|
-
var onChange = (0, _react.useMemo)(function () {
|
|
112
|
-
return (0, _debounce.default)(function (data) {
|
|
113
|
-
var different = isDifferent(data, entry);
|
|
114
|
-
if (isDirty !== different) {
|
|
115
|
-
setIsDirty(different);
|
|
116
|
-
}
|
|
117
|
-
}, 500);
|
|
118
|
-
}, [isDirty, entry]);
|
|
119
86
|
var onFormSubmit = async function onFormSubmit(data) {
|
|
120
87
|
var fieldsIds = model.fields.map(function (item) {
|
|
121
88
|
return item.fieldId;
|
|
@@ -137,7 +104,6 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
|
|
|
137
104
|
return;
|
|
138
105
|
}
|
|
139
106
|
setInvalidFields({});
|
|
140
|
-
setIsDirty(false);
|
|
141
107
|
var isNewRevision = !isNewEntry && data.id !== entry.id;
|
|
142
108
|
if ((isNewEntry || isNewRevision) && onAfterCreate) {
|
|
143
109
|
// We need a timeout to let the Prompt component update.
|
|
@@ -156,13 +122,11 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
|
|
|
156
122
|
}
|
|
157
123
|
}, [setSaveEntry]);
|
|
158
124
|
return /*#__PURE__*/_react.default.createElement(_form.Form, {
|
|
159
|
-
onChange: onChange,
|
|
160
125
|
onSubmit: onFormSubmit,
|
|
161
126
|
data: entry,
|
|
162
127
|
ref: ref,
|
|
163
128
|
invalidFields: invalidFields,
|
|
164
129
|
onInvalid: function onInvalid(invalidFields) {
|
|
165
|
-
setIsDirty(true);
|
|
166
130
|
setInvalidFields(formValidationToMap(invalidFields));
|
|
167
131
|
showSnackbar("Some fields did not pass the validation. Please check the form.");
|
|
168
132
|
}
|
|
@@ -170,7 +134,6 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
|
|
|
170
134
|
var context = {
|
|
171
135
|
entry: formProps.data,
|
|
172
136
|
saveEntry: saveEntry,
|
|
173
|
-
isDirty: isDirty,
|
|
174
137
|
invalidFields: invalidFields
|
|
175
138
|
};
|
|
176
139
|
return /*#__PURE__*/_react.default.createElement(ContentEntryFormContext.Provider, {
|
|
@@ -178,7 +141,7 @@ var ContentEntryFormProvider = exports.ContentEntryFormProvider = function Conte
|
|
|
178
141
|
}, confirmNavigationIfDirty ? /*#__PURE__*/_react.default.createElement(_appAdmin.CompositionScope, {
|
|
179
142
|
name: "cms.contentEntryForm"
|
|
180
143
|
}, /*#__PURE__*/_react.default.createElement(_reactRouter.Prompt, {
|
|
181
|
-
when:
|
|
144
|
+
when: !formProps.form.isPristine,
|
|
182
145
|
message: promptMessage
|
|
183
146
|
})) : null, children);
|
|
184
147
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_pick","_interopRequireDefault","_debounce","_reactRouter","_form","_appAdmin","_appHeadlessCmsCommon","_","_excluded","promptMessage","omitTypename","key","value","undefined","stringify","JSON","isDifferent","compare","ContentEntryFormContext","exports","React","createContext","formValidationToMap","invalidFields","Object","keys","reduce","acc","_objectSpread3","default","_defineProperty2","message","ContentEntryFormProvider","_ref","model","entry","children","onAfterCreate","setSaveEntry","addItemToListCache","confirmNavigationIfDirty","ref","useRef","_useState","useState","_useState2","_slicedToArray2","setInvalidFields","_useSnackbar","useSnackbar","showSnackbar","contentEntry","useContentEntry","saveOptionsRef","skipValidators","_React$useState","_React$useState2","isDirty","setIsDirty","useEffect","saveEntry","useCallback","options","arguments","length","current","submit","persistEntry","_ref2","isLocked","id","createEntry","updateEntryRevision","input","_objectWithoutProperties2","createEntryRevisionFrom","onChange","useMemo","debounce","data","different","onFormSubmit","fieldsIds","fields","map","item","fieldId","formData","pick","_toConsumableArray2","gqlData","prepareFormData","isNewEntry","_await$persistEntry","meta","locked","error","isNewRevision","Promise","resolve","setTimeout","createElement","Form","onSubmit","onInvalid","formProps","context","Provider","CompositionScope","name","Prompt","when"],"sources":["ContentEntryFormProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport debounce from \"lodash/debounce\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { Form, FormAPI, FormOnSubmit, FormValidation } from \"@webiny/form\";\nimport { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types\";\nimport { CompositionScope, useSnackbar } from \"@webiny/app-admin\";\nimport { prepareFormData } from \"@webiny/app-headless-cms-common\";\nimport { useContentEntry } from \"~/index\";\nimport { PartialCmsContentEntryWithId } from \"~/admin/contexts/Cms\";\n\nconst promptMessage =\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\";\n\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\ninterface SaveEntryOptions {\n skipValidators?: string[];\n}\n\nexport interface ContentEntryFormContext {\n entry: Partial<CmsContentEntry>;\n isDirty: boolean;\n saveEntry: (options?: SaveEntryOptions) => Promise<CmsContentEntry | null>;\n invalidFields: FormValidation;\n}\n\nexport const ContentEntryFormContext = React.createContext<ContentEntryFormContext | undefined>(\n undefined\n);\n\ninterface InvalidFieldError {\n fieldId: string;\n error: string;\n}\n\ninterface PersistEntryParams {\n entry: PartialCmsContentEntryWithId;\n isLocked: boolean;\n}\n\nexport interface SetSaveEntry {\n (cb: ContentEntryFormContext[\"saveEntry\"]): void;\n}\n\ninterface ContentEntryFormProviderProps {\n entry: Partial<CmsContentEntry>;\n model: CmsModel;\n confirmNavigationIfDirty: boolean;\n onAfterCreate?: (entry: CmsContentEntry) => void;\n setSaveEntry?: SetSaveEntry;\n addItemToListCache?: boolean;\n children: React.ReactNode;\n}\n\nconst formValidationToMap = (invalidFields: FormValidation) => {\n return Object.keys(invalidFields).reduce(\n (acc, key) => ({ ...acc, [key]: invalidFields[key].message }),\n {} as Record<string, string | undefined>\n );\n};\n\nexport const ContentEntryFormProvider = ({\n model,\n entry,\n children,\n onAfterCreate,\n setSaveEntry,\n addItemToListCache,\n confirmNavigationIfDirty\n}: ContentEntryFormProviderProps) => {\n const ref = useRef<FormAPI<CmsContentEntry> | null>(null);\n const [invalidFields, setInvalidFields] = useState({});\n const { showSnackbar } = useSnackbar();\n const contentEntry = useContentEntry();\n const saveOptionsRef = useRef<SaveEntryOptions>({ skipValidators: undefined });\n const [isDirty, setIsDirty] = React.useState<boolean>(false);\n\n // Reset `isDirty` when data changes from outside.\n useEffect(() => {\n if (!isDirty) {\n return;\n }\n setIsDirty(false);\n }, [entry]);\n\n const saveEntry = useCallback(async (options: SaveEntryOptions = {}) => {\n saveOptionsRef.current.skipValidators = options.skipValidators;\n\n return ref.current!.submit(undefined, {\n skipValidators: options.skipValidators\n }) as unknown as Promise<CmsContentEntry | null>;\n }, []);\n\n const persistEntry = ({ entry, isLocked }: PersistEntryParams) => {\n const options = {\n skipValidators: saveOptionsRef.current.skipValidators,\n addItemToListCache\n };\n\n if (!entry.id) {\n return contentEntry.createEntry({ entry, options });\n }\n\n if (!isLocked) {\n return contentEntry.updateEntryRevision({\n entry,\n options: { skipValidators: options?.skipValidators }\n });\n }\n\n const { id, ...input } = entry;\n\n return contentEntry.createEntryRevisionFrom({\n id,\n input,\n options: { skipValidators: options?.skipValidators }\n });\n };\n\n const onChange = useMemo(() => {\n return debounce(data => {\n const different = isDifferent(data, entry);\n if (isDirty !== different) {\n setIsDirty(different);\n }\n }, 500);\n }, [isDirty, entry]);\n\n const onFormSubmit: FormOnSubmit<CmsContentEntry> = async data => {\n const fieldsIds = model.fields.map(item => item.fieldId);\n const formData = pick(data, [...fieldsIds]);\n\n const gqlData = prepareFormData(formData, model.fields) as Partial<CmsContentEntry>;\n const isNewEntry = data.id === undefined;\n\n const { entry, error } = await persistEntry({\n entry: { id: data.id, ...gqlData },\n isLocked: data.meta?.locked === true\n });\n\n if (error) {\n showSnackbar(error.message);\n setInvalidFields(error.data as InvalidFieldError[]);\n return;\n }\n\n setInvalidFields({});\n setIsDirty(false);\n\n const isNewRevision = !isNewEntry && data.id !== entry.id;\n\n if ((isNewEntry || isNewRevision) && onAfterCreate) {\n // We need a timeout to let the Prompt component update.\n await new Promise<void>(resolve => {\n setTimeout(() => {\n onAfterCreate(entry);\n resolve();\n }, 10);\n });\n }\n\n return entry;\n };\n\n useEffect(() => {\n if (typeof setSaveEntry === \"function\") {\n setSaveEntry(saveEntry);\n }\n }, [setSaveEntry]);\n\n return (\n <Form<CmsContentEntry>\n onChange={onChange}\n onSubmit={onFormSubmit}\n data={entry}\n ref={ref}\n invalidFields={invalidFields}\n onInvalid={invalidFields => {\n setIsDirty(true);\n setInvalidFields(formValidationToMap(invalidFields));\n showSnackbar(\"Some fields did not pass the validation. Please check the form.\");\n }}\n >\n {formProps => {\n const context: ContentEntryFormContext = {\n entry: formProps.data,\n saveEntry,\n isDirty,\n invalidFields\n };\n return (\n <ContentEntryFormContext.Provider value={context}>\n {confirmNavigationIfDirty ? (\n <CompositionScope name={\"cms.contentEntryForm\"}>\n <Prompt when={isDirty} message={promptMessage} />\n </CompositionScope>\n ) : null}\n {children}\n </ContentEntryFormContext.Provider>\n );\n }}\n </Form>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,SAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AAEA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,qBAAA,GAAAP,OAAA;AACA,IAAAQ,CAAA,GAAAR,OAAA;AAA0C,IAAAS,SAAA;AAG1C,IAAMC,aAAa,GACf,iGAAiG;AAErG,SAASC,YAAYA,CAACC,GAAW,EAAEC,KAAa,EAAsB;EAClE,OAAOD,GAAG,KAAK,YAAY,GAAGE,SAAS,GAAGD,KAAK;AACnD;AAEA,IAAME,SAAS,GAAG,SAAZA,SAASA,CAAIF,KAAU,EAAa;EACtC,OAAOG,IAAI,CAACD,SAAS,CAACF,KAAK,IAAI,CAAC,CAAC,EAAEF,YAAY,CAAC;AACpD,CAAC;AAED,IAAMM,WAAW,GAAG,SAAdA,WAAWA,CAAIJ,KAAU,EAAEK,OAAY,EAAc;EACvD,IAAI,CAACL,KAAK,IAAI,CAACK,OAAO,EAAE;IACpB,OAAO,KAAK;EAChB;EACA,OAAOH,SAAS,CAACF,KAAK,CAAC,KAAKE,SAAS,CAACG,OAAO,CAAC;AAClD,CAAC;AAaM,IAAMC,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,gBAAGE,cAAK,CAACC,aAAa,CACtDR,SACJ,CAAC;AA0BD,IAAMS,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,aAA6B,EAAK;EAC3D,OAAOC,MAAM,CAACC,IAAI,CAACF,aAAa,CAAC,CAACG,MAAM,CACpC,UAACC,GAAG,EAAEhB,GAAG;IAAA,WAAAiB,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MAAWF,GAAG,WAAAG,gBAAA,CAAAD,OAAA,MAAGlB,GAAG,EAAGY,aAAa,CAACZ,GAAG,CAAC,CAACoB,OAAO;EAAA,CAAG,EAC7D,CAAC,CACL,CAAC;AACL,CAAC;AAEM,IAAMC,wBAAwB,GAAAb,OAAA,CAAAa,wBAAA,GAAG,SAA3BA,wBAAwBA,CAAAC,IAAA,EAQA;EAAA,IAPjCC,KAAK,GAAAD,IAAA,CAALC,KAAK;IACLC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,aAAa,GAAAJ,IAAA,CAAbI,aAAa;IACbC,YAAY,GAAAL,IAAA,CAAZK,YAAY;IACZC,kBAAkB,GAAAN,IAAA,CAAlBM,kBAAkB;IAClBC,wBAAwB,GAAAP,IAAA,CAAxBO,wBAAwB;EAExB,IAAMC,GAAG,GAAG,IAAAC,aAAM,EAAkC,IAAI,CAAC;EACzD,IAAAC,SAAA,GAA0C,IAAAC,eAAQ,EAAC,CAAC,CAAC,CAAC;IAAAC,UAAA,OAAAC,eAAA,CAAAjB,OAAA,EAAAc,SAAA;IAA/CpB,aAAa,GAAAsB,UAAA;IAAEE,gBAAgB,GAAAF,UAAA;EACtC,IAAAG,YAAA,GAAyB,IAAAC,qBAAW,EAAC,CAAC;IAA9BC,YAAY,GAAAF,YAAA,CAAZE,YAAY;EACpB,IAAMC,YAAY,GAAG,IAAAC,iBAAe,EAAC,CAAC;EACtC,IAAMC,cAAc,GAAG,IAAAX,aAAM,EAAmB;IAAEY,cAAc,EAAEzC;EAAU,CAAC,CAAC;EAC9E,IAAA0C,eAAA,GAA8BnC,cAAK,CAACwB,QAAQ,CAAU,KAAK,CAAC;IAAAY,gBAAA,OAAAV,eAAA,CAAAjB,OAAA,EAAA0B,eAAA;IAArDE,OAAO,GAAAD,gBAAA;IAAEE,UAAU,GAAAF,gBAAA;;EAE1B;EACA,IAAAG,gBAAS,EAAC,YAAM;IACZ,IAAI,CAACF,OAAO,EAAE;MACV;IACJ;IACAC,UAAU,CAAC,KAAK,CAAC;EACrB,CAAC,EAAE,CAACvB,KAAK,CAAC,CAAC;EAEX,IAAMyB,SAAS,GAAG,IAAAC,kBAAW,EAAC,kBAA0C;IAAA,IAAnCC,OAAyB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAlD,SAAA,GAAAkD,SAAA,MAAG,CAAC,CAAC;IAC/DV,cAAc,CAACY,OAAO,CAACX,cAAc,GAAGQ,OAAO,CAACR,cAAc;IAE9D,OAAOb,GAAG,CAACwB,OAAO,CAAEC,MAAM,CAACrD,SAAS,EAAE;MAClCyC,cAAc,EAAEQ,OAAO,CAACR;IAC5B,CAAC,CAAC;EACN,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMa,YAAY,GAAG,SAAfA,YAAYA,CAAAC,KAAA,EAAgD;IAAA,IAA1CjC,KAAK,GAAAiC,KAAA,CAALjC,KAAK;MAAEkC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;IACnC,IAAMP,OAAO,GAAG;MACZR,cAAc,EAAED,cAAc,CAACY,OAAO,CAACX,cAAc;MACrDf,kBAAkB,EAAlBA;IACJ,CAAC;IAED,IAAI,CAACJ,KAAK,CAACmC,EAAE,EAAE;MACX,OAAOnB,YAAY,CAACoB,WAAW,CAAC;QAAEpC,KAAK,EAALA,KAAK;QAAE2B,OAAO,EAAPA;MAAQ,CAAC,CAAC;IACvD;IAEA,IAAI,CAACO,QAAQ,EAAE;MACX,OAAOlB,YAAY,CAACqB,mBAAmB,CAAC;QACpCrC,KAAK,EAALA,KAAK;QACL2B,OAAO,EAAE;UAAER,cAAc,EAAEQ,OAAO,EAAER;QAAe;MACvD,CAAC,CAAC;IACN;IAEA,IAAQgB,EAAE,GAAenC,KAAK,CAAtBmC,EAAE;MAAKG,KAAK,OAAAC,yBAAA,CAAA7C,OAAA,EAAKM,KAAK,EAAA3B,SAAA;IAE9B,OAAO2C,YAAY,CAACwB,uBAAuB,CAAC;MACxCL,EAAE,EAAFA,EAAE;MACFG,KAAK,EAALA,KAAK;MACLX,OAAO,EAAE;QAAER,cAAc,EAAEQ,OAAO,EAAER;MAAe;IACvD,CAAC,CAAC;EACN,CAAC;EAED,IAAMsB,QAAQ,GAAG,IAAAC,cAAO,EAAC,YAAM;IAC3B,OAAO,IAAAC,iBAAQ,EAAC,UAAAC,IAAI,EAAI;MACpB,IAAMC,SAAS,GAAGhE,WAAW,CAAC+D,IAAI,EAAE5C,KAAK,CAAC;MAC1C,IAAIsB,OAAO,KAAKuB,SAAS,EAAE;QACvBtB,UAAU,CAACsB,SAAS,CAAC;MACzB;IACJ,CAAC,EAAE,GAAG,CAAC;EACX,CAAC,EAAE,CAACvB,OAAO,EAAEtB,KAAK,CAAC,CAAC;EAEpB,IAAM8C,YAA2C,GAAG,eAA9CA,YAA2CA,CAASF,IAAI,EAAI;IAC9D,IAAMG,SAAS,GAAGhD,KAAK,CAACiD,MAAM,CAACC,GAAG,CAAC,UAAAC,IAAI;MAAA,OAAIA,IAAI,CAACC,OAAO;IAAA,EAAC;IACxD,IAAMC,QAAQ,GAAG,IAAAC,aAAI,EAACT,IAAI,MAAAU,mBAAA,CAAA5D,OAAA,EAAMqD,SAAS,CAAC,CAAC;IAE3C,IAAMQ,OAAO,GAAG,IAAAC,qCAAe,EAACJ,QAAQ,EAAErD,KAAK,CAACiD,MAAM,CAA6B;IACnF,IAAMS,UAAU,GAAGb,IAAI,CAACT,EAAE,KAAKzD,SAAS;IAExC,IAAAgF,mBAAA,GAAyB,MAAM1B,YAAY,CAAC;QACxChC,KAAK,MAAAP,cAAA,CAAAC,OAAA;UAAIyC,EAAE,EAAES,IAAI,CAACT;QAAE,GAAKoB,OAAO,CAAE;QAClCrB,QAAQ,EAAEU,IAAI,CAACe,IAAI,EAAEC,MAAM,KAAK;MACpC,CAAC,CAAC;MAHM5D,KAAK,GAAA0D,mBAAA,CAAL1D,KAAK;MAAE6D,KAAK,GAAAH,mBAAA,CAALG,KAAK;IAKpB,IAAIA,KAAK,EAAE;MACP9C,YAAY,CAAC8C,KAAK,CAACjE,OAAO,CAAC;MAC3BgB,gBAAgB,CAACiD,KAAK,CAACjB,IAA2B,CAAC;MACnD;IACJ;IAEAhC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACpBW,UAAU,CAAC,KAAK,CAAC;IAEjB,IAAMuC,aAAa,GAAG,CAACL,UAAU,IAAIb,IAAI,CAACT,EAAE,KAAKnC,KAAK,CAACmC,EAAE;IAEzD,IAAI,CAACsB,UAAU,IAAIK,aAAa,KAAK5D,aAAa,EAAE;MAChD;MACA,MAAM,IAAI6D,OAAO,CAAO,UAAAC,OAAO,EAAI;QAC/BC,UAAU,CAAC,YAAM;UACb/D,aAAa,CAACF,KAAK,CAAC;UACpBgE,OAAO,CAAC,CAAC;QACb,CAAC,EAAE,EAAE,CAAC;MACV,CAAC,CAAC;IACN;IAEA,OAAOhE,KAAK;EAChB,CAAC;EAED,IAAAwB,gBAAS,EAAC,YAAM;IACZ,IAAI,OAAOrB,YAAY,KAAK,UAAU,EAAE;MACpCA,YAAY,CAACsB,SAAS,CAAC;IAC3B;EACJ,CAAC,EAAE,CAACtB,YAAY,CAAC,CAAC;EAElB,oBACIzC,MAAA,CAAAgC,OAAA,CAAAwE,aAAA,CAACjG,KAAA,CAAAkG,IAAI;IACD1B,QAAQ,EAAEA,QAAS;IACnB2B,QAAQ,EAAEtB,YAAa;IACvBF,IAAI,EAAE5C,KAAM;IACZM,GAAG,EAAEA,GAAI;IACTlB,aAAa,EAAEA,aAAc;IAC7BiF,SAAS,EAAE,SAAAA,UAAAjF,aAAa,EAAI;MACxBmC,UAAU,CAAC,IAAI,CAAC;MAChBX,gBAAgB,CAACzB,mBAAmB,CAACC,aAAa,CAAC,CAAC;MACpD2B,YAAY,CAAC,iEAAiE,CAAC;IACnF;EAAE,GAED,UAAAuD,SAAS,EAAI;IACV,IAAMC,OAAgC,GAAG;MACrCvE,KAAK,EAAEsE,SAAS,CAAC1B,IAAI;MACrBnB,SAAS,EAATA,SAAS;MACTH,OAAO,EAAPA,OAAO;MACPlC,aAAa,EAAbA;IACJ,CAAC;IACD,oBACI1B,MAAA,CAAAgC,OAAA,CAAAwE,aAAA,CAACnF,uBAAuB,CAACyF,QAAQ;MAAC/F,KAAK,EAAE8F;IAAQ,GAC5ClE,wBAAwB,gBACrB3C,MAAA,CAAAgC,OAAA,CAAAwE,aAAA,CAAChG,SAAA,CAAAuG,gBAAgB;MAACC,IAAI,EAAE;IAAuB,gBAC3ChH,MAAA,CAAAgC,OAAA,CAAAwE,aAAA,CAAClG,YAAA,CAAA2G,MAAM;MAACC,IAAI,EAAEtD,OAAQ;MAAC1B,OAAO,EAAEtB;IAAc,CAAE,CAClC,CAAC,GACnB,IAAI,EACP2B,QAC6B,CAAC;EAE3C,CACE,CAAC;AAEf,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_pick","_interopRequireDefault","_reactRouter","_form","_appAdmin","_appHeadlessCmsCommon","_","_excluded","promptMessage","ContentEntryFormContext","exports","React","createContext","undefined","formValidationToMap","invalidFields","Object","keys","reduce","acc","key","_objectSpread3","default","_defineProperty2","message","ContentEntryFormProvider","_ref","model","entry","children","onAfterCreate","setSaveEntry","addItemToListCache","confirmNavigationIfDirty","ref","useRef","_useState","useState","_useState2","_slicedToArray2","setInvalidFields","_useSnackbar","useSnackbar","showSnackbar","contentEntry","useContentEntry","saveOptionsRef","skipValidators","saveEntry","useCallback","options","arguments","length","current","submit","persistEntry","_ref2","isLocked","id","createEntry","updateEntryRevision","input","_objectWithoutProperties2","createEntryRevisionFrom","onFormSubmit","data","fieldsIds","fields","map","item","fieldId","formData","pick","_toConsumableArray2","gqlData","prepareFormData","isNewEntry","_await$persistEntry","meta","locked","error","isNewRevision","Promise","resolve","setTimeout","useEffect","createElement","Form","onSubmit","onInvalid","formProps","context","Provider","value","CompositionScope","name","Prompt","when","form","isPristine"],"sources":["ContentEntryFormProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport pick from \"lodash/pick\";\nimport { Prompt } from \"@webiny/react-router\";\nimport { Form, FormAPI, FormOnSubmit, FormValidation } from \"@webiny/form\";\nimport { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types\";\nimport { CompositionScope, useSnackbar } from \"@webiny/app-admin\";\nimport { prepareFormData } from \"@webiny/app-headless-cms-common\";\nimport { useContentEntry } from \"~/index\";\nimport { PartialCmsContentEntryWithId } from \"~/admin/contexts/Cms\";\n\nconst promptMessage =\n \"There are some unsaved changes! Are you sure you want to navigate away and discard all changes?\";\n\ninterface SaveEntryOptions {\n skipValidators?: string[];\n}\n\nexport interface ContentEntryFormContext {\n entry: Partial<CmsContentEntry>;\n saveEntry: (options?: SaveEntryOptions) => Promise<CmsContentEntry | null>;\n invalidFields: FormValidation;\n}\n\nexport const ContentEntryFormContext = React.createContext<ContentEntryFormContext | undefined>(\n undefined\n);\n\ninterface InvalidFieldError {\n fieldId: string;\n error: string;\n}\n\ninterface PersistEntryParams {\n entry: PartialCmsContentEntryWithId;\n isLocked: boolean;\n}\n\nexport interface SetSaveEntry {\n (cb: ContentEntryFormContext[\"saveEntry\"]): void;\n}\n\ninterface ContentEntryFormProviderProps {\n entry: Partial<CmsContentEntry>;\n model: CmsModel;\n confirmNavigationIfDirty: boolean;\n onAfterCreate?: (entry: CmsContentEntry) => void;\n setSaveEntry?: SetSaveEntry;\n addItemToListCache?: boolean;\n children: React.ReactNode;\n}\n\nconst formValidationToMap = (invalidFields: FormValidation) => {\n return Object.keys(invalidFields).reduce(\n (acc, key) => ({ ...acc, [key]: invalidFields[key].message }),\n {} as Record<string, string | undefined>\n );\n};\n\nexport const ContentEntryFormProvider = ({\n model,\n entry,\n children,\n onAfterCreate,\n setSaveEntry,\n addItemToListCache,\n confirmNavigationIfDirty\n}: ContentEntryFormProviderProps) => {\n const ref = useRef<FormAPI<CmsContentEntry> | null>(null);\n const [invalidFields, setInvalidFields] = useState({});\n const { showSnackbar } = useSnackbar();\n const contentEntry = useContentEntry();\n const saveOptionsRef = useRef<SaveEntryOptions>({ skipValidators: undefined });\n\n const saveEntry = useCallback(async (options: SaveEntryOptions = {}) => {\n saveOptionsRef.current.skipValidators = options.skipValidators;\n\n return ref.current!.submit(undefined, {\n skipValidators: options.skipValidators\n }) as unknown as Promise<CmsContentEntry | null>;\n }, []);\n\n const persistEntry = ({ entry, isLocked }: PersistEntryParams) => {\n const options = {\n skipValidators: saveOptionsRef.current.skipValidators,\n addItemToListCache\n };\n\n if (!entry.id) {\n return contentEntry.createEntry({ entry, options });\n }\n\n if (!isLocked) {\n return contentEntry.updateEntryRevision({\n entry,\n options: { skipValidators: options?.skipValidators }\n });\n }\n\n const { id, ...input } = entry;\n\n return contentEntry.createEntryRevisionFrom({\n id,\n input,\n options: { skipValidators: options?.skipValidators }\n });\n };\n\n const onFormSubmit: FormOnSubmit<CmsContentEntry> = async data => {\n const fieldsIds = model.fields.map(item => item.fieldId);\n const formData = pick(data, [...fieldsIds]);\n\n const gqlData = prepareFormData(formData, model.fields) as Partial<CmsContentEntry>;\n const isNewEntry = data.id === undefined;\n\n const { entry, error } = await persistEntry({\n entry: { id: data.id, ...gqlData },\n isLocked: data.meta?.locked === true\n });\n\n if (error) {\n showSnackbar(error.message);\n setInvalidFields(error.data as InvalidFieldError[]);\n return;\n }\n\n setInvalidFields({});\n\n const isNewRevision = !isNewEntry && data.id !== entry.id;\n\n if ((isNewEntry || isNewRevision) && onAfterCreate) {\n // We need a timeout to let the Prompt component update.\n await new Promise<void>(resolve => {\n setTimeout(() => {\n onAfterCreate(entry);\n resolve();\n }, 10);\n });\n }\n\n return entry;\n };\n\n useEffect(() => {\n if (typeof setSaveEntry === \"function\") {\n setSaveEntry(saveEntry);\n }\n }, [setSaveEntry]);\n\n return (\n <Form<CmsContentEntry>\n onSubmit={onFormSubmit}\n data={entry}\n ref={ref}\n invalidFields={invalidFields}\n onInvalid={invalidFields => {\n setInvalidFields(formValidationToMap(invalidFields));\n showSnackbar(\"Some fields did not pass the validation. Please check the form.\");\n }}\n >\n {formProps => {\n const context: ContentEntryFormContext = {\n entry: formProps.data,\n saveEntry,\n invalidFields\n };\n return (\n <ContentEntryFormContext.Provider value={context}>\n {confirmNavigationIfDirty ? (\n <CompositionScope name={\"cms.contentEntryForm\"}>\n <Prompt when={!formProps.form.isPristine} message={promptMessage} />\n </CompositionScope>\n ) : null}\n {children}\n </ContentEntryFormContext.Provider>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,6 +16,7 @@ var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
|
|
|
16
16
|
var _contentModels = require("../../graphql/contentModels");
|
|
17
17
|
var _viewsGraphql = require("../../viewsGraphql");
|
|
18
18
|
var _ModelProvider = require("../ModelProvider");
|
|
19
|
+
var _utils = require("@webiny/app/utils");
|
|
19
20
|
var contentModelEditorContext = exports.contentModelEditorContext = /*#__PURE__*/_react.default.createContext(undefined);
|
|
20
21
|
var contentModelEditorReducer = exports.contentModelEditorReducer = function contentModelEditorReducer(prev, action) {
|
|
21
22
|
var data = action.data,
|
|
@@ -31,6 +32,7 @@ var contentModelEditorReducer = exports.contentModelEditorReducer = function con
|
|
|
31
32
|
return prev;
|
|
32
33
|
}
|
|
33
34
|
};
|
|
35
|
+
var hashModel = (0, _utils.createHashing)("SHA-256");
|
|
34
36
|
|
|
35
37
|
/**
|
|
36
38
|
* Cleanup is required because backend always expects string value in predefined values entries
|
|
@@ -129,8 +131,13 @@ var ContentModelEditorProvider = exports.ContentModelEditorProvider = function C
|
|
|
129
131
|
*/
|
|
130
132
|
var setData = async function setData(setter) {
|
|
131
133
|
var saveModel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
132
|
-
setPristine(false);
|
|
133
134
|
var data = setter(state.data);
|
|
135
|
+
var existingHash = await hashModel(state.data);
|
|
136
|
+
var newHash = await hashModel(data);
|
|
137
|
+
if (existingHash === newHash) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
setPristine(false);
|
|
134
141
|
dispatch({
|
|
135
142
|
type: "data",
|
|
136
143
|
data: data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_get2","_interopRequireDefault","_pick","_reactRouter","_useSnackbar2","_contentModels","_viewsGraphql","_ModelProvider","contentModelEditorContext","exports","React","createContext","undefined","contentModelEditorReducer","prev","action","data","type","_objectSpread2","default","cleanupModelDataFields","fields","map","field","predefinedValues","_ref","_ref$enabled","enabled","_ref$values","values","_ref2","label","value","selected","String","cleanupModelData","ContentModelEditorProvider","_ref3","children","apolloClient","modelId","_useReducer","useReducer","isPristine","activeTabIndex","_useReducer2","_slicedToArray2","state","dispatch","_useRouter","useRouter","history","_useSnackbar","useSnackbar","showSnackbar","setPristine","flag","saveContentModel","modelData","pick","response","mutate","mutation","UPDATE_CONTENT_MODEL","variables","refetchQueries","query","LIST_MENU_CONTENT_GROUPS_MODELS","updateContentModel","error","setActiveTabIndex","useCallback","setData","setter","saveModel","arguments","length","getContentModel","GET_CONTENT_MODEL","_get","get","Error","message","useEffect","catch","push","useMemo","contentModel","Provider","createElement","ModelProvider","model"],"sources":["ContentModelEditorProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport get from \"lodash/get\";\nimport pick from \"lodash/pick\";\nimport { ApolloClient } from \"apollo-client\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables,\n UPDATE_CONTENT_MODEL,\n UpdateCmsModelMutationResponse,\n UpdateCmsModelMutationVariables\n} from \"~/admin/graphql/contentModels\";\nimport { LIST_MENU_CONTENT_GROUPS_MODELS } from \"~/admin/viewsGraphql\";\nimport { CmsModelField, CmsModel } from \"~/types\";\nimport { FetchResult } from \"apollo-link\";\nimport { ModelProvider } from \"~/admin/components/ModelProvider\";\n\nexport interface ContentModelEditorProviderContext {\n apolloClient: ApolloClient<any>;\n data: CmsModel;\n contentModel: CmsModel;\n isPristine: boolean;\n getContentModel: (modelId: string) => Promise<FetchResult<GetCmsModelQueryResponse>>;\n saveContentModel: (\n data?: CmsModel\n ) => Promise<UpdateCmsModelMutationResponse[\"updateContentModel\"]>;\n setData: (setter: (model: CmsModel) => void, saveContentModel?: boolean) => Promise<any>;\n activeTabIndex: number;\n setActiveTabIndex: (index: number) => void;\n}\n\nexport const contentModelEditorContext = React.createContext<\n ContentModelEditorProviderContext | undefined\n>(undefined);\n\ntype PickedCmsModel = Pick<\n CmsModel,\n \"layout\" | \"fields\" | \"name\" | \"settings\" | \"description\" | \"titleFieldId\" | \"group\"\n>;\ninterface State {\n modelId: string | null;\n isPristine: boolean;\n data: CmsModel;\n activeTabIndex: number;\n}\ninterface Action {\n data: Partial<State> | Partial<CmsModel>;\n type: \"state\" | \"data\";\n}\ninterface Reducer {\n (prev: State, action: Action): State;\n}\nexport const contentModelEditorReducer: Reducer = (prev: State, action: Action): State => {\n const { data, type } = action;\n switch (type) {\n case \"state\":\n return { ...prev, ...data };\n\n case \"data\":\n return { ...prev, data: data as CmsModel };\n default:\n return prev;\n }\n};\n\n/**\n * Cleanup is required because backend always expects string value in predefined values entries\n */\nconst cleanupModelDataFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.map(field => {\n const { predefinedValues } = field;\n const { enabled = false, values = [] } = predefinedValues || {};\n return {\n ...field,\n predefinedValues: {\n enabled,\n values: values.map(({ label, value, selected }) => {\n return {\n label,\n selected: selected || false,\n value: String(value)\n };\n })\n }\n };\n });\n};\n\nconst cleanupModelData = (data: PickedCmsModel): PickedCmsModel => {\n return {\n ...data,\n fields: cleanupModelDataFields(data.fields)\n };\n};\n\ninterface ContentModelEditorProviderProps {\n apolloClient: ApolloClient<any>;\n modelId?: string;\n children: React.ReactElement;\n}\n\nexport const ContentModelEditorProvider = ({\n children,\n apolloClient,\n modelId\n}: ContentModelEditorProviderProps) => {\n const [state, dispatch] = useReducer<Reducer>(contentModelEditorReducer, {\n modelId: modelId || null,\n isPristine: true,\n data: null as unknown as CmsModel,\n activeTabIndex: 0\n });\n\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n\n const setPristine = (flag: boolean): void => {\n dispatch({ type: \"state\", data: { isPristine: flag } });\n };\n\n const saveContentModel = async (\n data?: CmsModel\n ): Promise<UpdateCmsModelMutationResponse[\"updateContentModel\"]> => {\n if (!data) {\n data = state.data;\n }\n const modelData: PickedCmsModel = pick(data, [\n \"group\",\n \"layout\",\n \"fields\",\n \"tags\",\n \"name\",\n \"settings\",\n \"description\",\n \"titleFieldId\",\n \"descriptionFieldId\",\n \"imageFieldId\",\n \"icon\"\n ]);\n const response = await apolloClient.mutate<\n UpdateCmsModelMutationResponse,\n UpdateCmsModelMutationVariables\n >({\n mutation: UPDATE_CONTENT_MODEL,\n variables: {\n modelId: data.modelId,\n data: cleanupModelData(modelData)\n },\n refetchQueries: [\n {\n query: LIST_MENU_CONTENT_GROUPS_MODELS\n }\n ]\n });\n\n setPristine(true);\n\n if (!response.data || !response.data.updateContentModel) {\n return {\n data: null,\n error: null\n };\n }\n\n return response.data.updateContentModel;\n };\n\n const setActiveTabIndex = useCallback((activeTabIndex: number) => {\n dispatch({ type: \"state\", data: { activeTabIndex } });\n }, []);\n\n /**\n * Set form data by providing a callback, which receives a fresh copy of data on which you can work on.\n * Return new data once finished.\n */\n const setData = async (setter: (value: any) => any, saveModel = false): Promise<void> => {\n setPristine(false);\n const data = setter(state.data);\n dispatch({ type: \"data\", data });\n if (!saveModel) {\n return;\n }\n await saveContentModel(data);\n };\n\n const getContentModel = async (\n modelId: string\n ): Promise<FetchResult<GetCmsModelQueryResponse>> => {\n const response = await apolloClient.query<\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n >({\n query: GET_CONTENT_MODEL,\n variables: {\n modelId\n }\n });\n\n const { data, error } = get(response, \"data.getContentModel\");\n if (error) {\n throw new Error(error.message);\n }\n\n await setData(() => data, false);\n setPristine(true);\n return response;\n };\n\n useEffect(() => {\n if (!modelId) {\n return;\n }\n getContentModel(modelId).catch(() => {\n history.push(`/cms/content-models`);\n showSnackbar(`Could not load content model with given ID.`);\n });\n }, [modelId]);\n\n const value = useMemo<ContentModelEditorProviderContext>(\n () => ({\n // Keeping `data` for compatibility\n data: state.data,\n contentModel: state.data,\n modelId,\n apolloClient,\n dispatch,\n isPristine: state.isPristine,\n getContentModel,\n saveContentModel,\n setData,\n activeTabIndex: state.activeTabIndex,\n setActiveTabIndex\n }),\n [state, apolloClient]\n );\n\n const { Provider } = contentModelEditorContext;\n\n return (\n <Provider value={value}>\n <ModelProvider model={value.contentModel}>{children}</ModelProvider>\n </Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_get2","_interopRequireDefault","_pick","_reactRouter","_useSnackbar2","_contentModels","_viewsGraphql","_ModelProvider","_utils","contentModelEditorContext","exports","React","createContext","undefined","contentModelEditorReducer","prev","action","data","type","_objectSpread2","default","hashModel","createHashing","cleanupModelDataFields","fields","map","field","predefinedValues","_ref","_ref$enabled","enabled","_ref$values","values","_ref2","label","value","selected","String","cleanupModelData","ContentModelEditorProvider","_ref3","children","apolloClient","modelId","_useReducer","useReducer","isPristine","activeTabIndex","_useReducer2","_slicedToArray2","state","dispatch","_useRouter","useRouter","history","_useSnackbar","useSnackbar","showSnackbar","setPristine","flag","saveContentModel","modelData","pick","response","mutate","mutation","UPDATE_CONTENT_MODEL","variables","refetchQueries","query","LIST_MENU_CONTENT_GROUPS_MODELS","updateContentModel","error","setActiveTabIndex","useCallback","setData","setter","saveModel","arguments","length","existingHash","newHash","getContentModel","GET_CONTENT_MODEL","_get","get","Error","message","useEffect","catch","push","useMemo","contentModel","Provider","createElement","ModelProvider","model"],"sources":["ContentModelEditorProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport get from \"lodash/get\";\nimport pick from \"lodash/pick\";\nimport { ApolloClient } from \"apollo-client\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables,\n UPDATE_CONTENT_MODEL,\n UpdateCmsModelMutationResponse,\n UpdateCmsModelMutationVariables\n} from \"~/admin/graphql/contentModels\";\nimport { LIST_MENU_CONTENT_GROUPS_MODELS } from \"~/admin/viewsGraphql\";\nimport { CmsModel, CmsModelField } from \"~/types\";\nimport { FetchResult } from \"apollo-link\";\nimport { ModelProvider } from \"~/admin/components/ModelProvider\";\nimport { createHashing } from \"@webiny/app/utils\";\n\nexport interface ContentModelEditorProviderContext {\n apolloClient: ApolloClient<any>;\n data: CmsModel;\n contentModel: CmsModel;\n isPristine: boolean;\n getContentModel: (modelId: string) => Promise<FetchResult<GetCmsModelQueryResponse>>;\n saveContentModel: (\n data?: CmsModel\n ) => Promise<UpdateCmsModelMutationResponse[\"updateContentModel\"]>;\n setData: (setter: (model: CmsModel) => void, saveContentModel?: boolean) => Promise<any>;\n activeTabIndex: number;\n setActiveTabIndex: (index: number) => void;\n}\n\nexport const contentModelEditorContext = React.createContext<\n ContentModelEditorProviderContext | undefined\n>(undefined);\n\ntype PickedCmsModel = Pick<\n CmsModel,\n \"layout\" | \"fields\" | \"name\" | \"settings\" | \"description\" | \"titleFieldId\" | \"group\"\n>;\ninterface State {\n modelId: string | null;\n isPristine: boolean;\n data: CmsModel;\n activeTabIndex: number;\n}\ninterface Action {\n data: Partial<State> | Partial<CmsModel>;\n type: \"state\" | \"data\";\n}\ninterface Reducer {\n (prev: State, action: Action): State;\n}\nexport const contentModelEditorReducer: Reducer = (prev: State, action: Action): State => {\n const { data, type } = action;\n switch (type) {\n case \"state\":\n return { ...prev, ...data };\n\n case \"data\":\n return { ...prev, data: data as CmsModel };\n default:\n return prev;\n }\n};\n\nconst hashModel = createHashing(\"SHA-256\");\n\n/**\n * Cleanup is required because backend always expects string value in predefined values entries\n */\nconst cleanupModelDataFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.map(field => {\n const { predefinedValues } = field;\n const { enabled = false, values = [] } = predefinedValues || {};\n return {\n ...field,\n predefinedValues: {\n enabled,\n values: values.map(({ label, value, selected }) => {\n return {\n label,\n selected: selected || false,\n value: String(value)\n };\n })\n }\n };\n });\n};\n\nconst cleanupModelData = (data: PickedCmsModel): PickedCmsModel => {\n return {\n ...data,\n fields: cleanupModelDataFields(data.fields)\n };\n};\n\ninterface ContentModelEditorProviderProps {\n apolloClient: ApolloClient<any>;\n modelId?: string;\n children: React.ReactElement;\n}\n\nexport const ContentModelEditorProvider = ({\n children,\n apolloClient,\n modelId\n}: ContentModelEditorProviderProps) => {\n const [state, dispatch] = useReducer<Reducer>(contentModelEditorReducer, {\n modelId: modelId || null,\n isPristine: true,\n data: null as unknown as CmsModel,\n activeTabIndex: 0\n });\n\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n\n const setPristine = (flag: boolean): void => {\n dispatch({ type: \"state\", data: { isPristine: flag } });\n };\n\n const saveContentModel = async (\n data?: CmsModel\n ): Promise<UpdateCmsModelMutationResponse[\"updateContentModel\"]> => {\n if (!data) {\n data = state.data;\n }\n const modelData: PickedCmsModel = pick(data, [\n \"group\",\n \"layout\",\n \"fields\",\n \"tags\",\n \"name\",\n \"settings\",\n \"description\",\n \"titleFieldId\",\n \"descriptionFieldId\",\n \"imageFieldId\",\n \"icon\"\n ]);\n const response = await apolloClient.mutate<\n UpdateCmsModelMutationResponse,\n UpdateCmsModelMutationVariables\n >({\n mutation: UPDATE_CONTENT_MODEL,\n variables: {\n modelId: data.modelId,\n data: cleanupModelData(modelData)\n },\n refetchQueries: [\n {\n query: LIST_MENU_CONTENT_GROUPS_MODELS\n }\n ]\n });\n\n setPristine(true);\n\n if (!response.data || !response.data.updateContentModel) {\n return {\n data: null,\n error: null\n };\n }\n\n return response.data.updateContentModel;\n };\n\n const setActiveTabIndex = useCallback((activeTabIndex: number) => {\n dispatch({ type: \"state\", data: { activeTabIndex } });\n }, []);\n\n /**\n * Set form data by providing a callback, which receives a fresh copy of data on which you can work on.\n * Return new data once finished.\n */\n const setData = async (setter: (value: any) => any, saveModel = false): Promise<void> => {\n const data = setter(state.data);\n const existingHash = await hashModel(state.data);\n const newHash = await hashModel(data);\n if (existingHash === newHash) {\n return;\n }\n setPristine(false);\n dispatch({ type: \"data\", data });\n if (!saveModel) {\n return;\n }\n await saveContentModel(data);\n };\n\n const getContentModel = async (\n modelId: string\n ): Promise<FetchResult<GetCmsModelQueryResponse>> => {\n const response = await apolloClient.query<\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n >({\n query: GET_CONTENT_MODEL,\n variables: {\n modelId\n }\n });\n\n const { data, error } = get(response, \"data.getContentModel\");\n if (error) {\n throw new Error(error.message);\n }\n\n await setData(() => data, false);\n\n setPristine(true);\n return response;\n };\n\n useEffect(() => {\n if (!modelId) {\n return;\n }\n getContentModel(modelId).catch(() => {\n history.push(`/cms/content-models`);\n showSnackbar(`Could not load content model with given ID.`);\n });\n }, [modelId]);\n\n const value = useMemo<ContentModelEditorProviderContext>(\n () => ({\n // Keeping `data` for compatibility\n data: state.data,\n contentModel: state.data,\n modelId,\n apolloClient,\n dispatch,\n isPristine: state.isPristine,\n getContentModel,\n saveContentModel,\n setData,\n activeTabIndex: state.activeTabIndex,\n setActiveTabIndex\n }),\n [state, apolloClient]\n );\n\n const { Provider } = contentModelEditorContext;\n\n return (\n <Provider value={value}>\n <ModelProvider model={value.contentModel}>{children}</ModelProvider>\n </Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_get","_i18n","_Select","_templateObject","_templateObject2","t","i18n","ns","plugin","type","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","field","multipleValues","get","render","_ref2","getBind","Bind","_ref3","predefinedValues","_ref3$values","values","options","defaultOption","find","option","selected","createElement","defaultValue","value","undefined","Select","label","helpText","concat","_default","exports"],"sources":["select.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelFieldRendererPlugin } from \"~/types\";\nimport { Select } from \"@webiny/ui/Select\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-select-box\",\n renderer: {\n rendererName: \"select-box\",\n name: t`Select Box`,\n description: t`Renders a select box, allowing selection of a single value.`,\n canUse({ field }) {\n return !field.multipleValues && !!get(field, \"predefinedValues.enabled\");\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n const { values: options = [] } = field.predefinedValues || {};\n const defaultOption = options.find(option => !!option.selected);\n\n return (\n <Bind defaultValue={defaultOption ? defaultOption.value : undefined}>\n <Select\n label={field.label}\n description={field.helpText}\n options={options}\n data-testid={`fr.input.select.${field.label}`}\n />\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AAA2C,IAAAI,eAAA,EAAAC,gBAAA;AAE3C,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,oCAAoC,CAAC;AAEvD,IAAMC,MAAmC,GAAG;EACxCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,sCAAsC;EAC5CC,QAAQ,EAAE;IACNC,YAAY,EAAE,YAAY;IAC1BF,IAAI,EAAEL,CAAC,CAAAF,eAAA,KAAAA,eAAA,OAAAU,uBAAA,CAAAC,OAAA,mBAAY;IACnBC,WAAW,EAAEV,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAS,uBAAA,CAAAC,OAAA,oEAA6D;IAC3EE,MAAM,WAAAA,OAAAC,IAAA,EAAY;MAAA,IAATC,KAAK,GAAAD,IAAA,CAALC,KAAK;MACV,OAAO,CAACA,KAAK,CAACC,cAAc,IAAI,CAAC,CAAC,IAAAC,YAAG,EAACF,KAAK,EAAE,0BAA0B,CAAC;IAC5E,CAAC;IACDG,MAAM,WAAAA,OAAAC,KAAA,EAAqB;MAAA,IAAlBJ,KAAK,GAAAI,KAAA,CAALJ,KAAK;QAAEK,OAAO,GAAAD,KAAA,CAAPC,OAAO;MACnB,IAAMC,IAAI,GAAGD,OAAO,CAAC,CAAC;MAEtB,IAAAE,KAAA,GAAiCP,KAAK,CAACQ,gBAAgB,IAAI,CAAC,CAAC;QAAAC,YAAA,GAAAF,KAAA,CAArDG,MAAM;QAAEC,OAAO,GAAAF,YAAA,cAAG,EAAE,GAAAA,YAAA;MAC5B,IAAMG,aAAa,GAAGD,OAAO,CAACE,IAAI,CAAC,UAAAC,MAAM;QAAA,OAAI,CAAC,CAACA,MAAM,CAACC,QAAQ;MAAA,EAAC;MAE/D,oBACIpC,MAAA,CAAAiB,OAAA,CAAAoB,aAAA,CAACV,IAAI;QAACW,YAAY,EAAEL,aAAa,GAAGA,aAAa,CAACM,KAAK,GAAGC;MAAU,gBAChExC,MAAA,CAAAiB,OAAA,CAAAoB,aAAA,CAAChC,OAAA,CAAAoC,MAAM;QACHC,KAAK,EAAErB,KAAK,CAACqB,KAAM;QACnBxB,WAAW,EAAEG,KAAK,CAACsB,QAAS;QAC5BX,OAAO,EAAEA,OAAQ;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_get","_i18n","_Select","_templateObject","_templateObject2","t","i18n","ns","plugin","type","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","field","multipleValues","get","render","_ref2","getBind","Bind","_ref3","predefinedValues","_ref3$values","values","options","defaultOption","find","option","selected","createElement","defaultValue","value","undefined","Select","label","helpText","placeholder","placeholderText","concat","_default","exports"],"sources":["select.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelFieldRendererPlugin } from \"~/types\";\nimport { Select } from \"@webiny/ui/Select\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst plugin: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-select-box\",\n renderer: {\n rendererName: \"select-box\",\n name: t`Select Box`,\n description: t`Renders a select box, allowing selection of a single value.`,\n canUse({ field }) {\n return !field.multipleValues && !!get(field, \"predefinedValues.enabled\");\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n const { values: options = [] } = field.predefinedValues || {};\n const defaultOption = options.find(option => !!option.selected);\n\n return (\n <Bind defaultValue={defaultOption ? defaultOption.value : undefined}>\n <Select\n label={field.label}\n description={field.helpText}\n options={options}\n placeholder={field.placeholderText}\n data-testid={`fr.input.select.${field.label}`}\n />\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AAA2C,IAAAI,eAAA,EAAAC,gBAAA;AAE3C,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,oCAAoC,CAAC;AAEvD,IAAMC,MAAmC,GAAG;EACxCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,sCAAsC;EAC5CC,QAAQ,EAAE;IACNC,YAAY,EAAE,YAAY;IAC1BF,IAAI,EAAEL,CAAC,CAAAF,eAAA,KAAAA,eAAA,OAAAU,uBAAA,CAAAC,OAAA,mBAAY;IACnBC,WAAW,EAAEV,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAS,uBAAA,CAAAC,OAAA,oEAA6D;IAC3EE,MAAM,WAAAA,OAAAC,IAAA,EAAY;MAAA,IAATC,KAAK,GAAAD,IAAA,CAALC,KAAK;MACV,OAAO,CAACA,KAAK,CAACC,cAAc,IAAI,CAAC,CAAC,IAAAC,YAAG,EAACF,KAAK,EAAE,0BAA0B,CAAC;IAC5E,CAAC;IACDG,MAAM,WAAAA,OAAAC,KAAA,EAAqB;MAAA,IAAlBJ,KAAK,GAAAI,KAAA,CAALJ,KAAK;QAAEK,OAAO,GAAAD,KAAA,CAAPC,OAAO;MACnB,IAAMC,IAAI,GAAGD,OAAO,CAAC,CAAC;MAEtB,IAAAE,KAAA,GAAiCP,KAAK,CAACQ,gBAAgB,IAAI,CAAC,CAAC;QAAAC,YAAA,GAAAF,KAAA,CAArDG,MAAM;QAAEC,OAAO,GAAAF,YAAA,cAAG,EAAE,GAAAA,YAAA;MAC5B,IAAMG,aAAa,GAAGD,OAAO,CAACE,IAAI,CAAC,UAAAC,MAAM;QAAA,OAAI,CAAC,CAACA,MAAM,CAACC,QAAQ;MAAA,EAAC;MAE/D,oBACIpC,MAAA,CAAAiB,OAAA,CAAAoB,aAAA,CAACV,IAAI;QAACW,YAAY,EAAEL,aAAa,GAAGA,aAAa,CAACM,KAAK,GAAGC;MAAU,gBAChExC,MAAA,CAAAiB,OAAA,CAAAoB,aAAA,CAAChC,OAAA,CAAAoC,MAAM;QACHC,KAAK,EAAErB,KAAK,CAACqB,KAAM;QACnBxB,WAAW,EAAEG,KAAK,CAACsB,QAAS;QAC5BX,OAAO,EAAEA,OAAQ;QACjBY,WAAW,EAAEvB,KAAK,CAACwB,eAAgB;QACnC,kCAAAC,MAAA,CAAgCzB,KAAK,CAACqB,KAAK;MAAG,CACjD,CACC,CAAC;IAEf;EACJ;AACJ,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAA/B,OAAA,GAEaN,MAAM","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-headless-cms",
|
|
3
|
-
"version": "5.40.
|
|
3
|
+
"version": "5.40.4-beta.1",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,34 +24,34 @@
|
|
|
24
24
|
"@fortawesome/free-regular-svg-icons": "6.2.1",
|
|
25
25
|
"@fortawesome/free-solid-svg-icons": "6.2.1",
|
|
26
26
|
"@fortawesome/react-fontawesome": "0.1.19",
|
|
27
|
-
"@lexical/utils": "0.16.
|
|
27
|
+
"@lexical/utils": "0.16.1",
|
|
28
28
|
"@material-design-icons/svg": "0.14.13",
|
|
29
29
|
"@svgr/webpack": "6.5.1",
|
|
30
30
|
"@types/react": "18.2.79",
|
|
31
|
-
"@webiny/app": "5.40.
|
|
32
|
-
"@webiny/app-aco": "5.40.
|
|
33
|
-
"@webiny/app-admin": "5.40.
|
|
34
|
-
"@webiny/app-graphql-playground": "5.40.
|
|
35
|
-
"@webiny/app-headless-cms-common": "5.40.
|
|
36
|
-
"@webiny/app-i18n": "5.40.
|
|
37
|
-
"@webiny/app-plugin-admin-welcome-screen": "5.40.
|
|
38
|
-
"@webiny/app-security": "5.40.
|
|
39
|
-
"@webiny/app-tenancy": "5.40.
|
|
40
|
-
"@webiny/app-trash-bin": "5.40.
|
|
41
|
-
"@webiny/error": "5.40.
|
|
42
|
-
"@webiny/feature-flags": "5.40.
|
|
43
|
-
"@webiny/form": "5.40.
|
|
44
|
-
"@webiny/lexical-editor": "5.40.
|
|
45
|
-
"@webiny/lexical-nodes": "5.40.
|
|
46
|
-
"@webiny/lexical-theme": "5.40.
|
|
47
|
-
"@webiny/plugins": "5.40.
|
|
48
|
-
"@webiny/react-composition": "5.40.
|
|
49
|
-
"@webiny/react-properties": "5.40.
|
|
50
|
-
"@webiny/react-router": "5.40.
|
|
51
|
-
"@webiny/theme": "5.40.
|
|
52
|
-
"@webiny/ui": "5.40.
|
|
53
|
-
"@webiny/utils": "5.40.
|
|
54
|
-
"@webiny/validation": "5.40.
|
|
31
|
+
"@webiny/app": "5.40.4-beta.1",
|
|
32
|
+
"@webiny/app-aco": "5.40.4-beta.1",
|
|
33
|
+
"@webiny/app-admin": "5.40.4-beta.1",
|
|
34
|
+
"@webiny/app-graphql-playground": "5.40.4-beta.1",
|
|
35
|
+
"@webiny/app-headless-cms-common": "5.40.4-beta.1",
|
|
36
|
+
"@webiny/app-i18n": "5.40.4-beta.1",
|
|
37
|
+
"@webiny/app-plugin-admin-welcome-screen": "5.40.4-beta.1",
|
|
38
|
+
"@webiny/app-security": "5.40.4-beta.1",
|
|
39
|
+
"@webiny/app-tenancy": "5.40.4-beta.1",
|
|
40
|
+
"@webiny/app-trash-bin": "5.40.4-beta.1",
|
|
41
|
+
"@webiny/error": "5.40.4-beta.1",
|
|
42
|
+
"@webiny/feature-flags": "5.40.4-beta.1",
|
|
43
|
+
"@webiny/form": "5.40.4-beta.1",
|
|
44
|
+
"@webiny/lexical-editor": "5.40.4-beta.1",
|
|
45
|
+
"@webiny/lexical-nodes": "5.40.4-beta.1",
|
|
46
|
+
"@webiny/lexical-theme": "5.40.4-beta.1",
|
|
47
|
+
"@webiny/plugins": "5.40.4-beta.1",
|
|
48
|
+
"@webiny/react-composition": "5.40.4-beta.1",
|
|
49
|
+
"@webiny/react-properties": "5.40.4-beta.1",
|
|
50
|
+
"@webiny/react-router": "5.40.4-beta.1",
|
|
51
|
+
"@webiny/theme": "5.40.4-beta.1",
|
|
52
|
+
"@webiny/ui": "5.40.4-beta.1",
|
|
53
|
+
"@webiny/utils": "5.40.4-beta.1",
|
|
54
|
+
"@webiny/validation": "5.40.4-beta.1",
|
|
55
55
|
"apollo-cache": "1.3.5",
|
|
56
56
|
"apollo-client": "2.6.10",
|
|
57
57
|
"apollo-link": "1.2.14",
|
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
"@babel/preset-react": "7.24.1",
|
|
86
86
|
"@babel/preset-typescript": "7.24.1",
|
|
87
87
|
"@emotion/babel-plugin": "11.11.0",
|
|
88
|
-
"@webiny/cli": "5.40.
|
|
89
|
-
"@webiny/project-utils": "5.40.
|
|
88
|
+
"@webiny/cli": "5.40.4-beta.1",
|
|
89
|
+
"@webiny/project-utils": "5.40.4-beta.1",
|
|
90
90
|
"babel-plugin-module-resolver": "5.0.0",
|
|
91
91
|
"rimraf": "5.0.5",
|
|
92
92
|
"ttypescript": "1.5.15",
|
|
@@ -115,5 +115,5 @@
|
|
|
115
115
|
]
|
|
116
116
|
}
|
|
117
117
|
},
|
|
118
|
-
"gitHead": "
|
|
118
|
+
"gitHead": "5795b78c0b0e8be7b96a1f459025af523c6b2ab4"
|
|
119
119
|
}
|