@coocoon/react-awesome-query-builder
Version:
User-friendly query builder for React. Demo: https://ukrbublik.github.io/react-awesome-query-builder
79 lines (69 loc) • 2.47 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _default = function _default(_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;
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["default"].createElement("input", {
key: id + postfix,
type: "radio",
id: id + postfix,
name: name + postfix,
checked: checked,
disabled: readonly || disabled,
value: key,
onChange: onChange
}), /*#__PURE__*/_react["default"].createElement("label", {
key: id + postfix + "label",
htmlFor: id + postfix
}, label)];
});
};
var renderNot = function renderNot() {
var postfix = "not";
return [/*#__PURE__*/_react["default"].createElement("input", {
key: id + postfix,
type: "checkbox",
id: id + postfix,
checked: not,
disabled: readonly,
onChange: onNotChange
}), /*#__PURE__*/_react["default"].createElement("label", {
key: id + postfix + "label",
htmlFor: id + postfix
}, notLabel || "NOT")];
};
var onChange = function onChange(e) {
return setConjunction(e.target.value);
};
var onNotChange = function onNotChange(e) {
return setNot(e.target.checked);
};
return [showNot && renderNot(), showConj && renderOptions()];
};
exports["default"] = _default;