@yamada-ui/popover 1.4.5 → 1.4.6-dev-20241201051428
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-DM7BMTAI.mjs → chunk-3CIQ6HR5.mjs} +2 -2
- package/dist/{chunk-MAIEILC4.mjs → chunk-5T2J7HCS.mjs} +2 -2
- package/dist/{chunk-DSIIS6RK.mjs → chunk-FMZMQMLR.mjs} +44 -31
- package/dist/chunk-FMZMQMLR.mjs.map +1 -0
- package/dist/{chunk-454CM6LT.mjs → chunk-FZV2OLZC.mjs} +2 -2
- package/dist/{chunk-ZWCBPNYU.mjs → chunk-JO4HZF7S.mjs} +2 -2
- package/dist/{chunk-5XOZKPK7.mjs → chunk-M7G3RCAM.mjs} +8 -6
- package/dist/chunk-M7G3RCAM.mjs.map +1 -0
- package/dist/{chunk-7QWRXZGF.mjs → chunk-NS7I3VTN.mjs} +2 -2
- package/dist/{chunk-62XMD3XG.mjs → chunk-S4GMR5U7.mjs} +2 -2
- package/dist/index.js +48 -33
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/popover-anchor.js +43 -30
- package/dist/popover-anchor.js.map +1 -1
- package/dist/popover-anchor.mjs +2 -2
- package/dist/popover-body.js +43 -30
- package/dist/popover-body.js.map +1 -1
- package/dist/popover-body.mjs +2 -2
- package/dist/popover-close-button.js +43 -30
- package/dist/popover-close-button.js.map +1 -1
- package/dist/popover-close-button.mjs +2 -2
- package/dist/popover-content.js +48 -33
- package/dist/popover-content.js.map +1 -1
- package/dist/popover-content.mjs +3 -3
- package/dist/popover-footer.js +43 -30
- package/dist/popover-footer.js.map +1 -1
- package/dist/popover-footer.mjs +2 -2
- package/dist/popover-header.js +43 -30
- package/dist/popover-header.js.map +1 -1
- package/dist/popover-header.mjs +2 -2
- package/dist/popover-trigger.js +43 -30
- package/dist/popover-trigger.js.map +1 -1
- package/dist/popover-trigger.mjs +2 -2
- package/dist/popover.d.mts +23 -3
- package/dist/popover.d.ts +23 -3
- package/dist/popover.js +43 -30
- package/dist/popover.js.map +1 -1
- package/dist/popover.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-5XOZKPK7.mjs.map +0 -1
- package/dist/chunk-DSIIS6RK.mjs.map +0 -1
- /package/dist/{chunk-DM7BMTAI.mjs.map → chunk-3CIQ6HR5.mjs.map} +0 -0
- /package/dist/{chunk-MAIEILC4.mjs.map → chunk-5T2J7HCS.mjs.map} +0 -0
- /package/dist/{chunk-454CM6LT.mjs.map → chunk-FZV2OLZC.mjs.map} +0 -0
- /package/dist/{chunk-ZWCBPNYU.mjs.map → chunk-JO4HZF7S.mjs.map} +0 -0
- /package/dist/{chunk-7QWRXZGF.mjs.map → chunk-NS7I3VTN.mjs.map} +0 -0
- /package/dist/{chunk-62XMD3XG.mjs.map → chunk-S4GMR5U7.mjs.map} +0 -0
package/dist/popover-trigger.js
CHANGED
@@ -37,7 +37,9 @@ var import_react = require("react");
|
|
37
37
|
var import_jsx_runtime = require("react/jsx-runtime");
|
38
38
|
var popoverProperties = [
|
39
39
|
...import_use_popper.popperProperties,
|
40
|
+
"open",
|
40
41
|
"isOpen",
|
42
|
+
"defaultOpen",
|
41
43
|
"defaultIsOpen",
|
42
44
|
"onOpen",
|
43
45
|
"onClose",
|
@@ -50,6 +52,7 @@ var popoverProperties = [
|
|
50
52
|
"trigger",
|
51
53
|
"openDelay",
|
52
54
|
"closeDelay",
|
55
|
+
"Lazy",
|
53
56
|
"isLazy",
|
54
57
|
"lazyBehavior",
|
55
58
|
"animation",
|
@@ -61,7 +64,7 @@ var [PopoverProvider, usePopover] = (0, import_utils.createContext)({
|
|
61
64
|
});
|
62
65
|
var Popover = (props) => {
|
63
66
|
const [styles, mergedProps] = (0, import_core.useComponentMultiStyle)("Popover", props);
|
64
|
-
|
67
|
+
let {
|
65
68
|
animation = "scale",
|
66
69
|
autoFocus = true,
|
67
70
|
children,
|
@@ -72,15 +75,25 @@ var Popover = (props) => {
|
|
72
75
|
duration,
|
73
76
|
initialFocusRef,
|
74
77
|
isLazy,
|
78
|
+
isOpen: isOpenProp,
|
79
|
+
lazy,
|
75
80
|
lazyBehavior = "unmount",
|
81
|
+
open: openProp,
|
76
82
|
openDelay = 200,
|
77
83
|
relatedRef,
|
78
84
|
restoreFocus = true,
|
79
85
|
trigger = "click",
|
80
86
|
...rest
|
81
87
|
} = (0, import_core.omitThemeProps)(mergedProps);
|
88
|
+
lazy != null ? lazy : lazy = isLazy;
|
89
|
+
openProp != null ? openProp : openProp = isOpenProp;
|
82
90
|
const id = (0, import_react.useId)();
|
83
|
-
const {
|
91
|
+
const {
|
92
|
+
isOpen: open,
|
93
|
+
onClose,
|
94
|
+
onOpen,
|
95
|
+
onToggle
|
96
|
+
} = (0, import_use_disclosure.useDisclosure)({ ...mergedProps, isOpen: openProp });
|
84
97
|
const anchorRef = (0, import_react.useRef)(null);
|
85
98
|
const triggerRef = (0, import_react.useRef)(null);
|
86
99
|
const headerRef = (0, import_react.useRef)(null);
|
@@ -88,17 +101,17 @@ var Popover = (props) => {
|
|
88
101
|
const popoverRef = (0, import_react.useRef)(null);
|
89
102
|
const { present, onAnimationComplete } = (0, import_use_animation.useAnimationObserver)({
|
90
103
|
ref: popoverRef,
|
91
|
-
isOpen
|
104
|
+
isOpen: open
|
92
105
|
});
|
93
106
|
const openTimeout = (0, import_react.useRef)(void 0);
|
94
107
|
const closeTimeout = (0, import_react.useRef)(void 0);
|
95
|
-
const
|
108
|
+
const hoveringRef = (0, import_react.useRef)(false);
|
96
109
|
const hasBeenOpened = (0, import_react.useRef)(false);
|
97
110
|
const { forceUpdate, referenceRef, transformOrigin, getPopperProps } = (0, import_use_popper.usePopper)({
|
98
111
|
...rest,
|
99
|
-
enabled:
|
112
|
+
enabled: open
|
100
113
|
});
|
101
|
-
if (
|
114
|
+
if (open) hasBeenOpened.current = true;
|
102
115
|
(0, import_react.useEffect)(() => {
|
103
116
|
return () => {
|
104
117
|
if (openTimeout.current) clearTimeout(openTimeout.current);
|
@@ -107,20 +120,20 @@ var Popover = (props) => {
|
|
107
120
|
}, []);
|
108
121
|
(0, import_use_focus.useFocusOnPointerDown)({
|
109
122
|
ref: triggerRef,
|
110
|
-
enabled:
|
123
|
+
enabled: open
|
111
124
|
});
|
112
125
|
(0, import_use_focus.useFocusOnHide)(popoverRef, {
|
113
126
|
focusRef: triggerRef,
|
114
127
|
shouldFocus: restoreFocus && (trigger === "click" || trigger === "contextmenu"),
|
115
|
-
visible:
|
128
|
+
visible: open
|
116
129
|
});
|
117
130
|
(0, import_use_focus.useFocusOnShow)(popoverRef, {
|
118
131
|
focusRef: initialFocusRef,
|
119
132
|
shouldFocus: autoFocus && (trigger === "click" || trigger === "contextmenu"),
|
120
|
-
visible:
|
133
|
+
visible: open
|
121
134
|
});
|
122
135
|
const shouldRenderChildren = (0, import_use_disclosure.useLazyDisclosure)({
|
123
|
-
enabled:
|
136
|
+
enabled: lazy,
|
124
137
|
isSelected: present,
|
125
138
|
mode: lazyBehavior,
|
126
139
|
wasSelected: hasBeenOpened.current
|
@@ -131,7 +144,7 @@ var Popover = (props) => {
|
|
131
144
|
const popoverProps = {
|
132
145
|
id,
|
133
146
|
"aria-describedby": (_a = bodyRef.current) == null ? void 0 : _a.id,
|
134
|
-
"aria-hidden": !
|
147
|
+
"aria-hidden": !open,
|
135
148
|
"aria-labelledby": (_b = headerRef.current) == null ? void 0 : _b.id,
|
136
149
|
role: "dialog",
|
137
150
|
...props2,
|
@@ -147,8 +160,8 @@ var Popover = (props) => {
|
|
147
160
|
const targetIsPopover = (0, import_utils.isContains)(popoverRef.current, relatedTarget);
|
148
161
|
const targetIsTrigger = (0, import_utils.isContains)(triggerRef.current, relatedTarget);
|
149
162
|
const targetIsRelated = (relatedRef == null ? void 0 : relatedRef.current) ? (0, import_utils.isContains)(relatedRef.current, relatedTarget) : false;
|
150
|
-
const
|
151
|
-
if (
|
163
|
+
const validBlur = !targetIsPopover && !targetIsTrigger && !targetIsRelated;
|
164
|
+
if (open && closeOnBlur && validBlur) onClose();
|
152
165
|
}),
|
153
166
|
onKeyDown: (0, import_utils.handlerAll)(props2.onKeyDown, (ev) => {
|
154
167
|
if (closeOnEsc && ev.key === "Escape") onClose();
|
@@ -156,11 +169,11 @@ var Popover = (props) => {
|
|
156
169
|
};
|
157
170
|
if (trigger === "hover") {
|
158
171
|
popoverProps.onMouseEnter = (0, import_utils.handlerAll)(props2.onMouseEnter, () => {
|
159
|
-
|
172
|
+
hoveringRef.current = true;
|
160
173
|
});
|
161
174
|
popoverProps.onMouseLeave = (0, import_utils.handlerAll)(props2.onMouseLeave, (ev) => {
|
162
175
|
if (ev.nativeEvent.relatedTarget === null) return;
|
163
|
-
|
176
|
+
hoveringRef.current = false;
|
164
177
|
if (closeOnBlur) setTimeout(onClose, closeDelay);
|
165
178
|
});
|
166
179
|
}
|
@@ -170,7 +183,7 @@ var Popover = (props) => {
|
|
170
183
|
closeDelay,
|
171
184
|
closeOnBlur,
|
172
185
|
closeOnEsc,
|
173
|
-
|
186
|
+
open,
|
174
187
|
onClose,
|
175
188
|
shouldRenderChildren,
|
176
189
|
transformOrigin,
|
@@ -188,8 +201,8 @@ var Popover = (props) => {
|
|
188
201
|
const getTriggerProps = (0, import_react.useCallback)(
|
189
202
|
(props2 = {}, ref = null) => {
|
190
203
|
const triggerProps = {
|
191
|
-
"aria-controls":
|
192
|
-
"aria-expanded":
|
204
|
+
"aria-controls": open ? id : void 0,
|
205
|
+
"aria-expanded": open,
|
193
206
|
role: "button",
|
194
207
|
...props2,
|
195
208
|
ref: (0, import_utils.mergeRefs)(triggerRef, ref, maybeReferenceRef)
|
@@ -198,8 +211,8 @@ var Popover = (props) => {
|
|
198
211
|
triggerProps.onClick = (0, import_utils.handlerAll)(props2.onClick, onToggle);
|
199
212
|
triggerProps.onBlur = (0, import_utils.handlerAll)(props2.onBlur, (ev) => {
|
200
213
|
const relatedTarget = (0, import_utils.getEventRelatedTarget)(ev);
|
201
|
-
const
|
202
|
-
if (
|
214
|
+
const validBlur = !(0, import_utils.isContains)(popoverRef.current, relatedTarget);
|
215
|
+
if (open && closeOnBlur && validBlur) onClose();
|
203
216
|
});
|
204
217
|
}
|
205
218
|
if (trigger === "contextmenu") {
|
@@ -209,8 +222,8 @@ var Popover = (props) => {
|
|
209
222
|
});
|
210
223
|
triggerProps.onBlur = (0, import_utils.handlerAll)(props2.onBlur, (ev) => {
|
211
224
|
const relatedTarget = (0, import_utils.getEventRelatedTarget)(ev);
|
212
|
-
const
|
213
|
-
if (
|
225
|
+
const validBlur = !(0, import_utils.isContains)(popoverRef.current, relatedTarget);
|
226
|
+
if (open && closeOnBlur && validBlur) onClose();
|
214
227
|
});
|
215
228
|
}
|
216
229
|
if (trigger === "hover") {
|
@@ -219,24 +232,24 @@ var Popover = (props) => {
|
|
219
232
|
});
|
220
233
|
triggerProps.onBlur = (0, import_utils.handlerAll)(props2.onBlur, (ev) => {
|
221
234
|
const relatedTarget = (0, import_utils.getEventRelatedTarget)(ev);
|
222
|
-
const
|
223
|
-
if (
|
235
|
+
const validBlur = !(0, import_utils.isContains)(popoverRef.current, relatedTarget);
|
236
|
+
if (open && closeOnBlur && validBlur) onClose();
|
224
237
|
});
|
225
238
|
triggerProps.onKeyDown = (0, import_utils.handlerAll)(props2.onKeyDown, (ev) => {
|
226
239
|
if (ev.key === "Escape") onClose();
|
227
240
|
});
|
228
241
|
triggerProps.onMouseEnter = (0, import_utils.handlerAll)(props2.onMouseEnter, () => {
|
229
|
-
|
242
|
+
hoveringRef.current = true;
|
230
243
|
openTimeout.current = window.setTimeout(onOpen, openDelay);
|
231
244
|
});
|
232
245
|
triggerProps.onMouseLeave = (0, import_utils.handlerAll)(props2.onMouseLeave, () => {
|
233
|
-
|
246
|
+
hoveringRef.current = false;
|
234
247
|
if (openTimeout.current) {
|
235
248
|
clearTimeout(openTimeout.current);
|
236
249
|
openTimeout.current = void 0;
|
237
250
|
}
|
238
251
|
closeTimeout.current = window.setTimeout(() => {
|
239
|
-
if (!
|
252
|
+
if (!hoveringRef.current) onClose();
|
240
253
|
}, closeDelay);
|
241
254
|
});
|
242
255
|
}
|
@@ -245,7 +258,7 @@ var Popover = (props) => {
|
|
245
258
|
[
|
246
259
|
closeDelay,
|
247
260
|
closeOnBlur,
|
248
|
-
|
261
|
+
open,
|
249
262
|
maybeReferenceRef,
|
250
263
|
onClose,
|
251
264
|
onOpen,
|
@@ -275,7 +288,7 @@ var Popover = (props) => {
|
|
275
288
|
duration,
|
276
289
|
forceUpdate,
|
277
290
|
headerRef,
|
278
|
-
|
291
|
+
open,
|
279
292
|
styles,
|
280
293
|
getAnchorProps,
|
281
294
|
getPopoverProps,
|
@@ -286,7 +299,7 @@ var Popover = (props) => {
|
|
286
299
|
},
|
287
300
|
children: (0, import_utils.runIfFunc)(children, {
|
288
301
|
forceUpdate,
|
289
|
-
|
302
|
+
open,
|
290
303
|
onClose
|
291
304
|
})
|
292
305
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/popover-trigger.tsx","../src/popover.tsx"],"sourcesContent":["import type { FC } from \"@yamada-ui/core\"\nimport type { PropsWithChildren, ReactElement, RefObject } from \"react\"\nimport { Children, cloneElement } from \"react\"\nimport { usePopover } from \"./popover\"\n\nexport const PopoverTrigger: FC<PropsWithChildren<{}>> = ({ children }) => {\n const child = Children.only(children) as {\n ref: RefObject<any>\n } & ReactElement\n const { getTriggerProps } = usePopover()\n\n return cloneElement(child, getTriggerProps(child.props, child.ref))\n}\n\nPopoverTrigger.displayName = \"PopoverTrigger\"\nPopoverTrigger.__ui__ = \"PopoverTrigger\"\n","import type {\n CSSUIObject,\n FC,\n HTMLUIPropsWithRef,\n PropGetter,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { MotionProps, MotionTransitionProps } from \"@yamada-ui/motion\"\nimport type { LazyMode } from \"@yamada-ui/use-disclosure\"\nimport type { UsePopperProps } from \"@yamada-ui/use-popper\"\nimport type {\n ComponentProps,\n PropsWithChildren,\n RefAttributes,\n RefObject,\n} from \"react\"\nimport { omitThemeProps, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { useAnimationObserver } from \"@yamada-ui/use-animation\"\nimport { useDisclosure, useLazyDisclosure } from \"@yamada-ui/use-disclosure\"\nimport {\n useFocusOnHide,\n useFocusOnPointerDown,\n useFocusOnShow,\n} from \"@yamada-ui/use-focus\"\nimport { popperProperties, usePopper } from \"@yamada-ui/use-popper\"\nimport {\n createContext,\n getEventRelatedTarget,\n handlerAll,\n isContains,\n mergeRefs,\n runIfFunc,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useId, useRef } from \"react\"\n\nexport type PopoverProperty = (typeof popoverProperties)[number]\n\nexport const popoverProperties = [\n ...popperProperties,\n \"isOpen\",\n \"defaultIsOpen\",\n \"onOpen\",\n \"onClose\",\n \"initialFocusRef\",\n \"restoreFocus\",\n \"autoFocus\",\n \"closeOnBlur\",\n \"closeOnEsc\",\n \"closeOnButton\",\n \"trigger\",\n \"openDelay\",\n \"closeDelay\",\n \"isLazy\",\n \"lazyBehavior\",\n \"animation\",\n \"duration\",\n] as const\n\nexport interface ComboBoxProps\n extends Omit<\n PopoverOptions,\n | \"autoFocus\"\n | \"closeOnButton\"\n | \"initialFocusRef\"\n | \"relatedRef\"\n | \"restoreFocus\"\n | \"trigger\"\n >,\n Omit<UsePopperProps, \"enabled\"> {}\n\ninterface PopoverOptions {\n /**\n * The animation of the popover.\n *\n * @default 'scale'\n */\n animation?: \"bottom\" | \"left\" | \"none\" | \"right\" | \"scale\" | \"top\"\n /**\n * If `true`, focus will be transferred to the first interactive element when the popover opens.\n *\n * @default true\n */\n autoFocus?: boolean\n /**\n * The number of delay time to close.\n *\n * @default 200\n */\n closeDelay?: number\n /**\n * If `true`, the popover will close when you blur out it by clicking outside or tabbing out.\n *\n * @default true\n */\n closeOnBlur?: boolean\n /**\n * If `true`, display the popover close button.\n *\n * @default true\n */\n closeOnButton?: boolean\n /**\n * If `true`, the popover will close when you hit the `Esc` key.\n *\n * @default true\n */\n closeOnEsc?: boolean\n /**\n * If `true`, the popover will be initially opened.\n */\n defaultIsOpen?: boolean\n /**\n * The animation duration.\n */\n duration?: MotionTransitionProps[\"duration\"]\n /**\n * The `ref` of the element that should receive focus when the popover opens.\n */\n initialFocusRef?: RefObject<{ focus(): void }>\n /**\n * If `true`, the PopoverContent rendering will be deferred until the popover is open.\n *\n * @default false\n */\n isLazy?: boolean\n /**\n * If `true`, the popover will be opened.\n */\n isOpen?: boolean\n /**\n * The lazy behavior of popover's content when not visible. Only works when `isLazy={true}`\n *\n * - `unmount`: The popover's content is always unmounted when not open.\n * - `keepMounted`: The popover's content initially unmounted, but stays mounted when popover is open.\n *\n * @default 'unmount'\n */\n lazyBehavior?: LazyMode\n /**\n * The number of delay time to open.\n *\n * @default 200\n */\n openDelay?: number\n /**\n * The `ref` of the element related to the popover.\n * This is used during the `onBlur` event.\n */\n relatedRef?: RefObject<HTMLElement>\n /**\n * If `true`, focus will be returned to the element that triggers the popover when it closes.\n *\n * @default true\n */\n restoreFocus?: boolean\n /**\n * The interaction that triggers the popover.\n *\n * - `hover`: means the popover will open when you hover with mouse or focus with keyboard on the popover trigger.\n * - `click`: means the popover will open on click or press `Enter` to `Space` on keyboard.\n *\n * @default 'click'\n */\n trigger?: \"click\" | \"contextmenu\" | \"hover\" | \"never\"\n /**\n * Callback fired when the popover closes.\n */\n onClose?: () => void\n /**\n * Callback fired when the popover opens.\n */\n onOpen?: () => void\n}\n\nexport interface PopoverProps\n extends ThemeProps<\"Popover\">,\n Omit<UsePopperProps, \"enabled\">,\n PropsWithChildren<PopoverOptions> {}\n\ninterface PopoverContext\n extends Pick<\n PopoverOptions,\n \"animation\" | \"closeOnButton\" | \"duration\" | \"isOpen\" | \"onClose\"\n > {\n id: string\n bodyRef: RefObject<HTMLElement>\n forceUpdate: () => undefined | void\n headerRef: RefObject<HTMLElement>\n styles: { [key: string]: CSSUIObject | undefined }\n getAnchorProps: PropGetter\n getPopoverProps: PropGetter<MotionProps<\"section\">, MotionProps<\"section\">>\n getPopperProps: PropGetter<ComponentProps<\"div\">>\n getTriggerProps: PropGetter\n onAnimationComplete: () => void\n}\n\nconst [PopoverProvider, usePopover] = createContext<PopoverContext>({\n name: \"PopoverContext\",\n errorMessage: `usePopoverContext returned is 'undefined'. Seems you forgot to wrap the components in \"<Popover />\"`,\n})\n\nexport { usePopover }\n\n/**\n * `Popover` is a component that floats around an element to display information.\n *\n * @see Docs https://yamada-ui.com/components/overlay/popover\n */\nexport const Popover: FC<PopoverProps> = (props) => {\n const [styles, mergedProps] = useComponentMultiStyle(\"Popover\", props)\n const {\n animation = \"scale\",\n autoFocus = true,\n children,\n closeDelay = 200,\n closeOnBlur = true,\n closeOnButton = true,\n closeOnEsc = true,\n duration,\n initialFocusRef,\n isLazy,\n lazyBehavior = \"unmount\",\n openDelay = 200,\n relatedRef,\n restoreFocus = true,\n trigger = \"click\",\n ...rest\n } = omitThemeProps(mergedProps)\n const id = useId()\n const { isOpen, onClose, onOpen, onToggle } = useDisclosure(mergedProps)\n const anchorRef = useRef<HTMLElement>(null)\n const triggerRef = useRef<HTMLElement>(null)\n const headerRef = useRef<HTMLElement>(null)\n const bodyRef = useRef<HTMLElement>(null)\n const popoverRef = useRef<HTMLElement>(null)\n const { present, onAnimationComplete } = useAnimationObserver({\n ref: popoverRef,\n isOpen,\n })\n const openTimeout = useRef<number | undefined>(undefined)\n const closeTimeout = useRef<number | undefined>(undefined)\n const isHoveringRef = useRef(false)\n const hasBeenOpened = useRef(false)\n const { forceUpdate, referenceRef, transformOrigin, getPopperProps } =\n usePopper({\n ...rest,\n enabled: isOpen,\n })\n\n if (isOpen) hasBeenOpened.current = true\n\n useEffect(() => {\n return () => {\n if (openTimeout.current) clearTimeout(openTimeout.current)\n\n if (closeTimeout.current) clearTimeout(closeTimeout.current)\n }\n }, [])\n\n useFocusOnPointerDown({\n ref: triggerRef,\n enabled: isOpen,\n })\n\n useFocusOnHide(popoverRef, {\n focusRef: triggerRef,\n shouldFocus:\n restoreFocus && (trigger === \"click\" || trigger === \"contextmenu\"),\n visible: isOpen,\n })\n\n useFocusOnShow(popoverRef, {\n focusRef: initialFocusRef,\n shouldFocus:\n autoFocus && (trigger === \"click\" || trigger === \"contextmenu\"),\n visible: isOpen,\n })\n\n const shouldRenderChildren = useLazyDisclosure({\n enabled: isLazy,\n isSelected: present,\n mode: lazyBehavior,\n wasSelected: hasBeenOpened.current,\n })\n\n const getPopoverProps: PropGetter<\n MotionProps<\"section\">,\n MotionProps<\"section\">\n > = useCallback(\n (props = {}, ref = null) => {\n const popoverProps: MotionProps & RefAttributes<any> = {\n id,\n \"aria-describedby\": bodyRef.current?.id,\n \"aria-hidden\": !isOpen,\n \"aria-labelledby\": headerRef.current?.id,\n role: \"dialog\",\n ...props,\n ref: mergeRefs(popoverRef, ref),\n style: {\n ...props.style,\n transformOrigin,\n },\n children: shouldRenderChildren ? props.children : null,\n tabIndex: -1,\n onBlur: handlerAll(props.onBlur, (ev) => {\n const relatedTarget = getEventRelatedTarget(ev)\n const targetIsPopover = isContains(popoverRef.current, relatedTarget)\n const targetIsTrigger = isContains(triggerRef.current, relatedTarget)\n const targetIsRelated = relatedRef?.current\n ? isContains(relatedRef.current, relatedTarget)\n : false\n\n const isValidBlur =\n !targetIsPopover && !targetIsTrigger && !targetIsRelated\n\n if (isOpen && closeOnBlur && isValidBlur) onClose()\n }),\n onKeyDown: handlerAll(props.onKeyDown, (ev) => {\n if (closeOnEsc && ev.key === \"Escape\") onClose()\n }),\n }\n\n if (trigger === \"hover\") {\n popoverProps.onMouseEnter = handlerAll(props.onMouseEnter, () => {\n isHoveringRef.current = true\n })\n\n popoverProps.onMouseLeave = handlerAll(props.onMouseLeave, (ev) => {\n if (ev.nativeEvent.relatedTarget === null) return\n\n isHoveringRef.current = false\n\n if (closeOnBlur) setTimeout(onClose, closeDelay)\n })\n }\n\n return popoverProps\n },\n [\n closeDelay,\n closeOnBlur,\n closeOnEsc,\n isOpen,\n onClose,\n shouldRenderChildren,\n transformOrigin,\n trigger,\n relatedRef,\n id,\n ],\n )\n\n const maybeReferenceRef = useCallback(\n (node: Element) => {\n if (anchorRef.current == null) referenceRef(node)\n },\n [referenceRef],\n )\n\n const getTriggerProps: PropGetter = useCallback(\n (props = {}, ref = null) => {\n const triggerProps: HTMLUIPropsWithRef = {\n \"aria-controls\": isOpen ? id : undefined,\n \"aria-expanded\": isOpen,\n role: \"button\",\n ...props,\n ref: mergeRefs(triggerRef, ref, maybeReferenceRef),\n }\n\n if (trigger === \"click\") {\n triggerProps.onClick = handlerAll(props.onClick, onToggle)\n triggerProps.onBlur = handlerAll(props.onBlur, (ev) => {\n const relatedTarget = getEventRelatedTarget(ev)\n const isValidBlur = !isContains(popoverRef.current, relatedTarget)\n\n if (isOpen && closeOnBlur && isValidBlur) onClose()\n })\n }\n\n if (trigger === \"contextmenu\") {\n triggerProps.onContextMenu = handlerAll(props.onContextMenu, (ev) => {\n ev.preventDefault()\n onOpen()\n })\n triggerProps.onBlur = handlerAll(props.onBlur, (ev) => {\n const relatedTarget = getEventRelatedTarget(ev)\n const isValidBlur = !isContains(popoverRef.current, relatedTarget)\n\n if (isOpen && closeOnBlur && isValidBlur) onClose()\n })\n }\n\n if (trigger === \"hover\") {\n triggerProps.onFocus = handlerAll(props.onFocus, () => {\n if (openTimeout.current === undefined) onOpen()\n })\n\n triggerProps.onBlur = handlerAll(props.onBlur, (ev) => {\n const relatedTarget = getEventRelatedTarget(ev)\n const isValidBlur = !isContains(popoverRef.current, relatedTarget)\n\n if (isOpen && closeOnBlur && isValidBlur) onClose()\n })\n\n triggerProps.onKeyDown = handlerAll(props.onKeyDown, (ev) => {\n if (ev.key === \"Escape\") onClose()\n })\n\n triggerProps.onMouseEnter = handlerAll(props.onMouseEnter, () => {\n isHoveringRef.current = true\n openTimeout.current = window.setTimeout(onOpen, openDelay)\n })\n\n triggerProps.onMouseLeave = handlerAll(props.onMouseLeave, () => {\n isHoveringRef.current = false\n\n if (openTimeout.current) {\n clearTimeout(openTimeout.current)\n openTimeout.current = undefined\n }\n\n closeTimeout.current = window.setTimeout(() => {\n if (!isHoveringRef.current) onClose()\n }, closeDelay)\n })\n }\n\n return triggerProps\n },\n [\n closeDelay,\n closeOnBlur,\n isOpen,\n maybeReferenceRef,\n onClose,\n onOpen,\n onToggle,\n openDelay,\n trigger,\n id,\n ],\n )\n\n const getAnchorProps: PropGetter = useCallback(\n (props = {}, ref = null) => {\n return {\n ...props,\n ref: mergeRefs(ref, anchorRef, referenceRef),\n }\n },\n [anchorRef, referenceRef],\n )\n\n return (\n <PopoverProvider\n value={{\n id,\n animation,\n bodyRef,\n closeOnButton,\n duration,\n forceUpdate,\n headerRef,\n isOpen,\n styles,\n getAnchorProps,\n getPopoverProps,\n getPopperProps,\n getTriggerProps,\n onAnimationComplete,\n onClose,\n }}\n >\n {runIfFunc(children, {\n forceUpdate,\n isOpen,\n onClose,\n })}\n </PopoverProvider>\n )\n}\n\nPopover.displayName = \"Popover\"\nPopover.__ui__ = \"Popover\"\n"],"mappings":"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","names":["import_react","props"]}
|
1
|
+
{"version":3,"sources":["../src/popover-trigger.tsx","../src/popover.tsx"],"sourcesContent":["import type { FC } from \"@yamada-ui/core\"\nimport type { PropsWithChildren, ReactElement, RefObject } from \"react\"\nimport { Children, cloneElement } from \"react\"\nimport { usePopover } from \"./popover\"\n\nexport const PopoverTrigger: FC<PropsWithChildren<{}>> = ({ children }) => {\n const child = Children.only(children) as {\n ref: RefObject<any>\n } & ReactElement\n const { getTriggerProps } = usePopover()\n\n return cloneElement(child, getTriggerProps(child.props, child.ref))\n}\n\nPopoverTrigger.displayName = \"PopoverTrigger\"\nPopoverTrigger.__ui__ = \"PopoverTrigger\"\n","import type {\n CSSUIObject,\n FC,\n HTMLUIPropsWithRef,\n PropGetter,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { MotionProps, MotionTransitionProps } from \"@yamada-ui/motion\"\nimport type { LazyMode } from \"@yamada-ui/use-disclosure\"\nimport type { UsePopperProps } from \"@yamada-ui/use-popper\"\nimport type {\n ComponentProps,\n PropsWithChildren,\n RefAttributes,\n RefObject,\n} from \"react\"\nimport { omitThemeProps, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { useAnimationObserver } from \"@yamada-ui/use-animation\"\nimport { useDisclosure, useLazyDisclosure } from \"@yamada-ui/use-disclosure\"\nimport {\n useFocusOnHide,\n useFocusOnPointerDown,\n useFocusOnShow,\n} from \"@yamada-ui/use-focus\"\nimport { popperProperties, usePopper } from \"@yamada-ui/use-popper\"\nimport {\n createContext,\n getEventRelatedTarget,\n handlerAll,\n isContains,\n mergeRefs,\n runIfFunc,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useId, useRef } from \"react\"\n\nexport type PopoverProperty = (typeof popoverProperties)[number]\n\nexport const popoverProperties = [\n ...popperProperties,\n \"open\",\n \"isOpen\",\n \"defaultOpen\",\n \"defaultIsOpen\",\n \"onOpen\",\n \"onClose\",\n \"initialFocusRef\",\n \"restoreFocus\",\n \"autoFocus\",\n \"closeOnBlur\",\n \"closeOnEsc\",\n \"closeOnButton\",\n \"trigger\",\n \"openDelay\",\n \"closeDelay\",\n \"Lazy\",\n \"isLazy\",\n \"lazyBehavior\",\n \"animation\",\n \"duration\",\n] as const\n\nexport interface ComboBoxProps\n extends Omit<\n PopoverOptions,\n | \"autoFocus\"\n | \"closeOnButton\"\n | \"initialFocusRef\"\n | \"relatedRef\"\n | \"restoreFocus\"\n | \"trigger\"\n >,\n Omit<UsePopperProps, \"enabled\"> {}\n\ninterface PopoverOptions {\n /**\n * The animation of the popover.\n *\n * @default 'scale'\n */\n animation?: \"bottom\" | \"left\" | \"none\" | \"right\" | \"scale\" | \"top\"\n /**\n * If `true`, focus will be transferred to the first interactive element when the popover opens.\n *\n * @default true\n */\n autoFocus?: boolean\n /**\n * The number of delay time to close.\n *\n * @default 200\n */\n closeDelay?: number\n /**\n * If `true`, the popover will close when you blur out it by clicking outside or tabbing out.\n *\n * @default true\n */\n closeOnBlur?: boolean\n /**\n * If `true`, display the popover close button.\n *\n * @default true\n */\n closeOnButton?: boolean\n /**\n * If `true`, the popover will close when you hit the `Esc` key.\n *\n * @default true\n */\n closeOnEsc?: boolean\n /**\n * If `true`, the popover will be initially opened.\n *\n * @deprecated Use `defaultOpen` instead\n */\n defaultIsOpen?: boolean\n /**\n * If `true`, the popover will be initially opened.\n */\n defaultOpen?: boolean\n /**\n * The animation duration.\n */\n duration?: MotionTransitionProps[\"duration\"]\n /**\n * The `ref` of the element that should receive focus when the popover opens.\n */\n initialFocusRef?: RefObject<{ focus(): void }>\n /**\n * If `true`, the PopoverContent rendering will be deferred until the popover is open.\n *\n * @default false\n *\n * @deprecated Use `lazy` instead\n */\n isLazy?: boolean\n /**\n * If `true`, the popover will be opened.\n *\n * @deprecated Use `open` instead\n */\n isOpen?: boolean\n /**\n * If `true`, the PopoverContent rendering will be deferred until the popover is open.\n *\n * @default false\n */\n lazy?: boolean\n /**\n * The lazy behavior of popover's content when not visible. Only works when `lazy={true}`\n *\n * - `unmount`: The popover's content is always unmounted when not open.\n * - `keepMounted`: The popover's content initially unmounted, but stays mounted when popover is open.\n *\n * @default 'unmount'\n */\n lazyBehavior?: LazyMode\n /**\n * If `true`, the popover will be opened.\n */\n open?: boolean\n /**\n * The number of delay time to open.\n *\n * @default 200\n */\n openDelay?: number\n /**\n * The `ref` of the element related to the popover.\n * This is used during the `onBlur` event.\n */\n relatedRef?: RefObject<HTMLElement>\n /**\n * If `true`, focus will be returned to the element that triggers the popover when it closes.\n *\n * @default true\n */\n restoreFocus?: boolean\n /**\n * The interaction that triggers the popover.\n *\n * - `hover`: means the popover will open when you hover with mouse or focus with keyboard on the popover trigger.\n * - `click`: means the popover will open on click or press `Enter` to `Space` on keyboard.\n *\n * @default 'click'\n */\n trigger?: \"click\" | \"contextmenu\" | \"hover\" | \"never\"\n /**\n * Callback fired when the popover closes.\n */\n onClose?: () => void\n /**\n * Callback fired when the popover opens.\n */\n onOpen?: () => void\n}\n\nexport interface PopoverProps\n extends ThemeProps<\"Popover\">,\n Omit<UsePopperProps, \"enabled\">,\n PropsWithChildren<PopoverOptions> {}\n\ninterface PopoverContext\n extends Pick<\n PopoverOptions,\n \"animation\" | \"closeOnButton\" | \"duration\" | \"isOpen\" | \"onClose\" | \"open\"\n > {\n id: string\n bodyRef: RefObject<HTMLElement>\n forceUpdate: () => undefined | void\n headerRef: RefObject<HTMLElement>\n styles: { [key: string]: CSSUIObject | undefined }\n getAnchorProps: PropGetter\n getPopoverProps: PropGetter<MotionProps<\"section\">, MotionProps<\"section\">>\n getPopperProps: PropGetter<ComponentProps<\"div\">>\n getTriggerProps: PropGetter\n onAnimationComplete: () => void\n}\n\nconst [PopoverProvider, usePopover] = createContext<PopoverContext>({\n name: \"PopoverContext\",\n errorMessage: `usePopoverContext returned is 'undefined'. Seems you forgot to wrap the components in \"<Popover />\"`,\n})\n\nexport { usePopover }\n\n/**\n * `Popover` is a component that floats around an element to display information.\n *\n * @see Docs https://yamada-ui.com/components/overlay/popover\n */\nexport const Popover: FC<PopoverProps> = (props) => {\n const [styles, mergedProps] = useComponentMultiStyle(\"Popover\", props)\n let {\n animation = \"scale\",\n autoFocus = true,\n children,\n closeDelay = 200,\n closeOnBlur = true,\n closeOnButton = true,\n closeOnEsc = true,\n duration,\n initialFocusRef,\n isLazy,\n isOpen: isOpenProp,\n lazy,\n lazyBehavior = \"unmount\",\n open: openProp,\n openDelay = 200,\n relatedRef,\n restoreFocus = true,\n trigger = \"click\",\n ...rest\n } = omitThemeProps(mergedProps)\n\n lazy ??= isLazy\n openProp ??= isOpenProp\n\n const id = useId()\n const {\n isOpen: open,\n onClose,\n onOpen,\n onToggle,\n } = useDisclosure({ ...mergedProps, isOpen: openProp })\n const anchorRef = useRef<HTMLElement>(null)\n const triggerRef = useRef<HTMLElement>(null)\n const headerRef = useRef<HTMLElement>(null)\n const bodyRef = useRef<HTMLElement>(null)\n const popoverRef = useRef<HTMLElement>(null)\n const { present, onAnimationComplete } = useAnimationObserver({\n ref: popoverRef,\n isOpen: open,\n })\n const openTimeout = useRef<number | undefined>(undefined)\n const closeTimeout = useRef<number | undefined>(undefined)\n const hoveringRef = useRef(false)\n const hasBeenOpened = useRef(false)\n const { forceUpdate, referenceRef, transformOrigin, getPopperProps } =\n usePopper({\n ...rest,\n enabled: open,\n })\n\n if (open) hasBeenOpened.current = true\n\n useEffect(() => {\n return () => {\n if (openTimeout.current) clearTimeout(openTimeout.current)\n\n if (closeTimeout.current) clearTimeout(closeTimeout.current)\n }\n }, [])\n\n useFocusOnPointerDown({\n ref: triggerRef,\n enabled: open,\n })\n\n useFocusOnHide(popoverRef, {\n focusRef: triggerRef,\n shouldFocus:\n restoreFocus && (trigger === \"click\" || trigger === \"contextmenu\"),\n visible: open,\n })\n\n useFocusOnShow(popoverRef, {\n focusRef: initialFocusRef,\n shouldFocus:\n autoFocus && (trigger === \"click\" || trigger === \"contextmenu\"),\n visible: open,\n })\n\n const shouldRenderChildren = useLazyDisclosure({\n enabled: lazy,\n isSelected: present,\n mode: lazyBehavior,\n wasSelected: hasBeenOpened.current,\n })\n\n const getPopoverProps: PropGetter<\n MotionProps<\"section\">,\n MotionProps<\"section\">\n > = useCallback(\n (props = {}, ref = null) => {\n const popoverProps: MotionProps & RefAttributes<any> = {\n id,\n \"aria-describedby\": bodyRef.current?.id,\n \"aria-hidden\": !open,\n \"aria-labelledby\": headerRef.current?.id,\n role: \"dialog\",\n ...props,\n ref: mergeRefs(popoverRef, ref),\n style: {\n ...props.style,\n transformOrigin,\n },\n children: shouldRenderChildren ? props.children : null,\n tabIndex: -1,\n onBlur: handlerAll(props.onBlur, (ev) => {\n const relatedTarget = getEventRelatedTarget(ev)\n const targetIsPopover = isContains(popoverRef.current, relatedTarget)\n const targetIsTrigger = isContains(triggerRef.current, relatedTarget)\n const targetIsRelated = relatedRef?.current\n ? isContains(relatedRef.current, relatedTarget)\n : false\n\n const validBlur =\n !targetIsPopover && !targetIsTrigger && !targetIsRelated\n\n if (open && closeOnBlur && validBlur) onClose()\n }),\n onKeyDown: handlerAll(props.onKeyDown, (ev) => {\n if (closeOnEsc && ev.key === \"Escape\") onClose()\n }),\n }\n\n if (trigger === \"hover\") {\n popoverProps.onMouseEnter = handlerAll(props.onMouseEnter, () => {\n hoveringRef.current = true\n })\n\n popoverProps.onMouseLeave = handlerAll(props.onMouseLeave, (ev) => {\n if (ev.nativeEvent.relatedTarget === null) return\n\n hoveringRef.current = false\n\n if (closeOnBlur) setTimeout(onClose, closeDelay)\n })\n }\n\n return popoverProps\n },\n [\n closeDelay,\n closeOnBlur,\n closeOnEsc,\n open,\n onClose,\n shouldRenderChildren,\n transformOrigin,\n trigger,\n relatedRef,\n id,\n ],\n )\n\n const maybeReferenceRef = useCallback(\n (node: Element) => {\n if (anchorRef.current == null) referenceRef(node)\n },\n [referenceRef],\n )\n\n const getTriggerProps: PropGetter = useCallback(\n (props = {}, ref = null) => {\n const triggerProps: HTMLUIPropsWithRef = {\n \"aria-controls\": open ? id : undefined,\n \"aria-expanded\": open,\n role: \"button\",\n ...props,\n ref: mergeRefs(triggerRef, ref, maybeReferenceRef),\n }\n\n if (trigger === \"click\") {\n triggerProps.onClick = handlerAll(props.onClick, onToggle)\n triggerProps.onBlur = handlerAll(props.onBlur, (ev) => {\n const relatedTarget = getEventRelatedTarget(ev)\n const validBlur = !isContains(popoverRef.current, relatedTarget)\n\n if (open && closeOnBlur && validBlur) onClose()\n })\n }\n\n if (trigger === \"contextmenu\") {\n triggerProps.onContextMenu = handlerAll(props.onContextMenu, (ev) => {\n ev.preventDefault()\n onOpen()\n })\n triggerProps.onBlur = handlerAll(props.onBlur, (ev) => {\n const relatedTarget = getEventRelatedTarget(ev)\n const validBlur = !isContains(popoverRef.current, relatedTarget)\n\n if (open && closeOnBlur && validBlur) onClose()\n })\n }\n\n if (trigger === \"hover\") {\n triggerProps.onFocus = handlerAll(props.onFocus, () => {\n if (openTimeout.current === undefined) onOpen()\n })\n\n triggerProps.onBlur = handlerAll(props.onBlur, (ev) => {\n const relatedTarget = getEventRelatedTarget(ev)\n const validBlur = !isContains(popoverRef.current, relatedTarget)\n\n if (open && closeOnBlur && validBlur) onClose()\n })\n\n triggerProps.onKeyDown = handlerAll(props.onKeyDown, (ev) => {\n if (ev.key === \"Escape\") onClose()\n })\n\n triggerProps.onMouseEnter = handlerAll(props.onMouseEnter, () => {\n hoveringRef.current = true\n openTimeout.current = window.setTimeout(onOpen, openDelay)\n })\n\n triggerProps.onMouseLeave = handlerAll(props.onMouseLeave, () => {\n hoveringRef.current = false\n\n if (openTimeout.current) {\n clearTimeout(openTimeout.current)\n openTimeout.current = undefined\n }\n\n closeTimeout.current = window.setTimeout(() => {\n if (!hoveringRef.current) onClose()\n }, closeDelay)\n })\n }\n\n return triggerProps\n },\n [\n closeDelay,\n closeOnBlur,\n open,\n maybeReferenceRef,\n onClose,\n onOpen,\n onToggle,\n openDelay,\n trigger,\n id,\n ],\n )\n\n const getAnchorProps: PropGetter = useCallback(\n (props = {}, ref = null) => {\n return {\n ...props,\n ref: mergeRefs(ref, anchorRef, referenceRef),\n }\n },\n [anchorRef, referenceRef],\n )\n\n return (\n <PopoverProvider\n value={{\n id,\n animation,\n bodyRef,\n closeOnButton,\n duration,\n forceUpdate,\n headerRef,\n open,\n styles,\n getAnchorProps,\n getPopoverProps,\n getPopperProps,\n getTriggerProps,\n onAnimationComplete,\n onClose,\n }}\n >\n {runIfFunc(children, {\n forceUpdate,\n open,\n onClose,\n })}\n </PopoverProvider>\n )\n}\n\nPopover.displayName = \"Popover\"\nPopover.__ui__ = \"Popover\"\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAAA,gBAAuC;;;ACcvC,kBAAuD;AACvD,2BAAqC;AACrC,4BAAiD;AACjD,uBAIO;AACP,wBAA4C;AAC5C,mBAOO;AACP,mBAAsD;AAwclD;AApcG,IAAM,oBAAoB;AAAA,EAC/B,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAgKA,IAAM,CAAC,iBAAiB,UAAU,QAAI,4BAA8B;AAAA,EAClE,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;AASM,IAAM,UAA4B,CAAC,UAAU;AAClD,QAAM,CAAC,QAAQ,WAAW,QAAI,oCAAuB,WAAW,KAAK;AACrE,MAAI;AAAA,IACF,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,IACA,aAAa;AAAA,IACb,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,eAAe;AAAA,IACf,MAAM;AAAA,IACN,YAAY;AAAA,IACZ;AAAA,IACA,eAAe;AAAA,IACf,UAAU;AAAA,IACV,GAAG;AAAA,EACL,QAAI,4BAAe,WAAW;AAE9B,+BAAS;AACT,2CAAa;AAEb,QAAM,SAAK,oBAAM;AACjB,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,qCAAc,EAAE,GAAG,aAAa,QAAQ,SAAS,CAAC;AACtD,QAAM,gBAAY,qBAAoB,IAAI;AAC1C,QAAM,iBAAa,qBAAoB,IAAI;AAC3C,QAAM,gBAAY,qBAAoB,IAAI;AAC1C,QAAM,cAAU,qBAAoB,IAAI;AACxC,QAAM,iBAAa,qBAAoB,IAAI;AAC3C,QAAM,EAAE,SAAS,oBAAoB,QAAI,2CAAqB;AAAA,IAC5D,KAAK;AAAA,IACL,QAAQ;AAAA,EACV,CAAC;AACD,QAAM,kBAAc,qBAA2B,MAAS;AACxD,QAAM,mBAAe,qBAA2B,MAAS;AACzD,QAAM,kBAAc,qBAAO,KAAK;AAChC,QAAM,oBAAgB,qBAAO,KAAK;AAClC,QAAM,EAAE,aAAa,cAAc,iBAAiB,eAAe,QACjE,6BAAU;AAAA,IACR,GAAG;AAAA,IACH,SAAS;AAAA,EACX,CAAC;AAEH,MAAI,KAAM,eAAc,UAAU;AAElC,8BAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,YAAY,QAAS,cAAa,YAAY,OAAO;AAEzD,UAAI,aAAa,QAAS,cAAa,aAAa,OAAO;AAAA,IAC7D;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,8CAAsB;AAAA,IACpB,KAAK;AAAA,IACL,SAAS;AAAA,EACX,CAAC;AAED,uCAAe,YAAY;AAAA,IACzB,UAAU;AAAA,IACV,aACE,iBAAiB,YAAY,WAAW,YAAY;AAAA,IACtD,SAAS;AAAA,EACX,CAAC;AAED,uCAAe,YAAY;AAAA,IACzB,UAAU;AAAA,IACV,aACE,cAAc,YAAY,WAAW,YAAY;AAAA,IACnD,SAAS;AAAA,EACX,CAAC;AAED,QAAM,2BAAuB,yCAAkB;AAAA,IAC7C,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,aAAa,cAAc;AAAA,EAC7B,CAAC;AAED,QAAM,sBAGF;AAAA,IACF,CAACC,SAAQ,CAAC,GAAG,MAAM,SAAS;AApUhC;AAqUM,YAAM,eAAiD;AAAA,QACrD;AAAA,QACA,qBAAoB,aAAQ,YAAR,mBAAiB;AAAA,QACrC,eAAe,CAAC;AAAA,QAChB,oBAAmB,eAAU,YAAV,mBAAmB;AAAA,QACtC,MAAM;AAAA,QACN,GAAGA;AAAA,QACH,SAAK,wBAAU,YAAY,GAAG;AAAA,QAC9B,OAAO;AAAA,UACL,GAAGA,OAAM;AAAA,UACT;AAAA,QACF;AAAA,QACA,UAAU,uBAAuBA,OAAM,WAAW;AAAA,QAClD,UAAU;AAAA,QACV,YAAQ,yBAAWA,OAAM,QAAQ,CAAC,OAAO;AACvC,gBAAM,oBAAgB,oCAAsB,EAAE;AAC9C,gBAAM,sBAAkB,yBAAW,WAAW,SAAS,aAAa;AACpE,gBAAM,sBAAkB,yBAAW,WAAW,SAAS,aAAa;AACpE,gBAAM,mBAAkB,yCAAY,eAChC,yBAAW,WAAW,SAAS,aAAa,IAC5C;AAEJ,gBAAM,YACJ,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;AAE3C,cAAI,QAAQ,eAAe,UAAW,SAAQ;AAAA,QAChD,CAAC;AAAA,QACD,eAAW,yBAAWA,OAAM,WAAW,CAAC,OAAO;AAC7C,cAAI,cAAc,GAAG,QAAQ,SAAU,SAAQ;AAAA,QACjD,CAAC;AAAA,MACH;AAEA,UAAI,YAAY,SAAS;AACvB,qBAAa,mBAAe,yBAAWA,OAAM,cAAc,MAAM;AAC/D,sBAAY,UAAU;AAAA,QACxB,CAAC;AAED,qBAAa,mBAAe,yBAAWA,OAAM,cAAc,CAAC,OAAO;AACjE,cAAI,GAAG,YAAY,kBAAkB,KAAM;AAE3C,sBAAY,UAAU;AAEtB,cAAI,YAAa,YAAW,SAAS,UAAU;AAAA,QACjD,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,wBAAoB;AAAA,IACxB,CAAC,SAAkB;AACjB,UAAI,UAAU,WAAW,KAAM,cAAa,IAAI;AAAA,IAClD;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,sBAA8B;AAAA,IAClC,CAACA,SAAQ,CAAC,GAAG,MAAM,SAAS;AAC1B,YAAM,eAAmC;AAAA,QACvC,iBAAiB,OAAO,KAAK;AAAA,QAC7B,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,GAAGA;AAAA,QACH,SAAK,wBAAU,YAAY,KAAK,iBAAiB;AAAA,MACnD;AAEA,UAAI,YAAY,SAAS;AACvB,qBAAa,cAAU,yBAAWA,OAAM,SAAS,QAAQ;AACzD,qBAAa,aAAS,yBAAWA,OAAM,QAAQ,CAAC,OAAO;AACrD,gBAAM,oBAAgB,oCAAsB,EAAE;AAC9C,gBAAM,YAAY,KAAC,yBAAW,WAAW,SAAS,aAAa;AAE/D,cAAI,QAAQ,eAAe,UAAW,SAAQ;AAAA,QAChD,CAAC;AAAA,MACH;AAEA,UAAI,YAAY,eAAe;AAC7B,qBAAa,oBAAgB,yBAAWA,OAAM,eAAe,CAAC,OAAO;AACnE,aAAG,eAAe;AAClB,iBAAO;AAAA,QACT,CAAC;AACD,qBAAa,aAAS,yBAAWA,OAAM,QAAQ,CAAC,OAAO;AACrD,gBAAM,oBAAgB,oCAAsB,EAAE;AAC9C,gBAAM,YAAY,KAAC,yBAAW,WAAW,SAAS,aAAa;AAE/D,cAAI,QAAQ,eAAe,UAAW,SAAQ;AAAA,QAChD,CAAC;AAAA,MACH;AAEA,UAAI,YAAY,SAAS;AACvB,qBAAa,cAAU,yBAAWA,OAAM,SAAS,MAAM;AACrD,cAAI,YAAY,YAAY,OAAW,QAAO;AAAA,QAChD,CAAC;AAED,qBAAa,aAAS,yBAAWA,OAAM,QAAQ,CAAC,OAAO;AACrD,gBAAM,oBAAgB,oCAAsB,EAAE;AAC9C,gBAAM,YAAY,KAAC,yBAAW,WAAW,SAAS,aAAa;AAE/D,cAAI,QAAQ,eAAe,UAAW,SAAQ;AAAA,QAChD,CAAC;AAED,qBAAa,gBAAY,yBAAWA,OAAM,WAAW,CAAC,OAAO;AAC3D,cAAI,GAAG,QAAQ,SAAU,SAAQ;AAAA,QACnC,CAAC;AAED,qBAAa,mBAAe,yBAAWA,OAAM,cAAc,MAAM;AAC/D,sBAAY,UAAU;AACtB,sBAAY,UAAU,OAAO,WAAW,QAAQ,SAAS;AAAA,QAC3D,CAAC;AAED,qBAAa,mBAAe,yBAAWA,OAAM,cAAc,MAAM;AAC/D,sBAAY,UAAU;AAEtB,cAAI,YAAY,SAAS;AACvB,yBAAa,YAAY,OAAO;AAChC,wBAAY,UAAU;AAAA,UACxB;AAEA,uBAAa,UAAU,OAAO,WAAW,MAAM;AAC7C,gBAAI,CAAC,YAAY,QAAS,SAAQ;AAAA,UACpC,GAAG,UAAU;AAAA,QACf,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAA6B;AAAA,IACjC,CAACA,SAAQ,CAAC,GAAG,MAAM,SAAS;AAC1B,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,SAAK,wBAAU,KAAK,WAAW,YAAY;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,CAAC,WAAW,YAAY;AAAA,EAC1B;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC,sCAAU,UAAU;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA;AAAA,EACH;AAEJ;AAEA,QAAQ,cAAc;AACtB,QAAQ,SAAS;;;ADjgBV,IAAM,iBAA4C,CAAC,EAAE,SAAS,MAAM;AACzE,QAAM,QAAQ,uBAAS,KAAK,QAAQ;AAGpC,QAAM,EAAE,gBAAgB,IAAI,WAAW;AAEvC,aAAO,4BAAa,OAAO,gBAAgB,MAAM,OAAO,MAAM,GAAG,CAAC;AACpE;AAEA,eAAe,cAAc;AAC7B,eAAe,SAAS;","names":["import_react","props"]}
|
package/dist/popover-trigger.mjs
CHANGED
package/dist/popover.d.mts
CHANGED
@@ -5,7 +5,7 @@ import { UsePopperProps } from '@yamada-ui/use-popper';
|
|
5
5
|
import { RefObject, PropsWithChildren, ComponentProps } from 'react';
|
6
6
|
|
7
7
|
type PopoverProperty = (typeof popoverProperties)[number];
|
8
|
-
declare const popoverProperties: readonly ["enabled", "offset", "gutter", "preventOverflow", "flip", "matchWidth", "boundary", "eventListeners", "strategy", "placement", "modifiers", "isOpen", "defaultIsOpen", "onOpen", "onClose", "initialFocusRef", "restoreFocus", "autoFocus", "closeOnBlur", "closeOnEsc", "closeOnButton", "trigger", "openDelay", "closeDelay", "isLazy", "lazyBehavior", "animation", "duration"];
|
8
|
+
declare const popoverProperties: readonly ["enabled", "offset", "gutter", "preventOverflow", "flip", "matchWidth", "boundary", "eventListeners", "strategy", "placement", "modifiers", "open", "isOpen", "defaultOpen", "defaultIsOpen", "onOpen", "onClose", "initialFocusRef", "restoreFocus", "autoFocus", "closeOnBlur", "closeOnEsc", "closeOnButton", "trigger", "openDelay", "closeDelay", "Lazy", "isLazy", "lazyBehavior", "animation", "duration"];
|
9
9
|
interface ComboBoxProps extends Omit<PopoverOptions, "autoFocus" | "closeOnButton" | "initialFocusRef" | "relatedRef" | "restoreFocus" | "trigger">, Omit<UsePopperProps, "enabled"> {
|
10
10
|
}
|
11
11
|
interface PopoverOptions {
|
@@ -47,8 +47,14 @@ interface PopoverOptions {
|
|
47
47
|
closeOnEsc?: boolean;
|
48
48
|
/**
|
49
49
|
* If `true`, the popover will be initially opened.
|
50
|
+
*
|
51
|
+
* @deprecated Use `defaultOpen` instead
|
50
52
|
*/
|
51
53
|
defaultIsOpen?: boolean;
|
54
|
+
/**
|
55
|
+
* If `true`, the popover will be initially opened.
|
56
|
+
*/
|
57
|
+
defaultOpen?: boolean;
|
52
58
|
/**
|
53
59
|
* The animation duration.
|
54
60
|
*/
|
@@ -63,14 +69,24 @@ interface PopoverOptions {
|
|
63
69
|
* If `true`, the PopoverContent rendering will be deferred until the popover is open.
|
64
70
|
*
|
65
71
|
* @default false
|
72
|
+
*
|
73
|
+
* @deprecated Use `lazy` instead
|
66
74
|
*/
|
67
75
|
isLazy?: boolean;
|
68
76
|
/**
|
69
77
|
* If `true`, the popover will be opened.
|
78
|
+
*
|
79
|
+
* @deprecated Use `open` instead
|
70
80
|
*/
|
71
81
|
isOpen?: boolean;
|
72
82
|
/**
|
73
|
-
*
|
83
|
+
* If `true`, the PopoverContent rendering will be deferred until the popover is open.
|
84
|
+
*
|
85
|
+
* @default false
|
86
|
+
*/
|
87
|
+
lazy?: boolean;
|
88
|
+
/**
|
89
|
+
* The lazy behavior of popover's content when not visible. Only works when `lazy={true}`
|
74
90
|
*
|
75
91
|
* - `unmount`: The popover's content is always unmounted when not open.
|
76
92
|
* - `keepMounted`: The popover's content initially unmounted, but stays mounted when popover is open.
|
@@ -78,6 +94,10 @@ interface PopoverOptions {
|
|
78
94
|
* @default 'unmount'
|
79
95
|
*/
|
80
96
|
lazyBehavior?: LazyMode;
|
97
|
+
/**
|
98
|
+
* If `true`, the popover will be opened.
|
99
|
+
*/
|
100
|
+
open?: boolean;
|
81
101
|
/**
|
82
102
|
* The number of delay time to open.
|
83
103
|
*
|
@@ -115,7 +135,7 @@ interface PopoverOptions {
|
|
115
135
|
}
|
116
136
|
interface PopoverProps extends ThemeProps<"Popover">, Omit<UsePopperProps, "enabled">, PropsWithChildren<PopoverOptions> {
|
117
137
|
}
|
118
|
-
interface PopoverContext extends Pick<PopoverOptions, "animation" | "closeOnButton" | "duration" | "isOpen" | "onClose"> {
|
138
|
+
interface PopoverContext extends Pick<PopoverOptions, "animation" | "closeOnButton" | "duration" | "isOpen" | "onClose" | "open"> {
|
119
139
|
id: string;
|
120
140
|
bodyRef: RefObject<HTMLElement>;
|
121
141
|
forceUpdate: () => undefined | void;
|
package/dist/popover.d.ts
CHANGED
@@ -5,7 +5,7 @@ import { UsePopperProps } from '@yamada-ui/use-popper';
|
|
5
5
|
import { RefObject, PropsWithChildren, ComponentProps } from 'react';
|
6
6
|
|
7
7
|
type PopoverProperty = (typeof popoverProperties)[number];
|
8
|
-
declare const popoverProperties: readonly ["enabled", "offset", "gutter", "preventOverflow", "flip", "matchWidth", "boundary", "eventListeners", "strategy", "placement", "modifiers", "isOpen", "defaultIsOpen", "onOpen", "onClose", "initialFocusRef", "restoreFocus", "autoFocus", "closeOnBlur", "closeOnEsc", "closeOnButton", "trigger", "openDelay", "closeDelay", "isLazy", "lazyBehavior", "animation", "duration"];
|
8
|
+
declare const popoverProperties: readonly ["enabled", "offset", "gutter", "preventOverflow", "flip", "matchWidth", "boundary", "eventListeners", "strategy", "placement", "modifiers", "open", "isOpen", "defaultOpen", "defaultIsOpen", "onOpen", "onClose", "initialFocusRef", "restoreFocus", "autoFocus", "closeOnBlur", "closeOnEsc", "closeOnButton", "trigger", "openDelay", "closeDelay", "Lazy", "isLazy", "lazyBehavior", "animation", "duration"];
|
9
9
|
interface ComboBoxProps extends Omit<PopoverOptions, "autoFocus" | "closeOnButton" | "initialFocusRef" | "relatedRef" | "restoreFocus" | "trigger">, Omit<UsePopperProps, "enabled"> {
|
10
10
|
}
|
11
11
|
interface PopoverOptions {
|
@@ -47,8 +47,14 @@ interface PopoverOptions {
|
|
47
47
|
closeOnEsc?: boolean;
|
48
48
|
/**
|
49
49
|
* If `true`, the popover will be initially opened.
|
50
|
+
*
|
51
|
+
* @deprecated Use `defaultOpen` instead
|
50
52
|
*/
|
51
53
|
defaultIsOpen?: boolean;
|
54
|
+
/**
|
55
|
+
* If `true`, the popover will be initially opened.
|
56
|
+
*/
|
57
|
+
defaultOpen?: boolean;
|
52
58
|
/**
|
53
59
|
* The animation duration.
|
54
60
|
*/
|
@@ -63,14 +69,24 @@ interface PopoverOptions {
|
|
63
69
|
* If `true`, the PopoverContent rendering will be deferred until the popover is open.
|
64
70
|
*
|
65
71
|
* @default false
|
72
|
+
*
|
73
|
+
* @deprecated Use `lazy` instead
|
66
74
|
*/
|
67
75
|
isLazy?: boolean;
|
68
76
|
/**
|
69
77
|
* If `true`, the popover will be opened.
|
78
|
+
*
|
79
|
+
* @deprecated Use `open` instead
|
70
80
|
*/
|
71
81
|
isOpen?: boolean;
|
72
82
|
/**
|
73
|
-
*
|
83
|
+
* If `true`, the PopoverContent rendering will be deferred until the popover is open.
|
84
|
+
*
|
85
|
+
* @default false
|
86
|
+
*/
|
87
|
+
lazy?: boolean;
|
88
|
+
/**
|
89
|
+
* The lazy behavior of popover's content when not visible. Only works when `lazy={true}`
|
74
90
|
*
|
75
91
|
* - `unmount`: The popover's content is always unmounted when not open.
|
76
92
|
* - `keepMounted`: The popover's content initially unmounted, but stays mounted when popover is open.
|
@@ -78,6 +94,10 @@ interface PopoverOptions {
|
|
78
94
|
* @default 'unmount'
|
79
95
|
*/
|
80
96
|
lazyBehavior?: LazyMode;
|
97
|
+
/**
|
98
|
+
* If `true`, the popover will be opened.
|
99
|
+
*/
|
100
|
+
open?: boolean;
|
81
101
|
/**
|
82
102
|
* The number of delay time to open.
|
83
103
|
*
|
@@ -115,7 +135,7 @@ interface PopoverOptions {
|
|
115
135
|
}
|
116
136
|
interface PopoverProps extends ThemeProps<"Popover">, Omit<UsePopperProps, "enabled">, PropsWithChildren<PopoverOptions> {
|
117
137
|
}
|
118
|
-
interface PopoverContext extends Pick<PopoverOptions, "animation" | "closeOnButton" | "duration" | "isOpen" | "onClose"> {
|
138
|
+
interface PopoverContext extends Pick<PopoverOptions, "animation" | "closeOnButton" | "duration" | "isOpen" | "onClose" | "open"> {
|
119
139
|
id: string;
|
120
140
|
bodyRef: RefObject<HTMLElement>;
|
121
141
|
forceUpdate: () => undefined | void;
|