@prisma-cms/front-editor
Version:
132 lines • 5.99 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectContext = void 0;
const react_1 = __importStar(require("react"));
// import PropTypes from 'prop-types';
const ViewModule_1 = __importDefault(require("material-ui-icons/ViewModule"));
const __1 = __importStar(require(".."));
const EditorComponent_1 = __importDefault(require("../../../../EditorComponent"));
const Iterable_1 = __importDefault(require("./Iterable"));
const NamedField_1 = __importDefault(require("../Fields/NamedField"));
const DefaultValue_1 = __importDefault(require("../Fields/NamedField/DefaultValue"));
exports.ObjectContext = react_1.createContext({});
class ListView extends EditorComponent_1.default {
renderPanelView(content) {
return super.renderPanelView(content || (react_1.default.createElement("div", { className: "editor-component--panel-icon" },
react_1.default.createElement(ViewModule_1.default, null),
" List View")));
}
// getRenderProps() {
// const {
// style,
// ...props
// } = super.getRenderProps();
// return {
// style: {
// ...style,
// width: "100%",
// display: "flex",
// flexDirection: "row",
// flexWrap: "wrap",
// },
// ...props,
// }
// }
canBeParent(parent) {
return (super.canBeParent(parent) &&
this.findInParent(parent, (parent) => parent instanceof __1.default || parent instanceof NamedField_1.default));
}
// renderMainView() {
// const {
// inEditMode,
// } = this.getEditorContext();
// return inEditMode ? super.renderMainView() : this.renderChildren();
// }
renderChildren() {
return (react_1.default.createElement(__1.ConnectorContext.Consumer, { key: "connector_context" }, (context) => {
const { data } = context;
if (!data) {
return null;
}
const { objects, objectsConnection } = data, otherData = __rest(data, ["objects", "objectsConnection"]);
const items = objects
? objects
: objectsConnection
? objectsConnection.edges.map((n) => n.node)
: null;
if (!items) {
return null;
}
let children = super.renderChildren() || [];
let output = null;
/**
Так как в некоторых случаях нам надо вывести полученные данные без лишних оберток,
проверяем является ли дочерний элемент производным от Iterable.
Если является таковым, то рендерим в него все полученные объекты
if (children.length === 1 && children[0].__proto__.isPrototypeOf(Iterable))
*/
if (children.length === 1 &&
children[0] &&
// eslint-disable-next-line no-prototype-builtins
(Iterable_1.default.isPrototypeOf(children[0].type) ||
children[0].type === Iterable_1.default)) {
const child = children[0];
const { type: Type, props } = child;
output = (react_1.default.createElement(Type, Object.assign({}, props, { items: items, ObjectContext: exports.ObjectContext })));
}
else {
if (items.length) {
children = children.filter((n) => n && n.type !== DefaultValue_1.default);
output = items.map((n, index) => {
const { id } = n;
return (react_1.default.createElement(exports.ObjectContext.Provider, { key: id || index, value: Object.assign({ object: n }, otherData) }, children));
});
}
else {
output = children.filter((n) => n && n.type === DefaultValue_1.default);
}
}
return output;
}));
}
}
ListView.defaultProps = Object.assign(Object.assign({}, EditorComponent_1.default.defaultProps), {
// spacing: 8,
hide_wrapper_in_default_mode: true });
ListView.Name = 'ListView';
ListView.help_url = 'https://front-editor.prisma-cms.com/topics/list-view.html';
exports.default = ListView;
//# sourceMappingURL=index.js.map