@webiny/app-headless-cms 5.40.4-beta.0 → 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.
@@ -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.1",
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.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.4-beta.0",
89
- "@webiny/project-utils": "5.40.4-beta.0",
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": "ac47eaeffd087f0c296abd3eef68c6f8e320cd7d"
118
+ "gitHead": "5795b78c0b0e8be7b96a1f459025af523c6b2ab4"
119
119
  }