@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
55 lines (54 loc) • 2.61 kB
JavaScript
"use client";
require("../../../_virtual/_rolldown/runtime.cjs");
const require_create_event_handler = require("../../../core/utils/create-event-handler/create-event-handler.cjs");
const require_use_props = require("../../../core/MantineProvider/use-props/use-props.cjs");
const require_factory = require("../../../core/factory/factory.cjs");
const require_Popover = require("../../Popover/Popover.cjs");
const require_Menu_context = require("../Menu.context.cjs");
const require_Menu_module = require("../Menu.module.cjs");
let react = require("react");
let _mantine_hooks = require("@mantine/hooks");
let react_jsx_runtime = require("react/jsx-runtime");
//#region packages/@mantine/core/src/components/Menu/MenuDropdown/MenuDropdown.tsx
const MenuDropdown = require_factory.factory((props) => {
const { classNames, className, style, styles, vars, onMouseEnter, onMouseLeave, onKeyDown, children, ref, ...others } = require_use_props.useProps("MenuDropdown", null, props);
const wrapperRef = (0, react.useRef)(null);
const ctx = require_Menu_context.useMenuContext();
const handleKeyDown = require_create_event_handler.createEventHandler(onKeyDown, (event) => {
if (event.key === "ArrowUp" || event.key === "ArrowDown") {
event.preventDefault();
wrapperRef.current?.querySelectorAll("[data-menu-item]:not(:disabled)")[0]?.focus();
}
});
const handleMouseEnter = require_create_event_handler.createEventHandler(onMouseEnter, () => (ctx.trigger === "hover" || ctx.trigger === "click-hover") && ctx.openDropdown());
const handleMouseLeave = require_create_event_handler.createEventHandler(onMouseLeave, () => (ctx.trigger === "hover" || ctx.trigger === "click-hover") && ctx.closeDropdown());
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Popover.Popover.Dropdown, {
...others,
onMouseEnter: handleMouseEnter,
onMouseLeave: handleMouseLeave,
role: "menu",
"aria-orientation": "vertical",
ref: (0, _mantine_hooks.useMergedRef)(ref, wrapperRef),
...ctx.getStyles("dropdown", {
className,
style,
styles,
classNames,
withStaticClass: false
}),
tabIndex: -1,
"data-menu-dropdown": true,
onKeyDown: handleKeyDown,
children: [ctx.withInitialFocusPlaceholder && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
tabIndex: -1,
"data-autofocus": true,
"data-mantine-stop-propagation": true,
style: { outline: 0 }
}), children]
});
});
MenuDropdown.classes = require_Menu_module.default;
MenuDropdown.displayName = "@mantine/core/MenuDropdown";
//#endregion
exports.MenuDropdown = MenuDropdown;
//# sourceMappingURL=MenuDropdown.cjs.map