@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
82 lines (81 loc) • 2.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const ClickAwayListener = require("@mui/base/ClickAwayListener");
const Portal = require("@mui/base/Portal");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const document = require("../utils/document.cjs");
const context = require("./context.cjs");
const Panel = require("../Panel/Panel.cjs");
const BaseDropdownPanel = ({
classes,
containerId,
children,
disablePortal,
onContainerKeyDown,
onClickAway
}) => {
const { cx } = uikitReactUtils.useCss();
const { popperPlacement, popper, referenceElement, setPopperElement } = context.useBaseDropdownContext();
const { rootId } = uikitReactUtils.useTheme();
const extensionWidth = referenceElement ? referenceElement?.offsetWidth : "inherit";
const container = (
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
/* @__PURE__ */ jsxRuntime.jsxs(
"div",
{
ref: setPopperElement,
className: classes.container,
onKeyDown: onContainerKeyDown,
style: popper?.styles.popper,
...popper?.attributes.popper,
children: [
popperPlacement?.includes("bottom") && /* @__PURE__ */ jsxRuntime.jsx(
"div",
{
style: { width: extensionWidth },
className: cx(classes.inputExtensionOpen, {
[classes.inputExtensionLeftPosition]: popperPlacement.includes("end")
})
}
),
/* @__PURE__ */ jsxRuntime.jsx(
Panel.HvPanel,
{
id: containerId,
"data-popper-placement": popperPlacement,
className: cx(classes.panel, {
[classes.panelOpenedUp]: popperPlacement?.includes("top"),
[classes.panelOpenedDown]: popperPlacement?.includes("bottom")
}),
children
}
),
popperPlacement?.includes("top") && /* @__PURE__ */ jsxRuntime.jsx(
"div",
{
style: { width: extensionWidth },
className: cx(
classes.inputExtensionOpen,
classes.inputExtensionOpenShadow,
{
[classes.inputExtensionFloatRight]: popperPlacement.includes("end"),
[classes.inputExtensionFloatLeft]: popperPlacement.includes("start")
}
)
}
)
]
}
)
);
return /* @__PURE__ */ jsxRuntime.jsx(
Portal.Portal,
{
container: document.getContainerElement(rootId),
disablePortal,
children: /* @__PURE__ */ jsxRuntime.jsx(ClickAwayListener.ClickAwayListener, { onClickAway, children: container })
}
);
};
exports.BaseDropdownPanel = BaseDropdownPanel;