@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
77 lines (76 loc) • 2.44 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const Context = require("../../Context.cjs");
const types = require("../../types.cjs");
const EmptyValue = require("./EmptyValue/EmptyValue.cjs");
const TextValue = require("./TextValue/TextValue.cjs");
const DateTimeValue = require("./DateTimeValue/DateTimeValue.cjs");
const NumericValue = require("./NumericValue/NumericValue.cjs");
const BooleanValue = require("./BooleanValue/BooleanValue.cjs");
const getRenderer = (renderer, operator) => (
// 1. Custom renderer
typeof renderer === "function" && renderer || // 2. Custom operator renderer
typeof renderer === "object" && operator && renderer[operator] || // 3. Custom DEFAULT renderer
typeof renderer === "object" && renderer[types.defaultRendererKey]
);
const Value = ({
id,
attribute,
operator,
value: valueProp
}) => {
const { attributes, initialTouched, renderers, emptyRenderer } = Context.useQueryBuilderContext();
const attrType = attributes?.[attribute]?.type;
if (emptyRenderer?.find((op) => op === operator)) {
return /* @__PURE__ */ jsxRuntime.jsx(EmptyValue.EmptyValue, { id });
}
if (attrType && renderers?.[attrType]) {
const Renderer = getRenderer(renderers[attrType], operator) || getRenderer(renderers[types.defaultRendererKey], operator) || void 0;
if (Renderer) {
return /* @__PURE__ */ jsxRuntime.jsx(
Renderer,
{
id,
attribute,
operator,
value: valueProp
}
);
}
}
switch (attrType) {
case "boolean": {
return /* @__PURE__ */ jsxRuntime.jsx(BooleanValue.BooleanValue, { id, value: !!valueProp });
}
case "numeric": {
return /* @__PURE__ */ jsxRuntime.jsx(
NumericValue.NumericValue,
{
id,
operator,
value: valueProp,
initialTouched
}
);
}
case "dateandtime": {
return /* @__PURE__ */ jsxRuntime.jsx(
DateTimeValue.DateTimeValue,
{
id,
operator,
value: valueProp,
initialTouched
}
);
}
case "text":
case "textarea":
default:
return /* @__PURE__ */ jsxRuntime.jsx(TextValue.TextValue, { id, value: valueProp, initialTouched });
}
};
React.memo(Value);
exports.Value = Value;