@multiplatform.one/forms 7.45.1 → 7.46.0
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/cjs/FloatingPanel/index.cjs +158 -40
- package/dist/cjs/shared/focusManagement.cjs +3 -3
- package/dist/cjs/shared/focusManagement.native.js +3 -3
- package/dist/cjs/shared/focusManagement.native.js.map +1 -1
- package/dist/cjs/shared/useSheetEscapeDismiss.cjs +5 -4
- package/dist/cjs/shared/useSheetEscapeDismiss.native.js +5 -3
- package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/dist/esm/FloatingPanel/index.mjs +160 -42
- package/dist/esm/FloatingPanel/index.mjs.map +1 -1
- package/dist/esm/shared/focusManagement.mjs +3 -3
- package/dist/esm/shared/focusManagement.mjs.map +1 -1
- package/dist/esm/shared/focusManagement.native.js +3 -3
- package/dist/esm/shared/focusManagement.native.js.map +1 -1
- package/dist/esm/shared/useSheetEscapeDismiss.mjs +5 -4
- package/dist/esm/shared/useSheetEscapeDismiss.mjs.map +1 -1
- package/dist/esm/shared/useSheetEscapeDismiss.native.js +5 -3
- package/dist/esm/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/index.mjs +160 -42
- package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
- package/dist/jsx/shared/focusManagement.mjs +3 -3
- package/dist/jsx/shared/focusManagement.mjs.map +1 -1
- package/dist/jsx/shared/focusManagement.native.js +3 -3
- package/dist/jsx/shared/focusManagement.native.js.map +1 -1
- package/dist/jsx/shared/useSheetEscapeDismiss.mjs +5 -4
- package/dist/jsx/shared/useSheetEscapeDismiss.mjs.map +1 -1
- package/dist/jsx/shared/useSheetEscapeDismiss.native.js +5 -3
- package/dist/jsx/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/package.json +8 -8
- package/src/FloatingPanel/FloatingPanel.coverTrigger.spec.tsx +184 -0
- package/src/FloatingPanel/FloatingPanel.spec.tsx +3 -5
- package/src/FloatingPanel/FloatingPanel.stories.tsx +26 -0
- package/src/FloatingPanel/index.tsx +255 -59
- package/src/FloatingPanel/useFloatingPanel.spec.tsx +4 -2
- package/src/shared/focusManagement.spec.tsx +11 -1
- package/src/shared/focusManagement.ts +16 -7
- package/src/shared/interactionHooks.spec.tsx +13 -0
- package/src/shared/useSheetEscapeDismiss.ts +9 -4
- package/types/FloatingPanel/index.d.ts +9 -1
- package/types/FloatingPanel/index.d.ts.map +1 -1
- package/types/shared/focusManagement.d.ts +10 -5
- package/types/shared/focusManagement.d.ts.map +1 -1
- package/types/shared/useSheetEscapeDismiss.d.ts +1 -1
- package/types/shared/useSheetEscapeDismiss.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","isWeb","useDialogContext","wasKeyboardFocus","useResolvedKnobs","motionHideDelayMs","_instanceof","left","right","Symbol","hasInstance","FOCUSABLE","canUseDom","canUseDom2","document","focusIsDropped","insideEl","ae","activeElement","body","documentElement","contains","useCaptureOnOpen","open","prevRef","wasOpenRef","generationRef","current","restoreLater","delayMs","insideRef","skipReturnFocusRef","generation","restore","restore2","_ref","target","isConnected","focus","preventScroll","focusVisible","requestAnimationFrame","setTimeout","useReturnFocusOnClose","knobProps","restoreDelayMsRef","motion","scrim","transition","useSheetModalFocus","frameRef","frame","addEventListener","focusIn","focusIn2","first","querySelector","innerRaf","raf","onKeyDown","onKeyDown2","e","key","focusables","Array","from","querySelectorAll","filter","el","offsetWidth","offsetHeight","length","preventDefault","last","shiftKey","cancelAnimationFrame","removeEventListener"],"sources":["../../../src/shared/focusManagement.ts"],"sourcesContent":[null],"mappings":"AAoCA,SAASA,SAAA,EAAWC,MAAA,QAA8B;AAClD,SAASC,KAAA,EAAOC,gBAAA,QAAwB;AACxC,SAASC,gBAAA,EAAkBC,gBAAA,EAAkBC,iBAAA,QAAyB;AAEtE,SAAMC,WACJA,CAAAC,IAAA,EAAAC,KAAA;EAEF,2BAAwB;;EAExB,IAAAA,KAAS,mBAAeC,MAAwC,oBAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IAC9D,OAAM,EAAKF,KAAA,CAAAC,MAAS,CAAAC,WAAA,EAAAH,IAAA;EACpB,OAAK;IAGL,OAAIA,IAAA,YAAqBC,KAAG;EAC5B;AACF;AAGA,IAAAG,SAAS,8IAAgC;AACvC,IAAAC,SAAM,YAAqCC,UAAIA,CAAA;EAC/C,OAAMZ,KAAA,WAAaa,QAAY;AAC/B;AACA,SAAIC,cAAaA,CAAAC,QAAA;EACf,IAAAC,EAAI,GAAAH,QAAS,CAAAI,aAAW;EACxB,KAAAD,EAAI,IAAAA,EAAA,KAASH,QAAW,CAAAK,IAAA,IAASF,EAAA,KAAAH,QAAA,CAAAM,eAAA;EAC/B,IAAAJ,QAAQ,aAAUA,QAAS,uBAAAA,QAAA,CAAAK,QAAA,CAAAJ,EAAA;EAAA,OAC7B;AACA;AAAqB,SACvBK,iBAAAC,IAAA;EACA,IAAAC,OAAS,GAAAxB,MAAS;EACpB,IAAAyB,UAAA,GAAAzB,MAAA;EAEA,IAAA0B,aAAS,GACP1B,MAAA,GACA;EAKA,IAAAY,SAAM;IACN,IAAMW,IAAA,KAAAE,UAAgB,CAAAE,OAAA,EAAAD,aAAA,CAAAC,OAAA;IAIpB,IAAIJ,IAAC,KAAAE,UAAa,CAAAE,OAAA;MAClBH,OAAI,CAAAG,OAAA,GAAAb,QAAoB,CAAAI,aAAW;IACnC;IACAO,UAAK,CAAAE,OAAW,GAAAJ,IAAO;EACvB;EACE;IAAaC,OACX;IAAeE;EACgB;AAChB;AACnB,SACFE,aAAAJ,OAAA,EAAAE,aAAA,EAAAG,OAAA,EAAAC,SAAA,EAAAC,kBAAA;EAGA,IAAAC,UAAA,GAAAN,aAA4B,CAAAC,OAAA;EAC5B,IAAAM,OAAW,YAASC,QAAOA,CAAA;IAC7B,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","isWeb","useDialogContext","wasKeyboardFocus","useResolvedKnobs","motionHideDelayMs","_instanceof","left","right","Symbol","hasInstance","FOCUSABLE","canUseDom","canUseDom2","document","focusIsDropped","insideEl","ae","activeElement","body","documentElement","contains","useCaptureOnOpen","open","prevRef","wasOpenRef","generationRef","current","restoreLater","delayMs","insideRef","skipReturnFocusRef","generation","restore","restore2","_ref","target","isConnected","focus","preventScroll","focusVisible","requestAnimationFrame","setTimeout","useReturnFocusOnClose","knobProps","restoreDelayMsRef","motion","scrim","transition","useSheetModalFocus","frameRef","frame","addEventListener","focusIn","focusIn2","first","querySelector","innerRaf","raf","onKeyDown","onKeyDown2","e","key","focusables","Array","from","querySelectorAll","filter","el","offsetWidth","offsetHeight","length","preventDefault","last","shiftKey","cancelAnimationFrame","removeEventListener"],"sources":["../../../src/shared/focusManagement.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
2
|
import { isWeb } from "tamagui";
|
|
3
|
-
function useSheetEscapeDismiss(enabled, onDismiss) {
|
|
3
|
+
function useSheetEscapeDismiss(enabled, onDismiss, target = "window") {
|
|
4
4
|
const onDismissRef = useRef(onDismiss);
|
|
5
5
|
onDismissRef.current = onDismiss;
|
|
6
6
|
useEffect(() => {
|
|
@@ -9,9 +9,10 @@ function useSheetEscapeDismiss(enabled, onDismiss) {
|
|
|
9
9
|
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
10
10
|
onDismissRef.current();
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const node = target === "document" ? document : window;
|
|
13
|
+
node.addEventListener("keydown", onKeyDown);
|
|
14
|
+
return () => node.removeEventListener("keydown", onKeyDown);
|
|
15
|
+
}, [enabled, target]);
|
|
15
16
|
}
|
|
16
17
|
export { useSheetEscapeDismiss };
|
|
17
18
|
//# sourceMappingURL=useSheetEscapeDismiss.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","isWeb","useSheetEscapeDismiss","enabled","onDismiss","onDismissRef","current","onKeyDown","event","key","defaultPrevented","window","addEventListener","removeEventListener"],"sources":["../../../src/shared/useSheetEscapeDismiss.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,KAAA,QAAa;AAYf,SAASC,
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","isWeb","useSheetEscapeDismiss","enabled","onDismiss","target","onDismissRef","current","onKeyDown","event","key","defaultPrevented","node","document","window","addEventListener","removeEventListener"],"sources":["../../../src/shared/useSheetEscapeDismiss.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,KAAA,QAAa;AAYf,SAASC,sBACdC,OAAA,EACAC,SAAA,EACAC,MAAA,GAAgC,UAChC;EACA,MAAMC,YAAA,GAAeN,MAAA,CAAOI,SAAS;EACrCE,YAAA,CAAaC,OAAA,GAAUH,SAAA;EACvBL,SAAA,CAAU,MAAM;IACd,IAAI,CAACE,KAAA,IAAS,CAACE,OAAA,EAAS;IACxB,MAAMK,SAAA,GAAaC,KAAA,IAAyB;MAC1C,IAAIA,KAAA,CAAMC,GAAA,KAAQ,YAAYD,KAAA,CAAME,gBAAA,EAAkB;MACtDL,YAAA,CAAaC,OAAA,CAAQ;IACvB;IACA,MAAMK,IAAA,GAAOP,MAAA,KAAW,aAAaQ,QAAA,GAAWC,MAAA;IAChDF,IAAA,CAAKG,gBAAA,CAAiB,WAAWP,SAA0B;IAC3D,OAAO,MAAMI,IAAA,CAAKI,mBAAA,CAAoB,WAAWR,SAA0B;EAC7E,GAAG,CAACL,OAAA,EAASE,MAAM,CAAC;AACtB","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
2
|
import { isWeb } from "tamagui";
|
|
3
3
|
function useSheetEscapeDismiss(enabled, onDismiss) {
|
|
4
|
+
var target = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "window";
|
|
4
5
|
var onDismissRef = useRef(onDismiss);
|
|
5
6
|
onDismissRef.current = onDismiss;
|
|
6
7
|
useEffect(function () {
|
|
@@ -9,11 +10,12 @@ function useSheetEscapeDismiss(enabled, onDismiss) {
|
|
|
9
10
|
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
10
11
|
onDismissRef.current();
|
|
11
12
|
};
|
|
12
|
-
|
|
13
|
+
var node = target === "document" ? document : window;
|
|
14
|
+
node.addEventListener("keydown", onKeyDown);
|
|
13
15
|
return function () {
|
|
14
|
-
return
|
|
16
|
+
return node.removeEventListener("keydown", onKeyDown);
|
|
15
17
|
};
|
|
16
|
-
}, [enabled]);
|
|
18
|
+
}, [enabled, target]);
|
|
17
19
|
}
|
|
18
20
|
export { useSheetEscapeDismiss };
|
|
19
21
|
//# sourceMappingURL=useSheetEscapeDismiss.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","isWeb","useSheetEscapeDismiss","enabled","onDismiss","onDismissRef","current","onKeyDown","onKeyDown2","event","key","defaultPrevented","window","addEventListener","removeEventListener"],"sources":["../../../src/shared/useSheetEscapeDismiss.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,KAAA,QAAa;AAYf,SAASC,
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","isWeb","useSheetEscapeDismiss","enabled","onDismiss","target","arguments","length","onDismissRef","current","onKeyDown","onKeyDown2","event","key","defaultPrevented","node","document","window","addEventListener","removeEventListener"],"sources":["../../../src/shared/useSheetEscapeDismiss.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,KAAA,QAAa;AAYf,SAASC,sBACdC,OAAA,EACAC,SAAA,EACA;EAEA,IAAAC,MAAM,GAAAC,SAAe,CAAAC,MAAO,QAASD,SAAA,iBAAAA,SAAA;EACrC,IAAAE,YAAa,GAAAR,MAAU,CAAAI,SAAA;EACvBI,YAAU,CAAAC,OAAM,GAAAL,SAAA;EACdL,SAAK,aAAU;IACf,KAAAE,KAAM,KAAAE,OAAa;IACjB,IAAAO,SAAU,YAAQC,UAAYA,CAAAC,KAAM;MACpC,IAAAA,KAAA,CAAAC,GAAa,aAAQ,IAAAD,KAAA,CAAAE,gBAAA;MACvBN,YAAA,CAAAC,OAAA;IACA;IACA,IAAAM,IAAK,GAAAV,MAAA,KAAiB,aAAWW,QAA0B,GAAAC,MAAA;IAC3DF,IAAA,CAAAG,gBAAkB,YAAAR,SAAoB;IACxC,OAAI,YAAgB;MACtB,OAAAK,IAAA,CAAAI,mBAAA,YAAAT,SAAA","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { transitionProps } from "@multiplatform.one/theme";
|
|
2
|
-
import { useCallback, useEffect, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
3
|
-
import { OVERLAY_ANCHOR_GAP, OVERLAY_ATTACH_GAP, OVERLAY_BREAKPOINT, Surface, useResolvedKnobs, wasKeyboardFocus, ensureKeyboardModalityTracking } from "@multiplatform.one/theme";
|
|
2
|
+
import { cloneElement, isValidElement, useCallback, useEffect, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
3
|
+
import { OVERLAY_ANCHOR_GAP, OVERLAY_ATTACH_GAP, OVERLAY_BREAKPOINT, Surface, useResolvedKnobs, wasKeyboardFocus, ensureKeyboardModalityTracking, motionDurationMs } from "@multiplatform.one/theme";
|
|
4
4
|
import { isWeb, Sheet, View, YStack } from "tamagui";
|
|
5
5
|
import { useClick, useDismiss, useInteractions } from "@floating-ui/react";
|
|
6
6
|
import { ScrollArrow } from "../shared/floatingList.mjs";
|
|
@@ -71,8 +71,10 @@ function fixedContainingBlockOrigin(element) {
|
|
|
71
71
|
left: 0
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
-
function isRtl() {
|
|
75
|
-
|
|
74
|
+
function isRtl(element) {
|
|
75
|
+
if (!isWeb || typeof document === "undefined") return false;
|
|
76
|
+
const direction = element ? getComputedStyle(element).direction : "";
|
|
77
|
+
return direction ? direction === "rtl" : (element?.closest("[dir]") ?? document.documentElement).getAttribute("dir") === "rtl";
|
|
76
78
|
}
|
|
77
79
|
function panelTransformOrigin(placement) {
|
|
78
80
|
const rtl = isRtl();
|
|
@@ -84,37 +86,76 @@ function panelTransformOrigin(placement) {
|
|
|
84
86
|
const ECHO_STRIPPED_ATTRIBUTES = ["id", "for", "name", "data-testid", "aria-label", "aria-controls", "aria-labelledby", "aria-describedby", "aria-activedescendant"];
|
|
85
87
|
function TriggerEchoRow({
|
|
86
88
|
sourceRef,
|
|
87
|
-
onPress
|
|
89
|
+
onPress,
|
|
90
|
+
children,
|
|
91
|
+
anchorRect,
|
|
92
|
+
source
|
|
88
93
|
}) {
|
|
89
94
|
const rowRef = useRef(null);
|
|
95
|
+
const visualRef = useRef(null);
|
|
90
96
|
useLayoutEffect(() => {
|
|
91
97
|
const row = rowRef.current;
|
|
92
|
-
const
|
|
93
|
-
if (!row || !
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
98
|
+
const source2 = sourceRef.current;
|
|
99
|
+
if (!row || !source2 || typeof source2.cloneNode !== "function") return;
|
|
100
|
+
const sync = () => {
|
|
101
|
+
const control = source2.matches(PANEL_FOCUSABLE) ? source2 : source2.querySelector(PANEL_FOCUSABLE);
|
|
102
|
+
const labelledBy = control?.getAttribute("aria-labelledby");
|
|
103
|
+
const label = control?.getAttribute("aria-label") || labelledBy?.split(/\s+/).map(id => document.getElementById(id)?.textContent || "").join(" ") || control?.textContent || source2.textContent || "";
|
|
104
|
+
row.setAttribute("aria-label", label);
|
|
105
|
+
const rect = anchorRect ?? source2.getBoundingClientRect();
|
|
106
|
+
row.style.width = `${rect.width}px`;
|
|
107
|
+
row.style.height = `${rect.height}px`;
|
|
108
|
+
const rtl = isRtl(source2);
|
|
109
|
+
row.style.alignSelf = "flex-start";
|
|
110
|
+
const frameStyle = row.parentElement ? getComputedStyle(row.parentElement) : null;
|
|
111
|
+
row.style.marginTop = `${-(parseFloat(frameStyle?.borderTopWidth || "0") || 0)}px`;
|
|
112
|
+
row.style.position = "sticky";
|
|
113
|
+
row.style.top = row.style.marginTop;
|
|
114
|
+
row.style.zIndex = "1";
|
|
115
|
+
row.style.marginLeft = rtl ? "" : `${-(parseFloat(frameStyle?.borderLeftWidth || "0") || 0)}px`;
|
|
116
|
+
row.style.marginRight = rtl ? `${-(parseFloat(frameStyle?.borderRightWidth || "0") || 0)}px` : "";
|
|
117
|
+
const snapshot = children == null ? source2.cloneNode(true) : visualRef.current;
|
|
118
|
+
if (!snapshot) return;
|
|
119
|
+
const sourceFields = source2.querySelectorAll("input, textarea");
|
|
120
|
+
const snapshotFields = snapshot.querySelectorAll("input, textarea");
|
|
121
|
+
sourceFields.forEach((field, index) => {
|
|
122
|
+
const copy = snapshotFields[index];
|
|
123
|
+
if (copy) copy.value = field.value;
|
|
124
|
+
});
|
|
125
|
+
for (const node of [snapshot, ...Array.from(snapshot.querySelectorAll("*"))]) {
|
|
126
|
+
for (const name of ECHO_STRIPPED_ATTRIBUTES) node.removeAttribute(name);
|
|
127
|
+
if (node.hasAttribute("tabindex") || node.matches("input, textarea, button, a, select")) {
|
|
128
|
+
node.setAttribute("tabindex", "-1");
|
|
129
|
+
}
|
|
105
130
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
131
|
+
snapshot.setAttribute("inert", "");
|
|
132
|
+
snapshot.setAttribute("aria-hidden", "true");
|
|
133
|
+
if (children == null) visualRef.current?.replaceChildren(snapshot);
|
|
134
|
+
};
|
|
135
|
+
sync();
|
|
136
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
137
|
+
const observer = new ResizeObserver(sync);
|
|
138
|
+
observer.observe(source2);
|
|
139
|
+
return () => observer.disconnect();
|
|
140
|
+
}, [sourceRef, source, children, anchorRect]);
|
|
110
141
|
return /* @__PURE__ */jsx(View, {
|
|
111
142
|
ref: rowRef,
|
|
112
143
|
"data-fp-trigger-row": "",
|
|
113
|
-
"
|
|
144
|
+
role: "button",
|
|
145
|
+
"aria-expanded": true,
|
|
146
|
+
tabIndex: -1,
|
|
114
147
|
cursor: "pointer",
|
|
115
148
|
onPress,
|
|
116
149
|
flexShrink: 0,
|
|
117
|
-
pointerEvents: "auto"
|
|
150
|
+
pointerEvents: "auto",
|
|
151
|
+
children: /* @__PURE__ */jsx(View, {
|
|
152
|
+
ref: visualRef,
|
|
153
|
+
pointerEvents: "none",
|
|
154
|
+
"aria-hidden": true,
|
|
155
|
+
children: isValidElement(children) ? cloneElement(children, {
|
|
156
|
+
ref: null
|
|
157
|
+
}) : children
|
|
158
|
+
})
|
|
118
159
|
});
|
|
119
160
|
}
|
|
120
161
|
const overlayFloatBreakpoint = OVERLAY_BREAKPOINT;
|
|
@@ -136,6 +177,7 @@ function FloatingPanel(props) {
|
|
|
136
177
|
const shouldUseSheet = props.sheet ?? (!isWeb || !viewportGtSm);
|
|
137
178
|
const panelProps = {
|
|
138
179
|
...props,
|
|
180
|
+
cover: props.anchorMode ? props.anchorMode === "cover-trigger" : props.cover,
|
|
139
181
|
children: /* @__PURE__ */jsx(Surface, {
|
|
140
182
|
painted: false,
|
|
141
183
|
children: props.children
|
|
@@ -176,7 +218,8 @@ function FloatingPanelSheet({
|
|
|
176
218
|
transition: transitionProp,
|
|
177
219
|
header,
|
|
178
220
|
scrollViewProps,
|
|
179
|
-
openOn = "press"
|
|
221
|
+
openOn = "press",
|
|
222
|
+
escapeTarget = "window"
|
|
180
223
|
}) {
|
|
181
224
|
const {
|
|
182
225
|
knobProps
|
|
@@ -197,7 +240,7 @@ function FloatingPanelSheet({
|
|
|
197
240
|
if (next) setPosition(0);
|
|
198
241
|
onOpenChange(next);
|
|
199
242
|
};
|
|
200
|
-
useSheetEscapeDismiss(open, () => handleOpenChange(false));
|
|
243
|
+
useSheetEscapeDismiss(open, () => handleOpenChange(false), escapeTarget);
|
|
201
244
|
const sheetFrameRef = useRef(null);
|
|
202
245
|
useParkedFrameInert(open, sheetFrameRef);
|
|
203
246
|
useSheetModalFocus(open, sheetFrameRef, skipReturnFocusRef);
|
|
@@ -218,7 +261,7 @@ function FloatingPanelSheet({
|
|
|
218
261
|
onClickCapture: openFromTrigger
|
|
219
262
|
} : void 0;
|
|
220
263
|
return /* @__PURE__ */jsxs(Fragment, {
|
|
221
|
-
children: [/* @__PURE__ */jsxs(View, {
|
|
264
|
+
children: [trigger != null && /* @__PURE__ */jsxs(View, {
|
|
222
265
|
flexDirection: "row",
|
|
223
266
|
alignItems: "center",
|
|
224
267
|
width: triggerSizing === "content" ? "auto" : "100%",
|
|
@@ -254,6 +297,7 @@ function FloatingPanelSheet({
|
|
|
254
297
|
opacity: 0
|
|
255
298
|
}
|
|
256
299
|
}), /* @__PURE__ */jsx(Sheet.Handle, {}), /* @__PURE__ */jsxs(Sheet.Frame, {
|
|
300
|
+
"data-testid": "floating-panel-sheet",
|
|
257
301
|
...{
|
|
258
302
|
ref: sheetFrameRef,
|
|
259
303
|
tabIndex: -1
|
|
@@ -286,8 +330,12 @@ function FloatingPanelWeb({
|
|
|
286
330
|
contentPadding = "default",
|
|
287
331
|
openOn = "press",
|
|
288
332
|
cover = true,
|
|
289
|
-
triggerEcho = true
|
|
333
|
+
triggerEcho = true,
|
|
334
|
+
triggerRow,
|
|
335
|
+
anchorRect,
|
|
336
|
+
...sheetProps
|
|
290
337
|
}) {
|
|
338
|
+
const [collisionSheet, setCollisionSheet] = useState(false);
|
|
291
339
|
const isFill = sizing === "fill";
|
|
292
340
|
const isContextMenu = openOn === "contextmenu";
|
|
293
341
|
const overlayStyleRef = useRef(null);
|
|
@@ -313,7 +361,7 @@ function FloatingPanelWeb({
|
|
|
313
361
|
pointPlacementRef.current = null;
|
|
314
362
|
};
|
|
315
363
|
const panel = useFloatingPanel({
|
|
316
|
-
open,
|
|
364
|
+
open: open && !collisionSheet,
|
|
317
365
|
onOpenChange,
|
|
318
366
|
disabled,
|
|
319
367
|
repositionRef: repositionFnRef,
|
|
@@ -324,13 +372,18 @@ function FloatingPanelWeb({
|
|
|
324
372
|
cover,
|
|
325
373
|
onBeforeOpen: resetPosition
|
|
326
374
|
});
|
|
327
|
-
useReturnFocusOnClose(open, skipReturnFocusRef);
|
|
328
|
-
useKeyboardFocusIntoPanel(open && panel.mounted, panel.refs.floating, keyboardOpenRef);
|
|
375
|
+
useReturnFocusOnClose(open, skipReturnFocusRef, panel.refs.floating);
|
|
376
|
+
useKeyboardFocusIntoPanel(open && panel.mounted && !collisionSheet, panel.refs.floating, keyboardOpenRef);
|
|
329
377
|
useEffect(() => {
|
|
330
378
|
if (open) return;
|
|
331
379
|
keyboardOpenRef.current = false;
|
|
332
380
|
anchorPointRef.current = null;
|
|
333
381
|
}, [open]);
|
|
382
|
+
useEffect(() => {
|
|
383
|
+
if (open || !collisionSheet) return;
|
|
384
|
+
const timer = setTimeout(() => setCollisionSheet(false), motionDurationMs(panel.knobProps.motion.slide.transition));
|
|
385
|
+
return () => clearTimeout(timer);
|
|
386
|
+
}, [open, collisionSheet, panel.knobProps.motion.slide.transition]);
|
|
334
387
|
const repositionOverlay = useCallback(() => {
|
|
335
388
|
const dropdownElement = panel.refs.floating.current;
|
|
336
389
|
const trig = panel.triggerRef.current;
|
|
@@ -341,10 +394,17 @@ function FloatingPanelWeb({
|
|
|
341
394
|
dropdownElement.scrollTop = 0;
|
|
342
395
|
}
|
|
343
396
|
const point = isContextMenu ? anchorPointRef.current ?? referenceCornerPoint(trig, isRtl()) : null;
|
|
397
|
+
const measured = anchorRect ? {
|
|
398
|
+
...anchorRect,
|
|
399
|
+
top: anchorRect.y,
|
|
400
|
+
left: anchorRect.x,
|
|
401
|
+
right: anchorRect.x + anchorRect.width,
|
|
402
|
+
bottom: anchorRect.y + anchorRect.height
|
|
403
|
+
} : trig.getBoundingClientRect();
|
|
344
404
|
const triggerBounds = point ? {
|
|
345
405
|
top: point.y,
|
|
346
406
|
bottom: point.y
|
|
347
|
-
} :
|
|
407
|
+
} : measured;
|
|
348
408
|
const viewportHeight = window.innerHeight;
|
|
349
409
|
const cs = getComputedStyle(dropdownElement);
|
|
350
410
|
const borderTopWidth = parseFloat(cs.borderTopWidth) || 0;
|
|
@@ -354,6 +414,46 @@ function FloatingPanelWeb({
|
|
|
354
414
|
const totalContentHeight = scrollContentHeight + totalBorderWidth;
|
|
355
415
|
const liveTransition = panel.panelTransition;
|
|
356
416
|
const containingBlock = fixedContainingBlockOrigin(dropdownElement);
|
|
417
|
+
if (cover && !point) {
|
|
418
|
+
const rtl = isRtl(trig);
|
|
419
|
+
const viewport = window.visualViewport;
|
|
420
|
+
const viewportLeft = viewport?.offsetLeft ?? 0;
|
|
421
|
+
const viewportTop = viewport?.offsetTop ?? 0;
|
|
422
|
+
const viewportRight = viewportLeft + (viewport?.width ?? (document.documentElement.clientWidth || window.innerWidth));
|
|
423
|
+
const viewportBottom = viewportTop + (viewport?.height ?? window.innerHeight);
|
|
424
|
+
dropdownElement.style.left = `${viewportLeft - containingBlock.left}px`;
|
|
425
|
+
const layoutStyle = getComputedStyle(dropdownElement);
|
|
426
|
+
const scale = layoutStyle.transform && layoutStyle.transform !== "none" && typeof DOMMatrixReadOnly !== "undefined" ? Math.abs(new DOMMatrixReadOnly(layoutStyle.transform).a) : 1;
|
|
427
|
+
const layoutWidth = dropdownElement.getBoundingClientRect().width / (scale || 1);
|
|
428
|
+
const width = Math.max(layoutWidth || dropdownElement.offsetWidth, measured.width);
|
|
429
|
+
const left = rtl ? measured.right - width : measured.left;
|
|
430
|
+
const firstActionHeight = contentRef.current?.querySelector(PANEL_FOCUSABLE)?.getBoundingClientRect().height || Number(panel.knobProps.menuRow.minHeight) || totalContentHeight;
|
|
431
|
+
const bodyStyle = contentRef.current ? getComputedStyle(contentRef.current) : null;
|
|
432
|
+
const bodyPadding = (parseFloat(bodyStyle?.paddingTop || "0") || 0) + (parseFloat(bodyStyle?.paddingBottom || "0") || 0);
|
|
433
|
+
const neededHeight = sheetProps.scrollable ? Math.min(totalContentHeight, measured.height + firstActionHeight + bodyPadding + totalBorderWidth) : totalContentHeight;
|
|
434
|
+
if (measured.width > 0 && measured.height > 0 && (left < viewportLeft || left + width > Math.max(measured.right, viewportRight - panelViewportPadding) || measured.right > viewportRight || measured.top < viewportTop || measured.top + Math.max(neededHeight, measured.height) > viewportBottom - panelViewportPadding)) {
|
|
435
|
+
dropdownElement.style.visibility = "hidden";
|
|
436
|
+
setCollisionSheet(true);
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
|
+
const top2 = measured.top - containingBlock.top;
|
|
440
|
+
const cssLeft2 = left - containingBlock.left;
|
|
441
|
+
const maxHeight = Math.max(0, viewportBottom - panelViewportPadding - measured.top);
|
|
442
|
+
dropdownElement.style.top = `${top2}px`;
|
|
443
|
+
dropdownElement.style.left = `${cssLeft2}px`;
|
|
444
|
+
dropdownElement.style.maxHeight = `${maxHeight}px`;
|
|
445
|
+
dropdownElement.dir = rtl ? "rtl" : "ltr";
|
|
446
|
+
dropdownElement.style.transformOrigin = rtl ? "top right" : "top left";
|
|
447
|
+
dropdownElement.style.visibility = "visible";
|
|
448
|
+
overlayStyleRef.current = {
|
|
449
|
+
top: top2,
|
|
450
|
+
left: cssLeft2,
|
|
451
|
+
maxHeight
|
|
452
|
+
};
|
|
453
|
+
panel.initializingRef.current = false;
|
|
454
|
+
if (isInitial) dropdownElement.style.transition = liveTransition;
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
357
457
|
let isDropup = panel.placement.startsWith("top");
|
|
358
458
|
let cssLeft;
|
|
359
459
|
if (point) {
|
|
@@ -474,13 +574,14 @@ function FloatingPanelWeb({
|
|
|
474
574
|
});
|
|
475
575
|
}
|
|
476
576
|
});
|
|
477
|
-
}, [isFill, isContextMenu, cover, panel.placement, panel.refs, panel.triggerRef, panel.updateArrows, panel.panelTransition]);
|
|
577
|
+
}, [isFill, isContextMenu, cover, anchorRect, sheetProps.scrollable, panel.placement, panel.refs, panel.triggerRef, panel.updateArrows, panel.panelTransition]);
|
|
478
578
|
repositionFnRef.current = repositionOverlay;
|
|
479
579
|
const click = useClick(panel.context, {
|
|
480
580
|
event: "mousedown",
|
|
481
|
-
enabled: !isContextMenu
|
|
581
|
+
enabled: !isContextMenu && !collisionSheet
|
|
482
582
|
});
|
|
483
583
|
const dismiss = useDismiss(panel.context, {
|
|
584
|
+
enabled: !collisionSheet,
|
|
484
585
|
// Use 'click' instead of default 'pointerdown' so scrolling to the bottom
|
|
485
586
|
// (e.g. via wheel/trackpad or scroll arrow hover) doesn't trigger outside-press.
|
|
486
587
|
outsidePressEvent: "click",
|
|
@@ -495,10 +596,10 @@ function FloatingPanelWeb({
|
|
|
495
596
|
useLayoutEffect(() => {
|
|
496
597
|
if (!open || !panel.mounted) return;
|
|
497
598
|
repositionOverlay();
|
|
498
|
-
}, [open, panel.mounted, repositionOverlay, panel.y]);
|
|
599
|
+
}, [open, panel.mounted, repositionOverlay, panel.y, panel.x]);
|
|
499
600
|
useLayoutEffect(() => {
|
|
500
601
|
const content = contentRef.current;
|
|
501
|
-
if (!open || !panel.mounted || !isFill || !content || typeof ResizeObserver === "undefined") {
|
|
602
|
+
if (!open || !panel.mounted || !isFill && !cover || !content || typeof ResizeObserver === "undefined") {
|
|
502
603
|
return;
|
|
503
604
|
}
|
|
504
605
|
let frame = 0;
|
|
@@ -510,15 +611,16 @@ function FloatingPanelWeb({
|
|
|
510
611
|
});
|
|
511
612
|
});
|
|
512
613
|
observer.observe(content);
|
|
614
|
+
if (panel.triggerRef.current) observer.observe(panel.triggerRef.current);
|
|
513
615
|
return () => {
|
|
514
616
|
observer.disconnect();
|
|
515
617
|
if (frame) cancelAnimationFrame(frame);
|
|
516
618
|
};
|
|
517
|
-
}, [open, panel.mounted, isFill, repositionOverlay]);
|
|
619
|
+
}, [open, panel.mounted, isFill, cover, repositionOverlay, panel.triggerRef]);
|
|
518
620
|
const handleScroll = useCallback(event => {
|
|
519
621
|
const el = event.target;
|
|
520
622
|
panel.updateArrows(el);
|
|
521
|
-
if (isFill) return;
|
|
623
|
+
if (isFill || cover && !isContextMenu) return;
|
|
522
624
|
if (panel.initializingRef.current) {
|
|
523
625
|
lastScrollTopRef.current = el.scrollTop;
|
|
524
626
|
return;
|
|
@@ -541,7 +643,7 @@ function FloatingPanelWeb({
|
|
|
541
643
|
grownRef.current = true;
|
|
542
644
|
repositionFnRef.current?.();
|
|
543
645
|
}
|
|
544
|
-
}, [isFill, panel.updateArrows]);
|
|
646
|
+
}, [isFill, cover, isContextMenu, panel.updateArrows]);
|
|
545
647
|
const webTransition = panel.panelTransition;
|
|
546
648
|
const {
|
|
547
649
|
style: elevatedSurfaceStyle,
|
|
@@ -596,11 +698,21 @@ function FloatingPanelWeb({
|
|
|
596
698
|
return /* @__PURE__ */jsxs(Fragment, {
|
|
597
699
|
children: [/* @__PURE__ */jsx(View, {
|
|
598
700
|
...referenceProps,
|
|
701
|
+
alignSelf: sheetProps.triggerSizing === "content" ? "flex-start" : void 0,
|
|
599
702
|
cursor: disabled ? "not-allowed" : "pointer",
|
|
600
703
|
opacity: disabled ? 0.5 : 1,
|
|
601
704
|
"data-fp-reference": "",
|
|
602
705
|
children: trigger
|
|
603
|
-
}),
|
|
706
|
+
}), collisionSheet && /* @__PURE__ */jsx(FloatingPanelSheet, {
|
|
707
|
+
...sheetProps,
|
|
708
|
+
open,
|
|
709
|
+
onOpenChange,
|
|
710
|
+
trigger: null,
|
|
711
|
+
escapeTarget: "document",
|
|
712
|
+
skipReturnFocusRef,
|
|
713
|
+
contentPadding,
|
|
714
|
+
children
|
|
715
|
+
}), panel.mounted && !collisionSheet && /* @__PURE__ */jsx(PanelPortal, {
|
|
604
716
|
anchor: panel.triggerRef.current,
|
|
605
717
|
children: /* @__PURE__ */jsxs(YStack, {
|
|
606
718
|
...getFloatingProps({
|
|
@@ -613,6 +725,9 @@ function FloatingPanelWeb({
|
|
|
613
725
|
scrollbarWidth: "none",
|
|
614
726
|
zIndex: zIndex.dropdown,
|
|
615
727
|
overflow: "auto",
|
|
728
|
+
...(cover && !isContextMenu ? {
|
|
729
|
+
overflowX: "hidden"
|
|
730
|
+
} : {}),
|
|
616
731
|
...panel.floatingStyleRef.current,
|
|
617
732
|
...(overlayStyleRef.current ? {
|
|
618
733
|
maxHeight: overlayStyleRef.current.maxHeight
|
|
@@ -623,7 +738,7 @@ function FloatingPanelWeb({
|
|
|
623
738
|
// then positions against this box and is clipped by its scroll.
|
|
624
739
|
transform: panel.visible ? "none" : "scale(0.96)",
|
|
625
740
|
transition: webTransition,
|
|
626
|
-
transformOrigin: panelTransformOrigin(pointPlacementRef.current ? `${pointPlacementRef.current.dropup ? "top" : "bottom"}-${pointPlacementRef.current.alignEnd ? "end" : "start"}` : panel.placement)
|
|
741
|
+
transformOrigin: cover && !isContextMenu ? isRtl(panel.triggerRef.current) ? "top right" : "top left" : panelTransformOrigin(pointPlacementRef.current ? `${pointPlacementRef.current.dropup ? "top" : "bottom"}-${pointPlacementRef.current.alignEnd ? "end" : "start"}` : panel.placement)
|
|
627
742
|
},
|
|
628
743
|
onScroll: handleScroll,
|
|
629
744
|
onTransitionEnd: event => {
|
|
@@ -641,7 +756,10 @@ function FloatingPanelWeb({
|
|
|
641
756
|
paddingVertical: 0,
|
|
642
757
|
children: [isContextMenu || !cover || !triggerEcho ? null : /* @__PURE__ */jsx(TriggerEchoRow, {
|
|
643
758
|
sourceRef: panel.triggerRef,
|
|
644
|
-
|
|
759
|
+
source: trigger,
|
|
760
|
+
anchorRect,
|
|
761
|
+
onPress: () => onOpenChange(false),
|
|
762
|
+
children: triggerRow
|
|
645
763
|
}), /* @__PURE__ */jsx(ScrollArrow, {
|
|
646
764
|
direction: "up",
|
|
647
765
|
scrollRef: panel.refs.floating,
|