@webiny/app-headless-cms 0.0.0-unstable.1e66d121db → 0.0.0-unstable.40876133bb
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/Label.js +1 -1
- package/admin/components/ContentEntryForm/Label.js.map +1 -1
- package/admin/components/ContentModelEditor/Context.js +1 -1
- package/admin/components/ContentModelEditor/Context.js.map +1 -1
- package/admin/graphql/contentEntries.d.ts +2 -1
- package/admin/graphql/contentEntries.js +5 -1
- package/admin/graphql/contentEntries.js.map +1 -1
- package/admin/menus/NothingToShowElement.js +4 -1
- package/admin/menus/NothingToShowElement.js.map +1 -1
- package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js +1 -1
- package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js.map +1 -1
- package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.d.ts +3 -0
- package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js +146 -0
- package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js.map +1 -0
- package/admin/plugins/fieldRenderers/object/singleObjectAccordion.d.ts +3 -0
- package/admin/plugins/fieldRenderers/object/singleObjectAccordion.js +54 -0
- package/admin/plugins/fieldRenderers/object/singleObjectAccordion.js.map +1 -0
- package/admin/plugins/fieldRenderers/object/singleObjectInline.d.ts +3 -0
- package/admin/plugins/fieldRenderers/object/singleObjectInline.js +64 -0
- package/admin/plugins/fieldRenderers/object/singleObjectInline.js.map +1 -0
- package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js +1 -1
- package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js.map +1 -1
- package/admin/views/contentEntries/ContentEntriesList.js +1 -1
- package/admin/views/contentEntries/ContentEntriesList.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +16 -4
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
- package/admin/views/contentEntries/hooks/useContentEntriesList.js.map +1 -1
- package/admin/views/contentModelGroups/ContentModelGroupsForm.js.map +1 -1
- package/package.json +19 -19
|
@@ -26,7 +26,7 @@ var Label = function Label(_ref) {
|
|
|
26
26
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
27
27
|
className: (0, _classnames.default)("mdc-text-field-helper-text mdc-text-field-helper-text--persistent", style.label)
|
|
28
28
|
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
29
|
-
use: "
|
|
29
|
+
use: "body2"
|
|
30
30
|
}, children));
|
|
31
31
|
};
|
|
32
32
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["style","label","css","marginBottom","Label","children","classNames"],"sources":["Label.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\nimport { Typography } from \"@webiny/ui/Typography\";\n\nconst style = {\n label: css({\n marginBottom: \"5px !important\"\n })\n};\n\nconst Label: React.FC = ({ children }) => (\n <div\n className={classNames(\n \"mdc-text-field-helper-text mdc-text-field-helper-text--persistent\",\n style.label\n )}\n >\n <Typography use={\"
|
|
1
|
+
{"version":3,"names":["style","label","css","marginBottom","Label","children","classNames"],"sources":["Label.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\nimport { Typography } from \"@webiny/ui/Typography\";\n\nconst style = {\n label: css({\n marginBottom: \"5px !important\"\n })\n};\n\nconst Label: React.FC = ({ children }) => (\n <div\n className={classNames(\n \"mdc-text-field-helper-text mdc-text-field-helper-text--persistent\",\n style.label\n )}\n >\n <Typography use={\"body2\"}>{children}</Typography>\n </div>\n);\n\nexport default Label;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA,IAAMA,KAAK,GAAG;EACVC,KAAK,eAAE,IAAAC,YAAA,EAAI;IACPC,YAAY,EAAE;EADP,CAAJ;AADG,CAAd;;AAMA,IAAMC,KAAe,GAAG,SAAlBA,KAAkB;EAAA,IAAGC,QAAH,QAAGA,QAAH;EAAA,oBACpB;IACI,SAAS,EAAE,IAAAC,mBAAA,EACP,mEADO,EAEPN,KAAK,CAACC,KAFC;EADf,gBAMI,6BAAC,sBAAD;IAAY,GAAG,EAAE;EAAjB,GAA2BI,QAA3B,CANJ,CADoB;AAAA,CAAxB;;eAWeD,K"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["contentModelEditorContext","React","createContext","apolloClient","data","isPristine","getContentModel","saveContentModel","error","setData","contentModelEditorReducer","prev","action","type","cleanupModelDataFields","fields","map","field","predefinedValues","enabled","values","label","value","selected","String","cleanupModelData","ContentModelEditorProvider","children","modelId","useReducer","state","dispatch","useRouter","history","useSnackbar","showSnackbar","setPristine","flag","modelData","pick","mutate","mutation","UPDATE_CONTENT_MODEL","variables","refetchQueries","query","LIST_MENU_CONTENT_GROUPS_MODELS","response","updateContentModel","setter","saveModel","GET_CONTENT_MODEL","get","Error","useEffect","catch","push","useMemo","Provider"],"sources":["Context.tsx"],"sourcesContent":["// TODO @ts-refactor verify that types are correct\nimport React, { 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 { CmsEditorContentModel, CmsEditorField, CmsModel } from \"~/types\";\nimport { FetchResult } from \"apollo-link\";\n\nexport interface ContentModelEditorProviderContext {\n apolloClient: ApolloClient<any>;\n data: CmsEditorContentModel;\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}\n\nexport const contentModelEditorContext = React.createContext<ContentModelEditorProviderContext>({\n apolloClient: null as unknown as ApolloClient<any>,\n data: null as unknown as CmsEditorContentModel,\n isPristine: false,\n getContentModel: async () => {\n return {\n data: null\n };\n },\n saveContentModel: async () => {\n return {\n data: null,\n error: null\n };\n },\n setData: async () => {\n return void 0;\n }\n});\n\ntype PickedCmsEditorContentModel = Pick<\n CmsEditorContentModel,\n \"layout\" | \"fields\" | \"name\" | \"settings\" | \"description\" | \"titleFieldId\" | \"group\"\n>;\ninterface State {\n modelId: string | null;\n isPristine: boolean;\n data: CmsModel;\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: CmsEditorField[]): CmsEditorField[] => {\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: PickedCmsEditorContentModel): PickedCmsEditorContentModel => {\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: React.FC<ContentModelEditorProviderProps> = ({\n children,\n apolloClient,\n modelId\n}) => {\n const [state, dispatch] = useReducer<Reducer>(contentModelEditorReducer, {\n modelId: modelId || null,\n isPristine: true,\n data: null as unknown as CmsModel\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: PickedCmsEditorContentModel = pick(data, [\n \"group\",\n \"layout\",\n \"fields\",\n \"name\",\n \"settings\",\n \"description\",\n \"titleFieldId\"\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 /**\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);\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(\n () => ({\n data: state.data,\n modelId,\n apolloClient,\n dispatch,\n isPristine: state.isPristine,\n getContentModel,\n saveContentModel,\n setData\n }),\n [state, apolloClient]\n );\n\n const { Provider } = contentModelEditorContext;\n\n return <Provider value={value}>{children}</Provider>;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["contentModelEditorContext","React","createContext","apolloClient","data","isPristine","getContentModel","saveContentModel","error","setData","contentModelEditorReducer","prev","action","type","cleanupModelDataFields","fields","map","field","predefinedValues","enabled","values","label","value","selected","String","cleanupModelData","ContentModelEditorProvider","children","modelId","useReducer","state","dispatch","useRouter","history","useSnackbar","showSnackbar","setPristine","flag","modelData","pick","mutate","mutation","UPDATE_CONTENT_MODEL","variables","refetchQueries","query","LIST_MENU_CONTENT_GROUPS_MODELS","response","updateContentModel","setter","saveModel","GET_CONTENT_MODEL","get","Error","message","useEffect","catch","push","useMemo","Provider"],"sources":["Context.tsx"],"sourcesContent":["// TODO @ts-refactor verify that types are correct\nimport React, { 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 { CmsEditorContentModel, CmsEditorField, CmsModel } from \"~/types\";\nimport { FetchResult } from \"apollo-link\";\n\nexport interface ContentModelEditorProviderContext {\n apolloClient: ApolloClient<any>;\n data: CmsEditorContentModel;\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}\n\nexport const contentModelEditorContext = React.createContext<ContentModelEditorProviderContext>({\n apolloClient: null as unknown as ApolloClient<any>,\n data: null as unknown as CmsEditorContentModel,\n isPristine: false,\n getContentModel: async () => {\n return {\n data: null\n };\n },\n saveContentModel: async () => {\n return {\n data: null,\n error: null\n };\n },\n setData: async () => {\n return void 0;\n }\n});\n\ntype PickedCmsEditorContentModel = Pick<\n CmsEditorContentModel,\n \"layout\" | \"fields\" | \"name\" | \"settings\" | \"description\" | \"titleFieldId\" | \"group\"\n>;\ninterface State {\n modelId: string | null;\n isPristine: boolean;\n data: CmsModel;\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: CmsEditorField[]): CmsEditorField[] => {\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: PickedCmsEditorContentModel): PickedCmsEditorContentModel => {\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: React.FC<ContentModelEditorProviderProps> = ({\n children,\n apolloClient,\n modelId\n}) => {\n const [state, dispatch] = useReducer<Reducer>(contentModelEditorReducer, {\n modelId: modelId || null,\n isPristine: true,\n data: null as unknown as CmsModel\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: PickedCmsEditorContentModel = pick(data, [\n \"group\",\n \"layout\",\n \"fields\",\n \"name\",\n \"settings\",\n \"description\",\n \"titleFieldId\"\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 /**\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(\n () => ({\n data: state.data,\n modelId,\n apolloClient,\n dispatch,\n isPristine: state.isPristine,\n getContentModel,\n saveContentModel,\n setData\n }),\n [state, apolloClient]\n );\n\n const { Provider } = contentModelEditorContext;\n\n return <Provider value={value}>{children}</Provider>;\n};\n"],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@ export interface CmsEntryGetQueryResponse {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
export interface CmsEntryGetQueryVariables {
|
|
13
|
-
revision
|
|
13
|
+
revision?: string;
|
|
14
|
+
entryId?: string;
|
|
14
15
|
}
|
|
15
16
|
export declare const createReadQuery: (model: CmsEditorContentModel) => import("graphql").DocumentNode;
|
|
16
17
|
/**
|
|
@@ -32,7 +32,11 @@ var CONTENT_META_FIELDS =
|
|
|
32
32
|
|
|
33
33
|
var createReadQuery = function createReadQuery(model) {
|
|
34
34
|
var ucFirstModelId = (0, _upperFirst.default)(model.modelId);
|
|
35
|
-
|
|
35
|
+
/**
|
|
36
|
+
* This query now accepts both revision or entryId as we can load exact revision or latest (if entryId was sent).
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
return (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query CmsEntriesGet", "($revision: ID, $entryId: ID) {\n content: get", "(revision: $revision, entryId: $entryId) {\n data {\n id\n createdBy {\n id\n }\n ", "\n savedOn\n meta {\n ", "\n }\n }\n error ", "\n }\n }\n "])), ucFirstModelId, ucFirstModelId, (0, _createFieldsList.createFieldsList)(model.fields), CONTENT_META_FIELDS, ERROR_FIELD);
|
|
36
40
|
};
|
|
37
41
|
/**
|
|
38
42
|
* ############################################
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ERROR_FIELD","CONTENT_META_FIELDS","createReadQuery","model","ucFirstModelId","upperFirst","modelId","gql","createFieldsList","fields","createRevisionsQuery","getModelTitleFieldId","titleFieldId","createListQuery","ucFirstPluralizedModelId","pluralize","createDeleteMutation","createCreateMutation","createCreateFromMutation","createUpdateMutation","createPublishMutation","createUnpublishMutation"],"sources":["contentEntries.ts"],"sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport gql from \"graphql-tag\";\nimport pluralize from \"pluralize\";\nimport {\n CmsContentEntryRevision,\n CmsEditorContentEntry,\n CmsEditorContentModel,\n CmsErrorResponse,\n CmsMetaResponse\n} from \"~/types\";\nimport { createFieldsList } from \"./createFieldsList\";\n\nconst ERROR_FIELD = /* GraphQL */ `\n {\n message\n code\n data\n }\n`;\n\nconst CONTENT_META_FIELDS = /* GraphQL */ `\n title\n publishedOn\n version\n locked\n status\n`;\n/**\n * ############################################\n * Get CMS Entry Query\n */\nexport interface CmsEntryGetQueryResponse {\n content: {\n data: CmsEditorContentEntry;\n error: CmsErrorResponse | null;\n };\n}\n\nexport interface CmsEntryGetQueryVariables {\n revision: string;\n}\n\nexport const createReadQuery = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesGet${ucFirstModelId}($revision: ID!) {\n content: get${ucFirstModelId}(revision: $revision) {\n data {\n id\n createdBy {\n id\n }\n ${createFieldsList(model.fields)}\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * List CMS Entry Revisions Query\n */\nexport interface CmsEntriesListRevisionsQueryResponse {\n revisions: {\n data: CmsContentEntryRevision[];\n error: CmsErrorResponse | null;\n meta: CmsMetaResponse;\n };\n}\nexport interface CmsEntriesListRevisionsQueryVariables {\n id: string;\n}\nexport const createRevisionsQuery = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesGet${ucFirstModelId}Revisions($id: ID!) {\n revisions: get${ucFirstModelId}Revisions(id: $id) {\n data {\n id\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n\nconst getModelTitleFieldId = (model: CmsEditorContentModel): string => {\n if (!model.titleFieldId || model.titleFieldId === \"id\") {\n return \"\";\n }\n return model.titleFieldId;\n};\n\n/**\n * ############################################\n * List CMS Entries Query\n */\nexport interface CmsEntriesListQueryResponse {\n content: {\n data: CmsEditorContentEntry[];\n error: CmsErrorResponse | null;\n meta: CmsMetaResponse;\n };\n}\nexport interface CmsEntriesListQueryVariables {\n // TODO @ts-refactor better list types\n where?: {\n [key: string]: any;\n };\n sort?: string[];\n limit?: number;\n after?: string;\n}\nexport const createListQuery = (model: CmsEditorContentModel) => {\n const ucFirstPluralizedModelId = upperFirst(pluralize(model.modelId));\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesList${ucFirstPluralizedModelId}($where: ${ucFirstModelId}ListWhereInput, $sort: [${ucFirstModelId}ListSorter], $limit: Int, $after: String) {\n content: list${ucFirstPluralizedModelId}(\n where: $where\n sort: $sort\n limit: $limit\n after: $after\n ) {\n data {\n id\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n ${getModelTitleFieldId(model)}\n }\n meta {\n cursor\n hasMoreItems\n totalCount\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Delete Mutation\n */\nexport interface CmsEntryDeleteMutationResponse {\n content: {\n data: CmsEditorContentEntry | null;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryDeleteMutationVariables {\n revision: string;\n}\nexport const createDeleteMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsEntriesDelete${ucFirstModelId}($revision: ID!) {\n content: delete${ucFirstModelId}(revision: $revision) {\n data\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Create Mutation\n */\nexport interface CmsEntryCreateMutationResponse {\n content: {\n data: CmsEditorContentEntry | null;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryCreateMutationVariables {\n /**\n * We have any here because we do not know which fields does entry have\n */\n data: Record<string, any>;\n}\nexport const createCreateMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsEntriesCreate${ucFirstModelId}($data: ${ucFirstModelId}Input!) {\n content: create${ucFirstModelId}(data: $data) {\n data {\n id\n savedOn\n ${createFieldsList(model.fields)}\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Create From Mutation\n */\nexport interface CmsEntryCreateFromMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryCreateFromMutationVariables {\n revision: string;\n /**\n * We have any here because we do not know which fields does entry have\n */\n data?: Record<string, any>;\n}\nexport const createCreateFromMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsCreate${ucFirstModelId}From($revision: ID!, $data: ${ucFirstModelId}Input) {\n content: create${ucFirstModelId}From(revision: $revision, data: $data) {\n data {\n id\n savedOn\n ${createFieldsList(model.fields)}\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Update Mutation\n */\nexport interface CmsEntryUpdateMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryUpdateMutationVariables {\n revision: string;\n /**\n * We have any here because we do not know which fields does entry have\n */\n data: Record<string, any>;\n}\nexport const createUpdateMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsUpdate${ucFirstModelId}($revision: ID!, $data: ${ucFirstModelId}Input!) {\n content: update${ucFirstModelId}(revision: $revision, data: $data) {\n data {\n id\n ${createFieldsList(model.fields)}\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Publish Mutation\n */\nexport interface CmsEntryPublishMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryPublishMutationVariables {\n revision: string;\n}\nexport const createPublishMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsPublish${ucFirstModelId}($revision: ID!) {\n content: publish${ucFirstModelId}(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Unpublish Mutation\n */\nexport interface CmsEntryUnpublishMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryUnpublishMutationVariables {\n revision: string;\n}\nexport const createUnpublishMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsUnpublish${ucFirstModelId}($revision: ID!) {\n content: unpublish${ucFirstModelId}(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["ERROR_FIELD","CONTENT_META_FIELDS","createReadQuery","model","ucFirstModelId","upperFirst","modelId","gql","createFieldsList","fields","createRevisionsQuery","getModelTitleFieldId","titleFieldId","createListQuery","ucFirstPluralizedModelId","pluralize","createDeleteMutation","createCreateMutation","createCreateFromMutation","createUpdateMutation","createPublishMutation","createUnpublishMutation"],"sources":["contentEntries.ts"],"sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport gql from \"graphql-tag\";\nimport pluralize from \"pluralize\";\nimport {\n CmsContentEntryRevision,\n CmsEditorContentEntry,\n CmsEditorContentModel,\n CmsErrorResponse,\n CmsMetaResponse\n} from \"~/types\";\nimport { createFieldsList } from \"./createFieldsList\";\n\nconst ERROR_FIELD = /* GraphQL */ `\n {\n message\n code\n data\n }\n`;\n\nconst CONTENT_META_FIELDS = /* GraphQL */ `\n title\n publishedOn\n version\n locked\n status\n`;\n/**\n * ############################################\n * Get CMS Entry Query\n */\nexport interface CmsEntryGetQueryResponse {\n content: {\n data: CmsEditorContentEntry;\n error: CmsErrorResponse | null;\n };\n}\n\nexport interface CmsEntryGetQueryVariables {\n revision?: string;\n entryId?: string;\n}\n\nexport const createReadQuery = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n /**\n * This query now accepts both revision or entryId as we can load exact revision or latest (if entryId was sent).\n */\n return gql`\n query CmsEntriesGet${ucFirstModelId}($revision: ID, $entryId: ID) {\n content: get${ucFirstModelId}(revision: $revision, entryId: $entryId) {\n data {\n id\n createdBy {\n id\n }\n ${createFieldsList(model.fields)}\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * List CMS Entry Revisions Query\n */\nexport interface CmsEntriesListRevisionsQueryResponse {\n revisions: {\n data: CmsContentEntryRevision[];\n error: CmsErrorResponse | null;\n meta: CmsMetaResponse;\n };\n}\nexport interface CmsEntriesListRevisionsQueryVariables {\n id: string;\n}\nexport const createRevisionsQuery = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesGet${ucFirstModelId}Revisions($id: ID!) {\n revisions: get${ucFirstModelId}Revisions(id: $id) {\n data {\n id\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n\nconst getModelTitleFieldId = (model: CmsEditorContentModel): string => {\n if (!model.titleFieldId || model.titleFieldId === \"id\") {\n return \"\";\n }\n return model.titleFieldId;\n};\n\n/**\n * ############################################\n * List CMS Entries Query\n */\nexport interface CmsEntriesListQueryResponse {\n content: {\n data: CmsEditorContentEntry[];\n error: CmsErrorResponse | null;\n meta: CmsMetaResponse;\n };\n}\nexport interface CmsEntriesListQueryVariables {\n // TODO @ts-refactor better list types\n where?: {\n [key: string]: any;\n };\n sort?: string[];\n limit?: number;\n after?: string;\n}\nexport const createListQuery = (model: CmsEditorContentModel) => {\n const ucFirstPluralizedModelId = upperFirst(pluralize(model.modelId));\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n query CmsEntriesList${ucFirstPluralizedModelId}($where: ${ucFirstModelId}ListWhereInput, $sort: [${ucFirstModelId}ListSorter], $limit: Int, $after: String) {\n content: list${ucFirstPluralizedModelId}(\n where: $where\n sort: $sort\n limit: $limit\n after: $after\n ) {\n data {\n id\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n ${getModelTitleFieldId(model)}\n }\n meta {\n cursor\n hasMoreItems\n totalCount\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Delete Mutation\n */\nexport interface CmsEntryDeleteMutationResponse {\n content: {\n data: CmsEditorContentEntry | null;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryDeleteMutationVariables {\n revision: string;\n}\nexport const createDeleteMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsEntriesDelete${ucFirstModelId}($revision: ID!) {\n content: delete${ucFirstModelId}(revision: $revision) {\n data\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Create Mutation\n */\nexport interface CmsEntryCreateMutationResponse {\n content: {\n data: CmsEditorContentEntry | null;\n error: CmsErrorResponse | null;\n };\n}\nexport interface CmsEntryCreateMutationVariables {\n /**\n * We have any here because we do not know which fields does entry have\n */\n data: Record<string, any>;\n}\nexport const createCreateMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsEntriesCreate${ucFirstModelId}($data: ${ucFirstModelId}Input!) {\n content: create${ucFirstModelId}(data: $data) {\n data {\n id\n savedOn\n ${createFieldsList(model.fields)}\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Create From Mutation\n */\nexport interface CmsEntryCreateFromMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryCreateFromMutationVariables {\n revision: string;\n /**\n * We have any here because we do not know which fields does entry have\n */\n data?: Record<string, any>;\n}\nexport const createCreateFromMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsCreate${ucFirstModelId}From($revision: ID!, $data: ${ucFirstModelId}Input) {\n content: create${ucFirstModelId}From(revision: $revision, data: $data) {\n data {\n id\n savedOn\n ${createFieldsList(model.fields)}\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Update Mutation\n */\nexport interface CmsEntryUpdateMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryUpdateMutationVariables {\n revision: string;\n /**\n * We have any here because we do not know which fields does entry have\n */\n data: Record<string, any>;\n}\nexport const createUpdateMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsUpdate${ucFirstModelId}($revision: ID!, $data: ${ucFirstModelId}Input!) {\n content: update${ucFirstModelId}(revision: $revision, data: $data) {\n data {\n id\n ${createFieldsList(model.fields)}\n savedOn\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }\n `;\n};\n/**\n * ############################################\n * Publish Mutation\n */\nexport interface CmsEntryPublishMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryPublishMutationVariables {\n revision: string;\n}\nexport const createPublishMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsPublish${ucFirstModelId}($revision: ID!) {\n content: publish${ucFirstModelId}(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n/**\n * ############################################\n * Unpublish Mutation\n */\nexport interface CmsEntryUnpublishMutationResponse {\n content: {\n data?: CmsEditorContentEntry;\n error?: CmsErrorResponse;\n };\n}\nexport interface CmsEntryUnpublishMutationVariables {\n revision: string;\n}\nexport const createUnpublishMutation = (model: CmsEditorContentModel) => {\n const ucFirstModelId = upperFirst(model.modelId);\n\n return gql`\n mutation CmsUnpublish${ucFirstModelId}($revision: ID!) {\n content: unpublish${ucFirstModelId}(revision: $revision) {\n data {\n id\n meta {\n ${CONTENT_META_FIELDS}\n }\n }\n error ${ERROR_FIELD}\n }\n }`;\n};\n"],"mappings":"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"}
|
|
@@ -13,6 +13,8 @@ var _emotion = require("emotion");
|
|
|
13
13
|
|
|
14
14
|
var _List = require("@webiny/ui/List");
|
|
15
15
|
|
|
16
|
+
var _Typography = require("@webiny/ui/Typography");
|
|
17
|
+
|
|
16
18
|
// TODO: implement this without relying on the `ui` package
|
|
17
19
|
var linkStyle = /*#__PURE__*/(0, _emotion.css)({
|
|
18
20
|
color: "var(--mdc-theme-text-primary-on-background)",
|
|
@@ -49,7 +51,8 @@ var NothingToShow = function NothingToShow() {
|
|
|
49
51
|
className: submenuItems,
|
|
50
52
|
ripple: false,
|
|
51
53
|
disabled: true
|
|
52
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
55
|
+
use: "body2",
|
|
53
56
|
className: linkStyle
|
|
54
57
|
}, "Nothing to show.")));
|
|
55
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["linkStyle","css","color","textDecoration","display","alignItems","width","height","outline","paddingLeft","submenuItems","margin","submenuList","padding","NothingToShow","opacity"],"sources":["NothingToShowElement.tsx"],"sourcesContent":["// TODO: implement this without relying on the `ui` package\nimport React from \"react\";\nimport { css } from \"emotion\";\nimport { List, ListItem } from \"@webiny/ui/List\";\n\nconst linkStyle = css({\n color: \"var(--mdc-theme-text-primary-on-background)\",\n textDecoration: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n outline: \"none\",\n paddingLeft: 72,\n \"&:hover\": {\n textDecoration: \"none\"\n }\n});\n\nconst submenuItems = css({\n \".mdc-drawer &.mdc-list-item\": {\n margin: 0,\n paddingLeft: 0\n }\n});\n\nconst submenuList = css({\n \"&.mdc-list\": {\n padding: 0\n }\n});\n\nexport const NothingToShow: React.FC = () => {\n return (\n <List className={submenuList} style={{ opacity: 0.4 }}>\n <ListItem className={submenuItems} ripple={false} disabled>\n <
|
|
1
|
+
{"version":3,"names":["linkStyle","css","color","textDecoration","display","alignItems","width","height","outline","paddingLeft","submenuItems","margin","submenuList","padding","NothingToShow","opacity"],"sources":["NothingToShowElement.tsx"],"sourcesContent":["// TODO: implement this without relying on the `ui` package\nimport React from \"react\";\nimport { css } from \"emotion\";\nimport { List, ListItem } from \"@webiny/ui/List\";\nimport { Typography } from \"@webiny/ui/Typography\";\n\nconst linkStyle = css({\n color: \"var(--mdc-theme-text-primary-on-background)\",\n textDecoration: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n outline: \"none\",\n paddingLeft: 72,\n \"&:hover\": {\n textDecoration: \"none\"\n }\n});\n\nconst submenuItems = css({\n \".mdc-drawer &.mdc-list-item\": {\n margin: 0,\n paddingLeft: 0\n }\n});\n\nconst submenuList = css({\n \"&.mdc-list\": {\n padding: 0\n }\n});\n\nexport const NothingToShow: React.FC = () => {\n return (\n <List className={submenuList} style={{ opacity: 0.4 }}>\n <ListItem className={submenuItems} ripple={false} disabled>\n <Typography use={\"body2\"} className={linkStyle}>\n Nothing to show.\n </Typography>\n </ListItem>\n </List>\n );\n};\n"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AACA;;AAJA;AAMA,IAAMA,SAAS,gBAAG,IAAAC,YAAA,EAAI;EAClBC,KAAK,EAAE,6CADW;EAElBC,cAAc,EAAE,MAFE;EAGlBC,OAAO,EAAE,MAHS;EAIlBC,UAAU,EAAE,QAJM;EAKlBC,KAAK,EAAE,MALW;EAMlBC,MAAM,EAAE,MANU;EAOlBC,OAAO,EAAE,MAPS;EAQlBC,WAAW,EAAE,EARK;EASlB,WAAW;IACPN,cAAc,EAAE;EADT;AATO,CAAJ,qBAAlB;AAcA,IAAMO,YAAY,gBAAG,IAAAT,YAAA,EAAI;EACrB,+BAA+B;IAC3BU,MAAM,EAAE,CADmB;IAE3BF,WAAW,EAAE;EAFc;AADV,CAAJ,wBAArB;AAOA,IAAMG,WAAW,gBAAG,IAAAX,YAAA,EAAI;EACpB,cAAc;IACVY,OAAO,EAAE;EADC;AADM,CAAJ,uBAApB;;AAMO,IAAMC,aAAuB,GAAG,SAA1BA,aAA0B,GAAM;EACzC,oBACI,6BAAC,UAAD;IAAM,SAAS,EAAEF,WAAjB;IAA8B,KAAK,EAAE;MAAEG,OAAO,EAAE;IAAX;EAArC,gBACI,6BAAC,cAAD;IAAU,SAAS,EAAEL,YAArB;IAAmC,MAAM,EAAE,KAA3C;IAAkD,QAAQ;EAA1D,gBACI,6BAAC,sBAAD;IAAY,GAAG,EAAE,OAAjB;IAA0B,SAAS,EAAEV;EAArC,sBADJ,CADJ,CADJ;AASH,CAVM"}
|
|
@@ -80,7 +80,7 @@ var FormSettings = function FormSettings(_ref) {
|
|
|
80
80
|
}, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
81
81
|
icon: pl.icon
|
|
82
82
|
})), /*#__PURE__*/_react.default.createElement(_FormSettingsStyled.TitleContent, null, /*#__PURE__*/_react.default.createElement(_FormSettingsStyled.ListItemTitle, null, pl.title), /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
83
|
-
use: "
|
|
83
|
+
use: "body2"
|
|
84
84
|
}, pl.description)));
|
|
85
85
|
}))), /*#__PURE__*/_react.default.createElement(_SplitView.RightPanel, {
|
|
86
86
|
span: 7
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","namespace","FormSettings","onExited","cmsEditorFormSettingsPlugins","plugins","byType","useContentModelEditor","data","setData","useSnackbar","showSnackbar","useState","activePlugin","setActivePlugin","Title","listStyle","map","pl","name","listItem","icon","title","description","Bind","submit","form","formData","renderHeaderActions","render","ev"],"sources":["FormSettings.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { OverlayLayout } from \"@webiny/app-admin/components/OverlayLayout\";\nimport { SplitView, LeftPanel, RightPanel } from \"@webiny/app-admin/components/SplitView\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Form } from \"@webiny/form\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\nimport { List, ListItem, ListItemGraphic } from \"@webiny/ui/List\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport * as SF from \"@webiny/app-admin/components/SimpleForm\";\nimport { CmsEditorFormSettingsPlugin } from \"~/types\";\nimport { Title, listItem, ListItemTitle, listStyle, TitleContent } from \"./FormSettingsStyled\";\nimport { useContentModelEditor } from \"~/admin/components/ContentModelEditor/useContentModelEditor\";\n\nconst t = i18n.namespace(\"FormsApp.Editor.FormSettings\");\n\ninterface FormSettingsProps {\n onExited: () => void;\n}\n\nconst FormSettings: React.FC<FormSettingsProps> = ({ onExited }) => {\n const cmsEditorFormSettingsPlugins = plugins.byType<CmsEditorFormSettingsPlugin>(\n \"cms-editor-form-settings\"\n );\n const { data, setData } = useContentModelEditor();\n const { showSnackbar } = useSnackbar();\n\n const [activePlugin, setActivePlugin] = useState(cmsEditorFormSettingsPlugins[0]);\n\n return (\n <OverlayLayout barMiddle={Title} onExited={onExited}>\n <SplitView>\n <LeftPanel span={5}>\n <List twoLine className={listStyle}>\n {cmsEditorFormSettingsPlugins.map(pl => (\n <ListItem\n key={pl.name}\n className={listItem}\n onClick={() => setActivePlugin(pl)}\n >\n <ListItemGraphic>\n <Icon icon={pl.icon} />\n </ListItemGraphic>\n <TitleContent>\n <ListItemTitle>{pl.title}</ListItemTitle>\n <Typography use={\"
|
|
1
|
+
{"version":3,"names":["t","i18n","namespace","FormSettings","onExited","cmsEditorFormSettingsPlugins","plugins","byType","useContentModelEditor","data","setData","useSnackbar","showSnackbar","useState","activePlugin","setActivePlugin","Title","listStyle","map","pl","name","listItem","icon","title","description","Bind","submit","form","formData","renderHeaderActions","render","ev"],"sources":["FormSettings.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { OverlayLayout } from \"@webiny/app-admin/components/OverlayLayout\";\nimport { SplitView, LeftPanel, RightPanel } from \"@webiny/app-admin/components/SplitView\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Form } from \"@webiny/form\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\nimport { List, ListItem, ListItemGraphic } from \"@webiny/ui/List\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport * as SF from \"@webiny/app-admin/components/SimpleForm\";\nimport { CmsEditorFormSettingsPlugin } from \"~/types\";\nimport { Title, listItem, ListItemTitle, listStyle, TitleContent } from \"./FormSettingsStyled\";\nimport { useContentModelEditor } from \"~/admin/components/ContentModelEditor/useContentModelEditor\";\n\nconst t = i18n.namespace(\"FormsApp.Editor.FormSettings\");\n\ninterface FormSettingsProps {\n onExited: () => void;\n}\n\nconst FormSettings: React.FC<FormSettingsProps> = ({ onExited }) => {\n const cmsEditorFormSettingsPlugins = plugins.byType<CmsEditorFormSettingsPlugin>(\n \"cms-editor-form-settings\"\n );\n const { data, setData } = useContentModelEditor();\n const { showSnackbar } = useSnackbar();\n\n const [activePlugin, setActivePlugin] = useState(cmsEditorFormSettingsPlugins[0]);\n\n return (\n <OverlayLayout barMiddle={Title} onExited={onExited}>\n <SplitView>\n <LeftPanel span={5}>\n <List twoLine className={listStyle}>\n {cmsEditorFormSettingsPlugins.map(pl => (\n <ListItem\n key={pl.name}\n className={listItem}\n onClick={() => setActivePlugin(pl)}\n >\n <ListItemGraphic>\n <Icon icon={pl.icon} />\n </ListItemGraphic>\n <TitleContent>\n <ListItemTitle>{pl.title}</ListItemTitle>\n <Typography use={\"body2\"}>{pl.description}</Typography>\n </TitleContent>\n </ListItem>\n ))}\n </List>\n </LeftPanel>\n <RightPanel span={7}>\n <Form\n data={data}\n onSubmit={data => {\n setData(() => data);\n onExited();\n showSnackbar(t`Content model settings updated successfully.`);\n }}\n >\n {({ Bind, submit, form, data: formData }) => (\n <SF.SimpleForm>\n <SF.SimpleFormHeader title={activePlugin.title}>\n {typeof activePlugin.renderHeaderActions === \"function\" &&\n activePlugin.renderHeaderActions({\n /**\n * TODO @ts-refactor\n * Figure out type for Bind\n */\n Bind: Bind as any,\n form,\n formData\n })}\n </SF.SimpleFormHeader>\n <SF.SimpleFormContent>\n {activePlugin\n ? activePlugin.render({\n /**\n * TODO @ts-refactor\n * Figure out type for Bind\n */\n Bind: Bind as any,\n form,\n formData\n })\n : null}\n </SF.SimpleFormContent>\n <SF.SimpleFormFooter>\n <ButtonPrimary\n onClick={ev => {\n submit(ev);\n }}\n >{t`Save settings`}</ButtonPrimary>\n </SF.SimpleFormFooter>\n </SF.SimpleForm>\n )}\n </Form>\n </RightPanel>\n </SplitView>\n </OverlayLayout>\n );\n};\n\nexport default FormSettings;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
|
|
18
|
+
var _objectSpread4 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _i18n = require("@webiny/app/i18n");
|
|
23
|
+
|
|
24
|
+
var _Button = require("@webiny/ui/Button");
|
|
25
|
+
|
|
26
|
+
var _Grid = require("@webiny/ui/Grid");
|
|
27
|
+
|
|
28
|
+
var _Accordion = require("@webiny/ui/Accordion");
|
|
29
|
+
|
|
30
|
+
var _DynamicSection = _interopRequireDefault(require("../DynamicSection"));
|
|
31
|
+
|
|
32
|
+
var _Fields = require("../../../components/ContentEntryForm/Fields");
|
|
33
|
+
|
|
34
|
+
var _close = require("../../../icons/close.svg");
|
|
35
|
+
|
|
36
|
+
var _arrow_drop_up = require("./arrow_drop_up.svg");
|
|
37
|
+
|
|
38
|
+
var _arrow_drop_down = require("./arrow_drop_down.svg");
|
|
39
|
+
|
|
40
|
+
var _Accordion2 = _interopRequireDefault(require("../Accordion"));
|
|
41
|
+
|
|
42
|
+
var _StyledComponents = require("./StyledComponents");
|
|
43
|
+
|
|
44
|
+
var _utils = require("@webiny/utils");
|
|
45
|
+
|
|
46
|
+
var _templateObject, _templateObject2;
|
|
47
|
+
|
|
48
|
+
var t = _i18n.i18n.ns("app-headless-cms/admin/fields/text");
|
|
49
|
+
|
|
50
|
+
var Actions = function Actions(_ref) {
|
|
51
|
+
var setHighlightIndex = _ref.setHighlightIndex,
|
|
52
|
+
bind = _ref.bind,
|
|
53
|
+
index = _ref.index;
|
|
54
|
+
var _bind$field = bind.field,
|
|
55
|
+
moveValueDown = _bind$field.moveValueDown,
|
|
56
|
+
moveValueUp = _bind$field.moveValueUp;
|
|
57
|
+
var onDown = (0, _react.useCallback)(function (e) {
|
|
58
|
+
e.stopPropagation();
|
|
59
|
+
moveValueDown(index);
|
|
60
|
+
setHighlightIndex(function (map) {
|
|
61
|
+
return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, map), {}, (0, _defineProperty2.default)({}, index + 1, (0, _utils.generateAlphaNumericLowerCaseId)(12)));
|
|
62
|
+
});
|
|
63
|
+
}, [moveValueDown, index]);
|
|
64
|
+
var onUp = (0, _react.useCallback)(function (e) {
|
|
65
|
+
e.stopPropagation();
|
|
66
|
+
moveValueUp(index);
|
|
67
|
+
setHighlightIndex(function (map) {
|
|
68
|
+
return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, map), {}, (0, _defineProperty2.default)({}, index - 1, (0, _utils.generateAlphaNumericLowerCaseId)(12)));
|
|
69
|
+
});
|
|
70
|
+
}, [moveValueUp, index]);
|
|
71
|
+
return index > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
72
|
+
icon: /*#__PURE__*/_react.default.createElement(_arrow_drop_down.ReactComponent, null),
|
|
73
|
+
onClick: onDown
|
|
74
|
+
}), /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
75
|
+
icon: /*#__PURE__*/_react.default.createElement(_arrow_drop_up.ReactComponent, null),
|
|
76
|
+
onClick: onUp
|
|
77
|
+
}), /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
78
|
+
icon: /*#__PURE__*/_react.default.createElement(_close.ReactComponent, null),
|
|
79
|
+
onClick: function onClick() {
|
|
80
|
+
return bind.field.removeValue(index);
|
|
81
|
+
}
|
|
82
|
+
})) : null;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
var ObjectsRenderer = function ObjectsRenderer(props) {
|
|
86
|
+
var _useState = (0, _react.useState)({}),
|
|
87
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
88
|
+
highlightMap = _useState2[0],
|
|
89
|
+
setHighlightIndex = _useState2[1];
|
|
90
|
+
|
|
91
|
+
var field = props.field,
|
|
92
|
+
contentModel = props.contentModel;
|
|
93
|
+
return /*#__PURE__*/_react.default.createElement(_Accordion.Accordion, null, /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
|
|
94
|
+
title: field.label,
|
|
95
|
+
description: field.helpText
|
|
96
|
+
}, /*#__PURE__*/_react.default.createElement(_DynamicSection.default, Object.assign({}, props, {
|
|
97
|
+
emptyValue: {},
|
|
98
|
+
showLabel: false,
|
|
99
|
+
gridClassName: _StyledComponents.dynamicSectionGridStyle
|
|
100
|
+
}), function (_ref2) {
|
|
101
|
+
var Bind = _ref2.Bind,
|
|
102
|
+
bind = _ref2.bind,
|
|
103
|
+
index = _ref2.index;
|
|
104
|
+
return /*#__PURE__*/_react.default.createElement(_StyledComponents.ObjectItem, null, highlightMap[index] ? /*#__PURE__*/_react.default.createElement(_StyledComponents.ItemHighLight, {
|
|
105
|
+
key: highlightMap[index]
|
|
106
|
+
}) : null, /*#__PURE__*/_react.default.createElement(_Accordion2.default, {
|
|
107
|
+
title: "".concat(props.field.label, " #").concat(index + 1),
|
|
108
|
+
action: /*#__PURE__*/_react.default.createElement(Actions, {
|
|
109
|
+
setHighlightIndex: setHighlightIndex,
|
|
110
|
+
index: index,
|
|
111
|
+
bind: bind
|
|
112
|
+
}) // Open first Accordion by default
|
|
113
|
+
,
|
|
114
|
+
defaultValue: index === 0
|
|
115
|
+
}, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
116
|
+
span: 12,
|
|
117
|
+
className: _StyledComponents.fieldsWrapperStyle
|
|
118
|
+
}, /*#__PURE__*/_react.default.createElement(_Fields.Fields, Object.assign({
|
|
119
|
+
Bind: Bind
|
|
120
|
+
}, bind.index, {
|
|
121
|
+
contentModel: contentModel,
|
|
122
|
+
fields: (field.settings || {}).fields || [],
|
|
123
|
+
layout: (field.settings || {}).layout || [],
|
|
124
|
+
gridClassName: _StyledComponents.fieldsGridStyle
|
|
125
|
+
})))));
|
|
126
|
+
})));
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
var plugin = {
|
|
130
|
+
type: "cms-editor-field-renderer",
|
|
131
|
+
name: "cms-editor-field-renderer-objects-accordion",
|
|
132
|
+
renderer: {
|
|
133
|
+
rendererName: "objects-accordion",
|
|
134
|
+
name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Accordion"]))),
|
|
135
|
+
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders fields within an accordion."]))),
|
|
136
|
+
canUse: function canUse(_ref3) {
|
|
137
|
+
var field = _ref3.field;
|
|
138
|
+
return field.type === "object" && Boolean(field.multipleValues);
|
|
139
|
+
},
|
|
140
|
+
render: function render(props) {
|
|
141
|
+
return /*#__PURE__*/_react.default.createElement(ObjectsRenderer, props);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
var _default = plugin;
|
|
146
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","Actions","setHighlightIndex","bind","index","field","moveValueDown","moveValueUp","onDown","useCallback","e","stopPropagation","map","generateAlphaNumericLowerCaseId","onUp","removeValue","ObjectsRenderer","props","useState","highlightMap","contentModel","label","helpText","dynamicSectionGridStyle","Bind","fieldsWrapperStyle","settings","fields","layout","fieldsGridStyle","plugin","type","name","renderer","rendererName","description","canUse","Boolean","multipleValues","render"],"sources":["multipleObjectsAccordion.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction, useState, useCallback } from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Cell } from \"@webiny/ui/Grid\";\nimport { Accordion as RootAccordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport {\n BindComponentRenderProp,\n CmsEditorFieldRendererPlugin,\n CmsEditorFieldRendererProps\n} from \"~/types\";\nimport DynamicSection from \"../DynamicSection\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport { ReactComponent as ArrowUp } from \"./arrow_drop_up.svg\";\nimport { ReactComponent as ArrowDown } from \"./arrow_drop_down.svg\";\nimport Accordion from \"~/admin/plugins/fieldRenderers/Accordion\";\nimport {\n fieldsWrapperStyle,\n dynamicSectionGridStyle,\n fieldsGridStyle,\n ItemHighLight,\n ObjectItem\n} from \"./StyledComponents\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\ninterface ActionsProps {\n setHighlightIndex: Dispatch<SetStateAction<{ [key: number]: string }>>;\n index: number;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n}\n\nconst Actions: React.FC<ActionsProps> = ({ setHighlightIndex, bind, index }) => {\n const { moveValueDown, moveValueUp } = bind.field;\n\n const onDown = useCallback(\n e => {\n e.stopPropagation();\n moveValueDown(index);\n setHighlightIndex(map => ({\n ...map,\n [index + 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueDown, index]\n );\n\n const onUp = useCallback(\n e => {\n e.stopPropagation();\n moveValueUp(index);\n setHighlightIndex(map => ({\n ...map,\n [index - 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueUp, index]\n );\n\n return index > 0 ? (\n <>\n <IconButton icon={<ArrowDown />} onClick={onDown} />\n <IconButton icon={<ArrowUp />} onClick={onUp} />\n <IconButton icon={<DeleteIcon />} onClick={() => bind.field.removeValue(index)} />\n </>\n ) : null;\n};\n\nconst ObjectsRenderer: React.FC<CmsEditorFieldRendererProps> = props => {\n const [highlightMap, setHighlightIndex] = useState<{ [key: number]: string }>({});\n const { field, contentModel } = props;\n\n return (\n <RootAccordion>\n <AccordionItem title={field.label} description={field.helpText}>\n <DynamicSection\n {...props}\n emptyValue={{}}\n showLabel={false}\n gridClassName={dynamicSectionGridStyle}\n >\n {({ Bind, bind, index }) => (\n <ObjectItem>\n {highlightMap[index] ? (\n <ItemHighLight key={highlightMap[index]} />\n ) : null}\n <Accordion\n title={`${props.field.label} #${index + 1}`}\n action={\n <Actions\n setHighlightIndex={setHighlightIndex}\n index={index}\n bind={bind}\n />\n }\n // Open first Accordion by default\n defaultValue={index === 0}\n >\n <Cell span={12} className={fieldsWrapperStyle}>\n <Fields\n Bind={Bind}\n {...bind.index}\n contentModel={contentModel}\n fields={(field.settings || {}).fields || []}\n layout={(field.settings || {}).layout || []}\n gridClassName={fieldsGridStyle}\n />\n </Cell>\n </Accordion>\n </ObjectItem>\n )}\n </DynamicSection>\n </AccordionItem>\n </RootAccordion>\n );\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-objects-accordion\",\n renderer: {\n rendererName: \"objects-accordion\",\n name: t`Accordion`,\n description: t`Renders fields within an accordion.`,\n canUse({ field }) {\n return field.type === \"object\" && Boolean(field.multipleValues);\n },\n render(props) {\n return <ObjectsRenderer {...props} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _i18n = require("@webiny/app/i18n");
|
|
15
|
+
|
|
16
|
+
var _Fields = require("../../../components/ContentEntryForm/Fields");
|
|
17
|
+
|
|
18
|
+
var _Accordion = require("@webiny/ui/Accordion");
|
|
19
|
+
|
|
20
|
+
var _templateObject, _templateObject2;
|
|
21
|
+
|
|
22
|
+
var t = _i18n.i18n.ns("app-headless-cms/admin/fields/text");
|
|
23
|
+
|
|
24
|
+
var plugin = {
|
|
25
|
+
type: "cms-editor-field-renderer",
|
|
26
|
+
name: "cms-editor-field-renderer-object-accordion",
|
|
27
|
+
renderer: {
|
|
28
|
+
rendererName: "object-accordion",
|
|
29
|
+
name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Accordion"]))),
|
|
30
|
+
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders fields within an accordion."]))),
|
|
31
|
+
canUse: function canUse(_ref) {
|
|
32
|
+
var field = _ref.field;
|
|
33
|
+
return field.type === "object" && !field.multipleValues;
|
|
34
|
+
},
|
|
35
|
+
render: function render(_ref2) {
|
|
36
|
+
var field = _ref2.field,
|
|
37
|
+
getBind = _ref2.getBind,
|
|
38
|
+
contentModel = _ref2.contentModel;
|
|
39
|
+
var Bind = getBind();
|
|
40
|
+
var settings = field.settings || {};
|
|
41
|
+
return /*#__PURE__*/_react.default.createElement(_Accordion.Accordion, null, /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
|
|
42
|
+
title: field.label,
|
|
43
|
+
description: field.helpText
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_Fields.Fields, {
|
|
45
|
+
Bind: Bind,
|
|
46
|
+
contentModel: contentModel,
|
|
47
|
+
fields: settings.fields || [],
|
|
48
|
+
layout: settings.layout || []
|
|
49
|
+
})));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var _default = plugin;
|
|
54
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","render","getBind","contentModel","Bind","settings","label","helpText","fields","layout"],"sources":["singleObjectAccordion.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-object-accordion\",\n renderer: {\n rendererName: \"object-accordion\",\n name: t`Accordion`,\n description: t`Renders fields within an accordion.`,\n canUse({ field }) {\n return field.type === \"object\" && !field.multipleValues;\n },\n render({ field, getBind, contentModel }) {\n const Bind = getBind();\n\n const settings = field.settings || {};\n\n return (\n <Accordion>\n <AccordionItem title={field.label} description={field.helpText}>\n <Fields\n Bind={Bind}\n contentModel={contentModel}\n fields={settings.fields || []}\n layout={settings.layout || []}\n />\n </AccordionItem>\n </Accordion>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,oCAAR,CAAV;;AAEA,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BADmC;EAEzCC,IAAI,EAAE,4CAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,kBADR;IAENF,IAAI,EAAEL,CAAF,4FAFE;IAGNQ,WAAW,EAAER,CAAF,wHAHL;IAINS,MAJM,wBAIY;MAAA,IAATC,KAAS,QAATA,KAAS;MACd,OAAOA,KAAK,CAACN,IAAN,KAAe,QAAf,IAA2B,CAACM,KAAK,CAACC,cAAzC;IACH,CANK;IAONC,MAPM,yBAOmC;MAAA,IAAhCF,KAAgC,SAAhCA,KAAgC;MAAA,IAAzBG,OAAyB,SAAzBA,OAAyB;MAAA,IAAhBC,YAAgB,SAAhBA,YAAgB;MACrC,IAAMC,IAAI,GAAGF,OAAO,EAApB;MAEA,IAAMG,QAAQ,GAAGN,KAAK,CAACM,QAAN,IAAkB,EAAnC;MAEA,oBACI,6BAAC,oBAAD,qBACI,6BAAC,wBAAD;QAAe,KAAK,EAAEN,KAAK,CAACO,KAA5B;QAAmC,WAAW,EAAEP,KAAK,CAACQ;MAAtD,gBACI,6BAAC,cAAD;QACI,IAAI,EAAEH,IADV;QAEI,YAAY,EAAED,YAFlB;QAGI,MAAM,EAAEE,QAAQ,CAACG,MAAT,IAAmB,EAH/B;QAII,MAAM,EAAEH,QAAQ,CAACI,MAAT,IAAmB;MAJ/B,EADJ,CADJ,CADJ;IAYH;EAxBK;AAH+B,CAA7C;eA+BejB,M"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _i18n = require("@webiny/app/i18n");
|
|
15
|
+
|
|
16
|
+
var _Fields = require("../../../components/ContentEntryForm/Fields");
|
|
17
|
+
|
|
18
|
+
var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
|
|
19
|
+
|
|
20
|
+
var _Grid = require("@webiny/ui/Grid");
|
|
21
|
+
|
|
22
|
+
var _FormElementMessage = require("@webiny/ui/FormElementMessage");
|
|
23
|
+
|
|
24
|
+
var _StyledComponents = require("./StyledComponents");
|
|
25
|
+
|
|
26
|
+
var _templateObject, _templateObject2;
|
|
27
|
+
|
|
28
|
+
var t = _i18n.i18n.ns("app-headless-cms/admin/fields/text");
|
|
29
|
+
|
|
30
|
+
var plugin = {
|
|
31
|
+
type: "cms-editor-field-renderer",
|
|
32
|
+
name: "cms-editor-field-renderer-object",
|
|
33
|
+
renderer: {
|
|
34
|
+
rendererName: "object",
|
|
35
|
+
name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Inline Form"]))),
|
|
36
|
+
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders a set of fields."]))),
|
|
37
|
+
canUse: function canUse(_ref) {
|
|
38
|
+
var field = _ref.field;
|
|
39
|
+
return field.type === "object" && !field.multipleValues;
|
|
40
|
+
},
|
|
41
|
+
render: function render(_ref2) {
|
|
42
|
+
var field = _ref2.field,
|
|
43
|
+
getBind = _ref2.getBind,
|
|
44
|
+
contentModel = _ref2.contentModel;
|
|
45
|
+
var Bind = getBind();
|
|
46
|
+
var settings = field.settings || {};
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
48
|
+
span: 12
|
|
49
|
+
}, /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
|
|
50
|
+
title: field.label
|
|
51
|
+
}), field.helpText && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, null, field.helpText)), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
52
|
+
span: 12,
|
|
53
|
+
className: _StyledComponents.fieldsWrapperStyle
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement(_Fields.Fields, {
|
|
55
|
+
Bind: Bind,
|
|
56
|
+
contentModel: contentModel,
|
|
57
|
+
fields: settings.fields || [],
|
|
58
|
+
layout: settings.layout || []
|
|
59
|
+
})));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var _default = plugin;
|
|
64
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","render","getBind","contentModel","Bind","settings","label","helpText","fieldsWrapperStyle","fields","layout"],"sources":["singleObjectInline.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { SimpleFormHeader } from \"@webiny/app-admin/components/SimpleForm\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { fieldsWrapperStyle } from \"./StyledComponents\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-object\",\n renderer: {\n rendererName: \"object\",\n name: t`Inline Form`,\n description: t`Renders a set of fields.`,\n canUse({ field }) {\n return field.type === \"object\" && !field.multipleValues;\n },\n render({ field, getBind, contentModel }) {\n const Bind = getBind();\n\n const settings = field.settings || {};\n\n return (\n <Grid>\n <Cell span={12}>\n <SimpleFormHeader title={field.label} />\n {field.helpText && (\n <FormElementMessage>{field.helpText}</FormElementMessage>\n )}\n </Cell>\n <Cell span={12} className={fieldsWrapperStyle}>\n <Fields\n Bind={Bind}\n contentModel={contentModel}\n fields={settings.fields || []}\n layout={settings.layout || []}\n />\n </Cell>\n </Grid>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,oCAAR,CAAV;;AAEA,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BADmC;EAEzCC,IAAI,EAAE,kCAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,QADR;IAENF,IAAI,EAAEL,CAAF,8FAFE;IAGNQ,WAAW,EAAER,CAAF,6GAHL;IAINS,MAJM,wBAIY;MAAA,IAATC,KAAS,QAATA,KAAS;MACd,OAAOA,KAAK,CAACN,IAAN,KAAe,QAAf,IAA2B,CAACM,KAAK,CAACC,cAAzC;IACH,CANK;IAONC,MAPM,yBAOmC;MAAA,IAAhCF,KAAgC,SAAhCA,KAAgC;MAAA,IAAzBG,OAAyB,SAAzBA,OAAyB;MAAA,IAAhBC,YAAgB,SAAhBA,YAAgB;MACrC,IAAMC,IAAI,GAAGF,OAAO,EAApB;MAEA,IAAMG,QAAQ,GAAGN,KAAK,CAACM,QAAN,IAAkB,EAAnC;MAEA,oBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,4BAAD;QAAkB,KAAK,EAAEN,KAAK,CAACO;MAA/B,EADJ,EAEKP,KAAK,CAACQ,QAAN,iBACG,6BAAC,sCAAD,QAAqBR,KAAK,CAACQ,QAA3B,CAHR,CADJ,eAOI,6BAAC,UAAD;QAAM,IAAI,EAAE,EAAZ;QAAgB,SAAS,EAAEC;MAA3B,gBACI,6BAAC,cAAD;QACI,IAAI,EAAEJ,IADV;QAEI,YAAY,EAAED,YAFlB;QAGI,MAAM,EAAEE,QAAQ,CAACI,MAAT,IAAmB,EAH/B;QAII,MAAM,EAAEJ,QAAQ,CAACK,MAAT,IAAmB;MAJ/B,EADJ,CAPJ,CADJ;IAkBH;EA9BK;AAH+B,CAA7C;eAqCelB,M"}
|
|
@@ -114,7 +114,7 @@ var NewRefEntryFormDialog = function NewRefEntryFormDialog(_ref2) {
|
|
|
114
114
|
children = _ref2.children,
|
|
115
115
|
onChange = _ref2.onChange;
|
|
116
116
|
|
|
117
|
-
var _useState = (0, _react.useState)(
|
|
117
|
+
var _useState = (0, _react.useState)(undefined),
|
|
118
118
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
119
119
|
contentModel = _useState2[0],
|
|
120
120
|
setContentModel = _useState2[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","dialogContentStyles","css","dialogContainerStyles","EntryForm","onCreate","useContentEntry","setFormRef","contentModel","data","form","DialogSaveButton","ev","current","submit","DefaultButton","styled","ButtonDefault","NewEntryButton","useNewRefEntryDialog","setOpen","NewRefEntryFormDialog","modelId","children","onChange","useState","setContentModel","useSnackbar","showSnackbar","useQuery","GET_CONTENT_MODEL","skip","variables","onCompleted","contentModelData","get","open","hideDialog","useCallback","entry","published","modelName","name"],"sources":["NewRefEntryFormDialog.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport {\n Dialog,\n DialogActions,\n DialogButton,\n DialogCancel,\n DialogContent,\n DialogTitle\n} from \"@webiny/ui/Dialog\";\nimport { ButtonDefault, ButtonIcon } from \"@webiny/ui/Button\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { Provider as ContentEntriesProvider } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { Provider as ContentEntryProvider } from \"~/admin/views/contentEntries/ContentEntry/ContentEntryContext\";\nimport { ContentEntryForm } from \"~/admin/components/ContentEntryForm/ContentEntryForm\";\nimport { useQuery } from \"~/admin/hooks\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n} from \"~/admin/graphql/contentModels\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\nimport { useNewRefEntryDialog } from \"../hooks/useNewRefEntryDialog\";\nimport { CmsEditorContentEntry, CmsModel } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst dialogContentStyles = css`\n width: 786px;\n`;\n\nconst dialogContainerStyles = css`\n /*\n* By default, a Dialog component has the \"z-index\" value of 20.\n* As we are rendering the content entry form in a \"Dialog\", the File Manager view triggered by a \"file\" field\n* will render below the source form, rendering it useless for the user.\n*\n* To fix that issue, we're setting the \"z-index\" CSS property for this particular Dialog to less than 18,\n* which is the \"z-index\" value assigned to File Manager view, so that it will render below the File Manager view as expected.\n*/\n\n &.mdc-dialog {\n z-index: 17;\n }\n`;\n\ninterface EntryFormProps {\n onCreate: (entry: CmsEditorContentEntry) => void;\n}\nconst EntryForm: React.FC<EntryFormProps> = ({ onCreate }) => {\n const { setFormRef, contentModel } = useContentEntry();\n\n return (\n <ContentEntryForm\n contentModel={contentModel}\n onSubmit={data => {\n /**\n * We know that data is CmsEditorContentEntry.\n */\n return onCreate(data as unknown as CmsEditorContentEntry);\n }}\n onForm={form => setFormRef(form)}\n entry={{}}\n addEntryToListCache={false}\n />\n );\n};\n\nconst DialogSaveButton: React.FC = () => {\n const { form } = useContentEntry();\n\n return <DialogButton onClick={ev => form.current.submit(ev)}>{t`Save`}</DialogButton>;\n};\n\nconst DefaultButton = styled(ButtonDefault)`\n margin-left: 32px;\n`;\n\nexport const NewEntryButton = () => {\n const { setOpen } = useNewRefEntryDialog();\n return (\n <DefaultButton small={true} onClick={() => setOpen(true)}>\n <ButtonIcon icon={<AddIcon />} />\n {t`New Entry`}\n </DefaultButton>\n );\n};\n\ninterface NewRefEntryProps {\n modelId: string;\n children: React.ReactElement;\n onChange: (entry: CmsEditorContentEntry) => void;\n}\n\nconst NewRefEntryFormDialog: React.FC<NewRefEntryProps> = ({ modelId, children, onChange }) => {\n const [contentModel, setContentModel] = useState<CmsModel |
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","dialogContentStyles","css","dialogContainerStyles","EntryForm","onCreate","useContentEntry","setFormRef","contentModel","data","form","DialogSaveButton","ev","current","submit","DefaultButton","styled","ButtonDefault","NewEntryButton","useNewRefEntryDialog","setOpen","NewRefEntryFormDialog","modelId","children","onChange","useState","undefined","setContentModel","useSnackbar","showSnackbar","useQuery","GET_CONTENT_MODEL","skip","variables","onCompleted","contentModelData","get","open","hideDialog","useCallback","entry","published","modelName","name"],"sources":["NewRefEntryFormDialog.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport {\n Dialog,\n DialogActions,\n DialogButton,\n DialogCancel,\n DialogContent,\n DialogTitle\n} from \"@webiny/ui/Dialog\";\nimport { ButtonDefault, ButtonIcon } from \"@webiny/ui/Button\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { Provider as ContentEntriesProvider } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { Provider as ContentEntryProvider } from \"~/admin/views/contentEntries/ContentEntry/ContentEntryContext\";\nimport { ContentEntryForm } from \"~/admin/components/ContentEntryForm/ContentEntryForm\";\nimport { useQuery } from \"~/admin/hooks\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n} from \"~/admin/graphql/contentModels\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\nimport { useNewRefEntryDialog } from \"../hooks/useNewRefEntryDialog\";\nimport { CmsEditorContentEntry, CmsModel } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst dialogContentStyles = css`\n width: 786px;\n`;\n\nconst dialogContainerStyles = css`\n /*\n* By default, a Dialog component has the \"z-index\" value of 20.\n* As we are rendering the content entry form in a \"Dialog\", the File Manager view triggered by a \"file\" field\n* will render below the source form, rendering it useless for the user.\n*\n* To fix that issue, we're setting the \"z-index\" CSS property for this particular Dialog to less than 18,\n* which is the \"z-index\" value assigned to File Manager view, so that it will render below the File Manager view as expected.\n*/\n\n &.mdc-dialog {\n z-index: 17;\n }\n`;\n\ninterface EntryFormProps {\n onCreate: (entry: CmsEditorContentEntry) => void;\n}\nconst EntryForm: React.FC<EntryFormProps> = ({ onCreate }) => {\n const { setFormRef, contentModel } = useContentEntry();\n\n return (\n <ContentEntryForm\n contentModel={contentModel}\n onSubmit={data => {\n /**\n * We know that data is CmsEditorContentEntry.\n */\n return onCreate(data as unknown as CmsEditorContentEntry);\n }}\n onForm={form => setFormRef(form)}\n entry={{}}\n addEntryToListCache={false}\n />\n );\n};\n\nconst DialogSaveButton: React.FC = () => {\n const { form } = useContentEntry();\n\n return <DialogButton onClick={ev => form.current.submit(ev)}>{t`Save`}</DialogButton>;\n};\n\nconst DefaultButton = styled(ButtonDefault)`\n margin-left: 32px;\n`;\n\nexport const NewEntryButton = () => {\n const { setOpen } = useNewRefEntryDialog();\n return (\n <DefaultButton small={true} onClick={() => setOpen(true)}>\n <ButtonIcon icon={<AddIcon />} />\n {t`New Entry`}\n </DefaultButton>\n );\n};\n\ninterface NewRefEntryProps {\n modelId: string;\n children: React.ReactElement;\n onChange: (entry: CmsEditorContentEntry) => void;\n}\n\nconst NewRefEntryFormDialog: React.FC<NewRefEntryProps> = ({ modelId, children, onChange }) => {\n const [contentModel, setContentModel] = useState<CmsModel | undefined>(undefined);\n\n const { showSnackbar } = useSnackbar();\n\n useQuery<GetCmsModelQueryResponse, GetCmsModelQueryVariables>(GET_CONTENT_MODEL, {\n skip: !modelId,\n variables: { modelId },\n onCompleted: data => {\n const contentModelData = get(data, \"getContentModel.data\") as unknown as CmsModel;\n if (contentModelData) {\n setContentModel(contentModelData);\n return;\n }\n\n showSnackbar(\n t`Could not load content for model \"{modelId}\". Redirecting...`({\n modelId\n })\n );\n }\n });\n\n const { open, setOpen } = useNewRefEntryDialog();\n const hideDialog = useCallback(() => setOpen(false), []);\n\n const onCreate = useCallback(\n (entry: CmsEditorContentEntry) => {\n if (!contentModel) {\n setOpen(false);\n return;\n }\n onChange({\n ...entry,\n /*\n * Format data for AutoComplete.\n */\n published: get(entry, \"meta.status\") === \"published\",\n modelId: contentModel.modelId,\n modelName: contentModel.name\n });\n setOpen(false);\n },\n [onChange, contentModel]\n );\n\n if (!contentModel) {\n return children;\n }\n\n return (\n <ContentEntriesProvider\n contentModel={contentModel}\n key={contentModel.modelId}\n insideDialog={true}\n >\n <ContentEntryProvider isNewEntry={() => true} getContentId={() => null}>\n <Dialog open={open} onClose={hideDialog} className={dialogContainerStyles}>\n <DialogTitle>\n {t`New {modelName} Entry`({ modelName: contentModel.name })}\n </DialogTitle>\n <DialogContent className={dialogContentStyles}>\n <EntryForm onCreate={onCreate} />\n </DialogContent>\n <DialogActions>\n <DialogCancel>{t`Cancel`}</DialogCancel>\n <DialogSaveButton />\n </DialogActions>\n </Dialog>\n {children}\n </ContentEntryProvider>\n </ContentEntriesProvider>\n );\n};\n\nexport default NewRefEntryFormDialog;\n"],"mappings":"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"}
|
|
@@ -206,7 +206,7 @@ var ContentEntriesList = function ContentEntriesList() {
|
|
|
206
206
|
}))), /*#__PURE__*/_react.default.createElement(UIList.ListItemMeta, {
|
|
207
207
|
className: rightAlign
|
|
208
208
|
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
209
|
-
use: "
|
|
209
|
+
use: "body2",
|
|
210
210
|
"data-testid": "ul.list.subtitle"
|
|
211
211
|
}, _statusLabels.default[item.meta.status], " (v", item.meta.version, ")")));
|
|
212
212
|
})), loadMoreLoading && /*#__PURE__*/_react.default.createElement(InlineLoaderWrapper, null, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","rightAlign","css","alignItems","justifyContent","ModelId","styled","color","InlineLoaderWrapper","position","bottom","left","display","width","height","backgroundColor","listItemMinHeight","minHeight","ContentEntriesList","useContentEntriesList","contentModel","id","loading","canCreate","onCreate","data","editEntry","loadMore","loadMoreLoading","listQueryVariables","setListQueryVariables","sorters","filter","setFilter","viewConfig","useContentEntriesViewConfig","loadMoreOnScroll","useCallback","debounce","scrollFrame","top","formInitialData","sort","appliesToContentModel","modelIds","length","includes","modelId","entriesDataListModalOverlay","useMemo","status","Bind","map","value","label","filters","name","element","pluralize","title","item","meta","time","savedOn","statusLabels","version"],"sources":["ContentEntriesList.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { css } from \"emotion\";\n/**\n * Package timeago-react does not have types.\n */\n// @ts-ignore\nimport TimeAgo from \"timeago-react\";\nimport pluralize from \"pluralize\";\nimport styled from \"@emotion/styled\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport * as UIList from \"@webiny/ui/List\";\nimport { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport statusLabels from \"../../constants/statusLabels\";\nimport { useCallback } from \"react\";\nimport { useContentEntriesList } from \"~/admin/views/contentEntries/hooks/useContentEntriesList\";\nimport { positionValues as PositionValues } from \"react-custom-scrollbars\";\nimport { CmsEditorContentEntry } from \"~/types\";\nimport {\n useContentEntriesViewConfig,\n ContentEntriesViewConfigFilter\n} from \"./experiment/ContentEntriesViewConfig\";\nimport { Link } from \"@webiny/react-router\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/contents/data-list\");\n\nconst rightAlign = css({\n alignItems: \"flex-end !important\",\n justifyContent: \"center !important\"\n});\n\nconst ModelId = styled(\"span\")({\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n});\n\nconst InlineLoaderWrapper = styled(\"div\")({\n position: \"absolute\",\n bottom: 0,\n left: 0,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n height: 40,\n backgroundColor: \"var(--mdc-theme-surface)\"\n});\n\nconst listItemMinHeight = css({\n minHeight: \"66px !important\"\n});\n\nconst ContentEntriesList: React.FC = () => {\n const {\n contentModel,\n id,\n loading,\n canCreate,\n onCreate,\n data,\n editEntry,\n loadMore,\n loadMoreLoading,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n filter,\n setFilter\n } = useContentEntriesList();\n\n const viewConfig = useContentEntriesViewConfig();\n\n const loadMoreOnScroll = useCallback(\n debounce((scrollFrame: PositionValues) => {\n if (scrollFrame.top > 0.9) {\n loadMore();\n }\n }, 500),\n [data]\n );\n\n const formInitialData = {\n ...listQueryVariables,\n sort: listQueryVariables.sort ? listQueryVariables.sort[0] : \"\"\n };\n\n const appliesToContentModel = useCallback(\n ({ modelIds }: ContentEntriesViewConfigFilter) => {\n return modelIds.length === 0 || modelIds.includes(contentModel.modelId);\n },\n [contentModel]\n );\n\n const entriesDataListModalOverlay = useMemo(\n () => (\n <UIList.DataListModalOverlay>\n <Form\n data={formInitialData}\n onChange={({ sort, status, ...data }) => {\n setListQueryVariables(() => ({\n status,\n // GraphQL Schema requires \"sort\" to be an array.\n sort: [sort],\n // Spread the rest of form data\n ...data\n }));\n }}\n >\n {({ Bind }) => (\n <Grid>\n <Cell span={12}>\n <Bind name={\"sort\"}>\n <Select label={t`Sort by`}>\n {sorters.map(({ value, label }) => {\n return (\n <option key={value} value={value}>\n {label}\n </option>\n );\n })}\n </Select>\n </Bind>\n </Cell>\n {viewConfig.filters.filter(appliesToContentModel).map(filter => (\n <Cell span={12} key={filter.name}>\n {filter.element}\n </Cell>\n ))}\n </Grid>\n )}\n </Form>\n </UIList.DataListModalOverlay>\n ),\n [listQueryVariables, viewConfig.filters]\n );\n\n return (\n <UIList.DataList\n loading={loading}\n data={data}\n title={\n <span>\n {pluralize(contentModel.name)}\n <br />\n <Typography use={\"subtitle1\"}>\n <ModelId>\n Model ID:{\" \"}\n <Link to={`/cms/content-models/${contentModel.modelId}`}>\n {contentModel.modelId}\n </Link>\n </ModelId>\n </Typography>\n </span>\n }\n actions={\n canCreate ? (\n <ButtonSecondary data-testid=\"new-record-button\" onClick={onCreate}>\n <ButtonIcon icon={<AddIcon />} /> {t`New Entry`}\n </ButtonSecondary>\n ) : null\n }\n search={\n <SearchUI\n value={filter}\n onChange={setFilter}\n inputPlaceholder={t`Search {title}`({ title: pluralize(contentModel.name) })}\n />\n }\n modalOverlay={entriesDataListModalOverlay}\n modalOverlayAction={\n <UIList.DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: CmsEditorContentEntry[] }) => (\n <>\n <Scrollbar\n data-testid=\"default-data-list\"\n onScrollFrame={scrollFrame => loadMoreOnScroll(scrollFrame)}\n >\n {data.map(item => (\n <UIList.ListItem\n key={item.id}\n className={listItemMinHeight}\n selected={item.id === id}\n >\n <UIList.ListItemText onClick={editEntry(item)}>\n {item.meta.title || \"Untitled\"}\n <UIList.ListItemTextSecondary>\n {t`Last modified: {time}.`({\n time: <TimeAgo datetime={item.savedOn} />\n })}\n </UIList.ListItemTextSecondary>\n </UIList.ListItemText>\n\n <UIList.ListItemMeta className={rightAlign}>\n <Typography use={\"subtitle2\"} data-testid=\"ul.list.subtitle\">\n {statusLabels[item.meta.status]} (v{item.meta.version})\n </Typography>\n </UIList.ListItemMeta>\n </UIList.ListItem>\n ))}\n </Scrollbar>\n {loadMoreLoading && (\n <InlineLoaderWrapper>\n <Typography use={\"overline\"}>{t`Loading more entries...`}</Typography>\n </InlineLoaderWrapper>\n )}\n </>\n )}\n </UIList.DataList>\n );\n};\n\nexport default ContentEntriesList;\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAGA;;AAIA;;;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,2CAAR,CAAV;;AAEA,IAAMC,UAAU,gBAAG,IAAAC,YAAA,EAAI;EACnBC,UAAU,EAAE,qBADO;EAEnBC,cAAc,EAAE;AAFG,CAAJ,sBAAnB;AAKA,IAAMC,OAAO,oBAAGC,eAAH,EAAU,MAAV;EAAA;EAAA;AAAA,GAAkB;EAC3BC,KAAK,EAAE;AADoB,CAAlB,CAAb;AAIA,IAAMC,mBAAmB,oBAAGF,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EACtCG,QAAQ,EAAE,UAD4B;EAEtCC,MAAM,EAAE,CAF8B;EAGtCC,IAAI,EAAE,CAHgC;EAItCC,OAAO,EAAE,MAJ6B;EAKtCR,cAAc,EAAE,QALsB;EAMtCD,UAAU,EAAE,QAN0B;EAOtCU,KAAK,EAAE,MAP+B;EAQtCC,MAAM,EAAE,EAR8B;EAStCC,eAAe,EAAE;AATqB,CAAjB,CAAzB;AAYA,IAAMC,iBAAiB,gBAAG,IAAAd,YAAA,EAAI;EAC1Be,SAAS,EAAE;AADe,CAAJ,6BAA1B;;AAIA,IAAMC,kBAA4B,GAAG,SAA/BA,kBAA+B,GAAM;EACvC,4BAeI,IAAAC,4CAAA,GAfJ;EAAA,IACIC,YADJ,yBACIA,YADJ;EAAA,IAEIC,EAFJ,yBAEIA,EAFJ;EAAA,IAGIC,OAHJ,yBAGIA,OAHJ;EAAA,IAIIC,SAJJ,yBAIIA,SAJJ;EAAA,IAKIC,QALJ,yBAKIA,QALJ;EAAA,IAMIC,IANJ,yBAMIA,IANJ;EAAA,IAOIC,SAPJ,yBAOIA,SAPJ;EAAA,IAQIC,QARJ,yBAQIA,QARJ;EAAA,IASIC,eATJ,yBASIA,eATJ;EAAA,IAUIC,kBAVJ,yBAUIA,kBAVJ;EAAA,IAWIC,qBAXJ,yBAWIA,qBAXJ;EAAA,IAYIC,OAZJ,yBAYIA,OAZJ;EAAA,IAaIC,MAbJ,yBAaIA,MAbJ;EAAA,IAcIC,SAdJ,yBAcIA,SAdJ;;EAiBA,IAAMC,UAAU,GAAG,IAAAC,qDAAA,GAAnB;EAEA,IAAMC,gBAAgB,GAAG,IAAAC,kBAAA,EACrB,IAAAC,iBAAA,EAAS,UAACC,WAAD,EAAiC;IACtC,IAAIA,WAAW,CAACC,GAAZ,GAAkB,GAAtB,EAA2B;MACvBb,QAAQ;IACX;EACJ,CAJD,EAIG,GAJH,CADqB,EAMrB,CAACF,IAAD,CANqB,CAAzB;EASA,IAAMgB,eAAe,+DACdZ,kBADc;IAEjBa,IAAI,EAAEb,kBAAkB,CAACa,IAAnB,GAA0Bb,kBAAkB,CAACa,IAAnB,CAAwB,CAAxB,CAA1B,GAAuD;EAF5C,EAArB;EAKA,IAAMC,qBAAqB,GAAG,IAAAN,kBAAA,EAC1B,gBAAkD;IAAA,IAA/CO,QAA+C,QAA/CA,QAA+C;IAC9C,OAAOA,QAAQ,CAACC,MAAT,KAAoB,CAApB,IAAyBD,QAAQ,CAACE,QAAT,CAAkB1B,YAAY,CAAC2B,OAA/B,CAAhC;EACH,CAHyB,EAI1B,CAAC3B,YAAD,CAJ0B,CAA9B;EAOA,IAAM4B,2BAA2B,GAAG,IAAAC,cAAA,EAChC;IAAA,oBACI,6BAAC,MAAD,CAAQ,oBAAR,qBACI,6BAAC,UAAD;MACI,IAAI,EAAER,eADV;MAEI,QAAQ,EAAE,yBAA+B;QAAA,IAA5BC,IAA4B,SAA5BA,IAA4B;QAAA,IAAtBQ,MAAsB,SAAtBA,MAAsB;QAAA,IAAXzB,IAAW;QACrCK,qBAAqB,CAAC;UAAA;YAClBoB,MAAM,EAANA,MADkB;YAElB;YACAR,IAAI,EAAE,CAACA,IAAD;UAHY,GAKfjB,IALe;QAAA,CAAD,CAArB;MAOH;IAVL,GAYK;MAAA,IAAG0B,IAAH,SAAGA,IAAH;MAAA,oBACG,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,IAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,cAAD;QAAQ,KAAK,EAAErD,CAAF;MAAb,GACKiC,OAAO,CAACqB,GAAR,CAAY,iBAAsB;QAAA,IAAnBC,KAAmB,SAAnBA,KAAmB;QAAA,IAAZC,KAAY,SAAZA,KAAY;QAC/B,oBACI;UAAQ,GAAG,EAAED,KAAb;UAAoB,KAAK,EAAEA;QAA3B,GACKC,KADL,CADJ;MAKH,CANA,CADL,CADJ,CADJ,CADJ,EAcKpB,UAAU,CAACqB,OAAX,CAAmBvB,MAAnB,CAA0BW,qBAA1B,EAAiDS,GAAjD,CAAqD,UAAApB,MAAM;QAAA,oBACxD,6BAAC,UAAD;UAAM,IAAI,EAAE,EAAZ;UAAgB,GAAG,EAAEA,MAAM,CAACwB;QAA5B,GACKxB,MAAM,CAACyB,OADZ,CADwD;MAAA,CAA3D,CAdL,CADH;IAAA,CAZL,CADJ,CADJ;EAAA,CADgC,EAwChC,CAAC5B,kBAAD,EAAqBK,UAAU,CAACqB,OAAhC,CAxCgC,CAApC;EA2CA,oBACI,6BAAC,MAAD,CAAQ,QAAR;IACI,OAAO,EAAEjC,OADb;IAEI,IAAI,EAAEG,IAFV;IAGI,KAAK,eACD,2CACK,IAAAiC,kBAAA,EAAUtC,YAAY,CAACoC,IAAvB,CADL,eAEI,wCAFJ,eAGI,6BAAC,sBAAD;MAAY,GAAG,EAAE;IAAjB,gBACI,6BAAC,OAAD,qBACc,GADd,eAEI,6BAAC,iBAAD;MAAM,EAAE,gCAAyBpC,YAAY,CAAC2B,OAAtC;IAAR,GACK3B,YAAY,CAAC2B,OADlB,CAFJ,CADJ,CAHJ,CAJR;IAiBI,OAAO,EACHxB,SAAS,gBACL,6BAAC,uBAAD;MAAiB,eAAY,mBAA7B;MAAiD,OAAO,EAAEC;IAA1D,gBACI,6BAAC,kBAAD;MAAY,IAAI,eAAE,6BAAC,uBAAD;IAAlB,EADJ,OACuC1B,CADvC,+FADK,GAIL,IAtBZ;IAwBI,MAAM,eACF,6BAAC,iBAAD;MACI,KAAK,EAAEkC,MADX;MAEI,QAAQ,EAAEC,SAFd;MAGI,gBAAgB,EAAEnC,CAAC,mGAAD,CAAkB;QAAE6D,KAAK,EAAE,IAAAD,kBAAA,EAAUtC,YAAY,CAACoC,IAAvB;MAAT,CAAlB;IAHtB,EAzBR;IA+BI,YAAY,EAAER,2BA/BlB;IAgCI,kBAAkB,eACd,6BAAC,MAAD,CAAQ,0BAAR;MACI,IAAI,eAAE,6BAAC,0BAAD,OADV;MAEI,eAAa;IAFjB;EAjCR,GAuCK;IAAA,IAAGvB,IAAH,SAAGA,IAAH;IAAA,oBACG,yEACI,6BAAC,oBAAD;MACI,eAAY,mBADhB;MAEI,aAAa,EAAE,uBAAAc,WAAW;QAAA,OAAIH,gBAAgB,CAACG,WAAD,CAApB;MAAA;IAF9B,GAIKd,IAAI,CAAC2B,GAAL,CAAS,UAAAQ,IAAI;MAAA,oBACV,6BAAC,MAAD,CAAQ,QAAR;QACI,GAAG,EAAEA,IAAI,CAACvC,EADd;QAEI,SAAS,EAAEL,iBAFf;QAGI,QAAQ,EAAE4C,IAAI,CAACvC,EAAL,KAAYA;MAH1B,gBAKI,6BAAC,MAAD,CAAQ,YAAR;QAAqB,OAAO,EAAEK,SAAS,CAACkC,IAAD;MAAvC,GACKA,IAAI,CAACC,IAAL,CAAUF,KAAV,IAAmB,UADxB,eAEI,6BAAC,MAAD,CAAQ,qBAAR,QACK7D,CAAC,2GAAD,CAA0B;QACvBgE,IAAI,eAAE,6BAAC,qBAAD;UAAS,QAAQ,EAAEF,IAAI,CAACG;QAAxB;MADiB,CAA1B,CADL,CAFJ,CALJ,eAcI,6BAAC,MAAD,CAAQ,YAAR;QAAqB,SAAS,EAAE9D;MAAhC,gBACI,6BAAC,sBAAD;QAAY,GAAG,EAAE,WAAjB;QAA8B,eAAY;MAA1C,GACK+D,qBAAA,CAAaJ,IAAI,CAACC,IAAL,CAAUX,MAAvB,CADL,SACwCU,IAAI,CAACC,IAAL,CAAUI,OADlD,MADJ,CAdJ,CADU;IAAA,CAAb,CAJL,CADJ,EA4BKrC,eAAe,iBACZ,6BAAC,mBAAD,qBACI,6BAAC,sBAAD;MAAY,GAAG,EAAE;IAAjB,GAA8B9B,CAA9B,6GADJ,CA7BR,CADH;EAAA,CAvCL,CADJ;AA8EH,CAlKD;;eAoKeoB,kB"}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","rightAlign","css","alignItems","justifyContent","ModelId","styled","color","InlineLoaderWrapper","position","bottom","left","display","width","height","backgroundColor","listItemMinHeight","minHeight","ContentEntriesList","useContentEntriesList","contentModel","id","loading","canCreate","onCreate","data","editEntry","loadMore","loadMoreLoading","listQueryVariables","setListQueryVariables","sorters","filter","setFilter","viewConfig","useContentEntriesViewConfig","loadMoreOnScroll","useCallback","debounce","scrollFrame","top","formInitialData","sort","appliesToContentModel","modelIds","length","includes","modelId","entriesDataListModalOverlay","useMemo","status","Bind","map","value","label","filters","name","element","pluralize","title","item","meta","time","savedOn","statusLabels","version"],"sources":["ContentEntriesList.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { css } from \"emotion\";\n/**\n * Package timeago-react does not have types.\n */\n// @ts-ignore\nimport TimeAgo from \"timeago-react\";\nimport pluralize from \"pluralize\";\nimport styled from \"@emotion/styled\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport * as UIList from \"@webiny/ui/List\";\nimport { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport statusLabels from \"../../constants/statusLabels\";\nimport { useCallback } from \"react\";\nimport { useContentEntriesList } from \"~/admin/views/contentEntries/hooks/useContentEntriesList\";\nimport { positionValues as PositionValues } from \"react-custom-scrollbars\";\nimport { CmsEditorContentEntry } from \"~/types\";\nimport {\n useContentEntriesViewConfig,\n ContentEntriesViewConfigFilter\n} from \"./experiment/ContentEntriesViewConfig\";\nimport { Link } from \"@webiny/react-router\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/contents/data-list\");\n\nconst rightAlign = css({\n alignItems: \"flex-end !important\",\n justifyContent: \"center !important\"\n});\n\nconst ModelId = styled(\"span\")({\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n});\n\nconst InlineLoaderWrapper = styled(\"div\")({\n position: \"absolute\",\n bottom: 0,\n left: 0,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n height: 40,\n backgroundColor: \"var(--mdc-theme-surface)\"\n});\n\nconst listItemMinHeight = css({\n minHeight: \"66px !important\"\n});\n\nconst ContentEntriesList: React.FC = () => {\n const {\n contentModel,\n id,\n loading,\n canCreate,\n onCreate,\n data,\n editEntry,\n loadMore,\n loadMoreLoading,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n filter,\n setFilter\n } = useContentEntriesList();\n\n const viewConfig = useContentEntriesViewConfig();\n\n const loadMoreOnScroll = useCallback(\n debounce((scrollFrame: PositionValues) => {\n if (scrollFrame.top > 0.9) {\n loadMore();\n }\n }, 500),\n [data]\n );\n\n const formInitialData = {\n ...listQueryVariables,\n sort: listQueryVariables.sort ? listQueryVariables.sort[0] : \"\"\n };\n\n const appliesToContentModel = useCallback(\n ({ modelIds }: ContentEntriesViewConfigFilter) => {\n return modelIds.length === 0 || modelIds.includes(contentModel.modelId);\n },\n [contentModel]\n );\n\n const entriesDataListModalOverlay = useMemo(\n () => (\n <UIList.DataListModalOverlay>\n <Form\n data={formInitialData}\n onChange={({ sort, status, ...data }) => {\n setListQueryVariables(() => ({\n status,\n // GraphQL Schema requires \"sort\" to be an array.\n sort: [sort],\n // Spread the rest of form data\n ...data\n }));\n }}\n >\n {({ Bind }) => (\n <Grid>\n <Cell span={12}>\n <Bind name={\"sort\"}>\n <Select label={t`Sort by`}>\n {sorters.map(({ value, label }) => {\n return (\n <option key={value} value={value}>\n {label}\n </option>\n );\n })}\n </Select>\n </Bind>\n </Cell>\n {viewConfig.filters.filter(appliesToContentModel).map(filter => (\n <Cell span={12} key={filter.name}>\n {filter.element}\n </Cell>\n ))}\n </Grid>\n )}\n </Form>\n </UIList.DataListModalOverlay>\n ),\n [listQueryVariables, viewConfig.filters]\n );\n\n return (\n <UIList.DataList\n loading={loading}\n data={data}\n title={\n <span>\n {pluralize(contentModel.name)}\n <br />\n <Typography use={\"subtitle1\"}>\n <ModelId>\n Model ID:{\" \"}\n <Link to={`/cms/content-models/${contentModel.modelId}`}>\n {contentModel.modelId}\n </Link>\n </ModelId>\n </Typography>\n </span>\n }\n actions={\n canCreate ? (\n <ButtonSecondary data-testid=\"new-record-button\" onClick={onCreate}>\n <ButtonIcon icon={<AddIcon />} /> {t`New Entry`}\n </ButtonSecondary>\n ) : null\n }\n search={\n <SearchUI\n value={filter}\n onChange={setFilter}\n inputPlaceholder={t`Search {title}`({ title: pluralize(contentModel.name) })}\n />\n }\n modalOverlay={entriesDataListModalOverlay}\n modalOverlayAction={\n <UIList.DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: CmsEditorContentEntry[] }) => (\n <>\n <Scrollbar\n data-testid=\"default-data-list\"\n onScrollFrame={scrollFrame => loadMoreOnScroll(scrollFrame)}\n >\n {data.map(item => (\n <UIList.ListItem\n key={item.id}\n className={listItemMinHeight}\n selected={item.id === id}\n >\n <UIList.ListItemText onClick={editEntry(item)}>\n {item.meta.title || \"Untitled\"}\n <UIList.ListItemTextSecondary>\n {t`Last modified: {time}.`({\n time: <TimeAgo datetime={item.savedOn} />\n })}\n </UIList.ListItemTextSecondary>\n </UIList.ListItemText>\n\n <UIList.ListItemMeta className={rightAlign}>\n <Typography use={\"body2\"} data-testid=\"ul.list.subtitle\">\n {statusLabels[item.meta.status]} (v{item.meta.version})\n </Typography>\n </UIList.ListItemMeta>\n </UIList.ListItem>\n ))}\n </Scrollbar>\n {loadMoreLoading && (\n <InlineLoaderWrapper>\n <Typography use={\"overline\"}>{t`Loading more entries...`}</Typography>\n </InlineLoaderWrapper>\n )}\n </>\n )}\n </UIList.DataList>\n );\n};\n\nexport default ContentEntriesList;\n"],"mappings":"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"}
|
|
@@ -112,10 +112,12 @@ var Provider = function Provider(_ref) {
|
|
|
112
112
|
var contentId = typeof getContentId === "function" ? getContentId() : contentEntryProviderProps.getContentId();
|
|
113
113
|
var revisionId = contentId ? decodeURIComponent(contentId) : null;
|
|
114
114
|
var entryId = null;
|
|
115
|
+
var version = null;
|
|
115
116
|
|
|
116
117
|
if (revisionId) {
|
|
117
118
|
var result = (0, _utils.parseIdentifier)(revisionId);
|
|
118
|
-
entryId = result
|
|
119
|
+
entryId = result.id;
|
|
120
|
+
version = result.version;
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
var tabsRef = (0, _react.useRef)();
|
|
@@ -140,10 +142,20 @@ var Provider = function Provider(_ref) {
|
|
|
140
142
|
var createEntry = (0, _react.useCallback)(function () {
|
|
141
143
|
history.push("/cms/content-entries/".concat(contentModel.modelId, "?new=true"));
|
|
142
144
|
}, [contentModel.modelId]);
|
|
145
|
+
var variables = undefined;
|
|
146
|
+
|
|
147
|
+
if (version === null && entryId) {
|
|
148
|
+
variables = {
|
|
149
|
+
entryId: entryId
|
|
150
|
+
};
|
|
151
|
+
} else {
|
|
152
|
+
variables = {
|
|
153
|
+
revision: revisionId
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
143
157
|
var getEntry = (0, _hooks.useQuery)(READ_CONTENT, {
|
|
144
|
-
variables:
|
|
145
|
-
revision: revisionId || ""
|
|
146
|
-
},
|
|
158
|
+
variables: variables,
|
|
147
159
|
skip: !revisionId,
|
|
148
160
|
onCompleted: function onCompleted(data) {
|
|
149
161
|
if (!data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Context","React","createContext","undefined","useContentEntryProviderProps","useRouter","location","query","URLSearchParams","search","isNewEntry","get","getContentId","Provider","children","useContentEntries","contentModel","canCreate","listQueryVariables","setListQueryVariables","sorters","formRef","useRef","submit","history","useSnackbar","showSnackbar","useState","isLoading","setLoading","contentEntryProviderProps","newEntry","contentId","revisionId","decodeURIComponent","entryId","result","parseIdentifier","id","tabsRef","useMemo","READ_CONTENT","createReadQuery","modelId","GET_REVISIONS","createRevisionsQuery","setFormRef","useCallback","form","current","createEntry","push","getEntry","useQuery","variables","revision","skip","onCompleted","data","error","content","message","getRevisions","loading","entry","value","revisions","refetchContent","refetch","showEmptyView","isEmpty","displayName"],"sources":["ContentEntryContext.tsx"],"sourcesContent":["import React, {\n useRef,\n useState,\n useCallback,\n useMemo,\n Dispatch,\n SetStateAction,\n MutableRefObject,\n RefObject\n} from \"react\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { ContentEntriesContext } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { useContentEntries } from \"~/admin/views/contentEntries/hooks/useContentEntries\";\nimport { CmsContentEntryRevision, CmsEditorContentEntry } from \"~/types\";\nimport { TabsImperativeApi } from \"@webiny/ui/Tabs\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport {\n CmsEntriesListRevisionsQueryResponse,\n CmsEntriesListRevisionsQueryVariables,\n CmsEntryGetQueryResponse,\n CmsEntryGetQueryVariables,\n createReadQuery,\n createRevisionsQuery\n} from \"~/admin/graphql/contentEntries\";\n\ninterface ContentEntryContextForm {\n submit: (ev: React.SyntheticEvent) => Promise<CmsEditorContentEntry | null>;\n}\ntype ContentEntryContextFormRef = MutableRefObject<ContentEntryContextForm>;\nexport interface ContentEntryContext extends ContentEntriesContext {\n createEntry: () => void;\n entry: CmsEditorContentEntry;\n form: ContentEntryContextFormRef;\n setFormRef: (form: { submit: Function }) => void;\n loading: boolean;\n setLoading: Dispatch<SetStateAction<boolean>>;\n revisions: CmsContentEntryRevision[];\n refetchContent: () => void;\n tabsRef: RefObject<TabsImperativeApi | undefined>;\n showEmptyView: boolean;\n}\n\nexport const Context = React.createContext<ContentEntryContext | undefined>(undefined);\n\nexport interface ContentEntryContextProviderProps extends Partial<UseContentEntryProviderProps> {\n children: React.ReactNode;\n}\n\ninterface UseContentEntryProviderProps {\n getContentId: () => string | null;\n isNewEntry: () => boolean;\n}\n\nexport const useContentEntryProviderProps = (): UseContentEntryProviderProps => {\n const { location } = useRouter();\n const query = new URLSearchParams(location.search);\n\n const isNewEntry = (): boolean => {\n return query.get(\"new\") === \"true\";\n };\n\n const getContentId = (): string | null => {\n return query.get(\"id\") || null;\n };\n\n return {\n getContentId,\n isNewEntry\n };\n};\n\nexport const Provider: React.FC<ContentEntryContextProviderProps> = ({\n children,\n isNewEntry,\n getContentId\n}) => {\n const { contentModel, canCreate, listQueryVariables, setListQueryVariables, sorters } =\n useContentEntries();\n\n const formRef = useRef<ContentEntryContextForm>({\n submit: async () => {\n return null;\n }\n });\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const [isLoading, setLoading] = useState<boolean>(false);\n\n const contentEntryProviderProps = useContentEntryProviderProps();\n\n const newEntry =\n typeof isNewEntry === \"function\" ? isNewEntry() : contentEntryProviderProps.isNewEntry();\n const contentId =\n typeof getContentId === \"function\"\n ? getContentId()\n : contentEntryProviderProps.getContentId();\n\n const revisionId = contentId ? decodeURIComponent(contentId) : null;\n let entryId: string | null = null;\n if (revisionId) {\n const result = parseIdentifier(revisionId);\n entryId = result ? result.id : null;\n }\n\n const tabsRef = useRef<TabsImperativeApi>();\n\n const { READ_CONTENT } = useMemo(() => {\n return {\n READ_CONTENT: createReadQuery(contentModel)\n };\n }, [contentModel.modelId]);\n\n const { GET_REVISIONS } = useMemo(() => {\n return {\n GET_REVISIONS: createRevisionsQuery(contentModel)\n };\n }, [contentModel.modelId]);\n\n const setFormRef = useCallback(\n form => {\n formRef.current = form;\n },\n [formRef]\n );\n\n const createEntry = useCallback((): void => {\n history.push(`/cms/content-entries/${contentModel.modelId}?new=true`);\n }, [contentModel.modelId]);\n\n const getEntry = useQuery<CmsEntryGetQueryResponse, CmsEntryGetQueryVariables>(READ_CONTENT, {\n variables: {\n revision: revisionId || \"\"\n },\n skip: !revisionId,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.content;\n if (!error) {\n return;\n }\n history.push(`/cms/content-entries/${contentModel.modelId}`);\n showSnackbar(error.message);\n }\n });\n\n const getRevisions = useQuery<\n CmsEntriesListRevisionsQueryResponse,\n CmsEntriesListRevisionsQueryVariables\n >(GET_REVISIONS, {\n variables: {\n id: entryId as string\n },\n skip: !entryId\n });\n\n const loading = isLoading || getEntry.loading || getRevisions.loading;\n const entry: CmsEditorContentEntry = get(getEntry, \"data.content.data\") || {};\n\n const value: ContentEntryContext = {\n canCreate,\n contentModel,\n createEntry,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n entry,\n form: formRef,\n loading,\n revisions: get(getRevisions, \"data.revisions.data\") || [],\n refetchContent: getEntry.refetch,\n setFormRef,\n setLoading,\n tabsRef,\n showEmptyView: !newEntry && !loading && isEmpty(entry)\n };\n\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nProvider.displayName = \"ContentEntryProvider\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Context","React","createContext","undefined","useContentEntryProviderProps","useRouter","location","query","URLSearchParams","search","isNewEntry","get","getContentId","Provider","children","useContentEntries","contentModel","canCreate","listQueryVariables","setListQueryVariables","sorters","formRef","useRef","submit","history","useSnackbar","showSnackbar","useState","isLoading","setLoading","contentEntryProviderProps","newEntry","contentId","revisionId","decodeURIComponent","entryId","version","result","parseIdentifier","id","tabsRef","useMemo","READ_CONTENT","createReadQuery","modelId","GET_REVISIONS","createRevisionsQuery","setFormRef","useCallback","form","current","createEntry","push","variables","revision","getEntry","useQuery","skip","onCompleted","data","error","content","message","getRevisions","loading","entry","value","revisions","refetchContent","refetch","showEmptyView","isEmpty","displayName"],"sources":["ContentEntryContext.tsx"],"sourcesContent":["import React, {\n useRef,\n useState,\n useCallback,\n useMemo,\n Dispatch,\n SetStateAction,\n MutableRefObject,\n RefObject\n} from \"react\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { ContentEntriesContext } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { useContentEntries } from \"~/admin/views/contentEntries/hooks/useContentEntries\";\nimport { CmsContentEntryRevision, CmsEditorContentEntry } from \"~/types\";\nimport { TabsImperativeApi } from \"@webiny/ui/Tabs\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport {\n CmsEntriesListRevisionsQueryResponse,\n CmsEntriesListRevisionsQueryVariables,\n CmsEntryGetQueryResponse,\n CmsEntryGetQueryVariables,\n createReadQuery,\n createRevisionsQuery\n} from \"~/admin/graphql/contentEntries\";\n\ninterface ContentEntryContextForm {\n submit: (ev: React.SyntheticEvent) => Promise<CmsEditorContentEntry | null>;\n}\ntype ContentEntryContextFormRef = MutableRefObject<ContentEntryContextForm>;\nexport interface ContentEntryContext extends ContentEntriesContext {\n createEntry: () => void;\n entry: CmsEditorContentEntry;\n form: ContentEntryContextFormRef;\n setFormRef: (form: { submit: Function }) => void;\n loading: boolean;\n setLoading: Dispatch<SetStateAction<boolean>>;\n revisions: CmsContentEntryRevision[];\n refetchContent: () => void;\n tabsRef: RefObject<TabsImperativeApi | undefined>;\n showEmptyView: boolean;\n}\n\nexport const Context = React.createContext<ContentEntryContext | undefined>(undefined);\n\nexport interface ContentEntryContextProviderProps extends Partial<UseContentEntryProviderProps> {\n children: React.ReactNode;\n}\n\ninterface UseContentEntryProviderProps {\n getContentId: () => string | null;\n isNewEntry: () => boolean;\n}\n\nexport const useContentEntryProviderProps = (): UseContentEntryProviderProps => {\n const { location } = useRouter();\n const query = new URLSearchParams(location.search);\n\n const isNewEntry = (): boolean => {\n return query.get(\"new\") === \"true\";\n };\n\n const getContentId = (): string | null => {\n return query.get(\"id\") || null;\n };\n\n return {\n getContentId,\n isNewEntry\n };\n};\n\nexport const Provider: React.FC<ContentEntryContextProviderProps> = ({\n children,\n isNewEntry,\n getContentId\n}) => {\n const { contentModel, canCreate, listQueryVariables, setListQueryVariables, sorters } =\n useContentEntries();\n\n const formRef = useRef<ContentEntryContextForm>({\n submit: async () => {\n return null;\n }\n });\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const [isLoading, setLoading] = useState<boolean>(false);\n\n const contentEntryProviderProps = useContentEntryProviderProps();\n\n const newEntry =\n typeof isNewEntry === \"function\" ? isNewEntry() : contentEntryProviderProps.isNewEntry();\n const contentId =\n typeof getContentId === \"function\"\n ? getContentId()\n : contentEntryProviderProps.getContentId();\n\n const revisionId = contentId ? decodeURIComponent(contentId) : null;\n let entryId: string | null = null;\n let version: number | null = null;\n if (revisionId) {\n const result = parseIdentifier(revisionId);\n entryId = result.id;\n version = result.version;\n }\n\n const tabsRef = useRef<TabsImperativeApi>();\n\n const { READ_CONTENT } = useMemo(() => {\n return {\n READ_CONTENT: createReadQuery(contentModel)\n };\n }, [contentModel.modelId]);\n\n const { GET_REVISIONS } = useMemo(() => {\n return {\n GET_REVISIONS: createRevisionsQuery(contentModel)\n };\n }, [contentModel.modelId]);\n\n const setFormRef = useCallback(\n form => {\n formRef.current = form;\n },\n [formRef]\n );\n\n const createEntry = useCallback((): void => {\n history.push(`/cms/content-entries/${contentModel.modelId}?new=true`);\n }, [contentModel.modelId]);\n\n let variables: CmsEntryGetQueryVariables | undefined = undefined;\n if (version === null && entryId) {\n variables = {\n entryId\n };\n } else {\n variables = {\n revision: revisionId as string\n };\n }\n\n const getEntry = useQuery<CmsEntryGetQueryResponse, CmsEntryGetQueryVariables>(READ_CONTENT, {\n variables,\n skip: !revisionId,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.content;\n if (!error) {\n return;\n }\n history.push(`/cms/content-entries/${contentModel.modelId}`);\n showSnackbar(error.message);\n }\n });\n\n const getRevisions = useQuery<\n CmsEntriesListRevisionsQueryResponse,\n CmsEntriesListRevisionsQueryVariables\n >(GET_REVISIONS, {\n variables: {\n id: entryId as string\n },\n skip: !entryId\n });\n\n const loading = isLoading || getEntry.loading || getRevisions.loading;\n const entry = (get(getEntry, \"data.content.data\") as unknown as CmsEditorContentEntry) || {};\n\n const value: ContentEntryContext = {\n canCreate,\n contentModel,\n createEntry,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n entry,\n form: formRef,\n loading,\n revisions: get(getRevisions, \"data.revisions.data\") || [],\n refetchContent: getEntry.refetch,\n setFormRef,\n setLoading,\n tabsRef,\n showEmptyView: !newEntry && !loading && isEmpty(entry)\n };\n\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nProvider.displayName = \"ContentEntryProvider\";\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useContentEntriesList","useContentEntries","contentModel","listQueryVariables","setListQueryVariables","sorters","canCreate","useState","loadMoreLoading","setLoadMoreLoading","filter","setFilter","useRouter","history","baseUrl","modelId","query","URLSearchParams","location","search","id","get","searchQuery","updateSearch","useCallback","debounce","searchField","titleFieldId","prev","next","cloneDeep","set","unset","push","toString","useEffect","LIST_QUERY","useMemo","createListQuery","useQuery","variables","fetchPolicy","data","loading","fetchMore","onCreate","filterByStatus","entries","status","item","meta","loadMore","hasMoreItems","after","cursor","updateQuery","result","fetchMoreResult","content","editEntry","entry","encodeURIComponent"],"sources":["useContentEntriesList.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport get from \"lodash/get\";\nimport set from \"lodash/set\";\nimport unset from \"lodash/unset\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport debounce from \"lodash/debounce\";\nimport { useRouter } from \"@webiny/react-router\";\nimport {\n createListQuery,\n CmsEntriesListQueryVariables,\n CmsEntriesListQueryResponse\n} from \"~/admin/graphql/contentEntries\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { useContentEntries } from \"./useContentEntries\";\nimport { CmsEditorContentEntry, CmsMetaResponse } from \"~/types\";\n\ninterface UpdateSearchCallableParams {\n filter: string;\n query: URLSearchParams;\n}\ninterface UpdateSearchCallable {\n (params: UpdateSearchCallableParams): void;\n}\n\nexport function useContentEntriesList() {\n const { contentModel, listQueryVariables, setListQueryVariables, sorters, canCreate } =\n useContentEntries();\n\n const [loadMoreLoading, setLoadMoreLoading] = useState<boolean>(false);\n const [filter, setFilter] = useState<string>(\"\");\n\n const { history } = useRouter();\n const baseUrl = `/cms/content-entries/${contentModel.modelId}`;\n\n // Get entry ID and search query (if any)\n const query = new URLSearchParams(location.search);\n const id = query.get(\"id\");\n const searchQuery = query.get(\"search\");\n const updateSearch = useCallback(\n debounce<UpdateSearchCallable>(({ filter, query }) => {\n const search = query.get(\"search\");\n if (typeof search !== \"string\" && !filter) {\n return;\n }\n\n // We use the title field with the \"contains\" operator for doing basic searches.\n const searchField = contentModel.titleFieldId + \"_contains\";\n setListQueryVariables(prev => {\n const next = cloneDeep(prev);\n if (filter) {\n set(next, `where.${searchField}`, filter);\n } else {\n unset(next, `where.${searchField}`);\n }\n\n return next;\n });\n\n if (search !== filter) {\n query.set(\"search\", filter);\n history.push(`${baseUrl}?${query.toString()}`);\n }\n }, 250),\n [baseUrl]\n );\n\n // Set \"filter\" from search \"query\" on page load.\n useEffect(() => {\n if (searchQuery) {\n setFilter(searchQuery);\n }\n }, [baseUrl, searchQuery]);\n\n // When filter changes, run GQL query\n useEffect(() => updateSearch({ filter, query }), [baseUrl, filter]);\n\n // Generate a query based on current content model\n const LIST_QUERY = useMemo(() => createListQuery(contentModel), [contentModel.modelId]);\n const { data, loading, fetchMore } = useQuery<\n CmsEntriesListQueryResponse,\n CmsEntriesListQueryVariables\n >(LIST_QUERY, { variables: listQueryVariables, fetchPolicy: \"network-only\" });\n\n const onCreate = useCallback(() => {\n history.push(`/cms/content-entries/${contentModel.modelId}?new=true`);\n }, [contentModel]);\n\n const filterByStatus = useCallback((entries: CmsEditorContentEntry[], status?: string) => {\n if (!status || status === \"all\") {\n return entries;\n }\n return entries.filter(item => item.meta.status === status);\n }, []);\n\n // Load more entries on scroll\n const loadMore = useCallback((): void => {\n const meta
|
|
1
|
+
{"version":3,"names":["useContentEntriesList","useContentEntries","contentModel","listQueryVariables","setListQueryVariables","sorters","canCreate","useState","loadMoreLoading","setLoadMoreLoading","filter","setFilter","useRouter","history","baseUrl","modelId","query","URLSearchParams","location","search","id","get","searchQuery","updateSearch","useCallback","debounce","searchField","titleFieldId","prev","next","cloneDeep","set","unset","push","toString","useEffect","LIST_QUERY","useMemo","createListQuery","useQuery","variables","fetchPolicy","data","loading","fetchMore","onCreate","filterByStatus","entries","status","item","meta","loadMore","hasMoreItems","after","cursor","updateQuery","result","fetchMoreResult","content","editEntry","entry","encodeURIComponent"],"sources":["useContentEntriesList.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport get from \"lodash/get\";\nimport set from \"lodash/set\";\nimport unset from \"lodash/unset\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport debounce from \"lodash/debounce\";\nimport { useRouter } from \"@webiny/react-router\";\nimport {\n createListQuery,\n CmsEntriesListQueryVariables,\n CmsEntriesListQueryResponse\n} from \"~/admin/graphql/contentEntries\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { useContentEntries } from \"./useContentEntries\";\nimport { CmsEditorContentEntry, CmsMetaResponse } from \"~/types\";\n\ninterface UpdateSearchCallableParams {\n filter: string;\n query: URLSearchParams;\n}\ninterface UpdateSearchCallable {\n (params: UpdateSearchCallableParams): void;\n}\n\nexport function useContentEntriesList() {\n const { contentModel, listQueryVariables, setListQueryVariables, sorters, canCreate } =\n useContentEntries();\n\n const [loadMoreLoading, setLoadMoreLoading] = useState<boolean>(false);\n const [filter, setFilter] = useState<string>(\"\");\n\n const { history } = useRouter();\n const baseUrl = `/cms/content-entries/${contentModel.modelId}`;\n\n // Get entry ID and search query (if any)\n const query = new URLSearchParams(location.search);\n const id = query.get(\"id\");\n const searchQuery = query.get(\"search\");\n const updateSearch = useCallback(\n debounce<UpdateSearchCallable>(({ filter, query }) => {\n const search = query.get(\"search\");\n if (typeof search !== \"string\" && !filter) {\n return;\n }\n\n // We use the title field with the \"contains\" operator for doing basic searches.\n const searchField = contentModel.titleFieldId + \"_contains\";\n setListQueryVariables(prev => {\n const next = cloneDeep(prev);\n if (filter) {\n set(next, `where.${searchField}`, filter);\n } else {\n unset(next, `where.${searchField}`);\n }\n\n return next;\n });\n\n if (search !== filter) {\n query.set(\"search\", filter);\n history.push(`${baseUrl}?${query.toString()}`);\n }\n }, 250),\n [baseUrl]\n );\n\n // Set \"filter\" from search \"query\" on page load.\n useEffect(() => {\n if (searchQuery) {\n setFilter(searchQuery);\n }\n }, [baseUrl, searchQuery]);\n\n // When filter changes, run GQL query\n useEffect(() => updateSearch({ filter, query }), [baseUrl, filter]);\n\n // Generate a query based on current content model\n const LIST_QUERY = useMemo(() => createListQuery(contentModel), [contentModel.modelId]);\n const { data, loading, fetchMore } = useQuery<\n CmsEntriesListQueryResponse,\n CmsEntriesListQueryVariables\n >(LIST_QUERY, { variables: listQueryVariables, fetchPolicy: \"network-only\" });\n\n const onCreate = useCallback(() => {\n history.push(`/cms/content-entries/${contentModel.modelId}?new=true`);\n }, [contentModel]);\n\n const filterByStatus = useCallback((entries: CmsEditorContentEntry[], status?: string) => {\n if (!status || status === \"all\") {\n return entries;\n }\n return entries.filter(item => item.meta.status === status);\n }, []);\n\n // Load more entries on scroll\n const loadMore = useCallback((): void => {\n const meta = get(data, \"content.meta\", {}) as unknown as CmsMetaResponse;\n if (meta.hasMoreItems) {\n setLoadMoreLoading(true);\n fetchMore({\n variables: {\n after: meta.cursor\n },\n updateQuery: (prev: CmsEntriesListQueryResponse, result) => {\n if (!result || !result.fetchMoreResult) {\n return prev;\n }\n const fetchMoreResult = result.fetchMoreResult;\n\n const next = { ...fetchMoreResult };\n\n next.content.data = [...prev.content.data, ...fetchMoreResult.content.data];\n setLoadMoreLoading(false);\n return next;\n }\n });\n }\n }, [data]);\n\n const editEntry = useCallback(\n (entry: CmsEditorContentEntry) => () => {\n history.push(\n `/cms/content-entries/${contentModel.modelId}?id=${encodeURIComponent(entry.id)}`\n );\n },\n [contentModel.modelId]\n );\n\n return {\n contentModel,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n id,\n loading,\n data: filterByStatus(get(data, \"content.data\", []), listQueryVariables.status),\n loadMore,\n loadMoreLoading,\n canCreate,\n onCreate,\n filter,\n setFilter,\n editEntry\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","ButtonWrapper","styled","display","justifyContent","ContentModelGroupsForm","canCreate","useRouter","location","history","useSnackbar","showSnackbar","usePermission","canEdit","newEntry","URLSearchParams","search","get","id","getQuery","useQuery","GQL","GET_CONTENT_MODEL_GROUP","variables","skip","onCompleted","data","error","contentModelGroup","push","message","useMutation","CREATE_CONTENT_MODEL_GROUP","update","cache","gqlParams","query","LIST_CONTENT_MODEL_GROUPS","result","readQuery","listContentModelGroups","writeQuery","create","createMutation","UPDATE_CONTENT_MODEL_GROUP","updateMutation","loading","find","item","createOperation","useCallback","group","name","description","icon","onSubmit","response","showEmptyView","isEmpty","form","Bind","validation","plugin","ev","submit"],"sources":["ContentModelGroupsForm.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { Form, FormRenderPropParams } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { validation } from \"@webiny/validation\";\n\nimport {\n SimpleFormHeader,\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport IconPicker from \"./IconPicker\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { useMutation, useQuery } from \"../../hooks\";\nimport * as GQL from \"./graphql\";\nimport usePermission from \"../../hooks/usePermission\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport {\n CmsGroup,\n CreateCmsGroupMutationResponse,\n CreateCmsGroupMutationVariables,\n GetCmsGroupQueryResponse,\n GetCmsGroupQueryVariables,\n ListCmsGroupsQueryResponse,\n UpdateCmsGroupMutationResponse,\n UpdateCmsGroupMutationVariables\n} from \"./graphql\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/content-model-groups/form\");\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\ninterface ContentModelGroupsFormProps {\n canCreate: boolean;\n}\nconst ContentModelGroupsForm: React.FC<ContentModelGroupsFormProps> = ({ canCreate }) => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const { canEdit } = usePermission();\n\n const newEntry = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery<GetCmsGroupQueryResponse, GetCmsGroupQueryVariables>(\n GQL.GET_CONTENT_MODEL_GROUP,\n {\n variables: {\n id: id as string\n },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.contentModelGroup;\n if (error) {\n history.push(\"/cms/content-model-group\");\n showSnackbar(error.message);\n }\n }\n }\n );\n\n // Create a new group and update list cache\n const [create, createMutation] = useMutation<\n CreateCmsGroupMutationResponse,\n CreateCmsGroupMutationVariables\n >(GQL.CREATE_CONTENT_MODEL_GROUP, {\n update(cache, { data }) {\n if (!data || data.contentModelGroup.error) {\n return;\n }\n\n const gqlParams = {\n query: GQL.LIST_CONTENT_MODEL_GROUPS\n };\n const result = cache.readQuery<ListCmsGroupsQueryResponse>(gqlParams);\n if (!result || !result.listContentModelGroups) {\n return;\n }\n const { listContentModelGroups } = result;\n cache.writeQuery({\n ...gqlParams,\n data: {\n listContentModelGroups: {\n ...listContentModelGroups,\n data: [data.contentModelGroup.data, ...listContentModelGroups.data]\n }\n }\n });\n }\n });\n const [update, updateMutation] = useMutation<\n UpdateCmsGroupMutationResponse,\n UpdateCmsGroupMutationVariables\n >(GQL.UPDATE_CONTENT_MODEL_GROUP);\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const createOperation = useCallback(\n (group: Partial<CmsGroup>) => {\n if (!group.id) {\n return create({\n variables: {\n data: {\n name: group.name,\n description: group.description,\n icon: group.icon\n }\n }\n });\n }\n return update({\n variables: {\n id: group.id,\n data: {\n name: group.name,\n description: group.description,\n icon: group.icon\n }\n }\n });\n },\n [create, update]\n );\n\n const onSubmit = useCallback(\n async (group: Partial<CmsGroup>): Promise<void> => {\n /**\n * Create or update, depends if group object has id property\n */\n const response = await createOperation(group);\n if (!response.data) {\n showSnackbar(`Missing response data ain Content Model Group Mutation Response.`);\n return;\n }\n\n const { data, error } = response.data.contentModelGroup;\n if (error) {\n showSnackbar(error.message);\n return;\n }\n /**\n * Redirect to a new group\n */\n if (!group.id) {\n history.push(`/cms/content-model-groups?id=${data.id}`);\n }\n showSnackbar(t`Content model group saved successfully!`);\n },\n [id]\n );\n\n const data: CmsGroup = getQuery.loading\n ? null\n : get(getQuery, \"data.contentModelGroup.data\", null);\n\n const showEmptyView = !newEntry && !loading && isEmpty(data);\n // Render \"No content selected\" view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display group details {message}`({\n message: canCreate ? \"or create a...\" : \"\"\n })}\n action={\n canCreate ? (\n <ButtonDefault\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/cms/content-model-groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New Group`}\n </ButtonDefault>\n ) : (\n <></>\n )\n }\n />\n );\n }\n\n return (\n <Form onSubmit={onSubmit} data={data || { icon: \"fas/star\" }}>\n {({ data, form, Bind }: FormRenderPropParams<CmsGroup>) => (\n <SimpleForm data-testid={\"pb-content-model-groups-form\"}>\n <SimpleFormHeader title={data.name ? data.name : t`New content model group`} />\n {loading && <CircularProgress />}\n <SimpleFormContent>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"name\"\n validators={validation.create(\"required,maxLength:100\")}\n >\n <Input label={t`Name`} />\n </Bind>\n </Cell>\n\n <Cell span={12}>\n <Bind name=\"icon\" validators={validation.create(\"required\")}>\n <IconPicker\n label={t`Group icon`}\n description={t`Icon that will be displayed in the main menu.`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name=\"description\">\n <Input rows={5} label={t`Description`} />\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/cms/content-model-groups\")}\n >{t`Cancel`}</ButtonDefault>\n\n {canEdit(data, \"cms.contentModelGroup\") && (\n <React.Fragment>\n {!data.plugin ? (\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >{t`Save content model group`}</ButtonPrimary>\n ) : (\n <Tooltip\n content={\n \"Content model group is registered via a plugin.\"\n }\n placement={\"bottom\"}\n >\n <ButtonPrimary\n disabled\n >{t`Save content model group`}</ButtonPrimary>\n </Tooltip>\n )}\n </React.Fragment>\n )}\n </ButtonWrapper>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n );\n};\n\nexport default ContentModelGroupsForm;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","ButtonWrapper","styled","display","justifyContent","ContentModelGroupsForm","canCreate","useRouter","location","history","useSnackbar","showSnackbar","usePermission","canEdit","newEntry","URLSearchParams","search","get","id","getQuery","useQuery","GQL","GET_CONTENT_MODEL_GROUP","variables","skip","onCompleted","data","error","contentModelGroup","push","message","useMutation","CREATE_CONTENT_MODEL_GROUP","update","cache","gqlParams","query","LIST_CONTENT_MODEL_GROUPS","result","readQuery","listContentModelGroups","writeQuery","create","createMutation","UPDATE_CONTENT_MODEL_GROUP","updateMutation","loading","find","item","createOperation","useCallback","group","name","description","icon","onSubmit","response","showEmptyView","isEmpty","form","Bind","validation","plugin","ev","submit"],"sources":["ContentModelGroupsForm.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { Form, FormRenderPropParams } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { validation } from \"@webiny/validation\";\n\nimport {\n SimpleFormHeader,\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport IconPicker from \"./IconPicker\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { useMutation, useQuery } from \"../../hooks\";\nimport * as GQL from \"./graphql\";\nimport usePermission from \"../../hooks/usePermission\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport {\n CmsGroup,\n CreateCmsGroupMutationResponse,\n CreateCmsGroupMutationVariables,\n GetCmsGroupQueryResponse,\n GetCmsGroupQueryVariables,\n ListCmsGroupsQueryResponse,\n UpdateCmsGroupMutationResponse,\n UpdateCmsGroupMutationVariables\n} from \"./graphql\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/content-model-groups/form\");\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\ninterface ContentModelGroupsFormProps {\n canCreate: boolean;\n}\nconst ContentModelGroupsForm: React.FC<ContentModelGroupsFormProps> = ({ canCreate }) => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const { canEdit } = usePermission();\n\n const newEntry = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery<GetCmsGroupQueryResponse, GetCmsGroupQueryVariables>(\n GQL.GET_CONTENT_MODEL_GROUP,\n {\n variables: {\n id: id as string\n },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.contentModelGroup;\n if (error) {\n history.push(\"/cms/content-model-group\");\n showSnackbar(error.message);\n }\n }\n }\n );\n\n // Create a new group and update list cache\n const [create, createMutation] = useMutation<\n CreateCmsGroupMutationResponse,\n CreateCmsGroupMutationVariables\n >(GQL.CREATE_CONTENT_MODEL_GROUP, {\n update(cache, { data }) {\n if (!data || data.contentModelGroup.error) {\n return;\n }\n\n const gqlParams = {\n query: GQL.LIST_CONTENT_MODEL_GROUPS\n };\n const result = cache.readQuery<ListCmsGroupsQueryResponse>(gqlParams);\n if (!result || !result.listContentModelGroups) {\n return;\n }\n const { listContentModelGroups } = result;\n cache.writeQuery({\n ...gqlParams,\n data: {\n listContentModelGroups: {\n ...listContentModelGroups,\n data: [data.contentModelGroup.data, ...listContentModelGroups.data]\n }\n }\n });\n }\n });\n const [update, updateMutation] = useMutation<\n UpdateCmsGroupMutationResponse,\n UpdateCmsGroupMutationVariables\n >(GQL.UPDATE_CONTENT_MODEL_GROUP);\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const createOperation = useCallback(\n (group: Partial<CmsGroup>) => {\n if (!group.id) {\n return create({\n variables: {\n data: {\n name: group.name,\n description: group.description,\n icon: group.icon\n }\n }\n });\n }\n return update({\n variables: {\n id: group.id,\n data: {\n name: group.name,\n description: group.description,\n icon: group.icon\n }\n }\n });\n },\n [create, update]\n );\n\n const onSubmit = useCallback(\n async (group: Partial<CmsGroup>): Promise<void> => {\n /**\n * Create or update, depends if group object has id property\n */\n const response = await createOperation(group);\n if (!response.data) {\n showSnackbar(`Missing response data ain Content Model Group Mutation Response.`);\n return;\n }\n\n const { data, error } = response.data.contentModelGroup;\n if (error) {\n showSnackbar(error.message);\n return;\n }\n /**\n * Redirect to a new group\n */\n if (!group.id) {\n history.push(`/cms/content-model-groups?id=${data.id}`);\n }\n showSnackbar(t`Content model group saved successfully!`);\n },\n [id]\n );\n\n const data: CmsGroup | null = getQuery.loading\n ? null\n : get(getQuery, \"data.contentModelGroup.data\", null);\n\n const showEmptyView = !newEntry && !loading && isEmpty(data);\n // Render \"No content selected\" view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display group details {message}`({\n message: canCreate ? \"or create a...\" : \"\"\n })}\n action={\n canCreate ? (\n <ButtonDefault\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/cms/content-model-groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New Group`}\n </ButtonDefault>\n ) : (\n <></>\n )\n }\n />\n );\n }\n\n return (\n <Form onSubmit={onSubmit} data={data || { icon: \"fas/star\" }}>\n {({ data, form, Bind }: FormRenderPropParams<CmsGroup>) => (\n <SimpleForm data-testid={\"pb-content-model-groups-form\"}>\n <SimpleFormHeader title={data.name ? data.name : t`New content model group`} />\n {loading && <CircularProgress />}\n <SimpleFormContent>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"name\"\n validators={validation.create(\"required,maxLength:100\")}\n >\n <Input label={t`Name`} />\n </Bind>\n </Cell>\n\n <Cell span={12}>\n <Bind name=\"icon\" validators={validation.create(\"required\")}>\n <IconPicker\n label={t`Group icon`}\n description={t`Icon that will be displayed in the main menu.`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name=\"description\">\n <Input rows={5} label={t`Description`} />\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/cms/content-model-groups\")}\n >{t`Cancel`}</ButtonDefault>\n\n {canEdit(data, \"cms.contentModelGroup\") && (\n <React.Fragment>\n {!data.plugin ? (\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >{t`Save content model group`}</ButtonPrimary>\n ) : (\n <Tooltip\n content={\n \"Content model group is registered via a plugin.\"\n }\n placement={\"bottom\"}\n >\n <ButtonPrimary\n disabled\n >{t`Save content model group`}</ButtonPrimary>\n </Tooltip>\n )}\n </React.Fragment>\n )}\n </ButtonWrapper>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n );\n};\n\nexport default ContentModelGroupsForm;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAYA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,kDAAR,CAAV;;AACA,IAAMC,aAAa,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EAChCC,OAAO,EAAE,MADuB;EAEhCC,cAAc,EAAE;AAFgB,CAAjB,CAAnB;;AAQA,IAAMC,sBAA6D,GAAG,SAAhEA,sBAAgE,OAAmB;EAAA,IAAhBC,SAAgB,QAAhBA,SAAgB;;EACrF,iBAA8B,IAAAC,sBAAA,GAA9B;EAAA,IAAQC,QAAR,cAAQA,QAAR;EAAA,IAAkBC,OAAlB,cAAkBA,OAAlB;;EACA,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR;;EACA,qBAAoB,IAAAC,uBAAA,GAApB;EAAA,IAAQC,OAAR,kBAAQA,OAAR;;EAEA,IAAMC,QAAQ,GAAG,IAAIC,eAAJ,CAAoBP,QAAQ,CAACQ,MAA7B,EAAqCC,GAArC,CAAyC,KAAzC,MAAoD,MAArE;EACA,IAAMC,EAAE,GAAG,IAAIH,eAAJ,CAAoBP,QAAQ,CAACQ,MAA7B,EAAqCC,GAArC,CAAyC,IAAzC,CAAX;EAEA,IAAME,QAAQ,GAAG,IAAAC,eAAA,EACbC,GAAG,CAACC,uBADS,EAEb;IACIC,SAAS,EAAE;MACPL,EAAE,EAAEA;IADG,CADf;IAIIM,IAAI,EAAE,CAACN,EAJX;IAKIO,WAAW,EAAE,qBAAAC,IAAI,EAAI;MACjB,IAAI,CAACA,IAAL,EAAW;QACP;MACH;;MAED,IAAQC,KAAR,GAAkBD,IAAI,CAACE,iBAAvB,CAAQD,KAAR;;MACA,IAAIA,KAAJ,EAAW;QACPlB,OAAO,CAACoB,IAAR,CAAa,0BAAb;QACAlB,YAAY,CAACgB,KAAK,CAACG,OAAP,CAAZ;MACH;IACJ;EAfL,CAFa,CAAjB,CARqF,CA6BrF;;EACA,mBAAiC,IAAAC,kBAAA,EAG/BV,GAAG,CAACW,0BAH2B,EAGC;IAC9BC,MAD8B,kBACvBC,KADuB,SACN;MAAA,IAARR,IAAQ,SAARA,IAAQ;;MACpB,IAAI,CAACA,IAAD,IAASA,IAAI,CAACE,iBAAL,CAAuBD,KAApC,EAA2C;QACvC;MACH;;MAED,IAAMQ,SAAS,GAAG;QACdC,KAAK,EAAEf,GAAG,CAACgB;MADG,CAAlB;MAGA,IAAMC,MAAM,GAAGJ,KAAK,CAACK,SAAN,CAA4CJ,SAA5C,CAAf;;MACA,IAAI,CAACG,MAAD,IAAW,CAACA,MAAM,CAACE,sBAAvB,EAA+C;QAC3C;MACH;;MACD,IAAQA,sBAAR,GAAmCF,MAAnC,CAAQE,sBAAR;MACAN,KAAK,CAACO,UAAN,6DACON,SADP;QAEIT,IAAI,EAAE;UACFc,sBAAsB,8DACfA,sBADe;YAElBd,IAAI,GAAGA,IAAI,CAACE,iBAAL,CAAuBF,IAA1B,0CAAmCc,sBAAsB,CAACd,IAA1D;UAFc;QADpB;MAFV;IASH;EAvB6B,CAHD,CAAjC;EAAA;EAAA,IAAOgB,MAAP;EAAA,IAAeC,cAAf;;EA4BA,oBAAiC,IAAAZ,kBAAA,EAG/BV,GAAG,CAACuB,0BAH2B,CAAjC;EAAA;EAAA,IAAOX,MAAP;EAAA,IAAeY,cAAf;;EAKA,IAAMC,OAAO,GAAG,CAAC3B,QAAD,EAAWwB,cAAX,EAA2BE,cAA3B,EAA2CE,IAA3C,CAAgD,UAAAC,IAAI;IAAA,OAAIA,IAAI,CAACF,OAAT;EAAA,CAApD,CAAhB;EAEA,IAAMG,eAAe,GAAG,IAAAC,kBAAA,EACpB,UAACC,KAAD,EAA8B;IAC1B,IAAI,CAACA,KAAK,CAACjC,EAAX,EAAe;MACX,OAAOwB,MAAM,CAAC;QACVnB,SAAS,EAAE;UACPG,IAAI,EAAE;YACF0B,IAAI,EAAED,KAAK,CAACC,IADV;YAEFC,WAAW,EAAEF,KAAK,CAACE,WAFjB;YAGFC,IAAI,EAAEH,KAAK,CAACG;UAHV;QADC;MADD,CAAD,CAAb;IASH;;IACD,OAAOrB,MAAM,CAAC;MACVV,SAAS,EAAE;QACPL,EAAE,EAAEiC,KAAK,CAACjC,EADH;QAEPQ,IAAI,EAAE;UACF0B,IAAI,EAAED,KAAK,CAACC,IADV;UAEFC,WAAW,EAAEF,KAAK,CAACE,WAFjB;UAGFC,IAAI,EAAEH,KAAK,CAACG;QAHV;MAFC;IADD,CAAD,CAAb;EAUH,CAvBmB,EAwBpB,CAACZ,MAAD,EAAST,MAAT,CAxBoB,CAAxB;EA2BA,IAAMsB,QAAQ,GAAG,IAAAL,kBAAA;IAAA,mGACb,iBAAOC,KAAP;MAAA;;MAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OAI2BF,eAAe,CAACE,KAAD,CAJ1C;;YAAA;cAIUK,QAJV;;cAAA,IAKSA,QAAQ,CAAC9B,IALlB;gBAAA;gBAAA;cAAA;;cAMQf,YAAY,oEAAZ;cANR;;YAAA;cAAA,wBAU4B6C,QAAQ,CAAC9B,IAAT,CAAcE,iBAV1C,EAUYF,IAVZ,yBAUYA,IAVZ,EAUkBC,KAVlB,yBAUkBA,KAVlB;;cAAA,KAWQA,KAXR;gBAAA;gBAAA;cAAA;;cAYQhB,YAAY,CAACgB,KAAK,CAACG,OAAP,CAAZ;cAZR;;YAAA;cAeI;AACZ;AACA;cACY,IAAI,CAACqB,KAAK,CAACjC,EAAX,EAAe;gBACXT,OAAO,CAACoB,IAAR,wCAA6CH,IAAI,CAACR,EAAlD;cACH;;cACDP,YAAY,CAACb,CAAD,2HAAZ;;YArBJ;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CADa;;IAAA;MAAA;IAAA;EAAA,KAwBb,CAACoB,EAAD,CAxBa,CAAjB;EA2BA,IAAMQ,IAAqB,GAAGP,QAAQ,CAAC2B,OAAT,GACxB,IADwB,GAExB,IAAA7B,YAAA,EAAIE,QAAJ,EAAc,6BAAd,EAA6C,IAA7C,CAFN;EAIA,IAAMsC,aAAa,GAAG,CAAC3C,QAAD,IAAa,CAACgC,OAAd,IAAyB,IAAAY,gBAAA,EAAQhC,IAAR,CAA/C,CA3HqF,CA4HrF;;EACA,IAAI+B,aAAJ,EAAmB;IACf,oBACI,6BAAC,kBAAD;MACI,KAAK,EAAE3D,CAAC,mJAAD,CAAkE;QACrEgC,OAAO,EAAExB,SAAS,GAAG,gBAAH,GAAsB;MAD6B,CAAlE,CADX;MAII,MAAM,EACFA,SAAS,gBACL,6BAAC,qBAAD;QACI,eAAY,mBADhB;QAEI,OAAO,EAAE;UAAA,OAAMG,OAAO,CAACoB,IAAR,CAAa,oCAAb,CAAN;QAAA;MAFb,gBAII,6BAAC,kBAAD;QAAY,IAAI,eAAE,6BAAC,uBAAD;MAAlB,EAJJ,OAIuC/B,CAJvC,+FADK,gBAQL;IAbZ,EADJ;EAmBH;;EAED,oBACI,6BAAC,UAAD;IAAM,QAAQ,EAAEyD,QAAhB;IAA0B,IAAI,EAAE7B,IAAI,IAAI;MAAE4B,IAAI,EAAE;IAAR;EAAxC,GACK;IAAA,IAAG5B,IAAH,SAAGA,IAAH;IAAA,IAASiC,IAAT,SAASA,IAAT;IAAA,IAAeC,IAAf,SAAeA,IAAf;IAAA,oBACG,6BAAC,sBAAD;MAAY,eAAa;IAAzB,gBACI,6BAAC,4BAAD;MAAkB,KAAK,EAAElC,IAAI,CAAC0B,IAAL,GAAY1B,IAAI,CAAC0B,IAAjB,GAAwBtD,CAAxB;IAAzB,EADJ,EAEKgD,OAAO,iBAAI,6BAAC,0BAAD,OAFhB,eAGI,6BAAC,6BAAD,qBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MACI,IAAI,EAAC,MADT;MAEI,UAAU,EAAEe,sBAAA,CAAWnB,MAAX,CAAkB,wBAAlB;IAFhB,gBAII,6BAAC,YAAD;MAAO,KAAK,EAAE5C,CAAF;IAAZ,EAJJ,CADJ,CADJ,eAUI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MAAM,IAAI,EAAC,MAAX;MAAkB,UAAU,EAAE+D,sBAAA,CAAWnB,MAAX,CAAkB,UAAlB;IAA9B,gBACI,6BAAC,mBAAD;MACI,KAAK,EAAE5C,CAAF,+FADT;MAEI,WAAW,EAAEA,CAAF;IAFf,EADJ,CADJ,CAVJ,eAkBI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MAAM,IAAI,EAAC;IAAX,gBACI,6BAAC,YAAD;MAAO,IAAI,EAAE,CAAb;MAAgB,KAAK,EAAEA,CAAF;IAArB,EADJ,CADJ,CAlBJ,CADJ,CAHJ,eA6BI,6BAAC,4BAAD,qBACI,6BAAC,aAAD,qBACI,6BAAC,qBAAD;MACI,OAAO,EAAE;QAAA,OAAMW,OAAO,CAACoB,IAAR,CAAa,2BAAb,CAAN;MAAA;IADb,GAEE/B,CAFF,4FADJ,EAKKe,OAAO,CAACa,IAAD,EAAO,uBAAP,CAAP,iBACG,6BAAC,cAAD,CAAO,QAAP,QACK,CAACA,IAAI,CAACoC,MAAN,gBACG,6BAAC,qBAAD;MACI,OAAO,EAAE,iBAAAC,EAAE,EAAI;QACXJ,IAAI,CAACK,MAAL,CAAYD,EAAZ;MACH;IAHL,GAIEjE,CAJF,gHADH,gBAOG,6BAAC,gBAAD;MACI,OAAO,EACH,iDAFR;MAII,SAAS,EAAE;IAJf,gBAMI,6BAAC,qBAAD;MACI,QAAQ;IADZ,GAEEA,CAFF,gHANJ,CARR,CANR,CADJ,CA7BJ,CADH;EAAA,CADL,CADJ;AAkEH,CArND;;eAuNeO,sB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-headless-cms",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.40876133bb",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,20 +26,20 @@
|
|
|
26
26
|
"@fortawesome/react-fontawesome": "0.1.19",
|
|
27
27
|
"@svgr/webpack": "6.4.0",
|
|
28
28
|
"@types/react": "17.0.39",
|
|
29
|
-
"@webiny/app": "0.0.0-unstable.
|
|
30
|
-
"@webiny/app-admin": "0.0.0-unstable.
|
|
31
|
-
"@webiny/app-graphql-playground": "0.0.0-unstable.
|
|
32
|
-
"@webiny/app-i18n": "0.0.0-unstable.
|
|
33
|
-
"@webiny/app-plugin-admin-welcome-screen": "0.0.0-unstable.
|
|
34
|
-
"@webiny/app-security": "0.0.0-unstable.
|
|
35
|
-
"@webiny/error": "0.0.0-unstable.
|
|
36
|
-
"@webiny/form": "0.0.0-unstable.
|
|
37
|
-
"@webiny/plugins": "0.0.0-unstable.
|
|
38
|
-
"@webiny/react-composition": "0.0.0-unstable.
|
|
39
|
-
"@webiny/react-router": "0.0.0-unstable.
|
|
40
|
-
"@webiny/ui": "0.0.0-unstable.
|
|
41
|
-
"@webiny/utils": "0.0.0-unstable.
|
|
42
|
-
"@webiny/validation": "0.0.0-unstable.
|
|
29
|
+
"@webiny/app": "0.0.0-unstable.40876133bb",
|
|
30
|
+
"@webiny/app-admin": "0.0.0-unstable.40876133bb",
|
|
31
|
+
"@webiny/app-graphql-playground": "0.0.0-unstable.40876133bb",
|
|
32
|
+
"@webiny/app-i18n": "0.0.0-unstable.40876133bb",
|
|
33
|
+
"@webiny/app-plugin-admin-welcome-screen": "0.0.0-unstable.40876133bb",
|
|
34
|
+
"@webiny/app-security": "0.0.0-unstable.40876133bb",
|
|
35
|
+
"@webiny/error": "0.0.0-unstable.40876133bb",
|
|
36
|
+
"@webiny/form": "0.0.0-unstable.40876133bb",
|
|
37
|
+
"@webiny/plugins": "0.0.0-unstable.40876133bb",
|
|
38
|
+
"@webiny/react-composition": "0.0.0-unstable.40876133bb",
|
|
39
|
+
"@webiny/react-router": "0.0.0-unstable.40876133bb",
|
|
40
|
+
"@webiny/ui": "0.0.0-unstable.40876133bb",
|
|
41
|
+
"@webiny/utils": "0.0.0-unstable.40876133bb",
|
|
42
|
+
"@webiny/validation": "0.0.0-unstable.40876133bb",
|
|
43
43
|
"apollo-cache": "1.3.5",
|
|
44
44
|
"apollo-client": "2.6.10",
|
|
45
45
|
"apollo-link": "1.2.14",
|
|
@@ -70,10 +70,10 @@
|
|
|
70
70
|
"@babel/cli": "^7.19.3",
|
|
71
71
|
"@babel/core": "^7.19.3",
|
|
72
72
|
"@babel/preset-env": "^7.19.4",
|
|
73
|
-
"@babel/preset-react": "^7.
|
|
73
|
+
"@babel/preset-react": "^7.16.0",
|
|
74
74
|
"@babel/preset-typescript": "^7.18.6",
|
|
75
|
-
"@webiny/cli": "^0.0.0-unstable.
|
|
76
|
-
"@webiny/project-utils": "^0.0.0-unstable.
|
|
75
|
+
"@webiny/cli": "^0.0.0-unstable.40876133bb",
|
|
76
|
+
"@webiny/project-utils": "^0.0.0-unstable.40876133bb",
|
|
77
77
|
"babel-plugin-emotion": "^9.2.8",
|
|
78
78
|
"babel-plugin-lodash": "^3.3.4",
|
|
79
79
|
"babel-plugin-module-resolver": "^4.1.0",
|
|
@@ -104,5 +104,5 @@
|
|
|
104
104
|
]
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
|
-
"gitHead": "
|
|
107
|
+
"gitHead": "f33811072795d25c5787ae39808e75e3312fb247"
|
|
108
108
|
}
|