@servicetitan/anvil2 1.46.2 → 1.46.4
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/CHANGELOG.md +34 -0
- package/dist/{Avatar-CyGjhToG.js → Avatar-3d5Kv2CF.js} +2 -2
- package/dist/{Avatar-CyGjhToG.js.map → Avatar-3d5Kv2CF.js.map} +1 -1
- package/dist/{Avatar-D07f9NH_.js → Avatar-DJ3oJNsv.js} +2 -2
- package/dist/{Avatar-D07f9NH_.js.map → Avatar-DJ3oJNsv.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/{Calendar-X9qUi6Vx.js → Calendar-BqOvsaby.js} +246 -195
- package/dist/Calendar-BqOvsaby.js.map +1 -0
- package/dist/Calendar.js +1 -1
- package/dist/{Checkbox-CcYtto5f.js → Checkbox-C5PX8wur.js} +2 -2
- package/dist/{Checkbox-CcYtto5f.js.map → Checkbox-C5PX8wur.js.map} +1 -1
- package/dist/{Checkbox-BDohwHXQ.js → Checkbox-DAODkzN3.js} +2 -2
- package/dist/{Checkbox-BDohwHXQ.js.map → Checkbox-DAODkzN3.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/{Chip-Bz-vlQ4D.js → Chip-DLU13qe-.js} +2 -2
- package/dist/{Chip-Bz-vlQ4D.js.map → Chip-DLU13qe-.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-DQmW8Tyl.js → Combobox-DO8cIvRQ.js} +6 -6
- package/dist/{Combobox-DQmW8Tyl.js.map → Combobox-DO8cIvRQ.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DateField-C43nfkbx.js → DateField-DLqKbCcm.js} +35 -101
- package/dist/DateField-DLqKbCcm.js.map +1 -0
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-g7n5QYww.js → DateFieldRange-DI-iF-sd.js} +54 -55
- package/dist/DateFieldRange-DI-iF-sd.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-D3tneqeG.js → DateFieldSingle-BXakaSIE.js} +50 -52
- package/dist/DateFieldSingle-BXakaSIE.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-3JBVj3wn.js → DateFieldYearless-BmeKGaDc.js} +2 -2
- package/dist/{DateFieldYearless-3JBVj3wn.js.map → DateFieldYearless-BmeKGaDc.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DaysOfTheWeek-RcPgDoM3.js → DaysOfTheWeek-DPH13VCK.js} +3 -3
- package/dist/{DaysOfTheWeek-RcPgDoM3.js.map → DaysOfTheWeek-DPH13VCK.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-FNJ16gY6.js → Dialog-xsgqM6e1.js} +13 -20
- package/dist/Dialog-xsgqM6e1.js.map +1 -0
- package/dist/Dialog.js +1 -1
- package/dist/DndSort.js +46 -6
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-DT31CMRd.js → Drawer-DpN7wUNy.js} +14 -21
- package/dist/Drawer-DpN7wUNy.js.map +1 -0
- package/dist/Drawer.js +1 -1
- package/dist/{FieldLabel-BP8QK5UR.js → FieldLabel-Bgl3iu13.js} +2 -2
- package/dist/{FieldLabel-BP8QK5UR.js.map → FieldLabel-Bgl3iu13.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{InputMask-CPuYMcw9.js → InputMask-B13KumrK.js} +2 -2
- package/dist/{InputMask-CPuYMcw9.js.map → InputMask-B13KumrK.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-BJI8BQJ-.js → ListView-C-cVQZHp.js} +3 -3
- package/dist/{ListView-BJI8BQJ-.js.map → ListView-C-cVQZHp.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-CUhMbFm2.js → Listbox-DxGx630W.js} +2 -2
- package/dist/{Listbox-CUhMbFm2.js.map → Listbox-DxGx630W.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/{Menu-t_11BIhU.js → Menu-DUZqzpwg.js} +6 -8
- package/dist/Menu-DUZqzpwg.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-Bjf9Tyvf.js → NumberField-DWPAy1eG.js} +7 -7
- package/dist/{NumberField-Bjf9Tyvf.js.map → NumberField-DWPAy1eG.js.map} +1 -1
- package/dist/NumberField.css +9 -6
- package/dist/NumberField.js +1 -1
- package/dist/{Page-BAyXnhz2.js → Page-CRuqAlNu.js} +7 -7
- package/dist/{Page-BAyXnhz2.js.map → Page-CRuqAlNu.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-DCBic619.js → Pagination-B_G9QcHf.js} +3 -3
- package/dist/{Pagination-DCBic619.js.map → Pagination-B_G9QcHf.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CrksxqKk.js → Popover-v8R920kj.js} +135 -200
- package/dist/Popover-v8R920kj.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-CgsAW2d8.js → ProgressBar-BWN2yv1s.js} +2 -2
- package/dist/{ProgressBar-CgsAW2d8.js.map → ProgressBar-BWN2yv1s.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-C_rvxw74.js → Radio-C5riI-do.js} +2 -2
- package/dist/{Radio-C_rvxw74.js.map → Radio-C5riI-do.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-DxBblSrx.js → RadioGroup-B7O06pVu.js} +2 -2
- package/dist/{RadioGroup-DxBblSrx.js.map → RadioGroup-B7O06pVu.js.map} +1 -1
- package/dist/{SearchField-Bb0uObwG.js → SearchField-CbwGErC4.js} +2 -2
- package/dist/{SearchField-Bb0uObwG.js.map → SearchField-CbwGErC4.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-DC4BpdH5.js → SegmentedControl-CLDdes8W.js} +2 -2
- package/dist/{SegmentedControl-DC4BpdH5.js.map → SegmentedControl-CLDdes8W.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-DunNE9R3.js → SelectCard-Ca07K1FW.js} +3 -3
- package/dist/{SelectCard-DunNE9R3.js.map → SelectCard-Ca07K1FW.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectTrigger-BYysLREL.js → SelectTrigger-CaXX1SHG.js} +3 -3
- package/dist/{SelectTrigger-BYysLREL.js.map → SelectTrigger-CaXX1SHG.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-DqUpJgzk.js → SelectTriggerBase-C7TLCna1.js} +3 -3
- package/dist/{SelectTriggerBase-DqUpJgzk.js.map → SelectTriggerBase-C7TLCna1.js.map} +1 -1
- package/dist/{SideNav-B9AWmF_H.js → SideNav-nqq5sAwz.js} +2 -2
- package/dist/{SideNav-B9AWmF_H.js.map → SideNav-nqq5sAwz.js.map} +1 -1
- package/dist/SideNav.js +1 -1
- package/dist/{Stepper-DHTrvfXw.js → Stepper-DQ_Hm-AI.js} +2 -2
- package/dist/{Stepper-DHTrvfXw.js.map → Stepper-DQ_Hm-AI.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Tab-0zx9hsw8.js → Tab-CzNx3IdF.js} +2 -2
- package/dist/{Tab-0zx9hsw8.js.map → Tab-CzNx3IdF.js.map} +1 -1
- package/dist/Tab.js +1 -1
- package/dist/{TextField-CFWs3lm9.js → TextField-D9gD-34Q.js} +3 -3
- package/dist/{TextField-CFWs3lm9.js.map → TextField-D9gD-34Q.js.map} +1 -1
- package/dist/{TextField-Cge6IRo5.js → TextField-uCHgwO5F.js} +2 -2
- package/dist/{TextField-Cge6IRo5.js.map → TextField-uCHgwO5F.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-CXd3NKkW.js → Textarea-B2-6m291.js} +3 -3
- package/dist/{Textarea-CXd3NKkW.js.map → Textarea-B2-6m291.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-4v5aCwiG.js → TimeField-B5Jgy-Zg.js} +21 -8
- package/dist/TimeField-B5Jgy-Zg.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-bON5Xc1P.js → Toaster-CHyB-Mxs.js} +3 -3
- package/dist/{Toaster-bON5Xc1P.js.map → Toaster-CHyB-Mxs.js.map} +1 -1
- package/dist/{Toaster-D-rNSLTq.js → Toaster-CyiGDKMh.js} +3 -3
- package/dist/{Toaster-D-rNSLTq.js.map → Toaster-CyiGDKMh.js.map} +1 -1
- package/dist/{Toolbar-B2Jsuptz.js → Toolbar-DNErV9v8.js} +16 -15
- package/dist/Toolbar-DNErV9v8.js.map +1 -0
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-CtCLw_vx.js → Tooltip-DhtVlhah.js} +2 -2
- package/dist/{Tooltip-CtCLw_vx.js.map → Tooltip-DhtVlhah.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/beta.js +1 -1
- package/dist/components/Calendar/Calendar.d.ts +5 -0
- package/dist/components/Calendar/CalendarNowButton.d.ts +3 -1
- package/dist/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/components/Dialog/internal/useInitialFocus.d.ts +15 -0
- package/dist/components/DndSort/internal/DndSortOverlay.d.ts +1 -1
- package/dist/components/NumberField/NumberField.d.ts +2 -2
- package/dist/components/Popover/Popover.d.ts +136 -1
- package/dist/components/Popover/PopoverTrigger.d.ts +0 -1
- package/dist/components/Popover/internal/PopoverContext.d.ts +5 -3
- package/dist/components/Popover/internal/usePopoverContext.d.ts +6 -4
- package/dist/components/Radio/Radio.d.ts +1 -1
- package/dist/hooks/useMergeRefs/useMergeRefs.d.ts +11 -0
- package/dist/index.js +43 -43
- package/dist/internal/components/index.d.ts +1 -0
- package/dist/internal/hooks/index.d.ts +2 -2
- package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +2 -1
- package/dist/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +0 -1
- package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -1
- package/dist/internal/hooks/usePlatform/index.d.ts +1 -1
- package/dist/internal/index.d.ts +5 -0
- package/dist/internal/types/argTypes.d.ts +154 -0
- package/dist/internal/types/index.d.ts +1 -0
- package/dist/{useFocusWithin-BhhgRXdZ.js → useFocusWithin-hi77jsrB.js} +6 -3
- package/dist/useFocusWithin-hi77jsrB.js.map +1 -0
- package/dist/useInitialFocus-CAFMgbJG.js +130 -0
- package/dist/useInitialFocus-CAFMgbJG.js.map +1 -0
- package/dist/useMergeRefs-Dfmtq9cI.js +22 -0
- package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -0
- package/dist/useMergeRefs.js +1 -1
- package/dist/{useOnClickOutside-B1ddwORK.js → useOnClickOutside-C5AZE_I6.js} +6 -65
- package/dist/useOnClickOutside-C5AZE_I6.js.map +1 -0
- package/dist/utils-Dh3aegV3.js +50 -0
- package/dist/utils-Dh3aegV3.js.map +1 -0
- package/package.json +1 -1
- package/dist/Calendar-X9qUi6Vx.js.map +0 -1
- package/dist/DateField-C43nfkbx.js.map +0 -1
- package/dist/DateFieldRange-g7n5QYww.js.map +0 -1
- package/dist/DateFieldSingle-D3tneqeG.js.map +0 -1
- package/dist/Dialog-FNJ16gY6.js.map +0 -1
- package/dist/Drawer-DT31CMRd.js.map +0 -1
- package/dist/Menu-t_11BIhU.js.map +0 -1
- package/dist/Popover-CrksxqKk.js.map +0 -1
- package/dist/TimeField-4v5aCwiG.js.map +0 -1
- package/dist/Toolbar-B2Jsuptz.js.map +0 -1
- package/dist/components/DateFieldSingle/internal/useDateFieldOrchestration.d.ts +0 -17
- package/dist/useDateFieldOrchestration-DyAc3gPJ.js +0 -138
- package/dist/useDateFieldOrchestration-DyAc3gPJ.js.map +0 -1
- package/dist/useDialogTransitionStates-C1TtiwA_.js +0 -64
- package/dist/useDialogTransitionStates-C1TtiwA_.js.map +0 -1
- package/dist/useFocusWithin-BhhgRXdZ.js.map +0 -1
- package/dist/useMergeRefs-Bde85AWI.js +0 -21
- package/dist/useMergeRefs-Bde85AWI.js.map +0 -1
- package/dist/useOnClickOutside-B1ddwORK.js.map +0 -1
- package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js +0 -18
- package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +0 -1
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { createContext, useContext, useRef, useLayoutEffect, useState, useMemo, forwardRef, useId, useCallback,
|
|
2
|
+
import { createContext, useContext, useRef, useLayoutEffect, useEffect, useState, useMemo, forwardRef, useId, useCallback, useImperativeHandle } from 'react';
|
|
3
3
|
import { B as Button } from './Button-VNQQgZ45.js';
|
|
4
|
+
import { t as tabbable, f as useFloating, o as offset, i as size, g as flip, h as shift, J as arrow$1, l as limitShift, m as useClick, j as useHover, k as safePolygon, p as useDismiss, n as useRole, v as useInteractions, A as autoUpdate, D as DialogContext, a as DrawerContext, y as FloatingPortal, z as FloatingFocusManager, H as FloatingArrow, s as supportsPopover, B as computePosition, C as safeShowPopover, E as safeHidePopover } from './DrawerContext-D4tWTLVf.js';
|
|
4
5
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
5
6
|
import { useTrackingId } from './useTrackingId.js';
|
|
6
|
-
import {
|
|
7
|
-
import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
|
|
7
|
+
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
8
8
|
import { c as cx } from './index-tZvMCc77.js';
|
|
9
|
+
import { u as useFocusWithin } from './useFocusWithin-hi77jsrB.js';
|
|
9
10
|
import { P as PortalProviderContext } from './PortalProvider-9lXkQ0xY.js';
|
|
10
11
|
import { T as ThemeProvider } from './ThemeProvider-Be3Pvtpz.js';
|
|
11
12
|
import { T as ThemeProviderContext } from './ThemeProviderContext-l52GohYT.js';
|
|
12
|
-
import { u as useOpenCloseTransitionStates, a as
|
|
13
|
+
import { u as useOpenCloseTransitionStates, a as useOnClickOutside } from './useOnClickOutside-C5AZE_I6.js';
|
|
14
|
+
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
13
15
|
|
|
14
16
|
import './Popover.css';const usePopoverTransitionStates = (popover, openProp, options = {}) => {
|
|
15
17
|
const { onOpenAnimationStart, onCloseAnimationComplete } = options;
|
|
@@ -38,6 +40,7 @@ function usePopoverContext() {
|
|
|
38
40
|
const invokerRef = useRef(null);
|
|
39
41
|
const popoverRef = useRef(null);
|
|
40
42
|
const arrowRef = useRef(null);
|
|
43
|
+
const { triggerHovered, setTriggerHovered, contentHovered } = context || {};
|
|
41
44
|
useLayoutEffect(() => {
|
|
42
45
|
if (!invokerRef.current) return;
|
|
43
46
|
context?.setInvoker?.(invokerRef.current);
|
|
@@ -49,22 +52,58 @@ function usePopoverContext() {
|
|
|
49
52
|
if (!arrowRef.current) return;
|
|
50
53
|
context?.setArrowElement?.(arrowRef.current);
|
|
51
54
|
}, [context, popoverRef]);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!context?.openOnHover) return;
|
|
57
|
+
if (!triggerHovered && !contentHovered) {
|
|
58
|
+
const closeTimeout = setTimeout(() => {
|
|
59
|
+
context?.closePopover();
|
|
60
|
+
}, 100);
|
|
61
|
+
return () => {
|
|
62
|
+
clearTimeout(closeTimeout);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (triggerHovered && !contentHovered) {
|
|
66
|
+
if (context?.delay) {
|
|
67
|
+
const openTimeout = setTimeout(() => {
|
|
68
|
+
context?.openPopover();
|
|
69
|
+
}, context.delay);
|
|
70
|
+
return () => {
|
|
71
|
+
clearTimeout(openTimeout);
|
|
72
|
+
};
|
|
73
|
+
} else {
|
|
74
|
+
context?.openPopover();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}, [context?.delay, context?.openOnHover, triggerHovered, contentHovered]);
|
|
52
78
|
const onMouseEnterHandler = () => {
|
|
53
79
|
if (!context?.openOnHover) return;
|
|
54
|
-
|
|
80
|
+
setTriggerHovered?.(true);
|
|
55
81
|
};
|
|
56
82
|
const onMouseLeaveHandler = () => {
|
|
57
83
|
if (!context?.openOnHover) return;
|
|
58
|
-
|
|
84
|
+
setTriggerHovered?.(false);
|
|
59
85
|
};
|
|
60
|
-
const onFocusHandler = () => {
|
|
61
|
-
if (context?.
|
|
62
|
-
|
|
86
|
+
const onFocusHandler = (_e) => {
|
|
87
|
+
if (context?.openOnHover) {
|
|
88
|
+
context?.openPopover();
|
|
89
|
+
}
|
|
63
90
|
};
|
|
64
|
-
const onBlurHandler = () => {
|
|
65
|
-
if (context?.
|
|
91
|
+
const onBlurHandler = (e) => {
|
|
92
|
+
if (context?.popover?.contains(e.relatedTarget)) return;
|
|
93
|
+
if (context?.modal) {
|
|
94
|
+
e.preventDefault();
|
|
95
|
+
requestAnimationFrame(() => {
|
|
96
|
+
context?.invoker?.focus();
|
|
97
|
+
const focusables = tabbable(context?.popover);
|
|
98
|
+
if (focusables.length > 0) {
|
|
99
|
+
focusables[focusables.length - 1].focus();
|
|
100
|
+
}
|
|
101
|
+
});
|
|
66
102
|
return;
|
|
67
|
-
|
|
103
|
+
}
|
|
104
|
+
if (!context?.disableCloseOnClickOutside) {
|
|
105
|
+
context?.closePopover();
|
|
106
|
+
}
|
|
68
107
|
};
|
|
69
108
|
const onKeyDownHandler = (e) => {
|
|
70
109
|
if (!context?.openState) return;
|
|
@@ -72,12 +111,6 @@ function usePopoverContext() {
|
|
|
72
111
|
context?.closePopover();
|
|
73
112
|
return;
|
|
74
113
|
}
|
|
75
|
-
const focusables = context.focusables;
|
|
76
|
-
if (e.code === "Tab" && e.shiftKey && context?.modal && focusables) {
|
|
77
|
-
focusables[focusables.length - 1].focus();
|
|
78
|
-
e.preventDefault();
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
114
|
};
|
|
82
115
|
const onClickHandler = () => {
|
|
83
116
|
context?.invoker?.focus();
|
|
@@ -121,7 +154,6 @@ function usePopoverContext() {
|
|
|
121
154
|
},
|
|
122
155
|
rootNode: context.rootNode,
|
|
123
156
|
onClose: context.onClose,
|
|
124
|
-
setOpen: context.setOpenState,
|
|
125
157
|
open: context.openState,
|
|
126
158
|
openOnHover: context.openOnHover,
|
|
127
159
|
controlled: context.controlled,
|
|
@@ -138,7 +170,10 @@ function usePopoverContext() {
|
|
|
138
170
|
disableFlipFallback: context.disableFlipFallback,
|
|
139
171
|
disableFocusLock: context.modal,
|
|
140
172
|
disableTriggerFocus: context.disableTriggerFocus,
|
|
141
|
-
|
|
173
|
+
triggerHovered: context.triggerHovered,
|
|
174
|
+
setTriggerHovered: context.setTriggerHovered,
|
|
175
|
+
contentHovered: context.contentHovered,
|
|
176
|
+
setContentHovered: context.setContentHovered
|
|
142
177
|
};
|
|
143
178
|
}
|
|
144
179
|
|
|
@@ -471,14 +506,9 @@ const PopoverClose = forwardRef(
|
|
|
471
506
|
"data-anv": "popover-close",
|
|
472
507
|
...rest,
|
|
473
508
|
onClick: (event) => {
|
|
474
|
-
onClick?.(event);
|
|
475
|
-
if (context?.controlled) {
|
|
476
|
-
setTimeout(() => {
|
|
477
|
-
context?.onClose?.();
|
|
478
|
-
}, 100);
|
|
479
|
-
return;
|
|
480
|
-
}
|
|
481
509
|
context?.popover.close();
|
|
510
|
+
context?.onClose?.();
|
|
511
|
+
onClick?.(event);
|
|
482
512
|
}
|
|
483
513
|
}
|
|
484
514
|
);
|
|
@@ -522,11 +552,11 @@ const PopoverButton = forwardRef(
|
|
|
522
552
|
};
|
|
523
553
|
const onFocusHandler = (e) => {
|
|
524
554
|
onFocus?.(e);
|
|
525
|
-
context?.invoker.onFocus();
|
|
555
|
+
context?.invoker.onFocus(e);
|
|
526
556
|
};
|
|
527
557
|
const onBlurHandler = (e) => {
|
|
528
558
|
onBlur?.(e);
|
|
529
|
-
context?.invoker.onBlur();
|
|
559
|
+
context?.invoker.onBlur(e);
|
|
530
560
|
};
|
|
531
561
|
const onKeyDownHandler = (e) => {
|
|
532
562
|
onKeyDown?.(e);
|
|
@@ -580,52 +610,6 @@ const styles = {
|
|
|
580
610
|
"no-padding": "_no-padding_yo27y_62"
|
|
581
611
|
};
|
|
582
612
|
|
|
583
|
-
function compareElements(el1, el2, excludeAttributes = []) {
|
|
584
|
-
if (!el1 || !el2 || el1.tagName !== el2.tagName) {
|
|
585
|
-
return false;
|
|
586
|
-
}
|
|
587
|
-
const getFilteredAttributes = (attrs) => {
|
|
588
|
-
const filtered = {};
|
|
589
|
-
for (let i = 0; i < attrs.length; i++) {
|
|
590
|
-
const attr = attrs[i];
|
|
591
|
-
if (!excludeAttributes.includes(attr.name)) {
|
|
592
|
-
filtered[attr.name] = attr.value;
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
return filtered;
|
|
596
|
-
};
|
|
597
|
-
const filteredAttrs1 = getFilteredAttributes(el1.attributes);
|
|
598
|
-
const filteredAttrs2 = getFilteredAttributes(el2.attributes);
|
|
599
|
-
const keys1 = Object.keys(filteredAttrs1);
|
|
600
|
-
const keys2 = Object.keys(filteredAttrs2);
|
|
601
|
-
if (keys1.length !== keys2.length) return false;
|
|
602
|
-
for (const key of keys1) {
|
|
603
|
-
if (filteredAttrs1[key] !== filteredAttrs2[key]) {
|
|
604
|
-
return false;
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
const isOnlyText1 = el1.childNodes.length === 1 && el1.childNodes[0].nodeType === Node.TEXT_NODE;
|
|
608
|
-
const isOnlyText2 = el2.childNodes.length === 1 && el2.childNodes[0].nodeType === Node.TEXT_NODE;
|
|
609
|
-
if (isOnlyText1 && isOnlyText2) {
|
|
610
|
-
if (el1.textContent?.trim() !== el2.textContent?.trim()) {
|
|
611
|
-
return false;
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
const children1 = el1.children;
|
|
615
|
-
const children2 = el2.children;
|
|
616
|
-
if (children1.length !== children2.length) return false;
|
|
617
|
-
for (let i = 0; i < children1.length; i++) {
|
|
618
|
-
if (!compareElements(
|
|
619
|
-
children1[i],
|
|
620
|
-
children2[i],
|
|
621
|
-
excludeAttributes
|
|
622
|
-
)) {
|
|
623
|
-
return false;
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
return true;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
613
|
const PopoverContent = forwardRef(
|
|
630
614
|
function PopoverContent2(props, ref) {
|
|
631
615
|
const {
|
|
@@ -651,85 +635,40 @@ const PopoverContent = forwardRef(
|
|
|
651
635
|
...style,
|
|
652
636
|
...context?.popover.style
|
|
653
637
|
};
|
|
654
|
-
const
|
|
638
|
+
const { props: wrapperProps } = useFocusWithin({
|
|
639
|
+
otherRelatedElements: context?.invoker.element ? [context?.invoker.element] : [],
|
|
640
|
+
onBlur: (e) => {
|
|
641
|
+
if (context?.modal) {
|
|
642
|
+
e.preventDefault();
|
|
643
|
+
requestAnimationFrame(() => {
|
|
644
|
+
context?.invoker.element?.focus();
|
|
645
|
+
});
|
|
646
|
+
return;
|
|
647
|
+
}
|
|
648
|
+
onBlur?.(e);
|
|
649
|
+
context?.popover.close();
|
|
650
|
+
},
|
|
651
|
+
onFocus: (e) => {
|
|
652
|
+
onFocus?.(e);
|
|
653
|
+
context?.popover.show();
|
|
654
|
+
}
|
|
655
|
+
});
|
|
655
656
|
const onMouseEnterHandler = (e) => {
|
|
656
657
|
onMouseEnter?.(e);
|
|
657
658
|
if (!context?.openOnHover) return;
|
|
658
|
-
context.
|
|
659
|
+
context.setContentHovered(true);
|
|
659
660
|
};
|
|
660
661
|
const onMouseLeaveHandler = (e) => {
|
|
661
662
|
onMouseLeave?.(e);
|
|
662
663
|
if (!context?.openOnHover) return;
|
|
663
|
-
context.
|
|
664
|
-
};
|
|
665
|
-
const onFocusHandler = (e) => {
|
|
666
|
-
onFocus?.(e);
|
|
667
|
-
context?.popover.show();
|
|
668
|
-
};
|
|
669
|
-
const onBlurHandler = (e) => {
|
|
670
|
-
onBlur?.(e);
|
|
664
|
+
context.setContentHovered(false);
|
|
671
665
|
};
|
|
672
666
|
const onKeyDownHandler = (e) => {
|
|
673
667
|
onKeyDown?.(e);
|
|
674
668
|
if (e.code === "Escape" && !context?.disableCloseOnEscape) {
|
|
675
669
|
context?.popover.close();
|
|
676
670
|
}
|
|
677
|
-
if (!context?.modal) {
|
|
678
|
-
if (context?.controlled) {
|
|
679
|
-
return;
|
|
680
|
-
}
|
|
681
|
-
if (e.code === "Tab" && !e.shiftKey) {
|
|
682
|
-
if (focusables && compareElements(
|
|
683
|
-
context.rootNode?.activeElement,
|
|
684
|
-
focusables[focusables.length - 1],
|
|
685
|
-
["tabindex"]
|
|
686
|
-
)) {
|
|
687
|
-
context.popover.close();
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
if (e.code === "Tab" && e.shiftKey) {
|
|
691
|
-
if (focusables && compareElements(
|
|
692
|
-
context.rootNode.activeElement,
|
|
693
|
-
focusables[0],
|
|
694
|
-
["tabindex"]
|
|
695
|
-
)) {
|
|
696
|
-
context.popover.close();
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
return;
|
|
700
|
-
}
|
|
701
|
-
if (e.code === "Tab" && !e.shiftKey) {
|
|
702
|
-
if (focusables && compareElements(
|
|
703
|
-
context.rootNode?.activeElement,
|
|
704
|
-
focusables[focusables.length - 1],
|
|
705
|
-
["tabindex"]
|
|
706
|
-
)) {
|
|
707
|
-
if (context.disableTriggerFocus) {
|
|
708
|
-
focusables[0].focus();
|
|
709
|
-
} else {
|
|
710
|
-
context.invoker.element?.focus();
|
|
711
|
-
context.popover.show();
|
|
712
|
-
}
|
|
713
|
-
e.preventDefault();
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
if (e.code === "Tab" && e.shiftKey) {
|
|
717
|
-
if (focusables && compareElements(
|
|
718
|
-
context.rootNode.activeElement,
|
|
719
|
-
focusables[0],
|
|
720
|
-
["tabindex"]
|
|
721
|
-
)) {
|
|
722
|
-
if (context.disableTriggerFocus) {
|
|
723
|
-
focusables[focusables.length - 1].focus();
|
|
724
|
-
} else {
|
|
725
|
-
context.invoker.element?.focus();
|
|
726
|
-
context.popover.show();
|
|
727
|
-
}
|
|
728
|
-
e.preventDefault();
|
|
729
|
-
}
|
|
730
|
-
}
|
|
731
671
|
};
|
|
732
|
-
const manualPopover = context?.controlled || context?.disableCloseOnClickOutside || context?.disableCloseOnEscape || context?.openOnHover;
|
|
733
672
|
const popoverContentRef = useMergeRefs([context?.popover.ref, ref]);
|
|
734
673
|
const popoverScrollerRef = useMergeRefs([childrenRef, scrollerRef]);
|
|
735
674
|
if (!supportsPopover())
|
|
@@ -743,7 +682,7 @@ const PopoverContent = forwardRef(
|
|
|
743
682
|
return /* @__PURE__ */ jsxs(
|
|
744
683
|
"div",
|
|
745
684
|
{
|
|
746
|
-
popover:
|
|
685
|
+
popover: "manual",
|
|
747
686
|
id: context?.popover.id,
|
|
748
687
|
"data-anv": "popover-content",
|
|
749
688
|
className: popoverClassNames,
|
|
@@ -751,10 +690,10 @@ const PopoverContent = forwardRef(
|
|
|
751
690
|
style: combinedStyles,
|
|
752
691
|
onMouseEnter: onMouseEnterHandler,
|
|
753
692
|
onMouseLeave: onMouseLeaveHandler,
|
|
754
|
-
onBlur: onBlurHandler,
|
|
755
|
-
onFocus: onFocusHandler,
|
|
756
693
|
role: "region",
|
|
757
694
|
...rest,
|
|
695
|
+
onFocus: wrapperProps.onFocus,
|
|
696
|
+
onBlur: wrapperProps.onBlur,
|
|
758
697
|
children: [
|
|
759
698
|
/* @__PURE__ */ jsx(
|
|
760
699
|
"div",
|
|
@@ -788,11 +727,11 @@ function PopoverTrigger(props) {
|
|
|
788
727
|
return /* @__PURE__ */ jsx(PopoverLegacyTrigger, { ...props });
|
|
789
728
|
if (!context) return;
|
|
790
729
|
const { element, ...rest } = context.invoker;
|
|
791
|
-
return children(
|
|
730
|
+
return children(rest);
|
|
792
731
|
}
|
|
793
732
|
PopoverTrigger.displayName = "PopoverTrigger";
|
|
794
733
|
|
|
795
|
-
const PopoverElement = (props) => {
|
|
734
|
+
const PopoverElement = forwardRef((props, ref) => {
|
|
796
735
|
const {
|
|
797
736
|
children,
|
|
798
737
|
openOnHover = false,
|
|
@@ -831,11 +770,14 @@ const PopoverElement = (props) => {
|
|
|
831
770
|
const [popover, setPopover] = useState(void 0);
|
|
832
771
|
const [rootNode, setRootNode] = useState();
|
|
833
772
|
const [arrowElement, setArrowElement] = useState(void 0);
|
|
834
|
-
const [openState, setOpenState] =
|
|
835
|
-
open
|
|
836
|
-
|
|
773
|
+
const [openState, setOpenState] = useOptionallyControlledState({
|
|
774
|
+
controlledValue: open,
|
|
775
|
+
defaultValue: defaultOpen
|
|
776
|
+
});
|
|
837
777
|
const arrowRef = useRef(null);
|
|
838
778
|
const dialogContext = useContext(DialogContext);
|
|
779
|
+
const [triggerHovered, setTriggerHovered] = useState(false);
|
|
780
|
+
const [contentHovered, setContentHovered] = useState(false);
|
|
839
781
|
const processMinHeight = typeof minHeight === "string" ? minHeight : `${minHeight}px`;
|
|
840
782
|
usePopoverTransitionStates(popover, openState, {
|
|
841
783
|
onOpenAnimationStart: useCallback(() => {
|
|
@@ -963,74 +905,58 @@ const PopoverElement = (props) => {
|
|
|
963
905
|
};
|
|
964
906
|
}, [invoker, popover, updatePosition, openState]);
|
|
965
907
|
popover?.getRootNode();
|
|
966
|
-
const { focusables } = useKeyboardFocusables(popover, {
|
|
967
|
-
observeChange: true
|
|
968
|
-
});
|
|
969
908
|
const popoverId = id ?? `popover-${uid.replace(/:/g, "")}`;
|
|
970
909
|
const isControlled = typeof open !== "undefined";
|
|
971
|
-
const openTimeoutRef = useRef(null);
|
|
972
|
-
const closeTimeoutRef = useRef(null);
|
|
973
910
|
const openPopover = useCallback(() => {
|
|
974
|
-
clearTimeout(closeTimeoutRef.current);
|
|
975
|
-
clearTimeout(openTimeoutRef.current);
|
|
976
911
|
if (!popover || !rootNode?.querySelector(`#${popoverId}`))
|
|
977
912
|
return;
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
onOpenChange?.(true);
|
|
982
|
-
dialogContext?.setHasOpenPopover?.(true);
|
|
983
|
-
}, delay);
|
|
984
|
-
}, [popover, rootNode, popoverId, delay, dialogContext]);
|
|
913
|
+
setOpenState(true);
|
|
914
|
+
onOpenChange?.(true);
|
|
915
|
+
}, [popover, rootNode, popoverId, onOpenChange, setOpenState]);
|
|
985
916
|
const closePopover = useCallback(
|
|
986
917
|
(fn) => {
|
|
987
|
-
clearTimeout(openTimeoutRef.current);
|
|
988
|
-
clearTimeout(closeTimeoutRef.current);
|
|
989
918
|
if (!popover || !openState) return;
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
fn?.();
|
|
995
|
-
safeHidePopover(popover);
|
|
996
|
-
dialogContext?.setHasOpenPopover?.(false);
|
|
997
|
-
}, 100);
|
|
919
|
+
if (!openOnHover) onClose?.();
|
|
920
|
+
setOpenState(false);
|
|
921
|
+
onOpenChange?.(false);
|
|
922
|
+
fn?.();
|
|
998
923
|
},
|
|
999
|
-
|
|
1000
|
-
|
|
924
|
+
[popover, openState, openOnHover, onClose, setOpenState, onOpenChange]
|
|
925
|
+
);
|
|
926
|
+
useImperativeHandle(
|
|
927
|
+
ref,
|
|
928
|
+
() => ({
|
|
929
|
+
openPopover,
|
|
930
|
+
closePopover
|
|
931
|
+
}),
|
|
932
|
+
[openPopover, closePopover]
|
|
1001
933
|
);
|
|
1002
934
|
useEffect(() => {
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
return;
|
|
1014
|
-
}
|
|
1015
|
-
}, [openState, openPopover]);
|
|
1016
|
-
useEffect(() => {
|
|
1017
|
-
if (typeof open === "undefined") return;
|
|
1018
|
-
if (open) {
|
|
1019
|
-
openPopover();
|
|
935
|
+
if (typeof openState === "undefined") return;
|
|
936
|
+
if (openState) {
|
|
937
|
+
if (dialogContext) {
|
|
938
|
+
if (dialogContext?.ref?.current?.open) {
|
|
939
|
+
safeShowPopover(popover);
|
|
940
|
+
dialogContext?.setHasOpenPopover?.(true);
|
|
941
|
+
}
|
|
942
|
+
return;
|
|
943
|
+
}
|
|
944
|
+
safeShowPopover(popover);
|
|
1020
945
|
} else {
|
|
1021
|
-
|
|
946
|
+
safeHidePopover(popover);
|
|
947
|
+
dialogContext?.setHasOpenPopover?.(false);
|
|
1022
948
|
}
|
|
1023
|
-
}, [
|
|
949
|
+
}, [openState, openPopover, closePopover, dialogContext, popover]);
|
|
1024
950
|
useOnClickOutside({
|
|
951
|
+
disable: disableCloseOnClickOutside || !openState,
|
|
1025
952
|
onOutsidePress: (e) => {
|
|
1026
|
-
if (!
|
|
953
|
+
if (!openState) return;
|
|
1027
954
|
onClickOutside?.(e);
|
|
1028
955
|
onOutsidePress?.(e);
|
|
1029
956
|
},
|
|
1030
957
|
targets: [invoker, popover],
|
|
1031
958
|
onClose: () => {
|
|
1032
|
-
if (
|
|
1033
|
-
return;
|
|
959
|
+
if (openOnHover || isControlled) return;
|
|
1034
960
|
closePopover();
|
|
1035
961
|
}
|
|
1036
962
|
});
|
|
@@ -1067,7 +993,11 @@ const PopoverElement = (props) => {
|
|
|
1067
993
|
resetKey: resetKey.current,
|
|
1068
994
|
rootNode,
|
|
1069
995
|
setRootNode,
|
|
1070
|
-
|
|
996
|
+
delay,
|
|
997
|
+
triggerHovered,
|
|
998
|
+
setTriggerHovered,
|
|
999
|
+
contentHovered,
|
|
1000
|
+
setContentHovered
|
|
1071
1001
|
};
|
|
1072
1002
|
}, [
|
|
1073
1003
|
popoverId,
|
|
@@ -1095,12 +1025,17 @@ const PopoverElement = (props) => {
|
|
|
1095
1025
|
isControlled,
|
|
1096
1026
|
modal,
|
|
1097
1027
|
rootNode,
|
|
1098
|
-
|
|
1028
|
+
delay,
|
|
1029
|
+
triggerHovered,
|
|
1030
|
+
setTriggerHovered,
|
|
1031
|
+
contentHovered,
|
|
1032
|
+
setContentHovered
|
|
1099
1033
|
]);
|
|
1100
1034
|
if (!supportsPopover())
|
|
1101
1035
|
return /* @__PURE__ */ jsx(PopoverLegacyElement, { ...props });
|
|
1102
1036
|
return /* @__PURE__ */ jsx(PopoverContext.Provider, { value, children });
|
|
1103
|
-
};
|
|
1037
|
+
});
|
|
1038
|
+
PopoverElement.displayName = "Popover";
|
|
1104
1039
|
const Popover = Object.assign(PopoverElement, {
|
|
1105
1040
|
/**
|
|
1106
1041
|
* PopoverTrigger component for creating custom trigger elements.
|
|
@@ -1185,4 +1120,4 @@ const Popover = Object.assign(PopoverElement, {
|
|
|
1185
1120
|
});
|
|
1186
1121
|
|
|
1187
1122
|
export { Popover as P, PopoverButton as a, PopoverClose as b, PopoverContent as c, PopoverTrigger as d, PopoverLegacy as e, usePopoverContext as f, usePopoverLegacyContext as u };
|
|
1188
|
-
//# sourceMappingURL=Popover-
|
|
1123
|
+
//# sourceMappingURL=Popover-v8R920kj.js.map
|