UNPKG

@prisma-cms/front-editor

Version:
109 lines 5.87 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 __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.Switch = void 0; /* eslint-disable @typescript-eslint/no-unused-vars */ const react_1 = __importStar(require("react")); const Typography_1 = __importDefault(require("material-ui/Typography")); const Switch_1 = __importDefault(require("material-ui/Switch")); const Form_1 = require("material-ui/Form"); const EditorComponent_1 = __importDefault(require("../../../EditorComponent")); const context_1 = require("../../../context"); /** * Этот компонент надо будет переработать (как и в целом механизм с EditableObject). * Дело в том, что для редактируемых объектов и обычных объектов используются разные контаксты, * что значительно усложняет логику. Приходится смотреть и один и другой тип объектов. * Сейчас сделано только под редактируемые объекты (ибо с ними более обширная логика, нежели просто на чтение). */ class Switch extends EditorComponent_1.default { renderPanelView(content) { return super.renderPanelView(content || react_1.default.createElement("div", { className: "editor-component--panel-icon" }, "Switch")); } getRootElement() { return super.getRootElement(); } canBeParent(parent) { return super.canBeParent(parent); } canBeChild(child) { return super.canBeChild(child); } renderChildren() { // const { // } = this.context; const { inEditMode } = this.getEditorContext(); const _a = this.getComponentProps(this), { name, label, helperText, disabled, can_be_edited, components, contentEditable, data, hide_wrapper_in_default_mode, lang, object: componentObject, page_title, props, render_badge, src, // style, tag } = _a, other = __rest(_a, ["name", "label", "helperText", "disabled", "can_be_edited", "components", "contentEditable", "data", "hide_wrapper_in_default_mode", "lang", "object", "page_title", "props", "render_badge", "src", "tag"]); // return super.renderChildren(); return (react_1.default.createElement(context_1.EditableObjectContext.Consumer, { key: "Switch" }, (editableObjectContext) => { const { getObjectWithMutations, inEditMode: objectInEditMode, updateObject, fieldErrors, } = editableObjectContext; if (!getObjectWithMutations) { return null; } if (!name) { if (inEditMode) { return (react_1.default.createElement(Typography_1.default, { color: "error" }, "name property is required")); } else { return null; } } const { [name]: value } = getObjectWithMutations(); let error = false; let helperTextOutput = helperText; const { [name]: errorText } = fieldErrors || {}; if (errorText) { error = true; helperTextOutput = errorText; } const output = (react_1.default.createElement(react_1.Fragment, null, react_1.default.createElement(Form_1.FormControlLabel, { control: react_1.default.createElement(Switch_1.default, Object.assign({}, other, { checked: value === true, // eslint-disable-next-line react/jsx-no-bind onChange: (event, checked) => { return updateObject({ [name]: checked, }); }, name: name, disabled: disabled || !objectInEditMode })), label: label }), helperTextOutput ? (react_1.default.createElement(Form_1.FormHelperText, { error: error }, helperTextOutput)) : null)); return output; })); } } exports.Switch = Switch; Switch.Name = 'Switch'; Switch.defaultProps = Object.assign(Object.assign({}, EditorComponent_1.default.defaultProps), { name: undefined, label: undefined, helperText: undefined, disabled: false, color: 'primary' }); exports.default = Switch; //# sourceMappingURL=index.js.map