UNPKG

meteor-interface

Version:

Simple Content Management System to generate your administration interface for Meteor and React.

380 lines (325 loc) 15.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _reactMeteorData = require("meteor/react-meteor-data"); var _slugify = _interopRequireDefault(require("slugify")); var _reactSpring = require("react-spring"); var _DynamicImporter = _interopRequireDefault(require("../../../utils/DynamicImporter")); var _WidgetFormContext = require("../../../utils/contexts/WidgetFormContext"); var _semanticUiReact = require("semantic-ui-react"); var _ModalImageSelector = _interopRequireDefault(require("../../MediaManager/components/ModalImageSelector")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var TinyMCE = (0, _DynamicImporter.default)(function () { return new Promise(function (resolve) { require.ensure([], function (require) { resolve(require('react-tinymce')); }); }); }); // Packages var tinyConfig = { height: 300, menubar: false, plugins: ['advlist autolink lists link image charmap print preview anchor textcolor colorpicker', 'searchreplace visualblocks code fullscreen', 'insertdatetime media table contextmenu paste code emoticons'], toolbar: 'undo redo | insert | fontsizeselect | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link | forecolor backcolor emoticons | image' }; var WidgetSelector = (0, _WidgetFormContext.WidgetFormConsumer)(function (props) { var collection = props.collection, collection2 = props.collection2, item2 = props.item2; if (item2 && collection2) { collection = collection2; item = item2; } return collection.fields.map(function (field, i) { return _react.default.createElement(SingleWidget, _extends({ key: i, field: field }, props)); }); }); var SingleWidget = /*#__PURE__*/ function (_Component) { _inherits(SingleWidget, _Component); function SingleWidget() { var _getPrototypeOf2; var _this; _classCallCheck(this, SingleWidget); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SingleWidget)).call.apply(_getPrototypeOf2, [this].concat(args))); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "state", { id: Random.id() }); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "updateNestedValue", function (e, _ref) { var name = _ref.name, value = _ref.value, checked = _ref.checked; var _this$props = _this.props, nested = _this$props.nested, index = _this$props.index, collection2 = _this$props.collection2, item2 = _this$props.item2, parent = _this$props.parent, _this$props$context = _this$props.context, context = _this$props$context === void 0 ? {} : _this$props$context, field = _this$props.field; var updateValue = context.updateValue, item = context.item, collection = context.collection, ready = context.ready; if (item2 && collection2) { collection = collection2; item = item2; } parent[index][name] = value || checked; updateValue(e, { name: collection.name, value: parent }); }); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "updateNormalValue", function (e, _ref2) { var name = _ref2.name, value = _ref2.value, checked = _ref2.checked; var _this$props2 = _this.props, nested = _this$props2.nested, index = _this$props2.index, collection2 = _this$props2.collection2, item2 = _this$props2.item2, parent = _this$props2.parent, _this$props2$context = _this$props2.context, context = _this$props2$context === void 0 ? {} : _this$props2$context, field = _this$props2.field; var updateValue = context.updateValue, item = context.item, collection = context.collection, ready = context.ready; updateValue(e, { name: name, value: value, checked: checked }); }); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "incrementeList", function (e) { var _this$props3 = _this.props, nested = _this$props3.nested, index = _this$props3.index, collection2 = _this$props3.collection2, item2 = _this$props3.item2, parent = _this$props3.parent, _this$props3$context = _this$props3.context, context = _this$props3$context === void 0 ? {} : _this$props3$context, field = _this$props3.field; var updateValue = context.updateValue, item = context.item, collection = context.collection, ready = context.ready; if (nested) { parent[index][name] && parent[index][name].length ? parent[index][name].push({}) : parent[index][name] = [{}]; updateValue(e, { name: collection.name, value: parent }); } else { item[field.name] && item[field.name].length ? item[field.name].push({}) : item[field.name] = [{}]; updateValue(e, { name: [field.name], value: item[field.name] }); } }); _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "decrementeList", function (e, index) { var _this$props4 = _this.props, nested = _this$props4.nested, collection2 = _this$props4.collection2, item2 = _this$props4.item2, parent = _this$props4.parent, context = _this$props4.context, field = _this$props4.field; var updateValue = context.updateValue, item = context.item, collection = context.collection, ready = context.ready; if (nested) { parent[index][name].splice(index, 1); updateValue(e, { name: collection.name, value: parent }); } else { item[field.name].splice(index, 1); updateValue(e, { name: [field.name], value: item[field.name] }); } }); return _this; } _createClass(SingleWidget, [{ key: "render", value: function render() { var _this2 = this; var id = this.state.id; var _this$props5 = this.props, nested = _this$props5.nested, index = _this$props5.index, collection2 = _this$props5.collection2, item2 = _this$props5.item2, parent = _this$props5.parent, _this$props5$context = _this$props5.context, context = _this$props5$context === void 0 ? {} : _this$props5$context, field = _this$props5.field; var updateValue = context.updateValue, item = context.item, collection = context.collection, ready = context.ready; if (item2 && collection2) { collection = collection2; item = item2; } switch (field.widget) { case 'string': return _react.default.createElement(_semanticUiReact.Form.Input, { value: item[field.name], label: field.label, key: id, onChange: nested ? this.updateNestedValue : this.updateNormalValue, name: field.name }); case 'multiline': return _react.default.createElement(_semanticUiReact.Form.TextArea, { value: item[field.name], label: field.label, key: id, onChange: nested ? this.updateNestedValue : this.updateNormalValue, name: field.name }); case 'html': if (typeof tinymce !== 'undefined') { return _react.default.createElement(_semanticUiReact.Form.Field, { className: "tinymce-selector" }, _react.default.createElement("label", null, field.label), _react.default.createElement("div", { className: "wrapper" }, _react.default.createElement(TinyMCE, { content: item[field.name], config: tinyConfig, onChange: function onChange(e) { var updateFunction = nested ? _this2.updateNestedValue : _this2.updateNormalValue; updateFunction(e, { name: field.name, value: e.target.getContent() }); } }))); } return _react.default.createElement("div", { key: id }, "Loading TinyMCE Editor ... "); case 'image': return _react.default.createElement(_semanticUiReact.Form.Field, { className: "image-selector", key: id }, _react.default.createElement("label", null, field.label), _react.default.createElement("div", { className: "wrapper" }, _react.default.createElement(_semanticUiReact.Image, { rounded: true, src: item[field.name], size: "tiny" }), _react.default.createElement("div", { className: "choice" }, _react.default.createElement("p", null, item[field.name]), _react.default.createElement(_ModalImageSelector.default, { selectPicture: nested ? this.updateNestedValue : this.updateNormalValue, currentPicture: item[field.name], name: field.name }), item[field.name] && _react.default.createElement(_semanticUiReact.Button, { onClick: nested ? this.updateNestedValue : this.updateNormalValue, value: null, name: field.name, size: "mini", color: "red" }, "remove the picture")))); case 'boolean': return _react.default.createElement(_semanticUiReact.Form.Field, { key: id }, _react.default.createElement("label", null, field.label), _react.default.createElement(_semanticUiReact.Checkbox, { checked: item[field.name], toggle: true, key: id, onChange: nested ? this.updateNestedValue : this.updateNormalValue, name: field.name })); case 'list': if (field.fields) { return _react.default.createElement(_semanticUiReact.Segment, { key: id }, _react.default.createElement(_semanticUiReact.Label, { as: "a", color: "green", ribbon: true, size: "small" }, field.name), item[field.name] ? item[field.name].map(function (mark, i2) { return _react.default.createElement(_semanticUiReact.Message, { key: id + i2 }, _react.default.createElement(_semanticUiReact.Segment.Group, null, _react.default.createElement(WidgetSelector, { collection2: field, item2: mark, nested: true, index: i2, parent: item[field.name] })), _react.default.createElement("a", { className: "decrementation", onClick: function onClick(e) { return _this2.decrementeList(e, i2); } }, "Remove")); }) : null, _react.default.createElement("a", { className: "incrementation", onClick: this.incrementeList }, "Add entry")); } else { var options = item[field.name] && item[field.name].length > 0 ? item[field.name].map(function (mark, i) { return { key: "".concat(JSON.stringify(mark), "_").concat(i), text: mark, value: mark }; }) : []; return _react.default.createElement(_semanticUiReact.Form.Dropdown, { key: id, name: field.name, fluid: true, multiple: true, label: field.label, search: true, selection: true, allowAdditions: true, options: options, onChange: nested ? this.updateNestedValue : this.updateNormalValue, value: item[field.name] || [] }); } } } }]); return SingleWidget; }(_react.Component); var _default = WidgetSelector; exports.default = _default;