@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
50 lines (49 loc) • 1.71 kB
JavaScript
import { useQueryBuilderContext } from "../Context.js";
import "../types.js";
import { BooleanValue } from "./BooleanValue.js";
import { DateTimeValue } from "./DateTimeValue.js";
import { EmptyValue } from "./EmptyValue.js";
import { NumericValue } from "./NumericValue.js";
import { TextValue } from "./TextValue.js";
import { jsx } from "react/jsx-runtime";
//#region src/QueryBuilder/Value/Value.tsx
var getRenderer = (renderer, operator) => typeof renderer === "function" && renderer || typeof renderer === "object" && operator && renderer[operator] || typeof renderer === "object" && renderer["DEFAULT"];
var Value = ({ id, attribute, operator, value: valueProp }) => {
const { attributes, initialTouched, renderers, emptyRenderer } = useQueryBuilderContext();
const attrType = attributes?.[attribute]?.type;
if (emptyRenderer?.find((op) => op === operator)) return /* @__PURE__ */ jsx(EmptyValue, { id });
if (attrType && renderers?.[attrType]) {
const Renderer = getRenderer(renderers[attrType], operator) || getRenderer(renderers["DEFAULT"], operator) || void 0;
if (Renderer) return /* @__PURE__ */ jsx(Renderer, {
id,
attribute,
operator,
value: valueProp
});
}
switch (attrType) {
case "boolean": return /* @__PURE__ */ jsx(BooleanValue, {
id,
value: !!valueProp
});
case "numeric": return /* @__PURE__ */ jsx(NumericValue, {
id,
operator,
value: valueProp,
initialTouched
});
case "dateandtime": return /* @__PURE__ */ jsx(DateTimeValue, {
id,
operator,
value: valueProp,
initialTouched
});
default: return /* @__PURE__ */ jsx(TextValue, {
id,
value: valueProp,
initialTouched
});
}
};
//#endregion
export { Value };