@webiny/app-headless-cms 6.0.0-rc.5 → 6.0.0-rc.6

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.
Files changed (62) hide show
  1. package/admin/components/ContentEntryForm/CustomLayout.js +2 -13
  2. package/admin/components/ContentEntryForm/CustomLayout.js.map +1 -1
  3. package/admin/components/FieldEditor/EditFieldDialog/FieldSettingsTabs.js +4 -4
  4. package/admin/components/FieldEditor/EditFieldDialog/FieldSettingsTabs.js.map +1 -1
  5. package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/FieldPermissionsSelection.js +5 -8
  6. package/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/FieldPermissionsSelection.js.map +1 -0
  7. package/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.d.ts +2 -0
  8. package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab/PermissionsTab.js → PermissionsEditor/PermissionsEditor.js} +4 -10
  9. package/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js.map +1 -0
  10. package/admin/components/FieldEditor/EditFieldDialog/{RulesTab/RulesTab.d.ts → RulesEditor/RulesEditor.d.ts} +1 -2
  11. package/admin/components/FieldEditor/EditFieldDialog/{RulesTab/RulesTab.js → RulesEditor/RulesEditor.js} +3 -6
  12. package/admin/components/FieldEditor/EditFieldDialog/RulesEditor/RulesEditor.js.map +1 -0
  13. package/admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.d.ts +1 -0
  14. package/admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.js +3 -0
  15. package/admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.js.map +1 -0
  16. package/admin/hooks/useCms.d.ts +1 -1
  17. package/admin/hooks/useCms.js +1 -1
  18. package/admin/hooks/useCms.js.map +1 -1
  19. package/admin/plugins/fields/ui/TabsLayoutEditor.js +21 -17
  20. package/admin/plugins/fields/ui/TabsLayoutEditor.js.map +1 -1
  21. package/admin/plugins/fields/ui/alert.js +14 -11
  22. package/admin/plugins/fields/ui/alert.js.map +1 -1
  23. package/admin/plugins/fields/ui/separator.js +14 -11
  24. package/admin/plugins/fields/ui/separator.js.map +1 -1
  25. package/admin/views/contentModels/importing/ImportContentModelsDialog.js +15 -13
  26. package/admin/views/contentModels/importing/ImportContentModelsDialog.js.map +1 -1
  27. package/exports/admin/cms/model.d.ts +2 -1
  28. package/exports/admin/cms/model.js +2 -1
  29. package/exports/admin/cms/model.js.map +1 -1
  30. package/exports/admin/cms.d.ts +7 -4
  31. package/exports/admin/cms.js +7 -4
  32. package/exports/admin/cms.js.map +1 -1
  33. package/legacyPluginAdapters/CmsContentFormRenderer.d.ts +4 -0
  34. package/legacyPluginAdapters/CmsContentFormRenderer.js +15 -0
  35. package/legacyPluginAdapters/CmsContentFormRenderer.js.map +1 -0
  36. package/legacyPluginAdapters/CmsModelFieldValidator.d.ts +4 -0
  37. package/legacyPluginAdapters/CmsModelFieldValidator.js +14 -0
  38. package/legacyPluginAdapters/CmsModelFieldValidator.js.map +1 -0
  39. package/package.json +24 -24
  40. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/FieldPermissionsSelection.js.map +0 -1
  41. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.d.ts +0 -4
  42. package/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js.map +0 -1
  43. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js.map +0 -1
  44. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.d.ts +0 -1
  45. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.js +0 -3
  46. package/admin/components/FieldEditor/EditFieldDialog/RulesTab/index.js.map +0 -1
  47. /package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/CannotUsePermissions.d.ts +0 -0
  48. /package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/CannotUsePermissions.js +0 -0
  49. /package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/CannotUsePermissions.js.map +0 -0
  50. /package/admin/components/FieldEditor/EditFieldDialog/{PermissionsTab → PermissionsEditor}/FieldPermissionsSelection.d.ts +0 -0
  51. /package/{admin/components → legacyPluginAdapters}/CmsModelFieldRenderer.d.ts +0 -0
  52. /package/{admin/components → legacyPluginAdapters}/CmsModelFieldRenderer.js +0 -0
  53. /package/{admin/components → legacyPluginAdapters}/CmsModelFieldRenderer.js.map +0 -0
  54. /package/{admin/components → legacyPluginAdapters}/CmsModelFieldType.d.ts +0 -0
  55. /package/{admin/components → legacyPluginAdapters}/CmsModelFieldType.js +0 -0
  56. /package/{admin/components → legacyPluginAdapters}/CmsModelFieldType.js.map +0 -0
  57. /package/{admin/components → legacyPluginAdapters}/CmsModelLayoutFieldRenderer.d.ts +0 -0
  58. /package/{admin/components → legacyPluginAdapters}/CmsModelLayoutFieldRenderer.js +0 -0
  59. /package/{admin/components → legacyPluginAdapters}/CmsModelLayoutFieldRenderer.js.map +0 -0
  60. /package/{admin/components → legacyPluginAdapters}/CmsModelLayoutFieldType.d.ts +0 -0
  61. /package/{admin/components → legacyPluginAdapters}/CmsModelLayoutFieldType.js +0 -0
  62. /package/{admin/components → legacyPluginAdapters}/CmsModelLayoutFieldType.js.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useRef","useEffect","Accordion","Tabs","ReactComponent","EditIcon","DeleteIcon","ArrowUpIcon","ArrowDownIcon","AddIcon","generateAlphaNumericLowerCaseId","useConfirmationDialog","useDialogs","Grid","IconButton","Button","Input","Textarea","Heading","Text","Bind","FieldEditor","IconPicker","useModelFieldEditor","PermissionsTab","RulesTab","useModelEditor","TabsSettings","createElement","className","Column","span","name","label","TabsDialogContent","fieldOptions","size","separator","tabs","Tab","key","trigger","value","content","gridClassName","TabSettingsFields","TabDialogContent","createTabParent","tab","id","fieldId","type","renderer","resolveTabFields","parentFields","fieldIds","Set","row","layout","cell","add","filter","f","has","TabItem","index","totalTabs","field","onUpdate","onInsertField","onRemoveField","onUpdateField","dialogs","showConfirmation","title","message","acceptLabel","isFirst","isLast","tabFields","handleFieldsChange","fields","newFields","newLayout","oldFieldIds","map","newFieldIds","oldFieldMap","Map","get","updatedTabs","moveTabUp","moveTabDown","deleteTab","_","i","editTab","showDialog","description","cancelLabel","formData","icon","rules","onAccept","data","undefined","Item","length","actions","Fragment","Action","onClick","disabled","Separator","parent","onChange","TabsLayoutEditor","onDelete","parentEditor","newTabId","showDeleteConfirmation","current","getAllParentFields","allFieldIds","resolved","getField","push","handleInsertField","existingField","addField","handleRemoveField","removeField","handleUpdateField","updateField","addTab","newTab","handleDeleteTabs","editTabsSettings","help","resolvedParentFields","level","variant","text"],"sources":["TabsLayoutEditor.tsx"],"sourcesContent":["import React, { useCallback, useRef, useEffect } from \"react\";\nimport { Accordion, Tabs } from \"@webiny/admin-ui\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { ReactComponent as ArrowUpIcon } from \"@webiny/icons/expand_less.svg\";\nimport { ReactComponent as ArrowDownIcon } from \"@webiny/icons/expand_more.svg\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\nimport type {\n CmsTabLayoutField,\n CmsTabLayoutTab,\n CmsLayoutField,\n CmsEditorFieldsLayout\n} from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { useConfirmationDialog, useDialogs } from \"@webiny/app-admin\";\nimport { Grid } from \"@webiny/admin-ui\";\nimport { IconButton } from \"@webiny/admin-ui\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { Input } from \"@webiny/admin-ui\";\nimport { Textarea } from \"@webiny/admin-ui\";\nimport { Heading } from \"@webiny/admin-ui\";\nimport { Text } from \"@webiny/admin-ui\";\nimport { Bind } from \"@webiny/form\";\nimport type { CmsModelField } from \"~/types.js\";\nimport { FieldEditor } from \"~/admin/components/FieldEditor/index.js\";\nimport { IconPicker } from \"~/admin/components/IconPicker.js\";\nimport { useModelFieldEditor } from \"~/admin/hooks/index.js\";\nimport { PermissionsTab } from \"~/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js\";\nimport { RulesTab } from \"~/admin/components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js\";\nimport { useModelEditor } from \"~/admin/components/ContentModelEditor/useModelEditor.js\";\nimport type { FieldOption } from \"@webiny/app-headless-cms-common/Fields/fieldOptions.js\";\n\ninterface TabsLayoutEditorProps {\n field: CmsTabLayoutField;\n onUpdate: (d: CmsLayoutField) => void;\n onDelete: () => void;\n}\n\ninterface TabItemProps {\n tab: CmsTabLayoutTab;\n index: number;\n totalTabs: number;\n field: CmsTabLayoutField;\n parentFields: CmsModelField[];\n onUpdate: (d: CmsLayoutField) => void;\n onInsertField: (field: CmsModelField) => void;\n onRemoveField: (fieldId: string) => void;\n onUpdateField: (field: CmsModelField) => void;\n}\n\nconst TabsSettings = () => {\n return (\n <Grid className={\"mt-md\"}>\n <Grid.Column span={12}>\n <Bind name={\"label\"}>\n <Input label={\"Label\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"description\"}>\n <Input label={\"Description\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"help\"}>\n <Textarea label={\"Help\"} />\n </Bind>\n </Grid.Column>\n </Grid>\n );\n};\n\nconst TabsDialogContent = ({ fieldOptions }: { fieldOptions: FieldOption[] }) => {\n return (\n <Tabs\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"tabs\"}\n trigger={\"Tabs\"}\n value={\"tabs\"}\n content={<TabsSettings />}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={\"Permissions\"}\n value={\"permissions\"}\n content={<PermissionsTab gridClassName={\"mt-md\"} />}\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={\"Rules\"}\n value={\"rules\"}\n content={<RulesTab gridClassName={\"mt-md\"} fieldOptions={fieldOptions} />}\n />\n ]}\n />\n );\n};\n\nconst TabSettingsFields = () => {\n return (\n <Grid className={\"mt-md\"}>\n <Grid.Column span={12}>\n <Bind name={\"label\"}>\n <Input label={\"Label\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"icon\"}>\n <IconPicker label={\"Icon\"} />\n </Bind>\n </Grid.Column>\n </Grid>\n );\n};\n\nconst TabDialogContent = ({ fieldOptions }: { fieldOptions: FieldOption[] }) => {\n return (\n <Tabs\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"tab\"}\n trigger={\"Tab\"}\n value={\"tab\"}\n content={<TabSettingsFields />}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={\"Permissions\"}\n value={\"permissions\"}\n content={<PermissionsTab gridClassName={\"mt-md\"} />}\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={\"Rules\"}\n value={\"rules\"}\n content={<RulesTab gridClassName={\"mt-md\"} fieldOptions={fieldOptions} />}\n />\n ]}\n />\n );\n};\n\n/**\n * Create a synthetic parent field for a tab so that each tab's FieldEditor\n * has a unique identity for cross-parent drag & drop detection.\n */\nfunction createTabParent(tab: CmsTabLayoutTab): CmsModelField {\n return {\n id: tab.id,\n fieldId: `tab:${tab.id}`,\n type: \"tab\",\n label: tab.label,\n renderer: { name: \"\" }\n } as CmsModelField;\n}\n\n/**\n * Resolve fields for a tab by looking up field IDs in the parent's fields array.\n */\nfunction resolveTabFields(tab: CmsTabLayoutTab, parentFields: CmsModelField[]): CmsModelField[] {\n const fieldIds = new Set<string>();\n for (const row of tab.layout) {\n for (const cell of row) {\n if (typeof cell === \"string\") {\n fieldIds.add(cell);\n }\n }\n }\n return parentFields.filter(f => fieldIds.has(f.id));\n}\n\nconst TabItem = ({\n tab,\n index,\n totalTabs,\n field,\n parentFields,\n onUpdate,\n onInsertField,\n onRemoveField,\n onUpdateField\n}: TabItemProps) => {\n const { fieldOptions } = useModelEditor();\n const dialogs = useDialogs();\n\n const { showConfirmation } = useConfirmationDialog({\n title: \"Delete tab\",\n message: `Are you sure you want to delete the tab \"${tab.label}\"? Fields inside this tab will be removed.`,\n acceptLabel: \"Yes, delete tab\"\n });\n\n const isFirst = index === 0;\n const isLast = index === totalTabs - 1;\n\n const tabFields = resolveTabFields(tab, parentFields);\n\n const handleFieldsChange = useCallback(\n ({\n fields: newFields,\n layout: newLayout\n }: {\n fields: CmsModelField[];\n layout: CmsEditorFieldsLayout;\n }) => {\n const oldFieldIds = new Set(tabFields.map(f => f.id));\n const newFieldIds = new Set(newFields.map(f => f.id));\n\n // Find added fields (in new but not in old) -> hoist to parent\n for (const f of newFields) {\n if (!oldFieldIds.has(f.id)) {\n onInsertField(f);\n }\n }\n\n // Find removed fields (in old but not in new) -> un-hoist from parent\n for (const id of oldFieldIds) {\n if (!newFieldIds.has(id)) {\n onRemoveField(id);\n }\n }\n\n // Propagate field updates (e.g. permissions changes) to the parent\n const oldFieldMap = new Map(tabFields.map(f => [f.id, f]));\n for (const f of newFields) {\n if (oldFieldMap.has(f.id) && oldFieldMap.get(f.id) !== f) {\n onUpdateField(f);\n }\n }\n\n // Update the tab's layout in the field\n const updatedTabs = [...field.tabs];\n updatedTabs[index] = { ...tab, layout: newLayout };\n onUpdate({ ...field, tabs: updatedTabs });\n },\n [tab, index, field, tabFields, onUpdate, onInsertField, onRemoveField, onUpdateField]\n );\n\n const moveTabUp = useCallback(() => {\n if (isFirst) {\n return;\n }\n const tabs = [...field.tabs];\n [tabs[index - 1], tabs[index]] = [tabs[index], tabs[index - 1]];\n onUpdate({ ...field, tabs });\n }, [field, index, isFirst, onUpdate]);\n\n const moveTabDown = useCallback(() => {\n if (isLast) {\n return;\n }\n const tabs = [...field.tabs];\n [tabs[index + 1], tabs[index]] = [tabs[index], tabs[index + 1]];\n onUpdate({ ...field, tabs });\n }, [field, index, isLast, onUpdate]);\n\n const deleteTab = useCallback(() => {\n showConfirmation(() => {\n // Collect field IDs to un-hoist\n for (const row of tab.layout) {\n for (const cell of row) {\n if (typeof cell === \"string\") {\n onRemoveField(cell);\n }\n }\n }\n\n const tabs = field.tabs.filter((_, i) => i !== index);\n onUpdate({ ...field, tabs });\n });\n }, [field, index, tab, onUpdate, onRemoveField, showConfirmation]);\n\n const editTab = useCallback(() => {\n dialogs.showDialog({\n title: \"Tab Settings\",\n description: \"Configure the tab and access permissions\",\n acceptLabel: \"Save\",\n cancelLabel: \"Cancel\",\n formData: {\n label: tab.label,\n icon: tab.icon ?? \"\",\n rules: tab.rules ?? []\n },\n content: <TabDialogContent fieldOptions={fieldOptions} />,\n onAccept: data => {\n const updatedTabs = [...field.tabs];\n updatedTabs[index] = {\n ...tab,\n label: data.label ?? tab.label,\n icon: data.icon || undefined,\n rules: data.rules ?? []\n };\n onUpdate({ ...field, tabs: updatedTabs });\n }\n });\n }, [dialogs, field, index, tab, onUpdate]);\n\n return (\n <Accordion.Item\n title={tab.label}\n /* This ensures drop zones are not affected by `overflow-hidden` on the accordion content. */\n className={\"[&>[data-state='open']]:!overflow-visible\"}\n description={`${tabFields.length} field${tabFields.length !== 1 ? \"s\" : \"\"}`}\n actions={\n <>\n <Accordion.Item.Action\n icon={<ArrowUpIcon />}\n onClick={moveTabUp}\n disabled={isFirst}\n />\n <Accordion.Item.Action\n icon={<ArrowDownIcon />}\n onClick={moveTabDown}\n disabled={isLast}\n />\n <Accordion.Item.Action.Separator />\n <Accordion.Item.Action icon={<EditIcon />} onClick={editTab} />\n <Accordion.Item.Action\n icon={<DeleteIcon />}\n onClick={deleteTab}\n disabled={totalTabs <= 1}\n />\n </>\n }\n >\n <FieldEditor\n parent={createTabParent(tab)}\n fields={tabFields}\n layout={tab.layout}\n onChange={handleFieldsChange}\n />\n </Accordion.Item>\n );\n};\n\nexport const TabsLayoutEditor = ({ field, onUpdate, onDelete }: TabsLayoutEditorProps) => {\n const parentEditor = useModelFieldEditor();\n const { fieldOptions } = useModelEditor();\n const { showDialog } = useDialogs();\n const newTabId = useRef<string | undefined>(undefined);\n\n const { showConfirmation: showDeleteConfirmation } = useConfirmationDialog({\n title: \"Delete tabs\",\n message:\n \"Are you sure you want to delete this tabs element? All fields inside the tabs will be removed.\",\n acceptLabel: \"Yes, delete\"\n });\n\n useEffect(() => {\n newTabId.current = undefined;\n }, []);\n\n // Resolve all fields that exist in any tab of this field from the parent's fields\n const getAllParentFields = useCallback((): CmsModelField[] => {\n // Collect all field IDs that exist in any tab of this field\n const allFieldIds = new Set<string>();\n for (const tab of field.tabs) {\n for (const row of tab.layout) {\n for (const cell of row) {\n if (typeof cell === \"string\") {\n allFieldIds.add(cell);\n }\n }\n }\n }\n\n // Resolve them from the parent editor\n const resolved: CmsModelField[] = [];\n for (const id of allFieldIds) {\n const f = parentEditor.getField({ id });\n if (f) {\n resolved.push(f);\n }\n }\n return resolved;\n }, [field, parentEditor]);\n\n const handleInsertField = useCallback(\n (f: CmsModelField) => {\n // Hoist the field to the parent context's fields (without placing in parent's layout)\n const existingField = parentEditor.getField({ id: f.id });\n if (!existingField) {\n parentEditor.addField(f);\n }\n },\n [parentEditor]\n );\n\n const handleRemoveField = useCallback(\n (fieldId: string) => {\n // Un-hoist the field from the parent context's fields\n parentEditor.removeField(fieldId);\n },\n [parentEditor]\n );\n\n const handleUpdateField = useCallback(\n (f: CmsModelField) => {\n parentEditor.updateField(f);\n },\n [parentEditor]\n );\n\n const addTab = useCallback(() => {\n const id = generateAlphaNumericLowerCaseId(8);\n newTabId.current = id;\n const newTab: CmsTabLayoutTab = {\n id,\n label: `Tab ${field.tabs.length + 1}`,\n layout: []\n };\n onUpdate({ ...field, tabs: [...field.tabs, newTab] });\n }, [field, onUpdate]);\n\n const handleDeleteTabs = useCallback(() => {\n showDeleteConfirmation(() => {\n onDelete();\n });\n }, [onDelete, showDeleteConfirmation]);\n\n const editTabsSettings = useCallback(() => {\n showDialog({\n title: \"Tabs Settings\",\n description: \"Configure the tabs and access permissions\",\n acceptLabel: \"Save\",\n cancelLabel: \"Cancel\",\n formData: {\n label: field.label ?? \"\",\n description: field.description ?? \"\",\n help: field.help ?? \"\",\n rules: field.rules ?? []\n },\n content: <TabsDialogContent fieldOptions={fieldOptions} />,\n onAccept: data => {\n onUpdate({\n ...field,\n label: data.label ?? \"\",\n description: data.description || null,\n help: data.help || null,\n rules: data.rules ?? []\n });\n }\n });\n }, [field, onUpdate]);\n\n const resolvedParentFields = getAllParentFields();\n\n return (\n <div>\n <div className={\"flex justify-between\"}>\n <div className={\"flex flex-col\"}>\n <div className={\"flex flex-row items-center\"}>\n <Heading level={6} className={\"text-nowrap\"}>\n {field.label || \"No label\"}\n </Heading>\n </div>\n <Text size=\"sm\" className={\"flex w-full text-neutral-strong\"}>\n Tabs\n </Text>\n </div>\n <div className={\"flex items-center gap-xs\"}>\n <IconButton\n icon={<EditIcon />}\n onClick={editTabsSettings}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n <IconButton\n icon={<DeleteIcon />}\n onClick={handleDeleteTabs}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n </div>\n </div>\n {field.tabs.length > 0 && (\n <Accordion>\n {field.tabs.map((tab, index) => (\n <TabItem\n key={tab.id}\n tab={tab}\n index={index}\n totalTabs={field.tabs.length}\n field={field}\n parentFields={resolvedParentFields}\n onUpdate={onUpdate}\n onInsertField={handleInsertField}\n onRemoveField={handleRemoveField}\n onUpdateField={handleUpdateField}\n />\n ))}\n </Accordion>\n )}\n <div className={\"mt-sm flex justify-center\"}>\n <Button onClick={addTab} text={\"Add Tab\"} icon={<AddIcon />} size={\"sm\"} />\n </div>\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useRef","useEffect","Accordion","Tabs","ScrollArea","ReactComponent","EditIcon","DeleteIcon","ArrowUpIcon","ArrowDownIcon","AddIcon","generateAlphaNumericLowerCaseId","useConfirmationDialog","useDialogs","Grid","IconButton","Button","Input","Textarea","Heading","Text","Bind","FieldEditor","IconPicker","useModelFieldEditor","PermissionsEditor","RulesEditor","useModelEditor","TabsSettings","createElement","className","Column","span","name","label","TabsDialogContent","fieldOptions","size","separator","tabs","Tab","key","trigger","value","content","TabSettingsFields","TabDialogContent","createTabParent","tab","id","fieldId","type","renderer","resolveTabFields","parentFields","fieldIds","Set","row","layout","cell","add","filter","f","has","TabItem","index","totalTabs","field","onUpdate","onInsertField","onRemoveField","onUpdateField","dialogs","showConfirmation","title","message","acceptLabel","isFirst","isLast","tabFields","handleFieldsChange","fields","newFields","newLayout","oldFieldIds","map","newFieldIds","oldFieldMap","Map","get","updatedTabs","moveTabUp","moveTabDown","deleteTab","_","i","editTab","showDialog","description","cancelLabel","formData","icon","rules","onAccept","data","undefined","Item","length","actions","Fragment","Action","onClick","disabled","Separator","parent","onChange","TabsLayoutEditor","onDelete","parentEditor","newTabId","showDeleteConfirmation","current","getAllParentFields","allFieldIds","resolved","getField","push","handleInsertField","existingField","addField","handleRemoveField","removeField","handleUpdateField","updateField","addTab","newTab","handleDeleteTabs","editTabsSettings","help","resolvedParentFields","level","variant","text"],"sources":["TabsLayoutEditor.tsx"],"sourcesContent":["import React, { useCallback, useRef, useEffect } from \"react\";\nimport { Accordion, Tabs, ScrollArea } from \"@webiny/admin-ui\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { ReactComponent as ArrowUpIcon } from \"@webiny/icons/expand_less.svg\";\nimport { ReactComponent as ArrowDownIcon } from \"@webiny/icons/expand_more.svg\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\nimport type {\n CmsTabLayoutField,\n CmsTabLayoutTab,\n CmsLayoutField,\n CmsEditorFieldsLayout\n} from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { useConfirmationDialog, useDialogs } from \"@webiny/app-admin\";\nimport { Grid } from \"@webiny/admin-ui\";\nimport { IconButton } from \"@webiny/admin-ui\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { Input } from \"@webiny/admin-ui\";\nimport { Textarea } from \"@webiny/admin-ui\";\nimport { Heading } from \"@webiny/admin-ui\";\nimport { Text } from \"@webiny/admin-ui\";\nimport { Bind } from \"@webiny/form\";\nimport type { CmsModelField } from \"~/types.js\";\nimport { FieldEditor } from \"~/admin/components/FieldEditor/index.js\";\nimport { IconPicker } from \"~/admin/components/IconPicker.js\";\nimport { useModelFieldEditor } from \"~/admin/hooks/index.js\";\nimport { PermissionsEditor } from \"~/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js\";\nimport { RulesEditor } from \"~/admin/components/FieldEditor/EditFieldDialog/RulesEditor/RulesEditor.js\";\nimport { useModelEditor } from \"~/admin/components/ContentModelEditor/useModelEditor.js\";\nimport type { FieldOption } from \"@webiny/app-headless-cms-common/Fields/fieldOptions.js\";\n\ninterface TabsLayoutEditorProps {\n field: CmsTabLayoutField;\n onUpdate: (d: CmsLayoutField) => void;\n onDelete: () => void;\n}\n\ninterface TabItemProps {\n tab: CmsTabLayoutTab;\n index: number;\n totalTabs: number;\n field: CmsTabLayoutField;\n parentFields: CmsModelField[];\n onUpdate: (d: CmsLayoutField) => void;\n onInsertField: (field: CmsModelField) => void;\n onRemoveField: (fieldId: string) => void;\n onUpdateField: (field: CmsModelField) => void;\n}\n\nconst TabsSettings = () => {\n return (\n <Grid className={\"mt-md\"}>\n <Grid.Column span={12}>\n <Bind name={\"label\"}>\n <Input label={\"Label\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"description\"}>\n <Input label={\"Description\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"help\"}>\n <Textarea label={\"Help\"} />\n </Bind>\n </Grid.Column>\n </Grid>\n );\n};\n\nconst TabsDialogContent = ({ fieldOptions }: { fieldOptions: FieldOption[] }) => {\n return (\n <ScrollArea className=\"max-h-[70vh] flex flex-col\">\n <Tabs\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"tabs\"}\n trigger={\"Tabs\"}\n value={\"tabs\"}\n content={<TabsSettings />}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={\"Permissions\"}\n value={\"permissions\"}\n content={\n <div className={\"mt-md\"}>\n <PermissionsEditor />\n </div>\n }\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={\"Rules\"}\n value={\"rules\"}\n content={\n <div className={\"mt-md\"}>\n <RulesEditor fieldOptions={fieldOptions} />\n </div>\n }\n />\n ]}\n />\n </ScrollArea>\n );\n};\n\nconst TabSettingsFields = () => {\n return (\n <Grid className={\"mt-md\"}>\n <Grid.Column span={12}>\n <Bind name={\"label\"}>\n <Input label={\"Label\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"icon\"}>\n <IconPicker label={\"Icon\"} />\n </Bind>\n </Grid.Column>\n </Grid>\n );\n};\n\nconst TabDialogContent = ({ fieldOptions }: { fieldOptions: FieldOption[] }) => {\n return (\n <Tabs\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"tab\"}\n trigger={\"Tab\"}\n value={\"tab\"}\n content={<TabSettingsFields />}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={\"Permissions\"}\n value={\"permissions\"}\n content={\n <div className={\"mt-md\"}>\n <PermissionsEditor />\n </div>\n }\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={\"Rules\"}\n value={\"rules\"}\n content={\n <div className={\"mt-md\"}>\n <RulesEditor fieldOptions={fieldOptions} />\n </div>\n }\n />\n ]}\n />\n );\n};\n\n/**\n * Create a synthetic parent field for a tab so that each tab's FieldEditor\n * has a unique identity for cross-parent drag & drop detection.\n */\nfunction createTabParent(tab: CmsTabLayoutTab): CmsModelField {\n return {\n id: tab.id,\n fieldId: `tab:${tab.id}`,\n type: \"tab\",\n label: tab.label,\n renderer: { name: \"\" }\n } as CmsModelField;\n}\n\n/**\n * Resolve fields for a tab by looking up field IDs in the parent's fields array.\n */\nfunction resolveTabFields(tab: CmsTabLayoutTab, parentFields: CmsModelField[]): CmsModelField[] {\n const fieldIds = new Set<string>();\n for (const row of tab.layout) {\n for (const cell of row) {\n if (typeof cell === \"string\") {\n fieldIds.add(cell);\n }\n }\n }\n return parentFields.filter(f => fieldIds.has(f.id));\n}\n\nconst TabItem = ({\n tab,\n index,\n totalTabs,\n field,\n parentFields,\n onUpdate,\n onInsertField,\n onRemoveField,\n onUpdateField\n}: TabItemProps) => {\n const { fieldOptions } = useModelEditor();\n const dialogs = useDialogs();\n\n const { showConfirmation } = useConfirmationDialog({\n title: \"Delete tab\",\n message: `Are you sure you want to delete the tab \"${tab.label}\"? Fields inside this tab will be removed.`,\n acceptLabel: \"Yes, delete tab\"\n });\n\n const isFirst = index === 0;\n const isLast = index === totalTabs - 1;\n\n const tabFields = resolveTabFields(tab, parentFields);\n\n const handleFieldsChange = useCallback(\n ({\n fields: newFields,\n layout: newLayout\n }: {\n fields: CmsModelField[];\n layout: CmsEditorFieldsLayout;\n }) => {\n const oldFieldIds = new Set(tabFields.map(f => f.id));\n const newFieldIds = new Set(newFields.map(f => f.id));\n\n // Find added fields (in new but not in old) -> hoist to parent\n for (const f of newFields) {\n if (!oldFieldIds.has(f.id)) {\n onInsertField(f);\n }\n }\n\n // Find removed fields (in old but not in new) -> un-hoist from parent\n for (const id of oldFieldIds) {\n if (!newFieldIds.has(id)) {\n onRemoveField(id);\n }\n }\n\n // Propagate field updates (e.g. permissions changes) to the parent\n const oldFieldMap = new Map(tabFields.map(f => [f.id, f]));\n for (const f of newFields) {\n if (oldFieldMap.has(f.id) && oldFieldMap.get(f.id) !== f) {\n onUpdateField(f);\n }\n }\n\n // Update the tab's layout in the field\n const updatedTabs = [...field.tabs];\n updatedTabs[index] = { ...tab, layout: newLayout };\n onUpdate({ ...field, tabs: updatedTabs });\n },\n [tab, index, field, tabFields, onUpdate, onInsertField, onRemoveField, onUpdateField]\n );\n\n const moveTabUp = useCallback(() => {\n if (isFirst) {\n return;\n }\n const tabs = [...field.tabs];\n [tabs[index - 1], tabs[index]] = [tabs[index], tabs[index - 1]];\n onUpdate({ ...field, tabs });\n }, [field, index, isFirst, onUpdate]);\n\n const moveTabDown = useCallback(() => {\n if (isLast) {\n return;\n }\n const tabs = [...field.tabs];\n [tabs[index + 1], tabs[index]] = [tabs[index], tabs[index + 1]];\n onUpdate({ ...field, tabs });\n }, [field, index, isLast, onUpdate]);\n\n const deleteTab = useCallback(() => {\n showConfirmation(() => {\n // Collect field IDs to un-hoist\n for (const row of tab.layout) {\n for (const cell of row) {\n if (typeof cell === \"string\") {\n onRemoveField(cell);\n }\n }\n }\n\n const tabs = field.tabs.filter((_, i) => i !== index);\n onUpdate({ ...field, tabs });\n });\n }, [field, index, tab, onUpdate, onRemoveField, showConfirmation]);\n\n const editTab = useCallback(() => {\n dialogs.showDialog({\n title: \"Tab Settings\",\n description: \"Configure the tab and access permissions\",\n acceptLabel: \"Save\",\n cancelLabel: \"Cancel\",\n formData: {\n label: tab.label,\n icon: tab.icon ?? \"\",\n rules: tab.rules ?? []\n },\n content: <TabDialogContent fieldOptions={fieldOptions} />,\n onAccept: data => {\n const updatedTabs = [...field.tabs];\n updatedTabs[index] = {\n ...tab,\n label: data.label ?? tab.label,\n icon: data.icon || undefined,\n rules: data.rules ?? []\n };\n onUpdate({ ...field, tabs: updatedTabs });\n }\n });\n }, [dialogs, field, index, tab, onUpdate]);\n\n return (\n <Accordion.Item\n title={tab.label}\n /* This ensures drop zones are not affected by `overflow-hidden` on the accordion content. */\n className={\"[&>[data-state='open']]:!overflow-visible\"}\n description={`${tabFields.length} field${tabFields.length !== 1 ? \"s\" : \"\"}`}\n actions={\n <>\n <Accordion.Item.Action\n icon={<ArrowUpIcon />}\n onClick={moveTabUp}\n disabled={isFirst}\n />\n <Accordion.Item.Action\n icon={<ArrowDownIcon />}\n onClick={moveTabDown}\n disabled={isLast}\n />\n <Accordion.Item.Action.Separator />\n <Accordion.Item.Action icon={<EditIcon />} onClick={editTab} />\n <Accordion.Item.Action\n icon={<DeleteIcon />}\n onClick={deleteTab}\n disabled={totalTabs <= 1}\n />\n </>\n }\n >\n <FieldEditor\n parent={createTabParent(tab)}\n fields={tabFields}\n layout={tab.layout}\n onChange={handleFieldsChange}\n />\n </Accordion.Item>\n );\n};\n\nexport const TabsLayoutEditor = ({ field, onUpdate, onDelete }: TabsLayoutEditorProps) => {\n const parentEditor = useModelFieldEditor();\n const { fieldOptions } = useModelEditor();\n const { showDialog } = useDialogs();\n const newTabId = useRef<string | undefined>(undefined);\n\n const { showConfirmation: showDeleteConfirmation } = useConfirmationDialog({\n title: \"Delete tabs\",\n message:\n \"Are you sure you want to delete this tabs element? All fields inside the tabs will be removed.\",\n acceptLabel: \"Yes, delete\"\n });\n\n useEffect(() => {\n newTabId.current = undefined;\n }, []);\n\n // Resolve all fields that exist in any tab of this field from the parent's fields\n const getAllParentFields = useCallback((): CmsModelField[] => {\n // Collect all field IDs that exist in any tab of this field\n const allFieldIds = new Set<string>();\n for (const tab of field.tabs) {\n for (const row of tab.layout) {\n for (const cell of row) {\n if (typeof cell === \"string\") {\n allFieldIds.add(cell);\n }\n }\n }\n }\n\n // Resolve them from the parent editor\n const resolved: CmsModelField[] = [];\n for (const id of allFieldIds) {\n const f = parentEditor.getField({ id });\n if (f) {\n resolved.push(f);\n }\n }\n return resolved;\n }, [field, parentEditor]);\n\n const handleInsertField = useCallback(\n (f: CmsModelField) => {\n // Hoist the field to the parent context's fields (without placing in parent's layout)\n const existingField = parentEditor.getField({ id: f.id });\n if (!existingField) {\n parentEditor.addField(f);\n }\n },\n [parentEditor]\n );\n\n const handleRemoveField = useCallback(\n (fieldId: string) => {\n // Un-hoist the field from the parent context's fields\n parentEditor.removeField(fieldId);\n },\n [parentEditor]\n );\n\n const handleUpdateField = useCallback(\n (f: CmsModelField) => {\n parentEditor.updateField(f);\n },\n [parentEditor]\n );\n\n const addTab = useCallback(() => {\n const id = generateAlphaNumericLowerCaseId(8);\n newTabId.current = id;\n const newTab: CmsTabLayoutTab = {\n id,\n label: `Tab ${field.tabs.length + 1}`,\n layout: []\n };\n onUpdate({ ...field, tabs: [...field.tabs, newTab] });\n }, [field, onUpdate]);\n\n const handleDeleteTabs = useCallback(() => {\n showDeleteConfirmation(() => {\n onDelete();\n });\n }, [onDelete, showDeleteConfirmation]);\n\n const editTabsSettings = useCallback(() => {\n showDialog({\n title: \"Tabs Settings\",\n description: \"Configure the tabs and access permissions\",\n acceptLabel: \"Save\",\n cancelLabel: \"Cancel\",\n formData: {\n label: field.label ?? \"\",\n description: field.description ?? \"\",\n help: field.help ?? \"\",\n rules: field.rules ?? []\n },\n content: <TabsDialogContent fieldOptions={fieldOptions} />,\n onAccept: data => {\n onUpdate({\n ...field,\n label: data.label ?? \"\",\n description: data.description || null,\n help: data.help || null,\n rules: data.rules ?? []\n });\n }\n });\n }, [field, onUpdate]);\n\n const resolvedParentFields = getAllParentFields();\n\n return (\n <div>\n <div className={\"flex justify-between\"}>\n <div className={\"flex flex-col\"}>\n <div className={\"flex flex-row items-center\"}>\n <Heading level={6} className={\"text-nowrap\"}>\n {field.label || \"No label\"}\n </Heading>\n </div>\n <Text size=\"sm\" className={\"flex w-full text-neutral-strong\"}>\n Tabs\n </Text>\n </div>\n <div className={\"flex items-center gap-xs\"}>\n <IconButton\n icon={<EditIcon />}\n onClick={editTabsSettings}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n <IconButton\n icon={<DeleteIcon />}\n onClick={handleDeleteTabs}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n </div>\n </div>\n {field.tabs.length > 0 && (\n <Accordion>\n {field.tabs.map((tab, index) => (\n <TabItem\n key={tab.id}\n tab={tab}\n index={index}\n totalTabs={field.tabs.length}\n field={field}\n parentFields={resolvedParentFields}\n onUpdate={onUpdate}\n onInsertField={handleInsertField}\n onRemoveField={handleRemoveField}\n onUpdateField={handleUpdateField}\n />\n ))}\n </Accordion>\n )}\n <div className={\"mt-sm flex justify-center\"}>\n <Button onClick={addTab} text={\"Add Tab\"} icon={<AddIcon />} size={\"sm\"} />\n </div>\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,11 +3,11 @@ import { ReactComponent as AlertIcon } from "@webiny/icons/warning.svg";
3
3
  import { ReactComponent as EditIcon } from "@webiny/icons/edit.svg";
4
4
  import { ReactComponent as DeleteIcon } from "@webiny/icons/delete.svg";
5
5
  import { i18n } from "@webiny/app/i18n/index.js";
6
- import { Alert, Grid, IconButton, Tabs, Textarea, Select, Text } from "@webiny/admin-ui";
6
+ import { Alert, Grid, IconButton, Tabs, Textarea, Select, Text, ScrollArea } from "@webiny/admin-ui";
7
7
  import { useDialogs } from "@webiny/app-admin";
8
8
  import { Bind } from "@webiny/form";
9
- import { PermissionsTab } from "../../../components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js";
10
- import { RulesTab } from "../../../components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js";
9
+ import { PermissionsEditor } from "../../../components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js";
10
+ import { RulesEditor } from "../../../components/FieldEditor/EditFieldDialog/RulesEditor/RulesEditor.js";
11
11
  import { useModelEditor } from "../../../components/ContentModelEditor/useModelEditor.js";
12
12
  const t = i18n.ns("app-headless-cms/admin/fields");
13
13
  const AlertSettings = () => {
@@ -45,7 +45,9 @@ const AlertSettings = () => {
45
45
  const AlertDialogContent = ({
46
46
  fieldOptions
47
47
  }) => {
48
- return /*#__PURE__*/React.createElement(Tabs, {
48
+ return /*#__PURE__*/React.createElement(ScrollArea, {
49
+ className: "max-h-[70vh] flex flex-col"
50
+ }, /*#__PURE__*/React.createElement(Tabs, {
49
51
  size: "md",
50
52
  separator: true,
51
53
  tabs: [/*#__PURE__*/React.createElement(Tabs.Tab, {
@@ -57,19 +59,20 @@ const AlertDialogContent = ({
57
59
  key: "permissions",
58
60
  trigger: "Permissions",
59
61
  value: "permissions",
60
- content: /*#__PURE__*/React.createElement(PermissionsTab, {
61
- gridClassName: "mt-md"
62
- })
62
+ content: /*#__PURE__*/React.createElement("div", {
63
+ className: "mt-md"
64
+ }, /*#__PURE__*/React.createElement(PermissionsEditor, null))
63
65
  }), /*#__PURE__*/React.createElement(Tabs.Tab, {
64
66
  key: "rules",
65
67
  trigger: "Rules",
66
68
  value: "rules",
67
- content: /*#__PURE__*/React.createElement(RulesTab, {
68
- gridClassName: "mt-md",
69
+ content: /*#__PURE__*/React.createElement("div", {
70
+ className: "mt-md"
71
+ }, /*#__PURE__*/React.createElement(RulesEditor, {
69
72
  fieldOptions: fieldOptions
70
- })
73
+ }))
71
74
  })]
72
- });
75
+ }));
73
76
  };
74
77
  const AlertLayoutCell = ({
75
78
  field,
@@ -1 +1 @@
1
- {"version":3,"names":["React","ReactComponent","AlertIcon","EditIcon","DeleteIcon","i18n","Alert","Grid","IconButton","Tabs","Textarea","Select","Text","useDialogs","Bind","PermissionsTab","RulesTab","useModelEditor","t","ns","AlertSettings","createElement","className","Column","span","name","label","defaultValue","displayResetAction","options","value","AlertDialogContent","fieldOptions","size","separator","tabs","Tab","key","trigger","content","gridClassName","AlertLayoutCell","field","onUpdate","onDelete","dialogs","openSettings","showDialog","title","description","acceptLabel","cancelLabel","formData","alertType","rules","onAccept","data","type","icon","onClick","variant","uiAlertField","canEditSettings","createField","render"],"sources":["alert.tsx"],"sourcesContent":["import React from \"react\";\nimport type { CmsModelLayoutFieldTypePlugin } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type {\n CmsAlertLayoutField,\n CmsLayoutField\n} from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { ReactComponent as AlertIcon } from \"@webiny/icons/warning.svg\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Alert, Grid, IconButton, Tabs, Textarea, Select, Text } from \"@webiny/admin-ui\";\nimport { useDialogs } from \"@webiny/app-admin\";\nimport { Bind } from \"@webiny/form\";\nimport { PermissionsTab } from \"~/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js\";\nimport { RulesTab } from \"~/admin/components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js\";\nimport { useModelEditor } from \"~/admin/components/ContentModelEditor/useModelEditor.js\";\nimport type { FieldOption } from \"@webiny/app-headless-cms-common/Fields/fieldOptions.js\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst AlertSettings = () => {\n return (\n <Grid className={\"mt-md\"}>\n <Grid.Column span={12}>\n <Bind name={\"label\"}>\n <Textarea label={\"Message\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"alertType\"} defaultValue={\"info\"}>\n <Select\n displayResetAction={false}\n label={\"Alert type\"}\n options={[\n { value: \"info\", label: \"Info\" },\n { value: \"success\", label: \"Success\" },\n { value: \"warning\", label: \"Warning\" },\n { value: \"danger\", label: \"Danger\" }\n ]}\n />\n </Bind>\n </Grid.Column>\n </Grid>\n );\n};\n\nconst AlertDialogContent = ({ fieldOptions }: { fieldOptions: FieldOption[] }) => {\n return (\n <Tabs\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"alert\"}\n trigger={\"Alert\"}\n value={\"alert\"}\n content={<AlertSettings />}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={\"Permissions\"}\n value={\"permissions\"}\n content={<PermissionsTab gridClassName={\"mt-md\"} />}\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={\"Rules\"}\n value={\"rules\"}\n content={<RulesTab gridClassName={\"mt-md\"} fieldOptions={fieldOptions} />}\n />\n ]}\n />\n );\n};\n\ninterface AlertLayoutCellProps {\n field: CmsAlertLayoutField;\n onUpdate: (d: CmsLayoutField) => void;\n onDelete: () => void;\n}\n\nconst AlertLayoutCell = ({ field, onUpdate, onDelete }: AlertLayoutCellProps) => {\n const { fieldOptions } = useModelEditor();\n const dialogs = useDialogs();\n\n const openSettings = () => {\n dialogs.showDialog({\n title: \"Alert Settings\",\n description: \"Configure the alert and access permissions\",\n acceptLabel: \"Save\",\n cancelLabel: \"Cancel\",\n formData: {\n label: field.label,\n alertType: field.alertType,\n rules: field.rules ?? []\n },\n content: <AlertDialogContent fieldOptions={fieldOptions} />,\n onAccept: data => {\n onUpdate({\n ...field,\n label: data.label ?? \"\",\n alertType: (data.alertType as CmsAlertLayoutField[\"alertType\"]) ?? \"info\",\n rules: data.rules ?? []\n });\n }\n });\n };\n\n return (\n <div className={\"flex items-center justify-between\"}>\n <div className={\"flex-1\"}>\n {field.label ? (\n <Alert type={field.alertType}>{field.label}</Alert>\n ) : (\n <Text size={\"sm\"} className={\"text-neutral-strong italic\"}>\n Alert (no message set)\n </Text>\n )}\n </div>\n <div className={\"flex items-center gap-xs ml-sm\"}>\n <IconButton\n icon={<EditIcon />}\n onClick={openSettings}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n <IconButton\n icon={<DeleteIcon />}\n onClick={onDelete}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n </div>\n </div>\n );\n};\n\nexport const uiAlertField: CmsModelLayoutFieldTypePlugin = {\n type: \"cms-editor-layout-field-type\",\n name: \"cms-editor-layout-field-type-alert\",\n field: {\n type: \"alert\",\n label: t`Alert`,\n description: t`Show an alert message in the form.`,\n icon: <AlertIcon />,\n canEditSettings: true,\n createField() {\n return { type: \"alert\", label: \"\", alertType: \"info\" };\n },\n render({ field, onUpdate, onDelete }) {\n return (\n <AlertLayoutCell\n field={field as CmsAlertLayoutField}\n onUpdate={onUpdate}\n onDelete={onDelete}\n />\n );\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","ReactComponent","AlertIcon","EditIcon","DeleteIcon","i18n","Alert","Grid","IconButton","Tabs","Textarea","Select","Text","ScrollArea","useDialogs","Bind","PermissionsEditor","RulesEditor","useModelEditor","t","ns","AlertSettings","createElement","className","Column","span","name","label","defaultValue","displayResetAction","options","value","AlertDialogContent","fieldOptions","size","separator","tabs","Tab","key","trigger","content","AlertLayoutCell","field","onUpdate","onDelete","dialogs","openSettings","showDialog","title","description","acceptLabel","cancelLabel","formData","alertType","rules","onAccept","data","type","icon","onClick","variant","uiAlertField","canEditSettings","createField","render"],"sources":["alert.tsx"],"sourcesContent":["import React from \"react\";\nimport type { CmsModelLayoutFieldTypePlugin } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type {\n CmsAlertLayoutField,\n CmsLayoutField\n} from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { ReactComponent as AlertIcon } from \"@webiny/icons/warning.svg\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport {\n Alert,\n Grid,\n IconButton,\n Tabs,\n Textarea,\n Select,\n Text,\n ScrollArea\n} from \"@webiny/admin-ui\";\nimport { useDialogs } from \"@webiny/app-admin\";\nimport { Bind } from \"@webiny/form\";\nimport { PermissionsEditor } from \"~/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js\";\nimport { RulesEditor } from \"~/admin/components/FieldEditor/EditFieldDialog/RulesEditor/RulesEditor.js\";\nimport { useModelEditor } from \"~/admin/components/ContentModelEditor/useModelEditor.js\";\nimport type { FieldOption } from \"@webiny/app-headless-cms-common/Fields/fieldOptions.js\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst AlertSettings = () => {\n return (\n <Grid className={\"mt-md\"}>\n <Grid.Column span={12}>\n <Bind name={\"label\"}>\n <Textarea label={\"Message\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"alertType\"} defaultValue={\"info\"}>\n <Select\n displayResetAction={false}\n label={\"Alert type\"}\n options={[\n { value: \"info\", label: \"Info\" },\n { value: \"success\", label: \"Success\" },\n { value: \"warning\", label: \"Warning\" },\n { value: \"danger\", label: \"Danger\" }\n ]}\n />\n </Bind>\n </Grid.Column>\n </Grid>\n );\n};\n\nconst AlertDialogContent = ({ fieldOptions }: { fieldOptions: FieldOption[] }) => {\n return (\n <ScrollArea className=\"max-h-[70vh] flex flex-col\">\n <Tabs\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"alert\"}\n trigger={\"Alert\"}\n value={\"alert\"}\n content={<AlertSettings />}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={\"Permissions\"}\n value={\"permissions\"}\n content={\n <div className={\"mt-md\"}>\n <PermissionsEditor />\n </div>\n }\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={\"Rules\"}\n value={\"rules\"}\n content={\n <div className={\"mt-md\"}>\n <RulesEditor fieldOptions={fieldOptions} />\n </div>\n }\n />\n ]}\n />\n </ScrollArea>\n );\n};\n\ninterface AlertLayoutCellProps {\n field: CmsAlertLayoutField;\n onUpdate: (d: CmsLayoutField) => void;\n onDelete: () => void;\n}\n\nconst AlertLayoutCell = ({ field, onUpdate, onDelete }: AlertLayoutCellProps) => {\n const { fieldOptions } = useModelEditor();\n const dialogs = useDialogs();\n\n const openSettings = () => {\n dialogs.showDialog({\n title: \"Alert Settings\",\n description: \"Configure the alert and access permissions\",\n acceptLabel: \"Save\",\n cancelLabel: \"Cancel\",\n formData: {\n label: field.label,\n alertType: field.alertType,\n rules: field.rules ?? []\n },\n content: <AlertDialogContent fieldOptions={fieldOptions} />,\n onAccept: data => {\n onUpdate({\n ...field,\n label: data.label ?? \"\",\n alertType: (data.alertType as CmsAlertLayoutField[\"alertType\"]) ?? \"info\",\n rules: data.rules ?? []\n });\n }\n });\n };\n\n return (\n <div className={\"flex items-center justify-between\"}>\n <div className={\"flex-1\"}>\n {field.label ? (\n <Alert type={field.alertType}>{field.label}</Alert>\n ) : (\n <Text size={\"sm\"} className={\"text-neutral-strong italic\"}>\n Alert (no message set)\n </Text>\n )}\n </div>\n <div className={\"flex items-center gap-xs ml-sm\"}>\n <IconButton\n icon={<EditIcon />}\n onClick={openSettings}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n <IconButton\n icon={<DeleteIcon />}\n onClick={onDelete}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n </div>\n </div>\n );\n};\n\nexport const uiAlertField: CmsModelLayoutFieldTypePlugin = {\n type: \"cms-editor-layout-field-type\",\n name: \"cms-editor-layout-field-type-alert\",\n field: {\n type: \"alert\",\n label: t`Alert`,\n description: t`Show an alert message in the form.`,\n icon: <AlertIcon />,\n canEditSettings: true,\n createField() {\n return { type: \"alert\", label: \"\", alertType: \"info\" };\n },\n render({ field, onUpdate, onDelete }) {\n return (\n <AlertLayoutCell\n field={field as CmsAlertLayoutField}\n onUpdate={onUpdate}\n onDelete={onDelete}\n />\n );\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,11 +3,11 @@ import { ReactComponent as SeparatorIcon } from "@webiny/icons/line_style.svg";
3
3
  import { ReactComponent as EditIcon } from "@webiny/icons/edit.svg";
4
4
  import { ReactComponent as DeleteIcon } from "@webiny/icons/delete.svg";
5
5
  import { i18n } from "@webiny/app/i18n/index.js";
6
- import { Grid, IconButton, Input, Separator, Tabs, Text } from "@webiny/admin-ui";
6
+ import { Grid, IconButton, Input, ScrollArea, Separator, Tabs, Text } from "@webiny/admin-ui";
7
7
  import { useDialogs } from "@webiny/app-admin";
8
8
  import { Bind } from "@webiny/form";
9
- import { PermissionsTab } from "../../../components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js";
10
- import { RulesTab } from "../../../components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js";
9
+ import { PermissionsEditor } from "../../../components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js";
10
+ import { RulesEditor } from "../../../components/FieldEditor/EditFieldDialog/RulesEditor/RulesEditor.js";
11
11
  import { useModelEditor } from "../../../components/ContentModelEditor/useModelEditor.js";
12
12
  const t = i18n.ns("app-headless-cms/admin/fields");
13
13
  const SeparatorSettings = () => {
@@ -30,7 +30,9 @@ const SeparatorSettings = () => {
30
30
  const SeparatorDialogContent = ({
31
31
  fieldOptions
32
32
  }) => {
33
- return /*#__PURE__*/React.createElement(Tabs, {
33
+ return /*#__PURE__*/React.createElement(ScrollArea, {
34
+ className: "max-h-[70vh] flex flex-col"
35
+ }, /*#__PURE__*/React.createElement(Tabs, {
34
36
  size: "md",
35
37
  separator: true,
36
38
  tabs: [/*#__PURE__*/React.createElement(Tabs.Tab, {
@@ -42,19 +44,20 @@ const SeparatorDialogContent = ({
42
44
  key: "permissions",
43
45
  trigger: "Permissions",
44
46
  value: "permissions",
45
- content: /*#__PURE__*/React.createElement(PermissionsTab, {
46
- gridClassName: "mt-md"
47
- })
47
+ content: /*#__PURE__*/React.createElement("div", {
48
+ className: "mt-md"
49
+ }, /*#__PURE__*/React.createElement(PermissionsEditor, null))
48
50
  }), /*#__PURE__*/React.createElement(Tabs.Tab, {
49
51
  key: "rules",
50
52
  trigger: "Rules",
51
53
  value: "rules",
52
- content: /*#__PURE__*/React.createElement(RulesTab, {
53
- gridClassName: "mt-md",
54
+ content: /*#__PURE__*/React.createElement("div", {
55
+ className: "mt-md"
56
+ }, /*#__PURE__*/React.createElement(RulesEditor, {
54
57
  fieldOptions: fieldOptions
55
- })
58
+ }))
56
59
  })]
57
- });
60
+ }));
58
61
  };
59
62
  const SeparatorLayoutCell = ({
60
63
  field,
@@ -1 +1 @@
1
- {"version":3,"names":["React","ReactComponent","SeparatorIcon","EditIcon","DeleteIcon","i18n","Grid","IconButton","Input","Separator","Tabs","Text","useDialogs","Bind","PermissionsTab","RulesTab","useModelEditor","t","ns","SeparatorSettings","createElement","className","Column","span","name","label","SeparatorDialogContent","fieldOptions","size","separator","tabs","Tab","key","trigger","value","content","gridClassName","SeparatorLayoutCell","field","onUpdate","onDelete","dialogs","openSettings","showDialog","title","description","acceptLabel","cancelLabel","formData","rules","onAccept","data","variant","labelPosition","as","icon","onClick","uiSeparatorField","type","canEditSettings","createField","render"],"sources":["separator.tsx"],"sourcesContent":["import React from \"react\";\nimport type { CmsModelLayoutFieldTypePlugin } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type {\n CmsSeparatorLayoutField,\n CmsLayoutField\n} from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { ReactComponent as SeparatorIcon } from \"@webiny/icons/line_style.svg\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Grid, IconButton, Input, Separator, Tabs, Text } from \"@webiny/admin-ui\";\nimport { useDialogs } from \"@webiny/app-admin\";\nimport { Bind } from \"@webiny/form\";\nimport { PermissionsTab } from \"~/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js\";\nimport { RulesTab } from \"~/admin/components/FieldEditor/EditFieldDialog/RulesTab/RulesTab.js\";\nimport { useModelEditor } from \"~/admin/components/ContentModelEditor/useModelEditor.js\";\nimport type { FieldOption } from \"@webiny/app-headless-cms-common/Fields/fieldOptions.js\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst SeparatorSettings = () => {\n return (\n <Grid className={\"mt-md\"}>\n <Grid.Column span={12}>\n <Bind name={\"label\"}>\n <Input label={\"Label\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"description\"}>\n <Input label={\"Description\"} />\n </Bind>\n </Grid.Column>\n </Grid>\n );\n};\n\nconst SeparatorDialogContent = ({ fieldOptions }: { fieldOptions: FieldOption[] }) => {\n return (\n <Tabs\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"separator\"}\n trigger={\"Separator\"}\n value={\"separator\"}\n content={<SeparatorSettings />}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={\"Permissions\"}\n value={\"permissions\"}\n content={<PermissionsTab gridClassName={\"mt-md\"} />}\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={\"Rules\"}\n value={\"rules\"}\n content={<RulesTab gridClassName={\"mt-md\"} fieldOptions={fieldOptions} />}\n />\n ]}\n />\n );\n};\n\ninterface SeparatorLayoutCellProps {\n field: CmsSeparatorLayoutField;\n onUpdate: (d: CmsLayoutField) => void;\n onDelete: () => void;\n}\n\nconst SeparatorLayoutCell = ({ field, onUpdate, onDelete }: SeparatorLayoutCellProps) => {\n const { fieldOptions } = useModelEditor();\n const dialogs = useDialogs();\n\n const openSettings = () => {\n dialogs.showDialog({\n title: \"Separator Settings\",\n description: \"Configure the separator and access permissions\",\n acceptLabel: \"Save\",\n cancelLabel: \"Cancel\",\n formData: {\n label: field.label,\n description: field.description ?? \"\",\n rules: field.rules ?? []\n },\n content: <SeparatorDialogContent fieldOptions={fieldOptions} />,\n onAccept: data => {\n onUpdate({\n ...field,\n label: data.label ?? \"\",\n description: data.description ?? \"\",\n rules: data.rules ?? []\n });\n }\n });\n };\n\n return (\n <div className={\"flex items-center gap-sm\"}>\n <div className={\"flex-1\"}>\n <Separator variant={\"accent\"} labelPosition={\"start\"}>\n {field.label}\n </Separator>\n {field.description && (\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-strong mt-sm\"}>\n {field.description}\n </Text>\n )}\n </div>\n <div className={\"flex items-center gap-xs\"}>\n <IconButton\n icon={<EditIcon />}\n onClick={openSettings}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n <IconButton\n icon={<DeleteIcon />}\n onClick={onDelete}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n </div>\n </div>\n );\n};\n\nexport const uiSeparatorField: CmsModelLayoutFieldTypePlugin = {\n type: \"cms-editor-layout-field-type\",\n name: \"cms-editor-layout-field-type-separator\",\n field: {\n type: \"separator\",\n label: t`Separator`,\n description: t`Show a visual separator between fields.`,\n icon: <SeparatorIcon />,\n canEditSettings: true,\n createField() {\n return {\n type: \"separator\",\n label: \"Section\",\n description: \"Your description goes here\"\n };\n },\n render({ field, onUpdate, onDelete }) {\n return (\n <SeparatorLayoutCell\n field={field as CmsSeparatorLayoutField}\n onUpdate={onUpdate}\n onDelete={onDelete}\n />\n );\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","ReactComponent","SeparatorIcon","EditIcon","DeleteIcon","i18n","Grid","IconButton","Input","ScrollArea","Separator","Tabs","Text","useDialogs","Bind","PermissionsEditor","RulesEditor","useModelEditor","t","ns","SeparatorSettings","createElement","className","Column","span","name","label","SeparatorDialogContent","fieldOptions","size","separator","tabs","Tab","key","trigger","value","content","SeparatorLayoutCell","field","onUpdate","onDelete","dialogs","openSettings","showDialog","title","description","acceptLabel","cancelLabel","formData","rules","onAccept","data","variant","labelPosition","as","icon","onClick","uiSeparatorField","type","canEditSettings","createField","render"],"sources":["separator.tsx"],"sourcesContent":["import React from \"react\";\nimport type { CmsModelLayoutFieldTypePlugin } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type {\n CmsSeparatorLayoutField,\n CmsLayoutField\n} from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { ReactComponent as SeparatorIcon } from \"@webiny/icons/line_style.svg\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Grid, IconButton, Input, ScrollArea, Separator, Tabs, Text } from \"@webiny/admin-ui\";\nimport { useDialogs } from \"@webiny/app-admin\";\nimport { Bind } from \"@webiny/form\";\nimport { PermissionsEditor } from \"~/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js\";\nimport { RulesEditor } from \"~/admin/components/FieldEditor/EditFieldDialog/RulesEditor/RulesEditor.js\";\nimport { useModelEditor } from \"~/admin/components/ContentModelEditor/useModelEditor.js\";\nimport type { FieldOption } from \"@webiny/app-headless-cms-common/Fields/fieldOptions.js\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields\");\n\nconst SeparatorSettings = () => {\n return (\n <Grid className={\"mt-md\"}>\n <Grid.Column span={12}>\n <Bind name={\"label\"}>\n <Input label={\"Label\"} />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"description\"}>\n <Input label={\"Description\"} />\n </Bind>\n </Grid.Column>\n </Grid>\n );\n};\n\nconst SeparatorDialogContent = ({ fieldOptions }: { fieldOptions: FieldOption[] }) => {\n return (\n <ScrollArea className=\"max-h-[70vh] flex flex-col\">\n <Tabs\n size={\"md\"}\n separator\n tabs={[\n <Tabs.Tab\n key={\"separator\"}\n trigger={\"Separator\"}\n value={\"separator\"}\n content={<SeparatorSettings />}\n />,\n <Tabs.Tab\n key={\"permissions\"}\n trigger={\"Permissions\"}\n value={\"permissions\"}\n content={\n <div className={\"mt-md\"}>\n <PermissionsEditor />\n </div>\n }\n />,\n <Tabs.Tab\n key={\"rules\"}\n trigger={\"Rules\"}\n value={\"rules\"}\n content={\n <div className={\"mt-md\"}>\n <RulesEditor fieldOptions={fieldOptions} />\n </div>\n }\n />\n ]}\n />\n </ScrollArea>\n );\n};\n\ninterface SeparatorLayoutCellProps {\n field: CmsSeparatorLayoutField;\n onUpdate: (d: CmsLayoutField) => void;\n onDelete: () => void;\n}\n\nconst SeparatorLayoutCell = ({ field, onUpdate, onDelete }: SeparatorLayoutCellProps) => {\n const { fieldOptions } = useModelEditor();\n const dialogs = useDialogs();\n\n const openSettings = () => {\n dialogs.showDialog({\n title: \"Separator Settings\",\n description: \"Configure the separator and access permissions\",\n acceptLabel: \"Save\",\n cancelLabel: \"Cancel\",\n formData: {\n label: field.label,\n description: field.description ?? \"\",\n rules: field.rules ?? []\n },\n content: <SeparatorDialogContent fieldOptions={fieldOptions} />,\n onAccept: data => {\n onUpdate({\n ...field,\n label: data.label ?? \"\",\n description: data.description ?? \"\",\n rules: data.rules ?? []\n });\n }\n });\n };\n\n return (\n <div className={\"flex items-center gap-sm\"}>\n <div className={\"flex-1\"}>\n <Separator variant={\"accent\"} labelPosition={\"start\"}>\n {field.label}\n </Separator>\n {field.description && (\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-strong mt-sm\"}>\n {field.description}\n </Text>\n )}\n </div>\n <div className={\"flex items-center gap-xs\"}>\n <IconButton\n icon={<EditIcon />}\n onClick={openSettings}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n <IconButton\n icon={<DeleteIcon />}\n onClick={onDelete}\n variant={\"ghost\"}\n size={\"sm\"}\n />\n </div>\n </div>\n );\n};\n\nexport const uiSeparatorField: CmsModelLayoutFieldTypePlugin = {\n type: \"cms-editor-layout-field-type\",\n name: \"cms-editor-layout-field-type-separator\",\n field: {\n type: \"separator\",\n label: t`Separator`,\n description: t`Show a visual separator between fields.`,\n icon: <SeparatorIcon />,\n canEditSettings: true,\n createField() {\n return {\n type: \"separator\",\n label: \"Section\",\n description: \"Your description goes here\"\n };\n },\n render({ field, onUpdate, onDelete }) {\n return (\n <SeparatorLayoutCell\n field={field as CmsSeparatorLayoutField}\n onUpdate={onUpdate}\n onDelete={onDelete}\n />\n );\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,14 +1,11 @@
1
1
  import React, { useCallback } from "react";
2
- import { CircularProgress } from "@webiny/ui/Progress/index.js";
3
- import * as UID from "@webiny/ui/Dialog/index.js";
4
- import { Dialog } from "../../../components/Dialog.js";
5
2
  import { i18n } from "@webiny/app/i18n/index.js";
6
- import { ImportButton } from "./components/ImportButton.js";
7
3
  import { FileUpload } from "./components/FileUpload.js";
8
4
  import { Errors } from "./components/Errors.js";
9
5
  import { DataList } from "./components/DataList.js";
10
6
  import { DataListInstructions } from "./components/Model/DataListInstructions.js";
11
7
  import { ImportContextProvider } from "./ImportContext.js";
8
+ import { Dialog, Loader } from "@webiny/admin-ui";
12
9
  const t = i18n.ns("app-headless-cms/admin/views/content-models/import-content-models-dialog");
13
10
  export const ImportContentModelsDialog = props => {
14
11
  const {
@@ -28,19 +25,24 @@ export const ImportContentModelsDialog = props => {
28
25
  file
29
26
  }) => {
30
27
  const onClick = validated ? handleModelsImport : handleModelsValidation;
28
+ const disabledConfirm = errors.length > 0 || loading || !file || validated && !hasSelected();
31
29
  return /*#__PURE__*/React.createElement(Dialog, {
32
30
  open: true,
33
31
  onClose: onCloseClick,
34
- "data-testid": "cms-import-content-models-modal"
35
- }, loading && /*#__PURE__*/React.createElement(CircularProgress, {
36
- label: "Loading..."
37
- }), /*#__PURE__*/React.createElement(UID.DialogTitle, null, t`Import Content Models`), /*#__PURE__*/React.createElement(UID.DialogContent, null, /*#__PURE__*/React.createElement(FileUpload, null), validated && /*#__PURE__*/React.createElement(DataListInstructions, null), /*#__PURE__*/React.createElement(Errors, {
32
+ "data-testid": "cms-import-content-models-modal",
33
+ title: t`Import Content Models`,
34
+ actions: /*#__PURE__*/React.createElement(Dialog.ConfirmAction, {
35
+ onClick: onClick,
36
+ text: validated ? t`Import` : t`Validate file`,
37
+ disabled: disabledConfirm
38
+ })
39
+ }, loading ? /*#__PURE__*/React.createElement(Loader, {
40
+ text: "Loading..."
41
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FileUpload, null), /*#__PURE__*/React.createElement("div", {
42
+ className: "max-h-[50dvh] overflow-auto"
43
+ }, validated && /*#__PURE__*/React.createElement(DataListInstructions, null), /*#__PURE__*/React.createElement(Errors, {
38
44
  errors: errors
39
- }), /*#__PURE__*/React.createElement(DataList, null)), /*#__PURE__*/React.createElement(UID.DialogActions, null, /*#__PURE__*/React.createElement(ImportButton, {
40
- onClick: onClick,
41
- validated: validated,
42
- disabled: errors.length > 0 || loading || !file || validated && !hasSelected()
43
- })));
45
+ }), /*#__PURE__*/React.createElement(DataList, null))));
44
46
  });
45
47
  };
46
48
 
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","CircularProgress","UID","Dialog","i18n","ImportButton","FileUpload","Errors","DataList","DataListInstructions","ImportContextProvider","t","ns","ImportContentModelsDialog","props","onClose","onCloseClick","window","location","reload","createElement","loading","errors","validated","handleModelsImport","hasSelected","handleModelsValidation","file","onClick","open","label","DialogTitle","DialogContent","DialogActions","disabled","length"],"sources":["ImportContentModelsDialog.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { CircularProgress } from \"@webiny/ui/Progress/index.js\";\nimport * as UID from \"@webiny/ui/Dialog/index.js\";\nimport { Dialog } from \"~/admin/components/Dialog.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { ImportButton } from \"./components/ImportButton.js\";\nimport { FileUpload } from \"./components/FileUpload.js\";\nimport { Errors } from \"./components/Errors.js\";\nimport { DataList } from \"./components/DataList.js\";\nimport { DataListInstructions } from \"./components/Model/DataListInstructions.js\";\nimport { ImportContextProvider } from \"~/admin/views/contentModels/importing/ImportContext.js\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/views/content-models/import-content-models-dialog\");\n\nexport interface ImportContentModelsDialogProps {\n onClose: () => void;\n}\n\nexport const ImportContentModelsDialog = (props: ImportContentModelsDialogProps) => {\n const { onClose } = props;\n\n const onCloseClick = useCallback(() => {\n window.location.reload();\n onClose();\n }, [onClose]);\n\n return (\n <ImportContextProvider>\n {({\n loading,\n errors,\n validated,\n handleModelsImport,\n hasSelected,\n handleModelsValidation,\n file\n }) => {\n const onClick = validated ? handleModelsImport : handleModelsValidation;\n return (\n <Dialog\n open={true}\n onClose={onCloseClick}\n data-testid=\"cms-import-content-models-modal\"\n >\n {loading && <CircularProgress label={\"Loading...\"} />}\n <UID.DialogTitle>{t`Import Content Models`}</UID.DialogTitle>\n <UID.DialogContent>\n <FileUpload />\n {validated && <DataListInstructions />}\n <Errors errors={errors} />\n <DataList />\n </UID.DialogContent>\n <UID.DialogActions>\n <ImportButton\n onClick={onClick}\n validated={validated}\n disabled={\n errors.length > 0 ||\n loading ||\n !file ||\n (validated && !hasSelected())\n }\n />\n </UID.DialogActions>\n </Dialog>\n );\n }}\n </ImportContextProvider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,gBAAgB,QAAQ,8BAA8B;AAC/D,OAAO,KAAKC,GAAG,MAAM,4BAA4B;AACjD,SAASC,MAAM;AACf,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,YAAY;AACrB,SAASC,UAAU;AACnB,SAASC,MAAM;AACf,SAASC,QAAQ;AACjB,SAASC,oBAAoB;AAC7B,SAASC,qBAAqB;AAE9B,MAAMC,CAAC,GAAGP,IAAI,CAACQ,EAAE,CAAC,0EAA0E,CAAC;AAM7F,OAAO,MAAMC,yBAAyB,GAAIC,KAAqC,IAAK;EAChF,MAAM;IAAEC;EAAQ,CAAC,GAAGD,KAAK;EAEzB,MAAME,YAAY,GAAGhB,WAAW,CAAC,MAAM;IACnCiB,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC,CAAC;IACxBJ,OAAO,CAAC,CAAC;EACb,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb,oBACIhB,KAAA,CAAAqB,aAAA,CAACV,qBAAqB,QACjB,CAAC;IACEW,OAAO;IACPC,MAAM;IACNC,SAAS;IACTC,kBAAkB;IAClBC,WAAW;IACXC,sBAAsB;IACtBC;EACJ,CAAC,KAAK;IACF,MAAMC,OAAO,GAAGL,SAAS,GAAGC,kBAAkB,GAAGE,sBAAsB;IACvE,oBACI3B,KAAA,CAAAqB,aAAA,CAACjB,MAAM;MACH0B,IAAI,EAAE,IAAK;MACXd,OAAO,EAAEC,YAAa;MACtB,eAAY;IAAiC,GAE5CK,OAAO,iBAAItB,KAAA,CAAAqB,aAAA,CAACnB,gBAAgB;MAAC6B,KAAK,EAAE;IAAa,CAAE,CAAC,eACrD/B,KAAA,CAAAqB,aAAA,CAAClB,GAAG,CAAC6B,WAAW,QAAEpB,CAAC,uBAAyC,CAAC,eAC7DZ,KAAA,CAAAqB,aAAA,CAAClB,GAAG,CAAC8B,aAAa,qBACdjC,KAAA,CAAAqB,aAAA,CAACd,UAAU,MAAE,CAAC,EACbiB,SAAS,iBAAIxB,KAAA,CAAAqB,aAAA,CAACX,oBAAoB,MAAE,CAAC,eACtCV,KAAA,CAAAqB,aAAA,CAACb,MAAM;MAACe,MAAM,EAAEA;IAAO,CAAE,CAAC,eAC1BvB,KAAA,CAAAqB,aAAA,CAACZ,QAAQ,MAAE,CACI,CAAC,eACpBT,KAAA,CAAAqB,aAAA,CAAClB,GAAG,CAAC+B,aAAa,qBACdlC,KAAA,CAAAqB,aAAA,CAACf,YAAY;MACTuB,OAAO,EAAEA,OAAQ;MACjBL,SAAS,EAAEA,SAAU;MACrBW,QAAQ,EACJZ,MAAM,CAACa,MAAM,GAAG,CAAC,IACjBd,OAAO,IACP,CAACM,IAAI,IACJJ,SAAS,IAAI,CAACE,WAAW,CAAC;IAC9B,CACJ,CACc,CACf,CAAC;EAEjB,CACmB,CAAC;AAEhC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","i18n","FileUpload","Errors","DataList","DataListInstructions","ImportContextProvider","Dialog","Loader","t","ns","ImportContentModelsDialog","props","onClose","onCloseClick","window","location","reload","createElement","loading","errors","validated","handleModelsImport","hasSelected","handleModelsValidation","file","onClick","disabledConfirm","length","open","title","actions","ConfirmAction","text","disabled","Fragment","className"],"sources":["ImportContentModelsDialog.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { FileUpload } from \"./components/FileUpload.js\";\nimport { Errors } from \"./components/Errors.js\";\nimport { DataList } from \"./components/DataList.js\";\nimport { DataListInstructions } from \"./components/Model/DataListInstructions.js\";\nimport { ImportContextProvider } from \"~/admin/views/contentModels/importing/ImportContext.js\";\nimport { Dialog, Loader } from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/views/content-models/import-content-models-dialog\");\n\nexport interface ImportContentModelsDialogProps {\n onClose: () => void;\n}\n\nexport const ImportContentModelsDialog = (props: ImportContentModelsDialogProps) => {\n const { onClose } = props;\n\n const onCloseClick = useCallback(() => {\n window.location.reload();\n onClose();\n }, [onClose]);\n\n return (\n <ImportContextProvider>\n {({\n loading,\n errors,\n validated,\n handleModelsImport,\n hasSelected,\n handleModelsValidation,\n file\n }) => {\n const onClick = validated ? handleModelsImport : handleModelsValidation;\n\n const disabledConfirm =\n errors.length > 0 || loading || !file || (validated && !hasSelected());\n\n return (\n <Dialog\n open={true}\n onClose={onCloseClick}\n data-testid=\"cms-import-content-models-modal\"\n title={t`Import Content Models`}\n actions={\n <Dialog.ConfirmAction\n onClick={onClick}\n text={validated ? t`Import` : t`Validate file`}\n disabled={disabledConfirm}\n />\n }\n >\n {loading ? (\n <Loader text={\"Loading...\"} />\n ) : (\n <>\n <FileUpload />\n <div className={\"max-h-[50dvh] overflow-auto\"}>\n {validated && <DataListInstructions />}\n <Errors errors={errors} />\n <DataList />\n </div>\n </>\n )}\n </Dialog>\n );\n }}\n </ImportContextProvider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,UAAU;AACnB,SAASC,MAAM;AACf,SAASC,QAAQ;AACjB,SAASC,oBAAoB;AAC7B,SAASC,qBAAqB;AAC9B,SAASC,MAAM,EAAEC,MAAM,QAAQ,kBAAkB;AAEjD,MAAMC,CAAC,GAAGR,IAAI,CAACS,EAAE,CAAC,0EAA0E,CAAC;AAM7F,OAAO,MAAMC,yBAAyB,GAAIC,KAAqC,IAAK;EAChF,MAAM;IAAEC;EAAQ,CAAC,GAAGD,KAAK;EAEzB,MAAME,YAAY,GAAGd,WAAW,CAAC,MAAM;IACnCe,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC,CAAC;IACxBJ,OAAO,CAAC,CAAC;EACb,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb,oBACId,KAAA,CAAAmB,aAAA,CAACZ,qBAAqB,QACjB,CAAC;IACEa,OAAO;IACPC,MAAM;IACNC,SAAS;IACTC,kBAAkB;IAClBC,WAAW;IACXC,sBAAsB;IACtBC;EACJ,CAAC,KAAK;IACF,MAAMC,OAAO,GAAGL,SAAS,GAAGC,kBAAkB,GAAGE,sBAAsB;IAEvE,MAAMG,eAAe,GACjBP,MAAM,CAACQ,MAAM,GAAG,CAAC,IAAIT,OAAO,IAAI,CAACM,IAAI,IAAKJ,SAAS,IAAI,CAACE,WAAW,CAAC,CAAE;IAE1E,oBACIxB,KAAA,CAAAmB,aAAA,CAACX,MAAM;MACHsB,IAAI,EAAE,IAAK;MACXhB,OAAO,EAAEC,YAAa;MACtB,eAAY,iCAAiC;MAC7CgB,KAAK,EAAErB,CAAC,uBAAwB;MAChCsB,OAAO,eACHhC,KAAA,CAAAmB,aAAA,CAACX,MAAM,CAACyB,aAAa;QACjBN,OAAO,EAAEA,OAAQ;QACjBO,IAAI,EAAEZ,SAAS,GAAGZ,CAAC,QAAQ,GAAGA,CAAC,eAAgB;QAC/CyB,QAAQ,EAAEP;MAAgB,CAC7B;IACJ,GAEAR,OAAO,gBACJpB,KAAA,CAAAmB,aAAA,CAACV,MAAM;MAACyB,IAAI,EAAE;IAAa,CAAE,CAAC,gBAE9BlC,KAAA,CAAAmB,aAAA,CAAAnB,KAAA,CAAAoC,QAAA,qBACIpC,KAAA,CAAAmB,aAAA,CAAChB,UAAU,MAAE,CAAC,eACdH,KAAA,CAAAmB,aAAA;MAAKkB,SAAS,EAAE;IAA8B,GACzCf,SAAS,iBAAItB,KAAA,CAAAmB,aAAA,CAACb,oBAAoB,MAAE,CAAC,eACtCN,KAAA,CAAAmB,aAAA,CAACf,MAAM;MAACiB,MAAM,EAAEA;IAAO,CAAE,CAAC,eAC1BrB,KAAA,CAAAmB,aAAA,CAACd,QAAQ,MAAE,CACV,CACP,CAEF,CAAC;EAEjB,CACmB,CAAC;AAEhC,CAAC","ignoreList":[]}
@@ -1 +1,2 @@
1
- export { PermissionsTab } from "../../../admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js";
1
+ export { RulesEditor } from "../../../admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.js";
2
+ export { PermissionsEditor } from "../../../admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js";
@@ -1,3 +1,4 @@
1
- export { PermissionsTab } from "../../../admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js";
1
+ export { RulesEditor } from "../../../admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.js";
2
+ export { PermissionsEditor } from "../../../admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js";
2
3
 
3
4
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PermissionsTab"],"sources":["model.ts"],"sourcesContent":["export { PermissionsTab } from \"~/admin/components/FieldEditor/EditFieldDialog/PermissionsTab/PermissionsTab.js\";\n"],"mappings":"AAAA,SAASA,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["RulesEditor","PermissionsEditor"],"sources":["model.ts"],"sourcesContent":["export { RulesEditor } from \"~/admin/components/FieldEditor/EditFieldDialog/RulesEditor/index.js\";\nexport { PermissionsEditor } from \"~/admin/components/FieldEditor/EditFieldDialog/PermissionsEditor/PermissionsEditor.js\";\n"],"mappings":"AAAA,SAASA,WAAW;AACpB,SAASC,iBAAiB","ignoreList":[]}
@@ -1,8 +1,11 @@
1
- export { CmsModelFieldType } from "../../admin/components/CmsModelFieldType.js";
2
- export { CmsModelFieldRenderer } from "../../admin/components/CmsModelFieldRenderer.js";
3
- export { CmsModelLayoutFieldType } from "../../admin/components/CmsModelLayoutFieldType.js";
4
- export { CmsModelLayoutFieldRenderer } from "../../admin/components/CmsModelLayoutFieldRenderer.js";
1
+ export { CmsContentFormRenderer } from "../../legacyPluginAdapters/CmsContentFormRenderer.js";
2
+ export { CmsModelFieldValidator } from "../../legacyPluginAdapters/CmsModelFieldValidator.js";
3
+ export { CmsModelFieldType } from "../../legacyPluginAdapters/CmsModelFieldType.js";
4
+ export { CmsModelFieldRenderer } from "../../legacyPluginAdapters/CmsModelFieldRenderer.js";
5
+ export { CmsModelLayoutFieldType } from "../../legacyPluginAdapters/CmsModelLayoutFieldType.js";
6
+ export { CmsModelLayoutFieldRenderer } from "../../legacyPluginAdapters/CmsModelLayoutFieldRenderer.js";
5
7
  export { useQuery } from "../../admin/hooks/useQuery.js";
8
+ export { useCms } from "../../admin/hooks/useCms.js";
6
9
  export { useLazyQuery } from "../../admin/hooks/useLazyQuery.js";
7
10
  export { useMutation } from "../../admin/hooks/useMutation.js";
8
11
  export { useModel } from "../../admin/components/ModelProvider/index.js";
@@ -1,8 +1,11 @@
1
- export { CmsModelFieldType } from "../../admin/components/CmsModelFieldType.js";
2
- export { CmsModelFieldRenderer } from "../../admin/components/CmsModelFieldRenderer.js";
3
- export { CmsModelLayoutFieldType } from "../../admin/components/CmsModelLayoutFieldType.js";
4
- export { CmsModelLayoutFieldRenderer } from "../../admin/components/CmsModelLayoutFieldRenderer.js";
1
+ export { CmsContentFormRenderer } from "../../legacyPluginAdapters/CmsContentFormRenderer.js";
2
+ export { CmsModelFieldValidator } from "../../legacyPluginAdapters/CmsModelFieldValidator.js";
3
+ export { CmsModelFieldType } from "../../legacyPluginAdapters/CmsModelFieldType.js";
4
+ export { CmsModelFieldRenderer } from "../../legacyPluginAdapters/CmsModelFieldRenderer.js";
5
+ export { CmsModelLayoutFieldType } from "../../legacyPluginAdapters/CmsModelLayoutFieldType.js";
6
+ export { CmsModelLayoutFieldRenderer } from "../../legacyPluginAdapters/CmsModelLayoutFieldRenderer.js";
5
7
  export { useQuery } from "../../admin/hooks/useQuery.js";
8
+ export { useCms } from "../../admin/hooks/useCms.js";
6
9
  export { useLazyQuery } from "../../admin/hooks/useLazyQuery.js";
7
10
  export { useMutation } from "../../admin/hooks/useMutation.js";
8
11
  export { useModel } from "../../admin/components/ModelProvider/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["CmsModelFieldType","CmsModelFieldRenderer","CmsModelLayoutFieldType","CmsModelLayoutFieldRenderer","useQuery","useLazyQuery","useMutation","useModel","usePermission","IsModelPublishable","Routes"],"sources":["cms.ts"],"sourcesContent":["export { CmsModelFieldType } from \"~/admin/components/CmsModelFieldType.js\";\nexport { CmsModelFieldRenderer } from \"~/admin/components/CmsModelFieldRenderer.js\";\nexport { CmsModelLayoutFieldType } from \"~/admin/components/CmsModelLayoutFieldType.js\";\nexport { CmsModelLayoutFieldRenderer } from \"~/admin/components/CmsModelLayoutFieldRenderer.js\";\nexport { useQuery } from \"~/admin/hooks/useQuery.js\";\nexport { useLazyQuery } from \"~/admin/hooks/useLazyQuery.js\";\nexport { useMutation } from \"~/admin/hooks/useMutation.js\";\nexport { useModel } from \"~/admin/components/ModelProvider/index.js\";\nexport { usePermission } from \"~/admin/hooks/usePermission.js\";\nexport { IsModelPublishable } from \"~/admin/components/IsModelPublishable.js\";\nexport { Routes } from \"~/routes.js\";\n"],"mappings":"AAAA,SAASA,iBAAiB;AAC1B,SAASC,qBAAqB;AAC9B,SAASC,uBAAuB;AAChC,SAASC,2BAA2B;AACpC,SAASC,QAAQ;AACjB,SAASC,YAAY;AACrB,SAASC,WAAW;AACpB,SAASC,QAAQ;AACjB,SAASC,aAAa;AACtB,SAASC,kBAAkB;AAC3B,SAASC,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["CmsContentFormRenderer","CmsModelFieldValidator","CmsModelFieldType","CmsModelFieldRenderer","CmsModelLayoutFieldType","CmsModelLayoutFieldRenderer","useQuery","useCms","useLazyQuery","useMutation","useModel","usePermission","IsModelPublishable","Routes"],"sources":["cms.ts"],"sourcesContent":["export { CmsContentFormRenderer } from \"~/legacyPluginAdapters/CmsContentFormRenderer.js\";\nexport { CmsModelFieldValidator } from \"~/legacyPluginAdapters/CmsModelFieldValidator.js\";\nexport { CmsModelFieldType } from \"~/legacyPluginAdapters/CmsModelFieldType.js\";\nexport { CmsModelFieldRenderer } from \"~/legacyPluginAdapters/CmsModelFieldRenderer.js\";\nexport { CmsModelLayoutFieldType } from \"~/legacyPluginAdapters/CmsModelLayoutFieldType.js\";\nexport { CmsModelLayoutFieldRenderer } from \"~/legacyPluginAdapters/CmsModelLayoutFieldRenderer.js\";\nexport { useQuery } from \"~/admin/hooks/useQuery.js\";\nexport { useCms } from \"~/admin/hooks/useCms.js\";\nexport { useLazyQuery } from \"~/admin/hooks/useLazyQuery.js\";\nexport { useMutation } from \"~/admin/hooks/useMutation.js\";\nexport { useModel } from \"~/admin/components/ModelProvider/index.js\";\nexport { usePermission } from \"~/admin/hooks/usePermission.js\";\nexport { IsModelPublishable } from \"~/admin/components/IsModelPublishable.js\";\nexport { Routes } from \"~/routes.js\";\n"],"mappings":"AAAA,SAASA,sBAAsB;AAC/B,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;AAC9B,SAASC,uBAAuB;AAChC,SAASC,2BAA2B;AACpC,SAASC,QAAQ;AACjB,SAASC,MAAM;AACf,SAASC,YAAY;AACrB,SAASC,WAAW;AACpB,SAASC,QAAQ;AACjB,SAASC,aAAa;AACtB,SAASC,kBAAkB;AAC3B,SAASC,MAAM","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { CmsContentFormRendererPlugin } from "@webiny/app-headless-cms-common/types/index.js";
2
+ type CmsContentFormRendererProps = Pick<CmsContentFormRendererPlugin, "modelId" | "render">;
3
+ export declare const CmsContentFormRenderer: (props: CmsContentFormRendererProps) => null;
4
+ export {};
@@ -0,0 +1,15 @@
1
+ import { useEffect } from "react";
2
+ import { plugins } from "@webiny/plugins";
3
+ export const CmsContentFormRenderer = props => {
4
+ useEffect(() => {
5
+ plugins.register({
6
+ type: "cms-content-form-renderer",
7
+ name: `cms-content-form-renderer-${props.modelId}`,
8
+ modelId: props.modelId,
9
+ render: props.render
10
+ });
11
+ }, []);
12
+ return null;
13
+ };
14
+
15
+ //# sourceMappingURL=CmsContentFormRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","plugins","CmsContentFormRenderer","props","register","type","name","modelId","render"],"sources":["CmsContentFormRenderer.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport type { CmsContentFormRendererPlugin } from \"@webiny/app-headless-cms-common/types/index.js\";\n\ntype CmsContentFormRendererProps = Pick<CmsContentFormRendererPlugin, \"modelId\" | \"render\">;\n\nexport const CmsContentFormRenderer = (props: CmsContentFormRendererProps) => {\n useEffect(() => {\n plugins.register({\n type: \"cms-content-form-renderer\",\n name: `cms-content-form-renderer-${props.modelId}`,\n modelId: props.modelId,\n render: props.render\n } satisfies CmsContentFormRendererPlugin);\n }, []);\n return null;\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,OAAO,QAAQ,iBAAiB;AAKzC,OAAO,MAAMC,sBAAsB,GAAIC,KAAkC,IAAK;EAC1EH,SAAS,CAAC,MAAM;IACZC,OAAO,CAACG,QAAQ,CAAC;MACbC,IAAI,EAAE,2BAA2B;MACjCC,IAAI,EAAE,6BAA6BH,KAAK,CAACI,OAAO,EAAE;MAClDA,OAAO,EAAEJ,KAAK,CAACI,OAAO;MACtBC,MAAM,EAAEL,KAAK,CAACK;IAClB,CAAwC,CAAC;EAC7C,CAAC,EAAE,EAAE,CAAC;EACN,OAAO,IAAI;AACf,CAAC","ignoreList":[]}