@prisma-cms/front-editor
Version:
109 lines • 5.87 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.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