@webiny/app-headless-cms 5.40.4-beta.0 → 5.40.4-beta.2

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.
@@ -46,7 +46,7 @@ function useBind(_ref) {
46
46
  return /*#__PURE__*/_react.default.createElement(Bind, {
47
47
  name: childName || name,
48
48
  validators: childValidators || inputValidators,
49
- defaultValue: index === -1 ? defaultValue : null
49
+ defaultValue: !isMultipleValues ? defaultValue : null
50
50
  }, function (bind) {
51
51
  // Multiple-values functions below.
52
52
  var props = (0, _objectSpread2.default)({}, bind);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_form","_createValidators","createFieldCacheKey","field","id","fieldId","JSON","stringify","validation","listValidation","join","emptyValidators","useBind","_ref","Bind","memoizedBindComponents","useRef","cacheKey","form","useForm","useCallback","index","arguments","length","undefined","parentName","name","filter","v","componentId","concat","current","validators","createValidators","listValidators","isMultipleValues","multipleValues","inputValidators","UseBind","params","childName","childValidators","children","defaultValue","default","createElement","bind","props","_objectSpread2","appendValue","newValue","currentValue","value","newIndex","onChange","_toConsumableArray2","slice","prependValue","appendValues","newValues","removeValue","validateInput","moveValueUp","splice","moveValueDown","element","cloneElement","displayName"],"sources":["useBind.tsx"],"sourcesContent":["import React, { useRef, useCallback, cloneElement } from \"react\";\nimport { Validator } from \"@webiny/validation/types\";\nimport { useForm } from \"@webiny/form\";\nimport { createValidators } from \"~/utils/createValidators\";\nimport { BindComponent, CmsModelField } from \"~/types\";\n\ninterface UseBindProps {\n field: CmsModelField;\n Bind: BindComponent;\n}\n\ninterface UseBindParams {\n name?: string;\n validators?: Validator | Validator[];\n children?: any;\n defaultValue?: any;\n}\n\nconst createFieldCacheKey = (field: CmsModelField) => {\n return [\n field.id,\n field.fieldId,\n JSON.stringify(field.validation),\n JSON.stringify(field.listValidation)\n ].join(\";\");\n};\n\nexport interface GetBindCallable {\n (index?: number): BindComponent;\n}\n\nconst emptyValidators: Validator[] = [];\n\nexport function useBind({ Bind, field }: UseBindProps) {\n const memoizedBindComponents = useRef<Record<string, BindComponent>>({});\n const cacheKey = createFieldCacheKey(field);\n const form = useForm();\n\n return useCallback(\n (index = -1) => {\n const { parentName } = Bind;\n\n // If there's a parent name assigned to the given Bind component, we need to include it in the new field \"name\".\n // This allows us to have nested fields (like \"object\" field with nested properties)\n const name = [parentName, field.fieldId, index >= 0 ? index : undefined]\n .filter(v => v !== undefined)\n .join(\".\");\n\n const componentId = `${name};${cacheKey}`;\n\n if (memoizedBindComponents.current[componentId]) {\n return memoizedBindComponents.current[componentId];\n }\n\n const validators = createValidators(field, field.validation || emptyValidators);\n const listValidators = createValidators(field, field.listValidation || emptyValidators);\n const isMultipleValues = index === -1 && field.multipleValues;\n const inputValidators = isMultipleValues ? listValidators : validators;\n\n memoizedBindComponents.current[componentId] = function UseBind(params: UseBindParams) {\n const {\n name: childName,\n validators: childValidators,\n children,\n defaultValue\n } = params;\n\n return (\n <Bind\n name={childName || name}\n validators={childValidators || inputValidators}\n defaultValue={index === -1 ? defaultValue : null}\n >\n {bind => {\n // Multiple-values functions below.\n const props = { ...bind };\n if (field.multipleValues && index === -1) {\n props.appendValue = (newValue: any, index?: number) => {\n const currentValue = bind.value || [];\n const newIndex = index ?? currentValue.length;\n\n bind.onChange([\n ...currentValue.slice(0, newIndex),\n newValue,\n ...currentValue.slice(newIndex)\n ]);\n };\n props.prependValue = (newValue: any) => {\n bind.onChange([newValue, ...(bind.value || [])]);\n };\n props.appendValues = (newValues: any[]) => {\n bind.onChange([...(bind.value || []), ...newValues]);\n };\n\n props.removeValue = (index: number) => {\n if (index < 0) {\n return;\n }\n let value = bind.value;\n value = [...value.slice(0, index), ...value.slice(index + 1)];\n\n bind.onChange(value);\n\n // To make sure the field is still valid, we must trigger validation.\n form.validateInput(field.fieldId);\n };\n\n props.moveValueUp = (index: number) => {\n if (index <= 0) {\n return;\n }\n\n const value = [...bind.value];\n value.splice(index, 1);\n value.splice(index - 1, 0, bind.value[index]);\n\n bind.onChange(value);\n };\n\n props.moveValueDown = (index: number) => {\n if (index >= bind.value.length) {\n return;\n }\n\n const value = [...bind.value];\n value.splice(index, 1);\n value.splice(index + 1, 0, bind.value[index]);\n\n bind.onChange(value);\n };\n }\n\n const element =\n typeof children === \"function\"\n ? children(props)\n : cloneElement(children, props);\n\n return element;\n }}\n </Bind>\n );\n } as BindComponent;\n\n // We need to keep track of current field name, to support nested fields.\n memoizedBindComponents.current[componentId].parentName = name;\n memoizedBindComponents.current[componentId].displayName = `Bind<${name}>`;\n\n return memoizedBindComponents.current[componentId];\n },\n [field.fieldId, cacheKey]\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_form","_createValidators","createFieldCacheKey","field","id","fieldId","JSON","stringify","validation","listValidation","join","emptyValidators","useBind","_ref","Bind","memoizedBindComponents","useRef","cacheKey","form","useForm","useCallback","index","arguments","length","undefined","parentName","name","filter","v","componentId","concat","current","validators","createValidators","listValidators","isMultipleValues","multipleValues","inputValidators","UseBind","params","childName","childValidators","children","defaultValue","default","createElement","bind","props","_objectSpread2","appendValue","newValue","currentValue","value","newIndex","onChange","_toConsumableArray2","slice","prependValue","appendValues","newValues","removeValue","validateInput","moveValueUp","splice","moveValueDown","element","cloneElement","displayName"],"sources":["useBind.tsx"],"sourcesContent":["import React, { useRef, useCallback, cloneElement } from \"react\";\nimport { Validator } from \"@webiny/validation/types\";\nimport { useForm } from \"@webiny/form\";\nimport { createValidators } from \"~/utils/createValidators\";\nimport { BindComponent, CmsModelField } from \"~/types\";\n\ninterface UseBindProps {\n field: CmsModelField;\n Bind: BindComponent;\n}\n\ninterface UseBindParams {\n name?: string;\n validators?: Validator | Validator[];\n children?: any;\n defaultValue?: any;\n}\n\nconst createFieldCacheKey = (field: CmsModelField) => {\n return [\n field.id,\n field.fieldId,\n JSON.stringify(field.validation),\n JSON.stringify(field.listValidation)\n ].join(\";\");\n};\n\nexport interface GetBindCallable {\n (index?: number): BindComponent;\n}\n\nconst emptyValidators: Validator[] = [];\n\nexport function useBind({ Bind, field }: UseBindProps) {\n const memoizedBindComponents = useRef<Record<string, BindComponent>>({});\n const cacheKey = createFieldCacheKey(field);\n const form = useForm();\n\n return useCallback(\n (index = -1) => {\n const { parentName } = Bind;\n\n // If there's a parent name assigned to the given Bind component, we need to include it in the new field \"name\".\n // This allows us to have nested fields (like \"object\" field with nested properties)\n const name = [parentName, field.fieldId, index >= 0 ? index : undefined]\n .filter(v => v !== undefined)\n .join(\".\");\n\n const componentId = `${name};${cacheKey}`;\n\n if (memoizedBindComponents.current[componentId]) {\n return memoizedBindComponents.current[componentId];\n }\n\n const validators = createValidators(field, field.validation || emptyValidators);\n const listValidators = createValidators(field, field.listValidation || emptyValidators);\n const isMultipleValues = index === -1 && field.multipleValues;\n const inputValidators = isMultipleValues ? listValidators : validators;\n\n memoizedBindComponents.current[componentId] = function UseBind(params: UseBindParams) {\n const {\n name: childName,\n validators: childValidators,\n children,\n defaultValue\n } = params;\n\n return (\n <Bind\n name={childName || name}\n validators={childValidators || inputValidators}\n defaultValue={!isMultipleValues ? defaultValue : null}\n >\n {bind => {\n // Multiple-values functions below.\n const props = { ...bind };\n if (field.multipleValues && index === -1) {\n props.appendValue = (newValue: any, index?: number) => {\n const currentValue = bind.value || [];\n const newIndex = index ?? currentValue.length;\n\n bind.onChange([\n ...currentValue.slice(0, newIndex),\n newValue,\n ...currentValue.slice(newIndex)\n ]);\n };\n props.prependValue = (newValue: any) => {\n bind.onChange([newValue, ...(bind.value || [])]);\n };\n props.appendValues = (newValues: any[]) => {\n bind.onChange([...(bind.value || []), ...newValues]);\n };\n\n props.removeValue = (index: number) => {\n if (index < 0) {\n return;\n }\n let value = bind.value;\n value = [...value.slice(0, index), ...value.slice(index + 1)];\n\n bind.onChange(value);\n\n // To make sure the field is still valid, we must trigger validation.\n form.validateInput(field.fieldId);\n };\n\n props.moveValueUp = (index: number) => {\n if (index <= 0) {\n return;\n }\n\n const value = [...bind.value];\n value.splice(index, 1);\n value.splice(index - 1, 0, bind.value[index]);\n\n bind.onChange(value);\n };\n\n props.moveValueDown = (index: number) => {\n if (index >= bind.value.length) {\n return;\n }\n\n const value = [...bind.value];\n value.splice(index, 1);\n value.splice(index + 1, 0, bind.value[index]);\n\n bind.onChange(value);\n };\n }\n\n const element =\n typeof children === \"function\"\n ? children(props)\n : cloneElement(children, props);\n\n return element;\n }}\n </Bind>\n );\n } as BindComponent;\n\n // We need to keep track of current field name, to support nested fields.\n memoizedBindComponents.current[componentId].parentName = name;\n memoizedBindComponents.current[componentId].displayName = `Bind<${name}>`;\n\n return memoizedBindComponents.current[componentId];\n },\n [field.fieldId, cacheKey]\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":[]}
@@ -39,6 +39,7 @@ var plugin = {
39
39
  label: field.label,
40
40
  description: field.helpText,
41
41
  options: options,
42
+ placeholder: field.placeholderText,
42
43
  "data-testid": "fr.input.select.".concat(field.label)
43
44
  }));
44
45
  }
@@ -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;QACjB,kCAAAY,MAAA,CAAgCvB,KAAK,CAACqB,KAAK;MAAG,CACjD,CACC,CAAC;IAEf;EACJ;AACJ,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAA7B,OAAA,GAEaN,MAAM","ignoreList":[]}
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.4-beta.0",
3
+ "version": "5.40.4-beta.2",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,30 +28,30 @@
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.4-beta.0",
32
- "@webiny/app-aco": "5.40.4-beta.0",
33
- "@webiny/app-admin": "5.40.4-beta.0",
34
- "@webiny/app-graphql-playground": "5.40.4-beta.0",
35
- "@webiny/app-headless-cms-common": "5.40.4-beta.0",
36
- "@webiny/app-i18n": "5.40.4-beta.0",
37
- "@webiny/app-plugin-admin-welcome-screen": "5.40.4-beta.0",
38
- "@webiny/app-security": "5.40.4-beta.0",
39
- "@webiny/app-tenancy": "5.40.4-beta.0",
40
- "@webiny/app-trash-bin": "5.40.4-beta.0",
41
- "@webiny/error": "5.40.4-beta.0",
42
- "@webiny/feature-flags": "5.40.4-beta.0",
43
- "@webiny/form": "5.40.4-beta.0",
44
- "@webiny/lexical-editor": "5.40.4-beta.0",
45
- "@webiny/lexical-nodes": "5.40.4-beta.0",
46
- "@webiny/lexical-theme": "5.40.4-beta.0",
47
- "@webiny/plugins": "5.40.4-beta.0",
48
- "@webiny/react-composition": "5.40.4-beta.0",
49
- "@webiny/react-properties": "5.40.4-beta.0",
50
- "@webiny/react-router": "5.40.4-beta.0",
51
- "@webiny/theme": "5.40.4-beta.0",
52
- "@webiny/ui": "5.40.4-beta.0",
53
- "@webiny/utils": "5.40.4-beta.0",
54
- "@webiny/validation": "5.40.4-beta.0",
31
+ "@webiny/app": "5.40.4-beta.2",
32
+ "@webiny/app-aco": "5.40.4-beta.2",
33
+ "@webiny/app-admin": "5.40.4-beta.2",
34
+ "@webiny/app-graphql-playground": "5.40.4-beta.2",
35
+ "@webiny/app-headless-cms-common": "5.40.4-beta.2",
36
+ "@webiny/app-i18n": "5.40.4-beta.2",
37
+ "@webiny/app-plugin-admin-welcome-screen": "5.40.4-beta.2",
38
+ "@webiny/app-security": "5.40.4-beta.2",
39
+ "@webiny/app-tenancy": "5.40.4-beta.2",
40
+ "@webiny/app-trash-bin": "5.40.4-beta.2",
41
+ "@webiny/error": "5.40.4-beta.2",
42
+ "@webiny/feature-flags": "5.40.4-beta.2",
43
+ "@webiny/form": "5.40.4-beta.2",
44
+ "@webiny/lexical-editor": "5.40.4-beta.2",
45
+ "@webiny/lexical-nodes": "5.40.4-beta.2",
46
+ "@webiny/lexical-theme": "5.40.4-beta.2",
47
+ "@webiny/plugins": "5.40.4-beta.2",
48
+ "@webiny/react-composition": "5.40.4-beta.2",
49
+ "@webiny/react-properties": "5.40.4-beta.2",
50
+ "@webiny/react-router": "5.40.4-beta.2",
51
+ "@webiny/theme": "5.40.4-beta.2",
52
+ "@webiny/ui": "5.40.4-beta.2",
53
+ "@webiny/utils": "5.40.4-beta.2",
54
+ "@webiny/validation": "5.40.4-beta.2",
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.4-beta.0",
89
- "@webiny/project-utils": "5.40.4-beta.0",
88
+ "@webiny/cli": "5.40.4-beta.2",
89
+ "@webiny/project-utils": "5.40.4-beta.2",
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": "ac47eaeffd087f0c296abd3eef68c6f8e320cd7d"
118
+ "gitHead": "1be8d8c3ebb404e7582ee9b426d8ec870afb5b99"
119
119
  }