@webiny/app-headless-cms 0.0.0-unstable.8feaff8c32 → 0.0.0-unstable.98511f29f1

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.
@@ -17,6 +17,8 @@ var _emotion = require("emotion");
17
17
  var _validation = require("@webiny/validation");
18
18
  var _hooks = require("../../../hooks");
19
19
  var _form = require("@webiny/form");
20
+ var _Alert = require("@webiny/ui/Alert");
21
+ var _allowCmsLegacyRichTextInput = require("../../../../utils/allowCmsLegacyRichTextInput");
20
22
  var _templateObject, _templateObject2;
21
23
  var t = _i18n.i18n.ns("app-headless-cms/admin/content-model-editor/tabs/appearance-tab");
22
24
  var style = {
@@ -34,13 +36,16 @@ var style = {
34
36
  var AppearanceTab = function AppearanceTab() {
35
37
  var _field$predefinedValu;
36
38
  var form = (0, _form.useForm)();
39
+ var _useModel = (0, _hooks.useModel)(),
40
+ model = _useModel.model;
37
41
  var _useModelField = (0, _hooks.useModelField)(),
38
42
  field = _useModelField.field,
39
43
  fieldPlugin = _useModelField.fieldPlugin;
40
44
  var renderPlugins = _plugins.plugins.byType("cms-editor-field-renderer").filter(function (item) {
41
45
  return item.renderer.canUse({
42
46
  field: field,
43
- fieldPlugin: fieldPlugin
47
+ fieldPlugin: fieldPlugin,
48
+ model: model
44
49
  });
45
50
  });
46
51
  (0, _react.useEffect)(function () {
@@ -63,7 +68,16 @@ var AppearanceTab = function AppearanceTab() {
63
68
  className: style.noComponentsMessage
64
69
  }, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["There are no components that can render this field."])))));
65
70
  }
66
- return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
71
+ return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, _allowCmsLegacyRichTextInput.allowCmsLegacyRichTextInput && /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
72
+ span: 6
73
+ }, /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
74
+ title: "You have legacy editor enabled",
75
+ type: "info"
76
+ }, "Your project has been upgraded from an older Webiny version, with EditorJS as the default rich text editor. We recommend switching to the new Lexical rich text editor, where possible.", /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("br", null), "Read more about this in our", " ", /*#__PURE__*/_react.default.createElement("a", {
77
+ href: "https://webiny.link/hcms-legacy-rte-support",
78
+ rel: "noreferrer",
79
+ target: "_blank"
80
+ }, "upgrade guide"), ".")), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
67
81
  span: 12
68
82
  }, /*#__PURE__*/_react.default.createElement("div", {
69
83
  className: style.topLabel
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_plugins","_Grid","_i18n","_Radio","_Typography","_emotion","_validation","_hooks","_form","_templateObject","_templateObject2","t","i18n","ns","style","topLabel","css","marginBottom","noComponentsMessage","textAlign","padding","radioContainer","AppearanceTab","_field$predefinedValu","form","useForm","_useModelField","useModelField","field","fieldPlugin","renderPlugins","plugins","byType","filter","item","renderer","canUse","useEffect","currentlySelectedRenderAvailable","find","rendererName","name","setValue","console","info","concat","fieldId","id","multipleValues","predefinedValues","enabled","length","default","createElement","Grid","Cell","span","className","_taggedTemplateLiteral2","Bind","validate","validation","create","RadioGroup","_ref","onChange","getValue","Fragment","map","key","Radio","value","label","Typography","use","description","_default","exports"],"sources":["AppearanceTab.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Radio, RadioGroup } from \"@webiny/ui/Radio\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { css } from \"emotion\";\nimport { validation } from \"@webiny/validation\";\nimport { useModelField } from \"~/admin/hooks\";\nimport { useForm, Bind } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/content-model-editor/tabs/appearance-tab\");\n\nconst style = {\n topLabel: css({\n marginBottom: 25\n }),\n noComponentsMessage: css({\n textAlign: \"center\",\n padding: 25\n }),\n radioContainer: css({\n marginBottom: 10\n })\n};\n\nconst AppearanceTab = () => {\n const form = useForm<CmsModelField>();\n const { field, fieldPlugin } = useModelField();\n\n const renderPlugins = plugins\n .byType<CmsEditorFieldRendererPlugin>(\"cms-editor-field-renderer\")\n .filter(item => item.renderer.canUse({ field, fieldPlugin }));\n\n useEffect((): void => {\n // If the currently selected render plugin is no longer available, select the first available one.\n const currentlySelectedRenderAvailable = renderPlugins.find(\n item => item.renderer.rendererName === field.renderer.name\n );\n\n if (currentlySelectedRenderAvailable) {\n return;\n }\n\n if (renderPlugins[0]) {\n form.setValue(\"renderer.name\", renderPlugins[0].renderer.rendererName);\n return;\n }\n\n console.info(`No renderers for field ${field.fieldId} found.`, field);\n }, [field.id, field.multipleValues, field.predefinedValues?.enabled]);\n\n if (renderPlugins.length === 0) {\n return (\n <Grid>\n <Cell\n span={12}\n className={style.noComponentsMessage}\n >{t`There are no components that can render this field.`}</Cell>\n </Grid>\n );\n }\n\n return (\n <Grid>\n <Cell span={12}>\n <div\n className={style.topLabel}\n >{t`Choose a component that will render the field:`}</div>\n <Bind name={\"renderer.name\"} validate={validation.create(\"required\")}>\n <RadioGroup>\n {({ onChange, getValue }) => (\n <React.Fragment>\n {renderPlugins.map(item => (\n <div key={item.name} className={style.radioContainer}>\n <Radio\n value={getValue(item.renderer.rendererName)}\n onChange={onChange(item.renderer.rendererName)}\n label={\n <>\n <div>{item.renderer.name}</div>\n <div>\n <Typography use={\"caption\"}>\n {item.renderer.description}\n </Typography>\n </div>\n </>\n }\n />\n </div>\n ))}\n </React.Fragment>\n )}\n </RadioGroup>\n </Bind>\n </Cell>\n </Grid>\n );\n};\n\nexport default AppearanceTab;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_plugins","_Grid","_i18n","_Radio","_Typography","_emotion","_validation","_hooks","_form","_Alert","_allowCmsLegacyRichTextInput","_templateObject","_templateObject2","t","i18n","ns","style","topLabel","css","marginBottom","noComponentsMessage","textAlign","padding","radioContainer","AppearanceTab","_field$predefinedValu","form","useForm","_useModel","useModel","model","_useModelField","useModelField","field","fieldPlugin","renderPlugins","plugins","byType","filter","item","renderer","canUse","useEffect","currentlySelectedRenderAvailable","find","rendererName","name","setValue","console","info","concat","fieldId","id","multipleValues","predefinedValues","enabled","length","default","createElement","Grid","Cell","span","className","_taggedTemplateLiteral2","allowCmsLegacyRichTextInput","Alert","title","type","href","rel","target","Bind","validate","validation","create","RadioGroup","_ref","onChange","getValue","Fragment","map","key","Radio","value","label","Typography","use","description","_default","exports"],"sources":["AppearanceTab.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { CmsEditorFieldRendererPlugin, CmsModelField } from \"~/types\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Radio, RadioGroup } from \"@webiny/ui/Radio\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { css } from \"emotion\";\nimport { validation } from \"@webiny/validation\";\nimport { useModel, useModelField } from \"~/admin/hooks\";\nimport { useForm, Bind } from \"@webiny/form\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { allowCmsLegacyRichTextInput } from \"~/utils/allowCmsLegacyRichTextInput\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/content-model-editor/tabs/appearance-tab\");\n\nconst style = {\n topLabel: css({\n marginBottom: 25\n }),\n noComponentsMessage: css({\n textAlign: \"center\",\n padding: 25\n }),\n radioContainer: css({\n marginBottom: 10\n })\n};\n\nconst AppearanceTab = () => {\n const form = useForm<CmsModelField>();\n const { model } = useModel();\n const { field, fieldPlugin } = useModelField();\n\n const renderPlugins = plugins\n .byType<CmsEditorFieldRendererPlugin>(\"cms-editor-field-renderer\")\n .filter(item => item.renderer.canUse({ field, fieldPlugin, model }));\n\n useEffect((): void => {\n // If the currently selected render plugin is no longer available, select the first available one.\n const currentlySelectedRenderAvailable = renderPlugins.find(\n item => item.renderer.rendererName === field.renderer.name\n );\n\n if (currentlySelectedRenderAvailable) {\n return;\n }\n\n if (renderPlugins[0]) {\n form.setValue(\"renderer.name\", renderPlugins[0].renderer.rendererName);\n return;\n }\n\n console.info(`No renderers for field ${field.fieldId} found.`, field);\n }, [field.id, field.multipleValues, field.predefinedValues?.enabled]);\n\n if (renderPlugins.length === 0) {\n return (\n <Grid>\n <Cell\n span={12}\n className={style.noComponentsMessage}\n >{t`There are no components that can render this field.`}</Cell>\n </Grid>\n );\n }\n\n return (\n <Grid>\n {allowCmsLegacyRichTextInput && (\n <Cell span={6}>\n <Alert title={\"You have legacy editor enabled\"} type={\"info\"}>\n Your project has been upgraded from an older Webiny version, with EditorJS\n as the default rich text editor. We recommend switching to the new Lexical\n rich text editor, where possible.\n <br />\n <br />\n Read more about this in our{\" \"}\n <a\n href={\"https://webiny.link/hcms-legacy-rte-support\"}\n rel=\"noreferrer\"\n target={\"_blank\"}\n >\n upgrade guide\n </a>\n .\n </Alert>\n </Cell>\n )}\n <Cell span={12}>\n <div\n className={style.topLabel}\n >{t`Choose a component that will render the field:`}</div>\n <Bind name={\"renderer.name\"} validate={validation.create(\"required\")}>\n <RadioGroup>\n {({ onChange, getValue }) => (\n <React.Fragment>\n {renderPlugins.map(item => (\n <div key={item.name} className={style.radioContainer}>\n <Radio\n value={getValue(item.renderer.rendererName)}\n onChange={onChange(item.renderer.rendererName)}\n label={\n <>\n <div>{item.renderer.name}</div>\n <div>\n <Typography use={\"caption\"}>\n {item.renderer.description}\n </Typography>\n </div>\n </>\n }\n />\n </div>\n ))}\n </React.Fragment>\n )}\n </RadioGroup>\n </Bind>\n </Cell>\n </Grid>\n );\n};\n\nexport default AppearanceTab;\n"],"mappings":"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"}
@@ -34,11 +34,14 @@ var FullScreenDialog = /*#__PURE__*/(0, _styled.default)(_Dialog.Dialog, {
34
34
  })("width:100vw;height:100vh;.mdc-dialog__surface{width:100%;max-width:100% !important;max-height:100% !important;.webiny-ui-dialog__content{max-width:100% !important;max-height:100% !important;width:100vw;height:calc(100vh - 155px);overflow:scroll !important;}}");
35
35
  function setupState(field, fieldPlugin, contentModel) {
36
36
  var clonedField = (0, _cloneDeep.default)(field);
37
+ var _useModel = (0, _hooks.useModel)(),
38
+ model = _useModel.model;
37
39
  if (!clonedField.renderer || !clonedField.renderer.name) {
38
40
  var _plugins$byType$filte = _plugins.plugins.byType("cms-editor-field-renderer").filter(function (item) {
39
41
  return item.renderer.canUse({
40
42
  field: field,
41
- fieldPlugin: fieldPlugin
43
+ fieldPlugin: fieldPlugin,
44
+ model: model
42
45
  });
43
46
  }),
44
47
  _plugins$byType$filte2 = (0, _slicedToArray2.default)(_plugins$byType$filte, 1),
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_cloneDeep","_interopRequireDefault","_styled","_Dialog","_form","_Tabs","_i18n","_plugins","_GeneralTab","_AppearanceTab","_PredefinedValues","_ValidatorsList","_Button","_hooks","_ModelFieldProvider","_ValidationsSection","_getValidators","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","t","i18n","namespace","FullScreenDialog","styled","Dialog","label","target","setupState","field","fieldPlugin","contentModel","clonedField","cloneDeep","renderer","name","_plugins$byType$filte","plugins","byType","filter","item","canUse","_plugins$byType$filte2","_slicedToArray2","default","renderPlugin","rendererName","shadowField","isTitleField","titleFieldId","fieldId","EditFieldDialog","props","_useModelField","useModelField","_useModelEditor","useModelEditor","data","setContentModelData","setData","_useState","useState","_useState2","_useState2$","headerTitle","_taggedTemplateLiteral2","fieldTypeLabel","onSubmit","form","prev","_objectSpread2","createElement","preventOutsideDismiss","open","onClose","DialogTitle","Form","_ref","submit","individualValidation","getFieldValidators","hasValidators","validators","length","showValidatorsTab","multipleValues","predefinedValuesTabEnabled","allowPredefinedValues","predefinedValues","enabled","listValidation","getListValidators","ModelFieldProvider","DialogContent","Tabs","Tab","disabled","visible","Fragment","ValidationsSection","fieldKey","title","description","ValidatorsList","DialogActions","ButtonDefault","onClick","ButtonPrimary","_default","exports"],"sources":["EditFieldDialog.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport styled from \"@emotion/styled\";\nimport { Dialog, DialogContent, DialogTitle, DialogActions } from \"~/admin/components/Dialog\";\nimport { Form, FormOnSubmit } from \"@webiny/form\";\nimport { Tabs, Tab } from \"@webiny/ui/Tabs\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n CmsEditorContentModel,\n CmsModelField,\n CmsEditorFieldRendererPlugin,\n CmsEditorFieldTypePlugin\n} from \"~/types\";\nimport { plugins } from \"@webiny/plugins\";\nimport GeneralTab from \"./EditFieldDialog/GeneralTab\";\nimport AppearanceTab from \"./EditFieldDialog/AppearanceTab\";\nimport PredefinedValues from \"./EditFieldDialog/PredefinedValues\";\nimport { ValidatorsList } from \"./EditFieldDialog/ValidatorsList\";\nimport { ButtonDefault, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { useModelField, useModelEditor } from \"~/admin/hooks\";\nimport { ModelFieldProvider } from \"~/admin/components/ModelFieldProvider\";\nimport { ValidationsSection } from \"~/admin/components/FieldEditor/EditFieldDialog/ValidationsSection\";\nimport { getFieldValidators, getListValidators } from \"./EditFieldDialog/getValidators\";\n\nconst t = i18n.namespace(\"app-headless-cms/admin/components/editor\");\n\nconst FullScreenDialog = styled(Dialog)`\n width: 100vw;\n height: 100vh;\n .mdc-dialog__surface {\n width: 100%;\n max-width: 100% !important;\n max-height: 100% !important;\n .webiny-ui-dialog__content {\n max-width: 100% !important;\n max-height: 100% !important;\n width: 100vw;\n height: calc(100vh - 155px);\n overflow: scroll !important;\n }\n }\n`;\n\nfunction setupState(\n field: CmsModelField,\n fieldPlugin: CmsEditorFieldTypePlugin,\n contentModel: CmsEditorContentModel\n): EditFieldState {\n const clonedField = cloneDeep(field);\n\n if (!clonedField.renderer || !clonedField.renderer.name) {\n const [renderPlugin] = plugins\n .byType<CmsEditorFieldRendererPlugin>(\"cms-editor-field-renderer\")\n .filter(item => item.renderer.canUse({ field, fieldPlugin }));\n\n if (renderPlugin) {\n clonedField.renderer = { name: renderPlugin.renderer.rendererName };\n }\n }\n\n return {\n shadowField: clonedField,\n isTitleField: contentModel.titleFieldId === field.fieldId\n };\n}\n\ninterface EditFieldState {\n shadowField: CmsModelField;\n isTitleField: boolean;\n}\n\ninterface EditFieldDialogProps {\n onClose: () => void;\n onSubmit: FormOnSubmit<CmsModelField>;\n}\n\nconst EditFieldDialog: React.FC<EditFieldDialogProps> = props => {\n const { field, fieldPlugin } = useModelField();\n const { data: contentModel, setData: setContentModelData } = useModelEditor();\n const [{ shadowField, isTitleField }] = useState<EditFieldState>(\n setupState(field, fieldPlugin, contentModel)\n );\n\n const headerTitle = t`Field Settings - {fieldTypeLabel}`({\n fieldTypeLabel: fieldPlugin.field.label\n });\n\n const onSubmit: FormOnSubmit<CmsModelField> = (data, form) => {\n /**\n * In case title field `fieldId` changed, we need to update the title field on the model itself.\n */\n if (isTitleField && contentModel.titleFieldId !== data.fieldId) {\n setContentModelData(prev => {\n return {\n ...prev,\n titleFieldId: data.fieldId\n };\n });\n }\n\n props.onSubmit(data, form);\n };\n\n return (\n <FullScreenDialog\n preventOutsideDismiss\n open={true}\n onClose={props.onClose}\n data-testid={\"cms-editor-edit-fields-dialog\"}\n >\n <DialogTitle>{headerTitle}</DialogTitle>\n <Form<CmsModelField> data={shadowField} onSubmit={onSubmit}>\n {({ data: shadowField, submit }) => {\n const individualValidation = getFieldValidators(shadowField, fieldPlugin);\n\n const hasValidators = individualValidation.validators.length > 0;\n\n const showValidatorsTab =\n shadowField.multipleValues || individualValidation.validators.length > 0;\n\n const predefinedValuesTabEnabled =\n fieldPlugin.field.allowPredefinedValues &&\n shadowField.predefinedValues &&\n shadowField.predefinedValues.enabled;\n\n const listValidation = getListValidators(shadowField, fieldPlugin);\n\n return (\n /**\n * We're using the `shadowField` as the new context, because we want all changes by form inputs\n * to immediately be propagated to all dialog components.\n */\n <ModelFieldProvider field={shadowField}>\n <DialogContent>\n <Tabs>\n <Tab label={t`General`}>\n <GeneralTab />\n </Tab>\n <Tab\n label={t`Predefined Values`}\n disabled={!predefinedValuesTabEnabled}\n >\n {predefinedValuesTabEnabled && <PredefinedValues />}\n </Tab>\n\n <Tab\n visible={showValidatorsTab}\n label={\"Validators\"}\n data-testid={\"cms.editor.field.tabs.validators\"}\n >\n {shadowField.multipleValues ? (\n <>\n <ValidationsSection\n validators={listValidation.validators}\n fieldKey={\"listValidators\"}\n title={\n listValidation.title || \"List validators\"\n }\n description={\n listValidation.description ||\n \"These validators are applied to the entire list of values.\"\n }\n />\n\n {hasValidators ? (\n <ValidationsSection\n fieldKey={\"validators\"}\n validators={individualValidation.validators}\n title={\n individualValidation.title ||\n \"Individual value validators\"\n }\n description={\n individualValidation.description ||\n \"These validators are applied to each value in the list.\"\n }\n />\n ) : null}\n </>\n ) : null}\n\n {!shadowField.multipleValues && hasValidators ? (\n <ValidatorsList\n name={\"validation\"}\n validators={individualValidation.validators}\n />\n ) : null}\n </Tab>\n <Tab label={t`Appearance`}>\n <AppearanceTab />\n </Tab>\n </Tabs>\n </DialogContent>\n <DialogActions>\n <ButtonDefault\n data-testid=\"cms.editor.field.settings.cancel\"\n onClick={props.onClose}\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n data-testid=\"cms.editor.field.settings.save\"\n onClick={submit}\n >{t`Save Field`}</ButtonPrimary>\n </DialogActions>\n </ModelFieldProvider>\n );\n }}\n </Form>\n </FullScreenDialog>\n );\n};\n\nexport default EditFieldDialog;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_cloneDeep","_interopRequireDefault","_styled","_Dialog","_form","_Tabs","_i18n","_plugins","_GeneralTab","_AppearanceTab","_PredefinedValues","_ValidatorsList","_Button","_hooks","_ModelFieldProvider","_ValidationsSection","_getValidators","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","t","i18n","namespace","FullScreenDialog","styled","Dialog","label","target","setupState","field","fieldPlugin","contentModel","clonedField","cloneDeep","_useModel","useModel","model","renderer","name","_plugins$byType$filte","plugins","byType","filter","item","canUse","_plugins$byType$filte2","_slicedToArray2","default","renderPlugin","rendererName","shadowField","isTitleField","titleFieldId","fieldId","EditFieldDialog","props","_useModelField","useModelField","_useModelEditor","useModelEditor","data","setContentModelData","setData","_useState","useState","_useState2","_useState2$","headerTitle","_taggedTemplateLiteral2","fieldTypeLabel","onSubmit","form","prev","_objectSpread2","createElement","preventOutsideDismiss","open","onClose","DialogTitle","Form","_ref","submit","individualValidation","getFieldValidators","hasValidators","validators","length","showValidatorsTab","multipleValues","predefinedValuesTabEnabled","allowPredefinedValues","predefinedValues","enabled","listValidation","getListValidators","ModelFieldProvider","DialogContent","Tabs","Tab","disabled","visible","Fragment","ValidationsSection","fieldKey","title","description","ValidatorsList","DialogActions","ButtonDefault","onClick","ButtonPrimary","_default","exports"],"sources":["EditFieldDialog.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport styled from \"@emotion/styled\";\nimport { Dialog, DialogContent, DialogTitle, DialogActions } from \"~/admin/components/Dialog\";\nimport { Form, FormOnSubmit } from \"@webiny/form\";\nimport { Tabs, Tab } from \"@webiny/ui/Tabs\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n CmsEditorContentModel,\n CmsModelField,\n CmsEditorFieldRendererPlugin,\n CmsEditorFieldTypePlugin\n} from \"~/types\";\nimport { plugins } from \"@webiny/plugins\";\nimport GeneralTab from \"./EditFieldDialog/GeneralTab\";\nimport AppearanceTab from \"./EditFieldDialog/AppearanceTab\";\nimport PredefinedValues from \"./EditFieldDialog/PredefinedValues\";\nimport { ValidatorsList } from \"./EditFieldDialog/ValidatorsList\";\nimport { ButtonDefault, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { useModelField, useModelEditor, useModel } from \"~/admin/hooks\";\nimport { ModelFieldProvider } from \"~/admin/components/ModelFieldProvider\";\nimport { ValidationsSection } from \"~/admin/components/FieldEditor/EditFieldDialog/ValidationsSection\";\nimport { getFieldValidators, getListValidators } from \"./EditFieldDialog/getValidators\";\n\nconst t = i18n.namespace(\"app-headless-cms/admin/components/editor\");\n\nconst FullScreenDialog = styled(Dialog)`\n width: 100vw;\n height: 100vh;\n .mdc-dialog__surface {\n width: 100%;\n max-width: 100% !important;\n max-height: 100% !important;\n .webiny-ui-dialog__content {\n max-width: 100% !important;\n max-height: 100% !important;\n width: 100vw;\n height: calc(100vh - 155px);\n overflow: scroll !important;\n }\n }\n`;\n\nfunction setupState(\n field: CmsModelField,\n fieldPlugin: CmsEditorFieldTypePlugin,\n contentModel: CmsEditorContentModel\n): EditFieldState {\n const clonedField = cloneDeep(field);\n const { model } = useModel();\n\n if (!clonedField.renderer || !clonedField.renderer.name) {\n const [renderPlugin] = plugins\n .byType<CmsEditorFieldRendererPlugin>(\"cms-editor-field-renderer\")\n .filter(item => item.renderer.canUse({ field, fieldPlugin, model }));\n\n if (renderPlugin) {\n clonedField.renderer = { name: renderPlugin.renderer.rendererName };\n }\n }\n\n return {\n shadowField: clonedField,\n isTitleField: contentModel.titleFieldId === field.fieldId\n };\n}\n\ninterface EditFieldState {\n shadowField: CmsModelField;\n isTitleField: boolean;\n}\n\ninterface EditFieldDialogProps {\n onClose: () => void;\n onSubmit: FormOnSubmit<CmsModelField>;\n}\n\nconst EditFieldDialog: React.FC<EditFieldDialogProps> = props => {\n const { field, fieldPlugin } = useModelField();\n const { data: contentModel, setData: setContentModelData } = useModelEditor();\n const [{ shadowField, isTitleField }] = useState<EditFieldState>(\n setupState(field, fieldPlugin, contentModel)\n );\n\n const headerTitle = t`Field Settings - {fieldTypeLabel}`({\n fieldTypeLabel: fieldPlugin.field.label\n });\n\n const onSubmit: FormOnSubmit<CmsModelField> = (data, form) => {\n /**\n * In case title field `fieldId` changed, we need to update the title field on the model itself.\n */\n if (isTitleField && contentModel.titleFieldId !== data.fieldId) {\n setContentModelData(prev => {\n return {\n ...prev,\n titleFieldId: data.fieldId\n };\n });\n }\n\n props.onSubmit(data, form);\n };\n\n return (\n <FullScreenDialog\n preventOutsideDismiss\n open={true}\n onClose={props.onClose}\n data-testid={\"cms-editor-edit-fields-dialog\"}\n >\n <DialogTitle>{headerTitle}</DialogTitle>\n <Form<CmsModelField> data={shadowField} onSubmit={onSubmit}>\n {({ data: shadowField, submit }) => {\n const individualValidation = getFieldValidators(shadowField, fieldPlugin);\n\n const hasValidators = individualValidation.validators.length > 0;\n\n const showValidatorsTab =\n shadowField.multipleValues || individualValidation.validators.length > 0;\n\n const predefinedValuesTabEnabled =\n fieldPlugin.field.allowPredefinedValues &&\n shadowField.predefinedValues &&\n shadowField.predefinedValues.enabled;\n\n const listValidation = getListValidators(shadowField, fieldPlugin);\n\n return (\n /**\n * We're using the `shadowField` as the new context, because we want all changes by form inputs\n * to immediately be propagated to all dialog components.\n */\n <ModelFieldProvider field={shadowField}>\n <DialogContent>\n <Tabs>\n <Tab label={t`General`}>\n <GeneralTab />\n </Tab>\n <Tab\n label={t`Predefined Values`}\n disabled={!predefinedValuesTabEnabled}\n >\n {predefinedValuesTabEnabled && <PredefinedValues />}\n </Tab>\n\n <Tab\n visible={showValidatorsTab}\n label={\"Validators\"}\n data-testid={\"cms.editor.field.tabs.validators\"}\n >\n {shadowField.multipleValues ? (\n <>\n <ValidationsSection\n validators={listValidation.validators}\n fieldKey={\"listValidators\"}\n title={\n listValidation.title || \"List validators\"\n }\n description={\n listValidation.description ||\n \"These validators are applied to the entire list of values.\"\n }\n />\n\n {hasValidators ? (\n <ValidationsSection\n fieldKey={\"validators\"}\n validators={individualValidation.validators}\n title={\n individualValidation.title ||\n \"Individual value validators\"\n }\n description={\n individualValidation.description ||\n \"These validators are applied to each value in the list.\"\n }\n />\n ) : null}\n </>\n ) : null}\n\n {!shadowField.multipleValues && hasValidators ? (\n <ValidatorsList\n name={\"validation\"}\n validators={individualValidation.validators}\n />\n ) : null}\n </Tab>\n <Tab label={t`Appearance`}>\n <AppearanceTab />\n </Tab>\n </Tabs>\n </DialogContent>\n <DialogActions>\n <ButtonDefault\n data-testid=\"cms.editor.field.settings.cancel\"\n onClick={props.onClose}\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n data-testid=\"cms.editor.field.settings.save\"\n onClick={submit}\n >{t`Save Field`}</ButtonPrimary>\n </DialogActions>\n </ModelFieldProvider>\n );\n }}\n </Form>\n </FullScreenDialog>\n );\n};\n\nexport default EditFieldDialog;\n"],"mappings":"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"}
@@ -10,6 +10,7 @@ var _react = _interopRequireDefault(require("react"));
10
10
  var _get = _interopRequireDefault(require("lodash/get"));
11
11
  var _i18n = require("@webiny/app/i18n");
12
12
  var _LexicalCmsEditor = require("../../../components/LexicalCmsEditor/LexicalCmsEditor");
13
+ var _utils = require("../richText/utils");
13
14
  var _templateObject, _templateObject2;
14
15
  var t = _i18n.i18n.ns("app-headless-cms/admin/fields/rich-text");
15
16
  var getKey = function getKey(field, bind) {
@@ -24,8 +25,13 @@ var plugin = {
24
25
  name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Lexical Text Input"]))),
25
26
  description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders a lexical text editor."]))),
26
27
  canUse: function canUse(_ref) {
27
- var field = _ref.field;
28
- return field.type === "rich-text" && !field.multipleValues && !(0, _get.default)(field, "predefinedValues.enabled");
28
+ var field = _ref.field,
29
+ model = _ref.model;
30
+ var canUse = field.type === "rich-text" && !field.multipleValues && !(0, _get.default)(field, "predefinedValues.enabled");
31
+ if (canUse && (0, _utils.modelHasLegacyRteField)(model)) {
32
+ return false;
33
+ }
34
+ return canUse;
29
35
  },
30
36
  render: function render(_ref2) {
31
37
  var field = _ref2.field,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_get","_i18n","_LexicalCmsEditor","_templateObject","_templateObject2","t","i18n","ns","getKey","field","bind","formId","form","data","id","concat","fieldId","plugin","type","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","multipleValues","get","render","_ref2","getBind","Bind","createElement","LexicalCmsEditor","value","onChange","key","placeholder","placeholderText","label","_default","exports"],"sources":["lexicalTextInput.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorContentEntry, CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { LexicalCmsEditor } from \"~/admin/components/LexicalCmsEditor/LexicalCmsEditor\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsModelField,\n bind: BindComponentRenderProp<string, CmsEditorContentEntry>\n): string => {\n const formId = bind.form.data.id || \"new\";\n return `${formId}.${field.fieldId}`;\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-lexical\",\n renderer: {\n rendererName: \"lexical-text-input\",\n name: t`Lexical Text Input`,\n description: t`Renders a lexical text editor.`,\n canUse({ field }) {\n return (\n field.type === \"rich-text\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ field, getBind }) {\n const Bind = getBind();\n return (\n <Bind>\n {bind => {\n return (\n <LexicalCmsEditor\n value={bind.value}\n onChange={bind.onChange}\n key={getKey(field, bind as any)}\n placeholder={field.placeholderText}\n data-testid={`fr.input.lexical.${field.label}`}\n />\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAGA,IAAAG,iBAAA,GAAAH,OAAA;AAAwF,IAAAI,eAAA,EAAAC,gBAAA;AAExF,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,yCAAyC,CAAC;AAE5D,IAAMC,MAAM,GAAG,SAATA,MAAMA,CACRC,KAAoB,EACpBC,IAA4D,EACnD;EACT,IAAMC,MAAM,GAAGD,IAAI,CAACE,IAAI,CAACC,IAAI,CAACC,EAAE,IAAI,KAAK;EACzC,UAAAC,MAAA,CAAUJ,MAAM,OAAAI,MAAA,CAAIN,KAAK,CAACO,OAAO;AACrC,CAAC;AAED,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,mCAAmC;EACzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,oBAAoB;IAClCF,IAAI,EAAEd,CAAC,CAAAF,eAAA,KAAAA,eAAA,OAAAmB,uBAAA,CAAAC,OAAA,2BAAoB;IAC3BC,WAAW,EAAEnB,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAkB,uBAAA,CAAAC,OAAA,uCAAgC;IAC9CE,MAAM,WAAAA,OAAAC,IAAA,EAAY;MAAA,IAATjB,KAAK,GAAAiB,IAAA,CAALjB,KAAK;MACV,OACIA,KAAK,CAACS,IAAI,KAAK,WAAW,IAC1B,CAACT,KAAK,CAACkB,cAAc,IACrB,CAAC,IAAAC,YAAG,EAACnB,KAAK,EAAE,0BAA0B,CAAC;IAE/C,CAAC;IACDoB,MAAM,WAAAA,OAAAC,KAAA,EAAqB;MAAA,IAAlBrB,KAAK,GAAAqB,KAAA,CAALrB,KAAK;QAAEsB,OAAO,GAAAD,KAAA,CAAPC,OAAO;MACnB,IAAMC,IAAI,GAAGD,OAAO,CAAC,CAAC;MACtB,oBACIlC,MAAA,CAAA0B,OAAA,CAAAU,aAAA,CAACD,IAAI,QACA,UAAAtB,IAAI,EAAI;QACL,oBACIb,MAAA,CAAA0B,OAAA,CAAAU,aAAA,CAAC/B,iBAAA,CAAAgC,gBAAgB;UACbC,KAAK,EAAEzB,IAAI,CAACyB,KAAM;UAClBC,QAAQ,EAAE1B,IAAI,CAAC0B,QAAS;UACxBC,GAAG,EAAE7B,MAAM,CAACC,KAAK,EAAEC,IAAW,CAAE;UAChC4B,WAAW,EAAE7B,KAAK,CAAC8B,eAAgB;UACnC,mCAAAxB,MAAA,CAAiCN,KAAK,CAAC+B,KAAK;QAAG,CAClD,CAAC;MAEV,CACE,CAAC;IAEf;EACJ;AACJ,CAAC;AAAC,IAAAC,QAAA,GAEaxB,MAAM;AAAAyB,OAAA,CAAAnB,OAAA,GAAAkB,QAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_get","_i18n","_LexicalCmsEditor","_utils","_templateObject","_templateObject2","t","i18n","ns","getKey","field","bind","formId","form","data","id","concat","fieldId","plugin","type","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","model","multipleValues","get","modelHasLegacyRteField","render","_ref2","getBind","Bind","createElement","LexicalCmsEditor","value","onChange","key","placeholder","placeholderText","label","_default","exports"],"sources":["lexicalTextInput.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorContentEntry, CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { LexicalCmsEditor } from \"~/admin/components/LexicalCmsEditor/LexicalCmsEditor\";\nimport { modelHasLegacyRteField } from \"~/admin/plugins/fieldRenderers/richText/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsModelField,\n bind: BindComponentRenderProp<string, CmsEditorContentEntry>\n): string => {\n const formId = bind.form.data.id || \"new\";\n return `${formId}.${field.fieldId}`;\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-lexical\",\n renderer: {\n rendererName: \"lexical-text-input\",\n name: t`Lexical Text Input`,\n description: t`Renders a lexical text editor.`,\n canUse({ field, model }) {\n const canUse =\n field.type === \"rich-text\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\");\n\n if (canUse && modelHasLegacyRteField(model)) {\n return false;\n }\n\n return canUse;\n },\n render({ field, getBind }) {\n const Bind = getBind();\n return (\n <Bind>\n {bind => {\n return (\n <LexicalCmsEditor\n value={bind.value}\n onChange={bind.onChange}\n key={getKey(field, bind as any)}\n placeholder={field.placeholderText}\n data-testid={`fr.input.lexical.${field.label}`}\n />\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAGA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAAuF,IAAAK,eAAA,EAAAC,gBAAA;AAEvF,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,yCAAyC,CAAC;AAE5D,IAAMC,MAAM,GAAG,SAATA,MAAMA,CACRC,KAAoB,EACpBC,IAA4D,EACnD;EACT,IAAMC,MAAM,GAAGD,IAAI,CAACE,IAAI,CAACC,IAAI,CAACC,EAAE,IAAI,KAAK;EACzC,UAAAC,MAAA,CAAUJ,MAAM,OAAAI,MAAA,CAAIN,KAAK,CAACO,OAAO;AACrC,CAAC;AAED,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,mCAAmC;EACzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,oBAAoB;IAClCF,IAAI,EAAEd,CAAC,CAAAF,eAAA,KAAAA,eAAA,OAAAmB,uBAAA,CAAAC,OAAA,2BAAoB;IAC3BC,WAAW,EAAEnB,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAkB,uBAAA,CAAAC,OAAA,uCAAgC;IAC9CE,MAAM,WAAAA,OAAAC,IAAA,EAAmB;MAAA,IAAhBjB,KAAK,GAAAiB,IAAA,CAALjB,KAAK;QAAEkB,KAAK,GAAAD,IAAA,CAALC,KAAK;MACjB,IAAMF,MAAM,GACRhB,KAAK,CAACS,IAAI,KAAK,WAAW,IAC1B,CAACT,KAAK,CAACmB,cAAc,IACrB,CAAC,IAAAC,YAAG,EAACpB,KAAK,EAAE,0BAA0B,CAAC;MAE3C,IAAIgB,MAAM,IAAI,IAAAK,6BAAsB,EAACH,KAAK,CAAC,EAAE;QACzC,OAAO,KAAK;MAChB;MAEA,OAAOF,MAAM;IACjB,CAAC;IACDM,MAAM,WAAAA,OAAAC,KAAA,EAAqB;MAAA,IAAlBvB,KAAK,GAAAuB,KAAA,CAALvB,KAAK;QAAEwB,OAAO,GAAAD,KAAA,CAAPC,OAAO;MACnB,IAAMC,IAAI,GAAGD,OAAO,CAAC,CAAC;MACtB,oBACIrC,MAAA,CAAA2B,OAAA,CAAAY,aAAA,CAACD,IAAI,QACA,UAAAxB,IAAI,EAAI;QACL,oBACId,MAAA,CAAA2B,OAAA,CAAAY,aAAA,CAAClC,iBAAA,CAAAmC,gBAAgB;UACbC,KAAK,EAAE3B,IAAI,CAAC2B,KAAM;UAClBC,QAAQ,EAAE5B,IAAI,CAAC4B,QAAS;UACxBC,GAAG,EAAE/B,MAAM,CAACC,KAAK,EAAEC,IAAW,CAAE;UAChC8B,WAAW,EAAE/B,KAAK,CAACgC,eAAgB;UACnC,mCAAA1B,MAAA,CAAiCN,KAAK,CAACiC,KAAK;QAAG,CAClD,CAAC;MAEV,CACE,CAAC;IAEf;EACJ;AACJ,CAAC;AAAC,IAAAC,QAAA,GAEa1B,MAAM;AAAA2B,OAAA,CAAArB,OAAA,GAAAoB,QAAA"}
@@ -14,6 +14,7 @@ var _DynamicSection = _interopRequireDefault(require("../DynamicSection"));
14
14
  var _Button = require("@webiny/ui/Button");
15
15
  var _styled = _interopRequireDefault(require("@emotion/styled"));
16
16
  var _LexicalCmsEditor = require("../../../components/LexicalCmsEditor/LexicalCmsEditor");
17
+ var _utils = require("../richText/utils");
17
18
  var _templateObject, _templateObject2;
18
19
  var t = _i18n.i18n.ns("app-headless-cms/admin/fields/rich-text");
19
20
  var getKey = function getKey(field, bind, index) {
@@ -37,12 +38,17 @@ var plugin = {
37
38
  type: "cms-editor-field-renderer",
38
39
  name: "cms-editor-field-renderer-lexical-inputs",
39
40
  renderer: {
40
- rendererName: "lexical-inputs",
41
- name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Lexical Inputs"]))),
41
+ rendererName: "lexical-text-inputs",
42
+ name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Lexical Text Inputs"]))),
42
43
  description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders a list of lexical editors."]))),
43
44
  canUse: function canUse(_ref) {
44
- var field = _ref.field;
45
- return field.type === "rich-text" && !!field.multipleValues && !(0, _get.default)(field, "predefinedValues.enabled");
45
+ var field = _ref.field,
46
+ model = _ref.model;
47
+ var canUse = field.type === "rich-text" && !!field.multipleValues && !(0, _get.default)(field, "predefinedValues.enabled");
48
+ if (canUse && (0, _utils.modelHasLegacyRteField)(model)) {
49
+ return false;
50
+ }
51
+ return canUse;
46
52
  },
47
53
  render: function render(props) {
48
54
  var field = props.field;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_get","_i18n","_close","_DynamicSection","_Button","_styled","_LexicalCmsEditor","_templateObject","_templateObject2","t","i18n","ns","getKey","field","bind","index","_bind$index$form","_bind$index$form$data","formId","form","data","id","concat","fieldId","EditorWrapper","styled","target","label","position","top","right","zIndex","plugin","type","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","multipleValues","get","render","props","createElement","_ref2","LexicalCmsEditor","value","onChange","key","placeholder","placeholderText","IconButton","icon","ReactComponent","onClick","removeValue","_default","exports"],"sources":["lexicalTextInputs.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport DynamicSection, { DynamicSectionPropsChildrenParams } from \"../DynamicSection\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport styled from \"@emotion/styled\";\nimport { LexicalCmsEditor } from \"~/admin/components/LexicalCmsEditor/LexicalCmsEditor\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsModelField,\n bind: DynamicSectionPropsChildrenParams[\"bind\"],\n index: number\n): string => {\n const formId = bind.index.form?.data?.id || \"new\";\n return `${formId}.${field.fieldId}.${index}`;\n};\n\nconst EditorWrapper = styled(\"div\")({\n position: \"relative\",\n \"> button\": {\n position: \"absolute\",\n top: 0,\n right: 5,\n zIndex: 10\n }\n});\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-lexical-inputs\",\n renderer: {\n rendererName: \"lexical-inputs\",\n name: t`Lexical Inputs`,\n description: t`Renders a list of lexical editors.`,\n canUse({ field }) {\n return (\n field.type === \"rich-text\" &&\n !!field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render(props) {\n const { field } = props;\n return (\n <DynamicSection {...props}>\n {({ bind, index }) => (\n <EditorWrapper>\n <LexicalCmsEditor\n value={bind.index.value}\n onChange={bind.index.onChange}\n key={getKey(field, bind, index)}\n placeholder={field.placeholderText}\n />\n {index > 0 && (\n <IconButton\n icon={<DeleteIcon />}\n onClick={() => bind.field.removeValue(index)}\n />\n )}\n </EditorWrapper>\n )}\n </DynamicSection>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_get","_i18n","_close","_DynamicSection","_Button","_styled","_LexicalCmsEditor","_utils","_templateObject","_templateObject2","t","i18n","ns","getKey","field","bind","index","_bind$index$form","_bind$index$form$data","formId","form","data","id","concat","fieldId","EditorWrapper","styled","target","label","position","top","right","zIndex","plugin","type","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","model","multipleValues","get","modelHasLegacyRteField","render","props","createElement","_ref2","LexicalCmsEditor","value","onChange","key","placeholder","placeholderText","IconButton","icon","ReactComponent","onClick","removeValue","_default","exports"],"sources":["lexicalTextInputs.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport DynamicSection, { DynamicSectionPropsChildrenParams } from \"../DynamicSection\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport styled from \"@emotion/styled\";\nimport { LexicalCmsEditor } from \"~/admin/components/LexicalCmsEditor/LexicalCmsEditor\";\nimport { modelHasLegacyRteField } from \"~/admin/plugins/fieldRenderers/richText/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsModelField,\n bind: DynamicSectionPropsChildrenParams[\"bind\"],\n index: number\n): string => {\n const formId = bind.index.form?.data?.id || \"new\";\n return `${formId}.${field.fieldId}.${index}`;\n};\n\nconst EditorWrapper = styled(\"div\")({\n position: \"relative\",\n \"> button\": {\n position: \"absolute\",\n top: 0,\n right: 5,\n zIndex: 10\n }\n});\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-lexical-inputs\",\n renderer: {\n rendererName: \"lexical-text-inputs\",\n name: t`Lexical Text Inputs`,\n description: t`Renders a list of lexical editors.`,\n canUse({ field, model }) {\n const canUse =\n field.type === \"rich-text\" &&\n !!field.multipleValues &&\n !get(field, \"predefinedValues.enabled\");\n\n if (canUse && modelHasLegacyRteField(model)) {\n return false;\n }\n\n return canUse;\n },\n render(props) {\n const { field } = props;\n return (\n <DynamicSection {...props}>\n {({ bind, index }) => (\n <EditorWrapper>\n <LexicalCmsEditor\n value={bind.index.value}\n onChange={bind.index.onChange}\n key={getKey(field, bind, index)}\n placeholder={field.placeholderText}\n />\n {index > 0 && (\n <IconButton\n icon={<DeleteIcon />}\n onClick={() => bind.field.removeValue(index)}\n />\n )}\n </EditorWrapper>\n )}\n </DynamicSection>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { CmsModel } from "@webiny/app-headless-cms-common/types";
2
+ export declare const modelHasLexicalField: (model: CmsModel) => boolean;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.modelHasLexicalField = void 0;
7
+ var modelHasLexicalField = function modelHasLexicalField(model) {
8
+ return model.fields.some(function (field) {
9
+ return field.renderer.name.startsWith("lexical-");
10
+ });
11
+ };
12
+ exports.modelHasLexicalField = modelHasLexicalField;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["modelHasLexicalField","model","fields","some","field","renderer","name","startsWith","exports"],"sources":["utils.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/app-headless-cms-common/types\";\n\nexport const modelHasLexicalField = (model: CmsModel): boolean => {\n return model.fields.some(field => field.renderer.name.startsWith(\"lexical-\"));\n};\n"],"mappings":";;;;;;AAEO,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,KAAe,EAAc;EAC9D,OAAOA,KAAK,CAACC,MAAM,CAACC,IAAI,CAAC,UAAAC,KAAK;IAAA,OAAIA,KAAK,CAACC,QAAQ,CAACC,IAAI,CAACC,UAAU,CAAC,UAAU,CAAC;EAAA,EAAC;AACjF,CAAC;AAACC,OAAA,CAAAR,oBAAA,GAAAA,oBAAA"}
@@ -7,8 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.createLegacyRichTextInput = void 0;
8
8
  var _richTextInput = _interopRequireDefault(require("./richTextInput"));
9
9
  var _richTextInputs = _interopRequireDefault(require("./richTextInputs"));
10
- var _allowCmsLegacyRichTextInput = require("../../../../utils/allowCmsLegacyRichTextInput");
11
10
  var createLegacyRichTextInput = function createLegacyRichTextInput() {
12
- return _allowCmsLegacyRichTextInput.allowCmsLegacyRichTextInput ? [_richTextInput.default, _richTextInputs.default] : [];
11
+ return [_richTextInput.default, _richTextInputs.default];
13
12
  };
14
13
  exports.createLegacyRichTextInput = createLegacyRichTextInput;
@@ -1 +1 @@
1
- {"version":3,"names":["_richTextInput","_interopRequireDefault","require","_richTextInputs","_allowCmsLegacyRichTextInput","createLegacyRichTextInput","allowCmsLegacyRichTextInput","richTextInput","richTextInputs","exports"],"sources":["index.ts"],"sourcesContent":["import richTextInput from \"./richTextInput\";\nimport richTextInputs from \"./richTextInputs\";\nimport { allowCmsLegacyRichTextInput } from \"~/utils/allowCmsLegacyRichTextInput\";\n\nexport const createLegacyRichTextInput = () => {\n return allowCmsLegacyRichTextInput ? [richTextInput, richTextInputs] : [];\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,4BAAA,GAAAF,OAAA;AAEO,IAAMG,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAA,EAAS;EAC3C,OAAOC,wDAA2B,GAAG,CAACC,sBAAa,EAAEC,uBAAc,CAAC,GAAG,EAAE;AAC7E,CAAC;AAACC,OAAA,CAAAJ,yBAAA,GAAAA,yBAAA"}
1
+ {"version":3,"names":["_richTextInput","_interopRequireDefault","require","_richTextInputs","createLegacyRichTextInput","richTextInput","richTextInputs","exports"],"sources":["index.ts"],"sourcesContent":["import richTextInput from \"./richTextInput\";\nimport richTextInputs from \"./richTextInputs\";\n\nexport const createLegacyRichTextInput = () => {\n return [richTextInput, richTextInputs];\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEO,IAAME,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAA,EAAS;EAC3C,OAAO,CAACC,sBAAa,EAAEC,uBAAc,CAAC;AAC1C,CAAC;AAACC,OAAA,CAAAH,yBAAA,GAAAA,yBAAA"}
@@ -12,6 +12,9 @@ var _get = _interopRequireDefault(require("lodash/get"));
12
12
  var _i18n = require("@webiny/app/i18n");
13
13
  var _RichTextEditor = require("@webiny/app-admin/components/RichTextEditor");
14
14
  var _plugins = require("@webiny/plugins");
15
+ var _allowCmsLegacyRichTextInput = require("../../../../utils/allowCmsLegacyRichTextInput");
16
+ var _utils = require("../lexicalText/utils");
17
+ var _utils2 = require("./utils");
15
18
  var _templateObject, _templateObject2;
16
19
  var t = _i18n.i18n.ns("app-headless-cms/admin/fields/rich-text");
17
20
  var getKey = function getKey(field, bind) {
@@ -23,11 +26,26 @@ var plugin = {
23
26
  name: "cms-editor-field-renderer-rich-text",
24
27
  renderer: {
25
28
  rendererName: "rich-text-input",
26
- name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Rich Text Input"]))),
27
- description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders a rich text editor."]))),
29
+ name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["(Legacy) EditorJS Text Input"]))),
30
+ description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders the legacy rich text editor."]))),
28
31
  canUse: function canUse(_ref) {
29
- var field = _ref.field;
30
- return field.type === "rich-text" && !field.multipleValues && !(0, _get.default)(field, "predefinedValues.enabled");
32
+ var field = _ref.field,
33
+ model = _ref.model;
34
+ var canUse = field.type === "rich-text" && !field.multipleValues && !(0, _get.default)(field, "predefinedValues.enabled");
35
+ if (canUse) {
36
+ // Check for legacy RTE usage for saved and new field
37
+ if ((0, _utils.modelHasLexicalField)(model)) {
38
+ return false;
39
+ }
40
+ if (!_allowCmsLegacyRichTextInput.allowCmsLegacyRichTextInput) {
41
+ if ((0, _utils2.isLegacyRteFieldSaved)(field) || (0, _utils2.modelHasLegacyRteField)(model)) {
42
+ return true;
43
+ }
44
+ // When feature flag is disabled by default and legacy RTE will not be used
45
+ return false;
46
+ }
47
+ }
48
+ return canUse;
31
49
  },
32
50
  render: function render(_ref2) {
33
51
  var field = _ref2.field,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_get","_interopRequireDefault","_i18n","_RichTextEditor","_plugins","_templateObject","_templateObject2","t","i18n","ns","getKey","field","bind","formId","form","data","id","concat","fieldId","plugin","type","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","multipleValues","get","render","_ref2","getBind","Bind","rteProps","useMemo","createPropsFromConfig","plugins","byType","map","pl","config","createElement","RichTextEditor","Object","assign","key","onChange","label","placeholder","placeholderText","helpText","_default","exports"],"sources":["richTextInput.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsContentEntry, CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { createPropsFromConfig, RichTextEditor } from \"@webiny/app-admin/components/RichTextEditor\";\nimport { plugins } from \"@webiny/plugins\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsModelField,\n bind: BindComponentRenderProp<string, CmsContentEntry>\n): string => {\n const formId = bind.form.data.id || \"new\";\n return `${formId}.${field.fieldId}`;\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-rich-text\",\n renderer: {\n rendererName: \"rich-text-input\",\n name: t`Rich Text Input`,\n description: t`Renders a rich text editor.`,\n canUse({ field }) {\n return (\n field.type === \"rich-text\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n const rteProps = useMemo(() => {\n /**\n * TODO @ts-refactor\n * Missing cms-rte-config plugin type.\n */\n // @ts-ignore\n return createPropsFromConfig(plugins.byType(\"cms-rte-config\").map(pl => pl.config));\n }, []);\n\n return (\n <Bind>\n {bind => {\n return (\n <RichTextEditor\n key={getKey(field, bind as any)}\n {...rteProps}\n {...bind}\n onChange={bind.onChange}\n label={field.label}\n placeholder={field.placeholderText}\n description={field.helpText}\n data-testid={`fr.input.richtext.${field.label}`}\n />\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAA0C,IAAAM,eAAA,EAAAC,gBAAA;AAG1C,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,yCAAyC,CAAC;AAE5D,IAAMC,MAAM,GAAG,SAATA,MAAMA,CACRC,KAAoB,EACpBC,IAAsD,EAC7C;EACT,IAAMC,MAAM,GAAGD,IAAI,CAACE,IAAI,CAACC,IAAI,CAACC,EAAE,IAAI,KAAK;EACzC,UAAAC,MAAA,CAAUJ,MAAM,OAAAI,MAAA,CAAIN,KAAK,CAACO,OAAO;AACrC,CAAC;AAED,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,qCAAqC;EAC3CC,QAAQ,EAAE;IACNC,YAAY,EAAE,iBAAiB;IAC/BF,IAAI,EAAEd,CAAC,CAAAF,eAAA,KAAAA,eAAA,OAAAmB,uBAAA,CAAAC,OAAA,wBAAiB;IACxBC,WAAW,EAAEnB,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAkB,uBAAA,CAAAC,OAAA,oCAA6B;IAC3CE,MAAM,WAAAA,OAAAC,IAAA,EAAY;MAAA,IAATjB,KAAK,GAAAiB,IAAA,CAALjB,KAAK;MACV,OACIA,KAAK,CAACS,IAAI,KAAK,WAAW,IAC1B,CAACT,KAAK,CAACkB,cAAc,IACrB,CAAC,IAAAC,YAAG,EAACnB,KAAK,EAAE,0BAA0B,CAAC;IAE/C,CAAC;IACDoB,MAAM,WAAAA,OAAAC,KAAA,EAAqB;MAAA,IAAlBrB,KAAK,GAAAqB,KAAA,CAALrB,KAAK;QAAEsB,OAAO,GAAAD,KAAA,CAAPC,OAAO;MACnB,IAAMC,IAAI,GAAGD,OAAO,CAAC,CAAC;MAEtB,IAAME,QAAQ,GAAG,IAAAC,cAAO,EAAC,YAAM;QAC3B;AAChB;AACA;AACA;QACgB;QACA,OAAO,IAAAC,qCAAqB,EAACC,gBAAO,CAACC,MAAM,CAAC,gBAAgB,CAAC,CAACC,GAAG,CAAC,UAAAC,EAAE;UAAA,OAAIA,EAAE,CAACC,MAAM;QAAA,EAAC,CAAC;MACvF,CAAC,EAAE,EAAE,CAAC;MAEN,oBACI7C,MAAA,CAAA4B,OAAA,CAAAkB,aAAA,CAACT,IAAI,QACA,UAAAtB,IAAI,EAAI;QACL,oBACIf,MAAA,CAAA4B,OAAA,CAAAkB,aAAA,CAACxC,eAAA,CAAAyC,cAAc,EAAAC,MAAA,CAAAC,MAAA;UACXC,GAAG,EAAErC,MAAM,CAACC,KAAK,EAAEC,IAAW;QAAE,GAC5BuB,QAAQ,EACRvB,IAAI;UACRoC,QAAQ,EAAEpC,IAAI,CAACoC,QAAS;UACxBC,KAAK,EAAEtC,KAAK,CAACsC,KAAM;UACnBC,WAAW,EAAEvC,KAAK,CAACwC,eAAgB;UACnCzB,WAAW,EAAEf,KAAK,CAACyC,QAAS;UAC5B,oCAAAnC,MAAA,CAAkCN,KAAK,CAACsC,KAAK;QAAG,EACnD,CAAC;MAEV,CACE,CAAC;IAEf;EACJ;AACJ,CAAC;AAAC,IAAAI,QAAA,GAEalC,MAAM;AAAAmC,OAAA,CAAA7B,OAAA,GAAA4B,QAAA"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_get","_interopRequireDefault","_i18n","_RichTextEditor","_plugins","_allowCmsLegacyRichTextInput","_utils","_utils2","_templateObject","_templateObject2","t","i18n","ns","getKey","field","bind","formId","form","data","id","concat","fieldId","plugin","type","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","model","multipleValues","get","modelHasLexicalField","allowCmsLegacyRichTextInput","isLegacyRteFieldSaved","modelHasLegacyRteField","render","_ref2","getBind","Bind","rteProps","useMemo","createPropsFromConfig","plugins","byType","map","pl","config","createElement","RichTextEditor","Object","assign","key","onChange","label","placeholder","placeholderText","helpText","_default","exports"],"sources":["richTextInput.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsContentEntry, CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { createPropsFromConfig, RichTextEditor } from \"@webiny/app-admin/components/RichTextEditor\";\nimport { plugins } from \"@webiny/plugins\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\nimport { allowCmsLegacyRichTextInput } from \"~/utils/allowCmsLegacyRichTextInput\";\nimport { modelHasLexicalField } from \"~/admin/plugins/fieldRenderers/lexicalText/utils\";\nimport {\n isLegacyRteFieldSaved,\n modelHasLegacyRteField\n} from \"~/admin/plugins/fieldRenderers/richText/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsModelField,\n bind: BindComponentRenderProp<string, CmsContentEntry>\n): string => {\n const formId = bind.form.data.id || \"new\";\n return `${formId}.${field.fieldId}`;\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-rich-text\",\n renderer: {\n rendererName: \"rich-text-input\",\n name: t`(Legacy) EditorJS Text Input`,\n description: t`Renders the legacy rich text editor.`,\n canUse({ field, model }) {\n const canUse =\n field.type === \"rich-text\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\");\n\n if (canUse) {\n // Check for legacy RTE usage for saved and new field\n if (modelHasLexicalField(model)) {\n return false;\n }\n\n if (!allowCmsLegacyRichTextInput) {\n if (isLegacyRteFieldSaved(field) || modelHasLegacyRteField(model)) {\n return true;\n }\n // When feature flag is disabled by default and legacy RTE will not be used\n return false;\n }\n }\n\n return canUse;\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n const rteProps = useMemo(() => {\n /**\n * TODO @ts-refactor\n * Missing cms-rte-config plugin type.\n */\n // @ts-ignore\n return createPropsFromConfig(plugins.byType(\"cms-rte-config\").map(pl => pl.config));\n }, []);\n\n return (\n <Bind>\n {bind => {\n return (\n <RichTextEditor\n key={getKey(field, bind as any)}\n {...rteProps}\n {...bind}\n onChange={bind.onChange}\n label={field.label}\n placeholder={field.placeholderText}\n description={field.helpText}\n data-testid={`fr.input.richtext.${field.label}`}\n />\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
@@ -16,6 +16,9 @@ var _RichTextEditor = require("@webiny/app-admin/components/RichTextEditor");
16
16
  var _Button = require("@webiny/ui/Button");
17
17
  var _plugins = require("@webiny/plugins");
18
18
  var _styled = _interopRequireDefault(require("@emotion/styled"));
19
+ var _allowCmsLegacyRichTextInput = require("../../../../utils/allowCmsLegacyRichTextInput");
20
+ var _utils = require("../lexicalText/utils");
21
+ var _utils2 = require("./utils");
19
22
  var _templateObject, _templateObject2;
20
23
  var t = _i18n.i18n.ns("app-headless-cms/admin/fields/rich-text");
21
24
  var getKey = function getKey(field, bind, index) {
@@ -47,11 +50,26 @@ var plugin = {
47
50
  name: "cms-editor-field-renderer-rich-text-inputs",
48
51
  renderer: {
49
52
  rendererName: "rich-text-inputs",
50
- name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Rich Text Inputs"]))),
51
- description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders a simple list of rich text editors."]))),
53
+ name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["(Legacy) EditorJS Text Inputs"]))),
54
+ description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders a simple list of legacy rich text editors."]))),
52
55
  canUse: function canUse(_ref) {
53
- var field = _ref.field;
54
- return field.type === "rich-text" && !!field.multipleValues && !(0, _get.default)(field, "predefinedValues.enabled");
56
+ var field = _ref.field,
57
+ model = _ref.model;
58
+ var canUse = field.type === "rich-text" && !!field.multipleValues && !(0, _get.default)(field, "predefinedValues.enabled");
59
+ if (canUse) {
60
+ // Check for legacy RTE usage for saved and new field
61
+ if ((0, _utils.modelHasLexicalField)(model)) {
62
+ return false;
63
+ }
64
+ if (!_allowCmsLegacyRichTextInput.allowCmsLegacyRichTextInput) {
65
+ if ((0, _utils2.isLegacyRteFieldSaved)(field) || (0, _utils2.modelHasLegacyRteField)(model)) {
66
+ return true;
67
+ }
68
+ // When feature flag is disabled by default and legacy RTE will not be used
69
+ return false;
70
+ }
71
+ }
72
+ return canUse;
55
73
  },
56
74
  render: function render(props) {
57
75
  var field = props.field;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_get","_interopRequireDefault","_i18n","_close","_DynamicSection","_RichTextEditor","_Button","_plugins","_styled","_templateObject","_templateObject2","t","i18n","ns","getKey","field","bind","index","_bind$index$form","_bind$index$form$data","formId","form","data","id","concat","fieldId","emptyValue","type","textAlign","className","text","EditorWrapper","styled","target","label","position","top","right","plugin","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","multipleValues","get","render","props","rteProps","useMemo","createPropsFromConfig","plugins","byType","map","pl","config","createElement","Object","assign","_ref2","IconButton","icon","ReactComponent","onClick","removeValue","RichTextEditor","key","placeholder","placeholderText","helpText","_default","exports"],"sources":["richTextInputs.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport DynamicSection, { DynamicSectionPropsChildrenParams } from \"../DynamicSection\";\nimport { createPropsFromConfig, RichTextEditor } from \"@webiny/app-admin/components/RichTextEditor\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { plugins } from \"@webiny/plugins\";\nimport styled from \"@emotion/styled\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsModelField,\n bind: DynamicSectionPropsChildrenParams[\"bind\"],\n index: number\n): string => {\n const formId = bind.index.form?.data?.id || \"new\";\n return `${formId}.${field.fieldId}.${index}`;\n};\n\nconst emptyValue: Record<string, any>[] = [\n {\n type: \"paragraph\",\n data: {\n textAlign: \"left\",\n className: null,\n text: \"\"\n }\n }\n];\n\nconst EditorWrapper = styled(\"div\")({\n position: \"relative\",\n \"> button\": {\n position: \"absolute\",\n top: 5,\n right: 5\n }\n});\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-rich-text-inputs\",\n renderer: {\n rendererName: \"rich-text-inputs\",\n name: t`Rich Text Inputs`,\n description: t`Renders a simple list of rich text editors.`,\n canUse({ field }) {\n return (\n field.type === \"rich-text\" &&\n !!field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render(props) {\n const { field } = props;\n\n const rteProps = useMemo(() => {\n /**\n * TODO @ts-refactor\n * Missing cms-rte-config plugin.\n */\n // @ts-ignore\n return createPropsFromConfig(plugins.byType(\"cms-rte-config\").map(pl => pl.config));\n }, []);\n\n return (\n <DynamicSection {...props} emptyValue={emptyValue}>\n {({ bind, index }) => (\n <EditorWrapper>\n {index > 0 && (\n <IconButton\n icon={<DeleteIcon />}\n onClick={() => bind.field.removeValue(index)}\n />\n )}\n <RichTextEditor\n key={getKey(field, bind, index)}\n {...rteProps}\n {...bind.index}\n label={`Value ${index + 1}`}\n placeholder={field.placeholderText}\n description={field.helpText}\n />\n </EditorWrapper>\n )}\n </DynamicSection>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_get","_interopRequireDefault","_i18n","_close","_DynamicSection","_RichTextEditor","_Button","_plugins","_styled","_allowCmsLegacyRichTextInput","_utils","_utils2","_templateObject","_templateObject2","t","i18n","ns","getKey","field","bind","index","_bind$index$form","_bind$index$form$data","formId","form","data","id","concat","fieldId","emptyValue","type","textAlign","className","text","EditorWrapper","styled","target","label","position","top","right","plugin","name","renderer","rendererName","_taggedTemplateLiteral2","default","description","canUse","_ref","model","multipleValues","get","modelHasLexicalField","allowCmsLegacyRichTextInput","isLegacyRteFieldSaved","modelHasLegacyRteField","render","props","rteProps","useMemo","createPropsFromConfig","plugins","byType","map","pl","config","createElement","Object","assign","_ref2","IconButton","icon","ReactComponent","onClick","removeValue","RichTextEditor","key","placeholder","placeholderText","helpText","_default","exports"],"sources":["richTextInputs.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsModelField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport DynamicSection, { DynamicSectionPropsChildrenParams } from \"../DynamicSection\";\nimport { createPropsFromConfig, RichTextEditor } from \"@webiny/app-admin/components/RichTextEditor\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { plugins } from \"@webiny/plugins\";\nimport styled from \"@emotion/styled\";\nimport { allowCmsLegacyRichTextInput } from \"~/utils/allowCmsLegacyRichTextInput\";\nimport { modelHasLexicalField } from \"~/admin/plugins/fieldRenderers/lexicalText/utils\";\nimport {\n isLegacyRteFieldSaved,\n modelHasLegacyRteField\n} from \"~/admin/plugins/fieldRenderers/richText/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsModelField,\n bind: DynamicSectionPropsChildrenParams[\"bind\"],\n index: number\n): string => {\n const formId = bind.index.form?.data?.id || \"new\";\n return `${formId}.${field.fieldId}.${index}`;\n};\n\nconst emptyValue: Record<string, any>[] = [\n {\n type: \"paragraph\",\n data: {\n textAlign: \"left\",\n className: null,\n text: \"\"\n }\n }\n];\n\nconst EditorWrapper = styled(\"div\")({\n position: \"relative\",\n \"> button\": {\n position: \"absolute\",\n top: 5,\n right: 5\n }\n});\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-rich-text-inputs\",\n renderer: {\n rendererName: \"rich-text-inputs\",\n name: t`(Legacy) EditorJS Text Inputs`,\n description: t`Renders a simple list of legacy rich text editors.`,\n canUse({ field, model }) {\n const canUse =\n field.type === \"rich-text\" &&\n !!field.multipleValues &&\n !get(field, \"predefinedValues.enabled\");\n\n if (canUse) {\n // Check for legacy RTE usage for saved and new field\n if (modelHasLexicalField(model)) {\n return false;\n }\n\n if (!allowCmsLegacyRichTextInput) {\n if (isLegacyRteFieldSaved(field) || modelHasLegacyRteField(model)) {\n return true;\n }\n // When feature flag is disabled by default and legacy RTE will not be used\n return false;\n }\n }\n\n return canUse;\n },\n render(props) {\n const { field } = props;\n\n const rteProps = useMemo(() => {\n /**\n * TODO @ts-refactor\n * Missing cms-rte-config plugin.\n */\n // @ts-ignore\n return createPropsFromConfig(plugins.byType(\"cms-rte-config\").map(pl => pl.config));\n }, []);\n\n return (\n <DynamicSection {...props} emptyValue={emptyValue}>\n {({ bind, index }) => (\n <EditorWrapper>\n {index > 0 && (\n <IconButton\n icon={<DeleteIcon />}\n onClick={() => bind.field.removeValue(index)}\n />\n )}\n <RichTextEditor\n key={getKey(field, bind, index)}\n {...rteProps}\n {...bind.index}\n label={`Value ${index + 1}`}\n placeholder={field.placeholderText}\n description={field.helpText}\n />\n </EditorWrapper>\n )}\n </DynamicSection>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { CmsModel, CmsModelField } from "@webiny/app-headless-cms-common/types";
2
+ export declare const modelHasLegacyRteField: (model: CmsModel) => boolean;
3
+ export declare const isLegacyRteField: (field: CmsModelField) => boolean;
4
+ export declare const isLegacyRteFieldSaved: (field: CmsModelField) => boolean;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.modelHasLegacyRteField = exports.isLegacyRteFieldSaved = exports.isLegacyRteField = void 0;
7
+ var modelHasLegacyRteField = function modelHasLegacyRteField(model) {
8
+ return model.fields.some(isLegacyRteField);
9
+ };
10
+ exports.modelHasLegacyRteField = modelHasLegacyRteField;
11
+ var isLegacyRteField = function isLegacyRteField(field) {
12
+ return field.renderer.name.startsWith("rich-text-");
13
+ };
14
+ exports.isLegacyRteField = isLegacyRteField;
15
+ var isLegacyRteFieldSaved = function isLegacyRteFieldSaved(field) {
16
+ return !!field.id && isLegacyRteField(field);
17
+ };
18
+ exports.isLegacyRteFieldSaved = isLegacyRteFieldSaved;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["modelHasLegacyRteField","model","fields","some","isLegacyRteField","exports","field","renderer","name","startsWith","isLegacyRteFieldSaved","id"],"sources":["utils.ts"],"sourcesContent":["import { CmsModel, CmsModelField } from \"@webiny/app-headless-cms-common/types\";\n\nexport const modelHasLegacyRteField = (model: CmsModel): boolean => {\n return model.fields.some(isLegacyRteField);\n};\n\nexport const isLegacyRteField = (field: CmsModelField): boolean => {\n return field.renderer.name.startsWith(\"rich-text-\");\n};\n\nexport const isLegacyRteFieldSaved = (field: CmsModelField): boolean => {\n return !!field.id && isLegacyRteField(field);\n};\n"],"mappings":";;;;;;AAEO,IAAMA,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIC,KAAe,EAAc;EAChE,OAAOA,KAAK,CAACC,MAAM,CAACC,IAAI,CAACC,gBAAgB,CAAC;AAC9C,CAAC;AAACC,OAAA,CAAAL,sBAAA,GAAAA,sBAAA;AAEK,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIE,KAAoB,EAAc;EAC/D,OAAOA,KAAK,CAACC,QAAQ,CAACC,IAAI,CAACC,UAAU,CAAC,YAAY,CAAC;AACvD,CAAC;AAACJ,OAAA,CAAAD,gBAAA,GAAAA,gBAAA;AAEK,IAAMM,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIJ,KAAoB,EAAc;EACpE,OAAO,CAAC,CAACA,KAAK,CAACK,EAAE,IAAIP,gBAAgB,CAACE,KAAK,CAAC;AAChD,CAAC;AAACD,OAAA,CAAAK,qBAAA,GAAAA,qBAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-headless-cms",
3
- "version": "0.0.0-unstable.8feaff8c32",
3
+ "version": "0.0.0-unstable.98511f29f1",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,26 +27,26 @@
27
27
  "@material-design-icons/svg": "0.14.2",
28
28
  "@svgr/webpack": "6.5.1",
29
29
  "@types/react": "17.0.39",
30
- "@webiny/app": "0.0.0-unstable.8feaff8c32",
31
- "@webiny/app-aco": "0.0.0-unstable.8feaff8c32",
32
- "@webiny/app-admin": "0.0.0-unstable.8feaff8c32",
33
- "@webiny/app-graphql-playground": "0.0.0-unstable.8feaff8c32",
34
- "@webiny/app-headless-cms-common": "0.0.0-unstable.8feaff8c32",
35
- "@webiny/app-i18n": "0.0.0-unstable.8feaff8c32",
36
- "@webiny/app-plugin-admin-welcome-screen": "0.0.0-unstable.8feaff8c32",
37
- "@webiny/app-security": "0.0.0-unstable.8feaff8c32",
38
- "@webiny/error": "0.0.0-unstable.8feaff8c32",
39
- "@webiny/feature-flags": "0.0.0-unstable.8feaff8c32",
40
- "@webiny/form": "0.0.0-unstable.8feaff8c32",
41
- "@webiny/lexical-editor": "0.0.0-unstable.8feaff8c32",
42
- "@webiny/plugins": "0.0.0-unstable.8feaff8c32",
43
- "@webiny/react-composition": "0.0.0-unstable.8feaff8c32",
44
- "@webiny/react-properties": "0.0.0-unstable.8feaff8c32",
45
- "@webiny/react-router": "0.0.0-unstable.8feaff8c32",
46
- "@webiny/theme": "0.0.0-unstable.8feaff8c32",
47
- "@webiny/ui": "0.0.0-unstable.8feaff8c32",
48
- "@webiny/utils": "0.0.0-unstable.8feaff8c32",
49
- "@webiny/validation": "0.0.0-unstable.8feaff8c32",
30
+ "@webiny/app": "0.0.0-unstable.98511f29f1",
31
+ "@webiny/app-aco": "0.0.0-unstable.98511f29f1",
32
+ "@webiny/app-admin": "0.0.0-unstable.98511f29f1",
33
+ "@webiny/app-graphql-playground": "0.0.0-unstable.98511f29f1",
34
+ "@webiny/app-headless-cms-common": "0.0.0-unstable.98511f29f1",
35
+ "@webiny/app-i18n": "0.0.0-unstable.98511f29f1",
36
+ "@webiny/app-plugin-admin-welcome-screen": "0.0.0-unstable.98511f29f1",
37
+ "@webiny/app-security": "0.0.0-unstable.98511f29f1",
38
+ "@webiny/error": "0.0.0-unstable.98511f29f1",
39
+ "@webiny/feature-flags": "0.0.0-unstable.98511f29f1",
40
+ "@webiny/form": "0.0.0-unstable.98511f29f1",
41
+ "@webiny/lexical-editor": "0.0.0-unstable.98511f29f1",
42
+ "@webiny/plugins": "0.0.0-unstable.98511f29f1",
43
+ "@webiny/react-composition": "0.0.0-unstable.98511f29f1",
44
+ "@webiny/react-properties": "0.0.0-unstable.98511f29f1",
45
+ "@webiny/react-router": "0.0.0-unstable.98511f29f1",
46
+ "@webiny/theme": "0.0.0-unstable.98511f29f1",
47
+ "@webiny/ui": "0.0.0-unstable.98511f29f1",
48
+ "@webiny/utils": "0.0.0-unstable.98511f29f1",
49
+ "@webiny/validation": "0.0.0-unstable.98511f29f1",
50
50
  "apollo-cache": "1.3.5",
51
51
  "apollo-client": "2.6.10",
52
52
  "apollo-link": "1.2.14",
@@ -76,8 +76,8 @@
76
76
  "@babel/preset-env": "7.22.7",
77
77
  "@babel/preset-react": "7.22.5",
78
78
  "@babel/preset-typescript": "7.22.5",
79
- "@webiny/cli": "0.0.0-unstable.8feaff8c32",
80
- "@webiny/project-utils": "0.0.0-unstable.8feaff8c32",
79
+ "@webiny/cli": "0.0.0-unstable.98511f29f1",
80
+ "@webiny/project-utils": "0.0.0-unstable.98511f29f1",
81
81
  "babel-plugin-emotion": "9.2.11",
82
82
  "babel-plugin-module-resolver": "4.1.0",
83
83
  "rimraf": "3.0.2",
@@ -107,5 +107,5 @@
107
107
  ]
108
108
  }
109
109
  },
110
- "gitHead": "8feaff8c32ad81701938e9e3eadd836c8eb2fcb1"
110
+ "gitHead": "98511f29f1e1fc7d03ed0d1379d0a0aeff6dae84"
111
111
  }