UNPKG

react-awesome-query-builder-pd

Version:

User-friendly query builder for React. Demo: https://ukrbublik.github.io/react-awesome-query-builder

107 lines (100 loc) 3.12 kB
import React, { PureComponent } from "react"; import PropTypes from "prop-types"; import Rule from "./Rule"; import Group from "./Group"; import RuleGroup from "./RuleGroup"; import RuleGroupExt from "./RuleGroupExt"; const types = [ "rule", "group", "rule_group" ]; const typeMap = { rule: (props) => ( <Rule {...props.properties.toObject()} id={props.id} path={props.path} actions={props.actions} reordableNodesCnt={props.reordableNodesCnt} totalRulesCnt={props.totalRulesCnt} config={props.config} onDragStart={props.onDragStart} isDraggingTempo={props.isDraggingTempo} parentField={props.parentField} /> ), group: (props) => ( <Group {...props.properties.toObject()} id={props.id} path={props.path} actions={props.actions} config={props.config} //tree={props.tree} reordableNodesCnt={props.reordableNodesCnt} totalRulesCnt={props.totalRulesCnt} onDragStart={props.onDragStart} isDraggingTempo={props.isDraggingTempo} children1={props.children1} parentField={null} /> ), rule_group: (props) => ( <RuleGroup {...props.properties.toObject()} id={props.id} path={props.path} actions={props.actions} config={props.config} //tree={props.tree} reordableNodesCnt={props.reordableNodesCnt} totalRulesCnt={props.totalRulesCnt} onDragStart={props.onDragStart} isDraggingTempo={props.isDraggingTempo} children1={props.children1} parentField={props.parentField} /> ), rule_group_ext: (props) => ( <RuleGroupExt {...props.properties.toObject()} id={props.id} path={props.path} actions={props.actions} config={props.config} //tree={props.tree} reordableNodesCnt={props.reordableNodesCnt} totalRulesCnt={props.totalRulesCnt} onDragStart={props.onDragStart} isDraggingTempo={props.isDraggingTempo} children1={props.children1} parentField={props.parentField} /> ), }; class Item extends PureComponent { static propTypes = { //tree: PropTypes.instanceOf(Immutable.Map).isRequired, config: PropTypes.object.isRequired, id: PropTypes.string.isRequired, type: PropTypes.oneOf(types).isRequired, path: PropTypes.any.isRequired, //instanceOf(Immutable.List) properties: PropTypes.any.isRequired, //instanceOf(Immutable.Map) children1: PropTypes.any, //instanceOf(Immutable.OrderedMap) actions: PropTypes.object.isRequired, reordableNodesCnt: PropTypes.number, onDragStart: PropTypes.func, parentField: PropTypes.string, //from RuleGroup isDraggingTempo: PropTypes.bool, }; render() { const { type, ...props } = this.props; const mode = props.properties.get("mode"); const postfix = mode == "array" ? "_ext" : ""; const Cmp = typeMap[type + postfix]; if (!Cmp) return null; return Cmp(props); } } export { Item };