@trail-ui/react
Version:
80 lines (78 loc) • 2.42 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/popover/use-popover.ts
var use_popover_exports = {};
__export(use_popover_exports, {
usePopover: () => usePopover
});
module.exports = __toCommonJS(use_popover_exports);
var import_overlays = require("@react-aria/overlays");
var import_utils = require("@react-aria/utils");
function usePopover(props, state) {
const {
triggerRef,
popoverRef,
isNonModal,
isKeyboardDismissDisabled,
shouldCloseOnInteractOutside,
...otherProps
} = props;
const { overlayProps, underlayProps } = (0, import_overlays.useOverlay)(
{
isOpen: state.isOpen,
onClose: state.close,
shouldCloseOnBlur: true,
// isDismissable: !isNonModal,
isDismissable: true,
isKeyboardDismissDisabled,
shouldCloseOnInteractOutside
},
popoverRef
);
const {
overlayProps: positionProps,
arrowProps,
placement
} = (0, import_overlays.useOverlayPosition)({
...otherProps,
targetRef: triggerRef,
overlayRef: popoverRef,
isOpen: state.isOpen,
onClose: () => {
}
});
(0, import_overlays.usePreventScroll)({
isDisabled: isNonModal || !state.isOpen
});
(0, import_utils.useLayoutEffect)(() => {
if (state.isOpen && !isNonModal && popoverRef.current) {
return (0, import_overlays.ariaHideOutside)([popoverRef.current]);
}
}, [isNonModal, state.isOpen, popoverRef]);
return {
popoverProps: (0, import_utils.mergeProps)(overlayProps, positionProps),
arrowProps,
underlayProps,
placement
};
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
usePopover
});