UNPKG

@prisma-cms/front-editor

Version:
153 lines 6.42 kB
"use strict"; 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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResourceFields = exports.ResourceFieldsProxy = void 0; const react_1 = __importStar(require("react")); const prop_types_1 = __importDefault(require("prop-types")); const EditorComponent_1 = __importDefault(require("../../../EditorComponent")); const context_1 = require("../../../context"); const Typography_1 = __importDefault(require("material-ui/Typography")); const EditableObject_1 = __importDefault(require("../../form/EditableObject")); class ResourceFieldsProxy extends EditorComponent_1.default { isDeletable() { return false; } /** * Обновление данных объекта. * Так как компоненты рендерятся на основании передаваемых свойств, * надо обновить данные абсолютного родителя, а не просто текущего элемента */ updateObject(data) { const { objectContext } = this.props; const { updateObject } = objectContext; return updateObject(data); } } exports.ResourceFieldsProxy = ResourceFieldsProxy; ResourceFieldsProxy.propTypes = { objectContext: prop_types_1.default.object.isRequired, }; class ResourceFields extends EditorComponent_1.default { constructor() { super(...arguments); this.panelRef = (el) => { this.actionPanel = el; }; } renderPanelView() { return super.renderPanelView(react_1.default.createElement("div", { className: "editor-component--panel-icon" }, "ResourceFields")); } renderMainView() { return (react_1.default.createElement(context_1.EditableObjectContext.Consumer, null, (context) => { Object.assign(this, { objectContext: context, }); return super.renderMainView(); })); } updateObject(data) { const { inEditMode } = this.getEditorContext(); if (inEditMode) { return super.updateObject(data); } else { const { objectContext } = this; const { updateObject, getObjectWithMutations } = objectContext || {}; if (updateObject && getObjectWithMutations) { const { components } = getObjectWithMutations() || {}; if (components) { updateObject({ components, }); } } } return false; } addComponent(item) { const { inEditMode } = this.getEditorContext(); if (inEditMode) { return super.addComponent(item); } const { name, component } = item; if (!component) { item.component = name; } this.addItem(item); } addItem(item) { const { objectContext: { updateObject, getObjectWithMutations }, } = this; const { components } = getObjectWithMutations() || {}; updateObject({ components: (components || []).concat([item]), }); } canBeParent(parent) { return (super.canBeParent(parent) && this.findInParent(parent, (parent) => parent instanceof EditableObject_1.default)); } renderChildren() { const { inEditMode } = this.getEditorContext(); const { objectContext } = this; const { inEditMode: objectInEditMode, getObjectWithMutations } = objectContext; if (!getObjectWithMutations) { if (inEditMode) { return (react_1.default.createElement(Typography_1.default, { color: "error" }, "EditableObject can not be found in parents")); } else { return null; } } const { components } = getObjectWithMutations() || {}; let customComponents; let actionPanel; if (!inEditMode && ((components && components.length) || objectInEditMode)) { if (objectInEditMode) { actionPanel = (react_1.default.createElement("div", { ref: this.panelRef, className: ['front-editor--action-panel'].join(' ') })); } customComponents = (react_1.default.createElement(context_1.EditorContext.Consumer, null, (context) => { if (objectInEditMode) { context = Object.assign(Object.assign({}, context), { inEditMode: true, getActionPanel: () => { return this.actionPanel; } }); } return (react_1.default.createElement(context_1.EditorContext.Provider, { value: context }, react_1.default.createElement(ResourceFieldsProxy, { object: { props: {}, components, }, parent: this, mode: "main", objectContext: objectContext }))); })); } return (react_1.default.createElement(react_1.Fragment, { key: "ResourceFields" }, super.renderChildren(), customComponents, actionPanel)); } } exports.ResourceFields = ResourceFields; ResourceFields.Name = 'ResourceFields'; ResourceFields.defaultProps = Object.assign({}, EditorComponent_1.default.defaultProps); exports.default = ResourceFields; //# sourceMappingURL=index.js.map