meteor-interface
Version:
Simple Content Management System to generate your administration interface for Meteor and React.
107 lines (91 loc) • 3.09 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _semanticUiReact = require("semantic-ui-react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Packages
var WidgetSelector = function WidgetSelector(_ref) {
var _ref$item = _ref.item,
item = _ref$item === void 0 ? {} : _ref$item,
_ref$collection = _ref.collection,
collection = _ref$collection === void 0 ? {} : _ref$collection,
ready = _ref.ready;
if (!ready) {
return null;
}
var list = collection.fields ? collection.fields.map(function (field) {
var widget = null;
switch (field.widget) {
case 'string':
widget = _react.default.createElement("div", null, item[field.name]);
break;
case 'multiline':
widget = _react.default.createElement("div", {
style: {
whiteSpace: 'pre-line'
},
dangerouslySetInnerHTML: {
__html: item[field.name]
}
});
break;
case 'html':
widget = _react.default.createElement("div", {
dangerouslySetInnerHTML: {
__html: item[field.name]
}
});
break;
case 'image':
widget = _react.default.createElement(_semanticUiReact.Image, {
size: "small",
centered: true,
rounded: true,
src: item[field.name]
});
break;
case 'boolean':
widget = _react.default.createElement(_semanticUiReact.Icon, {
size: "huge",
color: item[field.name] ? 'green' : 'red',
name: item[field.name] ? 'check' : 'remove'
});
break;
case 'list':
if (field.fields && field.fields.length) {
widget = item[field.name] ? item[field.name].map(function (mark, i) {
return _react.default.createElement(_semanticUiReact.Message, {
key: i
}, _react.default.createElement(_semanticUiReact.Segment.Group, null, _react.default.createElement(WidgetSelector, {
collection: field,
item: mark,
ready: ready
})));
}) : null;
} else if (item[field.name] && item[field.name].length && typeof item[field.name][0] === 'string') {
widget = _react.default.createElement(_semanticUiReact.List, {
bulleted: true
}, item[field.name].map(function (mark, i) {
return _react.default.createElement(_semanticUiReact.List.Item, {
key: i
}, mark);
}));
}
break;
}
return _react.default.createElement(_semanticUiReact.Segment, {
key: field.name
}, _react.default.createElement(_semanticUiReact.Label, {
as: "a",
color: "green",
ribbon: true,
size: "small"
}, field.name), widget);
}) : null;
return list;
};
var _default = WidgetSelector;
exports.default = _default;