@makeen.io/material-ui-kit
Version:
Makeen UI components kit. Based on material-ui.
63 lines (59 loc) • 2.95 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";import _extends from "@babel/runtime/helpers/extends";import React from "react";
import { Grid } from "@material-ui/core";
import _ from "lodash";
import { MuiFormLayout, MuiHeader } from "../../../..";
var useMountEffect = function useMountEffect(fun) {return React.useEffect(fun, []);};
function groupReducer(state, action) {
switch (action.type) {
case "add-group":
return _extends({},
state, {
groups: [].concat(_toConsumableArray(state.groups), [action.group]) });
case "set-actions":
return _extends({},
state, {
actions: action.actions });
default:
return state;}
}
export default function MuiFormGroup(props) {var _React$useReducer =
React.useReducer(groupReducer, {
groups: [],
schema: _.get(props.schema, props.name)
}),_React$useReducer2 = _slicedToArray(_React$useReducer, 2),state = _React$useReducer2[0],dispatch = _React$useReducer2[1];
var schema = _.get(props.schema, props.name);
var actions = [];
if (schema.maxOcc > 1) {
actions.push({
key: "add-section",
color: "primary",
title: "Add ".concat(props.name),
onClick: function onClick() {return addNewGroup();}
});
}
var addNewGroup = function addNewGroup() {
var name = schema.maxOcc > 1 ? "".concat(
props.name, "[").concat(state.groups.length, "]") : "".concat(
props.name);
dispatch({
type: "add-group",
group: {
section: _(props.section).
map(function (section) {return _extends({},
section, {
controls: _(section.controls).
map(function (c) {return _extends({}, c, { name: "".concat(name, ".").concat(c.name) });}).
value() });}).
value()
}
});
};
useMountEffect(addNewGroup);var
title = props.title,description = props.description;var
groups = state.groups;
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/
React.createElement(MuiHeader, _extends({ type: "sub" }, { title: title, description: description, actions: actions })),
_.map(groups, function (_ref, index) {var section = _ref.section,key = _ref.key;return /*#__PURE__*/React.createElement(Grid, { key: String(index), container: true, spacing: 3 }, _.map(section, function (_ref2, index) {var controls = _ref2.controls,_ref2$grid = _slicedToArray(_ref2.grid, 4),offset = _ref2$grid[0],md = _ref2$grid[1],sm = _ref2$grid[2],lg = _ref2$grid[3];return /*#__PURE__*/React.createElement(Grid, _extends({ key: String(index), item: true }, { offset: offset, md: md, sm: sm, lg: lg }), /*#__PURE__*/
React.createElement(MuiFormLayout, { controls: controls, formObject: props.formObject, schema: props.schema, key: "".concat(key, ".").concat(index) }));}));}));
}
//# sourceMappingURL=MuiFormGroup.js.map