react-awesome-query-builder-pd
Version:
User-friendly query builder for React. Demo: https://ukrbublik.github.io/react-awesome-query-builder
36 lines (28 loc) • 1.24 kB
JSX
import React from "react";
export default ({id, not, setNot, conjunctionOptions, setConjunction, disabled, readonly, config, showNot, notLabel}) => {
const conjsCount = Object.keys(conjunctionOptions).length;
const lessThenTwo = disabled;
const renderOptions = () =>
Object.keys(conjunctionOptions).map(key => {
const {id, name, label, checked} = conjunctionOptions[key];
let postfix = setConjunction.isDummyFn ? "__dummy" : "";
return [
<input key={id+postfix} type="radio" id={id+postfix} name={name+postfix} checked={checked} disabled={readonly} value={key} onChange={onChange} />
,
<label key={id+postfix+"label"} htmlFor={id+postfix}>{label}</label>
];
});
const renderNot = () => {
return [
<input key={id} type="checkbox" id={id + "__not"} checked={not} disabled={readonly} onChange={onNotChange} />
,
<label key={id+"label"} htmlFor={id + "__not"}>{notLabel || "NOT"}</label>
];
};
const onChange = e => setConjunction(e.target.value);
const onNotChange = e => setNot(e.target.checked);
return [
showNot && renderNot(),
conjsCount > 1 && !lessThenTwo && renderOptions()
];
};