@webiny/app-headless-cms 0.0.0-unstable.b02d94bba0 → 0.0.0-unstable.b14eaecf38

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 (49) hide show
  1. package/admin/components/ContentEntryForm/useRenderPlugins.d.ts +1 -2
  2. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +1 -1
  3. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js.map +1 -1
  4. package/admin/hooks/index.d.ts +1 -0
  5. package/admin/hooks/index.js +12 -0
  6. package/admin/hooks/index.js.map +1 -1
  7. package/admin/plugins/fieldRenderers/boolean/index.d.ts +1 -1
  8. package/admin/plugins/fieldRenderers/dateTime/index.d.ts +1 -1
  9. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.d.ts +2 -2
  10. package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -1
  11. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.d.ts +2 -2
  12. package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js.map +1 -1
  13. package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js.map +1 -1
  14. package/admin/plugins/fieldRenderers/file/index.d.ts +1 -1
  15. package/admin/plugins/fieldRenderers/longText/index.d.ts +1 -1
  16. package/admin/plugins/fieldRenderers/number/index.d.ts +1 -1
  17. package/admin/plugins/fieldRenderers/object/index.d.ts +1 -1
  18. package/admin/plugins/fieldRenderers/object/multipleObjects.js.map +1 -1
  19. package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js.map +1 -1
  20. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.d.ts +2 -2
  21. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.js +5 -3
  22. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedMultipleReferenceField.js.map +1 -1
  23. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.d.ts +2 -2
  24. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.js +1 -5
  25. package/admin/plugins/fieldRenderers/ref/advanced/components/AdvancedSingleReferenceField.js.map +1 -1
  26. package/admin/plugins/fieldRenderers/ref/advanced/components/Entries.js +4 -3
  27. package/admin/plugins/fieldRenderers/ref/advanced/components/Entries.js.map +1 -1
  28. package/admin/plugins/fieldRenderers/ref/advanced/components/ReferencesDialog.d.ts +2 -2
  29. package/admin/plugins/fieldRenderers/ref/advanced/components/ReferencesDialog.js +1 -1
  30. package/admin/plugins/fieldRenderers/ref/advanced/components/ReferencesDialog.js.map +1 -1
  31. package/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelList.js +1 -1
  32. package/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelList.js.map +1 -1
  33. package/admin/plugins/fieldRenderers/ref/advanced/hooks/graphql.js +1 -5
  34. package/admin/plugins/fieldRenderers/ref/advanced/hooks/graphql.js.map +1 -1
  35. package/admin/plugins/fieldRenderers/ref/advanced/index.d.ts +1 -1
  36. package/admin/plugins/fieldRenderers/ref/index.d.ts +1 -1
  37. package/admin/plugins/fieldRenderers/richText/index.d.ts +1 -1
  38. package/admin/plugins/fieldRenderers/text/index.d.ts +1 -1
  39. package/admin/plugins/fields/dynamicZone.d.ts +2 -2
  40. package/admin/plugins/fields/dynamicZone.js +1 -1
  41. package/admin/plugins/fields/dynamicZone.js.map +1 -1
  42. package/admin/views/contentEntries/hooks/index.d.ts +3 -0
  43. package/admin/views/contentEntries/hooks/index.js +38 -0
  44. package/admin/views/contentEntries/hooks/index.js.map +1 -0
  45. package/admin/views/contentEntries/hooks/useContentEntriesList.d.ts +1 -1
  46. package/allPlugins.d.ts +1 -1
  47. package/package.json +18 -18
  48. package/types/index.d.ts +20 -9
  49. package/types/index.js.map +1 -1
@@ -1,2 +1 @@
1
- import { CmsEditorFieldRendererPlugin } from "../../../types";
2
- export declare function useRenderPlugins(): CmsEditorFieldRendererPlugin[];
1
+ export declare function useRenderPlugins(): import("../../../types").CmsModelFieldRendererPlugin[];
@@ -74,7 +74,7 @@ var GeneralTab = function GeneralTab() {
74
74
  });
75
75
  }
76
76
  var predefinedValuesEnabled = (0, _react.useMemo)(function () {
77
- return fieldPlugin.field.allowPredefinedValues && typeof fieldPlugin.field.renderPredefinedValues === "function";
77
+ return (fieldPlugin.field.allowPredefinedValues || false) && typeof fieldPlugin.field.renderPredefinedValues === "function";
78
78
  }, [field.fieldId]);
79
79
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
80
80
  span: 6
@@ -1 +1 @@
1
- {"version":3,"names":["GeneralTab","form","useForm","useModelField","field","fieldPlugin","inputRef","useRef","useModelEditor","contentModel","data","useModelFieldEditor","getField","useEffect","setTimeout","current","focus","afterChangeLabel","useCallback","value","setValue","beforeChangeFieldId","baseOnChange","trim","fieldIdValidator","fieldId","toLowerCase","Error","uniqueFieldIdValidator","existingField","id","additionalSettings","renderSettings","predefinedValuesEnabled","useMemo","allowPredefinedValues","renderPredefinedValues","validation","create","multipleValuesLabel","allowMultipleValues","tags"],"sources":["GeneralTab.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useRef, useMemo } from \"react\";\nimport { camelCase } from \"lodash\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Switch } from \"@webiny/ui/Switch\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { validation } from \"@webiny/validation\";\nimport { Tags } from \"@webiny/ui/Tags\";\nimport { useForm, Bind } from \"@webiny/form\";\nimport { useModelFieldEditor } from \"~/admin/components/FieldEditor\";\nimport { useModelEditor } from \"~/admin/hooks\";\nimport { useModelField } from \"~/admin/hooks\";\n\nconst GeneralTab = () => {\n const form = useForm();\n const { field, fieldPlugin } = useModelField();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const { data: contentModel } = useModelEditor();\n const { getField } = useModelFieldEditor();\n\n // Had problems with auto-focusing the \"label\" field. A couple of comments on this.\n // 1. It's probably caused by the Tabs component which wraps this component.\n // 2. It seems that the \"autoFocus\" prop on the Input doesn't work. I can't see it attached in the actual DOM.\n // 3. This works, but it's not 100%. Visually, the cursor is frozen, and that's probably caused by a bug / design\n // in the RMWC / Material library. If you were to click somewhere on screen, and then apply focus, then\n // it seems it's behaving correctly. ¯\\_(ツ)_/¯\n useEffect(() => {\n setTimeout(() => {\n if (!inputRef.current) {\n return;\n }\n inputRef.current.focus();\n }, /* The value of 400 was determined by manual testing. */ 400);\n }, []);\n\n const afterChangeLabel = useCallback((value: string) => {\n form.setValue(\"fieldId\", camelCase(value));\n }, []);\n\n const beforeChangeFieldId = useCallback(\n (value: string, baseOnChange: (value: string) => void) => {\n baseOnChange(value.trim());\n },\n []\n );\n\n const fieldIdValidator = useCallback(fieldId => {\n if (fieldId.trim().toLowerCase() !== \"id\") {\n return true;\n }\n\n throw new Error(`Cannot use \"id\" as Field ID.`);\n }, []);\n\n const uniqueFieldIdValidator = useCallback((fieldId: string) => {\n const existingField = getField({ fieldId });\n if (!existingField) {\n return false;\n }\n\n if (existingField.id === field.id) {\n return true;\n }\n throw new Error(\"Please enter a unique Field ID.\");\n }, []);\n\n let additionalSettings: React.ReactNode | null = null;\n if (typeof fieldPlugin.field.renderSettings === \"function\") {\n additionalSettings = fieldPlugin.field.renderSettings({\n afterChangeLabel,\n uniqueFieldIdValidator,\n contentModel\n });\n }\n\n const predefinedValuesEnabled = useMemo(\n (): boolean =>\n fieldPlugin.field.allowPredefinedValues &&\n typeof fieldPlugin.field.renderPredefinedValues === \"function\",\n [field.fieldId]\n );\n\n return (\n <>\n <Grid>\n <Cell span={6}>\n <Bind\n name={\"label\"}\n validators={validation.create(\"required\")}\n afterChange={(value: string) => {\n if (field.id) {\n return;\n }\n afterChangeLabel(value);\n }}\n >\n <Input\n label={\"Label\"}\n inputRef={inputRef}\n data-testid=\"cms.editor.field.settings.general.label\"\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind\n name={\"fieldId\"}\n validators={[\n validation.create(\"required\"),\n uniqueFieldIdValidator,\n fieldIdValidator\n ]}\n beforeChange={beforeChangeFieldId}\n >\n <Input\n label={\"Field ID\"}\n data-testid={`cms.editor.field.settings.general.label-${field.id}`}\n />\n </Bind>\n </Cell>\n\n <Cell span={6}>\n <Bind name={\"multipleValues\"}>\n <Switch\n label={fieldPlugin.field.multipleValuesLabel}\n disabled={!fieldPlugin.field.allowMultipleValues}\n data-testid={`cms.editor.field.settings.general.switch-multiplevalues`}\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind name={\"predefinedValues.enabled\"}>\n <Switch\n label={\"Use predefined values\"}\n disabled={!predefinedValuesEnabled}\n data-testid={`cms.editor.field.settings.general.switch-predefinedvalues`}\n />\n </Bind>\n </Cell>\n\n <Cell span={12}>\n <Bind name={\"helpText\"}>\n <Input\n label={\"Help text\"}\n description={\"Help text (optional)\"}\n data-testid={`cms.editor.field.settings.general.helptext`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name={\"tags\"}>\n <Tags\n label={\"Tags\"}\n protectedTags={fieldPlugin.field.tags}\n description={\"Field tags (optional)\"}\n data-testid={`cms.editor.field.settings.general.tags`}\n />\n </Bind>\n </Cell>\n </Grid>\n {additionalSettings}\n </>\n );\n};\n\nexport default GeneralTab;\n"],"mappings":"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"}
1
+ {"version":3,"names":["GeneralTab","form","useForm","useModelField","field","fieldPlugin","inputRef","useRef","useModelEditor","contentModel","data","useModelFieldEditor","getField","useEffect","setTimeout","current","focus","afterChangeLabel","useCallback","value","setValue","beforeChangeFieldId","baseOnChange","trim","fieldIdValidator","fieldId","toLowerCase","Error","uniqueFieldIdValidator","existingField","id","additionalSettings","renderSettings","predefinedValuesEnabled","useMemo","allowPredefinedValues","renderPredefinedValues","validation","create","multipleValuesLabel","allowMultipleValues","tags"],"sources":["GeneralTab.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useRef, useMemo } from \"react\";\nimport { camelCase } from \"lodash\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Switch } from \"@webiny/ui/Switch\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { validation } from \"@webiny/validation\";\nimport { Tags } from \"@webiny/ui/Tags\";\nimport { useForm, Bind } from \"@webiny/form\";\nimport { useModelFieldEditor } from \"~/admin/components/FieldEditor\";\nimport { useModelEditor } from \"~/admin/hooks\";\nimport { useModelField } from \"~/admin/hooks\";\n\nconst GeneralTab = () => {\n const form = useForm();\n const { field, fieldPlugin } = useModelField();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const { data: contentModel } = useModelEditor();\n const { getField } = useModelFieldEditor();\n\n // Had problems with auto-focusing the \"label\" field. A couple of comments on this.\n // 1. It's probably caused by the Tabs component which wraps this component.\n // 2. It seems that the \"autoFocus\" prop on the Input doesn't work. I can't see it attached in the actual DOM.\n // 3. This works, but it's not 100%. Visually, the cursor is frozen, and that's probably caused by a bug / design\n // in the RMWC / Material library. If you were to click somewhere on screen, and then apply focus, then\n // it seems it's behaving correctly. ¯\\_(ツ)_/¯\n useEffect(() => {\n setTimeout(() => {\n if (!inputRef.current) {\n return;\n }\n inputRef.current.focus();\n }, /* The value of 400 was determined by manual testing. */ 400);\n }, []);\n\n const afterChangeLabel = useCallback((value: string) => {\n form.setValue(\"fieldId\", camelCase(value));\n }, []);\n\n const beforeChangeFieldId = useCallback(\n (value: string, baseOnChange: (value: string) => void) => {\n baseOnChange(value.trim());\n },\n []\n );\n\n const fieldIdValidator = useCallback(fieldId => {\n if (fieldId.trim().toLowerCase() !== \"id\") {\n return true;\n }\n\n throw new Error(`Cannot use \"id\" as Field ID.`);\n }, []);\n\n const uniqueFieldIdValidator = useCallback((fieldId: string) => {\n const existingField = getField({ fieldId });\n if (!existingField) {\n return false;\n }\n\n if (existingField.id === field.id) {\n return true;\n }\n throw new Error(\"Please enter a unique Field ID.\");\n }, []);\n\n let additionalSettings: React.ReactNode | null = null;\n if (typeof fieldPlugin.field.renderSettings === \"function\") {\n additionalSettings = fieldPlugin.field.renderSettings({\n afterChangeLabel,\n uniqueFieldIdValidator,\n contentModel\n });\n }\n\n const predefinedValuesEnabled = useMemo(\n (): boolean =>\n (fieldPlugin.field.allowPredefinedValues || false) &&\n typeof fieldPlugin.field.renderPredefinedValues === \"function\",\n [field.fieldId]\n );\n\n return (\n <>\n <Grid>\n <Cell span={6}>\n <Bind\n name={\"label\"}\n validators={validation.create(\"required\")}\n afterChange={(value: string) => {\n if (field.id) {\n return;\n }\n afterChangeLabel(value);\n }}\n >\n <Input\n label={\"Label\"}\n inputRef={inputRef}\n data-testid=\"cms.editor.field.settings.general.label\"\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind\n name={\"fieldId\"}\n validators={[\n validation.create(\"required\"),\n uniqueFieldIdValidator,\n fieldIdValidator\n ]}\n beforeChange={beforeChangeFieldId}\n >\n <Input\n label={\"Field ID\"}\n data-testid={`cms.editor.field.settings.general.label-${field.id}`}\n />\n </Bind>\n </Cell>\n\n <Cell span={6}>\n <Bind name={\"multipleValues\"}>\n <Switch\n label={fieldPlugin.field.multipleValuesLabel}\n disabled={!fieldPlugin.field.allowMultipleValues}\n data-testid={`cms.editor.field.settings.general.switch-multiplevalues`}\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind name={\"predefinedValues.enabled\"}>\n <Switch\n label={\"Use predefined values\"}\n disabled={!predefinedValuesEnabled}\n data-testid={`cms.editor.field.settings.general.switch-predefinedvalues`}\n />\n </Bind>\n </Cell>\n\n <Cell span={12}>\n <Bind name={\"helpText\"}>\n <Input\n label={\"Help text\"}\n description={\"Help text (optional)\"}\n data-testid={`cms.editor.field.settings.general.helptext`}\n />\n </Bind>\n </Cell>\n <Cell span={12}>\n <Bind name={\"tags\"}>\n <Tags\n label={\"Tags\"}\n protectedTags={fieldPlugin.field.tags}\n description={\"Field tags (optional)\"}\n data-testid={`cms.editor.field.settings.general.tags`}\n />\n </Bind>\n </Cell>\n </Grid>\n {additionalSettings}\n </>\n );\n};\n\nexport default GeneralTab;\n"],"mappings":"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"}
@@ -10,3 +10,4 @@ export { useModelEditor } from "../components/ContentModelEditor";
10
10
  export { useModelField } from "../components/ModelFieldProvider";
11
11
  export { useModelFieldEditor } from "../components/FieldEditor";
12
12
  export * from "./useContentModels";
13
+ export * from "../views/contentEntries/hooks";
@@ -109,4 +109,16 @@ Object.keys(_useContentModels).forEach(function (key) {
109
109
  return _useContentModels[key];
110
110
  }
111
111
  });
112
+ });
113
+ var _hooks = require("../views/contentEntries/hooks");
114
+ Object.keys(_hooks).forEach(function (key) {
115
+ if (key === "default" || key === "__esModule") return;
116
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
117
+ if (key in exports && exports[key] === _hooks[key]) return;
118
+ Object.defineProperty(exports, key, {
119
+ enumerable: true,
120
+ get: function get() {
121
+ return _hooks[key];
122
+ }
123
+ });
112
124
  });
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as useCms } from \"./useCms\";\nexport { default as useQuery } from \"./useQuery\";\nexport * from \"./useQueryLocale\";\nexport { default as useLazyQuery } from \"./useLazyQuery\";\nexport { default as useMutation } from \"./useMutation\";\nexport { default as useApolloClient } from \"./useApolloClient\";\nexport { default as usePermission } from \"./usePermission\";\nexport { useModel } from \"../components/ModelProvider\";\nexport { useModelEditor } from \"../components/ContentModelEditor\";\nexport { useModelField } from \"../components/ModelFieldProvider\";\nexport { useModelFieldEditor } from \"../components/FieldEditor\";\nexport * from \"./useContentModels\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as useCms } from \"./useCms\";\nexport { default as useQuery } from \"./useQuery\";\nexport * from \"./useQueryLocale\";\nexport { default as useLazyQuery } from \"./useLazyQuery\";\nexport { default as useMutation } from \"./useMutation\";\nexport { default as useApolloClient } from \"./useApolloClient\";\nexport { default as usePermission } from \"./usePermission\";\nexport { useModel } from \"../components/ModelProvider\";\nexport { useModelEditor } from \"../components/ContentModelEditor\";\nexport { useModelField } from \"../components/ModelFieldProvider\";\nexport { useModelFieldEditor } from \"../components/FieldEditor\";\nexport * from \"./useContentModels\";\nexport * from \"~/admin/views/contentEntries/hooks\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -1,2 +1,2 @@
1
- declare const _default: import("../../../../types").CmsEditorFieldRendererPlugin[];
1
+ declare const _default: import("../../../../types").CmsModelFieldRendererPlugin[];
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("../../../../types").CmsEditorFieldRendererPlugin[];
1
+ declare const _default: import("../../../../types").CmsModelFieldRendererPlugin[];
2
2
  export default _default;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { BindComponentRenderProp, CmsEditorFieldRendererProps, CmsModel, CmsModelField } from "../../../../types";
3
- declare type GetBind = CmsEditorFieldRendererProps["getBind"];
2
+ import { BindComponentRenderProp, CmsModelFieldRendererProps, CmsModel, CmsModelField } from "../../../../types";
3
+ declare type GetBind = CmsModelFieldRendererProps["getBind"];
4
4
  interface MultiValueDynamicZoneProps {
5
5
  field: CmsModelField;
6
6
  bind: BindComponentRenderProp;
@@ -1 +1 @@
1
- {"version":3,"names":["BottomMargin","styled","TemplateValueForm","value","contentModel","Bind","isLast","isFirst","onMoveUp","onMoveDown","onDelete","onClone","useModelField","field","templates","settings","template","find","tpl","id","_templateId","name","description","icon","fields","layout","MultiValueDynamicZone","bind","getBind","onTemplate","appendValue","cloneValue","index","newValue","cloneDeep","values","hasValues","length","map","moveValueUp","moveValueDown","removeValue"],"sources":["MultiValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete_outline.svg\";\nimport { ReactComponent as CloneIcon } from \"@material-design-icons/svg/outlined/library_add.svg\";\nimport { ReactComponent as ArrowUpIcon } from \"@material-design-icons/svg/round/expand_less.svg\";\nimport { ReactComponent as ArrowDownIcon } from \"@material-design-icons/svg/round/expand_more.svg\";\nimport { AddTemplateButton, AddTemplateIcon } from \"./AddTemplate\";\nimport { TemplateIcon } from \"./TemplateIcon\";\nimport { useModelField } from \"~/admin/hooks\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport {\n BindComponent,\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsEditorFieldRendererProps,\n CmsModel,\n CmsModelField\n} from \"~/types\";\n\nconst BottomMargin = styled.div`\n margin-bottom: 20px;\n`;\n\ntype GetBind = CmsEditorFieldRendererProps[\"getBind\"];\n\ninterface TemplateValue {\n _templateId: string;\n [key: string]: any;\n}\n\ninterface TemplateValueFormProps {\n value: TemplateValue;\n contentModel: CmsModel;\n Bind: BindComponent;\n isFirst: boolean;\n isLast: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: () => void;\n}\n\nconst TemplateValueForm: React.VFC<TemplateValueFormProps> = ({\n value,\n contentModel,\n Bind,\n isLast,\n isFirst,\n onMoveUp,\n onMoveDown,\n onDelete,\n onClone\n}) => {\n const { field } = useModelField();\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = templates.find(\n tpl => tpl.id === value._templateId\n );\n\n if (!template) {\n return null;\n }\n\n return (\n <AccordionItem\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n actions={\n <AccordionItem.Actions>\n <AccordionItem.Action\n icon={<ArrowUpIcon />}\n onClick={onMoveUp}\n disabled={isFirst}\n />\n <AccordionItem.Action\n icon={<ArrowDownIcon />}\n onClick={onMoveDown}\n disabled={isLast}\n />\n <AccordionItem.Divider />\n <AccordionItem.Action icon={<CloneIcon />} onClick={onClone} />\n <AccordionItem.Action icon={<DeleteIcon />} onClick={onDelete} />\n </AccordionItem.Actions>\n }\n >\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </AccordionItem>\n );\n};\n\ninterface MultiValueDynamicZoneProps {\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\nexport const MultiValueDynamicZone: React.VFC<MultiValueDynamicZoneProps> = ({\n bind,\n getBind,\n contentModel\n}) => {\n const onTemplate = (template: CmsDynamicZoneTemplate) => {\n bind.appendValue({ _templateId: template.id });\n };\n\n const cloneValue = (index: number) => {\n const newValue = cloneDeep(bind.value[index]);\n bind.appendValue(newValue, index + 1);\n };\n\n const values: TemplateValue[] = bind.value || [];\n const hasValues = values.length > 0;\n\n return (\n <>\n {hasValues ? (\n <Accordion>\n {values.map((value, index) => (\n <TemplateValueForm\n key={index}\n value={value}\n contentModel={contentModel}\n Bind={getBind(index)}\n isFirst={index === 0}\n isLast={index === values.length - 1}\n onMoveUp={() => bind.moveValueUp(index)}\n onMoveDown={() => bind.moveValueDown(index)}\n onDelete={() => bind.removeValue(index)}\n onClone={() => cloneValue(index)}\n />\n ))}\n </Accordion>\n ) : null}\n {hasValues ? (\n <AddTemplateIcon onTemplate={onTemplate} />\n ) : (\n <BottomMargin>\n <AddTemplateButton onTemplate={onTemplate} />\n </BottomMargin>\n )}\n </>\n );\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA,IAAMA,YAAY,oBAAGC,eAAM;EAAA;EAAA;AAAA,yBAE1B;AAqBD,IAAMC,iBAAoD,GAAG,SAAvDA,iBAAoD,OAUpD;EAAA;EAAA,IATFC,KAAK,QAALA,KAAK;IACLC,YAAY,QAAZA,YAAY;IACZC,IAAI,QAAJA,IAAI;IACJC,MAAM,QAANA,MAAM;IACNC,OAAO,QAAPA,OAAO;IACPC,QAAQ,QAARA,QAAQ;IACRC,UAAU,QAAVA,UAAU;IACVC,QAAQ,QAARA,QAAQ;IACRC,OAAO,QAAPA,OAAO;EAEP,qBAAkB,IAAAC,oBAAa,GAAE;IAAzBC,KAAK,kBAALA,KAAK;EACb,IAAMC,SAAS,GAAG,oBAAAD,KAAK,CAACE,QAAQ,oDAAd,gBAAgBD,SAAS,KAAI,EAAE;EAEjD,IAAME,QAA4C,GAAGF,SAAS,CAACG,IAAI,CAC/D,UAAAC,GAAG;IAAA,OAAIA,GAAG,CAACC,EAAE,KAAKhB,KAAK,CAACiB,WAAW;EAAA,EACtC;EAED,IAAI,CAACJ,QAAQ,EAAE;IACX,OAAO,IAAI;EACf;EAEA,oBACI,6BAAC,wBAAa;IACV,KAAK,EAAEA,QAAQ,CAACK,IAAK;IACrB,WAAW,EAAEL,QAAQ,CAACM,WAAY;IAClC,IAAI,eAAE,6BAAC,0BAAY;MAAC,IAAI,EAAEN,QAAQ,CAACO;IAAK,EAAI;IAC5C,OAAO,eACH,6BAAC,wBAAa,CAAC,OAAO,qBAClB,6BAAC,wBAAa,CAAC,MAAM;MACjB,IAAI,eAAE,6BAAC,2BAAW,OAAI;MACtB,OAAO,EAAEf,QAAS;MAClB,QAAQ,EAAED;IAAQ,EACpB,eACF,6BAAC,wBAAa,CAAC,MAAM;MACjB,IAAI,eAAE,6BAAC,2BAAa,OAAI;MACxB,OAAO,EAAEE,UAAW;MACpB,QAAQ,EAAEH;IAAO,EACnB,eACF,6BAAC,wBAAa,CAAC,OAAO,OAAG,eACzB,6BAAC,wBAAa,CAAC,MAAM;MAAC,IAAI,eAAE,6BAAC,2BAAS,OAAI;MAAC,OAAO,EAAEK;IAAQ,EAAG,eAC/D,6BAAC,wBAAa,CAAC,MAAM;MAAC,IAAI,eAAE,6BAAC,8BAAU,OAAI;MAAC,OAAO,EAAED;IAAS,EAAG;EAExE,gBAED,6BAAC,cAAM;IACH,MAAM,EAAEM,QAAQ,CAACQ,MAAO;IACxB,MAAM,EAAER,QAAQ,CAACS,MAAM,IAAI,EAAG;IAC9B,YAAY,EAAErB,YAAa;IAC3B,IAAI,EAAEC;EAAK,EACb,CACU;AAExB,CAAC;AASM,IAAMqB,qBAA4D,GAAG,SAA/DA,qBAA4D,QAInE;EAAA,IAHFC,IAAI,SAAJA,IAAI;IACJC,OAAO,SAAPA,OAAO;IACPxB,YAAY,SAAZA,YAAY;EAEZ,IAAMyB,UAAU,GAAG,SAAbA,UAAU,CAAIb,QAAgC,EAAK;IACrDW,IAAI,CAACG,WAAW,CAAC;MAAEV,WAAW,EAAEJ,QAAQ,CAACG;IAAG,CAAC,CAAC;EAClD,CAAC;EAED,IAAMY,UAAU,GAAG,SAAbA,UAAU,CAAIC,KAAa,EAAK;IAClC,IAAMC,QAAQ,GAAG,IAAAC,kBAAS,EAACP,IAAI,CAACxB,KAAK,CAAC6B,KAAK,CAAC,CAAC;IAC7CL,IAAI,CAACG,WAAW,CAACG,QAAQ,EAAED,KAAK,GAAG,CAAC,CAAC;EACzC,CAAC;EAED,IAAMG,MAAuB,GAAGR,IAAI,CAACxB,KAAK,IAAI,EAAE;EAChD,IAAMiC,SAAS,GAAGD,MAAM,CAACE,MAAM,GAAG,CAAC;EAEnC,oBACI,4DACKD,SAAS,gBACN,6BAAC,oBAAS,QACLD,MAAM,CAACG,GAAG,CAAC,UAACnC,KAAK,EAAE6B,KAAK;IAAA,oBACrB,6BAAC,iBAAiB;MACd,GAAG,EAAEA,KAAM;MACX,KAAK,EAAE7B,KAAM;MACb,YAAY,EAAEC,YAAa;MAC3B,IAAI,EAAEwB,OAAO,CAACI,KAAK,CAAE;MACrB,OAAO,EAAEA,KAAK,KAAK,CAAE;MACrB,MAAM,EAAEA,KAAK,KAAKG,MAAM,CAACE,MAAM,GAAG,CAAE;MACpC,QAAQ,EAAE;QAAA,OAAMV,IAAI,CAACY,WAAW,CAACP,KAAK,CAAC;MAAA,CAAC;MACxC,UAAU,EAAE;QAAA,OAAML,IAAI,CAACa,aAAa,CAACR,KAAK,CAAC;MAAA,CAAC;MAC5C,QAAQ,EAAE;QAAA,OAAML,IAAI,CAACc,WAAW,CAACT,KAAK,CAAC;MAAA,CAAC;MACxC,OAAO,EAAE;QAAA,OAAMD,UAAU,CAACC,KAAK,CAAC;MAAA;IAAC,EACnC;EAAA,CACL,CAAC,CACM,GACZ,IAAI,EACPI,SAAS,gBACN,6BAAC,4BAAe;IAAC,UAAU,EAAEP;EAAW,EAAG,gBAE3C,6BAAC,YAAY,qBACT,6BAAC,8BAAiB;IAAC,UAAU,EAAEA;EAAW,EAAG,CAEpD,CACF;AAEX,CAAC;AAAC"}
1
+ {"version":3,"names":["BottomMargin","styled","TemplateValueForm","value","contentModel","Bind","isLast","isFirst","onMoveUp","onMoveDown","onDelete","onClone","useModelField","field","templates","settings","template","find","tpl","id","_templateId","name","description","icon","fields","layout","MultiValueDynamicZone","bind","getBind","onTemplate","appendValue","cloneValue","index","newValue","cloneDeep","values","hasValues","length","map","moveValueUp","moveValueDown","removeValue"],"sources":["MultiValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete_outline.svg\";\nimport { ReactComponent as CloneIcon } from \"@material-design-icons/svg/outlined/library_add.svg\";\nimport { ReactComponent as ArrowUpIcon } from \"@material-design-icons/svg/round/expand_less.svg\";\nimport { ReactComponent as ArrowDownIcon } from \"@material-design-icons/svg/round/expand_more.svg\";\nimport { AddTemplateButton, AddTemplateIcon } from \"./AddTemplate\";\nimport { TemplateIcon } from \"./TemplateIcon\";\nimport { useModelField } from \"~/admin/hooks\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport {\n BindComponent,\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsModelFieldRendererProps,\n CmsModel,\n CmsModelField\n} from \"~/types\";\n\nconst BottomMargin = styled.div`\n margin-bottom: 20px;\n`;\n\ntype GetBind = CmsModelFieldRendererProps[\"getBind\"];\n\ninterface TemplateValue {\n _templateId: string;\n [key: string]: any;\n}\n\ninterface TemplateValueFormProps {\n value: TemplateValue;\n contentModel: CmsModel;\n Bind: BindComponent;\n isFirst: boolean;\n isLast: boolean;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onDelete: () => void;\n onClone: () => void;\n}\n\nconst TemplateValueForm: React.VFC<TemplateValueFormProps> = ({\n value,\n contentModel,\n Bind,\n isLast,\n isFirst,\n onMoveUp,\n onMoveDown,\n onDelete,\n onClone\n}) => {\n const { field } = useModelField();\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = templates.find(\n tpl => tpl.id === value._templateId\n );\n\n if (!template) {\n return null;\n }\n\n return (\n <AccordionItem\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n actions={\n <AccordionItem.Actions>\n <AccordionItem.Action\n icon={<ArrowUpIcon />}\n onClick={onMoveUp}\n disabled={isFirst}\n />\n <AccordionItem.Action\n icon={<ArrowDownIcon />}\n onClick={onMoveDown}\n disabled={isLast}\n />\n <AccordionItem.Divider />\n <AccordionItem.Action icon={<CloneIcon />} onClick={onClone} />\n <AccordionItem.Action icon={<DeleteIcon />} onClick={onDelete} />\n </AccordionItem.Actions>\n }\n >\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </AccordionItem>\n );\n};\n\ninterface MultiValueDynamicZoneProps {\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\nexport const MultiValueDynamicZone: React.VFC<MultiValueDynamicZoneProps> = ({\n bind,\n getBind,\n contentModel\n}) => {\n const onTemplate = (template: CmsDynamicZoneTemplate) => {\n bind.appendValue({ _templateId: template.id });\n };\n\n const cloneValue = (index: number) => {\n const newValue = cloneDeep(bind.value[index]);\n bind.appendValue(newValue, index + 1);\n };\n\n const values: TemplateValue[] = bind.value || [];\n const hasValues = values.length > 0;\n\n return (\n <>\n {hasValues ? (\n <Accordion>\n {values.map((value, index) => (\n <TemplateValueForm\n key={index}\n value={value}\n contentModel={contentModel}\n Bind={getBind(index)}\n isFirst={index === 0}\n isLast={index === values.length - 1}\n onMoveUp={() => bind.moveValueUp(index)}\n onMoveDown={() => bind.moveValueDown(index)}\n onDelete={() => bind.removeValue(index)}\n onClone={() => cloneValue(index)}\n />\n ))}\n </Accordion>\n ) : null}\n {hasValues ? (\n <AddTemplateIcon onTemplate={onTemplate} />\n ) : (\n <BottomMargin>\n <AddTemplateButton onTemplate={onTemplate} />\n </BottomMargin>\n )}\n </>\n );\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { BindComponentRenderProp, CmsEditorFieldRendererProps, CmsModel, CmsModelField } from "../../../../types";
3
- declare type GetBind = CmsEditorFieldRendererProps["getBind"];
2
+ import { BindComponentRenderProp, CmsModelFieldRendererProps, CmsModel, CmsModelField } from "../../../../types";
3
+ declare type GetBind = CmsModelFieldRendererProps["getBind"];
4
4
  interface SingleValueDynamicZoneProps {
5
5
  field: CmsModelField;
6
6
  bind: BindComponentRenderProp;
@@ -1 +1 @@
1
- {"version":3,"names":["SingleValueDynamicZone","field","bind","contentModel","getBind","onTemplate","template","onChange","_templateId","id","templates","settings","value","find","tpl","undefined","Bind","unsetValue","name","description","icon","fields","layout"],"sources":["SingleValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete_outline.svg\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { AddTemplateButton } from \"./AddTemplate\";\nimport { TemplateIcon } from \"~/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon\";\nimport {\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsEditorFieldRendererProps,\n CmsModel,\n CmsModelField\n} from \"~/types\";\n\ntype GetBind = CmsEditorFieldRendererProps[\"getBind\"];\n\ninterface SingleValueDynamicZoneProps {\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\nexport const SingleValueDynamicZone: React.VFC<SingleValueDynamicZoneProps> = ({\n field,\n bind,\n contentModel,\n getBind\n}) => {\n const onTemplate = (template: CmsDynamicZoneTemplate) => {\n bind.onChange({ _templateId: template.id });\n };\n\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = bind.value\n ? templates.find(tpl => tpl.id === bind.value._templateId)\n : undefined;\n\n const Bind = getBind();\n\n const unsetValue = () => {\n bind.onChange(null);\n };\n\n return (\n <>\n {template ? (\n <Accordion>\n <AccordionItem\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n open={true}\n interactive={false}\n actions={\n <AccordionItem.Actions>\n <AccordionItem.Action icon={<DeleteIcon />} onClick={unsetValue} />\n </AccordionItem.Actions>\n }\n >\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </AccordionItem>\n </Accordion>\n ) : null}\n {bind.value ? null : <AddTemplateButton onTemplate={onTemplate} />}\n </>\n );\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAkBO,IAAMA,sBAA8D,GAAG,SAAjEA,sBAA8D,OAKrE;EAAA;EAAA,IAJFC,KAAK,QAALA,KAAK;IACLC,IAAI,QAAJA,IAAI;IACJC,YAAY,QAAZA,YAAY;IACZC,OAAO,QAAPA,OAAO;EAEP,IAAMC,UAAU,GAAG,SAAbA,UAAU,CAAIC,QAAgC,EAAK;IACrDJ,IAAI,CAACK,QAAQ,CAAC;MAAEC,WAAW,EAAEF,QAAQ,CAACG;IAAG,CAAC,CAAC;EAC/C,CAAC;EAED,IAAMC,SAAS,GAAG,oBAAAT,KAAK,CAACU,QAAQ,oDAAd,gBAAgBD,SAAS,KAAI,EAAE;EAEjD,IAAMJ,QAA4C,GAAGJ,IAAI,CAACU,KAAK,GACzDF,SAAS,CAACG,IAAI,CAAC,UAAAC,GAAG;IAAA,OAAIA,GAAG,CAACL,EAAE,KAAKP,IAAI,CAACU,KAAK,CAACJ,WAAW;EAAA,EAAC,GACxDO,SAAS;EAEf,IAAMC,IAAI,GAAGZ,OAAO,EAAE;EAEtB,IAAMa,UAAU,GAAG,SAAbA,UAAU,GAAS;IACrBf,IAAI,CAACK,QAAQ,CAAC,IAAI,CAAC;EACvB,CAAC;EAED,oBACI,4DACKD,QAAQ,gBACL,6BAAC,oBAAS,qBACN,6BAAC,wBAAa;IACV,KAAK,EAAEA,QAAQ,CAACY,IAAK;IACrB,WAAW,EAAEZ,QAAQ,CAACa,WAAY;IAClC,IAAI,eAAE,6BAAC,0BAAY;MAAC,IAAI,EAAEb,QAAQ,CAACc;IAAK,EAAI;IAC5C,IAAI,EAAE,IAAK;IACX,WAAW,EAAE,KAAM;IACnB,OAAO,eACH,6BAAC,wBAAa,CAAC,OAAO,qBAClB,6BAAC,wBAAa,CAAC,MAAM;MAAC,IAAI,eAAE,6BAAC,8BAAU,OAAI;MAAC,OAAO,EAAEH;IAAW,EAAG;EAE1E,gBAED,6BAAC,cAAM;IACH,MAAM,EAAEX,QAAQ,CAACe,MAAO;IACxB,MAAM,EAAEf,QAAQ,CAACgB,MAAM,IAAI,EAAG;IAC9B,YAAY,EAAEnB,YAAa;IAC3B,IAAI,EAAEa;EAAK,EACb,CACU,CACR,GACZ,IAAI,EACPd,IAAI,CAACU,KAAK,GAAG,IAAI,gBAAG,6BAAC,8BAAiB;IAAC,UAAU,EAAEP;EAAW,EAAG,CACnE;AAEX,CAAC;AAAC"}
1
+ {"version":3,"names":["SingleValueDynamicZone","field","bind","contentModel","getBind","onTemplate","template","onChange","_templateId","id","templates","settings","value","find","tpl","undefined","Bind","unsetValue","name","description","icon","fields","layout"],"sources":["SingleValueDynamicZone.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete_outline.svg\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { AddTemplateButton } from \"./AddTemplate\";\nimport { TemplateIcon } from \"~/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon\";\nimport {\n BindComponentRenderProp,\n CmsDynamicZoneTemplate,\n CmsModelFieldRendererProps,\n CmsModel,\n CmsModelField\n} from \"~/types\";\n\ntype GetBind = CmsModelFieldRendererProps[\"getBind\"];\n\ninterface SingleValueDynamicZoneProps {\n field: CmsModelField;\n bind: BindComponentRenderProp;\n contentModel: CmsModel;\n getBind: GetBind;\n}\n\nexport const SingleValueDynamicZone: React.VFC<SingleValueDynamicZoneProps> = ({\n field,\n bind,\n contentModel,\n getBind\n}) => {\n const onTemplate = (template: CmsDynamicZoneTemplate) => {\n bind.onChange({ _templateId: template.id });\n };\n\n const templates = field.settings?.templates || [];\n\n const template: CmsDynamicZoneTemplate | undefined = bind.value\n ? templates.find(tpl => tpl.id === bind.value._templateId)\n : undefined;\n\n const Bind = getBind();\n\n const unsetValue = () => {\n bind.onChange(null);\n };\n\n return (\n <>\n {template ? (\n <Accordion>\n <AccordionItem\n title={template.name}\n description={template.description}\n icon={<TemplateIcon icon={template.icon} />}\n open={true}\n interactive={false}\n actions={\n <AccordionItem.Actions>\n <AccordionItem.Action icon={<DeleteIcon />} onClick={unsetValue} />\n </AccordionItem.Actions>\n }\n >\n <Fields\n fields={template.fields}\n layout={template.layout || []}\n contentModel={contentModel}\n Bind={Bind}\n />\n </AccordionItem>\n </Accordion>\n ) : null}\n {bind.value ? null : <AddTemplateButton onTemplate={onTemplate} />}\n </>\n );\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAkBO,IAAMA,sBAA8D,GAAG,SAAjEA,sBAA8D,OAKrE;EAAA;EAAA,IAJFC,KAAK,QAALA,KAAK;IACLC,IAAI,QAAJA,IAAI;IACJC,YAAY,QAAZA,YAAY;IACZC,OAAO,QAAPA,OAAO;EAEP,IAAMC,UAAU,GAAG,SAAbA,UAAU,CAAIC,QAAgC,EAAK;IACrDJ,IAAI,CAACK,QAAQ,CAAC;MAAEC,WAAW,EAAEF,QAAQ,CAACG;IAAG,CAAC,CAAC;EAC/C,CAAC;EAED,IAAMC,SAAS,GAAG,oBAAAT,KAAK,CAACU,QAAQ,oDAAd,gBAAgBD,SAAS,KAAI,EAAE;EAEjD,IAAMJ,QAA4C,GAAGJ,IAAI,CAACU,KAAK,GACzDF,SAAS,CAACG,IAAI,CAAC,UAAAC,GAAG;IAAA,OAAIA,GAAG,CAACL,EAAE,KAAKP,IAAI,CAACU,KAAK,CAACJ,WAAW;EAAA,EAAC,GACxDO,SAAS;EAEf,IAAMC,IAAI,GAAGZ,OAAO,EAAE;EAEtB,IAAMa,UAAU,GAAG,SAAbA,UAAU,GAAS;IACrBf,IAAI,CAACK,QAAQ,CAAC,IAAI,CAAC;EACvB,CAAC;EAED,oBACI,4DACKD,QAAQ,gBACL,6BAAC,oBAAS,qBACN,6BAAC,wBAAa;IACV,KAAK,EAAEA,QAAQ,CAACY,IAAK;IACrB,WAAW,EAAEZ,QAAQ,CAACa,WAAY;IAClC,IAAI,eAAE,6BAAC,0BAAY;MAAC,IAAI,EAAEb,QAAQ,CAACc;IAAK,EAAI;IAC5C,IAAI,EAAE,IAAK;IACX,WAAW,EAAE,KAAM;IACnB,OAAO,eACH,6BAAC,wBAAa,CAAC,OAAO,qBAClB,6BAAC,wBAAa,CAAC,MAAM;MAAC,IAAI,eAAE,6BAAC,8BAAU,OAAI;MAAC,OAAO,EAAEH;IAAW,EAAG;EAE1E,gBAED,6BAAC,cAAM;IACH,MAAM,EAAEX,QAAQ,CAACe,MAAO;IACxB,MAAM,EAAEf,QAAQ,CAACgB,MAAM,IAAI,EAAG;IAC9B,YAAY,EAAEnB,YAAa;IAC3B,IAAI,EAAEa;EAAK,EACb,CACU,CACR,GACZ,IAAI,EACPd,IAAI,CAACU,KAAK,GAAG,IAAI,gBAAG,6BAAC,8BAAiB;IAAC,UAAU,EAAEP;EAAW,EAAG,CACnE;AAEX,CAAC;AAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["noBottomPadding","css","DynamicZoneContent","field","getBind","contentModel","isMultipleValues","multipleValues","Bind","Component","MultiValueDynamicZone","SingleValueDynamicZone","bind","validation","isValid","message","label","helpText","undefined","dynamicZoneFieldRenderer","type","name","renderer","rendererName","description","canUse","render","props"],"sources":["dynamicZoneRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { CmsEditorFieldRendererPlugin, CmsEditorFieldRendererProps } from \"~/types\";\nimport { SingleValueDynamicZone } from \"./SingleValueDynamicZone\";\nimport { MultiValueDynamicZone } from \"./MultiValueDynamicZone\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\n\nconst noBottomPadding = css`\n > .webiny-ui-accordion-item__content {\n padding-bottom: 0 !important;\n }\n`;\n\nconst DynamicZoneContent: React.VFC<CmsEditorFieldRendererProps> = ({\n field,\n getBind,\n contentModel\n}) => {\n const isMultipleValues = field.multipleValues === true;\n const Bind = getBind();\n\n const Component = isMultipleValues ? MultiValueDynamicZone : SingleValueDynamicZone;\n\n return (\n <Bind>\n {bind => {\n const { isValid, message } = bind.validation;\n return (\n <>\n <Accordion>\n <AccordionItem\n title={field.label}\n description={field.helpText}\n className={isMultipleValues ? noBottomPadding : undefined}\n >\n <Component\n bind={bind}\n field={field}\n getBind={getBind}\n contentModel={contentModel}\n />\n </AccordionItem>\n </Accordion>\n {isValid === false && (\n <FormElementMessage error={true}>{message}</FormElementMessage>\n )}\n </>\n );\n }}\n </Bind>\n );\n};\n\nexport const dynamicZoneFieldRenderer: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-dynamic-zone\",\n renderer: {\n rendererName: \"dynamicZone\",\n name: \"Dynamic Zone\",\n description: \"Renders a dynamic zone.\",\n canUse({ field }) {\n return field.type === \"dynamicZone\";\n },\n render(props) {\n return <DynamicZoneContent {...props} />;\n }\n }\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA,IAAMA,eAAe,oBAAGC,YAAG,6FAI1B;AAED,IAAMC,kBAA0D,GAAG,SAA7DA,kBAA0D,OAI1D;EAAA,IAHFC,KAAK,QAALA,KAAK;IACLC,OAAO,QAAPA,OAAO;IACPC,YAAY,QAAZA,YAAY;EAEZ,IAAMC,gBAAgB,GAAGH,KAAK,CAACI,cAAc,KAAK,IAAI;EACtD,IAAMC,IAAI,GAAGJ,OAAO,EAAE;EAEtB,IAAMK,SAAS,GAAGH,gBAAgB,GAAGI,4CAAqB,GAAGC,8CAAsB;EAEnF,oBACI,6BAAC,IAAI,QACA,UAAAC,IAAI,EAAI;IACL,uBAA6BA,IAAI,CAACC,UAAU;MAApCC,OAAO,oBAAPA,OAAO;MAAEC,OAAO,oBAAPA,OAAO;IACxB,oBACI,yEACI,6BAAC,oBAAS,qBACN,6BAAC,wBAAa;MACV,KAAK,EAAEZ,KAAK,CAACa,KAAM;MACnB,WAAW,EAAEb,KAAK,CAACc,QAAS;MAC5B,SAAS,EAAEX,gBAAgB,GAAGN,eAAe,GAAGkB;IAAU,gBAE1D,6BAAC,SAAS;MACN,IAAI,EAAEN,IAAK;MACX,KAAK,EAAET,KAAM;MACb,OAAO,EAAEC,OAAQ;MACjB,YAAY,EAAEC;IAAa,EAC7B,CACU,CACR,EACXS,OAAO,KAAK,KAAK,iBACd,6BAAC,sCAAkB;MAAC,KAAK,EAAE;IAAK,GAAEC,OAAO,CAC5C,CACF;EAEX,CAAC,CACE;AAEf,CAAC;AAEM,IAAMI,wBAAsD,GAAG;EAClEC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,wCAAwC;EAC9CC,QAAQ,EAAE;IACNC,YAAY,EAAE,aAAa;IAC3BF,IAAI,EAAE,cAAc;IACpBG,WAAW,EAAE,yBAAyB;IACtCC,MAAM,yBAAY;MAAA,IAATtB,KAAK,SAALA,KAAK;MACV,OAAOA,KAAK,CAACiB,IAAI,KAAK,aAAa;IACvC,CAAC;IACDM,MAAM,kBAACC,KAAK,EAAE;MACV,oBAAO,6BAAC,kBAAkB,EAAKA,KAAK,CAAI;IAC5C;EACJ;AACJ,CAAC;AAAC"}
1
+ {"version":3,"names":["noBottomPadding","css","DynamicZoneContent","field","getBind","contentModel","isMultipleValues","multipleValues","Bind","Component","MultiValueDynamicZone","SingleValueDynamicZone","bind","validation","isValid","message","label","helpText","undefined","dynamicZoneFieldRenderer","type","name","renderer","rendererName","description","canUse","render","props"],"sources":["dynamicZoneRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport { CmsEditorFieldRendererPlugin, CmsModelFieldRendererProps } from \"~/types\";\nimport { SingleValueDynamicZone } from \"./SingleValueDynamicZone\";\nimport { MultiValueDynamicZone } from \"./MultiValueDynamicZone\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\n\nconst noBottomPadding = css`\n > .webiny-ui-accordion-item__content {\n padding-bottom: 0 !important;\n }\n`;\n\nconst DynamicZoneContent: React.VFC<CmsModelFieldRendererProps> = ({\n field,\n getBind,\n contentModel\n}) => {\n const isMultipleValues = field.multipleValues === true;\n const Bind = getBind();\n\n const Component = isMultipleValues ? MultiValueDynamicZone : SingleValueDynamicZone;\n\n return (\n <Bind>\n {bind => {\n const { isValid, message } = bind.validation;\n return (\n <>\n <Accordion>\n <AccordionItem\n title={field.label}\n description={field.helpText}\n className={isMultipleValues ? noBottomPadding : undefined}\n >\n <Component\n bind={bind}\n field={field}\n getBind={getBind}\n contentModel={contentModel}\n />\n </AccordionItem>\n </Accordion>\n {isValid === false && (\n <FormElementMessage error={true}>{message}</FormElementMessage>\n )}\n </>\n );\n }}\n </Bind>\n );\n};\n\nexport const dynamicZoneFieldRenderer: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-dynamic-zone\",\n renderer: {\n rendererName: \"dynamicZone\",\n name: \"Dynamic Zone\",\n description: \"Renders a dynamic zone.\",\n canUse({ field }) {\n return field.type === \"dynamicZone\";\n },\n render(props) {\n return <DynamicZoneContent {...props} />;\n }\n }\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA,IAAMA,eAAe,oBAAGC,YAAG,6FAI1B;AAED,IAAMC,kBAAyD,GAAG,SAA5DA,kBAAyD,OAIzD;EAAA,IAHFC,KAAK,QAALA,KAAK;IACLC,OAAO,QAAPA,OAAO;IACPC,YAAY,QAAZA,YAAY;EAEZ,IAAMC,gBAAgB,GAAGH,KAAK,CAACI,cAAc,KAAK,IAAI;EACtD,IAAMC,IAAI,GAAGJ,OAAO,EAAE;EAEtB,IAAMK,SAAS,GAAGH,gBAAgB,GAAGI,4CAAqB,GAAGC,8CAAsB;EAEnF,oBACI,6BAAC,IAAI,QACA,UAAAC,IAAI,EAAI;IACL,uBAA6BA,IAAI,CAACC,UAAU;MAApCC,OAAO,oBAAPA,OAAO;MAAEC,OAAO,oBAAPA,OAAO;IACxB,oBACI,yEACI,6BAAC,oBAAS,qBACN,6BAAC,wBAAa;MACV,KAAK,EAAEZ,KAAK,CAACa,KAAM;MACnB,WAAW,EAAEb,KAAK,CAACc,QAAS;MAC5B,SAAS,EAAEX,gBAAgB,GAAGN,eAAe,GAAGkB;IAAU,gBAE1D,6BAAC,SAAS;MACN,IAAI,EAAEN,IAAK;MACX,KAAK,EAAET,KAAM;MACb,OAAO,EAAEC,OAAQ;MACjB,YAAY,EAAEC;IAAa,EAC7B,CACU,CACR,EACXS,OAAO,KAAK,KAAK,iBACd,6BAAC,sCAAkB;MAAC,KAAK,EAAE;IAAK,GAAEC,OAAO,CAC5C,CACF;EAEX,CAAC,CACE;AAEf,CAAC;AAEM,IAAMI,wBAAsD,GAAG;EAClEC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,wCAAwC;EAC9CC,QAAQ,EAAE;IACNC,YAAY,EAAE,aAAa;IAC3BF,IAAI,EAAE,cAAc;IACpBG,WAAW,EAAE,yBAAyB;IACtCC,MAAM,yBAAY;MAAA,IAATtB,KAAK,SAALA,KAAK;MACV,OAAOA,KAAK,CAACiB,IAAI,KAAK,aAAa;IACvC,CAAC;IACDM,MAAM,kBAACC,KAAK,EAAE;MACV,oBAAO,6BAAC,kBAAkB,EAAKA,KAAK,CAAI;IAC5C;EACJ;AACJ,CAAC;AAAC"}
@@ -1,2 +1,2 @@
1
- declare const _default: import("../../../../types").CmsEditorFieldRendererPlugin[];
1
+ declare const _default: import("../../../../types").CmsModelFieldRendererPlugin[];
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("../../../../types").CmsEditorFieldRendererPlugin[];
1
+ declare const _default: import("../../../../types").CmsModelFieldRendererPlugin[];
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("../../../../types").CmsEditorFieldRendererPlugin[];
1
+ declare const _default: import("../../../../types").CmsModelFieldRendererPlugin[];
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("../../../../types").CmsEditorFieldRendererPlugin[];
1
+ declare const _default: import("../../../../types").CmsModelFieldRendererPlugin[];
2
2
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","Actions","setHighlightIndex","bind","index","field","moveValueDown","moveValueUp","onDown","useCallback","e","stopPropagation","map","generateAlphaNumericLowerCaseId","onUp","removeValue","ObjectsRenderer","props","useState","highlightMap","contentModel","value","dynamicSectionTitleStyle","label","length","helpText","dynamicSectionGridStyle","Bind","fieldsWrapperStyle","settings","fields","layout","fieldsGridStyle","plugin","type","name","renderer","rendererName","description","canUse","Boolean","multipleValues","render"],"sources":["multipleObjects.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction, useState, useCallback } from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Cell } from \"@webiny/ui/Grid\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport {\n BindComponentRenderProp,\n CmsEditorFieldRendererPlugin,\n CmsEditorFieldRendererProps\n} from \"~/types\";\nimport DynamicSection from \"../DynamicSection\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport { ReactComponent as ArrowUp } from \"./arrow_drop_up.svg\";\nimport { ReactComponent as ArrowDown } from \"./arrow_drop_down.svg\";\nimport Accordion from \"~/admin/plugins/fieldRenderers/Accordion\";\nimport {\n fieldsWrapperStyle,\n dynamicSectionTitleStyle,\n dynamicSectionGridStyle,\n fieldsGridStyle,\n ItemHighLight,\n ObjectItem\n} from \"./StyledComponents\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\ninterface ActionsProps {\n setHighlightIndex: Dispatch<SetStateAction<{ [key: number]: string }>>;\n index: number;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n}\n\nconst Actions: React.FC<ActionsProps> = ({ setHighlightIndex, bind, index }) => {\n const { moveValueDown, moveValueUp } = bind.field;\n\n const onDown = useCallback(\n e => {\n e.stopPropagation();\n moveValueDown(index);\n setHighlightIndex(map => ({\n ...map,\n [index + 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueDown, index]\n );\n\n const onUp = useCallback(\n e => {\n e.stopPropagation();\n moveValueUp(index);\n setHighlightIndex(map => ({\n ...map,\n [index - 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueUp, index]\n );\n\n return index > 0 ? (\n <>\n <IconButton icon={<ArrowDown />} onClick={onDown} />\n <IconButton icon={<ArrowUp />} onClick={onUp} />\n <IconButton icon={<DeleteIcon />} onClick={() => bind.field.removeValue(index)} />\n </>\n ) : null;\n};\n\nconst ObjectsRenderer: React.FC<CmsEditorFieldRendererProps> = props => {\n const [highlightMap, setHighlightIndex] = useState<{ [key: number]: string }>({});\n const { field, contentModel } = props;\n\n return (\n <DynamicSection\n {...props}\n emptyValue={{}}\n showLabel={false}\n renderTitle={value => (\n <Cell span={12} className={dynamicSectionTitleStyle}>\n <Typography use={\"headline5\"}>\n {`${field.label} ${value.length ? `(${value.length})` : \"\"}`}\n </Typography>\n {field.helpText && <FormElementMessage>{field.helpText}</FormElementMessage>}\n </Cell>\n )}\n gridClassName={dynamicSectionGridStyle}\n >\n {({ Bind, bind, index }) => (\n <ObjectItem>\n {highlightMap[index] ? <ItemHighLight key={highlightMap[index]} /> : null}\n <Accordion\n title={`${props.field.label} #${index + 1}`}\n action={\n <Actions\n setHighlightIndex={setHighlightIndex}\n index={index}\n bind={bind}\n />\n }\n // Open first Accordion by default\n defaultValue={index === 0}\n >\n <Cell span={12} className={fieldsWrapperStyle}>\n <Fields\n Bind={Bind}\n {...bind.index}\n contentModel={contentModel}\n fields={(field.settings || {}).fields || []}\n layout={(field.settings || {}).layout || []}\n gridClassName={fieldsGridStyle}\n />\n </Cell>\n </Accordion>\n </ObjectItem>\n )}\n </DynamicSection>\n );\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-objects\",\n renderer: {\n rendererName: \"objects\",\n name: t`Inline Form`,\n description: t`Renders a set of fields.`,\n canUse({ field }) {\n return field.type === \"object\" && Boolean(field.multipleValues);\n },\n render(props) {\n return <ObjectsRenderer {...props} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AAAgE;AAEhE,IAAMA,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,oCAAoC,CAAC;AAWvD,IAAMC,OAA+B,GAAG,SAAlCA,OAA+B,OAA2C;EAAA,IAArCC,iBAAiB,QAAjBA,iBAAiB;IAAEC,IAAI,QAAJA,IAAI;IAAEC,KAAK,QAALA,KAAK;EACrE,kBAAuCD,IAAI,CAACE,KAAK;IAAzCC,aAAa,eAAbA,aAAa;IAAEC,WAAW,eAAXA,WAAW;EAElC,IAAMC,MAAM,GAAG,IAAAC,kBAAW,EACtB,UAAAC,CAAC,EAAI;IACDA,CAAC,CAACC,eAAe,EAAE;IACnBL,aAAa,CAACF,KAAK,CAAC;IACpBF,iBAAiB,CAAC,UAAAU,GAAG;MAAA,mEACdA,GAAG,yCACLR,KAAK,GAAG,CAAC,EAAG,IAAAS,sCAA+B,EAAC,EAAE,CAAC;IAAA,CAClD,CAAC;EACP,CAAC,EACD,CAACP,aAAa,EAAEF,KAAK,CAAC,CACzB;EAED,IAAMU,IAAI,GAAG,IAAAL,kBAAW,EACpB,UAAAC,CAAC,EAAI;IACDA,CAAC,CAACC,eAAe,EAAE;IACnBJ,WAAW,CAACH,KAAK,CAAC;IAClBF,iBAAiB,CAAC,UAAAU,GAAG;MAAA,mEACdA,GAAG,yCACLR,KAAK,GAAG,CAAC,EAAG,IAAAS,sCAA+B,EAAC,EAAE,CAAC;IAAA,CAClD,CAAC;EACP,CAAC,EACD,CAACN,WAAW,EAAEH,KAAK,CAAC,CACvB;EAED,OAAOA,KAAK,GAAG,CAAC,gBACZ,yEACI,6BAAC,kBAAU;IAAC,IAAI,eAAE,6BAAC,+BAAS,OAAI;IAAC,OAAO,EAAEI;EAAO,EAAG,eACpD,6BAAC,kBAAU;IAAC,IAAI,eAAE,6BAAC,6BAAO,OAAI;IAAC,OAAO,EAAEM;EAAK,EAAG,eAChD,6BAAC,kBAAU;IAAC,IAAI,eAAE,6BAAC,qBAAU,OAAI;IAAC,OAAO,EAAE;MAAA,OAAMX,IAAI,CAACE,KAAK,CAACU,WAAW,CAACX,KAAK,CAAC;IAAA;EAAC,EAAG,CACnF,GACH,IAAI;AACZ,CAAC;AAED,IAAMY,eAAsD,GAAG,SAAzDA,eAAsD,CAAGC,KAAK,EAAI;EACpE,gBAA0C,IAAAC,eAAQ,EAA4B,CAAC,CAAC,CAAC;IAAA;IAA1EC,YAAY;IAAEjB,iBAAiB;EACtC,IAAQG,KAAK,GAAmBY,KAAK,CAA7BZ,KAAK;IAAEe,YAAY,GAAKH,KAAK,CAAtBG,YAAY;EAE3B,oBACI,6BAAC,uBAAc,oBACPH,KAAK;IACT,UAAU,EAAE,CAAC,CAAE;IACf,SAAS,EAAE,KAAM;IACjB,WAAW,EAAE,qBAAAI,KAAK;MAAA,oBACd,6BAAC,UAAI;QAAC,IAAI,EAAE,EAAG;QAAC,SAAS,EAAEC;MAAyB,gBAChD,6BAAC,sBAAU;QAAC,GAAG,EAAE;MAAY,aACrBjB,KAAK,CAACkB,KAAK,cAAIF,KAAK,CAACG,MAAM,cAAOH,KAAK,CAACG,MAAM,SAAM,EAAE,EACjD,EACZnB,KAAK,CAACoB,QAAQ,iBAAI,6BAAC,sCAAkB,QAAEpB,KAAK,CAACoB,QAAQ,CAAsB,CACzE;IAAA,CACT;IACF,aAAa,EAAEC;EAAwB,IAEtC;IAAA,IAAGC,IAAI,SAAJA,IAAI;MAAExB,IAAI,SAAJA,IAAI;MAAEC,KAAK,SAALA,KAAK;IAAA,oBACjB,6BAAC,4BAAU,QACNe,YAAY,CAACf,KAAK,CAAC,gBAAG,6BAAC,+BAAa;MAAC,GAAG,EAAEe,YAAY,CAACf,KAAK;IAAE,EAAG,GAAG,IAAI,eACzE,6BAAC,kBAAS;MACN,KAAK,YAAKa,KAAK,CAACZ,KAAK,CAACkB,KAAK,eAAKnB,KAAK,GAAG,CAAC,CAAG;MAC5C,MAAM,eACF,6BAAC,OAAO;QACJ,iBAAiB,EAAEF,iBAAkB;QACrC,KAAK,EAAEE,KAAM;QACb,IAAI,EAAED;MAAK;MAGnB;MAAA;MACA,YAAY,EAAEC,KAAK,KAAK;IAAE,gBAE1B,6BAAC,UAAI;MAAC,IAAI,EAAE,EAAG;MAAC,SAAS,EAAEwB;IAAmB,gBAC1C,6BAAC,cAAM;MACH,IAAI,EAAED;IAAK,GACPxB,IAAI,CAACC,KAAK;MACd,YAAY,EAAEgB,YAAa;MAC3B,MAAM,EAAE,CAACf,KAAK,CAACwB,QAAQ,IAAI,CAAC,CAAC,EAAEC,MAAM,IAAI,EAAG;MAC5C,MAAM,EAAE,CAACzB,KAAK,CAACwB,QAAQ,IAAI,CAAC,CAAC,EAAEE,MAAM,IAAI,EAAG;MAC5C,aAAa,EAAEC;IAAgB,GACjC,CACC,CACC,CACH;EAAA,CAChB,CACY;AAEzB,CAAC;AAED,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BAA2B;EACjCC,IAAI,EAAE,mCAAmC;EACzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,SAAS;IACvBF,IAAI,EAAErC,CAAC,8FAAa;IACpBwC,WAAW,EAAExC,CAAC,6GAA0B;IACxCyC,MAAM,yBAAY;MAAA,IAATlC,KAAK,SAALA,KAAK;MACV,OAAOA,KAAK,CAAC6B,IAAI,KAAK,QAAQ,IAAIM,OAAO,CAACnC,KAAK,CAACoC,cAAc,CAAC;IACnE,CAAC;IACDC,MAAM,kBAACzB,KAAK,EAAE;MACV,oBAAO,6BAAC,eAAe,EAAKA,KAAK,CAAI;IACzC;EACJ;AACJ,CAAC;AAAC,eAEagB,MAAM;AAAA"}
1
+ {"version":3,"names":["t","i18n","ns","Actions","setHighlightIndex","bind","index","field","moveValueDown","moveValueUp","onDown","useCallback","e","stopPropagation","map","generateAlphaNumericLowerCaseId","onUp","removeValue","ObjectsRenderer","props","useState","highlightMap","contentModel","value","dynamicSectionTitleStyle","label","length","helpText","dynamicSectionGridStyle","Bind","fieldsWrapperStyle","settings","fields","layout","fieldsGridStyle","plugin","type","name","renderer","rendererName","description","canUse","Boolean","multipleValues","render"],"sources":["multipleObjects.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction, useState, useCallback } from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Cell } from \"@webiny/ui/Grid\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport {\n BindComponentRenderProp,\n CmsEditorFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"~/types\";\nimport DynamicSection from \"../DynamicSection\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport { ReactComponent as ArrowUp } from \"./arrow_drop_up.svg\";\nimport { ReactComponent as ArrowDown } from \"./arrow_drop_down.svg\";\nimport Accordion from \"~/admin/plugins/fieldRenderers/Accordion\";\nimport {\n fieldsWrapperStyle,\n dynamicSectionTitleStyle,\n dynamicSectionGridStyle,\n fieldsGridStyle,\n ItemHighLight,\n ObjectItem\n} from \"./StyledComponents\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\ninterface ActionsProps {\n setHighlightIndex: Dispatch<SetStateAction<{ [key: number]: string }>>;\n index: number;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n}\n\nconst Actions: React.FC<ActionsProps> = ({ setHighlightIndex, bind, index }) => {\n const { moveValueDown, moveValueUp } = bind.field;\n\n const onDown = useCallback(\n e => {\n e.stopPropagation();\n moveValueDown(index);\n setHighlightIndex(map => ({\n ...map,\n [index + 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueDown, index]\n );\n\n const onUp = useCallback(\n e => {\n e.stopPropagation();\n moveValueUp(index);\n setHighlightIndex(map => ({\n ...map,\n [index - 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueUp, index]\n );\n\n return index > 0 ? (\n <>\n <IconButton icon={<ArrowDown />} onClick={onDown} />\n <IconButton icon={<ArrowUp />} onClick={onUp} />\n <IconButton icon={<DeleteIcon />} onClick={() => bind.field.removeValue(index)} />\n </>\n ) : null;\n};\n\nconst ObjectsRenderer: React.FC<CmsModelFieldRendererProps> = props => {\n const [highlightMap, setHighlightIndex] = useState<{ [key: number]: string }>({});\n const { field, contentModel } = props;\n\n return (\n <DynamicSection\n {...props}\n emptyValue={{}}\n showLabel={false}\n renderTitle={value => (\n <Cell span={12} className={dynamicSectionTitleStyle}>\n <Typography use={\"headline5\"}>\n {`${field.label} ${value.length ? `(${value.length})` : \"\"}`}\n </Typography>\n {field.helpText && <FormElementMessage>{field.helpText}</FormElementMessage>}\n </Cell>\n )}\n gridClassName={dynamicSectionGridStyle}\n >\n {({ Bind, bind, index }) => (\n <ObjectItem>\n {highlightMap[index] ? <ItemHighLight key={highlightMap[index]} /> : null}\n <Accordion\n title={`${props.field.label} #${index + 1}`}\n action={\n <Actions\n setHighlightIndex={setHighlightIndex}\n index={index}\n bind={bind}\n />\n }\n // Open first Accordion by default\n defaultValue={index === 0}\n >\n <Cell span={12} className={fieldsWrapperStyle}>\n <Fields\n Bind={Bind}\n {...bind.index}\n contentModel={contentModel}\n fields={(field.settings || {}).fields || []}\n layout={(field.settings || {}).layout || []}\n gridClassName={fieldsGridStyle}\n />\n </Cell>\n </Accordion>\n </ObjectItem>\n )}\n </DynamicSection>\n );\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-objects\",\n renderer: {\n rendererName: \"objects\",\n name: t`Inline Form`,\n description: t`Renders a set of fields.`,\n canUse({ field }) {\n return field.type === \"object\" && Boolean(field.multipleValues);\n },\n render(props) {\n return <ObjectsRenderer {...props} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","Actions","setHighlightIndex","bind","index","field","moveValueDown","moveValueUp","onDown","useCallback","e","stopPropagation","map","generateAlphaNumericLowerCaseId","onUp","removeValue","ObjectsRenderer","props","useState","highlightMap","contentModel","label","helpText","dynamicSectionGridStyle","Bind","fieldsWrapperStyle","settings","fields","layout","fieldsGridStyle","plugin","type","name","renderer","rendererName","description","canUse","Boolean","multipleValues","render"],"sources":["multipleObjectsAccordion.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction, useState, useCallback } from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Cell } from \"@webiny/ui/Grid\";\nimport { Accordion as RootAccordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport {\n BindComponentRenderProp,\n CmsEditorFieldRendererPlugin,\n CmsEditorFieldRendererProps\n} from \"~/types\";\nimport DynamicSection from \"../DynamicSection\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport { ReactComponent as ArrowUp } from \"./arrow_drop_up.svg\";\nimport { ReactComponent as ArrowDown } from \"./arrow_drop_down.svg\";\nimport Accordion from \"~/admin/plugins/fieldRenderers/Accordion\";\nimport {\n fieldsWrapperStyle,\n dynamicSectionGridStyle,\n fieldsGridStyle,\n ItemHighLight,\n ObjectItem\n} from \"./StyledComponents\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\ninterface ActionsProps {\n setHighlightIndex: Dispatch<SetStateAction<{ [key: number]: string }>>;\n index: number;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n}\n\nconst Actions: React.FC<ActionsProps> = ({ setHighlightIndex, bind, index }) => {\n const { moveValueDown, moveValueUp } = bind.field;\n\n const onDown = useCallback(\n e => {\n e.stopPropagation();\n moveValueDown(index);\n setHighlightIndex(map => ({\n ...map,\n [index + 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueDown, index]\n );\n\n const onUp = useCallback(\n e => {\n e.stopPropagation();\n moveValueUp(index);\n setHighlightIndex(map => ({\n ...map,\n [index - 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueUp, index]\n );\n\n return index > 0 ? (\n <>\n <IconButton icon={<ArrowDown />} onClick={onDown} />\n <IconButton icon={<ArrowUp />} onClick={onUp} />\n <IconButton icon={<DeleteIcon />} onClick={() => bind.field.removeValue(index)} />\n </>\n ) : null;\n};\n\nconst ObjectsRenderer: React.FC<CmsEditorFieldRendererProps> = props => {\n const [highlightMap, setHighlightIndex] = useState<{ [key: number]: string }>({});\n const { field, contentModel } = props;\n\n return (\n <RootAccordion>\n <AccordionItem title={field.label} description={field.helpText}>\n <DynamicSection\n {...props}\n emptyValue={{}}\n showLabel={false}\n gridClassName={dynamicSectionGridStyle}\n >\n {({ Bind, bind, index }) => (\n <ObjectItem>\n {highlightMap[index] ? (\n <ItemHighLight key={highlightMap[index]} />\n ) : null}\n <Accordion\n title={`${props.field.label} #${index + 1}`}\n action={\n <Actions\n setHighlightIndex={setHighlightIndex}\n index={index}\n bind={bind}\n />\n }\n // Open first Accordion by default\n defaultValue={index === 0}\n >\n <Cell span={12} className={fieldsWrapperStyle}>\n <Fields\n Bind={Bind}\n {...bind.index}\n contentModel={contentModel}\n fields={(field.settings || {}).fields || []}\n layout={(field.settings || {}).layout || []}\n gridClassName={fieldsGridStyle}\n />\n </Cell>\n </Accordion>\n </ObjectItem>\n )}\n </DynamicSection>\n </AccordionItem>\n </RootAccordion>\n );\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-objects-accordion\",\n renderer: {\n rendererName: \"objects-accordion\",\n name: t`Accordion`,\n description: t`Renders fields within an accordion.`,\n canUse({ field }) {\n return field.type === \"object\" && Boolean(field.multipleValues);\n },\n render(props) {\n return <ObjectsRenderer {...props} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
1
+ {"version":3,"names":["t","i18n","ns","Actions","setHighlightIndex","bind","index","field","moveValueDown","moveValueUp","onDown","useCallback","e","stopPropagation","map","generateAlphaNumericLowerCaseId","onUp","removeValue","ObjectsRenderer","props","useState","highlightMap","contentModel","label","helpText","dynamicSectionGridStyle","Bind","fieldsWrapperStyle","settings","fields","layout","fieldsGridStyle","plugin","type","name","renderer","rendererName","description","canUse","Boolean","multipleValues","render"],"sources":["multipleObjectsAccordion.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction, useState, useCallback } from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Cell } from \"@webiny/ui/Grid\";\nimport { Accordion as RootAccordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport {\n BindComponentRenderProp,\n CmsEditorFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"~/types\";\nimport DynamicSection from \"../DynamicSection\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport { ReactComponent as ArrowUp } from \"./arrow_drop_up.svg\";\nimport { ReactComponent as ArrowDown } from \"./arrow_drop_down.svg\";\nimport Accordion from \"~/admin/plugins/fieldRenderers/Accordion\";\nimport {\n fieldsWrapperStyle,\n dynamicSectionGridStyle,\n fieldsGridStyle,\n ItemHighLight,\n ObjectItem\n} from \"./StyledComponents\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\ninterface ActionsProps {\n setHighlightIndex: Dispatch<SetStateAction<{ [key: number]: string }>>;\n index: number;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n}\n\nconst Actions: React.FC<ActionsProps> = ({ setHighlightIndex, bind, index }) => {\n const { moveValueDown, moveValueUp } = bind.field;\n\n const onDown = useCallback(\n e => {\n e.stopPropagation();\n moveValueDown(index);\n setHighlightIndex(map => ({\n ...map,\n [index + 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueDown, index]\n );\n\n const onUp = useCallback(\n e => {\n e.stopPropagation();\n moveValueUp(index);\n setHighlightIndex(map => ({\n ...map,\n [index - 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueUp, index]\n );\n\n return index > 0 ? (\n <>\n <IconButton icon={<ArrowDown />} onClick={onDown} />\n <IconButton icon={<ArrowUp />} onClick={onUp} />\n <IconButton icon={<DeleteIcon />} onClick={() => bind.field.removeValue(index)} />\n </>\n ) : null;\n};\n\nconst ObjectsRenderer: React.FC<CmsModelFieldRendererProps> = props => {\n const [highlightMap, setHighlightIndex] = useState<{ [key: number]: string }>({});\n const { field, contentModel } = props;\n\n return (\n <RootAccordion>\n <AccordionItem title={field.label} description={field.helpText}>\n <DynamicSection\n {...props}\n emptyValue={{}}\n showLabel={false}\n gridClassName={dynamicSectionGridStyle}\n >\n {({ Bind, bind, index }) => (\n <ObjectItem>\n {highlightMap[index] ? (\n <ItemHighLight key={highlightMap[index]} />\n ) : null}\n <Accordion\n title={`${props.field.label} #${index + 1}`}\n action={\n <Actions\n setHighlightIndex={setHighlightIndex}\n index={index}\n bind={bind}\n />\n }\n // Open first Accordion by default\n defaultValue={index === 0}\n >\n <Cell span={12} className={fieldsWrapperStyle}>\n <Fields\n Bind={Bind}\n {...bind.index}\n contentModel={contentModel}\n fields={(field.settings || {}).fields || []}\n layout={(field.settings || {}).layout || []}\n gridClassName={fieldsGridStyle}\n />\n </Cell>\n </Accordion>\n </ObjectItem>\n )}\n </DynamicSection>\n </AccordionItem>\n </RootAccordion>\n );\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-objects-accordion\",\n renderer: {\n rendererName: \"objects-accordion\",\n name: t`Accordion`,\n description: t`Renders fields within an accordion.`,\n canUse({ field }) {\n return field.type === \"object\" && Boolean(field.multipleValues);\n },\n render(props) {\n return <ObjectsRenderer {...props} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import { BindComponentRenderProp, CmsEditorFieldRendererProps } from "../../../../../../types";
2
+ import { BindComponentRenderProp, CmsModelFieldRendererProps } from "../../../../../../types";
3
3
  import { CmsReferenceValue } from "../../components/types";
4
- interface Props extends CmsEditorFieldRendererProps {
4
+ interface Props extends CmsModelFieldRendererProps {
5
5
  bind: BindComponentRenderProp<CmsReferenceValue[] | undefined | null>;
6
6
  }
7
7
  export declare const AdvancedMultipleReferenceField: React.VFC<Props>;
@@ -66,9 +66,11 @@ var Container = /*#__PURE__*/(0, _styled.default)("div", {
66
66
  margin: 0
67
67
  }),
68
68
  "&.single-entry": {
69
- height: 295,
70
- ">div": {
71
- height: 270
69
+ "> .entries": {
70
+ height: "auto",
71
+ " > div > div": {
72
+ position: "relative !important"
73
+ }
72
74
  }
73
75
  }
74
76
  });
@@ -1 +1 @@
1
- {"version":3,"names":["FieldLabel","styled","fontSize","fontWeight","borderBottom","marginBottom","paddingBottom","display","justifyContent","OptionsContainer","borderTop","borderRight","backgroundColor","marginLeft","marginRight","Container","border","paddingLeft","width","boxSizing","position","padding","borderLeft","margin","height","FieldName","RecordCount","color","lineHeight","alignSelf","getRecordCountMessage","count","AdvancedMultipleReferenceField","props","bind","field","useSnackbar","showSnackbar","values","useMemo","value","useState","linkEntryDialogModel","setLinkEntryDialogModel","newEntryDialogModel","setNewEntryDialogModel","loadedModels","setLoadedModels","useQuery","GQL","LIST_CONTENT_MODELS","data","loadingModels","loading","useEffect","listContentModels","error","message","onNewRecord","useCallback","modelId","model","find","console","log","onNewEntryDialogClose","onExistingRecord","onLinkEntryDialogClose","useReferences","perPage","entries","loadingEntries","loadMore","onRemove","id","Array","isArray","parseIdentifier","entryId","onChange","filter","valueEntryId","models","settings","reduce","collection","ref","push","storeValues","onNewEntryCreate","concat","onMoveUp","index","toTop","length","arr","splice","moveValueUp","onMoveDown","toBottom","moveValueDown","label","entry","isFirst","isLast","undefined"],"sources":["AdvancedMultipleReferenceField.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport styled from \"@emotion/styled\";\nimport * as GQL from \"~/admin/viewsGraphql\";\nimport {\n BindComponentRenderProp,\n CmsEditorContentEntry,\n CmsEditorFieldRendererProps,\n CmsModel\n} from \"~/types\";\nimport { Options } from \"./Options\";\nimport { useReferences } from \"../hooks/useReferences\";\nimport { Entry } from \"./Entry\";\nimport { ReferencesDialog } from \"./ReferencesDialog\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { ListCmsModelsQueryResponse } from \"~/admin/viewsGraphql\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { CmsReferenceValue } from \"~/admin/plugins/fieldRenderers/ref/components/types\";\nimport { AbsoluteLoader as Loader } from \"./Loader\";\nimport { NewReferencedEntryDialog } from \"../components/NewReferencedEntryDialog\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { Entries } from \"./Entries\";\n\nconst FieldLabel = styled(\"h3\")({\n fontSize: 24,\n fontWeight: \"normal\",\n borderBottom: \"1px solid var(--mdc-theme-background)\",\n marginBottom: \"20px\",\n paddingBottom: \"5px\",\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\nconst OptionsContainer: any = styled(\"div\")({\n borderTop: \"1px solid var(--mdc-theme-on-background)\",\n borderRight: \"1px solid var(--mdc-theme-surface)\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n marginLeft: \"-21px\",\n marginBottom: \"-21px\",\n marginRight: \"-1px\"\n});\n\nconst Container = styled(\"div\")({\n border: \"1px solid var(--mdc-theme-on-background)\",\n paddingLeft: \"10px\",\n width: \"100%\",\n boxSizing: \"border-box\",\n position: \"relative\",\n padding: \"20px 0 20px 20px\",\n backgroundColor: \"var(--mdc-theme-background)\",\n \"&.no-entries\": {\n backgroundColor: \"var(--mdc-theme-surface)\",\n border: \"none\",\n borderLeft: \"3px solid var(--mdc-theme-background)\",\n padding: 0,\n paddingLeft: 10,\n [OptionsContainer]: {\n border: \"none\",\n margin: 0\n }\n },\n \"&.single-entry\": {\n height: 295,\n \">div\": {\n height: 270\n }\n }\n});\n\nconst FieldName = styled(\"span\")({});\nconst RecordCount = styled(\"span\")({\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n fontSize: \"0.6em\",\n lineHeight: \"100%\",\n alignSelf: \"center\"\n});\n\nconst getRecordCountMessage = (count: number) => {\n switch (count) {\n case 0:\n return \"no records selected\";\n case 1:\n return \"1 record selected\";\n default:\n return `${count} records selected`;\n }\n};\n\ninterface Props extends CmsEditorFieldRendererProps {\n bind: BindComponentRenderProp<CmsReferenceValue[] | undefined | null>;\n}\n\nexport const AdvancedMultipleReferenceField: React.VFC<Props> = props => {\n const { bind, field } = props;\n const { showSnackbar } = useSnackbar();\n\n const values = useMemo(() => {\n return bind.value || [];\n }, [bind.value]);\n\n const [linkEntryDialogModel, setLinkEntryDialogModel] = useState<CmsModel | null>(null);\n const [newEntryDialogModel, setNewEntryDialogModel] = useState<CmsModel | null>(null);\n\n const [loadedModels, setLoadedModels] = useState<CmsModel[]>([]);\n\n const { data, loading: loadingModels } = useQuery<ListCmsModelsQueryResponse>(\n GQL.LIST_CONTENT_MODELS\n );\n\n useEffect(() => {\n if (loadingModels || !data?.listContentModels?.data) {\n return;\n } else if (data.listContentModels.error) {\n setLoadedModels([]);\n showSnackbar(data.listContentModels.error.message);\n return;\n }\n setLoadedModels(data.listContentModels.data);\n }, [data]);\n\n const onNewRecord = useCallback(\n (modelId: string) => {\n const model = loadedModels.find(model => model.modelId === modelId);\n if (!model) {\n console.log(`Cannot find model by modelId \"${modelId}\".`);\n return;\n }\n setNewEntryDialogModel(model);\n },\n [loadedModels, linkEntryDialogModel]\n );\n\n const onNewEntryDialogClose = useCallback(() => {\n setNewEntryDialogModel(null);\n }, [linkEntryDialogModel]);\n\n const onExistingRecord = useCallback(\n (modelId: string) => {\n const model = loadedModels.find(model => model.modelId === modelId);\n if (!model) {\n console.log(`Cannot find model by modelId \"${modelId}\".`);\n return;\n }\n setLinkEntryDialogModel(model);\n },\n [loadedModels, linkEntryDialogModel]\n );\n\n const onLinkEntryDialogClose = useCallback(() => {\n setLinkEntryDialogModel(null);\n }, []);\n\n const {\n entries,\n loading: loadingEntries,\n loadMore\n } = useReferences({\n values,\n perPage: 10\n });\n\n const onRemove = useCallback(\n (id: string) => {\n if (!values || !Array.isArray(values)) {\n return;\n }\n const { id: entryId } = parseIdentifier(id);\n bind.onChange(\n values.filter(value => {\n const { id: valueEntryId } = parseIdentifier(value.id);\n return valueEntryId !== entryId;\n })\n );\n },\n [entries, values]\n );\n\n const models = useMemo(() => {\n if (!loadedModels || !field.settings?.models || !Array.isArray(field.settings.models)) {\n return [];\n }\n\n return field.settings.models.reduce<CmsModel[]>((collection, ref) => {\n const model = loadedModels.find(model => model.modelId === ref.modelId);\n if (!model) {\n return collection;\n }\n collection.push(model);\n\n return collection;\n }, []);\n }, [loadedModels, entries]);\n\n const storeValues = useCallback(\n (values: CmsReferenceValue[]) => {\n bind.onChange(values);\n return;\n },\n [values]\n );\n\n const onNewEntryCreate = useCallback(\n (data: Partial<CmsEditorContentEntry> | null) => {\n if (!data) {\n console.log(\n `Could not store new entry to the reference field. Missing whole entry.`\n );\n return;\n } else if (!data.id) {\n console.log(\n `Could not store new entry to the reference field. Missing \"id\" value.`\n );\n return;\n } else if (!data.modelId) {\n console.log(\n `Could not store new entry to the reference field. Missing \"modelId\" value.`\n );\n return;\n }\n storeValues(\n values.concat([\n {\n id: data.id,\n modelId: data.modelId\n }\n ])\n );\n },\n [storeValues]\n );\n\n const onMoveUp = useCallback(\n (index: number, toTop?: boolean) => {\n if (values.length === 0) {\n return;\n } else if (toTop) {\n const arr = values.splice(index, 1);\n bind.onChange(arr.concat(values));\n return;\n }\n bind.moveValueUp(index);\n },\n [values]\n );\n const onMoveDown = useCallback(\n (index: number, toBottom?: boolean) => {\n if (values.length === 0) {\n return;\n } else if (toBottom === true) {\n const arr = values.splice(index, 1);\n bind.onChange(values.concat(arr));\n return;\n }\n bind.moveValueDown(index);\n },\n [values]\n );\n\n const loading = loadingEntries || loadingModels;\n\n const message = getRecordCountMessage(values.length);\n\n return (\n <>\n <FieldLabel>\n <FieldName>{field.label}</FieldName>\n <RecordCount>({message})</RecordCount>\n </FieldLabel>\n <Container\n className={\n (entries.length < 1 ? \"no-entries\" : \"has-entries\") +\n (entries.length == 1 ? \" single-entry\" : \"\")\n }\n >\n {loading && <Loader />}\n <Entries entries={entries} loadMore={loadMore}>\n {(entry, index) => {\n const isFirst = index === 0;\n const isLast = index >= values.length - 1;\n const model = loadedModels.find(\n model => model.modelId === entry.model.modelId\n );\n if (!model) {\n return null;\n }\n return (\n <Entry\n model={model}\n placement=\"multiRef\"\n key={`reference-entry-${entry.id}`}\n index={index}\n entry={entry}\n onRemove={onRemove}\n onMoveUp={!isFirst ? onMoveUp : undefined}\n onMoveDown={!isLast ? onMoveDown : undefined}\n />\n );\n }}\n </Entries>\n\n <OptionsContainer>\n <Options\n models={models}\n onNewRecord={onNewRecord}\n onLinkExistingRecord={onExistingRecord}\n />\n\n {newEntryDialogModel && (\n <NewReferencedEntryDialog\n model={newEntryDialogModel}\n onClose={onNewEntryDialogClose}\n onChange={onNewEntryCreate}\n />\n )}\n\n {linkEntryDialogModel && (\n <ReferencesDialog\n {...props}\n multiple={true}\n values={values}\n contentModel={linkEntryDialogModel}\n storeValues={storeValues}\n onDialogClose={onLinkEntryDialogClose}\n />\n )}\n </OptionsContainer>\n </Container>\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["FieldLabel","styled","fontSize","fontWeight","borderBottom","marginBottom","paddingBottom","display","justifyContent","OptionsContainer","borderTop","borderRight","backgroundColor","marginLeft","marginRight","Container","border","paddingLeft","width","boxSizing","position","padding","borderLeft","margin","height","FieldName","RecordCount","color","lineHeight","alignSelf","getRecordCountMessage","count","AdvancedMultipleReferenceField","props","bind","field","useSnackbar","showSnackbar","values","useMemo","value","useState","linkEntryDialogModel","setLinkEntryDialogModel","newEntryDialogModel","setNewEntryDialogModel","loadedModels","setLoadedModels","useQuery","GQL","LIST_CONTENT_MODELS","data","loadingModels","loading","useEffect","listContentModels","error","message","onNewRecord","useCallback","modelId","model","find","console","log","onNewEntryDialogClose","onExistingRecord","onLinkEntryDialogClose","useReferences","perPage","entries","loadingEntries","loadMore","onRemove","id","Array","isArray","parseIdentifier","entryId","onChange","filter","valueEntryId","models","settings","reduce","collection","ref","push","storeValues","onNewEntryCreate","concat","onMoveUp","index","toTop","length","arr","splice","moveValueUp","onMoveDown","toBottom","moveValueDown","label","entry","isFirst","isLast","undefined"],"sources":["AdvancedMultipleReferenceField.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport styled from \"@emotion/styled\";\nimport * as GQL from \"~/admin/viewsGraphql\";\nimport {\n BindComponentRenderProp,\n CmsEditorContentEntry,\n CmsModelFieldRendererProps,\n CmsModel\n} from \"~/types\";\nimport { Options } from \"./Options\";\nimport { useReferences } from \"../hooks/useReferences\";\nimport { Entry } from \"./Entry\";\nimport { ReferencesDialog } from \"./ReferencesDialog\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { ListCmsModelsQueryResponse } from \"~/admin/viewsGraphql\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { CmsReferenceValue } from \"~/admin/plugins/fieldRenderers/ref/components/types\";\nimport { AbsoluteLoader as Loader } from \"./Loader\";\nimport { NewReferencedEntryDialog } from \"../components/NewReferencedEntryDialog\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { Entries } from \"./Entries\";\n\nconst FieldLabel = styled(\"h3\")({\n fontSize: 24,\n fontWeight: \"normal\",\n borderBottom: \"1px solid var(--mdc-theme-background)\",\n marginBottom: \"20px\",\n paddingBottom: \"5px\",\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\nconst OptionsContainer: any = styled(\"div\")({\n borderTop: \"1px solid var(--mdc-theme-on-background)\",\n borderRight: \"1px solid var(--mdc-theme-surface)\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n marginLeft: \"-21px\",\n marginBottom: \"-21px\",\n marginRight: \"-1px\"\n});\n\nconst Container = styled(\"div\")({\n border: \"1px solid var(--mdc-theme-on-background)\",\n paddingLeft: \"10px\",\n width: \"100%\",\n boxSizing: \"border-box\",\n position: \"relative\",\n padding: \"20px 0 20px 20px\",\n backgroundColor: \"var(--mdc-theme-background)\",\n \"&.no-entries\": {\n backgroundColor: \"var(--mdc-theme-surface)\",\n border: \"none\",\n borderLeft: \"3px solid var(--mdc-theme-background)\",\n padding: 0,\n paddingLeft: 10,\n [OptionsContainer]: {\n border: \"none\",\n margin: 0\n }\n },\n \"&.single-entry\": {\n \"> .entries\": {\n height: \"auto\",\n \" > div > div\": {\n position: \"relative !important\" as any\n }\n }\n }\n});\n\nconst FieldName = styled(\"span\")({});\nconst RecordCount = styled(\"span\")({\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n fontSize: \"0.6em\",\n lineHeight: \"100%\",\n alignSelf: \"center\"\n});\n\nconst getRecordCountMessage = (count: number) => {\n switch (count) {\n case 0:\n return \"no records selected\";\n case 1:\n return \"1 record selected\";\n default:\n return `${count} records selected`;\n }\n};\n\ninterface Props extends CmsModelFieldRendererProps {\n bind: BindComponentRenderProp<CmsReferenceValue[] | undefined | null>;\n}\n\nexport const AdvancedMultipleReferenceField: React.VFC<Props> = props => {\n const { bind, field } = props;\n const { showSnackbar } = useSnackbar();\n\n const values = useMemo(() => {\n return bind.value || [];\n }, [bind.value]);\n\n const [linkEntryDialogModel, setLinkEntryDialogModel] = useState<CmsModel | null>(null);\n const [newEntryDialogModel, setNewEntryDialogModel] = useState<CmsModel | null>(null);\n\n const [loadedModels, setLoadedModels] = useState<CmsModel[]>([]);\n\n const { data, loading: loadingModels } = useQuery<ListCmsModelsQueryResponse>(\n GQL.LIST_CONTENT_MODELS\n );\n\n useEffect(() => {\n if (loadingModels || !data?.listContentModels?.data) {\n return;\n } else if (data.listContentModels.error) {\n setLoadedModels([]);\n showSnackbar(data.listContentModels.error.message);\n return;\n }\n setLoadedModels(data.listContentModels.data);\n }, [data]);\n\n const onNewRecord = useCallback(\n (modelId: string) => {\n const model = loadedModels.find(model => model.modelId === modelId);\n if (!model) {\n console.log(`Cannot find model by modelId \"${modelId}\".`);\n return;\n }\n setNewEntryDialogModel(model);\n },\n [loadedModels, linkEntryDialogModel]\n );\n\n const onNewEntryDialogClose = useCallback(() => {\n setNewEntryDialogModel(null);\n }, [linkEntryDialogModel]);\n\n const onExistingRecord = useCallback(\n (modelId: string) => {\n const model = loadedModels.find(model => model.modelId === modelId);\n if (!model) {\n console.log(`Cannot find model by modelId \"${modelId}\".`);\n return;\n }\n setLinkEntryDialogModel(model);\n },\n [loadedModels, linkEntryDialogModel]\n );\n\n const onLinkEntryDialogClose = useCallback(() => {\n setLinkEntryDialogModel(null);\n }, []);\n\n const {\n entries,\n loading: loadingEntries,\n loadMore\n } = useReferences({\n values,\n perPage: 10\n });\n\n const onRemove = useCallback(\n (id: string) => {\n if (!values || !Array.isArray(values)) {\n return;\n }\n const { id: entryId } = parseIdentifier(id);\n bind.onChange(\n values.filter(value => {\n const { id: valueEntryId } = parseIdentifier(value.id);\n return valueEntryId !== entryId;\n })\n );\n },\n [entries, values]\n );\n\n const models = useMemo(() => {\n if (!loadedModels || !field.settings?.models || !Array.isArray(field.settings.models)) {\n return [];\n }\n\n return field.settings.models.reduce<CmsModel[]>((collection, ref) => {\n const model = loadedModels.find(model => model.modelId === ref.modelId);\n if (!model) {\n return collection;\n }\n collection.push(model);\n\n return collection;\n }, []);\n }, [loadedModels, entries]);\n\n const storeValues = useCallback(\n (values: CmsReferenceValue[]) => {\n bind.onChange(values);\n return;\n },\n [values]\n );\n\n const onNewEntryCreate = useCallback(\n (data: Partial<CmsEditorContentEntry> | null) => {\n if (!data) {\n console.log(\n `Could not store new entry to the reference field. Missing whole entry.`\n );\n return;\n } else if (!data.id) {\n console.log(\n `Could not store new entry to the reference field. Missing \"id\" value.`\n );\n return;\n } else if (!data.modelId) {\n console.log(\n `Could not store new entry to the reference field. Missing \"modelId\" value.`\n );\n return;\n }\n storeValues(\n values.concat([\n {\n id: data.id,\n modelId: data.modelId\n }\n ])\n );\n },\n [storeValues]\n );\n\n const onMoveUp = useCallback(\n (index: number, toTop?: boolean) => {\n if (values.length === 0) {\n return;\n } else if (toTop) {\n const arr = values.splice(index, 1);\n bind.onChange(arr.concat(values));\n return;\n }\n bind.moveValueUp(index);\n },\n [values]\n );\n const onMoveDown = useCallback(\n (index: number, toBottom?: boolean) => {\n if (values.length === 0) {\n return;\n } else if (toBottom === true) {\n const arr = values.splice(index, 1);\n bind.onChange(values.concat(arr));\n return;\n }\n bind.moveValueDown(index);\n },\n [values]\n );\n\n const loading = loadingEntries || loadingModels;\n\n const message = getRecordCountMessage(values.length);\n\n return (\n <>\n <FieldLabel>\n <FieldName>{field.label}</FieldName>\n <RecordCount>({message})</RecordCount>\n </FieldLabel>\n <Container\n className={\n (entries.length < 1 ? \"no-entries\" : \"has-entries\") +\n (entries.length == 1 ? \" single-entry\" : \"\")\n }\n >\n {loading && <Loader />}\n <Entries entries={entries} loadMore={loadMore}>\n {(entry, index) => {\n const isFirst = index === 0;\n const isLast = index >= values.length - 1;\n const model = loadedModels.find(\n model => model.modelId === entry.model.modelId\n );\n if (!model) {\n return null;\n }\n return (\n <Entry\n model={model}\n placement=\"multiRef\"\n key={`reference-entry-${entry.id}`}\n index={index}\n entry={entry}\n onRemove={onRemove}\n onMoveUp={!isFirst ? onMoveUp : undefined}\n onMoveDown={!isLast ? onMoveDown : undefined}\n />\n );\n }}\n </Entries>\n\n <OptionsContainer>\n <Options\n models={models}\n onNewRecord={onNewRecord}\n onLinkExistingRecord={onExistingRecord}\n />\n\n {newEntryDialogModel && (\n <NewReferencedEntryDialog\n model={newEntryDialogModel}\n onClose={onNewEntryDialogClose}\n onChange={onNewEntryCreate}\n />\n )}\n\n {linkEntryDialogModel && (\n <ReferencesDialog\n {...props}\n multiple={true}\n values={values}\n contentModel={linkEntryDialogModel}\n storeValues={storeValues}\n onDialogClose={onLinkEntryDialogClose}\n />\n )}\n </OptionsContainer>\n </Container>\n </>\n );\n};\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import { BindComponentRenderProp, CmsEditorFieldRendererProps } from "../../../../../../types";
2
+ import { BindComponentRenderProp, CmsModelFieldRendererProps } from "../../../../../../types";
3
3
  import { CmsReferenceValue } from "../../components/types";
4
- interface Props extends CmsEditorFieldRendererProps {
4
+ interface Props extends CmsModelFieldRendererProps {
5
5
  bind: BindComponentRenderProp<CmsReferenceValue | null>;
6
6
  }
7
7
  export declare const AdvancedSingleReferenceField: React.VFC<Props>;
@@ -21,11 +21,7 @@ var _NewReferencedEntryDialog = require("./NewReferencedEntryDialog");
21
21
  var Container = /*#__PURE__*/(0, _styled.default)("div", {
22
22
  target: "e38futg0",
23
23
  label: "Container"
24
- })({
25
- borderLeft: "3px solid var(--mdc-theme-background)"
26
- //paddingLeft: "10px"
27
- });
28
-
24
+ })({});
29
25
  var FieldLabel = /*#__PURE__*/(0, _styled.default)("h3", {
30
26
  target: "e38futg1",
31
27
  label: "FieldLabel"
@@ -1 +1 @@
1
- {"version":3,"names":["Container","styled","borderLeft","FieldLabel","fontSize","fontWeight","borderBottom","marginBottom","paddingBottom","AdvancedSingleReferenceField","props","bind","field","useSnackbar","showSnackbar","useState","linkEntryDialogModel","setLinkEntryDialogModel","newEntryDialogModel","setNewEntryDialogModel","loadedModels","setLoadedModels","useQuery","GQL","LIST_CONTENT_MODELS","data","loadingModels","loading","useEffect","listContentModels","error","message","onNewRecord","useCallback","modelId","model","find","console","log","onNewEntryDialogClose","onExistingRecord","onLinkEntryDialogClose","useReferences","values","value","entries","loadingEntries","onRemove","onChange","models","useMemo","settings","map","filter","Boolean","storeValues","length","id","onNewEntryCreate","initialValue","entry","label"],"sources":["AdvancedSingleReferenceField.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n BindComponentRenderProp,\n CmsEditorContentEntry,\n CmsEditorFieldRendererProps,\n CmsModel\n} from \"~/types\";\nimport { Options } from \"./Options\";\nimport { useReferences } from \"../hooks/useReferences\";\nimport { Entry } from \"./Entry\";\nimport { ReferencesDialog } from \"./ReferencesDialog\";\nimport styled from \"@emotion/styled\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { ListCmsModelsQueryResponse } from \"~/admin/viewsGraphql\";\nimport * as GQL from \"~/admin/viewsGraphql\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { CmsReferenceValue } from \"~/admin/plugins/fieldRenderers/ref/components/types\";\nimport { Loader } from \"./Loader\";\nimport { NewReferencedEntryDialog } from \"~/admin/plugins/fieldRenderers/ref/advanced/components/NewReferencedEntryDialog\";\n\nconst Container = styled(\"div\")({\n borderLeft: \"3px solid var(--mdc-theme-background)\"\n //paddingLeft: \"10px\"\n});\n\nconst FieldLabel = styled(\"h3\")({\n fontSize: 24,\n fontWeight: \"normal\",\n borderBottom: \"1px solid var(--mdc-theme-background)\",\n marginBottom: \"20px\",\n paddingBottom: \"5px\"\n});\n\ninterface Props extends CmsEditorFieldRendererProps {\n bind: BindComponentRenderProp<CmsReferenceValue | null>;\n}\n\nexport const AdvancedSingleReferenceField: React.VFC<Props> = props => {\n const { bind, field } = props;\n const { showSnackbar } = useSnackbar();\n\n const [linkEntryDialogModel, setLinkEntryDialogModel] = useState<CmsModel | null>(null);\n const [newEntryDialogModel, setNewEntryDialogModel] = useState<CmsModel | null>(null);\n const [loadedModels, setLoadedModels] = useState<CmsModel[]>([]);\n\n const { data, loading: loadingModels } = useQuery<ListCmsModelsQueryResponse>(\n GQL.LIST_CONTENT_MODELS\n );\n\n useEffect(() => {\n if (loadingModels || !data?.listContentModels?.data) {\n return;\n } else if (data.listContentModels.error) {\n setLoadedModels([]);\n showSnackbar(data.listContentModels.error.message);\n return;\n }\n setLoadedModels(data.listContentModels.data);\n }, [data]);\n\n const onNewRecord = useCallback(\n (modelId: string) => {\n const model = loadedModels.find(model => model.modelId === modelId);\n if (!model) {\n console.log(`Cannot find model by modelId \"${modelId}\".`);\n return;\n }\n setNewEntryDialogModel(model);\n },\n [loadedModels, linkEntryDialogModel]\n );\n\n const onNewEntryDialogClose = useCallback(() => {\n setNewEntryDialogModel(null);\n }, [linkEntryDialogModel]);\n\n const onExistingRecord = useCallback(\n (modelId: string) => {\n const model = loadedModels.find(model => model.modelId === modelId);\n if (!model) {\n console.log(`Cannot find model by modelId \"${modelId}\".`);\n return;\n }\n setLinkEntryDialogModel(model);\n },\n [loadedModels, linkEntryDialogModel]\n );\n\n const onLinkEntryDialogClose = useCallback(() => {\n setLinkEntryDialogModel(null);\n }, []);\n\n const { entries, loading: loadingEntries } = useReferences({\n values: bind.value\n });\n\n const onRemove = useCallback(() => {\n bind.onChange(null);\n }, [entries]);\n\n const models = useMemo(() => {\n if (!loadedModels || !field.settings?.models) {\n return [];\n }\n\n return (field.settings?.models || [])\n .map(({ modelId }) => {\n return loadedModels.find(model => model.modelId === modelId);\n })\n .filter(Boolean) as CmsModel[];\n }, [loadedModels, entries]);\n\n const loading = loadingEntries || loadingModels;\n\n const storeValues = useCallback(\n (values: CmsReferenceValue[]) => {\n if (values.length > 1) {\n console.log(\"More than one value selected. This should never happen.\");\n return;\n } else if (values.length === 0 || !values[0]?.id) {\n bind.onChange(null);\n return;\n }\n bind.onChange(values[0]);\n },\n [bind.value, bind.onChange, entries]\n );\n\n const onNewEntryCreate = useCallback(\n (data: CmsEditorContentEntry | null) => {\n if (!data) {\n console.log(\n `Could not store new entry to the reference field. Missing whole entry.`\n );\n return;\n } else if (!data.id) {\n console.log(\n `Could not store new entry to the reference field. Missing \"id\" value.`\n );\n return;\n } else if (!data.modelId) {\n console.log(\n `Could not store new entry to the reference field. Missing \"modelId\" value.`\n );\n return;\n }\n storeValues([\n {\n id: data.id,\n modelId: data.modelId\n }\n ]);\n },\n [storeValues]\n );\n\n const initialValue = useMemo(() => {\n if (entries.length === 0 || loadedModels.length === 0) {\n return null;\n }\n const entry = entries[0];\n if (!entry) {\n return null;\n }\n const model = loadedModels.find(model => model.modelId === entry.model.modelId);\n if (!model) {\n return null;\n }\n return {\n entry,\n model\n };\n }, [entries, loadedModels]);\n\n return (\n <>\n <FieldLabel>{field.label}</FieldLabel>\n <Container>\n {loading && <Loader />}\n {initialValue && (\n <Entry\n model={initialValue.model}\n placement=\"singleRefField\"\n index={0}\n entry={initialValue.entry}\n onRemove={onRemove}\n />\n )}\n <Options\n models={models}\n onNewRecord={onNewRecord}\n onLinkExistingRecord={onExistingRecord}\n />\n\n {newEntryDialogModel && (\n <NewReferencedEntryDialog\n model={newEntryDialogModel}\n onClose={onNewEntryDialogClose}\n onChange={onNewEntryCreate}\n />\n )}\n\n {linkEntryDialogModel && (\n <ReferencesDialog\n {...props}\n multiple={false}\n values={bind.value ? [bind.value] : []}\n contentModel={linkEntryDialogModel}\n storeValues={storeValues}\n onDialogClose={onLinkEntryDialogClose}\n />\n )}\n </Container>\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["Container","styled","FieldLabel","fontSize","fontWeight","borderBottom","marginBottom","paddingBottom","AdvancedSingleReferenceField","props","bind","field","useSnackbar","showSnackbar","useState","linkEntryDialogModel","setLinkEntryDialogModel","newEntryDialogModel","setNewEntryDialogModel","loadedModels","setLoadedModels","useQuery","GQL","LIST_CONTENT_MODELS","data","loadingModels","loading","useEffect","listContentModels","error","message","onNewRecord","useCallback","modelId","model","find","console","log","onNewEntryDialogClose","onExistingRecord","onLinkEntryDialogClose","useReferences","values","value","entries","loadingEntries","onRemove","onChange","models","useMemo","settings","map","filter","Boolean","storeValues","length","id","onNewEntryCreate","initialValue","entry","label"],"sources":["AdvancedSingleReferenceField.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n BindComponentRenderProp,\n CmsEditorContentEntry,\n CmsModelFieldRendererProps,\n CmsModel\n} from \"~/types\";\nimport { Options } from \"./Options\";\nimport { useReferences } from \"../hooks/useReferences\";\nimport { Entry } from \"./Entry\";\nimport { ReferencesDialog } from \"./ReferencesDialog\";\nimport styled from \"@emotion/styled\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { ListCmsModelsQueryResponse } from \"~/admin/viewsGraphql\";\nimport * as GQL from \"~/admin/viewsGraphql\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { CmsReferenceValue } from \"~/admin/plugins/fieldRenderers/ref/components/types\";\nimport { Loader } from \"./Loader\";\nimport { NewReferencedEntryDialog } from \"~/admin/plugins/fieldRenderers/ref/advanced/components/NewReferencedEntryDialog\";\n\nconst Container = styled(\"div\")({});\n\nconst FieldLabel = styled(\"h3\")({\n fontSize: 24,\n fontWeight: \"normal\",\n borderBottom: \"1px solid var(--mdc-theme-background)\",\n marginBottom: \"20px\",\n paddingBottom: \"5px\"\n});\n\ninterface Props extends CmsModelFieldRendererProps {\n bind: BindComponentRenderProp<CmsReferenceValue | null>;\n}\n\nexport const AdvancedSingleReferenceField: React.VFC<Props> = props => {\n const { bind, field } = props;\n const { showSnackbar } = useSnackbar();\n\n const [linkEntryDialogModel, setLinkEntryDialogModel] = useState<CmsModel | null>(null);\n const [newEntryDialogModel, setNewEntryDialogModel] = useState<CmsModel | null>(null);\n const [loadedModels, setLoadedModels] = useState<CmsModel[]>([]);\n\n const { data, loading: loadingModels } = useQuery<ListCmsModelsQueryResponse>(\n GQL.LIST_CONTENT_MODELS\n );\n\n useEffect(() => {\n if (loadingModels || !data?.listContentModels?.data) {\n return;\n } else if (data.listContentModels.error) {\n setLoadedModels([]);\n showSnackbar(data.listContentModels.error.message);\n return;\n }\n setLoadedModels(data.listContentModels.data);\n }, [data]);\n\n const onNewRecord = useCallback(\n (modelId: string) => {\n const model = loadedModels.find(model => model.modelId === modelId);\n if (!model) {\n console.log(`Cannot find model by modelId \"${modelId}\".`);\n return;\n }\n setNewEntryDialogModel(model);\n },\n [loadedModels, linkEntryDialogModel]\n );\n\n const onNewEntryDialogClose = useCallback(() => {\n setNewEntryDialogModel(null);\n }, [linkEntryDialogModel]);\n\n const onExistingRecord = useCallback(\n (modelId: string) => {\n const model = loadedModels.find(model => model.modelId === modelId);\n if (!model) {\n console.log(`Cannot find model by modelId \"${modelId}\".`);\n return;\n }\n setLinkEntryDialogModel(model);\n },\n [loadedModels, linkEntryDialogModel]\n );\n\n const onLinkEntryDialogClose = useCallback(() => {\n setLinkEntryDialogModel(null);\n }, []);\n\n const { entries, loading: loadingEntries } = useReferences({\n values: bind.value\n });\n\n const onRemove = useCallback(() => {\n bind.onChange(null);\n }, [entries]);\n\n const models = useMemo(() => {\n if (!loadedModels || !field.settings?.models) {\n return [];\n }\n\n return (field.settings?.models || [])\n .map(({ modelId }) => {\n return loadedModels.find(model => model.modelId === modelId);\n })\n .filter(Boolean) as CmsModel[];\n }, [loadedModels, entries]);\n\n const loading = loadingEntries || loadingModels;\n\n const storeValues = useCallback(\n (values: CmsReferenceValue[]) => {\n if (values.length > 1) {\n console.log(\"More than one value selected. This should never happen.\");\n return;\n } else if (values.length === 0 || !values[0]?.id) {\n bind.onChange(null);\n return;\n }\n bind.onChange(values[0]);\n },\n [bind.value, bind.onChange, entries]\n );\n\n const onNewEntryCreate = useCallback(\n (data: CmsEditorContentEntry | null) => {\n if (!data) {\n console.log(\n `Could not store new entry to the reference field. Missing whole entry.`\n );\n return;\n } else if (!data.id) {\n console.log(\n `Could not store new entry to the reference field. Missing \"id\" value.`\n );\n return;\n } else if (!data.modelId) {\n console.log(\n `Could not store new entry to the reference field. Missing \"modelId\" value.`\n );\n return;\n }\n storeValues([\n {\n id: data.id,\n modelId: data.modelId\n }\n ]);\n },\n [storeValues]\n );\n\n const initialValue = useMemo(() => {\n if (entries.length === 0 || loadedModels.length === 0) {\n return null;\n }\n const entry = entries[0];\n if (!entry) {\n return null;\n }\n const model = loadedModels.find(model => model.modelId === entry.model.modelId);\n if (!model) {\n return null;\n }\n return {\n entry,\n model\n };\n }, [entries, loadedModels]);\n\n return (\n <>\n <FieldLabel>{field.label}</FieldLabel>\n <Container>\n {loading && <Loader />}\n {initialValue && (\n <Entry\n model={initialValue.model}\n placement=\"singleRefField\"\n index={0}\n entry={initialValue.entry}\n onRemove={onRemove}\n />\n )}\n <Options\n models={models}\n onNewRecord={onNewRecord}\n onLinkExistingRecord={onExistingRecord}\n />\n\n {newEntryDialogModel && (\n <NewReferencedEntryDialog\n model={newEntryDialogModel}\n onClose={onNewEntryDialogClose}\n onChange={onNewEntryCreate}\n />\n )}\n\n {linkEntryDialogModel && (\n <ReferencesDialog\n {...props}\n multiple={false}\n values={bind.value ? [bind.value] : []}\n contentModel={linkEntryDialogModel}\n storeValues={storeValues}\n onDialogClose={onLinkEntryDialogClose}\n />\n )}\n </Container>\n </>\n );\n};\n"],"mappings":"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"}