@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.
Files changed (107) hide show
  1. package/HeadlessCMS.js +5 -1
  2. package/HeadlessCMS.js.map +1 -1
  3. package/admin/components/ContentEntryForm/useBind.js +23 -1
  4. package/admin/components/ContentEntryForm/useBind.js.map +1 -1
  5. package/admin/components/ContentModelEditor/Editor.js +1 -1
  6. package/admin/components/ContentModelEditor/Editor.js.map +1 -1
  7. package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js +1 -1
  8. package/admin/components/FieldEditor/EditFieldDialog/AppearanceTab.js.map +1 -1
  9. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js +10 -5
  10. package/admin/components/FieldEditor/EditFieldDialog/GeneralTab.js.map +1 -1
  11. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js +1 -0
  12. package/admin/components/FieldEditor/EditFieldDialog/ValidatorsTab.js.map +1 -1
  13. package/admin/components/FieldEditor/EditFieldDialog.js +8 -7
  14. package/admin/components/FieldEditor/EditFieldDialog.js.map +1 -1
  15. package/admin/contexts/Cms/index.d.ts +60 -0
  16. package/admin/contexts/Cms/index.js +107 -9
  17. package/admin/contexts/Cms/index.js.map +1 -1
  18. package/admin/plugins/editor/defaultBar/SaveContentModelButton.js +1 -0
  19. package/admin/plugins/editor/defaultBar/SaveContentModelButton.js.map +1 -1
  20. package/admin/plugins/entry/DefaultOnEntryDelete.d.ts +2 -0
  21. package/admin/plugins/entry/DefaultOnEntryDelete.js +204 -0
  22. package/admin/plugins/entry/DefaultOnEntryDelete.js.map +1 -0
  23. package/admin/plugins/entry/DefaultOnEntryPublish.d.ts +2 -0
  24. package/admin/plugins/entry/DefaultOnEntryPublish.js +176 -0
  25. package/admin/plugins/entry/DefaultOnEntryPublish.js.map +1 -0
  26. package/admin/plugins/fieldRenderers/Accordion.js +3 -0
  27. package/admin/plugins/fieldRenderers/Accordion.js.map +1 -1
  28. package/admin/plugins/fieldRenderers/DynamicSection.d.ts +11 -8
  29. package/admin/plugins/fieldRenderers/DynamicSection.js +0 -3
  30. package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -1
  31. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js +2 -1
  32. package/admin/plugins/fieldRenderers/boolean/booleanSwitch.js.map +1 -1
  33. package/admin/plugins/fieldRenderers/checkboxes.js +2 -1
  34. package/admin/plugins/fieldRenderers/checkboxes.js.map +1 -1
  35. package/admin/plugins/fieldRenderers/dateTime/Input.js +2 -1
  36. package/admin/plugins/fieldRenderers/dateTime/Input.js.map +1 -1
  37. package/admin/plugins/fieldRenderers/dateTime/Select.js +2 -1
  38. package/admin/plugins/fieldRenderers/dateTime/Select.js.map +1 -1
  39. package/admin/plugins/fieldRenderers/dateTime/utils.d.ts +3 -3
  40. package/admin/plugins/fieldRenderers/file/fileField.js +2 -1
  41. package/admin/plugins/fieldRenderers/file/fileField.js.map +1 -1
  42. package/admin/plugins/fieldRenderers/file/fileFields.js +4 -2
  43. package/admin/plugins/fieldRenderers/file/fileFields.js.map +1 -1
  44. package/admin/plugins/fieldRenderers/longText/longText.js +2 -1
  45. package/admin/plugins/fieldRenderers/longText/longText.js.map +1 -1
  46. package/admin/plugins/fieldRenderers/number/numberInput.js +2 -1
  47. package/admin/plugins/fieldRenderers/number/numberInput.js.map +1 -1
  48. package/admin/plugins/fieldRenderers/object/StyledComponents.d.ts +2 -0
  49. package/admin/plugins/fieldRenderers/object/StyledComponents.js +37 -2
  50. package/admin/plugins/fieldRenderers/object/StyledComponents.js.map +1 -1
  51. package/admin/plugins/fieldRenderers/object/arrow_drop_down.svg +1 -0
  52. package/admin/plugins/fieldRenderers/object/arrow_drop_up.svg +1 -0
  53. package/admin/plugins/fieldRenderers/object/multipleObjects.js +101 -47
  54. package/admin/plugins/fieldRenderers/object/multipleObjects.js.map +1 -1
  55. package/admin/plugins/fieldRenderers/radioButtons.js +2 -1
  56. package/admin/plugins/fieldRenderers/radioButtons.js.map +1 -1
  57. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js +5 -5
  58. package/admin/plugins/fieldRenderers/ref/components/ContentEntriesAutocomplete.js.map +1 -1
  59. package/admin/plugins/fieldRenderers/ref/components/useReference.js +6 -1
  60. package/admin/plugins/fieldRenderers/ref/components/useReference.js.map +1 -1
  61. package/admin/plugins/fieldRenderers/richText/richTextInput.js +2 -1
  62. package/admin/plugins/fieldRenderers/richText/richTextInput.js.map +1 -1
  63. package/admin/plugins/fieldRenderers/richText/richTextInputs.js +2 -2
  64. package/admin/plugins/fieldRenderers/richText/richTextInputs.js.map +1 -1
  65. package/admin/plugins/fieldRenderers/select.js +2 -1
  66. package/admin/plugins/fieldRenderers/select.js.map +1 -1
  67. package/admin/plugins/fieldRenderers/text/textInput.js +2 -1
  68. package/admin/plugins/fieldRenderers/text/textInput.js.map +1 -1
  69. package/admin/plugins/fieldValidators/date/availableValidators.d.ts +1 -1
  70. package/admin/plugins/index.d.ts +1 -1
  71. package/admin/plugins/validators/unique.d.ts +1 -1
  72. package/admin/views/contentEntries/ContentEntriesList.js +7 -2
  73. package/admin/views/contentEntries/ContentEntriesList.js.map +1 -1
  74. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.d.ts +4 -6
  75. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +12 -71
  76. package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
  77. package/admin/views/contentEntries/ContentEntry/PublishEntryRevisionListItem.d.ts +1 -0
  78. package/admin/views/contentEntries/ContentEntry/PublishEntryRevisionListItem.js +35 -0
  79. package/admin/views/contentEntries/ContentEntry/PublishEntryRevisionListItem.js.map +1 -0
  80. package/admin/views/contentEntries/ContentEntry/RevisionListItem.js +9 -11
  81. package/admin/views/contentEntries/ContentEntry/RevisionListItem.js.map +1 -1
  82. package/admin/views/contentEntries/ContentEntry/cache.js +47 -21
  83. package/admin/views/contentEntries/ContentEntry/cache.js.map +1 -1
  84. package/admin/views/contentEntries/ContentEntry/header/contentFormOptionsMenu/ContentFormOptionsMenu.js +32 -46
  85. package/admin/views/contentEntries/ContentEntry/header/contentFormOptionsMenu/ContentFormOptionsMenu.js.map +1 -1
  86. package/admin/views/contentEntries/ContentEntry/header/index.js +6 -6
  87. package/admin/views/contentEntries/ContentEntry/header/index.js.map +1 -1
  88. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.d.ts +1 -2
  89. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js +6 -4
  90. package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js.map +1 -1
  91. package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.d.ts +1 -3
  92. package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js +6 -4
  93. package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js.map +1 -1
  94. package/admin/views/contentEntries/ContentEntry/header/saveAndPublishContent/SaveAndPublishContent.d.ts +1 -3
  95. package/admin/views/contentEntries/ContentEntry/header/saveAndPublishContent/SaveAndPublishContent.js +45 -38
  96. package/admin/views/contentEntries/ContentEntry/header/saveAndPublishContent/SaveAndPublishContent.js.map +1 -1
  97. package/admin/views/contentEntries/ContentEntry/useRevision.js +57 -70
  98. package/admin/views/contentEntries/ContentEntry/useRevision.js.map +1 -1
  99. package/admin/views/contentEntries/ContentEntry.js +2 -4
  100. package/admin/views/contentEntries/ContentEntry.js.map +1 -1
  101. package/admin/views/contentEntries/hooks/useContentEntry.js +7 -1
  102. package/admin/views/contentEntries/hooks/useContentEntry.js.map +1 -1
  103. package/admin/views/contentModels/NewContentModelDialog.js +6 -3
  104. package/admin/views/contentModels/NewContentModelDialog.js.map +1 -1
  105. package/package.json +21 -20
  106. package/types.d.ts +10 -7
  107. 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\";\nimport { BindComponentRenderProp } from \"@webiny/form\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/rich-text\");\n\nconst getKey = (field: CmsEditorField, bind: BindComponentRenderProp, index: number): string => {\n const formId = (bind as any).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;;;;AAGA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,yCAAR,CAAV;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD,EAAwBC,IAAxB,EAAuDC,KAAvD,EAAiF;EAAA;;EAC5F,IAAMC,MAAM,GAAG,WAACF,IAAD,CAAcC,KAAd,iEAAqBE,IAArB,gFAA2BC,IAA3B,sEAAiCC,EAAjC,KAAuC,KAAtD;EACA,iBAAUH,MAAV,cAAoBH,KAAK,CAACO,OAA1B,cAAqCL,KAArC;AACH,CAHD;;AAKA,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
+ {"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"}
@@ -59,7 +59,8 @@ var plugin = {
59
59
  value: value,
60
60
  label: field.label,
61
61
  description: field.helpText,
62
- options: options
62
+ options: options,
63
+ "data-testid": "fr.input.select.".concat(field.label)
63
64
  }));
64
65
  });
65
66
  }
@@ -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;QALb,GADJ;MASH,CAZL,CADJ;IAgBH;EA5BK;AAH+B,CAA7C;eAmCeM,M"}
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;QAJvB,GADC;MAAA,CADT,CADJ;IAYH;EA1BK;AAH+B,CAA7C;eAiCehB,M"}
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 | undefined) => string[];
1
+ export declare const getAvailableValidators: (type?: string) => string[];
@@ -1,4 +1,4 @@
1
- declare const _default: () => (import("@webiny/app/types").CacheGetObjectIdPlugin | import("@webiny/app-admin/types").AdminInstallationPlugin | import("@webiny/app-admin/types").AdminAppPermissionRendererPlugin | import("../../types").CmsEditorFormSettingsPlugin | import("../../types").CmsIconsPlugin | import("../../types").CmsFieldValueTransformer[] | import("@webiny/app/types").RoutePlugin[] | import("../../types").CmsContentDetailsPlugin[] | {
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: ", contentModel.modelId))),
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 { Tabs } from "@webiny/ui/Tabs";
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
- tabs: ContentEntryContextTabsRef;
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 _submit2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
133
- return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
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 (_context2.prev = _context2.next) {
79
+ switch (_context.prev = _context.next) {
136
80
  case 0:
137
- return _context2.abrupt("return", null);
81
+ return _context.abrupt("return", null);
138
82
 
139
83
  case 1:
140
84
  case "end":
141
- return _context2.stop();
85
+ return _context.stop();
142
86
  }
143
87
  }
144
- }, _callee2);
88
+ }, _callee);
145
89
  }));
146
90
 
147
91
  function submit() {
148
- return _submit2.apply(this, arguments);
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
- setTabsRef: setTabsRef,
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":";;;;;;;;;;;;;;;;;AAAA;;AAUA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAGA;;AACA;;AA0BO,IAAMA,OAAO,gBAAGC,cAAA,CAAMC,aAAN,CAAqDC,SAArD,CAAhB;;;;AAWA,IAAMC,4BAA4B,GAAG,SAA/BA,4BAA+B,GAAoC;EAC5E,iBAAqB,IAAAC,sBAAA,GAArB;EAAA,IAAQC,QAAR,cAAQA,QAAR;;EACA,IAAMC,KAAK,GAAG,IAAIC,eAAJ,CAAoBF,QAAQ,CAACG,MAA7B,CAAd;;EAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAe;IAC9B,OAAOH,KAAK,CAACI,GAAN,CAAU,KAAV,MAAqB,MAA5B;EACH,CAFD;;EAIA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAqB;IACtC,OAAOL,KAAK,CAACI,GAAN,CAAU,IAAV,KAAmB,IAA1B;EACH,CAFD;;EAIA,OAAO;IACHC,YAAY,EAAZA,YADG;IAEHF,UAAU,EAAVA;EAFG,CAAP;AAIH,CAhBM;;;;AAkBA,IAAMG,QAAoD,GAAG,SAAvDA,QAAuD,OAI9D;EAAA,IAHFC,QAGE,QAHFA,QAGE;EAAA,IAFFJ,UAEE,QAFFA,UAEE;EAAA,IADFE,YACE,QADFA,YACE;;EACF,yBACI,IAAAG,qCAAA,GADJ;EAAA,IAAQC,YAAR,sBAAQA,YAAR;EAAA,IAAsBC,SAAtB,sBAAsBA,SAAtB;EAAA,IAAiCC,kBAAjC,sBAAiCA,kBAAjC;EAAA,IAAqDC,qBAArD,sBAAqDA,qBAArD;EAAA,IAA4EC,OAA5E,sBAA4EA,OAA5E;;EAGA,IAAMC,OAAO,GAAG,IAAAC,aAAA,EAAgC;IAC5CC,MAAM;MAAA,qGAAE;QAAA;UAAA;YAAA;cAAA;gBAAA,iCACG,IADH;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAAF;;MAAA;QAAA;MAAA;;MAAA;IAAA;EADsC,CAAhC,CAAhB;;EAKA,kBAAoB,IAAAlB,sBAAA,GAApB;EAAA,IAAQmB,OAAR,eAAQA,OAAR;;EACA,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR;;EACA,gBAAgC,IAAAC,eAAA,EAAkB,KAAlB,CAAhC;EAAA;EAAA,IAAOC,SAAP;EAAA,IAAkBC,UAAlB;;EAEA,IAAMC,yBAAyB,GAAG1B,4BAA4B,EAA9D;EAEA,IAAM2B,QAAQ,GACV,OAAOrB,UAAP,KAAsB,UAAtB,GAAmCA,UAAU,EAA7C,GAAkDoB,yBAAyB,CAACpB,UAA1B,EADtD;EAEA,IAAMsB,SAAS,GACX,OAAOpB,YAAP,KAAwB,UAAxB,GACMA,YAAY,EADlB,GAEMkB,yBAAyB,CAAClB,YAA1B,EAHV;EAKA,IAAMqB,UAAU,GAAGD,SAAS,GAAGE,kBAAkB,CAACF,SAAD,CAArB,GAAmC,IAA/D;EACA,IAAIG,OAAsB,GAAG,IAA7B;;EACA,IAAIF,UAAJ,EAAgB;IACZ,IAAMG,MAAM,GAAG,IAAAC,sBAAA,EAAgBJ,UAAhB,CAAf;IACAE,OAAO,GAAGC,MAAM,GAAGA,MAAM,CAACE,EAAV,GAAe,IAA/B;EACH;;EAED,IAAMC,OAAO,GAAG,IAAAjB,aAAA,GAAhB;;EAEA,eAAyB,IAAAkB,cAAA,EAAQ,YAAM;IACnC,OAAO;MACHC,YAAY,EAAE,IAAAC,+BAAA,EAAgB1B,YAAhB;IADX,CAAP;EAGH,CAJwB,EAItB,CAACA,YAAY,CAAC2B,OAAd,CAJsB,CAAzB;EAAA,IAAQF,YAAR,YAAQA,YAAR;;EAMA,gBAA0B,IAAAD,cAAA,EAAQ,YAAM;IACpC,OAAO;MACHI,aAAa,EAAE,IAAAC,oCAAA,EAAqB7B,YAArB;IADZ,CAAP;EAGH,CAJyB,EAIvB,CAACA,YAAY,CAAC2B,OAAd,CAJuB,CAA1B;EAAA,IAAQC,aAAR,aAAQA,aAAR;;EAMA,IAAME,UAAU,GAAG,IAAAC,kBAAA,EACf,UAAAC,IAAI,EAAI;IACJ3B,OAAO,CAAC4B,OAAR,GAAkBD,IAAlB;EACH,CAHc,EAIf,CAAC3B,OAAD,CAJe,CAAnB;EAOA,IAAM6B,WAAW,GAAG,IAAAH,kBAAA,EAAY,YAAY;IACxCvB,OAAO,CAAC2B,IAAR,gCAAqCnC,YAAY,CAAC2B,OAAlD;EACH,CAFmB,EAEjB,CAAC3B,YAAY,CAAC2B,OAAd,CAFiB,CAApB;EAIA,IAAMS,QAAQ,GAAG,IAAAC,eAAA,EAA8DZ,YAA9D,EAA4E;IACzFa,SAAS,EAAE;MACPC,QAAQ,EAAEtB,UAAU,IAAI;IADjB,CAD8E;IAIzFuB,IAAI,EAAE,CAACvB,UAJkF;IAKzFwB,WAAW,EAAE,qBAAAC,IAAI,EAAI;MACjB,IAAI,CAACA,IAAL,EAAW;QACP;MACH;;MAED,IAAQC,KAAR,GAAkBD,IAAI,CAACE,OAAvB,CAAQD,KAAR;;MACA,IAAI,CAACA,KAAL,EAAY;QACR;MACH;;MACDnC,OAAO,CAAC2B,IAAR,gCAAqCnC,YAAY,CAAC2B,OAAlD;MACAjB,YAAY,CAACiC,KAAK,CAACE,OAAP,CAAZ;IACH;EAhBwF,CAA5E,CAAjB;EAmBA,IAAMC,YAAY,GAAG,IAAAT,eAAA,EAGnBT,aAHmB,EAGJ;IACbU,SAAS,EAAE;MACPhB,EAAE,EAAEH;IADG,CADE;IAIbqB,IAAI,EAAE,CAACrB;EAJM,CAHI,CAArB;EAUA,IAAM4B,OAAO,GAAGnC,SAAS,IAAIwB,QAAQ,CAACW,OAAtB,IAAiCD,YAAY,CAACC,OAA9D;EACA,IAAMC,KAA4B,GAAG,IAAArD,YAAA,EAAIyC,QAAJ,EAAc,mBAAd,KAAsC,EAA3E;EAEA,IAAMa,KAA0B,GAAG;IAC/BhD,SAAS,EAATA,SAD+B;IAE/BD,YAAY,EAAZA,YAF+B;IAG/BkC,WAAW,EAAXA,WAH+B;IAI/BhC,kBAAkB,EAAlBA,kBAJ+B;IAK/BC,qBAAqB,EAArBA,qBAL+B;IAM/BC,OAAO,EAAPA,OAN+B;IAO/B4C,KAAK,EAALA,KAP+B;IAQ/BhB,IAAI,EAAE3B,OARyB;IAS/B0C,OAAO,EAAPA,OAT+B;IAU/BG,SAAS,EAAE,IAAAvD,YAAA,EAAImD,YAAJ,EAAkB,qBAAlB,KAA4C,EAVxB;IAW/BK,cAAc,EAAEf,QAAQ,CAACgB,OAXM;IAY/BtB,UAAU,EAAVA,UAZ+B;IAa/BjB,UAAU,EAAVA,UAb+B;IAc/BU,OAAO,EAAPA,OAd+B;IAe/B8B,aAAa,EAAE,CAACtC,QAAD,IAAa,CAACgC,OAAd,IAAyB,IAAAO,gBAAA,EAAQN,KAAR;EAfT,CAAnC;EAkBA,oBAAO,6BAAC,OAAD,CAAS,QAAT;IAAkB,KAAK,EAAEC;EAAzB,GAAiCnD,QAAjC,CAAP;AACH,CA7GM;;;AA+GPD,QAAQ,CAAC0D,WAAT,GAAuB,sBAAvB"}
@@ -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 _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
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
- tabs = _useContentEntry.tabs;
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 (!tabs.current) {
159
+ if (!tabsRef.current) {
160
160
  return;
161
161
  }
162
162
 
163
- tabs.current.switchTab(0);
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(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
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(_templateObject8 || (_templateObject8 = (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, {
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(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)([" Delete"]))))))));
184
+ })), t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)([" Delete"]))))))));
187
185
  });
188
186
  };
189
187