material-ui-popup-state
Version:
easiest way to create menus, popovers, and poppers with material-ui
52 lines • 1.78 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import * as React from 'react';
import { Menu as _Menu } from '@mui/material';
import { interopRequireDefault } from "./util/interopRequireDefault.mjs";
// work around https://github.com/vercel/next.js/issues/57285
const Menu = interopRequireDefault(_Menu);
const HoverMenu = /*#__PURE__*/React.forwardRef(function HoverMenu(props, ref) {
var _props$slotProps2, _props$PaperProps;
const paperSlotProps = React.useMemo(() => {
var _props$slotProps;
const wrapped = (_props$slotProps = props.slotProps) === null || _props$slotProps === void 0 ? void 0 : _props$slotProps.paper;
if (wrapped instanceof Function) {
return ownerProps => {
const base = wrapped(ownerProps);
return {
...base,
style: {
pointerEvents: 'auto',
...(base === null || base === void 0 ? void 0 : base.style)
}
};
};
}
return {
...wrapped,
style: {
pointerEvents: 'auto',
...(wrapped === null || wrapped === void 0 ? void 0 : wrapped.style)
}
};
}, [(_props$slotProps2 = props.slotProps) === null || _props$slotProps2 === void 0 ? void 0 : _props$slotProps2.paper]);
return /*#__PURE__*/React.createElement(Menu, _extends({}, props, {
ref: ref,
style: {
pointerEvents: 'none',
...props.style
},
PaperProps: {
...props.PaperProps,
style: {
pointerEvents: 'auto',
...((_props$PaperProps = props.PaperProps) === null || _props$PaperProps === void 0 ? void 0 : _props$PaperProps.style)
}
},
slotProps: {
...props.slotProps,
paper: paperSlotProps
}
}));
});
export default HoverMenu;
//# sourceMappingURL=HoverMenu.mjs.map