@webiny/app-headless-cms 5.26.0-beta.1 → 5.26.1-beta.0

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.
@@ -125,7 +125,7 @@ var Field = function Field(props) {
125
125
  }
126
126
  }
127
127
  }, _callee);
128
- })), [field.fieldId]);
128
+ })), [field.fieldId, setData]);
129
129
  var fieldPlugin = getFieldPlugin(field.type);
130
130
  var editorFieldOptionPlugins = plugins.byType("cms-editor-field-option");
131
131
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Field.tsx"],"names":["React","Fragment","useCallback","css","styled","IconButton","Typography","ReactComponent","EditIcon","DeleteIcon","TitleIcon","MoreVerticalIcon","Menu","MenuItem","plugins","ListItemGraphic","Icon","i18n","useSnackbar","useContentModelEditor","useFieldEditor","t","ns","FieldContainer","display","flexDirection","justifyContent","alignItems","Info","flex","lineHeight","Actions","menuStyles","width","right","left","opacity","pointerEvents","allowedTitleFieldTypes","isFieldAllowedToBeTitle","field","parent","multipleValues","includes","type","Field","props","onEdit","showSnackbar","setData","data","getFieldPlugin","onDelete","fieldId","setAsTitle","titleFieldId","response","error","message","fieldPlugin","editorFieldOptionPlugins","byType","isTitleField","lockedFields","label","map","pl","cloneElement","render","key","name","some","lockedField","find","memo"],"mappings":"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","sourcesContent":["import React, { Fragment, useCallback } from \"react\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { ReactComponent as EditIcon } from \"~/admin/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/delete.svg\";\nimport { ReactComponent as TitleIcon } from \"~/admin/icons/title-24px.svg\";\nimport { ReactComponent as MoreVerticalIcon } from \"~/admin/icons/more_vert.svg\";\nimport { Menu, MenuItem } from \"@webiny/ui/Menu\";\nimport { plugins } from \"@webiny/plugins\";\nimport { CmsEditorField, CmsEditorFieldOptionPlugin } from \"~/types\";\nimport { ListItemGraphic } from \"@webiny/ui/List\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useContentModelEditor } from \"~/admin/components/ContentModelEditor/useContentModelEditor\";\nimport { useFieldEditor } from \"~/admin/components/FieldEditor/useFieldEditor\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/editor/field\");\n\nconst FieldContainer = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n});\n\nconst Info = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\",\n \"> *\": {\n flex: \"1 100%\",\n lineHeight: \"150%\"\n }\n});\n\nconst Actions = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"right\",\n \"> *\": {\n flex: \"1 100%\"\n }\n});\n\nconst menuStyles = css({\n width: 220,\n right: -105,\n left: \"auto !important\",\n \".disabled\": {\n opacity: 0.5,\n pointerEvents: \"none\"\n }\n});\n\nconst allowedTitleFieldTypes: string[] = [\"text\", \"number\"];\n\nconst isFieldAllowedToBeTitle = (field: CmsEditorField, parent?: CmsEditorField) => {\n if (field.multipleValues || parent) {\n return false;\n } else if (allowedTitleFieldTypes.includes(field.type) === false) {\n return false;\n }\n return true;\n};\n\nexport interface FieldProps {\n field: CmsEditorField;\n onDelete: (field: CmsEditorField) => void;\n onEdit: (field: CmsEditorField) => void;\n parent?: CmsEditorField;\n}\nconst Field: React.FC<FieldProps> = props => {\n const { field, onEdit, parent } = props;\n const { showSnackbar } = useSnackbar();\n const { setData, data } = useContentModelEditor();\n const { getFieldPlugin } = useFieldEditor();\n\n const onDelete = useCallback(() => {\n props.onDelete(field);\n }, [field.fieldId]);\n\n const setAsTitle = useCallback(async (): Promise<void> => {\n const response = await setData(data => {\n return { ...data, titleFieldId: field.fieldId };\n });\n\n if (response && response.error) {\n return showSnackbar(response.error.message);\n }\n\n showSnackbar(t`Title field set successfully.`);\n }, [field.fieldId]);\n\n const fieldPlugin = getFieldPlugin(field.type);\n const editorFieldOptionPlugins =\n plugins.byType<CmsEditorFieldOptionPlugin>(\"cms-editor-field-option\");\n\n if (!fieldPlugin) {\n return null;\n }\n\n const isTitleField = data && field.fieldId === data.titleFieldId && !parent;\n\n const lockedFields = data ? data.lockedFields || [] : [];\n return (\n <Fragment>\n <FieldContainer>\n <Info>\n <Typography use={\"subtitle1\"}>{field.label}</Typography>\n <Typography use={\"caption\"}>\n {fieldPlugin.field.label}{\" \"}\n {field.multipleValues && <>({t`multiple values`})</>}\n {isTitleField && <>({t`entry title`})</>}\n </Typography>\n </Info>\n <Actions>\n <IconButton\n data-testid={\"cms.editor.edit-field\"}\n icon={<EditIcon />}\n onClick={() => onEdit(field)}\n />\n <Menu\n className={menuStyles}\n handle={<IconButton icon={<MoreVerticalIcon />} />}\n >\n {editorFieldOptionPlugins.map(pl =>\n React.cloneElement(pl.render(), { key: pl.name })\n )}\n {/* We only allow this action for top-level fields. */}\n <MenuItem\n disabled={!isFieldAllowedToBeTitle(field, parent)}\n onClick={setAsTitle}\n >\n <ListItemGraphic>\n <Icon icon={<TitleIcon />} />\n </ListItemGraphic>\n {t`Use as title`}\n </MenuItem>\n <MenuItem\n disabled={lockedFields.some(\n lockedField => lockedField.fieldId === field.fieldId\n )}\n onClick={onDelete}\n >\n <ListItemGraphic>\n <Icon icon={<DeleteIcon />} />\n </ListItemGraphic>\n {lockedFields.find(lockedField => lockedField.fieldId === field.fieldId)\n ? t`Cannot delete`\n : t`Delete`}\n </MenuItem>\n </Menu>\n </Actions>\n </FieldContainer>\n <div className={\"field-extra\"}>\n {fieldPlugin.field.render && fieldPlugin.field.render({ field, data, setData })}\n </div>\n </Fragment>\n );\n};\n\nexport default React.memo(Field);\n"]}
1
+ {"version":3,"sources":["Field.tsx"],"names":["React","Fragment","useCallback","css","styled","IconButton","Typography","ReactComponent","EditIcon","DeleteIcon","TitleIcon","MoreVerticalIcon","Menu","MenuItem","plugins","ListItemGraphic","Icon","i18n","useSnackbar","useContentModelEditor","useFieldEditor","t","ns","FieldContainer","display","flexDirection","justifyContent","alignItems","Info","flex","lineHeight","Actions","menuStyles","width","right","left","opacity","pointerEvents","allowedTitleFieldTypes","isFieldAllowedToBeTitle","field","parent","multipleValues","includes","type","Field","props","onEdit","showSnackbar","setData","data","getFieldPlugin","onDelete","fieldId","setAsTitle","titleFieldId","response","error","message","fieldPlugin","editorFieldOptionPlugins","byType","isTitleField","lockedFields","label","map","pl","cloneElement","render","key","name","some","lockedField","find","memo"],"mappings":"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","sourcesContent":["import React, { Fragment, useCallback } from \"react\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { ReactComponent as EditIcon } from \"~/admin/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/delete.svg\";\nimport { ReactComponent as TitleIcon } from \"~/admin/icons/title-24px.svg\";\nimport { ReactComponent as MoreVerticalIcon } from \"~/admin/icons/more_vert.svg\";\nimport { Menu, MenuItem } from \"@webiny/ui/Menu\";\nimport { plugins } from \"@webiny/plugins\";\nimport { CmsEditorField, CmsEditorFieldOptionPlugin } from \"~/types\";\nimport { ListItemGraphic } from \"@webiny/ui/List\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useContentModelEditor } from \"~/admin/components/ContentModelEditor/useContentModelEditor\";\nimport { useFieldEditor } from \"~/admin/components/FieldEditor/useFieldEditor\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/editor/field\");\n\nconst FieldContainer = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n});\n\nconst Info = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\",\n \"> *\": {\n flex: \"1 100%\",\n lineHeight: \"150%\"\n }\n});\n\nconst Actions = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"right\",\n \"> *\": {\n flex: \"1 100%\"\n }\n});\n\nconst menuStyles = css({\n width: 220,\n right: -105,\n left: \"auto !important\",\n \".disabled\": {\n opacity: 0.5,\n pointerEvents: \"none\"\n }\n});\n\nconst allowedTitleFieldTypes: string[] = [\"text\", \"number\"];\n\nconst isFieldAllowedToBeTitle = (field: CmsEditorField, parent?: CmsEditorField) => {\n if (field.multipleValues || parent) {\n return false;\n } else if (allowedTitleFieldTypes.includes(field.type) === false) {\n return false;\n }\n return true;\n};\n\nexport interface FieldProps {\n field: CmsEditorField;\n onDelete: (field: CmsEditorField) => void;\n onEdit: (field: CmsEditorField) => void;\n parent?: CmsEditorField;\n}\nconst Field: React.FC<FieldProps> = props => {\n const { field, onEdit, parent } = props;\n const { showSnackbar } = useSnackbar();\n const { setData, data } = useContentModelEditor();\n const { getFieldPlugin } = useFieldEditor();\n\n const onDelete = useCallback(() => {\n props.onDelete(field);\n }, [field.fieldId]);\n\n const setAsTitle = useCallback(async (): Promise<void> => {\n const response = await setData(data => {\n return { ...data, titleFieldId: field.fieldId };\n });\n\n if (response && response.error) {\n return showSnackbar(response.error.message);\n }\n\n showSnackbar(t`Title field set successfully.`);\n }, [field.fieldId, setData]);\n\n const fieldPlugin = getFieldPlugin(field.type);\n const editorFieldOptionPlugins =\n plugins.byType<CmsEditorFieldOptionPlugin>(\"cms-editor-field-option\");\n\n if (!fieldPlugin) {\n return null;\n }\n\n const isTitleField = data && field.fieldId === data.titleFieldId && !parent;\n\n const lockedFields = data ? data.lockedFields || [] : [];\n return (\n <Fragment>\n <FieldContainer>\n <Info>\n <Typography use={\"subtitle1\"}>{field.label}</Typography>\n <Typography use={\"caption\"}>\n {fieldPlugin.field.label}{\" \"}\n {field.multipleValues && <>({t`multiple values`})</>}\n {isTitleField && <>({t`entry title`})</>}\n </Typography>\n </Info>\n <Actions>\n <IconButton\n data-testid={\"cms.editor.edit-field\"}\n icon={<EditIcon />}\n onClick={() => onEdit(field)}\n />\n <Menu\n className={menuStyles}\n handle={<IconButton icon={<MoreVerticalIcon />} />}\n >\n {editorFieldOptionPlugins.map(pl =>\n React.cloneElement(pl.render(), { key: pl.name })\n )}\n {/* We only allow this action for top-level fields. */}\n <MenuItem\n disabled={!isFieldAllowedToBeTitle(field, parent)}\n onClick={setAsTitle}\n >\n <ListItemGraphic>\n <Icon icon={<TitleIcon />} />\n </ListItemGraphic>\n {t`Use as title`}\n </MenuItem>\n <MenuItem\n disabled={lockedFields.some(\n lockedField => lockedField.fieldId === field.fieldId\n )}\n onClick={onDelete}\n >\n <ListItemGraphic>\n <Icon icon={<DeleteIcon />} />\n </ListItemGraphic>\n {lockedFields.find(lockedField => lockedField.fieldId === field.fieldId)\n ? t`Cannot delete`\n : t`Delete`}\n </MenuItem>\n </Menu>\n </Actions>\n </FieldContainer>\n <div className={\"field-extra\"}>\n {fieldPlugin.field.render && fieldPlugin.field.render({ field, data, setData })}\n </div>\n </Fragment>\n );\n};\n\nexport default React.memo(Field);\n"]}
@@ -81,7 +81,7 @@ var CloneContentModelDialog = function CloneContentModelDialog(_ref) {
81
81
  getCurrentLocale = _useI18N.getCurrentLocale,
82
82
  setCurrentLocale = _useI18N.setCurrentLocale;
83
83
 
84
- var currentLocale = getCurrentLocale();
84
+ var currentLocale = getCurrentLocale("content");
85
85
 
86
86
  var _useState3 = useState(currentLocale || ""),
87
87
  _useState4 = _slicedToArray(_useState3, 2),
@@ -1 +1 @@
1
- {"version":3,"sources":["CloneContentModelDialog.tsx"],"names":["React","useState","useCallback","useEffect","css","get","useRouter","Form","Input","Select","useSnackbar","CircularProgress","validation","useMutation","useQueryLocale","i18n","ButtonDefault","UID","Grid","Cell","addModelToGroupCache","addModelToListCache","useI18N","CREATE_CONTENT_MODEL_FROM","LIST_MENU_CONTENT_GROUPS_MODELS","t","ns","narrowDialog","width","minWidth","noPadding","padding","disallowedModelIdEndingList","getSelectedGroup","groups","model","length","current","group","id","find","g","value","defaultSelected","CloneContentModelDialog","open","onClose","contentModel","closeModal","loading","setLoading","showSnackbar","history","getLocales","getCurrentLocale","setCurrentLocale","currentLocale","locale","setLocale","setGroups","onError","error","message","update","cache","response","data","createContentModelFrom","window","location","reload","push","locales","map","code","label","skip","groupsLoading","contentModelGroups","item","name","selectedGroup","nameValidator","target","trim","charAt","match","Error","toLowerCase","ending","re","RegExp","matched","variables","modelId","Bind","submit","create","props","description","ev"],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useEffect } from \"react\";\nimport { css } from \"emotion\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { Form } from \"@webiny/form\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { validation } from \"@webiny/validation\";\nimport { useMutation, useQueryLocale } from \"../../hooks\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ButtonDefault } from \"@webiny/ui/Button\";\nimport * as UID from \"@webiny/ui/Dialog\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { addModelToGroupCache, addModelToListCache } from \"./cache\";\nimport { CmsEditorContentModel, CmsModel } from \"~/types\";\nimport { useI18N } from \"@webiny/app-i18n/hooks/useI18N\";\nimport {\n CREATE_CONTENT_MODEL_FROM,\n LIST_MENU_CONTENT_GROUPS_MODELS,\n CreateCmsModelFromMutationResponse,\n CreateCmsModelFromMutationVariables,\n ListMenuCmsGroupsQueryResponse\n} from \"../../viewsGraphql\";\nimport { CmsGroup } from \"~/admin/views/contentModelGroups/graphql\";\nimport { CmsGroupOption } from \"~/admin/views/contentModels/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/views/content-models/clone-content-model-dialog\");\n\nconst narrowDialog = css({\n \".mdc-dialog__surface\": {\n width: 600,\n minWidth: 600\n }\n});\n\nconst noPadding = css({\n padding: \"5px !important\"\n});\n\nexport interface Props {\n open: boolean;\n onClose: UID.DialogOnClose;\n contentModel: CmsEditorContentModel;\n closeModal: () => void;\n}\n\n/**\n * This list is to disallow creating models that might interfere with GraphQL schema creation.\n * Add more if required.\n */\nconst disallowedModelIdEndingList: string[] = [\"Response\", \"List\", \"Meta\", \"Input\", \"Sorter\"];\n\nconst getSelectedGroup = (\n groups: CmsGroupOption[] | null,\n model: CmsEditorContentModel\n): string | null => {\n if (!groups || groups.length === 0 || !model) {\n return \"\";\n }\n const current = model.group.id;\n const group = groups.find(g => g.value === current);\n if (group) {\n return group.value;\n }\n const defaultSelected = groups.find(() => true);\n return defaultSelected ? defaultSelected.value : null;\n};\n\nconst CloneContentModelDialog: React.FC<Props> = ({ open, onClose, contentModel, closeModal }) => {\n const [loading, setLoading] = useState<boolean>(false);\n const { showSnackbar } = useSnackbar();\n const { history } = useRouter();\n const { getLocales, getCurrentLocale, setCurrentLocale } = useI18N();\n\n const currentLocale = getCurrentLocale();\n const [locale, setLocale] = useState<string>(currentLocale || \"\");\n const [groups, setGroups] = useState<CmsGroupOption[] | null>(null);\n\n const [createContentModelFrom] = useMutation<\n CreateCmsModelFromMutationResponse,\n CreateCmsModelFromMutationVariables\n >(CREATE_CONTENT_MODEL_FROM, {\n onError(error) {\n setLoading(false);\n showSnackbar(error.message);\n },\n update(cache, response) {\n if (!response.data) {\n showSnackbar(`Missing data on Create Content Model From Mutation Response.`);\n return;\n }\n const { data: model, error } = response.data.createContentModelFrom;\n\n if (error) {\n setLoading(false);\n showSnackbar(error.message);\n return;\n }\n\n if (currentLocale !== locale) {\n setCurrentLocale(locale, \"content\");\n window.location.reload();\n return;\n }\n\n addModelToListCache(cache, model);\n addModelToGroupCache(cache, model);\n\n history.push(\"/cms/content-models/\");\n closeModal();\n }\n });\n\n const locales = getLocales().map(({ code }) => {\n return {\n value: code,\n label: code === currentLocale ? \"Current locale\" : code\n };\n });\n\n const { data, loading: groupsLoading } = useQueryLocale<ListMenuCmsGroupsQueryResponse>(\n LIST_MENU_CONTENT_GROUPS_MODELS,\n locale,\n {\n skip: !open || !!groups\n }\n );\n\n useEffect(() => {\n if (!data || groupsLoading) {\n return;\n }\n const contentModelGroups: CmsGroupOption[] = get(\n data,\n \"listContentModelGroups.data\",\n []\n ).map((item: CmsGroup): CmsGroupOption => {\n return {\n value: item.id,\n label: item.name\n };\n });\n setGroups(contentModelGroups);\n }, [data, groupsLoading]);\n\n const selectedGroup = getSelectedGroup(groups, contentModel);\n\n const nameValidator = useCallback((name: string) => {\n const target = (name || \"\").trim();\n if (!target.charAt(0).match(/[a-zA-Z]/)) {\n throw new Error(\"Value is not valid - must not start with a number.\");\n }\n if (target.toLowerCase() === \"id\") {\n throw new Error('Value is not valid - \"id\" is an auto-generated field.');\n }\n for (const ending of disallowedModelIdEndingList) {\n const re = new RegExp(`${ending}$`, \"i\");\n const matched = target.match(re);\n if (matched === null) {\n continue;\n }\n throw new Error(`Model name that ends with \"${ending}\" is not allowed.`);\n }\n return true;\n }, []);\n\n return (\n <UID.Dialog\n open={open}\n onClose={onClose}\n className={narrowDialog}\n data-testid=\"cms-clone-content-model-modal\"\n >\n {(!groups || groupsLoading) && (\n <CircularProgress label={\"Please wait while we load required information.\"} />\n )}\n {open && (\n <Form\n data={{\n group: selectedGroup,\n locale,\n name: contentModel.name\n }}\n onSubmit={data => {\n setLoading(true);\n createContentModelFrom({\n variables: {\n modelId: contentModel.modelId,\n /**\n * We know that data is CmsModel\n */\n data: data as unknown as CmsModel\n }\n });\n }}\n >\n {({ Bind, submit }) => (\n <>\n {loading && <CircularProgress />}\n <UID.DialogTitle>{t`Clone Content Model`}</UID.DialogTitle>\n <UID.DialogContent>\n <Grid className={noPadding}>\n <Cell span={12}>\n <Bind\n name={\"name\"}\n validators={[\n validation.create(\"required,maxLength:100\"),\n nameValidator\n ]}\n >\n <Input\n label={t`Name`}\n description={t`The name of the content model`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"locale\"}\n validators={validation.create(\"required\")}\n afterChange={(value?: string) => {\n if (!value) {\n return;\n }\n setLocale(value);\n setGroups(null);\n }}\n >\n <Select\n description={t`Choose a locale into which you wish to clone the model`}\n label={t`Content model locale`}\n options={locales}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"group\"}\n validators={validation.create(\"required\")}\n >\n <Select\n description={t`Choose a content model group`}\n label={t`Content model group`}\n options={groups || []}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name=\"description\">\n {props => (\n <Input\n {...props}\n rows={4}\n maxLength={200}\n characterCount\n label={t`Description`}\n value={contentModel.description}\n />\n )}\n </Bind>\n </Cell>\n </Grid>\n </UID.DialogContent>\n <UID.DialogActions>\n <ButtonDefault\n onClick={ev => {\n submit(ev);\n }}\n >\n + {t`Clone`}\n </ButtonDefault>\n </UID.DialogActions>\n </>\n )}\n </Form>\n )}\n </UID.Dialog>\n );\n};\n\nexport default CloneContentModelDialog;\n"]}
1
+ {"version":3,"sources":["CloneContentModelDialog.tsx"],"names":["React","useState","useCallback","useEffect","css","get","useRouter","Form","Input","Select","useSnackbar","CircularProgress","validation","useMutation","useQueryLocale","i18n","ButtonDefault","UID","Grid","Cell","addModelToGroupCache","addModelToListCache","useI18N","CREATE_CONTENT_MODEL_FROM","LIST_MENU_CONTENT_GROUPS_MODELS","t","ns","narrowDialog","width","minWidth","noPadding","padding","disallowedModelIdEndingList","getSelectedGroup","groups","model","length","current","group","id","find","g","value","defaultSelected","CloneContentModelDialog","open","onClose","contentModel","closeModal","loading","setLoading","showSnackbar","history","getLocales","getCurrentLocale","setCurrentLocale","currentLocale","locale","setLocale","setGroups","onError","error","message","update","cache","response","data","createContentModelFrom","window","location","reload","push","locales","map","code","label","skip","groupsLoading","contentModelGroups","item","name","selectedGroup","nameValidator","target","trim","charAt","match","Error","toLowerCase","ending","re","RegExp","matched","variables","modelId","Bind","submit","create","props","description","ev"],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useEffect } from \"react\";\nimport { css } from \"emotion\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { Form } from \"@webiny/form\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { validation } from \"@webiny/validation\";\nimport { useMutation, useQueryLocale } from \"../../hooks\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ButtonDefault } from \"@webiny/ui/Button\";\nimport * as UID from \"@webiny/ui/Dialog\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { addModelToGroupCache, addModelToListCache } from \"./cache\";\nimport { CmsEditorContentModel, CmsModel } from \"~/types\";\nimport { useI18N } from \"@webiny/app-i18n/hooks/useI18N\";\nimport {\n CREATE_CONTENT_MODEL_FROM,\n LIST_MENU_CONTENT_GROUPS_MODELS,\n CreateCmsModelFromMutationResponse,\n CreateCmsModelFromMutationVariables,\n ListMenuCmsGroupsQueryResponse\n} from \"../../viewsGraphql\";\nimport { CmsGroup } from \"~/admin/views/contentModelGroups/graphql\";\nimport { CmsGroupOption } from \"~/admin/views/contentModels/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/views/content-models/clone-content-model-dialog\");\n\nconst narrowDialog = css({\n \".mdc-dialog__surface\": {\n width: 600,\n minWidth: 600\n }\n});\n\nconst noPadding = css({\n padding: \"5px !important\"\n});\n\nexport interface Props {\n open: boolean;\n onClose: UID.DialogOnClose;\n contentModel: CmsEditorContentModel;\n closeModal: () => void;\n}\n\n/**\n * This list is to disallow creating models that might interfere with GraphQL schema creation.\n * Add more if required.\n */\nconst disallowedModelIdEndingList: string[] = [\"Response\", \"List\", \"Meta\", \"Input\", \"Sorter\"];\n\nconst getSelectedGroup = (\n groups: CmsGroupOption[] | null,\n model: CmsEditorContentModel\n): string | null => {\n if (!groups || groups.length === 0 || !model) {\n return \"\";\n }\n const current = model.group.id;\n const group = groups.find(g => g.value === current);\n if (group) {\n return group.value;\n }\n const defaultSelected = groups.find(() => true);\n return defaultSelected ? defaultSelected.value : null;\n};\n\nconst CloneContentModelDialog: React.FC<Props> = ({ open, onClose, contentModel, closeModal }) => {\n const [loading, setLoading] = useState<boolean>(false);\n const { showSnackbar } = useSnackbar();\n const { history } = useRouter();\n const { getLocales, getCurrentLocale, setCurrentLocale } = useI18N();\n\n const currentLocale = getCurrentLocale(\"content\");\n const [locale, setLocale] = useState<string>(currentLocale || \"\");\n const [groups, setGroups] = useState<CmsGroupOption[] | null>(null);\n\n const [createContentModelFrom] = useMutation<\n CreateCmsModelFromMutationResponse,\n CreateCmsModelFromMutationVariables\n >(CREATE_CONTENT_MODEL_FROM, {\n onError(error) {\n setLoading(false);\n showSnackbar(error.message);\n },\n update(cache, response) {\n if (!response.data) {\n showSnackbar(`Missing data on Create Content Model From Mutation Response.`);\n return;\n }\n const { data: model, error } = response.data.createContentModelFrom;\n\n if (error) {\n setLoading(false);\n showSnackbar(error.message);\n return;\n }\n\n if (currentLocale !== locale) {\n setCurrentLocale(locale, \"content\");\n window.location.reload();\n return;\n }\n\n addModelToListCache(cache, model);\n addModelToGroupCache(cache, model);\n\n history.push(\"/cms/content-models/\");\n closeModal();\n }\n });\n\n const locales = getLocales().map(({ code }) => {\n return {\n value: code,\n label: code === currentLocale ? \"Current locale\" : code\n };\n });\n\n const { data, loading: groupsLoading } = useQueryLocale<ListMenuCmsGroupsQueryResponse>(\n LIST_MENU_CONTENT_GROUPS_MODELS,\n locale,\n {\n skip: !open || !!groups\n }\n );\n\n useEffect(() => {\n if (!data || groupsLoading) {\n return;\n }\n const contentModelGroups: CmsGroupOption[] = get(\n data,\n \"listContentModelGroups.data\",\n []\n ).map((item: CmsGroup): CmsGroupOption => {\n return {\n value: item.id,\n label: item.name\n };\n });\n setGroups(contentModelGroups);\n }, [data, groupsLoading]);\n\n const selectedGroup = getSelectedGroup(groups, contentModel);\n\n const nameValidator = useCallback((name: string) => {\n const target = (name || \"\").trim();\n if (!target.charAt(0).match(/[a-zA-Z]/)) {\n throw new Error(\"Value is not valid - must not start with a number.\");\n }\n if (target.toLowerCase() === \"id\") {\n throw new Error('Value is not valid - \"id\" is an auto-generated field.');\n }\n for (const ending of disallowedModelIdEndingList) {\n const re = new RegExp(`${ending}$`, \"i\");\n const matched = target.match(re);\n if (matched === null) {\n continue;\n }\n throw new Error(`Model name that ends with \"${ending}\" is not allowed.`);\n }\n return true;\n }, []);\n\n return (\n <UID.Dialog\n open={open}\n onClose={onClose}\n className={narrowDialog}\n data-testid=\"cms-clone-content-model-modal\"\n >\n {(!groups || groupsLoading) && (\n <CircularProgress label={\"Please wait while we load required information.\"} />\n )}\n {open && (\n <Form\n data={{\n group: selectedGroup,\n locale,\n name: contentModel.name\n }}\n onSubmit={data => {\n setLoading(true);\n createContentModelFrom({\n variables: {\n modelId: contentModel.modelId,\n /**\n * We know that data is CmsModel\n */\n data: data as unknown as CmsModel\n }\n });\n }}\n >\n {({ Bind, submit }) => (\n <>\n {loading && <CircularProgress />}\n <UID.DialogTitle>{t`Clone Content Model`}</UID.DialogTitle>\n <UID.DialogContent>\n <Grid className={noPadding}>\n <Cell span={12}>\n <Bind\n name={\"name\"}\n validators={[\n validation.create(\"required,maxLength:100\"),\n nameValidator\n ]}\n >\n <Input\n label={t`Name`}\n description={t`The name of the content model`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"locale\"}\n validators={validation.create(\"required\")}\n afterChange={(value?: string) => {\n if (!value) {\n return;\n }\n setLocale(value);\n setGroups(null);\n }}\n >\n <Select\n description={t`Choose a locale into which you wish to clone the model`}\n label={t`Content model locale`}\n options={locales}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind\n name={\"group\"}\n validators={validation.create(\"required\")}\n >\n <Select\n description={t`Choose a content model group`}\n label={t`Content model group`}\n options={groups || []}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name=\"description\">\n {props => (\n <Input\n {...props}\n rows={4}\n maxLength={200}\n characterCount\n label={t`Description`}\n value={contentModel.description}\n />\n )}\n </Bind>\n </Cell>\n </Grid>\n </UID.DialogContent>\n <UID.DialogActions>\n <ButtonDefault\n onClick={ev => {\n submit(ev);\n }}\n >\n + {t`Clone`}\n </ButtonDefault>\n </UID.DialogActions>\n </>\n )}\n </Form>\n )}\n </UID.Dialog>\n );\n};\n\nexport default CloneContentModelDialog;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-headless-cms",
3
- "version": "5.26.0-beta.1",
3
+ "version": "5.26.1-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,19 +26,19 @@
26
26
  "@fortawesome/react-fontawesome": "0.1.17",
27
27
  "@svgr/webpack": "6.2.1",
28
28
  "@types/react": "16.14.2",
29
- "@webiny/app": "5.26.0-beta.1",
30
- "@webiny/app-admin": "5.26.0-beta.1",
31
- "@webiny/app-graphql-playground": "5.26.0-beta.1",
32
- "@webiny/app-i18n": "5.26.0-beta.1",
33
- "@webiny/app-plugin-admin-welcome-screen": "5.26.0-beta.1",
34
- "@webiny/app-security": "5.26.0-beta.1",
35
- "@webiny/error": "5.26.0-beta.1",
36
- "@webiny/form": "5.26.0-beta.1",
37
- "@webiny/plugins": "5.26.0-beta.1",
38
- "@webiny/react-router": "5.26.0-beta.1",
39
- "@webiny/ui": "5.26.0-beta.1",
40
- "@webiny/utils": "5.26.0-beta.1",
41
- "@webiny/validation": "5.26.0-beta.1",
29
+ "@webiny/app": "5.26.1-beta.0",
30
+ "@webiny/app-admin": "5.26.1-beta.0",
31
+ "@webiny/app-graphql-playground": "5.26.1-beta.0",
32
+ "@webiny/app-i18n": "5.26.1-beta.0",
33
+ "@webiny/app-plugin-admin-welcome-screen": "5.26.1-beta.0",
34
+ "@webiny/app-security": "5.26.1-beta.0",
35
+ "@webiny/error": "5.26.1-beta.0",
36
+ "@webiny/form": "5.26.1-beta.0",
37
+ "@webiny/plugins": "5.26.1-beta.0",
38
+ "@webiny/react-router": "5.26.1-beta.0",
39
+ "@webiny/ui": "5.26.1-beta.0",
40
+ "@webiny/utils": "5.26.1-beta.0",
41
+ "@webiny/validation": "5.26.1-beta.0",
42
42
  "apollo-cache": "1.3.5",
43
43
  "apollo-client": "2.6.10",
44
44
  "apollo-link": "1.2.14",
@@ -73,8 +73,8 @@
73
73
  "@babel/preset-env": "^7.16.4",
74
74
  "@babel/preset-react": "^7.16.0",
75
75
  "@babel/preset-typescript": "^7.16.0",
76
- "@webiny/cli": "^5.26.0-beta.1",
77
- "@webiny/project-utils": "^5.26.0-beta.1",
76
+ "@webiny/cli": "^5.26.1-beta.0",
77
+ "@webiny/project-utils": "^5.26.1-beta.0",
78
78
  "babel-plugin-emotion": "^9.2.8",
79
79
  "babel-plugin-lodash": "^3.3.4",
80
80
  "babel-plugin-module-resolver": "^4.1.0",
@@ -106,5 +106,5 @@
106
106
  ]
107
107
  }
108
108
  },
109
- "gitHead": "ba9a3a3e4b7864a85ecf10a97523391eca63df3b"
109
+ "gitHead": "d85df0d292bfd4ee2422cbb59de18ee8899df076"
110
110
  }