@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
87 lines (86 loc) • 3.18 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const ClickAwayListener = require("@mui/base/ClickAwayListener");
const Popper = require("@mui/base/Popper");
const utils = require("@mui/material/utils");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const document = require("../../utils/document.cjs");
const setId = require("../../utils/setId.cjs");
const context = require("../context.cjs");
const Suggestions_styles = require("./Suggestions.styles.cjs");
const SelectionList = require("../../SelectionList/SelectionList.cjs");
const ListItem = require("../../ListContainer/ListItem/ListItem.cjs");
const HvSuggestions = React.forwardRef(function HvSuggestions2(props, extRef) {
const {
id: idProp,
className,
classes: classesProp,
expanded = false,
enablePortal,
open: openProp,
anchorEl,
suggestionValues,
onClose,
onSuggestionSelected,
popperProps,
...others
} = uikitReactUtils.useDefaultProps("HvSuggestions", props);
const { classes, cx } = Suggestions_styles.useClasses(classesProp);
const { rootId } = uikitReactUtils.useTheme();
const context$1 = React.useContext(context.HvFormElementContext);
const id = idProp ?? setId.setId(context$1.id, "suggestions");
const ref = React.useRef(null);
const forkedRef = utils.useForkRef(ref, extRef);
const [isOpen, setIsOpen] = React.useState(expanded);
React.useEffect(() => {
setIsOpen(expanded);
}, [expanded]);
return /* @__PURE__ */ jsxRuntime.jsx(
"div",
{
id,
ref: forkedRef,
className: cx(classes.root, className),
...others,
children: /* @__PURE__ */ jsxRuntime.jsx(
ClickAwayListener.ClickAwayListener,
{
onClickAway: (event) => {
setIsOpen(false);
onClose?.(event);
},
children: /* @__PURE__ */ jsxRuntime.jsx(
Popper.Popper,
{
style: {
// @ts-ignore
"--popper-width": enablePortal ? `${anchorEl?.clientWidth}px` : "100%"
},
open: openProp ?? isOpen,
disablePortal: !enablePortal,
container: enablePortal ? document.getContainerElement(rootId) : void 0,
anchorEl,
className: cx(classes.popper, {
[classes.portal]: enablePortal
}),
...popperProps,
children: /* @__PURE__ */ jsxRuntime.jsx(
SelectionList.HvSelectionList,
{
className: classes.list,
id: setId.setId(id, "list"),
onChange: onSuggestionSelected,
children: suggestionValues?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(ListItem.HvListItem, { value: item, disabled: item.disabled, children: item.label }, item.id))
}
)
}
)
}
)
}
);
});
exports.suggestionsClasses = Suggestions_styles.staticClasses;
exports.HvSuggestions = HvSuggestions;