@webiny/app-headless-cms 5.38.0-beta.0 → 5.38.0-beta.2

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 (34) hide show
  1. package/admin/components/ContentEntries/Empty/index.d.ts +2 -1
  2. package/admin/components/ContentEntries/Empty/index.js +28 -10
  3. package/admin/components/ContentEntries/Empty/index.js.map +1 -1
  4. package/admin/components/ContentEntries/Empty/styled.js +1 -1
  5. package/admin/components/ContentEntries/Empty/styled.js.map +1 -1
  6. package/admin/components/ContentEntries/Filters/Filters.js +2 -1
  7. package/admin/components/ContentEntries/Filters/Filters.js.map +1 -1
  8. package/admin/components/ContentEntries/Header/ButtonsCreate/ButtonsCreate.d.ts +2 -0
  9. package/admin/components/ContentEntries/Header/ButtonsCreate/ButtonsCreate.js +23 -6
  10. package/admin/components/ContentEntries/Header/ButtonsCreate/ButtonsCreate.js.map +1 -1
  11. package/admin/components/ContentEntries/Header/ButtonsCreate/styled.js +1 -1
  12. package/admin/components/ContentEntries/Header/ButtonsCreate/styled.js.map +1 -1
  13. package/admin/components/ContentEntries/Header/Header.d.ts +2 -1
  14. package/admin/components/ContentEntries/Header/Header.js +5 -2
  15. package/admin/components/ContentEntries/Header/Header.js.map +1 -1
  16. package/admin/components/ContentEntries/Table/index.js +19 -29
  17. package/admin/components/ContentEntries/Table/index.js.map +1 -1
  18. package/admin/components/ContentEntryForm/Header/RevisionSelector/RevisionSelector.styles.d.ts +1 -1
  19. package/admin/config/contentEntries/list/Browser/BulkAction.d.ts +1 -1
  20. package/admin/config/contentEntries/list/Browser/BulkAction.js +2 -2
  21. package/admin/config/contentEntries/list/Browser/BulkAction.js.map +1 -1
  22. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/CreatedBy.js +2 -7
  23. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/CreatedBy.js.map +1 -1
  24. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/ModifiedBy.js +2 -7
  25. package/admin/plugins/fieldRenderers/ref/advanced/components/entry/ModifiedBy.js.map +1 -1
  26. package/admin/plugins/index.d.ts +2 -2
  27. package/admin/views/contentEntries/ContentEntry/RevisionListItem.js +2 -6
  28. package/admin/views/contentEntries/ContentEntry/RevisionListItem.js.map +1 -1
  29. package/admin/views/contentEntries/Table/Main.js +14 -2
  30. package/admin/views/contentEntries/Table/Main.js.map +1 -1
  31. package/admin/views/contentModels/ContentModelsDataList.js +2 -6
  32. package/admin/views/contentModels/ContentModelsDataList.js.map +1 -1
  33. package/allPlugins.d.ts +3 -3
  34. package/package.json +26 -27
@@ -3,7 +3,8 @@ interface Props {
3
3
  isSearch: boolean;
4
4
  onCreateEntry: (event: React.SyntheticEvent) => void;
5
5
  onCreateFolder: (event: React.SyntheticEvent) => void;
6
- canCreate: boolean;
6
+ canCreateContent: boolean;
7
+ canCreateFolder: boolean;
7
8
  }
8
9
  export declare const Empty: React.VFC<Props>;
9
10
  export {};
@@ -12,13 +12,15 @@ var _EmptyView = _interopRequireDefault(require("@webiny/app-admin/components/Em
12
12
  var _i18n = require("@webiny/app/i18n");
13
13
  var _Button = require("@webiny/ui/Button");
14
14
  var _styled = require("./styled");
15
+ var _Tooltip = require("@webiny/ui/Tooltip");
15
16
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
16
17
  var t = _i18n.i18n.ns("app-headless-cms/admin/components/content-entries/empty");
17
18
  var Empty = function Empty(_ref) {
18
19
  var isSearch = _ref.isSearch,
19
20
  onCreateEntry = _ref.onCreateEntry,
20
21
  onCreateFolder = _ref.onCreateFolder,
21
- canCreate = _ref.canCreate;
22
+ canCreateContent = _ref.canCreateContent,
23
+ canCreateFolder = _ref.canCreateFolder;
22
24
  if (isSearch) {
23
25
  return /*#__PURE__*/_react.default.createElement(_EmptyView.default, {
24
26
  icon: /*#__PURE__*/_react.default.createElement(_search.ReactComponent, null),
@@ -26,17 +28,33 @@ var Empty = function Empty(_ref) {
26
28
  action: null
27
29
  });
28
30
  }
31
+ var createEntryButton = /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
32
+ "data-testid": "new-entry-button",
33
+ onClick: onCreateEntry,
34
+ disabled: !canCreateContent
35
+ }, /*#__PURE__*/_react.default.createElement(_styled.Icon, null), " ", t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["New Entry"]))));
36
+ if (!canCreateContent) {
37
+ createEntryButton = /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
38
+ content: "Cannot create entry because you're not an owner.",
39
+ placement: "bottom"
40
+ }, createEntryButton);
41
+ }
42
+ var createFolderButton = /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
43
+ "data-testid": "new-folder-button",
44
+ onClick: onCreateFolder,
45
+ disabled: !canCreateFolder
46
+ }, /*#__PURE__*/_react.default.createElement(_styled.Icon, null), " ", t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["New Folder"]))));
47
+ if (!canCreateFolder) {
48
+ createFolderButton = /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
49
+ content: "Cannot create folder because you're not an owner.",
50
+ placement: "bottom"
51
+ }, createFolderButton);
52
+ }
29
53
  return /*#__PURE__*/_react.default.createElement(_EmptyView.default, {
30
- title: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Nothing to show here, {message} "])))({
31
- message: canCreate ? "navigate to a different folder or create a..." : "click on the left side to navigate to a different folder."
54
+ title: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Nothing to show here, {message} "])))({
55
+ message: canCreateContent ? "navigate to a different folder or create a..." : "click on the left side to navigate to a different folder."
32
56
  }),
33
- action: canCreate ? /*#__PURE__*/_react.default.createElement(_styled.Buttons, null, /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
34
- "data-testid": "new-folder-button",
35
- onClick: onCreateFolder
36
- }, /*#__PURE__*/_react.default.createElement(_styled.Icon, null), " ", t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["New Folder"])))), /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
37
- "data-testid": "new-entry-button",
38
- onClick: onCreateEntry
39
- }, /*#__PURE__*/_react.default.createElement(_styled.Icon, null), " ", t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["New Entry"]))))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
57
+ action: /*#__PURE__*/_react.default.createElement(_styled.Buttons, null, createFolderButton, "\xA0", createEntryButton)
40
58
  });
41
59
  };
42
60
  exports.Empty = Empty;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_search","_EmptyView","_i18n","_Button","_styled","_templateObject","_templateObject2","_templateObject3","_templateObject4","t","i18n","ns","Empty","_ref","isSearch","onCreateEntry","onCreateFolder","canCreate","default","createElement","icon","ReactComponent","title","_taggedTemplateLiteral2","action","message","Buttons","ButtonDefault","onClick","Icon","Fragment","exports"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as SearchIcon } from \"@material-design-icons/svg/outlined/search.svg\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ButtonDefault } from \"@webiny/ui/Button\";\nimport { Buttons, Icon } from \"./styled\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/content-entries/empty\");\n\ninterface Props {\n isSearch: boolean;\n onCreateEntry: (event: React.SyntheticEvent) => void;\n onCreateFolder: (event: React.SyntheticEvent) => void;\n canCreate: boolean;\n}\n\nexport const Empty: React.VFC<Props> = ({ isSearch, onCreateEntry, onCreateFolder, canCreate }) => {\n if (isSearch) {\n return <EmptyView icon={<SearchIcon />} title={t`No results found.`} action={null} />;\n }\n\n return (\n <EmptyView\n title={t`Nothing to show here, {message} `({\n message: canCreate\n ? \"navigate to a different folder or create a...\"\n : \"click on the left side to navigate to a different folder.\"\n })}\n action={\n canCreate ? (\n <Buttons>\n <ButtonDefault data-testid=\"new-folder-button\" onClick={onCreateFolder}>\n <Icon /> {t`New Folder`}\n </ButtonDefault>\n <ButtonDefault data-testid=\"new-entry-button\" onClick={onCreateEntry}>\n <Icon /> {t`New Entry`}\n </ButtonDefault>\n </Buttons>\n ) : (\n <></>\n )\n }\n />\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AAAyC,IAAAM,eAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA;AAEzC,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,yDAAyD,CAAC;AASrE,IAAMC,KAAuB,GAAG,SAA1BA,KAAuBA,CAAAC,IAAA,EAA+D;EAAA,IAAzDC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IAAEC,cAAc,GAAAH,IAAA,CAAdG,cAAc;IAAEC,SAAS,GAAAJ,IAAA,CAATI,SAAS;EACxF,IAAIH,QAAQ,EAAE;IACV,oBAAOjB,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAAClB,UAAA,CAAAiB,OAAS;MAACE,IAAI,eAAEvB,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAACnB,OAAA,CAAAqB,cAAU,MAAE,CAAE;MAACC,KAAK,EAAEb,CAAC,CAAAJ,eAAA,KAAAA,eAAA,OAAAkB,uBAAA,CAAAL,OAAA,0BAAoB;MAACM,MAAM,EAAE;IAAK,CAAE,CAAC;EACzF;EAEA,oBACI3B,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAAClB,UAAA,CAAAiB,OAAS;IACNI,KAAK,EAAEb,CAAC,CAAAH,gBAAA,KAAAA,gBAAA,OAAAiB,uBAAA,CAAAL,OAAA,0CAAmC;MACvCO,OAAO,EAAER,SAAS,GACZ,+CAA+C,GAC/C;IACV,CAAC,CAAE;IACHO,MAAM,EACFP,SAAS,gBACLpB,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAACf,OAAA,CAAAsB,OAAO,qBACJ7B,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAAChB,OAAA,CAAAwB,aAAa;MAAC,eAAY,mBAAmB;MAACC,OAAO,EAAEZ;IAAe,gBACnEnB,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAACf,OAAA,CAAAyB,IAAI,MAAE,CAAC,KAAC,EAACpB,CAAC,CAAAF,gBAAA,KAAAA,gBAAA,OAAAgB,uBAAA,CAAAL,OAAA,mBACA,CAAC,eAChBrB,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAAChB,OAAA,CAAAwB,aAAa;MAAC,eAAY,kBAAkB;MAACC,OAAO,EAAEb;IAAc,gBACjElB,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAACf,OAAA,CAAAyB,IAAI,MAAE,CAAC,KAAC,EAACpB,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAe,uBAAA,CAAAL,OAAA,kBACA,CACV,CAAC,gBAEVrB,MAAA,CAAAqB,OAAA,CAAAC,aAAA,CAAAtB,MAAA,CAAAqB,OAAA,CAAAY,QAAA,MAAI;EAEX,CACJ,CAAC;AAEV,CAAC;AAACC,OAAA,CAAAnB,KAAA,GAAAA,KAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_search","_EmptyView","_i18n","_Button","_styled","_Tooltip","_templateObject","_templateObject2","_templateObject3","_templateObject4","t","i18n","ns","Empty","_ref","isSearch","onCreateEntry","onCreateFolder","canCreateContent","canCreateFolder","default","createElement","icon","ReactComponent","title","_taggedTemplateLiteral2","action","createEntryButton","ButtonDefault","onClick","disabled","Icon","Tooltip","content","placement","createFolderButton","message","Buttons","exports"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as SearchIcon } from \"@material-design-icons/svg/outlined/search.svg\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ButtonDefault } from \"@webiny/ui/Button\";\nimport { Buttons, Icon } from \"./styled\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/content-entries/empty\");\n\ninterface Props {\n isSearch: boolean;\n onCreateEntry: (event: React.SyntheticEvent) => void;\n onCreateFolder: (event: React.SyntheticEvent) => void;\n canCreateContent: boolean;\n canCreateFolder: boolean;\n}\n\nexport const Empty: React.VFC<Props> = ({\n isSearch,\n onCreateEntry,\n onCreateFolder,\n canCreateContent,\n canCreateFolder\n}) => {\n if (isSearch) {\n return <EmptyView icon={<SearchIcon />} title={t`No results found.`} action={null} />;\n }\n\n let createEntryButton = (\n <ButtonDefault\n data-testid=\"new-entry-button\"\n onClick={onCreateEntry}\n disabled={!canCreateContent}\n >\n <Icon /> {t`New Entry`}\n </ButtonDefault>\n );\n\n if (!canCreateContent) {\n createEntryButton = (\n <Tooltip\n content={`Cannot create entry because you're not an owner.`}\n placement={\"bottom\"}\n >\n {createEntryButton}\n </Tooltip>\n );\n }\n\n let createFolderButton = (\n <ButtonDefault\n data-testid=\"new-folder-button\"\n onClick={onCreateFolder}\n disabled={!canCreateFolder}\n >\n <Icon /> {t`New Folder`}\n </ButtonDefault>\n );\n\n if (!canCreateFolder) {\n createFolderButton = (\n <Tooltip\n content={`Cannot create folder because you're not an owner.`}\n placement={\"bottom\"}\n >\n {createFolderButton}\n </Tooltip>\n );\n }\n\n return (\n <EmptyView\n title={t`Nothing to show here, {message} `({\n message: canCreateContent\n ? \"navigate to a different folder or create a...\"\n : \"click on the left side to navigate to a different folder.\"\n })}\n action={\n <Buttons>\n {createFolderButton}\n &nbsp;\n {createEntryButton}\n </Buttons>\n }\n />\n );\n};\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ var _add = require("@material-design-icons/svg/filled/add.svg");
10
10
  var Buttons = /*#__PURE__*/(0, _styled.default)("div", {
11
11
  label: "Buttons",
12
12
  target: "edlq3et0"
13
- })("> button{margin:0 8px;}");
13
+ })();
14
14
  exports.Buttons = Buttons;
15
15
  var Icon = /*#__PURE__*/(0, _styled.default)(_add.ReactComponent, {
16
16
  label: "Icon",
@@ -1 +1 @@
1
- {"version":3,"names":["_styled","_interopRequireDefault","require","_add","Buttons","styled","label","target","exports","Icon","Add"],"sources":["styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { ReactComponent as Add } from \"@material-design-icons/svg/filled/add.svg\";\n\nexport const Buttons = styled(\"div\")`\n > button {\n margin: 0 8px;\n }\n`;\n\nexport const Icon = styled(Add)`\n fill: var(--mdc-theme-primary);\n width: 18px;\n margin-right: 8px;\n`;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEO,IAAME,OAAO,oBAAGC,eAAM,EAAC,KAAK;EAAAC,KAAA;EAAAC,MAAA;AAAA,6BAIlC;AAACC,OAAA,CAAAJ,OAAA,GAAAA,OAAA;AAEK,IAAMK,IAAI,oBAAGJ,eAAM,EAACK,mBAAG;EAAAJ,KAAA;EAAAC,MAAA;AAAA,gEAI7B;AAACC,OAAA,CAAAC,IAAA,GAAAA,IAAA"}
1
+ {"version":3,"names":["_styled","_interopRequireDefault","require","_add","Buttons","styled","label","target","exports","Icon","Add"],"sources":["styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { ReactComponent as Add } from \"@material-design-icons/svg/filled/add.svg\";\n\nexport const Buttons = styled.div``;\n\nexport const Icon = styled(Add)`\n fill: var(--mdc-theme-primary);\n width: 18px;\n margin-right: 8px;\n`;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEO,IAAME,OAAO,oBAAGC,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,IAAM;AAACC,OAAA,CAAAJ,OAAA,GAAAA,OAAA;AAE7B,IAAMK,IAAI,oBAAGJ,eAAM,EAACK,mBAAG;EAAAJ,KAAA;EAAAC,MAAA;AAAA,gEAI7B;AAACC,OAAA,CAAAC,IAAA,GAAAA,IAAA"}
@@ -24,6 +24,7 @@ var Filters = function Filters() {
24
24
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
25
25
  fields = _useState2[0],
26
26
  setFields = _useState2[1];
27
+ var repository = (0, _appAco.useFilterRepository)("cms:".concat(model.modelId));
27
28
  (0, _react.useEffect)(function () {
28
29
  setFields(_FieldsMapper.FieldsMapper.toRaw(model));
29
30
  }, [model]);
@@ -55,7 +56,7 @@ var Filters = function Filters() {
55
56
  onChange: applyFilters
56
57
  }, /*#__PURE__*/_react.default.createElement(_appAco.AdvancedSearch, {
57
58
  fields: fields,
58
- namespace: model.modelId,
59
+ repository: repository,
59
60
  onApplyFilter: applyAdvancedSearch
60
61
  }));
61
62
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_appAdmin","_contentEntries","_hooks","_appAco","_hooks2","_FieldsMapper","Filters","_useContentEntryListC","useContentEntryListConfig","browser","list","useContentEntriesList","_useModel","useModel","model","_useState","useState","_useState2","_slicedToArray2","default","fields","setFields","useEffect","FieldsMapper","toRaw","applyFilters","data","Object","keys","length","convertedFilters","filtersToWhere","reduce","converter","setFilters","applyAdvancedSearch","GraphQLInputMapper","toGraphQL","createElement","filters","show","showingFilters","onChange","AdvancedSearch","namespace","modelId","onApplyFilter","exports"],"sources":["Filters.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { Filters as BaseFilters, FiltersOnSubmit } from \"@webiny/app-admin\";\nimport { useContentEntryListConfig } from \"~/admin/config/contentEntries\";\nimport { useContentEntriesList } from \"~/admin/views/contentEntries/hooks\";\nimport { AdvancedSearch, GraphQLInputMapper } from \"@webiny/app-aco\";\nimport { useModel } from \"~/admin/hooks\";\nimport { FieldsMapper } from \"./FieldsMapper\";\nimport { FieldRaw, FilterDTO } from \"@webiny/app-aco/components/AdvancedSearch/domain\";\n\nexport const Filters = () => {\n const { browser } = useContentEntryListConfig();\n const list = useContentEntriesList();\n const { model } = useModel();\n const [fields, setFields] = useState<FieldRaw[] | undefined>();\n\n useEffect(() => {\n setFields(FieldsMapper.toRaw(model));\n }, [model]);\n\n const applyFilters: FiltersOnSubmit = data => {\n if (!Object.keys(data).length) {\n return;\n }\n\n const convertedFilters = browser.filtersToWhere.reduce(\n (data, converter) => converter(data),\n data\n );\n\n list.setFilters(convertedFilters);\n };\n\n const applyAdvancedSearch = (data: FilterDTO | null) => {\n if (!data) {\n return list.setFilters({});\n }\n\n if (!Object.keys(data).length) {\n return;\n }\n\n list.setFilters(GraphQLInputMapper.toGraphQL(data));\n };\n\n if (!fields) {\n return null;\n }\n\n return (\n <BaseFilters\n filters={browser.filters}\n show={list.showingFilters}\n data={{}}\n onChange={applyFilters}\n >\n <AdvancedSearch\n fields={fields}\n namespace={model.modelId}\n onApplyFilter={applyAdvancedSearch}\n />\n </BaseFilters>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AAGO,IAAMO,OAAO,GAAG,SAAVA,OAAOA,CAAA,EAAS;EACzB,IAAAC,qBAAA,GAAoB,IAAAC,yCAAyB,EAAC,CAAC;IAAvCC,OAAO,GAAAF,qBAAA,CAAPE,OAAO;EACf,IAAMC,IAAI,GAAG,IAAAC,4BAAqB,EAAC,CAAC;EACpC,IAAAC,SAAA,GAAkB,IAAAC,gBAAQ,EAAC,CAAC;IAApBC,KAAK,GAAAF,SAAA,CAALE,KAAK;EACb,IAAAC,SAAA,GAA4B,IAAAC,eAAQ,EAAyB,CAAC;IAAAC,UAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,SAAA;IAAvDK,MAAM,GAAAH,UAAA;IAAEI,SAAS,GAAAJ,UAAA;EAExB,IAAAK,gBAAS,EAAC,YAAM;IACZD,SAAS,CAACE,0BAAY,CAACC,KAAK,CAACV,KAAK,CAAC,CAAC;EACxC,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,IAAMW,YAA6B,GAAG,SAAhCA,YAA6BA,CAAGC,IAAI,EAAI;IAC1C,IAAI,CAACC,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,MAAM,EAAE;MAC3B;IACJ;IAEA,IAAMC,gBAAgB,GAAGrB,OAAO,CAACsB,cAAc,CAACC,MAAM,CAClD,UAACN,IAAI,EAAEO,SAAS;MAAA,OAAKA,SAAS,CAACP,IAAI,CAAC;IAAA,GACpCA,IACJ,CAAC;IAEDhB,IAAI,CAACwB,UAAU,CAACJ,gBAAgB,CAAC;EACrC,CAAC;EAED,IAAMK,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIT,IAAsB,EAAK;IACpD,IAAI,CAACA,IAAI,EAAE;MACP,OAAOhB,IAAI,CAACwB,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B;IAEA,IAAI,CAACP,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,MAAM,EAAE;MAC3B;IACJ;IAEAnB,IAAI,CAACwB,UAAU,CAACE,0BAAkB,CAACC,SAAS,CAACX,IAAI,CAAC,CAAC;EACvD,CAAC;EAED,IAAI,CAACN,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EAEA,oBACIvB,MAAA,CAAAsB,OAAA,CAAAmB,aAAA,CAACtC,SAAA,CAAAM,OAAW;IACRiC,OAAO,EAAE9B,OAAO,CAAC8B,OAAQ;IACzBC,IAAI,EAAE9B,IAAI,CAAC+B,cAAe;IAC1Bf,IAAI,EAAE,CAAC,CAAE;IACTgB,QAAQ,EAAEjB;EAAa,gBAEvB5B,MAAA,CAAAsB,OAAA,CAAAmB,aAAA,CAACnC,OAAA,CAAAwC,cAAc;IACXvB,MAAM,EAAEA,MAAO;IACfwB,SAAS,EAAE9B,KAAK,CAAC+B,OAAQ;IACzBC,aAAa,EAAEX;EAAoB,CACtC,CACQ,CAAC;AAEtB,CAAC;AAACY,OAAA,CAAAzC,OAAA,GAAAA,OAAA"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_appAdmin","_contentEntries","_hooks","_appAco","_hooks2","_FieldsMapper","Filters","_useContentEntryListC","useContentEntryListConfig","browser","list","useContentEntriesList","_useModel","useModel","model","_useState","useState","_useState2","_slicedToArray2","default","fields","setFields","repository","useFilterRepository","concat","modelId","useEffect","FieldsMapper","toRaw","applyFilters","data","Object","keys","length","convertedFilters","filtersToWhere","reduce","converter","setFilters","applyAdvancedSearch","GraphQLInputMapper","toGraphQL","createElement","filters","show","showingFilters","onChange","AdvancedSearch","onApplyFilter","exports"],"sources":["Filters.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { Filters as BaseFilters, FiltersOnSubmit } from \"@webiny/app-admin\";\nimport { useContentEntryListConfig } from \"~/admin/config/contentEntries\";\nimport { useContentEntriesList } from \"~/admin/views/contentEntries/hooks\";\nimport { AdvancedSearch, GraphQLInputMapper, useFilterRepository } from \"@webiny/app-aco\";\nimport { useModel } from \"~/admin/hooks\";\nimport { FieldsMapper } from \"./FieldsMapper\";\nimport { FieldRaw, FilterDTO } from \"@webiny/app-aco/components/AdvancedSearch/domain\";\n\nexport const Filters = () => {\n const { browser } = useContentEntryListConfig();\n const list = useContentEntriesList();\n const { model } = useModel();\n const [fields, setFields] = useState<FieldRaw[] | undefined>();\n const repository = useFilterRepository(`cms:${model.modelId}`);\n\n useEffect(() => {\n setFields(FieldsMapper.toRaw(model));\n }, [model]);\n\n const applyFilters: FiltersOnSubmit = data => {\n if (!Object.keys(data).length) {\n return;\n }\n\n const convertedFilters = browser.filtersToWhere.reduce(\n (data, converter) => converter(data),\n data\n );\n\n list.setFilters(convertedFilters);\n };\n\n const applyAdvancedSearch = (data: FilterDTO | null) => {\n if (!data) {\n return list.setFilters({});\n }\n\n if (!Object.keys(data).length) {\n return;\n }\n\n list.setFilters(GraphQLInputMapper.toGraphQL(data));\n };\n\n if (!fields) {\n return null;\n }\n\n return (\n <BaseFilters\n filters={browser.filters}\n show={list.showingFilters}\n data={{}}\n onChange={applyFilters}\n >\n <AdvancedSearch\n fields={fields}\n repository={repository}\n onApplyFilter={applyAdvancedSearch}\n />\n </BaseFilters>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AAGO,IAAMO,OAAO,GAAG,SAAVA,OAAOA,CAAA,EAAS;EACzB,IAAAC,qBAAA,GAAoB,IAAAC,yCAAyB,EAAC,CAAC;IAAvCC,OAAO,GAAAF,qBAAA,CAAPE,OAAO;EACf,IAAMC,IAAI,GAAG,IAAAC,4BAAqB,EAAC,CAAC;EACpC,IAAAC,SAAA,GAAkB,IAAAC,gBAAQ,EAAC,CAAC;IAApBC,KAAK,GAAAF,SAAA,CAALE,KAAK;EACb,IAAAC,SAAA,GAA4B,IAAAC,eAAQ,EAAyB,CAAC;IAAAC,UAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,SAAA;IAAvDK,MAAM,GAAAH,UAAA;IAAEI,SAAS,GAAAJ,UAAA;EACxB,IAAMK,UAAU,GAAG,IAAAC,2BAAmB,SAAAC,MAAA,CAAQV,KAAK,CAACW,OAAO,CAAE,CAAC;EAE9D,IAAAC,gBAAS,EAAC,YAAM;IACZL,SAAS,CAACM,0BAAY,CAACC,KAAK,CAACd,KAAK,CAAC,CAAC;EACxC,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,IAAMe,YAA6B,GAAG,SAAhCA,YAA6BA,CAAGC,IAAI,EAAI;IAC1C,IAAI,CAACC,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,MAAM,EAAE;MAC3B;IACJ;IAEA,IAAMC,gBAAgB,GAAGzB,OAAO,CAAC0B,cAAc,CAACC,MAAM,CAClD,UAACN,IAAI,EAAEO,SAAS;MAAA,OAAKA,SAAS,CAACP,IAAI,CAAC;IAAA,GACpCA,IACJ,CAAC;IAEDpB,IAAI,CAAC4B,UAAU,CAACJ,gBAAgB,CAAC;EACrC,CAAC;EAED,IAAMK,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIT,IAAsB,EAAK;IACpD,IAAI,CAACA,IAAI,EAAE;MACP,OAAOpB,IAAI,CAAC4B,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B;IAEA,IAAI,CAACP,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,MAAM,EAAE;MAC3B;IACJ;IAEAvB,IAAI,CAAC4B,UAAU,CAACE,0BAAkB,CAACC,SAAS,CAACX,IAAI,CAAC,CAAC;EACvD,CAAC;EAED,IAAI,CAACV,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EAEA,oBACIvB,MAAA,CAAAsB,OAAA,CAAAuB,aAAA,CAAC1C,SAAA,CAAAM,OAAW;IACRqC,OAAO,EAAElC,OAAO,CAACkC,OAAQ;IACzBC,IAAI,EAAElC,IAAI,CAACmC,cAAe;IAC1Bf,IAAI,EAAE,CAAC,CAAE;IACTgB,QAAQ,EAAEjB;EAAa,gBAEvBhC,MAAA,CAAAsB,OAAA,CAAAuB,aAAA,CAACvC,OAAA,CAAA4C,cAAc;IACX3B,MAAM,EAAEA,MAAO;IACfE,UAAU,EAAEA,UAAW;IACvB0B,aAAa,EAAET;EAAoB,CACtC,CACQ,CAAC;AAEtB,CAAC;AAACU,OAAA,CAAA3C,OAAA,GAAAA,OAAA"}
@@ -2,6 +2,8 @@ import React from "react";
2
2
  interface Props {
3
3
  onCreateEntry: (event: React.SyntheticEvent) => void;
4
4
  onCreateFolder: (event: React.SyntheticEvent) => void;
5
+ canCreateFolder: boolean;
6
+ canCreateContent: boolean;
5
7
  }
6
8
  export declare const ButtonsCreate: React.VFC<Props>;
7
9
  export {};
@@ -11,25 +11,42 @@ var _add = require("@material-design-icons/svg/filled/add.svg");
11
11
  var _i18n = require("@webiny/app/i18n");
12
12
  var _Button = require("@webiny/ui/Button");
13
13
  var _styled = require("./styled");
14
+ var _Tooltip = require("@webiny/ui/Tooltip");
14
15
  var _templateObject, _templateObject2;
15
16
  var t = _i18n.i18n.ns("app-headless-cms/admin/components/content-entries/header/buttons/create");
16
17
  var ButtonsCreate = function ButtonsCreate(_ref) {
17
18
  var onCreateFolder = _ref.onCreateFolder,
18
- onCreateEntry = _ref.onCreateEntry;
19
- return /*#__PURE__*/_react.default.createElement(_styled.Container, null, /*#__PURE__*/_react.default.createElement(_Button.ButtonSecondary, {
19
+ onCreateEntry = _ref.onCreateEntry,
20
+ canCreateContent = _ref.canCreateContent,
21
+ canCreateFolder = _ref.canCreateFolder;
22
+ var newFolderButton = /*#__PURE__*/_react.default.createElement(_Button.ButtonSecondary, {
20
23
  "data-testid": "new-folder-button",
21
24
  onClick: onCreateFolder,
22
- small: true
25
+ small: true,
26
+ disabled: !canCreateFolder
23
27
  }, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
24
28
  icon: /*#__PURE__*/_react.default.createElement(_add.ReactComponent, null)
25
- }), t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["New Folder"])))), /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
29
+ }), t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["New Folder"]))));
30
+ if (!canCreateFolder) {
31
+ newFolderButton = /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
32
+ content: "Cannot create folder because you're not an owner."
33
+ }, newFolderButton);
34
+ }
35
+ var newEntryButton = /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
26
36
  "data-testid": "new-entry-button",
27
37
  onClick: onCreateEntry,
28
38
  flat: true,
29
- small: true
39
+ small: true,
40
+ disabled: !canCreateContent
30
41
  }, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
31
42
  icon: /*#__PURE__*/_react.default.createElement(_add.ReactComponent, null)
32
- }), t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["New Entry"])))));
43
+ }), t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["New Entry"]))));
44
+ if (!canCreateContent) {
45
+ newEntryButton = /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
46
+ content: "Cannot create entry because you're not an owner."
47
+ }, newEntryButton);
48
+ }
49
+ return /*#__PURE__*/_react.default.createElement(_styled.Container, null, newFolderButton, "\xA0", newEntryButton);
33
50
  };
34
51
  exports.ButtonsCreate = ButtonsCreate;
35
52
 
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_add","_i18n","_Button","_styled","_templateObject","_templateObject2","t","i18n","ns","ButtonsCreate","_ref","onCreateFolder","onCreateEntry","default","createElement","Container","ButtonSecondary","onClick","small","ButtonIcon","icon","ReactComponent","_taggedTemplateLiteral2","ButtonPrimary","flat","exports"],"sources":["ButtonsCreate.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as Add } from \"@material-design-icons/svg/filled/add.svg\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ButtonIcon, ButtonPrimary, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Container } from \"./styled\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/content-entries/header/buttons/create\");\n\ninterface Props {\n onCreateEntry: (event: React.SyntheticEvent) => void;\n onCreateFolder: (event: React.SyntheticEvent) => void;\n}\n\nexport const ButtonsCreate: React.VFC<Props> = ({ onCreateFolder, onCreateEntry }) => {\n return (\n <Container>\n <ButtonSecondary data-testid=\"new-folder-button\" onClick={onCreateFolder} small={true}>\n <ButtonIcon icon={<Add />} />\n {t`New Folder`}\n </ButtonSecondary>\n <ButtonPrimary\n data-testid=\"new-entry-button\"\n onClick={onCreateEntry}\n flat={true}\n small={true}\n >\n <ButtonIcon icon={<Add />} />\n {t`New Entry`}\n </ButtonPrimary>\n </Container>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAAqC,IAAAK,eAAA,EAAAC,gBAAA;AAErC,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,yEAAyE,CAAC;AAOrF,IAAMC,aAA+B,GAAG,SAAlCA,aAA+BA,CAAAC,IAAA,EAA0C;EAAA,IAApCC,cAAc,GAAAD,IAAA,CAAdC,cAAc;IAAEC,aAAa,GAAAF,IAAA,CAAbE,aAAa;EAC3E,oBACIf,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACX,OAAA,CAAAY,SAAS,qBACNlB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACZ,OAAA,CAAAc,eAAe;IAAC,eAAY,mBAAmB;IAACC,OAAO,EAAEN,cAAe;IAACO,KAAK,EAAE;EAAK,gBAClFrB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACZ,OAAA,CAAAiB,UAAU;IAACC,IAAI,eAAEvB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,IAAA,CAAAqB,cAAG,MAAE;EAAE,CAAE,CAAC,EAC5Bf,CAAC,CAAAF,eAAA,KAAAA,eAAA,OAAAkB,uBAAA,CAAAT,OAAA,mBACW,CAAC,eAClBhB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACZ,OAAA,CAAAqB,aAAa;IACV,eAAY,kBAAkB;IAC9BN,OAAO,EAAEL,aAAc;IACvBY,IAAI,EAAE,IAAK;IACXN,KAAK,EAAE;EAAK,gBAEZrB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACZ,OAAA,CAAAiB,UAAU;IAACC,IAAI,eAAEvB,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAACd,IAAA,CAAAqB,cAAG,MAAE;EAAE,CAAE,CAAC,EAC5Bf,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAiB,uBAAA,CAAAT,OAAA,kBACS,CACR,CAAC;AAEpB,CAAC;AAACY,OAAA,CAAAhB,aAAA,GAAAA,aAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_add","_i18n","_Button","_styled","_Tooltip","_templateObject","_templateObject2","t","i18n","ns","ButtonsCreate","_ref","onCreateFolder","onCreateEntry","canCreateContent","canCreateFolder","newFolderButton","default","createElement","ButtonSecondary","onClick","small","disabled","ButtonIcon","icon","ReactComponent","_taggedTemplateLiteral2","Tooltip","content","newEntryButton","ButtonPrimary","flat","Container","exports"],"sources":["ButtonsCreate.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as Add } from \"@material-design-icons/svg/filled/add.svg\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ButtonIcon, ButtonPrimary, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Container } from \"./styled\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/components/content-entries/header/buttons/create\");\n\ninterface Props {\n onCreateEntry: (event: React.SyntheticEvent) => void;\n onCreateFolder: (event: React.SyntheticEvent) => void;\n canCreateFolder: boolean;\n canCreateContent: boolean;\n}\n\nexport const ButtonsCreate: React.VFC<Props> = ({\n onCreateFolder,\n onCreateEntry,\n canCreateContent,\n canCreateFolder\n}) => {\n let newFolderButton = (\n <ButtonSecondary\n data-testid=\"new-folder-button\"\n onClick={onCreateFolder}\n small={true}\n disabled={!canCreateFolder}\n >\n <ButtonIcon icon={<Add />} />\n {t`New Folder`}\n </ButtonSecondary>\n );\n\n if (!canCreateFolder) {\n newFolderButton = (\n <Tooltip content={`Cannot create folder because you're not an owner.`}>\n {newFolderButton}\n </Tooltip>\n );\n }\n\n let newEntryButton = (\n <ButtonPrimary\n data-testid=\"new-entry-button\"\n onClick={onCreateEntry}\n flat={true}\n small={true}\n disabled={!canCreateContent}\n >\n <ButtonIcon icon={<Add />} />\n {t`New Entry`}\n </ButtonPrimary>\n );\n\n if (!canCreateContent) {\n newEntryButton = (\n <Tooltip content={`Cannot create entry because you're not an owner.`}>\n {newEntryButton}\n </Tooltip>\n );\n }\n\n return (\n <Container>\n {newFolderButton}\n &nbsp;\n {newEntryButton}\n </Container>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAA6C,IAAAM,eAAA,EAAAC,gBAAA;AAE7C,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,yEAAyE,CAAC;AASrF,IAAMC,aAA+B,GAAG,SAAlCA,aAA+BA,CAAAC,IAAA,EAKtC;EAAA,IAJFC,cAAc,GAAAD,IAAA,CAAdC,cAAc;IACdC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,gBAAgB,GAAAH,IAAA,CAAhBG,gBAAgB;IAChBC,eAAe,GAAAJ,IAAA,CAAfI,eAAe;EAEf,IAAIC,eAAe,gBACfnB,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAAChB,OAAA,CAAAiB,eAAe;IACZ,eAAY,mBAAmB;IAC/BC,OAAO,EAAER,cAAe;IACxBS,KAAK,EAAE,IAAK;IACZC,QAAQ,EAAE,CAACP;EAAgB,gBAE3BlB,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAAChB,OAAA,CAAAqB,UAAU;IAACC,IAAI,eAAE3B,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAAClB,IAAA,CAAAyB,cAAG,MAAE;EAAE,CAAE,CAAC,EAC5BlB,CAAC,CAAAF,eAAA,KAAAA,eAAA,OAAAqB,uBAAA,CAAAT,OAAA,mBACW,CACpB;EAED,IAAI,CAACF,eAAe,EAAE;IAClBC,eAAe,gBACXnB,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACd,QAAA,CAAAuB,OAAO;MAACC,OAAO;IAAsD,GACjEZ,eACI,CACZ;EACL;EAEA,IAAIa,cAAc,gBACdhC,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAAChB,OAAA,CAAA4B,aAAa;IACV,eAAY,kBAAkB;IAC9BV,OAAO,EAAEP,aAAc;IACvBkB,IAAI,EAAE,IAAK;IACXV,KAAK,EAAE,IAAK;IACZC,QAAQ,EAAE,CAACR;EAAiB,gBAE5BjB,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAAChB,OAAA,CAAAqB,UAAU;IAACC,IAAI,eAAE3B,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAAClB,IAAA,CAAAyB,cAAG,MAAE;EAAE,CAAE,CAAC,EAC5BlB,CAAC,CAAAD,gBAAA,KAAAA,gBAAA,OAAAoB,uBAAA,CAAAT,OAAA,kBACS,CAClB;EAED,IAAI,CAACH,gBAAgB,EAAE;IACnBe,cAAc,gBACVhC,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACd,QAAA,CAAAuB,OAAO;MAACC,OAAO;IAAqD,GAChEC,cACI,CACZ;EACL;EAEA,oBACIhC,MAAA,CAAAoB,OAAA,CAAAC,aAAA,CAACf,OAAA,CAAA6B,SAAS,QACLhB,eAAe,EAAC,MAEjB,EAACa,cACM,CAAC;AAEpB,CAAC;AAACI,OAAA,CAAAvB,aAAA,GAAAA,aAAA"}
@@ -9,7 +9,7 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
9
  var Container = /*#__PURE__*/(0, _styled.default)("div", {
10
10
  label: "Container",
11
11
  target: "ebq50ak0"
12
- })("display:flex;justify-content:flex-end;align-items:center;> button{margin-left:8px;}");
12
+ })("display:flex;justify-content:flex-end;align-items:center;");
13
13
  exports.Container = Container;
14
14
 
15
15
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_styled","_interopRequireDefault","require","Container","styled","label","target","exports"],"sources":["styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\n\nexport const Container = styled(\"div\")`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n\n > button {\n margin-left: 8px;\n }\n`;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,IAAMC,SAAS,oBAAGC,eAAM,EAAC,KAAK;EAAAC,KAAA;EAAAC,MAAA;AAAA,yFAQpC;AAACC,OAAA,CAAAJ,SAAA,GAAAA,SAAA"}
1
+ {"version":3,"names":["_styled","_interopRequireDefault","require","Container","styled","label","target","exports"],"sources":["styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\n\nexport const Container = styled(\"div\")`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n`;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,IAAMC,SAAS,oBAAGC,eAAM,EAAC,KAAK;EAAAC,KAAA;EAAAC,MAAA;AAAA,+DAIpC;AAACC,OAAA,CAAAJ,SAAA,GAAAA,SAAA"}
@@ -1,7 +1,8 @@
1
1
  import React from "react";
2
2
  interface Props {
3
3
  title?: string;
4
- canCreate: boolean;
4
+ canCreateFolder: boolean;
5
+ canCreateContent: boolean;
5
6
  onCreateEntry: (event?: React.SyntheticEvent) => void;
6
7
  onCreateFolder: (event?: React.SyntheticEvent) => void;
7
8
  searchValue: string;
@@ -13,7 +13,8 @@ var _ButtonsCreate = require("./ButtonsCreate");
13
13
  var _Title = require("./Title");
14
14
  var _styled = require("./styled");
15
15
  var Header = function Header(props) {
16
- var canCreate = props.canCreate,
16
+ var canCreateFolder = props.canCreateFolder,
17
+ canCreateContent = props.canCreateContent,
17
18
  onCreateEntry = props.onCreateEntry,
18
19
  onCreateFolder = props.onCreateFolder,
19
20
  title = props.title,
@@ -33,7 +34,9 @@ var Header = function Header(props) {
33
34
  }, /*#__PURE__*/_react.default.createElement(_styled.WrapperActions, null, /*#__PURE__*/_react.default.createElement(_appAco.Search, {
34
35
  value: searchValue,
35
36
  onChange: onSearchChange
36
- }), /*#__PURE__*/_react.default.createElement(_ButtonFilters.ButtonFilters, null), canCreate && /*#__PURE__*/_react.default.createElement(_ButtonsCreate.ButtonsCreate, {
37
+ }), /*#__PURE__*/_react.default.createElement(_ButtonFilters.ButtonFilters, null), /*#__PURE__*/_react.default.createElement(_ButtonsCreate.ButtonsCreate, {
38
+ canCreateFolder: canCreateFolder,
39
+ canCreateContent: canCreateContent,
37
40
  onCreateFolder: onCreateFolder,
38
41
  onCreateEntry: onCreateEntry
39
42
  })))));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_appAco","_Grid","_ButtonFilters","_ButtonsCreate","_Title","_styled","Header","props","canCreate","onCreateEntry","onCreateFolder","title","searchValue","onSearchChange","default","createElement","Container","Grid","align","style","padding","Cell","span","Title","WrapperActions","Search","value","onChange","ButtonFilters","ButtonsCreate","exports"],"sources":["Header.tsx"],"sourcesContent":["import React from \"react\";\nimport { Search } from \"@webiny/app-aco\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\n\nimport { ButtonFilters } from \"./ButtonFilters\";\nimport { ButtonsCreate } from \"./ButtonsCreate\";\nimport { Title } from \"./Title\";\n\nimport { Container, WrapperActions } from \"./styled\";\n\ninterface Props {\n title?: string;\n canCreate: boolean;\n onCreateEntry: (event?: React.SyntheticEvent) => void;\n onCreateFolder: (event?: React.SyntheticEvent) => void;\n searchValue: string;\n onSearchChange: (value: string) => void;\n}\n\nexport const Header: React.VFC<Props> = props => {\n const { canCreate, onCreateEntry, onCreateFolder, title, searchValue, onSearchChange } = props;\n\n return (\n <Container>\n <Grid align={\"right\"} style={{ padding: 0 }}>\n <Cell span={4}>\n <Title title={title} />\n </Cell>\n <Cell span={8}>\n <WrapperActions>\n <Search value={searchValue} onChange={onSearchChange} />\n <ButtonFilters />\n {canCreate && (\n <ButtonsCreate\n onCreateFolder={onCreateFolder}\n onCreateEntry={onCreateEntry}\n />\n )}\n </WrapperActions>\n </Cell>\n </Grid>\n </Container>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AAWO,IAAMO,MAAwB,GAAG,SAA3BA,MAAwBA,CAAGC,KAAK,EAAI;EAC7C,IAAQC,SAAS,GAAwED,KAAK,CAAtFC,SAAS;IAAEC,aAAa,GAAyDF,KAAK,CAA3EE,aAAa;IAAEC,cAAc,GAAyCH,KAAK,CAA5DG,cAAc;IAAEC,KAAK,GAAkCJ,KAAK,CAA5CI,KAAK;IAAEC,WAAW,GAAqBL,KAAK,CAArCK,WAAW;IAAEC,cAAc,GAAKN,KAAK,CAAxBM,cAAc;EAEpF,oBACIhB,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACV,OAAA,CAAAW,SAAS,qBACNnB,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACd,KAAA,CAAAgB,IAAI;IAACC,KAAK,EAAE,OAAQ;IAACC,KAAK,EAAE;MAAEC,OAAO,EAAE;IAAE;EAAE,gBACxCvB,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACd,KAAA,CAAAoB,IAAI;IAACC,IAAI,EAAE;EAAE,gBACVzB,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACX,MAAA,CAAAmB,KAAK;IAACZ,KAAK,EAAEA;EAAM,CAAE,CACpB,CAAC,eACPd,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACd,KAAA,CAAAoB,IAAI;IAACC,IAAI,EAAE;EAAE,gBACVzB,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACV,OAAA,CAAAmB,cAAc,qBACX3B,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACf,OAAA,CAAAyB,MAAM;IAACC,KAAK,EAAEd,WAAY;IAACe,QAAQ,EAAEd;EAAe,CAAE,CAAC,eACxDhB,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACb,cAAA,CAAA0B,aAAa,MAAE,CAAC,EAChBpB,SAAS,iBACNX,MAAA,CAAAiB,OAAA,CAAAC,aAAA,CAACZ,cAAA,CAAA0B,aAAa;IACVnB,cAAc,EAAEA,cAAe;IAC/BD,aAAa,EAAEA;EAAc,CAChC,CAEO,CACd,CACJ,CACC,CAAC;AAEpB,CAAC;AAACqB,OAAA,CAAAxB,MAAA,GAAAA,MAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_appAco","_Grid","_ButtonFilters","_ButtonsCreate","_Title","_styled","Header","props","canCreateFolder","canCreateContent","onCreateEntry","onCreateFolder","title","searchValue","onSearchChange","default","createElement","Container","Grid","align","style","padding","Cell","span","Title","WrapperActions","Search","value","onChange","ButtonFilters","ButtonsCreate","exports"],"sources":["Header.tsx"],"sourcesContent":["import React from \"react\";\nimport { Search } from \"@webiny/app-aco\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\n\nimport { ButtonFilters } from \"./ButtonFilters\";\nimport { ButtonsCreate } from \"./ButtonsCreate\";\nimport { Title } from \"./Title\";\n\nimport { Container, WrapperActions } from \"./styled\";\n\ninterface Props {\n title?: string;\n canCreateFolder: boolean;\n canCreateContent: boolean;\n onCreateEntry: (event?: React.SyntheticEvent) => void;\n onCreateFolder: (event?: React.SyntheticEvent) => void;\n searchValue: string;\n onSearchChange: (value: string) => void;\n}\n\nexport const Header: React.VFC<Props> = props => {\n const {\n canCreateFolder,\n canCreateContent,\n onCreateEntry,\n onCreateFolder,\n title,\n searchValue,\n onSearchChange\n } = props;\n\n return (\n <Container>\n <Grid align={\"right\"} style={{ padding: 0 }}>\n <Cell span={4}>\n <Title title={title} />\n </Cell>\n <Cell span={8}>\n <WrapperActions>\n <Search value={searchValue} onChange={onSearchChange} />\n <ButtonFilters />\n <ButtonsCreate\n canCreateFolder={canCreateFolder}\n canCreateContent={canCreateContent}\n onCreateFolder={onCreateFolder}\n onCreateEntry={onCreateEntry}\n />\n </WrapperActions>\n </Cell>\n </Grid>\n </Container>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AAYO,IAAMO,MAAwB,GAAG,SAA3BA,MAAwBA,CAAGC,KAAK,EAAI;EAC7C,IACIC,eAAe,GAOfD,KAAK,CAPLC,eAAe;IACfC,gBAAgB,GAMhBF,KAAK,CANLE,gBAAgB;IAChBC,aAAa,GAKbH,KAAK,CALLG,aAAa;IACbC,cAAc,GAIdJ,KAAK,CAJLI,cAAc;IACdC,KAAK,GAGLL,KAAK,CAHLK,KAAK;IACLC,WAAW,GAEXN,KAAK,CAFLM,WAAW;IACXC,cAAc,GACdP,KAAK,CADLO,cAAc;EAGlB,oBACIjB,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAACX,OAAA,CAAAY,SAAS,qBACNpB,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAACf,KAAA,CAAAiB,IAAI;IAACC,KAAK,EAAE,OAAQ;IAACC,KAAK,EAAE;MAAEC,OAAO,EAAE;IAAE;EAAE,gBACxCxB,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAACf,KAAA,CAAAqB,IAAI;IAACC,IAAI,EAAE;EAAE,gBACV1B,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAACZ,MAAA,CAAAoB,KAAK;IAACZ,KAAK,EAAEA;EAAM,CAAE,CACpB,CAAC,eACPf,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAACf,KAAA,CAAAqB,IAAI;IAACC,IAAI,EAAE;EAAE,gBACV1B,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAACX,OAAA,CAAAoB,cAAc,qBACX5B,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,OAAA,CAAA0B,MAAM;IAACC,KAAK,EAAEd,WAAY;IAACe,QAAQ,EAAEd;EAAe,CAAE,CAAC,eACxDjB,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAACd,cAAA,CAAA2B,aAAa,MAAE,CAAC,eACjBhC,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAACb,cAAA,CAAA2B,aAAa;IACVtB,eAAe,EAAEA,eAAgB;IACjCC,gBAAgB,EAAEA,gBAAiB;IACnCE,cAAc,EAAEA,cAAe;IAC/BD,aAAa,EAAEA;EAAc,CAChC,CACW,CACd,CACJ,CACC,CAAC;AAEpB,CAAC;AAACqB,OAAA,CAAAzB,MAAA,GAAAA,MAAA"}
@@ -14,7 +14,7 @@ var _appAco = require("@webiny/app-aco");
14
14
  var _Button = require("@webiny/ui/Button");
15
15
  var _DataTable = require("@webiny/ui/DataTable");
16
16
  var _Menu = require("@webiny/ui/Menu");
17
- var _timeagoReact = _interopRequireDefault(require("timeago-react"));
17
+ var _TimeAgo = require("@webiny/ui/TimeAgo");
18
18
  var _Name = require("./Row/Name");
19
19
  var _FolderActionDelete = require("./Row/Folder/FolderActionDelete");
20
20
  var _FolderActionEdit = require("./Row/Folder/FolderActionEdit");
@@ -28,11 +28,6 @@ var _reactRouter = require("@webiny/react-router");
28
28
  var _hooks = require("../../../hooks");
29
29
  var _statusLabels = require("../../../constants/statusLabels");
30
30
  var _acoRecordTransform = require("../../../../utils/acoRecordTransform");
31
- /**
32
- * Package timeago-react does not have types.
33
- */
34
- // @ts-ignore
35
-
36
31
  var Table = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
37
32
  var _useNavigateFolder = (0, _appAco.useNavigateFolder)(),
38
33
  currentFolderId = _useNavigateFolder.currentFolderId;
@@ -81,9 +76,9 @@ var Table = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
81
76
  };
82
77
  }, [canEdit, model.modelId, currentFolderId]);
83
78
  var columns = (0, _react.useMemo)(function () {
84
- var _ref4;
79
+ var _ref3;
85
80
  var titleColumnId = model.titleFieldId || "id";
86
- return _ref4 = {}, (0, _defineProperty2.default)(_ref4, titleColumnId, {
81
+ return _ref3 = {}, (0, _defineProperty2.default)(_ref3, titleColumnId, {
87
82
  header: "Name",
88
83
  className: "cms-aco-list-title",
89
84
  cell: function cell(record) {
@@ -99,42 +94,32 @@ var Table = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
99
94
  },
100
95
  enableSorting: true,
101
96
  size: 400
102
- }), (0, _defineProperty2.default)(_ref4, "createdOn", {
103
- header: "Created",
104
- className: "cms-aco-list-createdOn",
105
- cell: function cell(_ref) {
106
- var createdOn = _ref.createdOn;
107
- return /*#__PURE__*/_react.default.createElement(_timeagoReact.default, {
108
- datetime: createdOn
109
- });
110
- },
111
- enableSorting: true
112
- }), (0, _defineProperty2.default)(_ref4, "createdBy", {
97
+ }), (0, _defineProperty2.default)(_ref3, "createdBy", {
113
98
  header: "Author",
114
99
  className: "cms-aco-list-createdBy"
115
- }), (0, _defineProperty2.default)(_ref4, "savedOn", {
100
+ }), (0, _defineProperty2.default)(_ref3, "savedOn", {
116
101
  header: "Modified",
117
102
  className: "cms-aco-list-savedOn",
118
- cell: function cell(_ref2) {
119
- var savedOn = _ref2.savedOn;
120
- return /*#__PURE__*/_react.default.createElement(_timeagoReact.default, {
103
+ cell: function cell(_ref) {
104
+ var savedOn = _ref.savedOn;
105
+ return /*#__PURE__*/_react.default.createElement(_TimeAgo.TimeAgo, {
121
106
  datetime: savedOn
122
107
  });
123
108
  },
124
109
  enableSorting: true
125
- }), (0, _defineProperty2.default)(_ref4, "status", {
110
+ }), (0, _defineProperty2.default)(_ref3, "status", {
126
111
  header: "Status",
127
112
  className: "cms-aco-list-status",
128
- cell: function cell(_ref3) {
129
- var status = _ref3.status,
130
- version = _ref3.version;
113
+ cell: function cell(_ref2) {
114
+ var status = _ref2.status,
115
+ version = _ref2.version;
131
116
  if (status && version) {
132
117
  return "".concat(_statusLabels.statuses[status], " (v").concat(version, ")");
133
118
  } else {
134
119
  return "-";
135
120
  }
136
121
  }
137
- }), (0, _defineProperty2.default)(_ref4, "original", {
122
+ }), (0, _defineProperty2.default)(_ref3, "original", {
138
123
  header: "",
139
124
  meta: {
140
125
  alignEnd: true
@@ -160,6 +145,11 @@ var Table = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
160
145
  record: record
161
146
  }));
162
147
  }
148
+
149
+ // If the user cannot manage folder structure, no need to show the menu.
150
+ if (!record.original.canManageStructure) {
151
+ return null;
152
+ }
163
153
  return /*#__PURE__*/_react.default.createElement(_Menu.Menu, {
164
154
  handle: /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
165
155
  icon: /*#__PURE__*/_react.default.createElement(_more_vert.ReactComponent, null)
@@ -181,7 +171,7 @@ var Table = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
181
171
  }
182
172
  }));
183
173
  }
184
- }), _ref4;
174
+ }), _ref3;
185
175
  }, []);
186
176
  return /*#__PURE__*/_react.default.createElement("div", {
187
177
  ref: ref
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_more_vert","_appAco","_Button","_DataTable","_Menu","_timeagoReact","_interopRequireDefault","_Name","_FolderActionDelete","_FolderActionEdit","_FolderActionManagePermissions","_RecordActionDelete","_RecordActionEdit","_RecordActionMove","_RecordActionPublish","_styled","_reactRouter","_hooks","_statusLabels","_acoRecordTransform","Table","forwardRef","props","ref","_useNavigateFolder","useNavigateFolder","currentFolderId","folders","records","loading","sorting","onSortingChange","selectedRows","onSelectRow","_useModel","useModel","model","_useRouter","useRouter","history","_usePermission","usePermission","baseCanEdit","canEdit","_useState","useState","_useState2","_slicedToArray2","default","selectedFolder","setSelectedFolder","_useState3","_useState4","updateDialogOpen","setUpdateDialogOpen","_useState5","_useState6","deleteDialogOpen","setDeleteDialogOpen","_useState7","_useState8","managePermissionsDialogOpen","setManagePermissionsDialogOpen","data","useMemo","concat","useCallback","entry","createEditEntry","undefined","folderPath","encodeURIComponent","push","modelId","id","columns","_ref4","titleColumnId","titleFieldId","_defineProperty2","header","className","cell","record","isRecordEntry","createElement","EntryName","onClick","original","FolderName","enableSorting","size","_ref","createdOn","datetime","_ref2","savedOn","_ref3","status","version","statusLabels","meta","alignEnd","enableResizing","Menu","menuStyles","handle","IconButton","icon","ReactComponent","RecordActionEdit","RecordActionPublish","RecordActionMove","RecordActionDelete","FolderActionEdit","canManagePermissions","FolderActionManagePermissions","FolderActionDelete","DataTable","isRowSelectable","row","$selectable","loadingInitial","stickyRows","initialSorting","desc","filter","find","Fragment","FolderDialogUpdate","folder","open","onClose","FolderDialogManagePermissions","FolderDialogDelete","exports","displayName"],"sources":["index.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ReactComponent as More } from \"@material-design-icons/svg/filled/more_vert.svg\";\nimport {\n FolderDialogDelete,\n FolderDialogUpdate,\n FolderDialogManagePermissions,\n useNavigateFolder\n} from \"@webiny/app-aco\";\nimport { FolderItem } from \"@webiny/app-aco/types\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Columns, DataTable, OnSortingChange, Sorting } from \"@webiny/ui/DataTable\";\nimport { Menu } from \"@webiny/ui/Menu\";\n/**\n * Package timeago-react does not have types.\n */\n// @ts-ignore\nimport TimeAgo from \"timeago-react\";\nimport { EntryName, FolderName } from \"./Row/Name\";\nimport { FolderActionDelete } from \"./Row/Folder/FolderActionDelete\";\nimport { FolderActionEdit } from \"./Row/Folder/FolderActionEdit\";\nimport { FolderActionManagePermissions } from \"./Row/Folder/FolderActionManagePermissions\";\nimport { RecordActionDelete } from \"./Row/Record/RecordActionDelete\";\nimport { RecordActionEdit } from \"./Row/Record/RecordActionEdit\";\nimport { RecordActionMove } from \"./Row/Record/RecordActionMove\";\nimport { RecordActionPublish } from \"./Row/Record/RecordActionPublish\";\nimport { menuStyles } from \"./styled\";\nimport { Entry, FolderEntry, RecordEntry } from \"./types\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useModel, usePermission } from \"~/admin/hooks\";\nimport { CreatableItem } from \"~/admin/hooks/usePermission\";\nimport { statuses as statusLabels } from \"~/admin/constants/statusLabels\";\nimport { isRecordEntry } from \"~/utils/acoRecordTransform\";\nimport { CmsContentEntry } from \"@webiny/app-headless-cms-common/types\";\n\nexport interface TableProps {\n folders: FolderEntry[];\n loading?: boolean;\n onSelectRow: (rows: Entry[] | []) => void;\n onSortingChange: OnSortingChange;\n records: RecordEntry[];\n selectedRows: CmsContentEntry[];\n sorting: Sorting;\n}\n\nexport const Table = forwardRef<HTMLDivElement, TableProps>((props, ref) => {\n const { currentFolderId } = useNavigateFolder();\n const { folders, records, loading, sorting, onSortingChange, selectedRows, onSelectRow } =\n props;\n const { model } = useModel();\n\n const { history } = useRouter();\n const { canEdit: baseCanEdit } = usePermission();\n\n const [selectedFolder, setSelectedFolder] = useState<FolderItem>();\n const [updateDialogOpen, setUpdateDialogOpen] = useState<boolean>(false);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState<boolean>(false);\n const [managePermissionsDialogOpen, setManagePermissionsDialogOpen] = useState<boolean>(false);\n\n const data = useMemo<Entry[]>(() => {\n return (folders as Entry[]).concat(records as Entry[]);\n }, [folders, records]);\n\n const canEdit = useCallback(\n (entry: CreatableItem) => {\n return baseCanEdit(entry, \"cms.contentEntry\");\n },\n [baseCanEdit]\n );\n const createEditEntry = useCallback(\n (entry: CreatableItem & Pick<Entry, \"id\">) => {\n if (!canEdit(entry)) {\n return undefined;\n }\n return () => {\n const folderPath = currentFolderId\n ? `&folderId=${encodeURIComponent(currentFolderId)}`\n : \"\";\n history.push(\n `/cms/content-entries/${model.modelId}?id=${encodeURIComponent(\n entry.id\n )}${folderPath}`\n );\n };\n },\n [canEdit, model.modelId, currentFolderId]\n );\n\n const columns: Columns<Entry> = useMemo(() => {\n const titleColumnId = model.titleFieldId || \"id\";\n\n return {\n [titleColumnId]: {\n header: \"Name\",\n className: \"cms-aco-list-title\",\n cell: (record: Entry) => {\n if (isRecordEntry(record)) {\n return (\n <EntryName record={record} onClick={createEditEntry(record.original)} />\n );\n }\n return <FolderName record={record} />;\n },\n enableSorting: true,\n size: 400\n },\n createdOn: {\n header: \"Created\",\n className: \"cms-aco-list-createdOn\",\n cell: ({ createdOn }: Entry) => <TimeAgo datetime={createdOn} />,\n enableSorting: true\n },\n createdBy: {\n header: \"Author\",\n className: \"cms-aco-list-createdBy\"\n },\n savedOn: {\n header: \"Modified\",\n className: \"cms-aco-list-savedOn\",\n cell: ({ savedOn }: Entry) => <TimeAgo datetime={savedOn} />,\n enableSorting: true\n },\n status: {\n header: \"Status\",\n className: \"cms-aco-list-status\",\n cell: ({ status, version }: Entry) => {\n if (status && version) {\n return `${statusLabels[status as keyof typeof statusLabels]} (v${version})`;\n } else {\n return \"-\";\n }\n }\n },\n original: {\n header: \"\",\n meta: {\n alignEnd: true\n },\n size: 60,\n enableResizing: false,\n cell: (record: Entry) => {\n if (isRecordEntry(record)) {\n return (\n <Menu\n className={`${menuStyles} record-menu`}\n handle={<IconButton icon={<More />} />}\n >\n <RecordActionEdit\n record={record}\n onClick={createEditEntry(record.original)}\n canEdit={canEdit}\n />\n <RecordActionPublish record={record} />\n <RecordActionMove record={record} />\n <RecordActionDelete record={record} />\n </Menu>\n );\n }\n\n return (\n <Menu handle={<IconButton icon={<More />} />}>\n <FolderActionEdit\n onClick={() => {\n setUpdateDialogOpen(true);\n setSelectedFolder(record.original);\n }}\n />\n {record.original.canManagePermissions && (\n <FolderActionManagePermissions\n onClick={() => {\n setManagePermissionsDialogOpen(true);\n setSelectedFolder(record.original);\n }}\n />\n )}\n <FolderActionDelete\n onClick={() => {\n setDeleteDialogOpen(true);\n setSelectedFolder(record.original);\n }}\n />\n </Menu>\n );\n }\n }\n };\n }, []);\n\n return (\n <div ref={ref}>\n <DataTable<Entry>\n columns={columns}\n data={data}\n isRowSelectable={row => row.original.$selectable}\n loadingInitial={loading}\n stickyRows={1}\n sorting={sorting}\n initialSorting={[\n {\n id: \"createdOn\",\n desc: true\n }\n ]}\n onSelectRow={onSelectRow}\n onSortingChange={onSortingChange}\n selectedRows={data.filter(record => selectedRows.find(row => row.id === record.id))}\n />\n {selectedFolder && (\n <>\n <FolderDialogUpdate\n folder={selectedFolder}\n open={updateDialogOpen}\n onClose={() => setUpdateDialogOpen(false)}\n />\n <FolderDialogManagePermissions\n folder={selectedFolder}\n open={managePermissionsDialogOpen}\n onClose={() => setManagePermissionsDialogOpen(false)}\n />\n <FolderDialogDelete\n folder={selectedFolder}\n open={deleteDialogOpen}\n onClose={() => setDeleteDialogOpen(false)}\n />\n </>\n )}\n </div>\n );\n});\n\nTable.displayName = \"Table\";\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_more_vert","_appAco","_Button","_DataTable","_Menu","_TimeAgo","_Name","_FolderActionDelete","_FolderActionEdit","_FolderActionManagePermissions","_RecordActionDelete","_RecordActionEdit","_RecordActionMove","_RecordActionPublish","_styled","_reactRouter","_hooks","_statusLabels","_acoRecordTransform","Table","forwardRef","props","ref","_useNavigateFolder","useNavigateFolder","currentFolderId","folders","records","loading","sorting","onSortingChange","selectedRows","onSelectRow","_useModel","useModel","model","_useRouter","useRouter","history","_usePermission","usePermission","baseCanEdit","canEdit","_useState","useState","_useState2","_slicedToArray2","default","selectedFolder","setSelectedFolder","_useState3","_useState4","updateDialogOpen","setUpdateDialogOpen","_useState5","_useState6","deleteDialogOpen","setDeleteDialogOpen","_useState7","_useState8","managePermissionsDialogOpen","setManagePermissionsDialogOpen","data","useMemo","concat","useCallback","entry","createEditEntry","undefined","folderPath","encodeURIComponent","push","modelId","id","columns","_ref3","titleColumnId","titleFieldId","_defineProperty2","header","className","cell","record","isRecordEntry","createElement","EntryName","onClick","original","FolderName","enableSorting","size","_ref","savedOn","TimeAgo","datetime","_ref2","status","version","statusLabels","meta","alignEnd","enableResizing","Menu","menuStyles","handle","IconButton","icon","ReactComponent","RecordActionEdit","RecordActionPublish","RecordActionMove","RecordActionDelete","canManageStructure","FolderActionEdit","canManagePermissions","FolderActionManagePermissions","FolderActionDelete","DataTable","isRowSelectable","row","$selectable","loadingInitial","stickyRows","initialSorting","desc","filter","find","Fragment","FolderDialogUpdate","folder","open","onClose","FolderDialogManagePermissions","FolderDialogDelete","exports","displayName"],"sources":["index.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ReactComponent as More } from \"@material-design-icons/svg/filled/more_vert.svg\";\nimport {\n FolderDialogDelete,\n FolderDialogUpdate,\n FolderDialogManagePermissions,\n useNavigateFolder\n} from \"@webiny/app-aco\";\nimport { FolderItem } from \"@webiny/app-aco/types\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Columns, DataTable, OnSortingChange, Sorting } from \"@webiny/ui/DataTable\";\nimport { Menu } from \"@webiny/ui/Menu\";\nimport { TimeAgo } from \"@webiny/ui/TimeAgo\";\nimport { EntryName, FolderName } from \"./Row/Name\";\nimport { FolderActionDelete } from \"./Row/Folder/FolderActionDelete\";\nimport { FolderActionEdit } from \"./Row/Folder/FolderActionEdit\";\nimport { FolderActionManagePermissions } from \"./Row/Folder/FolderActionManagePermissions\";\nimport { RecordActionDelete } from \"./Row/Record/RecordActionDelete\";\nimport { RecordActionEdit } from \"./Row/Record/RecordActionEdit\";\nimport { RecordActionMove } from \"./Row/Record/RecordActionMove\";\nimport { RecordActionPublish } from \"./Row/Record/RecordActionPublish\";\nimport { menuStyles } from \"./styled\";\nimport { Entry, FolderEntry, RecordEntry } from \"./types\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useModel, usePermission } from \"~/admin/hooks\";\nimport { CreatableItem } from \"~/admin/hooks/usePermission\";\nimport { statuses as statusLabels } from \"~/admin/constants/statusLabels\";\nimport { isRecordEntry } from \"~/utils/acoRecordTransform\";\nimport { CmsContentEntry } from \"@webiny/app-headless-cms-common/types\";\n\nexport interface TableProps {\n folders: FolderEntry[];\n loading?: boolean;\n onSelectRow: (rows: Entry[] | []) => void;\n onSortingChange: OnSortingChange;\n records: RecordEntry[];\n selectedRows: CmsContentEntry[];\n sorting: Sorting;\n}\n\nexport const Table = forwardRef<HTMLDivElement, TableProps>((props, ref) => {\n const { currentFolderId } = useNavigateFolder();\n const { folders, records, loading, sorting, onSortingChange, selectedRows, onSelectRow } =\n props;\n const { model } = useModel();\n\n const { history } = useRouter();\n const { canEdit: baseCanEdit } = usePermission();\n\n const [selectedFolder, setSelectedFolder] = useState<FolderItem>();\n const [updateDialogOpen, setUpdateDialogOpen] = useState<boolean>(false);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState<boolean>(false);\n const [managePermissionsDialogOpen, setManagePermissionsDialogOpen] = useState<boolean>(false);\n\n const data = useMemo<Entry[]>(() => {\n return (folders as Entry[]).concat(records as Entry[]);\n }, [folders, records]);\n\n const canEdit = useCallback(\n (entry: CreatableItem) => {\n return baseCanEdit(entry, \"cms.contentEntry\");\n },\n [baseCanEdit]\n );\n const createEditEntry = useCallback(\n (entry: CreatableItem & Pick<Entry, \"id\">) => {\n if (!canEdit(entry)) {\n return undefined;\n }\n return () => {\n const folderPath = currentFolderId\n ? `&folderId=${encodeURIComponent(currentFolderId)}`\n : \"\";\n history.push(\n `/cms/content-entries/${model.modelId}?id=${encodeURIComponent(\n entry.id\n )}${folderPath}`\n );\n };\n },\n [canEdit, model.modelId, currentFolderId]\n );\n\n const columns: Columns<Entry> = useMemo(() => {\n const titleColumnId = model.titleFieldId || \"id\";\n\n return {\n [titleColumnId]: {\n header: \"Name\",\n className: \"cms-aco-list-title\",\n cell: (record: Entry) => {\n if (isRecordEntry(record)) {\n return (\n <EntryName record={record} onClick={createEditEntry(record.original)} />\n );\n }\n return <FolderName record={record} />;\n },\n enableSorting: true,\n size: 400\n },\n createdBy: {\n header: \"Author\",\n className: \"cms-aco-list-createdBy\"\n },\n savedOn: {\n header: \"Modified\",\n className: \"cms-aco-list-savedOn\",\n cell: ({ savedOn }: Entry) => <TimeAgo datetime={savedOn} />,\n enableSorting: true\n },\n status: {\n header: \"Status\",\n className: \"cms-aco-list-status\",\n cell: ({ status, version }: Entry) => {\n if (status && version) {\n return `${statusLabels[status as keyof typeof statusLabels]} (v${version})`;\n } else {\n return \"-\";\n }\n }\n },\n original: {\n header: \"\",\n meta: {\n alignEnd: true\n },\n size: 60,\n enableResizing: false,\n cell: (record: Entry) => {\n if (isRecordEntry(record)) {\n return (\n <Menu\n className={`${menuStyles} record-menu`}\n handle={<IconButton icon={<More />} />}\n >\n <RecordActionEdit\n record={record}\n onClick={createEditEntry(record.original)}\n canEdit={canEdit}\n />\n <RecordActionPublish record={record} />\n <RecordActionMove record={record} />\n <RecordActionDelete record={record} />\n </Menu>\n );\n }\n\n // If the user cannot manage folder structure, no need to show the menu.\n if (!record.original.canManageStructure) {\n return null;\n }\n\n return (\n <Menu handle={<IconButton icon={<More />} />}>\n <FolderActionEdit\n onClick={() => {\n setUpdateDialogOpen(true);\n setSelectedFolder(record.original);\n }}\n />\n {record.original.canManagePermissions && (\n <FolderActionManagePermissions\n onClick={() => {\n setManagePermissionsDialogOpen(true);\n setSelectedFolder(record.original);\n }}\n />\n )}\n <FolderActionDelete\n onClick={() => {\n setDeleteDialogOpen(true);\n setSelectedFolder(record.original);\n }}\n />\n </Menu>\n );\n }\n }\n };\n }, []);\n\n return (\n <div ref={ref}>\n <DataTable<Entry>\n columns={columns}\n data={data}\n isRowSelectable={row => row.original.$selectable}\n loadingInitial={loading}\n stickyRows={1}\n sorting={sorting}\n initialSorting={[\n {\n id: \"createdOn\",\n desc: true\n }\n ]}\n onSelectRow={onSelectRow}\n onSortingChange={onSortingChange}\n selectedRows={data.filter(record => selectedRows.find(row => row.id === record.id))}\n />\n {selectedFolder && (\n <>\n <FolderDialogUpdate\n folder={selectedFolder}\n open={updateDialogOpen}\n onClose={() => setUpdateDialogOpen(false)}\n />\n <FolderDialogManagePermissions\n folder={selectedFolder}\n open={managePermissionsDialogOpen}\n onClose={() => setManagePermissionsDialogOpen(false)}\n />\n <FolderDialogDelete\n folder={selectedFolder}\n open={deleteDialogOpen}\n onClose={() => setDeleteDialogOpen(false)}\n />\n </>\n )}\n </div>\n );\n});\n\nTable.displayName = \"Table\";\n"],"mappings":"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"}
@@ -23,7 +23,7 @@ export declare const Menu: import("@emotion/styled").StyledComponent<Pick<import
23
23
  onOpen?: (() => void) | undefined;
24
24
  onClose?: (() => void) | undefined;
25
25
  "data-testid"?: string | undefined;
26
- }, "anchor" | "className" | "disabled" | "data-testid" | "handle" | keyof import("@rmwc/menu").MenuProps>> & Partial<Pick<Partial<import("@rmwc/menu").MenuProps & {
26
+ }, "anchor" | "disabled" | "data-testid" | "className" | keyof import("@rmwc/menu").MenuProps | "handle">> & Partial<Pick<Partial<import("@rmwc/menu").MenuProps & {
27
27
  children: import("react").ReactNode;
28
28
  handle?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
29
29
  anchor?: "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "bottomEnd" | "bottomStart" | "topEnd" | "topStart" | undefined;
@@ -11,7 +11,7 @@ export interface BulkActionProps {
11
11
  before?: string;
12
12
  after?: string;
13
13
  modelIds?: string[];
14
- element: React.ReactElement;
14
+ element?: React.ReactElement;
15
15
  }
16
16
  export declare const BaseBulkAction: React.FC<BulkActionProps>;
17
17
  export declare const BulkAction: React.FC<BulkActionProps> & {
@@ -45,11 +45,11 @@ var BaseBulkAction = function BaseBulkAction(_ref) {
45
45
  id: getId(name, "name"),
46
46
  name: "name",
47
47
  value: name
48
- }), /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
48
+ }), element ? /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
49
49
  id: getId(name, "element"),
50
50
  name: "element",
51
51
  value: element
52
- })));
52
+ }) : null));
53
53
  };
54
54
  exports.BaseBulkAction = BaseBulkAction;
55
55
  var useWorker = function useWorker() {