@react-awesome-query-builder/mui
Version:
User-friendly query builder for React. MUI 5 widgets
62 lines • 2.29 kB
JavaScript
import React from "react";
import FormControl from "@mui/material/FormControl";
import ButtonGroup from "@mui/material/ButtonGroup";
import Button from "@mui/material/Button";
export default (function (_ref) {
var id = _ref.id,
not = _ref.not,
setNot = _ref.setNot,
conjunctionOptions = _ref.conjunctionOptions,
setConjunction = _ref.setConjunction,
disabled = _ref.disabled,
readonly = _ref.readonly,
config = _ref.config,
showNot = _ref.showNot,
notLabel = _ref.notLabel;
//TIP: disabled=true if only 1 rule; readonly=true if immutable mode
var conjsCount = Object.keys(conjunctionOptions).length;
var lessThenTwo = disabled;
var forceShowConj = config.settings.forceShowConj;
var showConj = forceShowConj || conjsCount > 1 && !lessThenTwo;
var renderOptions = function renderOptions() {
return Object.keys(conjunctionOptions).map(function (key) {
var _conjunctionOptions$k = conjunctionOptions[key],
id = _conjunctionOptions$k.id,
name = _conjunctionOptions$k.name,
label = _conjunctionOptions$k.label,
checked = _conjunctionOptions$k.checked;
var postfix = setConjunction.isDummyFn ? "__dummy" : "";
if ((readonly || disabled) && !checked) return null;
return /*#__PURE__*/React.createElement(Button, {
key: id + postfix,
id: id + postfix,
color: checked ? "primary" : "inherit",
value: key,
onClick: onClick.bind(null, key),
disabled: readonly || disabled
}, label);
});
};
var renderNot = function renderNot() {
if (readonly && !not) return null;
return /*#__PURE__*/React.createElement(Button, {
key: id,
id: id + "__not",
color: not ? "error" : "inherit",
onClick: onNotClick.bind(null, !not),
disabled: readonly
}, notLabel || "NOT");
};
var onClick = function onClick(value) {
return setConjunction(value);
};
var onNotClick = function onNotClick(checked) {
return setNot(checked);
};
return /*#__PURE__*/React.createElement(FormControl, null, /*#__PURE__*/React.createElement(ButtonGroup, {
disableElevation: true,
variant: "contained",
size: "small",
disabled: readonly
}, showNot && renderNot(), showConj && renderOptions()));
});