@webiny/app-headless-cms 5.29.0 → 5.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HeadlessCMS.js +5 -1
- package/HeadlessCMS.js.map +1 -1
- package/admin/components/ContentEntryForm/useBind.js +23 -1
- package/admin/components/ContentEntryForm/useBind.js.map +1 -1
- package/admin/components/ContentModelEditor/Editor.js +1 -1
- package/admin/components/ContentModelEditor/Editor.js.map +1 -1
- package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js +1 -1
- package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js.map +1 -1
- package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +10 -5
- package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js.map +1 -1
- package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js +1 -0
- package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js.map +1 -1
- package/admin/components/FieldEditor/EditFieldDialog.js +8 -7
- package/admin/components/FieldEditor/EditFieldDialog.js.map +1 -1
- package/admin/contexts/Cms/index.d.ts +60 -0
- package/admin/contexts/Cms/index.js +107 -9
- package/admin/contexts/Cms/index.js.map +1 -1
- package/admin/plugins/editor/defaultBar/SaveContentModelButton.js +1 -0
- package/admin/plugins/editor/defaultBar/SaveContentModelButton.js.map +1 -1
- package/admin/plugins/entry/DefaultOnEntryDelete.d.ts +2 -0
- package/admin/plugins/entry/DefaultOnEntryDelete.js +204 -0
- package/admin/plugins/entry/DefaultOnEntryDelete.js.map +1 -0
- package/admin/plugins/entry/DefaultOnEntryPublish.d.ts +2 -0
- package/admin/plugins/entry/DefaultOnEntryPublish.js +176 -0
- package/admin/plugins/entry/DefaultOnEntryPublish.js.map +1 -0
- package/admin/plugins/fieldRenderers/Accordion.js +3 -0
- package/admin/plugins/fieldRenderers/Accordion.js.map +1 -1
- package/admin/plugins/fieldRenderers/DynamicSection.d.ts +11 -8
- package/admin/plugins/fieldRenderers/DynamicSection.js +0 -3
- package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -1
- package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js +2 -1
- package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js.map +1 -1
- package/admin/plugins/fieldRenderers/checkboxes.js +2 -1
- package/admin/plugins/fieldRenderers/checkboxes.js.map +1 -1
- package/admin/plugins/fieldRenderers/dateTime/Input.js +2 -1
- package/admin/plugins/fieldRenderers/dateTime/Input.js.map +1 -1
- package/admin/plugins/fieldRenderers/dateTime/Select.js +2 -1
- package/admin/plugins/fieldRenderers/dateTime/Select.js.map +1 -1
- package/admin/plugins/fieldRenderers/dateTime/utils.d.ts +3 -3
- package/admin/plugins/fieldRenderers/file/fileField.js +2 -1
- package/admin/plugins/fieldRenderers/file/fileField.js.map +1 -1
- package/admin/plugins/fieldRenderers/file/fileFields.js +4 -2
- package/admin/plugins/fieldRenderers/file/fileFields.js.map +1 -1
- package/admin/plugins/fieldRenderers/longText/longText.js +2 -1
- package/admin/plugins/fieldRenderers/longText/longText.js.map +1 -1
- package/admin/plugins/fieldRenderers/number/numberInput.js +2 -1
- package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -1
- package/admin/plugins/fieldRenderers/object/StyledComponents.d.ts +2 -0
- package/admin/plugins/fieldRenderers/object/StyledComponents.js +37 -2
- package/admin/plugins/fieldRenderers/object/StyledComponents.js.map +1 -1
- package/admin/plugins/fieldRenderers/object/arrow_drop_down.svg +1 -0
- package/admin/plugins/fieldRenderers/object/arrow_drop_up.svg +1 -0
- package/admin/plugins/fieldRenderers/object/multipleObjects.js +101 -47
- package/admin/plugins/fieldRenderers/object/multipleObjects.js.map +1 -1
- package/admin/plugins/fieldRenderers/radioButtons.js +2 -1
- package/admin/plugins/fieldRenderers/radioButtons.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +5 -5
- package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/useReference.js +6 -1
- package/admin/plugins/fieldRenderers/ref/components/useReference.js.map +1 -1
- package/admin/plugins/fieldRenderers/richText/richTextInput.js +2 -1
- package/admin/plugins/fieldRenderers/richText/richTextInput.js.map +1 -1
- package/admin/plugins/fieldRenderers/richText/richTextInputs.js +2 -2
- package/admin/plugins/fieldRenderers/richText/richTextInputs.js.map +1 -1
- package/admin/plugins/fieldRenderers/select.js +2 -1
- package/admin/plugins/fieldRenderers/select.js.map +1 -1
- package/admin/plugins/fieldRenderers/text/textInput.js +2 -1
- package/admin/plugins/fieldRenderers/text/textInput.js.map +1 -1
- package/admin/plugins/fieldValidators/date/availableValidators.d.ts +1 -1
- package/admin/plugins/index.d.ts +1 -1
- package/admin/plugins/validators/unique.d.ts +1 -1
- package/admin/views/contentEntries/ContentEntriesList.js +7 -2
- package/admin/views/contentEntries/ContentEntriesList.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.d.ts +4 -6
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +12 -71
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/PublishEntryRevisionListItem.d.ts +1 -0
- package/admin/views/contentEntries/ContentEntry/PublishEntryRevisionListItem.js +35 -0
- package/admin/views/contentEntries/ContentEntry/PublishEntryRevisionListItem.js.map +1 -0
- package/admin/views/contentEntries/ContentEntry/RevisionListItem.js +9 -11
- package/admin/views/contentEntries/ContentEntry/RevisionListItem.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/cache.js +47 -21
- package/admin/views/contentEntries/ContentEntry/cache.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/contentFormOptionsMenu/ContentFormOptionsMenu.js +32 -46
- package/admin/views/contentEntries/ContentEntry/header/contentFormOptionsMenu/ContentFormOptionsMenu.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/index.js +6 -6
- package/admin/views/contentEntries/ContentEntry/header/index.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.d.ts +1 -2
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js +6 -4
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.d.ts +1 -3
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js +6 -4
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/saveAndPublishContent/SaveAndPublishContent.d.ts +1 -3
- package/admin/views/contentEntries/ContentEntry/header/saveAndPublishContent/SaveAndPublishContent.js +45 -38
- package/admin/views/contentEntries/ContentEntry/header/saveAndPublishContent/SaveAndPublishContent.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/useRevision.js +57 -70
- package/admin/views/contentEntries/ContentEntry/useRevision.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry.js +2 -4
- package/admin/views/contentEntries/ContentEntry.js.map +1 -1
- package/admin/views/contentEntries/hooks/useContentEntry.js +7 -1
- package/admin/views/contentEntries/hooks/useContentEntry.js.map +1 -1
- package/admin/views/contentModels/NewContentModelDialog.js +6 -3
- package/admin/views/contentModels/NewContentModelDialog.js.map +1 -1
- package/package.json +21 -20
- package/types.d.ts +10 -7
- package/types.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","getKey","field","bind","index","formId","form","data","id","fieldId","emptyValue","type","textAlign","className","text","EditorWrapper","styled","position","top","right","plugin","name","renderer","rendererName","description","canUse","multipleValues","get","render","props","rteProps","useMemo","createPropsFromConfig","plugins","byType","map","pl","config","removeValue","placeholderText","helpText"],"sources":["richTextInputs.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport DynamicSection from \"../DynamicSection\";\nimport { RichTextEditor, createPropsFromConfig } from \"@webiny/app-admin/components/RichTextEditor\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { plugins } from \"@webiny/plugins\";\nimport styled from \"@emotion/styled\";\
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","getKey","field","bind","index","formId","form","data","id","fieldId","emptyValue","type","textAlign","className","text","EditorWrapper","styled","position","top","right","plugin","name","renderer","rendererName","description","canUse","multipleValues","get","render","props","rteProps","useMemo","createPropsFromConfig","plugins","byType","map","pl","config","removeValue","placeholderText","helpText"],"sources":["richTextInputs.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorField, CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport DynamicSection, { DynamicSectionPropsChildrenParams } from \"../DynamicSection\";\nimport { RichTextEditor, createPropsFromConfig } from \"@webiny/app-admin/components/RichTextEditor\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { plugins } from \"@webiny/plugins\";\nimport styled from \"@emotion/styled\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (\n field: CmsEditorField,\n bind: DynamicSectionPropsChildrenParams[\"bind\"],\n index: number\n): string => {\n const formId = bind.index.form?.data?.id || \"new\";\n return `${formId}.${field.fieldId}.${index}`;\n};\n\nconst emptyValue: Record<string, any>[] = [\n {\n type: \"paragraph\",\n data: {\n textAlign: \"left\",\n className: null,\n text: \"\"\n }\n }\n];\n\nconst EditorWrapper = styled(\"div\")({\n position: \"relative\",\n \"> button\": {\n position: \"absolute\",\n top: 5,\n right: 5\n }\n});\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-rich-text-inputs\",\n renderer: {\n rendererName: \"rich-text-inputs\",\n name: t`Rich Text Inputs`,\n description: t`Renders a simple list of rich text editors.`,\n canUse({ field }) {\n return (\n field.type === \"rich-text\" &&\n !!field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render(props) {\n const { field } = props;\n\n const rteProps = useMemo(() => {\n /**\n * TODO @ts-refactor\n * Missing cms-rte-config plugin.\n */\n // @ts-ignore\n return createPropsFromConfig(plugins.byType(\"cms-rte-config\").map(pl => pl.config));\n }, []);\n\n return (\n <DynamicSection {...props} emptyValue={emptyValue}>\n {({ bind, index }) => (\n <EditorWrapper>\n {index > 0 && (\n <IconButton\n icon={<DeleteIcon />}\n onClick={() => bind.field.removeValue(index)}\n />\n )}\n <RichTextEditor\n key={getKey(field, bind, index)}\n {...rteProps}\n {...bind.index}\n label={`Value ${index + 1}`}\n placeholder={field.placeholderText}\n description={field.helpText}\n />\n </EditorWrapper>\n )}\n </DynamicSection>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,yCAAR,CAAV;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CACXC,KADW,EAEXC,IAFW,EAGXC,KAHW,EAIF;EAAA;;EACT,IAAMC,MAAM,GAAG,qBAAAF,IAAI,CAACC,KAAL,CAAWE,IAAX,+FAAiBC,IAAjB,gFAAuBC,EAAvB,KAA6B,KAA5C;EACA,iBAAUH,MAAV,cAAoBH,KAAK,CAACO,OAA1B,cAAqCL,KAArC;AACH,CAPD;;AASA,IAAMM,UAAiC,GAAG,CACtC;EACIC,IAAI,EAAE,WADV;EAEIJ,IAAI,EAAE;IACFK,SAAS,EAAE,MADT;IAEFC,SAAS,EAAE,IAFT;IAGFC,IAAI,EAAE;EAHJ;AAFV,CADsC,CAA1C;AAWA,IAAMC,aAAa,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EAChCC,QAAQ,EAAE,UADsB;EAEhC,YAAY;IACRA,QAAQ,EAAE,UADF;IAERC,GAAG,EAAE,CAFG;IAGRC,KAAK,EAAE;EAHC;AAFoB,CAAjB,CAAnB;AASA,IAAMC,MAAoC,GAAG;EACzCT,IAAI,EAAE,2BADmC;EAEzCU,IAAI,EAAE,4CAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,kBADR;IAENF,IAAI,EAAEvB,CAAF,mGAFE;IAGN0B,WAAW,EAAE1B,CAAF,gIAHL;IAIN2B,MAJM,wBAIY;MAAA,IAATvB,KAAS,QAATA,KAAS;MACd,OACIA,KAAK,CAACS,IAAN,KAAe,WAAf,IACA,CAAC,CAACT,KAAK,CAACwB,cADR,IAEA,CAAC,IAAAC,YAAA,EAAIzB,KAAJ,EAAW,0BAAX,CAHL;IAKH,CAVK;IAWN0B,MAXM,kBAWCC,KAXD,EAWQ;MACV,IAAQ3B,KAAR,GAAkB2B,KAAlB,CAAQ3B,KAAR;MAEA,IAAM4B,QAAQ,GAAG,IAAAC,cAAA,EAAQ,YAAM;QAC3B;AAChB;AACA;AACA;QACgB;QACA,OAAO,IAAAC,qCAAA,EAAsBC,gBAAA,CAAQC,MAAR,CAAe,gBAAf,EAAiCC,GAAjC,CAAqC,UAAAC,EAAE;UAAA,OAAIA,EAAE,CAACC,MAAP;QAAA,CAAvC,CAAtB,CAAP;MACH,CAPgB,EAOd,EAPc,CAAjB;MASA,oBACI,6BAAC,uBAAD,oBAAoBR,KAApB;QAA2B,UAAU,EAAEnB;MAAvC,IACK;QAAA,IAAGP,IAAH,SAAGA,IAAH;QAAA,IAASC,KAAT,SAASA,KAAT;QAAA,oBACG,6BAAC,aAAD,QACKA,KAAK,GAAG,CAAR,iBACG,6BAAC,kBAAD;UACI,IAAI,eAAE,6BAAC,qBAAD,OADV;UAEI,OAAO,EAAE;YAAA,OAAMD,IAAI,CAACD,KAAL,CAAWoC,WAAX,CAAuBlC,KAAvB,CAAN;UAAA;QAFb,EAFR,eAOI,6BAAC,8BAAD;UACI,GAAG,EAAEH,MAAM,CAACC,KAAD,EAAQC,IAAR,EAAcC,KAAd;QADf,GAEQ0B,QAFR,EAGQ3B,IAAI,CAACC,KAHb;UAII,KAAK,kBAAWA,KAAK,GAAG,CAAnB,CAJT;UAKI,WAAW,EAAEF,KAAK,CAACqC,eALvB;UAMI,WAAW,EAAErC,KAAK,CAACsC;QANvB,GAPJ,CADH;MAAA,CADL,CADJ;IAsBH;EA7CK;AAH+B,CAA7C;eAoDepB,M"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","getDefaultValue","initialValue","options","undefined","selected","find","option","value","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","get","render","getBind","Bind","predefinedValues","values","bind","label","helpText"],"sources":["select.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n CmsEditorFieldPredefinedValuesEntry as Option,\n CmsEditorFieldRendererPlugin\n} from \"~/types\";\nimport { Select } from \"@webiny/ui/Select\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst getDefaultValue = (initialValue?: string | null, options?: Option[]): string | undefined => {\n if (initialValue) {\n return initialValue || undefined;\n } else if (!options) {\n return undefined;\n }\n const selected = options.find(option => !!option.selected);\n return selected ? selected.value : undefined;\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-select-box\",\n renderer: {\n rendererName: \"select-box\",\n name: t`Select Box`,\n description: t`Renders a select box, allowing selection of a single value.`,\n canUse({ field }) {\n return !field.multipleValues && !!get(field, \"predefinedValues.enabled\");\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n const { values: options } = field.predefinedValues || {};\n\n return (\n <Bind>\n {bind => {\n const value = getDefaultValue(bind.value, options);\n return (\n <Select\n {...bind}\n value={value}\n label={field.label}\n description={field.helpText}\n options={options}\n />\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,oCAAR,CAAV;;AAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,YAAD,EAA+BC,OAA/B,EAA0E;EAC9F,IAAID,YAAJ,EAAkB;IACd,OAAOA,YAAY,IAAIE,SAAvB;EACH,CAFD,MAEO,IAAI,CAACD,OAAL,EAAc;IACjB,OAAOC,SAAP;EACH;;EACD,IAAMC,QAAQ,GAAGF,OAAO,CAACG,IAAR,CAAa,UAAAC,MAAM;IAAA,OAAI,CAAC,CAACA,MAAM,CAACF,QAAb;EAAA,CAAnB,CAAjB;EACA,OAAOA,QAAQ,GAAGA,QAAQ,CAACG,KAAZ,GAAoBJ,SAAnC;AACH,CARD;;AAUA,IAAMK,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BADmC;EAEzCC,IAAI,EAAE,sCAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,YADR;IAENF,IAAI,EAAEb,CAAF,6FAFE;IAGNgB,WAAW,EAAEhB,CAAF,gJAHL;IAINiB,MAJM,wBAIY;MAAA,IAATC,KAAS,QAATA,KAAS;MACd,OAAO,CAACA,KAAK,CAACC,cAAP,IAAyB,CAAC,CAAC,IAAAC,YAAA,EAAIF,KAAJ,EAAW,0BAAX,CAAlC;IACH,CANK;IAONG,MAPM,yBAOqB;MAAA,IAAlBH,KAAkB,SAAlBA,KAAkB;MAAA,IAAXI,OAAW,SAAXA,OAAW;MACvB,IAAMC,IAAI,GAAGD,OAAO,EAApB;;MAEA,YAA4BJ,KAAK,CAACM,gBAAN,IAA0B,EAAtD;MAAA,IAAgBnB,OAAhB,SAAQoB,MAAR;;MAEA,oBACI,6BAAC,IAAD,QACK,UAAAC,IAAI,EAAI;QACL,IAAMhB,KAAK,GAAGP,eAAe,CAACuB,IAAI,CAAChB,KAAN,EAAaL,OAAb,CAA7B;QACA,oBACI,6BAAC,cAAD,oBACQqB,IADR;UAEI,KAAK,EAAEhB,KAFX;UAGI,KAAK,EAAEQ,KAAK,CAACS,KAHjB;UAII,WAAW,EAAET,KAAK,CAACU,QAJvB;UAKI,OAAO,EAAEvB;
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","getDefaultValue","initialValue","options","undefined","selected","find","option","value","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","get","render","getBind","Bind","predefinedValues","values","bind","label","helpText"],"sources":["select.tsx"],"sourcesContent":["import React from \"react\";\nimport get from \"lodash/get\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n CmsEditorFieldPredefinedValuesEntry as Option,\n CmsEditorFieldRendererPlugin\n} from \"~/types\";\nimport { Select } from \"@webiny/ui/Select\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst getDefaultValue = (initialValue?: string | null, options?: Option[]): string | undefined => {\n if (initialValue) {\n return initialValue || undefined;\n } else if (!options) {\n return undefined;\n }\n const selected = options.find(option => !!option.selected);\n return selected ? selected.value : undefined;\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-select-box\",\n renderer: {\n rendererName: \"select-box\",\n name: t`Select Box`,\n description: t`Renders a select box, allowing selection of a single value.`,\n canUse({ field }) {\n return !field.multipleValues && !!get(field, \"predefinedValues.enabled\");\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n const { values: options } = field.predefinedValues || {};\n\n return (\n <Bind>\n {bind => {\n const value = getDefaultValue(bind.value, options);\n return (\n <Select\n {...bind}\n value={value}\n label={field.label}\n description={field.helpText}\n options={options}\n data-testid={`fr.input.select.${field.label}`}\n />\n );\n }}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,oCAAR,CAAV;;AAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,YAAD,EAA+BC,OAA/B,EAA0E;EAC9F,IAAID,YAAJ,EAAkB;IACd,OAAOA,YAAY,IAAIE,SAAvB;EACH,CAFD,MAEO,IAAI,CAACD,OAAL,EAAc;IACjB,OAAOC,SAAP;EACH;;EACD,IAAMC,QAAQ,GAAGF,OAAO,CAACG,IAAR,CAAa,UAAAC,MAAM;IAAA,OAAI,CAAC,CAACA,MAAM,CAACF,QAAb;EAAA,CAAnB,CAAjB;EACA,OAAOA,QAAQ,GAAGA,QAAQ,CAACG,KAAZ,GAAoBJ,SAAnC;AACH,CARD;;AAUA,IAAMK,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BADmC;EAEzCC,IAAI,EAAE,sCAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,YADR;IAENF,IAAI,EAAEb,CAAF,6FAFE;IAGNgB,WAAW,EAAEhB,CAAF,gJAHL;IAINiB,MAJM,wBAIY;MAAA,IAATC,KAAS,QAATA,KAAS;MACd,OAAO,CAACA,KAAK,CAACC,cAAP,IAAyB,CAAC,CAAC,IAAAC,YAAA,EAAIF,KAAJ,EAAW,0BAAX,CAAlC;IACH,CANK;IAONG,MAPM,yBAOqB;MAAA,IAAlBH,KAAkB,SAAlBA,KAAkB;MAAA,IAAXI,OAAW,SAAXA,OAAW;MACvB,IAAMC,IAAI,GAAGD,OAAO,EAApB;;MAEA,YAA4BJ,KAAK,CAACM,gBAAN,IAA0B,EAAtD;MAAA,IAAgBnB,OAAhB,SAAQoB,MAAR;;MAEA,oBACI,6BAAC,IAAD,QACK,UAAAC,IAAI,EAAI;QACL,IAAMhB,KAAK,GAAGP,eAAe,CAACuB,IAAI,CAAChB,KAAN,EAAaL,OAAb,CAA7B;QACA,oBACI,6BAAC,cAAD,oBACQqB,IADR;UAEI,KAAK,EAAEhB,KAFX;UAGI,KAAK,EAAEQ,KAAK,CAACS,KAHjB;UAII,WAAW,EAAET,KAAK,CAACU,QAJvB;UAKI,OAAO,EAAEvB,OALb;UAMI,yCAAgCa,KAAK,CAACS,KAAtC;QANJ,GADJ;MAUH,CAbL,CADJ;IAiBH;EA7BK;AAH+B,CAA7C;eAoCehB,M"}
|
|
@@ -40,7 +40,8 @@ var plugin = {
|
|
|
40
40
|
return /*#__PURE__*/_react.default.createElement(_Input.Input, Object.assign({}, bind, {
|
|
41
41
|
label: field.label,
|
|
42
42
|
placeholder: field.placeholderText,
|
|
43
|
-
description: field.helpText
|
|
43
|
+
description: field.helpText,
|
|
44
|
+
"data-testid": "fr.input.text.".concat(field.label)
|
|
44
45
|
}));
|
|
45
46
|
});
|
|
46
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","get","render","getBind","Bind","bind","label","placeholderText","helpText"],"sources":["textInput.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Input } from \"@webiny/ui/Input\";\nimport get from \"lodash/get\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-text\",\n renderer: {\n rendererName: \"text-input\",\n name: t`Text Input`,\n description: t`Renders a simple input with its type set to \"text\".`,\n canUse({ field }) {\n return (\n field.type === \"text\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n return (\n <Bind>\n {bind => (\n <Input\n {...bind}\n label={field.label}\n placeholder={field.placeholderText}\n description={field.helpText}\n />\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,oCAAR,CAAV;;AAEA,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BADmC;EAEzCC,IAAI,EAAE,gCAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,YADR;IAENF,IAAI,EAAEL,CAAF,6FAFE;IAGNQ,WAAW,EAAER,CAAF,0IAHL;IAINS,MAJM,wBAIY;MAAA,IAATC,KAAS,QAATA,KAAS;MACd,OACIA,KAAK,CAACN,IAAN,KAAe,MAAf,IACA,CAACM,KAAK,CAACC,cADP,IAEA,CAAC,IAAAC,YAAA,EAAIF,KAAJ,EAAW,0BAAX,CAHL;IAKH,CAVK;IAWNG,MAXM,yBAWqB;MAAA,IAAlBH,KAAkB,SAAlBA,KAAkB;MAAA,IAAXI,OAAW,SAAXA,OAAW;MACvB,IAAMC,IAAI,GAAGD,OAAO,EAApB;MAEA,oBACI,6BAAC,IAAD,QACK,UAAAE,IAAI;QAAA,oBACD,6BAAC,YAAD,oBACQA,IADR;UAEI,KAAK,EAAEN,KAAK,CAACO,KAFjB;UAGI,WAAW,EAAEP,KAAK,CAACQ,eAHvB;UAII,WAAW,EAAER,KAAK,CAACS;
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","get","render","getBind","Bind","bind","label","placeholderText","helpText"],"sources":["textInput.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Input } from \"@webiny/ui/Input\";\nimport get from \"lodash/get\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-text\",\n renderer: {\n rendererName: \"text-input\",\n name: t`Text Input`,\n description: t`Renders a simple input with its type set to \"text\".`,\n canUse({ field }) {\n return (\n field.type === \"text\" &&\n !field.multipleValues &&\n !get(field, \"predefinedValues.enabled\")\n );\n },\n render({ field, getBind }) {\n const Bind = getBind();\n\n return (\n <Bind>\n {bind => (\n <Input\n {...bind}\n label={field.label}\n placeholder={field.placeholderText}\n description={field.helpText}\n data-testid={`fr.input.text.${field.label}`}\n />\n )}\n </Bind>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,oCAAR,CAAV;;AAEA,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BADmC;EAEzCC,IAAI,EAAE,gCAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,YADR;IAENF,IAAI,EAAEL,CAAF,6FAFE;IAGNQ,WAAW,EAAER,CAAF,0IAHL;IAINS,MAJM,wBAIY;MAAA,IAATC,KAAS,QAATA,KAAS;MACd,OACIA,KAAK,CAACN,IAAN,KAAe,MAAf,IACA,CAACM,KAAK,CAACC,cADP,IAEA,CAAC,IAAAC,YAAA,EAAIF,KAAJ,EAAW,0BAAX,CAHL;IAKH,CAVK;IAWNG,MAXM,yBAWqB;MAAA,IAAlBH,KAAkB,SAAlBA,KAAkB;MAAA,IAAXI,OAAW,SAAXA,OAAW;MACvB,IAAMC,IAAI,GAAGD,OAAO,EAApB;MAEA,oBACI,6BAAC,IAAD,QACK,UAAAE,IAAI;QAAA,oBACD,6BAAC,YAAD,oBACQA,IADR;UAEI,KAAK,EAAEN,KAAK,CAACO,KAFjB;UAGI,WAAW,EAAEP,KAAK,CAACQ,eAHvB;UAII,WAAW,EAAER,KAAK,CAACS,QAJvB;UAKI,uCAA8BT,KAAK,CAACO,KAApC;QALJ,GADC;MAAA,CADT,CADJ;IAaH;EA3BK;AAH+B,CAA7C;eAkCed,M"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getAvailableValidators: (type?: string
|
|
1
|
+
export declare const getAvailableValidators: (type?: string) => string[];
|
package/admin/plugins/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const _default: () => (import("@webiny/app/types").CacheGetObjectIdPlugin | import("
|
|
1
|
+
declare const _default: () => (import("@webiny/app/types").CacheGetObjectIdPlugin | import("../../types").CmsEditorFormSettingsPlugin | import("../../types").CmsIconsPlugin | import("@webiny/app-admin/types").AdminInstallationPlugin | import("@webiny/app-admin/types").AdminAppPermissionRendererPlugin | import("../../types").CmsFieldValueTransformer[] | import("@webiny/app/types").RoutePlugin[] | import("../../types").CmsContentDetailsPlugin[] | {
|
|
2
2
|
name: string;
|
|
3
3
|
type: string;
|
|
4
4
|
render(): JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CmsModelFieldValidatorPlugin } from "../../../types";
|
|
2
|
-
declare const _default: () => CmsModelFieldValidatorPlugin;
|
|
3
2
|
/**
|
|
4
3
|
* In the UI we will pretend that field is unique.
|
|
5
4
|
* When saving the entry, API call will check for the uniqueness.
|
|
6
5
|
*/
|
|
6
|
+
declare const _default: () => CmsModelFieldValidatorPlugin;
|
|
7
7
|
export default _default;
|
|
@@ -55,6 +55,8 @@ var _useContentEntriesList = require("./hooks/useContentEntriesList");
|
|
|
55
55
|
|
|
56
56
|
var _ContentEntriesViewConfig = require("./experiment/ContentEntriesViewConfig");
|
|
57
57
|
|
|
58
|
+
var _reactRouter = require("@webiny/react-router");
|
|
59
|
+
|
|
58
60
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
59
61
|
|
|
60
62
|
var _excluded = ["sort", "status"];
|
|
@@ -162,7 +164,9 @@ var ContentEntriesList = function ContentEntriesList() {
|
|
|
162
164
|
data: data,
|
|
163
165
|
title: /*#__PURE__*/_react.default.createElement("span", null, (0, _pluralize.default)(contentModel.name), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
164
166
|
use: "subtitle1"
|
|
165
|
-
}, /*#__PURE__*/_react.default.createElement(ModelId, null, "Model ID: ",
|
|
167
|
+
}, /*#__PURE__*/_react.default.createElement(ModelId, null, "Model ID:", " ", /*#__PURE__*/_react.default.createElement(_reactRouter.Link, {
|
|
168
|
+
to: "/cms/content-models/".concat(contentModel.modelId)
|
|
169
|
+
}, contentModel.modelId)))),
|
|
166
170
|
actions: canCreate ? /*#__PURE__*/_react.default.createElement(_Button.ButtonSecondary, {
|
|
167
171
|
"data-testid": "new-record-button",
|
|
168
172
|
onClick: onCreate
|
|
@@ -202,7 +206,8 @@ var ContentEntriesList = function ContentEntriesList() {
|
|
|
202
206
|
}))), /*#__PURE__*/_react.default.createElement(UIList.ListItemMeta, {
|
|
203
207
|
className: rightAlign
|
|
204
208
|
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
205
|
-
use: "subtitle2"
|
|
209
|
+
use: "subtitle2",
|
|
210
|
+
"data-testid": "ul.list.subtitle"
|
|
206
211
|
}, _statusLabels.default[item.meta.status], " (v", item.meta.version, ")")));
|
|
207
212
|
})), loadMoreLoading && /*#__PURE__*/_react.default.createElement(InlineLoaderWrapper, null, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
208
213
|
use: "overline"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","rightAlign","css","alignItems","justifyContent","ModelId","styled","color","InlineLoaderWrapper","position","bottom","left","display","width","height","backgroundColor","listItemMinHeight","minHeight","ContentEntriesList","useContentEntriesList","contentModel","id","loading","canCreate","onCreate","data","editEntry","loadMore","loadMoreLoading","listQueryVariables","setListQueryVariables","sorters","filter","setFilter","viewConfig","useContentEntriesViewConfig","loadMoreOnScroll","useCallback","debounce","scrollFrame","top","formInitialData","sort","appliesToContentModel","modelIds","length","includes","modelId","entriesDataListModalOverlay","useMemo","status","Bind","map","value","label","filters","name","element","pluralize","title","item","meta","time","savedOn","statusLabels","version"],"sources":["ContentEntriesList.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { css } from \"emotion\";\n/**\n * Package timeago-react does not have types.\n */\n// @ts-ignore\nimport TimeAgo from \"timeago-react\";\nimport pluralize from \"pluralize\";\nimport styled from \"@emotion/styled\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport * as UIList from \"@webiny/ui/List\";\nimport { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport statusLabels from \"../../constants/statusLabels\";\nimport { useCallback } from \"react\";\nimport { useContentEntriesList } from \"~/admin/views/contentEntries/hooks/useContentEntriesList\";\nimport { positionValues as PositionValues } from \"react-custom-scrollbars\";\nimport { CmsEditorContentEntry } from \"~/types\";\nimport {\n useContentEntriesViewConfig,\n ContentEntriesViewConfigFilter\n} from \"./experiment/ContentEntriesViewConfig\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/contents/data-list\");\n\nconst rightAlign = css({\n alignItems: \"flex-end !important\",\n justifyContent: \"center !important\"\n});\n\nconst ModelId = styled(\"span\")({\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n});\n\nconst InlineLoaderWrapper = styled(\"div\")({\n position: \"absolute\",\n bottom: 0,\n left: 0,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n height: 40,\n backgroundColor: \"var(--mdc-theme-surface)\"\n});\n\nconst listItemMinHeight = css({\n minHeight: \"66px !important\"\n});\n\nconst ContentEntriesList: React.FC = () => {\n const {\n contentModel,\n id,\n loading,\n canCreate,\n onCreate,\n data,\n editEntry,\n loadMore,\n loadMoreLoading,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n filter,\n setFilter\n } = useContentEntriesList();\n\n const viewConfig = useContentEntriesViewConfig();\n\n const loadMoreOnScroll = useCallback(\n debounce((scrollFrame: PositionValues) => {\n if (scrollFrame.top > 0.9) {\n loadMore();\n }\n }, 500),\n [data]\n );\n\n const formInitialData = {\n ...listQueryVariables,\n sort: listQueryVariables.sort ? listQueryVariables.sort[0] : \"\"\n };\n\n const appliesToContentModel = useCallback(\n ({ modelIds }: ContentEntriesViewConfigFilter) => {\n return modelIds.length === 0 || modelIds.includes(contentModel.modelId);\n },\n [contentModel]\n );\n\n const entriesDataListModalOverlay = useMemo(\n () => (\n <UIList.DataListModalOverlay>\n <Form\n data={formInitialData}\n onChange={({ sort, status, ...data }) => {\n setListQueryVariables(() => ({\n status,\n // GraphQL Schema requires \"sort\" to be an array.\n sort: [sort],\n // Spread the rest of form data\n ...data\n }));\n }}\n >\n {({ Bind }) => (\n <Grid>\n <Cell span={12}>\n <Bind name={\"sort\"}>\n <Select label={t`Sort by`}>\n {sorters.map(({ value, label }) => {\n return (\n <option key={value} value={value}>\n {label}\n </option>\n );\n })}\n </Select>\n </Bind>\n </Cell>\n {viewConfig.filters.filter(appliesToContentModel).map(filter => (\n <Cell span={12} key={filter.name}>\n {filter.element}\n </Cell>\n ))}\n </Grid>\n )}\n </Form>\n </UIList.DataListModalOverlay>\n ),\n [listQueryVariables, viewConfig.filters]\n );\n\n return (\n <UIList.DataList\n loading={loading}\n data={data}\n title={\n <span>\n {pluralize(contentModel.name)}\n <br />\n <Typography use={\"subtitle1\"}>\n <ModelId>Model ID: {contentModel.modelId}</ModelId>\n </Typography>\n </span>\n }\n actions={\n canCreate ? (\n <ButtonSecondary data-testid=\"new-record-button\" onClick={onCreate}>\n <ButtonIcon icon={<AddIcon />} /> {t`New Entry`}\n </ButtonSecondary>\n ) : null\n }\n search={\n <SearchUI\n value={filter}\n onChange={setFilter}\n inputPlaceholder={t`Search {title}`({ title: pluralize(contentModel.name) })}\n />\n }\n modalOverlay={entriesDataListModalOverlay}\n modalOverlayAction={\n <UIList.DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: CmsEditorContentEntry[] }) => (\n <>\n <Scrollbar\n data-testid=\"default-data-list\"\n onScrollFrame={scrollFrame => loadMoreOnScroll(scrollFrame)}\n >\n {data.map(item => (\n <UIList.ListItem\n key={item.id}\n className={listItemMinHeight}\n selected={item.id === id}\n >\n <UIList.ListItemText onClick={editEntry(item)}>\n {item.meta.title || \"Untitled\"}\n <UIList.ListItemTextSecondary>\n {t`Last modified: {time}.`({\n time: <TimeAgo datetime={item.savedOn} />\n })}\n </UIList.ListItemTextSecondary>\n </UIList.ListItemText>\n\n <UIList.ListItemMeta className={rightAlign}>\n <Typography use={\"subtitle2\"}>\n {statusLabels[item.meta.status]} (v{item.meta.version})\n </Typography>\n </UIList.ListItemMeta>\n </UIList.ListItem>\n ))}\n </Scrollbar>\n {loadMoreLoading && (\n <InlineLoaderWrapper>\n <Typography use={\"overline\"}>{t`Loading more entries...`}</Typography>\n </InlineLoaderWrapper>\n )}\n </>\n )}\n </UIList.DataList>\n );\n};\n\nexport default ContentEntriesList;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","rightAlign","css","alignItems","justifyContent","ModelId","styled","color","InlineLoaderWrapper","position","bottom","left","display","width","height","backgroundColor","listItemMinHeight","minHeight","ContentEntriesList","useContentEntriesList","contentModel","id","loading","canCreate","onCreate","data","editEntry","loadMore","loadMoreLoading","listQueryVariables","setListQueryVariables","sorters","filter","setFilter","viewConfig","useContentEntriesViewConfig","loadMoreOnScroll","useCallback","debounce","scrollFrame","top","formInitialData","sort","appliesToContentModel","modelIds","length","includes","modelId","entriesDataListModalOverlay","useMemo","status","Bind","map","value","label","filters","name","element","pluralize","title","item","meta","time","savedOn","statusLabels","version"],"sources":["ContentEntriesList.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport debounce from \"lodash/debounce\";\nimport { css } from \"emotion\";\n/**\n * Package timeago-react does not have types.\n */\n// @ts-ignore\nimport TimeAgo from \"timeago-react\";\nimport pluralize from \"pluralize\";\nimport styled from \"@emotion/styled\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport * as UIList from \"@webiny/ui/List\";\nimport { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport statusLabels from \"../../constants/statusLabels\";\nimport { useCallback } from \"react\";\nimport { useContentEntriesList } from \"~/admin/views/contentEntries/hooks/useContentEntriesList\";\nimport { positionValues as PositionValues } from \"react-custom-scrollbars\";\nimport { CmsEditorContentEntry } from \"~/types\";\nimport {\n useContentEntriesViewConfig,\n ContentEntriesViewConfigFilter\n} from \"./experiment/ContentEntriesViewConfig\";\nimport { Link } from \"@webiny/react-router\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/contents/data-list\");\n\nconst rightAlign = css({\n alignItems: \"flex-end !important\",\n justifyContent: \"center !important\"\n});\n\nconst ModelId = styled(\"span\")({\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n});\n\nconst InlineLoaderWrapper = styled(\"div\")({\n position: \"absolute\",\n bottom: 0,\n left: 0,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n height: 40,\n backgroundColor: \"var(--mdc-theme-surface)\"\n});\n\nconst listItemMinHeight = css({\n minHeight: \"66px !important\"\n});\n\nconst ContentEntriesList: React.FC = () => {\n const {\n contentModel,\n id,\n loading,\n canCreate,\n onCreate,\n data,\n editEntry,\n loadMore,\n loadMoreLoading,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n filter,\n setFilter\n } = useContentEntriesList();\n\n const viewConfig = useContentEntriesViewConfig();\n\n const loadMoreOnScroll = useCallback(\n debounce((scrollFrame: PositionValues) => {\n if (scrollFrame.top > 0.9) {\n loadMore();\n }\n }, 500),\n [data]\n );\n\n const formInitialData = {\n ...listQueryVariables,\n sort: listQueryVariables.sort ? listQueryVariables.sort[0] : \"\"\n };\n\n const appliesToContentModel = useCallback(\n ({ modelIds }: ContentEntriesViewConfigFilter) => {\n return modelIds.length === 0 || modelIds.includes(contentModel.modelId);\n },\n [contentModel]\n );\n\n const entriesDataListModalOverlay = useMemo(\n () => (\n <UIList.DataListModalOverlay>\n <Form\n data={formInitialData}\n onChange={({ sort, status, ...data }) => {\n setListQueryVariables(() => ({\n status,\n // GraphQL Schema requires \"sort\" to be an array.\n sort: [sort],\n // Spread the rest of form data\n ...data\n }));\n }}\n >\n {({ Bind }) => (\n <Grid>\n <Cell span={12}>\n <Bind name={\"sort\"}>\n <Select label={t`Sort by`}>\n {sorters.map(({ value, label }) => {\n return (\n <option key={value} value={value}>\n {label}\n </option>\n );\n })}\n </Select>\n </Bind>\n </Cell>\n {viewConfig.filters.filter(appliesToContentModel).map(filter => (\n <Cell span={12} key={filter.name}>\n {filter.element}\n </Cell>\n ))}\n </Grid>\n )}\n </Form>\n </UIList.DataListModalOverlay>\n ),\n [listQueryVariables, viewConfig.filters]\n );\n\n return (\n <UIList.DataList\n loading={loading}\n data={data}\n title={\n <span>\n {pluralize(contentModel.name)}\n <br />\n <Typography use={\"subtitle1\"}>\n <ModelId>\n Model ID:{\" \"}\n <Link to={`/cms/content-models/${contentModel.modelId}`}>\n {contentModel.modelId}\n </Link>\n </ModelId>\n </Typography>\n </span>\n }\n actions={\n canCreate ? (\n <ButtonSecondary data-testid=\"new-record-button\" onClick={onCreate}>\n <ButtonIcon icon={<AddIcon />} /> {t`New Entry`}\n </ButtonSecondary>\n ) : null\n }\n search={\n <SearchUI\n value={filter}\n onChange={setFilter}\n inputPlaceholder={t`Search {title}`({ title: pluralize(contentModel.name) })}\n />\n }\n modalOverlay={entriesDataListModalOverlay}\n modalOverlayAction={\n <UIList.DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: CmsEditorContentEntry[] }) => (\n <>\n <Scrollbar\n data-testid=\"default-data-list\"\n onScrollFrame={scrollFrame => loadMoreOnScroll(scrollFrame)}\n >\n {data.map(item => (\n <UIList.ListItem\n key={item.id}\n className={listItemMinHeight}\n selected={item.id === id}\n >\n <UIList.ListItemText onClick={editEntry(item)}>\n {item.meta.title || \"Untitled\"}\n <UIList.ListItemTextSecondary>\n {t`Last modified: {time}.`({\n time: <TimeAgo datetime={item.savedOn} />\n })}\n </UIList.ListItemTextSecondary>\n </UIList.ListItemText>\n\n <UIList.ListItemMeta className={rightAlign}>\n <Typography use={\"subtitle2\"} data-testid=\"ul.list.subtitle\">\n {statusLabels[item.meta.status]} (v{item.meta.version})\n </Typography>\n </UIList.ListItemMeta>\n </UIList.ListItem>\n ))}\n </Scrollbar>\n {loadMoreLoading && (\n <InlineLoaderWrapper>\n <Typography use={\"overline\"}>{t`Loading more entries...`}</Typography>\n </InlineLoaderWrapper>\n )}\n </>\n )}\n </UIList.DataList>\n );\n};\n\nexport default ContentEntriesList;\n"],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import React, { Dispatch, SetStateAction, MutableRefObject } from "react";
|
|
1
|
+
import React, { Dispatch, SetStateAction, MutableRefObject, RefObject } from "react";
|
|
2
2
|
import { ContentEntriesContext } from "../ContentEntriesContext";
|
|
3
3
|
import { CmsContentEntryRevision, CmsEditorContentEntry } from "../../../../types";
|
|
4
|
-
import {
|
|
4
|
+
import { TabsImperativeApi } from "@webiny/ui/Tabs";
|
|
5
5
|
interface ContentEntryContextForm {
|
|
6
6
|
submit: (ev: React.SyntheticEvent) => Promise<CmsEditorContentEntry | null>;
|
|
7
7
|
}
|
|
8
8
|
declare type ContentEntryContextFormRef = MutableRefObject<ContentEntryContextForm>;
|
|
9
|
-
declare type ContentEntryContextTabsRef = MutableRefObject<Tabs | null>;
|
|
10
9
|
export interface ContentEntryContext extends ContentEntriesContext {
|
|
11
10
|
createEntry: () => void;
|
|
12
11
|
entry: CmsEditorContentEntry;
|
|
@@ -18,11 +17,10 @@ export interface ContentEntryContext extends ContentEntriesContext {
|
|
|
18
17
|
setLoading: Dispatch<SetStateAction<boolean>>;
|
|
19
18
|
revisions: CmsContentEntryRevision[];
|
|
20
19
|
refetchContent: () => void;
|
|
21
|
-
|
|
22
|
-
setTabsRef: (tabs: Tabs) => void;
|
|
20
|
+
tabsRef: RefObject<TabsImperativeApi | undefined>;
|
|
23
21
|
showEmptyView: boolean;
|
|
24
22
|
}
|
|
25
|
-
export declare const Context: React.Context<ContentEntryContext>;
|
|
23
|
+
export declare const Context: React.Context<ContentEntryContext | undefined>;
|
|
26
24
|
export interface ContentEntryContextProviderProps extends Partial<UseContentEntryProviderProps> {
|
|
27
25
|
children: React.ReactNode;
|
|
28
26
|
}
|
|
@@ -33,63 +33,7 @@ var _utils = require("@webiny/utils");
|
|
|
33
33
|
|
|
34
34
|
var _contentEntries = require("../../../graphql/contentEntries");
|
|
35
35
|
|
|
36
|
-
var Context = /*#__PURE__*/_react.default.createContext(
|
|
37
|
-
createEntry: function createEntry() {
|
|
38
|
-
return void 0;
|
|
39
|
-
},
|
|
40
|
-
entry: null,
|
|
41
|
-
form: {
|
|
42
|
-
current: {
|
|
43
|
-
submit: function () {
|
|
44
|
-
var _submit = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
45
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
46
|
-
while (1) {
|
|
47
|
-
switch (_context.prev = _context.next) {
|
|
48
|
-
case 0:
|
|
49
|
-
return _context.abrupt("return", null);
|
|
50
|
-
|
|
51
|
-
case 1:
|
|
52
|
-
case "end":
|
|
53
|
-
return _context.stop();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}, _callee);
|
|
57
|
-
}));
|
|
58
|
-
|
|
59
|
-
function submit() {
|
|
60
|
-
return _submit.apply(this, arguments);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return submit;
|
|
64
|
-
}()
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
canCreate: false,
|
|
68
|
-
showEmptyView: false,
|
|
69
|
-
tabs: {
|
|
70
|
-
current: null
|
|
71
|
-
},
|
|
72
|
-
setTabsRef: function setTabsRef() {
|
|
73
|
-
return void 0;
|
|
74
|
-
},
|
|
75
|
-
refetchContent: function refetchContent() {
|
|
76
|
-
return void 0;
|
|
77
|
-
},
|
|
78
|
-
revisions: [],
|
|
79
|
-
setLoading: function setLoading() {
|
|
80
|
-
return void 0;
|
|
81
|
-
},
|
|
82
|
-
loading: false,
|
|
83
|
-
listQueryVariables: {},
|
|
84
|
-
setListQueryVariables: function setListQueryVariables() {
|
|
85
|
-
return void 0;
|
|
86
|
-
},
|
|
87
|
-
contentModel: null,
|
|
88
|
-
sorters: [],
|
|
89
|
-
setFormRef: function setFormRef() {
|
|
90
|
-
return void 0;
|
|
91
|
-
}
|
|
92
|
-
});
|
|
36
|
+
var Context = /*#__PURE__*/_react.default.createContext(undefined);
|
|
93
37
|
|
|
94
38
|
exports.Context = Context;
|
|
95
39
|
|
|
@@ -129,29 +73,28 @@ var Provider = function Provider(_ref) {
|
|
|
129
73
|
|
|
130
74
|
var formRef = (0, _react.useRef)({
|
|
131
75
|
submit: function () {
|
|
132
|
-
var
|
|
133
|
-
return (0, _regeneratorRuntime2.default)().wrap(function
|
|
76
|
+
var _submit = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
77
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
134
78
|
while (1) {
|
|
135
|
-
switch (
|
|
79
|
+
switch (_context.prev = _context.next) {
|
|
136
80
|
case 0:
|
|
137
|
-
return
|
|
81
|
+
return _context.abrupt("return", null);
|
|
138
82
|
|
|
139
83
|
case 1:
|
|
140
84
|
case "end":
|
|
141
|
-
return
|
|
85
|
+
return _context.stop();
|
|
142
86
|
}
|
|
143
87
|
}
|
|
144
|
-
},
|
|
88
|
+
}, _callee);
|
|
145
89
|
}));
|
|
146
90
|
|
|
147
91
|
function submit() {
|
|
148
|
-
return
|
|
92
|
+
return _submit.apply(this, arguments);
|
|
149
93
|
}
|
|
150
94
|
|
|
151
95
|
return submit;
|
|
152
96
|
}()
|
|
153
97
|
});
|
|
154
|
-
var tabsRef = (0, _react.useRef)(null);
|
|
155
98
|
|
|
156
99
|
var _useRouter2 = (0, _reactRouter.useRouter)(),
|
|
157
100
|
history = _useRouter2.history;
|
|
@@ -175,6 +118,8 @@ var Provider = function Provider(_ref) {
|
|
|
175
118
|
entryId = result ? result.id : null;
|
|
176
119
|
}
|
|
177
120
|
|
|
121
|
+
var tabsRef = (0, _react.useRef)();
|
|
122
|
+
|
|
178
123
|
var _useMemo = (0, _react.useMemo)(function () {
|
|
179
124
|
return {
|
|
180
125
|
READ_CONTENT: (0, _contentEntries.createReadQuery)(contentModel)
|
|
@@ -192,9 +137,6 @@ var Provider = function Provider(_ref) {
|
|
|
192
137
|
var setFormRef = (0, _react.useCallback)(function (form) {
|
|
193
138
|
formRef.current = form;
|
|
194
139
|
}, [formRef]);
|
|
195
|
-
var setTabsRef = (0, _react.useCallback)(function (tabs) {
|
|
196
|
-
tabsRef.current = tabs;
|
|
197
|
-
}, [tabsRef]);
|
|
198
140
|
var createEntry = (0, _react.useCallback)(function () {
|
|
199
141
|
history.push("/cms/content-entries/".concat(contentModel.modelId, "?new=true"));
|
|
200
142
|
}, [contentModel.modelId]);
|
|
@@ -240,9 +182,8 @@ var Provider = function Provider(_ref) {
|
|
|
240
182
|
refetchContent: getEntry.refetch,
|
|
241
183
|
setFormRef: setFormRef,
|
|
242
184
|
setLoading: setLoading,
|
|
243
|
-
|
|
244
|
-
showEmptyView: !newEntry && !loading && (0, _isEmpty.default)(entry)
|
|
245
|
-
tabs: tabsRef
|
|
185
|
+
tabsRef: tabsRef,
|
|
186
|
+
showEmptyView: !newEntry && !loading && (0, _isEmpty.default)(entry)
|
|
246
187
|
};
|
|
247
188
|
return /*#__PURE__*/_react.default.createElement(Context.Provider, {
|
|
248
189
|
value: value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Context","React","createContext","createEntry","entry","form","current","submit","canCreate","showEmptyView","tabs","setTabsRef","refetchContent","revisions","setLoading","loading","listQueryVariables","setListQueryVariables","contentModel","sorters","setFormRef","useContentEntryProviderProps","useRouter","location","query","URLSearchParams","search","isNewEntry","get","getContentId","Provider","children","useContentEntries","formRef","useRef","tabsRef","history","useSnackbar","showSnackbar","useState","isLoading","contentEntryProviderProps","newEntry","contentId","revisionId","decodeURIComponent","entryId","result","parseIdentifier","id","useMemo","READ_CONTENT","createReadQuery","modelId","GET_REVISIONS","createRevisionsQuery","useCallback","push","getEntry","useQuery","variables","revision","skip","onCompleted","data","error","content","message","getRevisions","value","refetch","isEmpty","displayName"],"sources":["ContentEntryContext.tsx"],"sourcesContent":["import React, {\n useRef,\n useState,\n useCallback,\n useMemo,\n Dispatch,\n SetStateAction,\n MutableRefObject\n} from \"react\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { ContentEntriesContext } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { useContentEntries } from \"~/admin/views/contentEntries/hooks/useContentEntries\";\nimport { CmsContentEntryRevision, CmsEditorContentEntry, CmsEditorContentModel } from \"~/types\";\nimport { Tabs } from \"@webiny/ui/Tabs\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport {\n CmsEntriesListRevisionsQueryResponse,\n CmsEntriesListRevisionsQueryVariables,\n CmsEntryGetQueryResponse,\n CmsEntryGetQueryVariables,\n createReadQuery,\n createRevisionsQuery\n} from \"~/admin/graphql/contentEntries\";\n\ninterface ContentEntryContextForm {\n submit: (ev: React.SyntheticEvent) => Promise<CmsEditorContentEntry | null>;\n}\ntype ContentEntryContextFormRef = MutableRefObject<ContentEntryContextForm>;\ntype ContentEntryContextTabsRef = MutableRefObject<Tabs | null>;\nexport interface ContentEntryContext extends ContentEntriesContext {\n createEntry: () => void;\n entry: CmsEditorContentEntry;\n form: ContentEntryContextFormRef;\n setFormRef: (form: { submit: Function }) => void;\n loading: boolean;\n setLoading: Dispatch<SetStateAction<boolean>>;\n revisions: CmsContentEntryRevision[];\n refetchContent: () => void;\n tabs: ContentEntryContextTabsRef;\n setTabsRef: (tabs: Tabs) => void;\n showEmptyView: boolean;\n}\n\nexport const Context = React.createContext<ContentEntryContext>({\n createEntry: () => {\n return void 0;\n },\n entry: null as unknown as CmsEditorContentEntry,\n form: {\n current: {\n submit: async () => {\n return null;\n }\n }\n },\n canCreate: false,\n showEmptyView: false,\n tabs: {\n current: null\n },\n setTabsRef: () => {\n return void 0;\n },\n refetchContent: () => {\n return void 0;\n },\n revisions: [],\n setLoading: () => {\n return void 0;\n },\n loading: false,\n listQueryVariables: {},\n setListQueryVariables: () => {\n return void 0;\n },\n contentModel: null as unknown as CmsEditorContentModel,\n sorters: [],\n setFormRef: () => {\n return void 0;\n }\n});\n\nexport interface ContentEntryContextProviderProps extends Partial<UseContentEntryProviderProps> {\n children: React.ReactNode;\n}\n\ninterface UseContentEntryProviderProps {\n getContentId: () => string | null;\n isNewEntry: () => boolean;\n}\n\nexport const useContentEntryProviderProps = (): UseContentEntryProviderProps => {\n const { location } = useRouter();\n const query = new URLSearchParams(location.search);\n\n const isNewEntry = (): boolean => {\n return query.get(\"new\") === \"true\";\n };\n\n const getContentId = (): string | null => {\n return query.get(\"id\") || null;\n };\n\n return {\n getContentId,\n isNewEntry\n };\n};\n\nexport const Provider: React.FC<ContentEntryContextProviderProps> = ({\n children,\n isNewEntry,\n getContentId\n}) => {\n const { contentModel, canCreate, listQueryVariables, setListQueryVariables, sorters } =\n useContentEntries();\n\n const formRef = useRef<ContentEntryContextForm>({\n submit: async () => {\n return null;\n }\n });\n const tabsRef = useRef<Tabs | null>(null);\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const [isLoading, setLoading] = useState<boolean>(false);\n\n const contentEntryProviderProps = useContentEntryProviderProps();\n\n const newEntry =\n typeof isNewEntry === \"function\" ? isNewEntry() : contentEntryProviderProps.isNewEntry();\n const contentId =\n typeof getContentId === \"function\"\n ? getContentId()\n : contentEntryProviderProps.getContentId();\n\n const revisionId = contentId ? decodeURIComponent(contentId) : null;\n let entryId: string | null = null;\n if (revisionId) {\n const result = parseIdentifier(revisionId);\n entryId = result ? result.id : null;\n }\n\n const { READ_CONTENT } = useMemo(() => {\n return {\n READ_CONTENT: createReadQuery(contentModel)\n };\n }, [contentModel.modelId]);\n\n const { GET_REVISIONS } = useMemo(() => {\n return {\n GET_REVISIONS: createRevisionsQuery(contentModel)\n };\n }, [contentModel.modelId]);\n\n const setFormRef = useCallback(\n form => {\n formRef.current = form;\n },\n [formRef]\n );\n\n const setTabsRef = useCallback(\n (tabs: Tabs) => {\n tabsRef.current = tabs;\n },\n [tabsRef]\n );\n\n const createEntry = useCallback((): void => {\n history.push(`/cms/content-entries/${contentModel.modelId}?new=true`);\n }, [contentModel.modelId]);\n\n const getEntry = useQuery<CmsEntryGetQueryResponse, CmsEntryGetQueryVariables>(READ_CONTENT, {\n variables: {\n revision: revisionId || \"\"\n },\n skip: !revisionId,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.content;\n if (!error) {\n return;\n }\n history.push(`/cms/content-entries/${contentModel.modelId}`);\n showSnackbar(error.message);\n }\n });\n\n const getRevisions = useQuery<\n CmsEntriesListRevisionsQueryResponse,\n CmsEntriesListRevisionsQueryVariables\n >(GET_REVISIONS, {\n variables: {\n id: entryId as string\n },\n skip: !entryId\n });\n\n const loading = isLoading || getEntry.loading || getRevisions.loading;\n const entry: CmsEditorContentEntry = get(getEntry, \"data.content.data\") || {};\n\n const value: ContentEntryContext = {\n canCreate,\n contentModel,\n createEntry,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n entry,\n form: formRef,\n loading,\n revisions: get(getRevisions, \"data.revisions.data\") || [],\n refetchContent: getEntry.refetch,\n setFormRef,\n setLoading,\n setTabsRef,\n showEmptyView: !newEntry && !loading && isEmpty(entry),\n tabs: tabsRef\n };\n\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nProvider.displayName = \"ContentEntryProvider\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Context","React","createContext","undefined","useContentEntryProviderProps","useRouter","location","query","URLSearchParams","search","isNewEntry","get","getContentId","Provider","children","useContentEntries","contentModel","canCreate","listQueryVariables","setListQueryVariables","sorters","formRef","useRef","submit","history","useSnackbar","showSnackbar","useState","isLoading","setLoading","contentEntryProviderProps","newEntry","contentId","revisionId","decodeURIComponent","entryId","result","parseIdentifier","id","tabsRef","useMemo","READ_CONTENT","createReadQuery","modelId","GET_REVISIONS","createRevisionsQuery","setFormRef","useCallback","form","current","createEntry","push","getEntry","useQuery","variables","revision","skip","onCompleted","data","error","content","message","getRevisions","loading","entry","value","revisions","refetchContent","refetch","showEmptyView","isEmpty","displayName"],"sources":["ContentEntryContext.tsx"],"sourcesContent":["import React, {\n useRef,\n useState,\n useCallback,\n useMemo,\n Dispatch,\n SetStateAction,\n MutableRefObject,\n RefObject\n} from \"react\";\nimport isEmpty from \"lodash/isEmpty\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery } from \"~/admin/hooks\";\nimport { ContentEntriesContext } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { useContentEntries } from \"~/admin/views/contentEntries/hooks/useContentEntries\";\nimport { CmsContentEntryRevision, CmsEditorContentEntry } from \"~/types\";\nimport { TabsImperativeApi } from \"@webiny/ui/Tabs\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport {\n CmsEntriesListRevisionsQueryResponse,\n CmsEntriesListRevisionsQueryVariables,\n CmsEntryGetQueryResponse,\n CmsEntryGetQueryVariables,\n createReadQuery,\n createRevisionsQuery\n} from \"~/admin/graphql/contentEntries\";\n\ninterface ContentEntryContextForm {\n submit: (ev: React.SyntheticEvent) => Promise<CmsEditorContentEntry | null>;\n}\ntype ContentEntryContextFormRef = MutableRefObject<ContentEntryContextForm>;\nexport interface ContentEntryContext extends ContentEntriesContext {\n createEntry: () => void;\n entry: CmsEditorContentEntry;\n form: ContentEntryContextFormRef;\n setFormRef: (form: { submit: Function }) => void;\n loading: boolean;\n setLoading: Dispatch<SetStateAction<boolean>>;\n revisions: CmsContentEntryRevision[];\n refetchContent: () => void;\n tabsRef: RefObject<TabsImperativeApi | undefined>;\n showEmptyView: boolean;\n}\n\nexport const Context = React.createContext<ContentEntryContext | undefined>(undefined);\n\nexport interface ContentEntryContextProviderProps extends Partial<UseContentEntryProviderProps> {\n children: React.ReactNode;\n}\n\ninterface UseContentEntryProviderProps {\n getContentId: () => string | null;\n isNewEntry: () => boolean;\n}\n\nexport const useContentEntryProviderProps = (): UseContentEntryProviderProps => {\n const { location } = useRouter();\n const query = new URLSearchParams(location.search);\n\n const isNewEntry = (): boolean => {\n return query.get(\"new\") === \"true\";\n };\n\n const getContentId = (): string | null => {\n return query.get(\"id\") || null;\n };\n\n return {\n getContentId,\n isNewEntry\n };\n};\n\nexport const Provider: React.FC<ContentEntryContextProviderProps> = ({\n children,\n isNewEntry,\n getContentId\n}) => {\n const { contentModel, canCreate, listQueryVariables, setListQueryVariables, sorters } =\n useContentEntries();\n\n const formRef = useRef<ContentEntryContextForm>({\n submit: async () => {\n return null;\n }\n });\n const { history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const [isLoading, setLoading] = useState<boolean>(false);\n\n const contentEntryProviderProps = useContentEntryProviderProps();\n\n const newEntry =\n typeof isNewEntry === \"function\" ? isNewEntry() : contentEntryProviderProps.isNewEntry();\n const contentId =\n typeof getContentId === \"function\"\n ? getContentId()\n : contentEntryProviderProps.getContentId();\n\n const revisionId = contentId ? decodeURIComponent(contentId) : null;\n let entryId: string | null = null;\n if (revisionId) {\n const result = parseIdentifier(revisionId);\n entryId = result ? result.id : null;\n }\n\n const tabsRef = useRef<TabsImperativeApi>();\n\n const { READ_CONTENT } = useMemo(() => {\n return {\n READ_CONTENT: createReadQuery(contentModel)\n };\n }, [contentModel.modelId]);\n\n const { GET_REVISIONS } = useMemo(() => {\n return {\n GET_REVISIONS: createRevisionsQuery(contentModel)\n };\n }, [contentModel.modelId]);\n\n const setFormRef = useCallback(\n form => {\n formRef.current = form;\n },\n [formRef]\n );\n\n const createEntry = useCallback((): void => {\n history.push(`/cms/content-entries/${contentModel.modelId}?new=true`);\n }, [contentModel.modelId]);\n\n const getEntry = useQuery<CmsEntryGetQueryResponse, CmsEntryGetQueryVariables>(READ_CONTENT, {\n variables: {\n revision: revisionId || \"\"\n },\n skip: !revisionId,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.content;\n if (!error) {\n return;\n }\n history.push(`/cms/content-entries/${contentModel.modelId}`);\n showSnackbar(error.message);\n }\n });\n\n const getRevisions = useQuery<\n CmsEntriesListRevisionsQueryResponse,\n CmsEntriesListRevisionsQueryVariables\n >(GET_REVISIONS, {\n variables: {\n id: entryId as string\n },\n skip: !entryId\n });\n\n const loading = isLoading || getEntry.loading || getRevisions.loading;\n const entry: CmsEditorContentEntry = get(getEntry, \"data.content.data\") || {};\n\n const value: ContentEntryContext = {\n canCreate,\n contentModel,\n createEntry,\n listQueryVariables,\n setListQueryVariables,\n sorters,\n entry,\n form: formRef,\n loading,\n revisions: get(getRevisions, \"data.revisions.data\") || [],\n refetchContent: getEntry.refetch,\n setFormRef,\n setLoading,\n tabsRef,\n showEmptyView: !newEntry && !loading && isEmpty(entry)\n };\n\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nProvider.displayName = \"ContentEntryProvider\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PublishEntryRevisionListItem: import("@webiny/react-composition").ComposableFC<{}>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.PublishEntryRevisionListItem = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _reactComposition = require("@webiny/react-composition");
|
|
13
|
+
|
|
14
|
+
var _List = require("@webiny/ui/List");
|
|
15
|
+
|
|
16
|
+
var _Icon = require("@webiny/ui/Icon");
|
|
17
|
+
|
|
18
|
+
var _publish = require("../../../icons/publish.svg");
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireDefault(require("react"));
|
|
21
|
+
|
|
22
|
+
var _i18n = require("@webiny/app/i18n");
|
|
23
|
+
|
|
24
|
+
var _templateObject;
|
|
25
|
+
|
|
26
|
+
var t = _i18n.i18n.ns("app-headless-cms/admin/plugins/content-details/content-revisions");
|
|
27
|
+
|
|
28
|
+
var PublishEntryRevisionListItemComponent = function PublishEntryRevisionListItemComponent() {
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
30
|
+
icon: /*#__PURE__*/_react.default.createElement(_publish.ReactComponent, null)
|
|
31
|
+
})), t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Publish"]))));
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
var PublishEntryRevisionListItem = (0, _reactComposition.makeComposable)("PublishEntryRevisionListItem", PublishEntryRevisionListItemComponent);
|
|
35
|
+
exports.PublishEntryRevisionListItem = PublishEntryRevisionListItem;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","PublishEntryRevisionListItemComponent","PublishEntryRevisionListItem","makeComposable"],"sources":["PublishEntryRevisionListItem.tsx"],"sourcesContent":["import { makeComposable } from \"@webiny/react-composition\";\nimport { ListItemGraphic } from \"@webiny/ui/List\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { ReactComponent as PublishIcon } from \"~/admin/icons/publish.svg\";\nimport React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/plugins/content-details/content-revisions\");\n\nconst PublishEntryRevisionListItemComponent: React.FC = () => {\n return (\n <>\n <ListItemGraphic>\n <Icon icon={<PublishIcon />} />\n </ListItemGraphic>\n {t`Publish`}\n </>\n );\n};\n\nexport const PublishEntryRevisionListItem = makeComposable(\n \"PublishEntryRevisionListItem\",\n PublishEntryRevisionListItemComponent\n);\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,kEAAR,CAAV;;AAEA,IAAMC,qCAA+C,GAAG,SAAlDA,qCAAkD,GAAM;EAC1D,oBACI,yEACI,6BAAC,qBAAD,qBACI,6BAAC,UAAD;IAAM,IAAI,eAAE,6BAAC,uBAAD;EAAZ,EADJ,CADJ,EAIKH,CAJL,2FADJ;AAQH,CATD;;AAWO,IAAMI,4BAA4B,GAAG,IAAAC,gCAAA,EACxC,8BADwC,EAExCF,qCAFwC,CAArC"}
|
|
@@ -39,8 +39,6 @@ var _add = require("../../../icons/add.svg");
|
|
|
39
39
|
|
|
40
40
|
var _edit = require("../../../icons/edit.svg");
|
|
41
41
|
|
|
42
|
-
var _publish = require("../../../icons/publish.svg");
|
|
43
|
-
|
|
44
42
|
var _unpublish = require("../../../icons/unpublish.svg");
|
|
45
43
|
|
|
46
44
|
var _delete = require("../../../icons/delete.svg");
|
|
@@ -53,7 +51,9 @@ var _usePermission2 = _interopRequireDefault(require("../../../hooks/usePermissi
|
|
|
53
51
|
|
|
54
52
|
var _useContentEntry2 = require("../hooks/useContentEntry");
|
|
55
53
|
|
|
56
|
-
var
|
|
54
|
+
var _PublishEntryRevisionListItem = require("./PublishEntryRevisionListItem");
|
|
55
|
+
|
|
56
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
|
|
57
57
|
|
|
58
58
|
var t = _i18n.i18n.ns("app-headless-cms/admin/plugins/content-details/content-revisions");
|
|
59
59
|
|
|
@@ -112,7 +112,7 @@ var RevisionListItem = function RevisionListItem(_ref) {
|
|
|
112
112
|
|
|
113
113
|
var _useContentEntry = (0, _useContentEntry2.useContentEntry)(),
|
|
114
114
|
entry = _useContentEntry.entry,
|
|
115
|
-
|
|
115
|
+
tabsRef = _useContentEntry.tabsRef;
|
|
116
116
|
|
|
117
117
|
var _usePermission = (0, _usePermission2.default)(),
|
|
118
118
|
canEdit = _usePermission.canEdit,
|
|
@@ -156,11 +156,11 @@ var RevisionListItem = function RevisionListItem(_ref) {
|
|
|
156
156
|
onClick: function onClick() {
|
|
157
157
|
editRevision();
|
|
158
158
|
|
|
159
|
-
if (!
|
|
159
|
+
if (!tabsRef.current) {
|
|
160
160
|
return;
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
tabsRef.current.switchTab(0);
|
|
164
164
|
}
|
|
165
165
|
}, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
166
166
|
icon: /*#__PURE__*/_react.default.createElement(_edit.ReactComponent, null)
|
|
@@ -168,22 +168,20 @@ var RevisionListItem = function RevisionListItem(_ref) {
|
|
|
168
168
|
onClick: function onClick() {
|
|
169
169
|
return publishRevision(revision.id);
|
|
170
170
|
}
|
|
171
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
172
|
-
icon: /*#__PURE__*/_react.default.createElement(_publish.ReactComponent, null)
|
|
173
|
-
})), t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Publish"])))), revision.meta.status === "published" && canUnpublish("cms.contentEntry") && /*#__PURE__*/_react.default.createElement(_Menu.MenuItem, {
|
|
171
|
+
}, /*#__PURE__*/_react.default.createElement(_PublishEntryRevisionListItem.PublishEntryRevisionListItem, null)), revision.meta.status === "published" && canUnpublish("cms.contentEntry") && /*#__PURE__*/_react.default.createElement(_Menu.MenuItem, {
|
|
174
172
|
onClick: function onClick() {
|
|
175
173
|
return unpublishRevision(revision.id);
|
|
176
174
|
},
|
|
177
175
|
"data-testid": "cms.revision.unpublish"
|
|
178
176
|
}, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
179
177
|
icon: /*#__PURE__*/_react.default.createElement(_unpublish.ReactComponent, null)
|
|
180
|
-
})), t(
|
|
178
|
+
})), t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Unpublish"])))), !revision.meta.locked && canDelete(entry, "cms.contentEntry") && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Menu.MenuDivider, null), /*#__PURE__*/_react.default.createElement(_Menu.MenuItem, {
|
|
181
179
|
onClick: function onClick() {
|
|
182
180
|
return showConfirmation(deleteRevision);
|
|
183
181
|
}
|
|
184
182
|
}, /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
185
183
|
icon: /*#__PURE__*/_react.default.createElement(_delete.ReactComponent, null)
|
|
186
|
-
})), t(
|
|
184
|
+
})), t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)([" Delete"]))))))));
|
|
187
185
|
});
|
|
188
186
|
};
|
|
189
187
|
|