UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

166 lines (162 loc) • 5.74 kB
"use client"; const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs'); const require_utils_index = require('../../utils/index.cjs'); const require_create_component = require('../../core/components/create-component.cjs'); const require_factory = require('../motion/factory.cjs'); const require_portal = require('../portal/portal.cjs'); const require_popover_style = require('./popover.style.cjs'); const require_fade_scale = require('../fade-scale/fade-scale.cjs'); const require_slide_fade = require('../slide-fade/slide-fade.cjs'); const require_use_popover = require('./use-popover.cjs'); let react = require("react"); react = require_rolldown_runtime.__toESM(react); let react_jsx_runtime = require("react/jsx-runtime"); react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime); let motion_react = require("motion/react"); motion_react = require_rolldown_runtime.__toESM(motion_react); //#region src/components/popover/popover.tsx const getPopupAnimationProps = (animationScheme = "scale", duration) => { const sharedProps = { animate: "enter", exit: "exit", initial: "exit" }; switch (animationScheme) { case "scale": return { ...sharedProps, custom: { duration, reverse: true, scale: .95 }, variants: require_fade_scale.fadeScaleVariants }; case "block-start": return { ...sharedProps, custom: { duration, offsetY: -16, reverse: true }, variants: require_slide_fade.slideFadeVariants }; case "inline-end": return { ...sharedProps, custom: { duration, offsetX: 16, reverse: true }, variants: require_slide_fade.slideFadeVariants }; case "inline-start": return { ...sharedProps, custom: { duration, offsetX: -16, reverse: true }, variants: require_slide_fade.slideFadeVariants }; case "block-end": return { ...sharedProps, custom: { duration, offsetY: 16, reverse: true }, variants: require_slide_fade.slideFadeVariants }; default: return {}; } }; const { ComponentContext, PropsContext: PopoverPropsContext, StyleContext, useComponentContext, usePropsContext: usePopoverPropsContext, withContext, useRootComponentProps } = require_create_component.createSlotComponent("popover", require_popover_style.popoverStyle); /** * `Popover` is a component that floats around an element to display information. * * @see https://yamada-ui.com/docs/components/popover */ const PopoverRoot = (props) => { const [styleContext, { animationScheme = "scale", children, duration = .1, withCloseButton = true,...rest }] = useRootComponentProps(props); const { open, getAnchorProps, getBodyProps, getContentProps, getFooterProps, getHeaderProps, getPositionerProps, getTriggerProps, onClose } = require_use_popover.usePopover(rest); return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyleContext, { value: styleContext, children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ComponentContext, { value: (0, react.useMemo)(() => ({ animationScheme, duration, open, withCloseButton, getAnchorProps, getBodyProps, getContentProps, getFooterProps, getHeaderProps, getPositionerProps, getTriggerProps }), [ withCloseButton, open, animationScheme, duration, getAnchorProps, getBodyProps, getContentProps, getFooterProps, getHeaderProps, getPositionerProps, getTriggerProps ]), children: (0, require_utils_index.utils_exports.runIfFn)(children, { open, onClose }) }) }); }; const PopoverTrigger = withContext("button", "trigger")({ asChild: true }, (props) => { const { getTriggerProps } = useComponentContext(); return getTriggerProps(props); }); const PopoverAnchor = withContext("div", "anchor")({ asChild: true }, (props) => { const { getAnchorProps } = useComponentContext(); return getAnchorProps(props); }); const PopoverPositioner = withContext("div", "positioner")(void 0, (props) => { const { getPositionerProps } = useComponentContext(); return getPositionerProps(props); }); const PopoverContent = withContext(({ portalProps,...rest }) => { const { animationScheme, duration, open, getContentProps } = useComponentContext(); return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.AnimatePresence, { children: open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_portal.Portal, { ...portalProps, children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PopoverPositioner, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_factory.motion.div, { ...getPopupAnimationProps(animationScheme, duration), ...(0, require_utils_index.utils_exports.cast)(getContentProps((0, require_utils_index.utils_exports.cast)(rest))) }) }) }) : null }); }, "content")(); const PopoverHeader = withContext("div", "header")(void 0, (props) => { const { getHeaderProps } = useComponentContext(); return getHeaderProps(props); }); const PopoverBody = withContext("div", "body")(void 0, (props) => { const { getBodyProps } = useComponentContext(); return getBodyProps(props); }); const PopoverFooter = withContext("div", "footer")(void 0, (props) => { const { getFooterProps } = useComponentContext(); return getFooterProps(props); }); //#endregion exports.PopoverAnchor = PopoverAnchor; exports.PopoverBody = PopoverBody; exports.PopoverContent = PopoverContent; exports.PopoverFooter = PopoverFooter; exports.PopoverHeader = PopoverHeader; exports.PopoverPropsContext = PopoverPropsContext; exports.PopoverRoot = PopoverRoot; exports.PopoverTrigger = PopoverTrigger; exports.getPopupAnimationProps = getPopupAnimationProps; exports.usePopoverPropsContext = usePopoverPropsContext; //# sourceMappingURL=popover.cjs.map