@hitachivantara/uikit-react-lab
Version:
Contributed React components for the NEXT UI Kit.
42 lines (41 loc) • 1.49 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const jsxRuntime = require("react/jsx-runtime");
const react = require("react");
const uikitReactCore = require("@hitachivantara/uikit-react-core");
const useFlowNode = require("../../hooks/useFlowNode.cjs");
const Select = ({ param, data }) => {
const { id, label, multiple = false, options } = param;
const { setNodeData } = useFlowNode.useFlowNodeUtils();
const [opts, setOpts] = react.useState(
data[id] ? Array.isArray(data[id]) ? data[id] : [data[id]] : void 0
);
const handleChange = (item) => {
const newOpts = Array.isArray(item) ? item.map((x) => x.id) : item?.id ?? void 0;
setNodeData((prev) => ({ ...prev, [id]: newOpts }));
setOpts(
newOpts ? Array.isArray(newOpts) ? newOpts : [newOpts] : void 0
);
};
return /* @__PURE__ */ jsxRuntime.jsx(
uikitReactCore.HvDropdown,
{
className: "nodrag",
disablePortal: true,
label,
values: options?.map((option) => {
const optionId = typeof option === "string" ? option : option.id;
const optionLabel = typeof option === "string" ? option : option.label;
return {
id: optionId,
label: optionLabel,
selected: !!opts?.find((opt) => opt === optionId)
};
}),
onChange: handleChange,
maxHeight: 100,
multiSelect: multiple
}
);
};
exports.default = Select;