@webiny/app-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.615a930a68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/components/ContentEntryForm/Label.js +1 -1
- package/admin/components/ContentEntryForm/Label.js.map +1 -1
- package/admin/components/ContentModelEditor/Context.js +1 -1
- package/admin/components/ContentModelEditor/Context.js.map +1 -1
- package/admin/constants/statusLabels.js +2 -4
- package/admin/constants/statusLabels.js.map +1 -1
- package/admin/graphql/contentEntries.d.ts +2 -29
- package/admin/graphql/contentEntries.js +10 -30
- package/admin/graphql/contentEntries.js.map +1 -1
- package/admin/hooks/usePermission.d.ts +0 -2
- package/admin/hooks/usePermission.js +0 -36
- package/admin/hooks/usePermission.js.map +1 -1
- package/admin/menus/NothingToShowElement.js +4 -1
- package/admin/menus/NothingToShowElement.js.map +1 -1
- package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js +1 -1
- package/admin/plugins/editor/defaultBar/FormSettings/FormSettings.js.map +1 -1
- package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.d.ts +3 -0
- package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js +146 -0
- package/admin/plugins/fieldRenderers/object/multipleObjectsAccordion.js.map +1 -0
- package/admin/plugins/fieldRenderers/object/singleObjectAccordion.d.ts +3 -0
- package/admin/plugins/fieldRenderers/object/singleObjectAccordion.js +54 -0
- package/admin/plugins/fieldRenderers/object/singleObjectAccordion.js.map +1 -0
- package/admin/plugins/fieldRenderers/object/singleObjectInline.d.ts +3 -0
- package/admin/plugins/fieldRenderers/object/singleObjectInline.js +64 -0
- package/admin/plugins/fieldRenderers/object/singleObjectInline.js.map +1 -0
- package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js +1 -1
- package/admin/plugins/fieldRenderers/ref/components/NewRefEntryFormDialog.js.map +1 -1
- package/admin/plugins/permissionRenderer/components/ContentEntryPermission.js +11 -17
- package/admin/plugins/permissionRenderer/components/ContentEntryPermission.js.map +1 -1
- package/admin/views/contentEntries/ContentEntriesList.js +1 -1
- package/admin/views/contentEntries/ContentEntriesList.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js +16 -4
- package/admin/views/contentEntries/ContentEntry/ContentEntryContext.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.d.ts +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js +3 -80
- package/admin/views/contentEntries/ContentEntry/header/requestChanges/RequestChanges.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.d.ts +1 -1
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js +3 -84
- package/admin/views/contentEntries/ContentEntry/header/requestReview/RequestReview.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/useRevision.d.ts +0 -8
- package/admin/views/contentEntries/ContentEntry/useRevision.js +4 -105
- package/admin/views/contentEntries/ContentEntry/useRevision.js.map +1 -1
- package/admin/views/contentEntries/experiment/ContentEntriesModule.d.ts +2 -2
- package/admin/views/contentEntries/experiment/ContentEntriesModule.js +13 -7
- package/admin/views/contentEntries/experiment/ContentEntriesModule.js.map +1 -1
- package/admin/views/contentEntries/hooks/useContentEntriesList.js.map +1 -1
- package/admin/views/contentModelGroups/ContentModelGroupsForm.js.map +1 -1
- package/package.json +28 -28
- package/types.d.ts +9 -1
- package/types.js.map +1 -1
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
|
|
18
|
+
var _objectSpread4 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _i18n = require("@webiny/app/i18n");
|
|
23
|
+
|
|
24
|
+
var _Button = require("@webiny/ui/Button");
|
|
25
|
+
|
|
26
|
+
var _Grid = require("@webiny/ui/Grid");
|
|
27
|
+
|
|
28
|
+
var _Accordion = require("@webiny/ui/Accordion");
|
|
29
|
+
|
|
30
|
+
var _DynamicSection = _interopRequireDefault(require("../DynamicSection"));
|
|
31
|
+
|
|
32
|
+
var _Fields = require("../../../components/ContentEntryForm/Fields");
|
|
33
|
+
|
|
34
|
+
var _close = require("../../../icons/close.svg");
|
|
35
|
+
|
|
36
|
+
var _arrow_drop_up = require("./arrow_drop_up.svg");
|
|
37
|
+
|
|
38
|
+
var _arrow_drop_down = require("./arrow_drop_down.svg");
|
|
39
|
+
|
|
40
|
+
var _Accordion2 = _interopRequireDefault(require("../Accordion"));
|
|
41
|
+
|
|
42
|
+
var _StyledComponents = require("./StyledComponents");
|
|
43
|
+
|
|
44
|
+
var _utils = require("@webiny/utils");
|
|
45
|
+
|
|
46
|
+
var _templateObject, _templateObject2;
|
|
47
|
+
|
|
48
|
+
var t = _i18n.i18n.ns("app-headless-cms/admin/fields/text");
|
|
49
|
+
|
|
50
|
+
var Actions = function Actions(_ref) {
|
|
51
|
+
var setHighlightIndex = _ref.setHighlightIndex,
|
|
52
|
+
bind = _ref.bind,
|
|
53
|
+
index = _ref.index;
|
|
54
|
+
var _bind$field = bind.field,
|
|
55
|
+
moveValueDown = _bind$field.moveValueDown,
|
|
56
|
+
moveValueUp = _bind$field.moveValueUp;
|
|
57
|
+
var onDown = (0, _react.useCallback)(function (e) {
|
|
58
|
+
e.stopPropagation();
|
|
59
|
+
moveValueDown(index);
|
|
60
|
+
setHighlightIndex(function (map) {
|
|
61
|
+
return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, map), {}, (0, _defineProperty2.default)({}, index + 1, (0, _utils.generateAlphaNumericLowerCaseId)(12)));
|
|
62
|
+
});
|
|
63
|
+
}, [moveValueDown, index]);
|
|
64
|
+
var onUp = (0, _react.useCallback)(function (e) {
|
|
65
|
+
e.stopPropagation();
|
|
66
|
+
moveValueUp(index);
|
|
67
|
+
setHighlightIndex(function (map) {
|
|
68
|
+
return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, map), {}, (0, _defineProperty2.default)({}, index - 1, (0, _utils.generateAlphaNumericLowerCaseId)(12)));
|
|
69
|
+
});
|
|
70
|
+
}, [moveValueUp, index]);
|
|
71
|
+
return index > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
72
|
+
icon: /*#__PURE__*/_react.default.createElement(_arrow_drop_down.ReactComponent, null),
|
|
73
|
+
onClick: onDown
|
|
74
|
+
}), /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
75
|
+
icon: /*#__PURE__*/_react.default.createElement(_arrow_drop_up.ReactComponent, null),
|
|
76
|
+
onClick: onUp
|
|
77
|
+
}), /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
78
|
+
icon: /*#__PURE__*/_react.default.createElement(_close.ReactComponent, null),
|
|
79
|
+
onClick: function onClick() {
|
|
80
|
+
return bind.field.removeValue(index);
|
|
81
|
+
}
|
|
82
|
+
})) : null;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
var ObjectsRenderer = function ObjectsRenderer(props) {
|
|
86
|
+
var _useState = (0, _react.useState)({}),
|
|
87
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
88
|
+
highlightMap = _useState2[0],
|
|
89
|
+
setHighlightIndex = _useState2[1];
|
|
90
|
+
|
|
91
|
+
var field = props.field,
|
|
92
|
+
contentModel = props.contentModel;
|
|
93
|
+
return /*#__PURE__*/_react.default.createElement(_Accordion.Accordion, null, /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
|
|
94
|
+
title: field.label,
|
|
95
|
+
description: field.helpText
|
|
96
|
+
}, /*#__PURE__*/_react.default.createElement(_DynamicSection.default, Object.assign({}, props, {
|
|
97
|
+
emptyValue: {},
|
|
98
|
+
showLabel: false,
|
|
99
|
+
gridClassName: _StyledComponents.dynamicSectionGridStyle
|
|
100
|
+
}), function (_ref2) {
|
|
101
|
+
var Bind = _ref2.Bind,
|
|
102
|
+
bind = _ref2.bind,
|
|
103
|
+
index = _ref2.index;
|
|
104
|
+
return /*#__PURE__*/_react.default.createElement(_StyledComponents.ObjectItem, null, highlightMap[index] ? /*#__PURE__*/_react.default.createElement(_StyledComponents.ItemHighLight, {
|
|
105
|
+
key: highlightMap[index]
|
|
106
|
+
}) : null, /*#__PURE__*/_react.default.createElement(_Accordion2.default, {
|
|
107
|
+
title: "".concat(props.field.label, " #").concat(index + 1),
|
|
108
|
+
action: /*#__PURE__*/_react.default.createElement(Actions, {
|
|
109
|
+
setHighlightIndex: setHighlightIndex,
|
|
110
|
+
index: index,
|
|
111
|
+
bind: bind
|
|
112
|
+
}) // Open first Accordion by default
|
|
113
|
+
,
|
|
114
|
+
defaultValue: index === 0
|
|
115
|
+
}, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
116
|
+
span: 12,
|
|
117
|
+
className: _StyledComponents.fieldsWrapperStyle
|
|
118
|
+
}, /*#__PURE__*/_react.default.createElement(_Fields.Fields, Object.assign({
|
|
119
|
+
Bind: Bind
|
|
120
|
+
}, bind.index, {
|
|
121
|
+
contentModel: contentModel,
|
|
122
|
+
fields: (field.settings || {}).fields || [],
|
|
123
|
+
layout: (field.settings || {}).layout || [],
|
|
124
|
+
gridClassName: _StyledComponents.fieldsGridStyle
|
|
125
|
+
})))));
|
|
126
|
+
})));
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
var plugin = {
|
|
130
|
+
type: "cms-editor-field-renderer",
|
|
131
|
+
name: "cms-editor-field-renderer-objects-accordion",
|
|
132
|
+
renderer: {
|
|
133
|
+
rendererName: "objects-accordion",
|
|
134
|
+
name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Accordion"]))),
|
|
135
|
+
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders fields within an accordion."]))),
|
|
136
|
+
canUse: function canUse(_ref3) {
|
|
137
|
+
var field = _ref3.field;
|
|
138
|
+
return field.type === "object" && Boolean(field.multipleValues);
|
|
139
|
+
},
|
|
140
|
+
render: function render(props) {
|
|
141
|
+
return /*#__PURE__*/_react.default.createElement(ObjectsRenderer, props);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
var _default = plugin;
|
|
146
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","Actions","setHighlightIndex","bind","index","field","moveValueDown","moveValueUp","onDown","useCallback","e","stopPropagation","map","generateAlphaNumericLowerCaseId","onUp","removeValue","ObjectsRenderer","props","useState","highlightMap","contentModel","label","helpText","dynamicSectionGridStyle","Bind","fieldsWrapperStyle","settings","fields","layout","fieldsGridStyle","plugin","type","name","renderer","rendererName","description","canUse","Boolean","multipleValues","render"],"sources":["multipleObjectsAccordion.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction, useState, useCallback } from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Cell } from \"@webiny/ui/Grid\";\nimport { Accordion as RootAccordion, AccordionItem } from \"@webiny/ui/Accordion\";\nimport {\n BindComponentRenderProp,\n CmsEditorFieldRendererPlugin,\n CmsEditorFieldRendererProps\n} from \"~/types\";\nimport DynamicSection from \"../DynamicSection\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { ReactComponent as DeleteIcon } from \"~/admin/icons/close.svg\";\nimport { ReactComponent as ArrowUp } from \"./arrow_drop_up.svg\";\nimport { ReactComponent as ArrowDown } from \"./arrow_drop_down.svg\";\nimport Accordion from \"~/admin/plugins/fieldRenderers/Accordion\";\nimport {\n fieldsWrapperStyle,\n dynamicSectionGridStyle,\n fieldsGridStyle,\n ItemHighLight,\n ObjectItem\n} from \"./StyledComponents\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\ninterface ActionsProps {\n setHighlightIndex: Dispatch<SetStateAction<{ [key: number]: string }>>;\n index: number;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n}\n\nconst Actions: React.FC<ActionsProps> = ({ setHighlightIndex, bind, index }) => {\n const { moveValueDown, moveValueUp } = bind.field;\n\n const onDown = useCallback(\n e => {\n e.stopPropagation();\n moveValueDown(index);\n setHighlightIndex(map => ({\n ...map,\n [index + 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueDown, index]\n );\n\n const onUp = useCallback(\n e => {\n e.stopPropagation();\n moveValueUp(index);\n setHighlightIndex(map => ({\n ...map,\n [index - 1]: generateAlphaNumericLowerCaseId(12)\n }));\n },\n [moveValueUp, index]\n );\n\n return index > 0 ? (\n <>\n <IconButton icon={<ArrowDown />} onClick={onDown} />\n <IconButton icon={<ArrowUp />} onClick={onUp} />\n <IconButton icon={<DeleteIcon />} onClick={() => bind.field.removeValue(index)} />\n </>\n ) : null;\n};\n\nconst ObjectsRenderer: React.FC<CmsEditorFieldRendererProps> = props => {\n const [highlightMap, setHighlightIndex] = useState<{ [key: number]: string }>({});\n const { field, contentModel } = props;\n\n return (\n <RootAccordion>\n <AccordionItem title={field.label} description={field.helpText}>\n <DynamicSection\n {...props}\n emptyValue={{}}\n showLabel={false}\n gridClassName={dynamicSectionGridStyle}\n >\n {({ Bind, bind, index }) => (\n <ObjectItem>\n {highlightMap[index] ? (\n <ItemHighLight key={highlightMap[index]} />\n ) : null}\n <Accordion\n title={`${props.field.label} #${index + 1}`}\n action={\n <Actions\n setHighlightIndex={setHighlightIndex}\n index={index}\n bind={bind}\n />\n }\n // Open first Accordion by default\n defaultValue={index === 0}\n >\n <Cell span={12} className={fieldsWrapperStyle}>\n <Fields\n Bind={Bind}\n {...bind.index}\n contentModel={contentModel}\n fields={(field.settings || {}).fields || []}\n layout={(field.settings || {}).layout || []}\n gridClassName={fieldsGridStyle}\n />\n </Cell>\n </Accordion>\n </ObjectItem>\n )}\n </DynamicSection>\n </AccordionItem>\n </RootAccordion>\n );\n};\n\nconst plugin: CmsEditorFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-objects-accordion\",\n renderer: {\n rendererName: \"objects-accordion\",\n name: t`Accordion`,\n description: t`Renders fields within an accordion.`,\n canUse({ field }) {\n return field.type === \"object\" && Boolean(field.multipleValues);\n },\n render(props) {\n return <ObjectsRenderer {...props} />;\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAOA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,oCAAR,CAAV;;AAWA,IAAMC,OAA+B,GAAG,SAAlCA,OAAkC,OAAwC;EAAA,IAArCC,iBAAqC,QAArCA,iBAAqC;EAAA,IAAlBC,IAAkB,QAAlBA,IAAkB;EAAA,IAAZC,KAAY,QAAZA,KAAY;EAC5E,kBAAuCD,IAAI,CAACE,KAA5C;EAAA,IAAQC,aAAR,eAAQA,aAAR;EAAA,IAAuBC,WAAvB,eAAuBA,WAAvB;EAEA,IAAMC,MAAM,GAAG,IAAAC,kBAAA,EACX,UAAAC,CAAC,EAAI;IACDA,CAAC,CAACC,eAAF;IACAL,aAAa,CAACF,KAAD,CAAb;IACAF,iBAAiB,CAAC,UAAAU,GAAG;MAAA,mEACdA,GADc,yCAEhBR,KAAK,GAAG,CAFQ,EAEJ,IAAAS,sCAAA,EAAgC,EAAhC,CAFI;IAAA,CAAJ,CAAjB;EAIH,CARU,EASX,CAACP,aAAD,EAAgBF,KAAhB,CATW,CAAf;EAYA,IAAMU,IAAI,GAAG,IAAAL,kBAAA,EACT,UAAAC,CAAC,EAAI;IACDA,CAAC,CAACC,eAAF;IACAJ,WAAW,CAACH,KAAD,CAAX;IACAF,iBAAiB,CAAC,UAAAU,GAAG;MAAA,mEACdA,GADc,yCAEhBR,KAAK,GAAG,CAFQ,EAEJ,IAAAS,sCAAA,EAAgC,EAAhC,CAFI;IAAA,CAAJ,CAAjB;EAIH,CARQ,EAST,CAACN,WAAD,EAAcH,KAAd,CATS,CAAb;EAYA,OAAOA,KAAK,GAAG,CAAR,gBACH,yEACI,6BAAC,kBAAD;IAAY,IAAI,eAAE,6BAAC,+BAAD,OAAlB;IAAiC,OAAO,EAAEI;EAA1C,EADJ,eAEI,6BAAC,kBAAD;IAAY,IAAI,eAAE,6BAAC,6BAAD,OAAlB;IAA+B,OAAO,EAAEM;EAAxC,EAFJ,eAGI,6BAAC,kBAAD;IAAY,IAAI,eAAE,6BAAC,qBAAD,OAAlB;IAAkC,OAAO,EAAE;MAAA,OAAMX,IAAI,CAACE,KAAL,CAAWU,WAAX,CAAuBX,KAAvB,CAAN;IAAA;EAA3C,EAHJ,CADG,GAMH,IANJ;AAOH,CAlCD;;AAoCA,IAAMY,eAAsD,GAAG,SAAzDA,eAAyD,CAAAC,KAAK,EAAI;EACpE,gBAA0C,IAAAC,eAAA,EAAoC,EAApC,CAA1C;EAAA;EAAA,IAAOC,YAAP;EAAA,IAAqBjB,iBAArB;;EACA,IAAQG,KAAR,GAAgCY,KAAhC,CAAQZ,KAAR;EAAA,IAAee,YAAf,GAAgCH,KAAhC,CAAeG,YAAf;EAEA,oBACI,6BAAC,oBAAD,qBACI,6BAAC,wBAAD;IAAe,KAAK,EAAEf,KAAK,CAACgB,KAA5B;IAAmC,WAAW,EAAEhB,KAAK,CAACiB;EAAtD,gBACI,6BAAC,uBAAD,oBACQL,KADR;IAEI,UAAU,EAAE,EAFhB;IAGI,SAAS,EAAE,KAHf;IAII,aAAa,EAAEM;EAJnB,IAMK;IAAA,IAAGC,IAAH,SAAGA,IAAH;IAAA,IAASrB,IAAT,SAASA,IAAT;IAAA,IAAeC,KAAf,SAAeA,KAAf;IAAA,oBACG,6BAAC,4BAAD,QACKe,YAAY,CAACf,KAAD,CAAZ,gBACG,6BAAC,+BAAD;MAAe,GAAG,EAAEe,YAAY,CAACf,KAAD;IAAhC,EADH,GAEG,IAHR,eAII,6BAAC,mBAAD;MACI,KAAK,YAAKa,KAAK,CAACZ,KAAN,CAAYgB,KAAjB,eAA2BjB,KAAK,GAAG,CAAnC,CADT;MAEI,MAAM,eACF,6BAAC,OAAD;QACI,iBAAiB,EAAEF,iBADvB;QAEI,KAAK,EAAEE,KAFX;QAGI,IAAI,EAAED;MAHV,EAHR,CASI;MATJ;MAUI,YAAY,EAAEC,KAAK,KAAK;IAV5B,gBAYI,6BAAC,UAAD;MAAM,IAAI,EAAE,EAAZ;MAAgB,SAAS,EAAEqB;IAA3B,gBACI,6BAAC,cAAD;MACI,IAAI,EAAED;IADV,GAEQrB,IAAI,CAACC,KAFb;MAGI,YAAY,EAAEgB,YAHlB;MAII,MAAM,EAAE,CAACf,KAAK,CAACqB,QAAN,IAAkB,EAAnB,EAAuBC,MAAvB,IAAiC,EAJ7C;MAKI,MAAM,EAAE,CAACtB,KAAK,CAACqB,QAAN,IAAkB,EAAnB,EAAuBE,MAAvB,IAAiC,EAL7C;MAMI,aAAa,EAAEC;IANnB,GADJ,CAZJ,CAJJ,CADH;EAAA,CANL,CADJ,CADJ,CADJ;AA2CH,CA/CD;;AAiDA,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BADmC;EAEzCC,IAAI,EAAE,6CAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,mBADR;IAENF,IAAI,EAAElC,CAAF,4FAFE;IAGNqC,WAAW,EAAErC,CAAF,wHAHL;IAINsC,MAJM,yBAIY;MAAA,IAAT/B,KAAS,SAATA,KAAS;MACd,OAAOA,KAAK,CAAC0B,IAAN,KAAe,QAAf,IAA2BM,OAAO,CAAChC,KAAK,CAACiC,cAAP,CAAzC;IACH,CANK;IAONC,MAPM,kBAOCtB,KAPD,EAOQ;MACV,oBAAO,6BAAC,eAAD,EAAqBA,KAArB,CAAP;IACH;EATK;AAH+B,CAA7C;eAgBea,M"}
|
|
@@ -0,0 +1,54 @@
|
|
|
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.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _i18n = require("@webiny/app/i18n");
|
|
15
|
+
|
|
16
|
+
var _Fields = require("../../../components/ContentEntryForm/Fields");
|
|
17
|
+
|
|
18
|
+
var _Accordion = require("@webiny/ui/Accordion");
|
|
19
|
+
|
|
20
|
+
var _templateObject, _templateObject2;
|
|
21
|
+
|
|
22
|
+
var t = _i18n.i18n.ns("app-headless-cms/admin/fields/text");
|
|
23
|
+
|
|
24
|
+
var plugin = {
|
|
25
|
+
type: "cms-editor-field-renderer",
|
|
26
|
+
name: "cms-editor-field-renderer-object-accordion",
|
|
27
|
+
renderer: {
|
|
28
|
+
rendererName: "object-accordion",
|
|
29
|
+
name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Accordion"]))),
|
|
30
|
+
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders fields within an accordion."]))),
|
|
31
|
+
canUse: function canUse(_ref) {
|
|
32
|
+
var field = _ref.field;
|
|
33
|
+
return field.type === "object" && !field.multipleValues;
|
|
34
|
+
},
|
|
35
|
+
render: function render(_ref2) {
|
|
36
|
+
var field = _ref2.field,
|
|
37
|
+
getBind = _ref2.getBind,
|
|
38
|
+
contentModel = _ref2.contentModel;
|
|
39
|
+
var Bind = getBind();
|
|
40
|
+
var settings = field.settings || {};
|
|
41
|
+
return /*#__PURE__*/_react.default.createElement(_Accordion.Accordion, null, /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
|
|
42
|
+
title: field.label,
|
|
43
|
+
description: field.helpText
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_Fields.Fields, {
|
|
45
|
+
Bind: Bind,
|
|
46
|
+
contentModel: contentModel,
|
|
47
|
+
fields: settings.fields || [],
|
|
48
|
+
layout: settings.layout || []
|
|
49
|
+
})));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var _default = plugin;
|
|
54
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","render","getBind","contentModel","Bind","settings","label","helpText","fields","layout"],"sources":["singleObjectAccordion.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\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-object-accordion\",\n renderer: {\n rendererName: \"object-accordion\",\n name: t`Accordion`,\n description: t`Renders fields within an accordion.`,\n canUse({ field }) {\n return field.type === \"object\" && !field.multipleValues;\n },\n render({ field, getBind, contentModel }) {\n const Bind = getBind();\n\n const settings = field.settings || {};\n\n return (\n <Accordion>\n <AccordionItem title={field.label} description={field.helpText}>\n <Fields\n Bind={Bind}\n contentModel={contentModel}\n fields={settings.fields || []}\n layout={settings.layout || []}\n />\n </AccordionItem>\n </Accordion>\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,4CAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,kBADR;IAENF,IAAI,EAAEL,CAAF,4FAFE;IAGNQ,WAAW,EAAER,CAAF,wHAHL;IAINS,MAJM,wBAIY;MAAA,IAATC,KAAS,QAATA,KAAS;MACd,OAAOA,KAAK,CAACN,IAAN,KAAe,QAAf,IAA2B,CAACM,KAAK,CAACC,cAAzC;IACH,CANK;IAONC,MAPM,yBAOmC;MAAA,IAAhCF,KAAgC,SAAhCA,KAAgC;MAAA,IAAzBG,OAAyB,SAAzBA,OAAyB;MAAA,IAAhBC,YAAgB,SAAhBA,YAAgB;MACrC,IAAMC,IAAI,GAAGF,OAAO,EAApB;MAEA,IAAMG,QAAQ,GAAGN,KAAK,CAACM,QAAN,IAAkB,EAAnC;MAEA,oBACI,6BAAC,oBAAD,qBACI,6BAAC,wBAAD;QAAe,KAAK,EAAEN,KAAK,CAACO,KAA5B;QAAmC,WAAW,EAAEP,KAAK,CAACQ;MAAtD,gBACI,6BAAC,cAAD;QACI,IAAI,EAAEH,IADV;QAEI,YAAY,EAAED,YAFlB;QAGI,MAAM,EAAEE,QAAQ,CAACG,MAAT,IAAmB,EAH/B;QAII,MAAM,EAAEH,QAAQ,CAACI,MAAT,IAAmB;MAJ/B,EADJ,CADJ,CADJ;IAYH;EAxBK;AAH+B,CAA7C;eA+BejB,M"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _i18n = require("@webiny/app/i18n");
|
|
15
|
+
|
|
16
|
+
var _Fields = require("../../../components/ContentEntryForm/Fields");
|
|
17
|
+
|
|
18
|
+
var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
|
|
19
|
+
|
|
20
|
+
var _Grid = require("@webiny/ui/Grid");
|
|
21
|
+
|
|
22
|
+
var _FormElementMessage = require("@webiny/ui/FormElementMessage");
|
|
23
|
+
|
|
24
|
+
var _StyledComponents = require("./StyledComponents");
|
|
25
|
+
|
|
26
|
+
var _templateObject, _templateObject2;
|
|
27
|
+
|
|
28
|
+
var t = _i18n.i18n.ns("app-headless-cms/admin/fields/text");
|
|
29
|
+
|
|
30
|
+
var plugin = {
|
|
31
|
+
type: "cms-editor-field-renderer",
|
|
32
|
+
name: "cms-editor-field-renderer-object",
|
|
33
|
+
renderer: {
|
|
34
|
+
rendererName: "object",
|
|
35
|
+
name: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Inline Form"]))),
|
|
36
|
+
description: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Renders a set of fields."]))),
|
|
37
|
+
canUse: function canUse(_ref) {
|
|
38
|
+
var field = _ref.field;
|
|
39
|
+
return field.type === "object" && !field.multipleValues;
|
|
40
|
+
},
|
|
41
|
+
render: function render(_ref2) {
|
|
42
|
+
var field = _ref2.field,
|
|
43
|
+
getBind = _ref2.getBind,
|
|
44
|
+
contentModel = _ref2.contentModel;
|
|
45
|
+
var Bind = getBind();
|
|
46
|
+
var settings = field.settings || {};
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
48
|
+
span: 12
|
|
49
|
+
}, /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
|
|
50
|
+
title: field.label
|
|
51
|
+
}), field.helpText && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, null, field.helpText)), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
52
|
+
span: 12,
|
|
53
|
+
className: _StyledComponents.fieldsWrapperStyle
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement(_Fields.Fields, {
|
|
55
|
+
Bind: Bind,
|
|
56
|
+
contentModel: contentModel,
|
|
57
|
+
fields: settings.fields || [],
|
|
58
|
+
layout: settings.layout || []
|
|
59
|
+
})));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var _default = plugin;
|
|
64
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","plugin","type","name","renderer","rendererName","description","canUse","field","multipleValues","render","getBind","contentModel","Bind","settings","label","helpText","fieldsWrapperStyle","fields","layout"],"sources":["singleObjectInline.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { CmsEditorFieldRendererPlugin } from \"~/types\";\nimport { Fields } from \"~/admin/components/ContentEntryForm/Fields\";\nimport { SimpleFormHeader } from \"@webiny/app-admin/components/SimpleForm\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { fieldsWrapperStyle } from \"./StyledComponents\";\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-object\",\n renderer: {\n rendererName: \"object\",\n name: t`Inline Form`,\n description: t`Renders a set of fields.`,\n canUse({ field }) {\n return field.type === \"object\" && !field.multipleValues;\n },\n render({ field, getBind, contentModel }) {\n const Bind = getBind();\n\n const settings = field.settings || {};\n\n return (\n <Grid>\n <Cell span={12}>\n <SimpleFormHeader title={field.label} />\n {field.helpText && (\n <FormElementMessage>{field.helpText}</FormElementMessage>\n )}\n </Cell>\n <Cell span={12} className={fieldsWrapperStyle}>\n <Fields\n Bind={Bind}\n contentModel={contentModel}\n fields={settings.fields || []}\n layout={settings.layout || []}\n />\n </Cell>\n </Grid>\n );\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,oCAAR,CAAV;;AAEA,IAAMC,MAAoC,GAAG;EACzCC,IAAI,EAAE,2BADmC;EAEzCC,IAAI,EAAE,kCAFmC;EAGzCC,QAAQ,EAAE;IACNC,YAAY,EAAE,QADR;IAENF,IAAI,EAAEL,CAAF,8FAFE;IAGNQ,WAAW,EAAER,CAAF,6GAHL;IAINS,MAJM,wBAIY;MAAA,IAATC,KAAS,QAATA,KAAS;MACd,OAAOA,KAAK,CAACN,IAAN,KAAe,QAAf,IAA2B,CAACM,KAAK,CAACC,cAAzC;IACH,CANK;IAONC,MAPM,yBAOmC;MAAA,IAAhCF,KAAgC,SAAhCA,KAAgC;MAAA,IAAzBG,OAAyB,SAAzBA,OAAyB;MAAA,IAAhBC,YAAgB,SAAhBA,YAAgB;MACrC,IAAMC,IAAI,GAAGF,OAAO,EAApB;MAEA,IAAMG,QAAQ,GAAGN,KAAK,CAACM,QAAN,IAAkB,EAAnC;MAEA,oBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;QAAM,IAAI,EAAE;MAAZ,gBACI,6BAAC,4BAAD;QAAkB,KAAK,EAAEN,KAAK,CAACO;MAA/B,EADJ,EAEKP,KAAK,CAACQ,QAAN,iBACG,6BAAC,sCAAD,QAAqBR,KAAK,CAACQ,QAA3B,CAHR,CADJ,eAOI,6BAAC,UAAD;QAAM,IAAI,EAAE,EAAZ;QAAgB,SAAS,EAAEC;MAA3B,gBACI,6BAAC,cAAD;QACI,IAAI,EAAEJ,IADV;QAEI,YAAY,EAAED,YAFlB;QAGI,MAAM,EAAEE,QAAQ,CAACI,MAAT,IAAmB,EAH/B;QAII,MAAM,EAAEJ,QAAQ,CAACK,MAAT,IAAmB;MAJ/B,EADJ,CAPJ,CADJ;IAkBH;EA9BK;AAH+B,CAA7C;eAqCelB,M"}
|
|
@@ -114,7 +114,7 @@ var NewRefEntryFormDialog = function NewRefEntryFormDialog(_ref2) {
|
|
|
114
114
|
children = _ref2.children,
|
|
115
115
|
onChange = _ref2.onChange;
|
|
116
116
|
|
|
117
|
-
var _useState = (0, _react.useState)(
|
|
117
|
+
var _useState = (0, _react.useState)(undefined),
|
|
118
118
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
119
119
|
contentModel = _useState2[0],
|
|
120
120
|
setContentModel = _useState2[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","dialogContentStyles","css","dialogContainerStyles","EntryForm","onCreate","useContentEntry","setFormRef","contentModel","data","form","DialogSaveButton","ev","current","submit","DefaultButton","styled","ButtonDefault","NewEntryButton","useNewRefEntryDialog","setOpen","NewRefEntryFormDialog","modelId","children","onChange","useState","setContentModel","useSnackbar","showSnackbar","useQuery","GET_CONTENT_MODEL","skip","variables","onCompleted","contentModelData","get","open","hideDialog","useCallback","entry","published","modelName","name"],"sources":["NewRefEntryFormDialog.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport {\n Dialog,\n DialogActions,\n DialogButton,\n DialogCancel,\n DialogContent,\n DialogTitle\n} from \"@webiny/ui/Dialog\";\nimport { ButtonDefault, ButtonIcon } from \"@webiny/ui/Button\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { Provider as ContentEntriesProvider } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { Provider as ContentEntryProvider } from \"~/admin/views/contentEntries/ContentEntry/ContentEntryContext\";\nimport { ContentEntryForm } from \"~/admin/components/ContentEntryForm/ContentEntryForm\";\nimport { useQuery } from \"~/admin/hooks\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n} from \"~/admin/graphql/contentModels\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\nimport { useNewRefEntryDialog } from \"../hooks/useNewRefEntryDialog\";\nimport { CmsEditorContentEntry, CmsModel } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst dialogContentStyles = css`\n width: 786px;\n`;\n\nconst dialogContainerStyles = css`\n /*\n* By default, a Dialog component has the \"z-index\" value of 20.\n* As we are rendering the content entry form in a \"Dialog\", the File Manager view triggered by a \"file\" field\n* will render below the source form, rendering it useless for the user.\n*\n* To fix that issue, we're setting the \"z-index\" CSS property for this particular Dialog to less than 18,\n* which is the \"z-index\" value assigned to File Manager view, so that it will render below the File Manager view as expected.\n*/\n\n &.mdc-dialog {\n z-index: 17;\n }\n`;\n\ninterface EntryFormProps {\n onCreate: (entry: CmsEditorContentEntry) => void;\n}\nconst EntryForm: React.FC<EntryFormProps> = ({ onCreate }) => {\n const { setFormRef, contentModel } = useContentEntry();\n\n return (\n <ContentEntryForm\n contentModel={contentModel}\n onSubmit={data => {\n /**\n * We know that data is CmsEditorContentEntry.\n */\n return onCreate(data as unknown as CmsEditorContentEntry);\n }}\n onForm={form => setFormRef(form)}\n entry={{}}\n addEntryToListCache={false}\n />\n );\n};\n\nconst DialogSaveButton: React.FC = () => {\n const { form } = useContentEntry();\n\n return <DialogButton onClick={ev => form.current.submit(ev)}>{t`Save`}</DialogButton>;\n};\n\nconst DefaultButton = styled(ButtonDefault)`\n margin-left: 32px;\n`;\n\nexport const NewEntryButton = () => {\n const { setOpen } = useNewRefEntryDialog();\n return (\n <DefaultButton small={true} onClick={() => setOpen(true)}>\n <ButtonIcon icon={<AddIcon />} />\n {t`New Entry`}\n </DefaultButton>\n );\n};\n\ninterface NewRefEntryProps {\n modelId: string;\n children: React.ReactElement;\n onChange: (entry: CmsEditorContentEntry) => void;\n}\n\nconst NewRefEntryFormDialog: React.FC<NewRefEntryProps> = ({ modelId, children, onChange }) => {\n const [contentModel, setContentModel] = useState<CmsModel |
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","dialogContentStyles","css","dialogContainerStyles","EntryForm","onCreate","useContentEntry","setFormRef","contentModel","data","form","DialogSaveButton","ev","current","submit","DefaultButton","styled","ButtonDefault","NewEntryButton","useNewRefEntryDialog","setOpen","NewRefEntryFormDialog","modelId","children","onChange","useState","undefined","setContentModel","useSnackbar","showSnackbar","useQuery","GET_CONTENT_MODEL","skip","variables","onCompleted","contentModelData","get","open","hideDialog","useCallback","entry","published","modelName","name"],"sources":["NewRefEntryFormDialog.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport {\n Dialog,\n DialogActions,\n DialogButton,\n DialogCancel,\n DialogContent,\n DialogTitle\n} from \"@webiny/ui/Dialog\";\nimport { ButtonDefault, ButtonIcon } from \"@webiny/ui/Button\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { Provider as ContentEntriesProvider } from \"~/admin/views/contentEntries/ContentEntriesContext\";\nimport { Provider as ContentEntryProvider } from \"~/admin/views/contentEntries/ContentEntry/ContentEntryContext\";\nimport { ContentEntryForm } from \"~/admin/components/ContentEntryForm/ContentEntryForm\";\nimport { useQuery } from \"~/admin/hooks\";\nimport {\n GET_CONTENT_MODEL,\n GetCmsModelQueryResponse,\n GetCmsModelQueryVariables\n} from \"~/admin/graphql/contentModels\";\nimport { useContentEntry } from \"~/admin/views/contentEntries/hooks/useContentEntry\";\nimport { useNewRefEntryDialog } from \"../hooks/useNewRefEntryDialog\";\nimport { CmsEditorContentEntry, CmsModel } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/ref\");\n\nconst dialogContentStyles = css`\n width: 786px;\n`;\n\nconst dialogContainerStyles = css`\n /*\n* By default, a Dialog component has the \"z-index\" value of 20.\n* As we are rendering the content entry form in a \"Dialog\", the File Manager view triggered by a \"file\" field\n* will render below the source form, rendering it useless for the user.\n*\n* To fix that issue, we're setting the \"z-index\" CSS property for this particular Dialog to less than 18,\n* which is the \"z-index\" value assigned to File Manager view, so that it will render below the File Manager view as expected.\n*/\n\n &.mdc-dialog {\n z-index: 17;\n }\n`;\n\ninterface EntryFormProps {\n onCreate: (entry: CmsEditorContentEntry) => void;\n}\nconst EntryForm: React.FC<EntryFormProps> = ({ onCreate }) => {\n const { setFormRef, contentModel } = useContentEntry();\n\n return (\n <ContentEntryForm\n contentModel={contentModel}\n onSubmit={data => {\n /**\n * We know that data is CmsEditorContentEntry.\n */\n return onCreate(data as unknown as CmsEditorContentEntry);\n }}\n onForm={form => setFormRef(form)}\n entry={{}}\n addEntryToListCache={false}\n />\n );\n};\n\nconst DialogSaveButton: React.FC = () => {\n const { form } = useContentEntry();\n\n return <DialogButton onClick={ev => form.current.submit(ev)}>{t`Save`}</DialogButton>;\n};\n\nconst DefaultButton = styled(ButtonDefault)`\n margin-left: 32px;\n`;\n\nexport const NewEntryButton = () => {\n const { setOpen } = useNewRefEntryDialog();\n return (\n <DefaultButton small={true} onClick={() => setOpen(true)}>\n <ButtonIcon icon={<AddIcon />} />\n {t`New Entry`}\n </DefaultButton>\n );\n};\n\ninterface NewRefEntryProps {\n modelId: string;\n children: React.ReactElement;\n onChange: (entry: CmsEditorContentEntry) => void;\n}\n\nconst NewRefEntryFormDialog: React.FC<NewRefEntryProps> = ({ modelId, children, onChange }) => {\n const [contentModel, setContentModel] = useState<CmsModel | undefined>(undefined);\n\n const { showSnackbar } = useSnackbar();\n\n useQuery<GetCmsModelQueryResponse, GetCmsModelQueryVariables>(GET_CONTENT_MODEL, {\n skip: !modelId,\n variables: { modelId },\n onCompleted: data => {\n const contentModelData = get(data, \"getContentModel.data\") as unknown as CmsModel;\n if (contentModelData) {\n setContentModel(contentModelData);\n return;\n }\n\n showSnackbar(\n t`Could not load content for model \"{modelId}\". Redirecting...`({\n modelId\n })\n );\n }\n });\n\n const { open, setOpen } = useNewRefEntryDialog();\n const hideDialog = useCallback(() => setOpen(false), []);\n\n const onCreate = useCallback(\n (entry: CmsEditorContentEntry) => {\n if (!contentModel) {\n setOpen(false);\n return;\n }\n onChange({\n ...entry,\n /*\n * Format data for AutoComplete.\n */\n published: get(entry, \"meta.status\") === \"published\",\n modelId: contentModel.modelId,\n modelName: contentModel.name\n });\n setOpen(false);\n },\n [onChange, contentModel]\n );\n\n if (!contentModel) {\n return children;\n }\n\n return (\n <ContentEntriesProvider\n contentModel={contentModel}\n key={contentModel.modelId}\n insideDialog={true}\n >\n <ContentEntryProvider isNewEntry={() => true} getContentId={() => null}>\n <Dialog open={open} onClose={hideDialog} className={dialogContainerStyles}>\n <DialogTitle>\n {t`New {modelName} Entry`({ modelName: contentModel.name })}\n </DialogTitle>\n <DialogContent className={dialogContentStyles}>\n <EntryForm onCreate={onCreate} />\n </DialogContent>\n <DialogActions>\n <DialogCancel>{t`Cancel`}</DialogCancel>\n <DialogSaveButton />\n </DialogActions>\n </Dialog>\n {children}\n </ContentEntryProvider>\n </ContentEntriesProvider>\n );\n};\n\nexport default NewRefEntryFormDialog;\n"],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ var _Checkbox = require("@webiny/ui/Checkbox");
|
|
|
29
29
|
|
|
30
30
|
var _StyledComponents = require("./StyledComponents");
|
|
31
31
|
|
|
32
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12
|
|
32
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
|
|
33
33
|
|
|
34
34
|
var t = _i18n.i18n.ns("app-headless-cms/admin/plugins/permissionRenderer");
|
|
35
35
|
|
|
@@ -39,12 +39,6 @@ var pwOptions = [{
|
|
|
39
39
|
}, {
|
|
40
40
|
id: "u",
|
|
41
41
|
name: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Unpublish"])))
|
|
42
|
-
}, {
|
|
43
|
-
id: "r",
|
|
44
|
-
name: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Request review"])))
|
|
45
|
-
}, {
|
|
46
|
-
id: "c",
|
|
47
|
-
name: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Request changes"])))
|
|
48
42
|
}];
|
|
49
43
|
|
|
50
44
|
var ContentEntryPermission = function ContentEntryPermission(_ref) {
|
|
@@ -90,38 +84,38 @@ var ContentEntryPermission = function ContentEntryPermission(_ref) {
|
|
|
90
84
|
cb(value);
|
|
91
85
|
}
|
|
92
86
|
}, /*#__PURE__*/_react.default.createElement(_Select.Select, {
|
|
93
|
-
label: t(
|
|
87
|
+
label: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Access Scope"]))),
|
|
94
88
|
disabled: data["contentModelAccessScope"] === "own"
|
|
95
89
|
}, /*#__PURE__*/_react.default.createElement("option", {
|
|
96
90
|
value: "full"
|
|
97
|
-
}, t(
|
|
91
|
+
}, t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["All entries"])))), endpoints.includes("manage") && /*#__PURE__*/_react.default.createElement("option", {
|
|
98
92
|
value: "own"
|
|
99
|
-
}, t(
|
|
93
|
+
}, t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Only entries created by the user"])))) || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null))), data["contentModelAccessScope"] === "own" && /*#__PURE__*/_react.default.createElement(_StyledComponents.Note, null, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
100
94
|
use: "caption"
|
|
101
95
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
102
96
|
className: "highlight"
|
|
103
|
-
}, "Content Entry"), "\xA0", t(
|
|
97
|
+
}, "Content Entry"), "\xA0", t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["access depends upon"]))), "\xA0", /*#__PURE__*/_react.default.createElement("span", {
|
|
104
98
|
className: "highlight"
|
|
105
99
|
}, "Content Model")))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
106
100
|
span: 12
|
|
107
101
|
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
108
102
|
name: "".concat(entity, "RWD")
|
|
109
103
|
}, /*#__PURE__*/_react.default.createElement(_Select.Select, {
|
|
110
|
-
label: t(
|
|
104
|
+
label: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Primary Actions"]))),
|
|
111
105
|
disabled: disabledPrimaryActions
|
|
112
106
|
}, /*#__PURE__*/_react.default.createElement("option", {
|
|
113
107
|
value: "r"
|
|
114
|
-
}, t(
|
|
108
|
+
}, t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["Read"])))), endpoints.includes("manage") ? /*#__PURE__*/_react.default.createElement("option", {
|
|
115
109
|
value: "rw"
|
|
116
|
-
}, t(
|
|
110
|
+
}, t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Read, write"])))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), endpoints.includes("manage") ? /*#__PURE__*/_react.default.createElement("option", {
|
|
117
111
|
value: "rwd"
|
|
118
|
-
}, t(
|
|
112
|
+
}, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Read, write, delete"])))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)))), endpoints.includes("manage") ? /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
119
113
|
span: 12
|
|
120
114
|
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
121
115
|
name: "".concat(entity, "PW")
|
|
122
116
|
}, /*#__PURE__*/_react.default.createElement(_Checkbox.CheckboxGroup, {
|
|
123
|
-
label: t(
|
|
124
|
-
description: t(
|
|
117
|
+
label: t(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["Publishing actions"]))),
|
|
118
|
+
description: t(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2.default)(["Publishing-related actions that can be performed on content entries."])))
|
|
125
119
|
}, function (_ref2) {
|
|
126
120
|
var getValue = _ref2.getValue,
|
|
127
121
|
onChange = _ref2.onChange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","pwOptions","id","name","ContentEntryPermission","Bind","data","entity","setValue","title","useEffect","get","endpoints","disabledPrimaryActions","undefined","includes","marginTop","padding","paddingBottom","value","cb","getValue","onChange","map"],"sources":["ContentEntryPermission.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Checkbox, CheckboxGroup } from \"@webiny/ui/Checkbox\";\nimport { Note } from \"./StyledComponents\";\nimport { BindComponent } from \"@webiny/form/types\";\nimport { CmsSecurityPermission } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/plugins/permissionRenderer\");\n\ninterface PermissionOption {\n id: string;\n name: string;\n}\nconst pwOptions: PermissionOption[] = [\n { id: \"p\", name: t`Publish` },\n { id: \"u\", name: t`Unpublish` },\n { id: \"r\", name: t`Request review` },\n { id: \"c\", name: t`Request changes` }\n];\n\ninterface ContentEntryPermissionProps {\n Bind: BindComponent;\n data: CmsSecurityPermission;\n entity: string;\n setValue: (name: string, value: string) => void;\n title: string;\n}\nexport const ContentEntryPermission: React.FC<ContentEntryPermissionProps> = ({\n Bind,\n data,\n entity,\n setValue,\n title\n}) => {\n // Set \"cms.contentEntry\" access scope to \"own\" if \"cms.contentModel\" === \"own\".\n useEffect(() => {\n if (\n get(data, `contentModelAccessScope`) === \"own\" &&\n get(data, `${entity}AccessScope`) !== \"own\"\n ) {\n setValue(`${entity}AccessScope`, \"own\");\n }\n }, [data]);\n\n const endpoints = data.endpoints || [];\n\n const disabledPrimaryActions =\n [undefined, \"own\", \"no\"].includes(data[`${entity}AccessScope`]) ||\n !endpoints.includes(\"manage\");\n\n return (\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{title}</Typography>\n </Cell>\n <Cell span={12}>\n <Grid style={{ padding: 0, paddingBottom: 24 }}>\n <Cell span={12}>\n <Bind\n defaultValue={\"full\"}\n name={`${entity}AccessScope`}\n beforeChange={(value, cb) => {\n if (value === \"own\") {\n setValue(`${entity}RWD`, \"rwd\");\n }\n cb(value);\n }}\n >\n <Select\n label={t`Access Scope`}\n disabled={data[`contentModelAccessScope`] === \"own\"}\n >\n <option value={\"full\"}>{t`All entries`}</option>\n {(endpoints.includes(\"manage\") && (\n <option\n value={\"own\"}\n >{t`Only entries created by the user`}</option>\n )) || <></>}\n </Select>\n </Bind>\n {data[`contentModelAccessScope`] === \"own\" && (\n <Note>\n <Typography use={\"caption\"}>\n <span className={\"highlight\"}>Content Entry</span>\n {t`access depends upon`} \n <span className={\"highlight\"}>Content Model</span>\n </Typography>\n </Note>\n )}\n </Cell>\n\n <Cell span={12}>\n <Bind name={`${entity}RWD`}>\n <Select\n label={t`Primary Actions`}\n disabled={disabledPrimaryActions}\n >\n <option value={\"r\"}>{t`Read`}</option>\n {endpoints.includes(\"manage\") ? (\n <option value={\"rw\"}>{t`Read, write`}</option>\n ) : (\n <></>\n )}\n {endpoints.includes(\"manage\") ? (\n <option value={\"rwd\"}>{t`Read, write, delete`}</option>\n ) : (\n <></>\n )}\n </Select>\n </Bind>\n </Cell>\n {endpoints.includes(\"manage\") ? (\n <Cell span={12}>\n <Bind name={`${entity}PW`}>\n <CheckboxGroup\n label={t`Publishing actions`}\n description={t`Publishing-related actions that can be performed on content entries.`}\n >\n {({ getValue, onChange }) =>\n pwOptions.map(({ id, name }) => (\n <Checkbox\n disabled={[undefined, \"no\"].includes(\n data[`${entity}AccessScope`]\n )}\n key={id}\n label={name}\n value={getValue(id)}\n onChange={onChange(id)}\n />\n ))\n }\n </CheckboxGroup>\n </Bind>\n </Cell>\n ) : null}\n </Grid>\n </Cell>\n </Grid>\n </Elevation>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","pwOptions","id","name","ContentEntryPermission","Bind","data","entity","setValue","title","useEffect","get","endpoints","disabledPrimaryActions","undefined","includes","marginTop","padding","paddingBottom","value","cb","getValue","onChange","map"],"sources":["ContentEntryPermission.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Select } from \"@webiny/ui/Select\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport { Checkbox, CheckboxGroup } from \"@webiny/ui/Checkbox\";\nimport { Note } from \"./StyledComponents\";\nimport { BindComponent } from \"@webiny/form/types\";\nimport { CmsSecurityPermission } from \"~/types\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/plugins/permissionRenderer\");\n\ninterface PermissionOption {\n id: string;\n name: string;\n}\nconst pwOptions: PermissionOption[] = [\n { id: \"p\", name: t`Publish` },\n { id: \"u\", name: t`Unpublish` }\n];\n\ninterface ContentEntryPermissionProps {\n Bind: BindComponent;\n data: CmsSecurityPermission;\n entity: string;\n setValue: (name: string, value: string) => void;\n title: string;\n}\nexport const ContentEntryPermission: React.FC<ContentEntryPermissionProps> = ({\n Bind,\n data,\n entity,\n setValue,\n title\n}) => {\n // Set \"cms.contentEntry\" access scope to \"own\" if \"cms.contentModel\" === \"own\".\n useEffect(() => {\n if (\n get(data, `contentModelAccessScope`) === \"own\" &&\n get(data, `${entity}AccessScope`) !== \"own\"\n ) {\n setValue(`${entity}AccessScope`, \"own\");\n }\n }, [data]);\n\n const endpoints = data.endpoints || [];\n\n const disabledPrimaryActions =\n [undefined, \"own\", \"no\"].includes(data[`${entity}AccessScope`]) ||\n !endpoints.includes(\"manage\");\n\n return (\n <Elevation z={1} style={{ marginTop: 10 }}>\n <Grid>\n <Cell span={12}>\n <Typography use={\"overline\"}>{title}</Typography>\n </Cell>\n <Cell span={12}>\n <Grid style={{ padding: 0, paddingBottom: 24 }}>\n <Cell span={12}>\n <Bind\n defaultValue={\"full\"}\n name={`${entity}AccessScope`}\n beforeChange={(value, cb) => {\n if (value === \"own\") {\n setValue(`${entity}RWD`, \"rwd\");\n }\n cb(value);\n }}\n >\n <Select\n label={t`Access Scope`}\n disabled={data[`contentModelAccessScope`] === \"own\"}\n >\n <option value={\"full\"}>{t`All entries`}</option>\n {(endpoints.includes(\"manage\") && (\n <option\n value={\"own\"}\n >{t`Only entries created by the user`}</option>\n )) || <></>}\n </Select>\n </Bind>\n {data[`contentModelAccessScope`] === \"own\" && (\n <Note>\n <Typography use={\"caption\"}>\n <span className={\"highlight\"}>Content Entry</span>\n {t`access depends upon`} \n <span className={\"highlight\"}>Content Model</span>\n </Typography>\n </Note>\n )}\n </Cell>\n\n <Cell span={12}>\n <Bind name={`${entity}RWD`}>\n <Select\n label={t`Primary Actions`}\n disabled={disabledPrimaryActions}\n >\n <option value={\"r\"}>{t`Read`}</option>\n {endpoints.includes(\"manage\") ? (\n <option value={\"rw\"}>{t`Read, write`}</option>\n ) : (\n <></>\n )}\n {endpoints.includes(\"manage\") ? (\n <option value={\"rwd\"}>{t`Read, write, delete`}</option>\n ) : (\n <></>\n )}\n </Select>\n </Bind>\n </Cell>\n {endpoints.includes(\"manage\") ? (\n <Cell span={12}>\n <Bind name={`${entity}PW`}>\n <CheckboxGroup\n label={t`Publishing actions`}\n description={t`Publishing-related actions that can be performed on content entries.`}\n >\n {({ getValue, onChange }) =>\n pwOptions.map(({ id, name }) => (\n <Checkbox\n disabled={[undefined, \"no\"].includes(\n data[`${entity}AccessScope`]\n )}\n key={id}\n label={name}\n value={getValue(id)}\n onChange={onChange(id)}\n />\n ))\n }\n </CheckboxGroup>\n </Bind>\n </Cell>\n ) : null}\n </Grid>\n </Cell>\n </Grid>\n </Elevation>\n );\n};\n"],"mappings":"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"}
|
|
@@ -206,7 +206,7 @@ var ContentEntriesList = function ContentEntriesList() {
|
|
|
206
206
|
}))), /*#__PURE__*/_react.default.createElement(UIList.ListItemMeta, {
|
|
207
207
|
className: rightAlign
|
|
208
208
|
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
209
|
-
use: "
|
|
209
|
+
use: "body2",
|
|
210
210
|
"data-testid": "ul.list.subtitle"
|
|
211
211
|
}, _statusLabels.default[item.meta.status], " (v", item.meta.version, ")")));
|
|
212
212
|
})), loadMoreLoading && /*#__PURE__*/_react.default.createElement(InlineLoaderWrapper, null, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
@@ -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\";\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
|
+
{"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={\"body2\"} 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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"}
|