UNPKG

@makeen.io/material-ui-kit

Version:
63 lines (59 loc) 2.95 kB
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