@arudovwen/react-form-builder
Version:
A complete form builder for react.
45 lines (44 loc) • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ToggleFieldsContainer;
var _react = _interopRequireWildcard(require("react"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function ToggleFieldsContainer({
toggleVisibility,
fields = [],
results = {},
data,
children
}) {
const dependentValue = (0, _react.useMemo)(() => results?.[data?.dependentField], [results, data]);
const toggleResult = (0, _react.useMemo)(() => fields.every(field => {
const value = results?.[field.field_name];
const operator = field.operator || 'equals';
if (field.id && field.label && field.fieldType && field.value != null) {
const valA = field.value;
const valB = value;
switch (operator) {
case 'equals':
return String(valA).toLowerCase() === String(valB).toLowerCase();
case 'not_equals':
return String(valA).toLowerCase() !== String(valB).toLowerCase();
case 'greater':
return Number(valB) > Number(valA);
case 'less':
return Number(valB) < Number(valA);
case 'contains':
return String(valB).toLowerCase().includes(String(valA).toLowerCase());
case 'not_contains':
return !String(valB).toLowerCase().includes(String(valA).toLowerCase());
default:
return false;
}
}
return false;
}), [fields, results]);
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
className: data?.isCascade && !dependentValue || toggleVisibility && (!toggleResult || !fields.length) ? 'opacity-10 h-0 overflow-hidden' : ''
}, children));
}