@tamagui/select 2.0.0-rc.4 → 2.0.0-rc.40
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/BubbleSelect.cjs +28 -23
- package/dist/cjs/BubbleSelect.native.js +12 -10
- package/dist/cjs/BubbleSelect.native.js.map +1 -1
- package/dist/cjs/Select.cjs +402 -376
- package/dist/cjs/Select.native.js +428 -414
- package/dist/cjs/Select.native.js.map +1 -1
- package/dist/cjs/SelectContent.cjs +73 -66
- package/dist/cjs/SelectContent.native.js +12 -10
- package/dist/cjs/SelectContent.native.js.map +1 -1
- package/dist/cjs/SelectImpl.cjs +239 -176
- package/dist/cjs/SelectImpl.native.js +21 -16
- package/dist/cjs/SelectImpl.native.js.map +1 -1
- package/dist/cjs/SelectItem.cjs +189 -137
- package/dist/cjs/SelectItem.native.js +211 -164
- package/dist/cjs/SelectItem.native.js.map +1 -1
- package/dist/cjs/SelectItemText.cjs +82 -68
- package/dist/cjs/SelectItemText.native.js +81 -69
- package/dist/cjs/SelectItemText.native.js.map +1 -1
- package/dist/cjs/SelectScrollButton.cjs +104 -83
- package/dist/cjs/SelectScrollButton.native.js +17 -15
- package/dist/cjs/SelectScrollButton.native.js.map +1 -1
- package/dist/cjs/SelectTrigger.cjs +81 -77
- package/dist/cjs/SelectTrigger.native.js +43 -40
- package/dist/cjs/SelectTrigger.native.js.map +1 -1
- package/dist/cjs/SelectViewport.cjs +141 -103
- package/dist/cjs/SelectViewport.native.js +39 -37
- package/dist/cjs/SelectViewport.native.js.map +1 -1
- package/dist/cjs/constants.cjs +19 -17
- package/dist/cjs/constants.native.js +19 -17
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/context.cjs +38 -27
- package/dist/cjs/context.native.js +46 -38
- package/dist/cjs/context.native.js.map +1 -1
- package/dist/cjs/index.cjs +7 -5
- package/dist/cjs/index.native.js +7 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/types.cjs +7 -5
- package/dist/cjs/types.native.js +7 -5
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/useSelectBreakpointActive.cjs +13 -11
- package/dist/cjs/useSelectBreakpointActive.native.js +17 -15
- package/dist/cjs/useSelectBreakpointActive.native.js.map +1 -1
- package/dist/esm/BubbleSelect.mjs +16 -13
- package/dist/esm/BubbleSelect.mjs.map +1 -1
- package/dist/esm/Select.mjs +356 -331
- package/dist/esm/Select.mjs.map +1 -1
- package/dist/esm/Select.native.js +381 -369
- package/dist/esm/Select.native.js.map +1 -1
- package/dist/esm/SelectContent.mjs +55 -39
- package/dist/esm/SelectContent.mjs.map +1 -1
- package/dist/esm/SelectImpl.mjs +208 -147
- package/dist/esm/SelectImpl.mjs.map +1 -1
- package/dist/esm/SelectImpl.native.js +4 -1
- package/dist/esm/SelectImpl.native.js.map +1 -1
- package/dist/esm/SelectItem.mjs +157 -107
- package/dist/esm/SelectItem.mjs.map +1 -1
- package/dist/esm/SelectItem.native.js +180 -135
- package/dist/esm/SelectItem.native.js.map +1 -1
- package/dist/esm/SelectItemText.mjs +50 -38
- package/dist/esm/SelectItemText.mjs.map +1 -1
- package/dist/esm/SelectItemText.native.js +50 -40
- package/dist/esm/SelectItemText.native.js.map +1 -1
- package/dist/esm/SelectScrollButton.mjs +74 -55
- package/dist/esm/SelectScrollButton.mjs.map +1 -1
- package/dist/esm/SelectScrollButton.native.js +5 -5
- package/dist/esm/SelectScrollButton.native.js.map +1 -1
- package/dist/esm/SelectTrigger.mjs +51 -49
- package/dist/esm/SelectTrigger.mjs.map +1 -1
- package/dist/esm/SelectTrigger.native.js +13 -12
- package/dist/esm/SelectTrigger.native.js.map +1 -1
- package/dist/esm/SelectViewport.mjs +108 -83
- package/dist/esm/SelectViewport.mjs.map +1 -1
- package/dist/esm/SelectViewport.native.js +7 -7
- package/dist/esm/SelectViewport.native.js.map +1 -1
- package/dist/esm/constants.mjs +7 -7
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +7 -7
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/context.mjs +22 -14
- package/dist/esm/context.mjs.map +1 -1
- package/dist/esm/context.native.js +30 -25
- package/dist/esm/context.native.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/useSelectBreakpointActive.mjs +1 -1
- package/dist/esm/useSelectBreakpointActive.mjs.map +1 -1
- package/dist/esm/useSelectBreakpointActive.native.js +1 -1
- package/dist/esm/useSelectBreakpointActive.native.js.map +1 -1
- package/dist/jsx/BubbleSelect.mjs +16 -13
- package/dist/jsx/BubbleSelect.mjs.map +1 -1
- package/dist/jsx/BubbleSelect.native.js +12 -10
- package/dist/jsx/BubbleSelect.native.js.map +1 -1
- package/dist/jsx/Select.mjs +356 -331
- package/dist/jsx/Select.mjs.map +1 -1
- package/dist/jsx/Select.native.js +428 -414
- package/dist/jsx/Select.native.js.map +1 -1
- package/dist/jsx/SelectContent.mjs +55 -39
- package/dist/jsx/SelectContent.mjs.map +1 -1
- package/dist/jsx/SelectContent.native.js +12 -10
- package/dist/jsx/SelectContent.native.js.map +1 -1
- package/dist/jsx/SelectImpl.mjs +208 -147
- package/dist/jsx/SelectImpl.mjs.map +1 -1
- package/dist/jsx/SelectImpl.native.js +21 -16
- package/dist/jsx/SelectImpl.native.js.map +1 -1
- package/dist/jsx/SelectItem.mjs +157 -107
- package/dist/jsx/SelectItem.mjs.map +1 -1
- package/dist/jsx/SelectItem.native.js +211 -164
- package/dist/jsx/SelectItem.native.js.map +1 -1
- package/dist/jsx/SelectItemText.mjs +50 -38
- package/dist/jsx/SelectItemText.mjs.map +1 -1
- package/dist/jsx/SelectItemText.native.js +81 -69
- package/dist/jsx/SelectItemText.native.js.map +1 -1
- package/dist/jsx/SelectScrollButton.mjs +74 -55
- package/dist/jsx/SelectScrollButton.mjs.map +1 -1
- package/dist/jsx/SelectScrollButton.native.js +17 -15
- package/dist/jsx/SelectScrollButton.native.js.map +1 -1
- package/dist/jsx/SelectTrigger.mjs +51 -49
- package/dist/jsx/SelectTrigger.mjs.map +1 -1
- package/dist/jsx/SelectTrigger.native.js +43 -40
- package/dist/jsx/SelectTrigger.native.js.map +1 -1
- package/dist/jsx/SelectViewport.mjs +108 -83
- package/dist/jsx/SelectViewport.mjs.map +1 -1
- package/dist/jsx/SelectViewport.native.js +39 -37
- package/dist/jsx/SelectViewport.native.js.map +1 -1
- package/dist/jsx/constants.mjs +7 -7
- package/dist/jsx/constants.mjs.map +1 -1
- package/dist/jsx/constants.native.js +19 -17
- package/dist/jsx/constants.native.js.map +1 -1
- package/dist/jsx/context.mjs +22 -14
- package/dist/jsx/context.mjs.map +1 -1
- package/dist/jsx/context.native.js +46 -38
- package/dist/jsx/context.native.js.map +1 -1
- package/dist/jsx/index.js +2 -2
- package/dist/jsx/index.js.map +1 -6
- package/dist/jsx/index.native.js +7 -5
- package/dist/jsx/types.native.js +7 -5
- package/dist/jsx/useSelectBreakpointActive.mjs +1 -1
- package/dist/jsx/useSelectBreakpointActive.mjs.map +1 -1
- package/dist/jsx/useSelectBreakpointActive.native.js +17 -15
- package/dist/jsx/useSelectBreakpointActive.native.js.map +1 -1
- package/package.json +31 -35
- package/src/Select.tsx +16 -1
- package/src/SelectContent.tsx +47 -36
- package/src/SelectImpl.tsx +51 -49
- package/src/SelectItem.tsx +17 -7
- package/src/SelectScrollButton.tsx +1 -1
- package/src/SelectTrigger.tsx +1 -1
- package/src/SelectViewport.tsx +42 -22
- package/src/context.tsx +4 -0
- package/src/types.tsx +44 -4
- package/types/Select.d.ts +2 -2
- package/types/Select.d.ts.map +1 -1
- package/types/SelectContent.d.ts +1 -1
- package/types/SelectContent.d.ts.map +1 -1
- package/types/SelectImpl.d.ts.map +1 -1
- package/types/SelectItem.d.ts.map +1 -1
- package/types/SelectTrigger.d.ts +1 -1
- package/types/SelectViewport.d.ts.map +1 -1
- package/types/context.d.ts +1 -0
- package/types/context.d.ts.map +1 -1
- package/types/types.d.ts +33 -3
- package/types/types.d.ts.map +1 -1
- package/dist/cjs/BubbleSelect.js +0 -34
- package/dist/cjs/BubbleSelect.js.map +0 -6
- package/dist/cjs/Select.js +0 -402
- package/dist/cjs/Select.js.map +0 -6
- package/dist/cjs/SelectContent.js +0 -57
- package/dist/cjs/SelectContent.js.map +0 -6
- package/dist/cjs/SelectImpl.js +0 -222
- package/dist/cjs/SelectImpl.js.map +0 -6
- package/dist/cjs/SelectItem.js +0 -166
- package/dist/cjs/SelectItem.js.map +0 -6
- package/dist/cjs/SelectItemText.js +0 -64
- package/dist/cjs/SelectItemText.js.map +0 -6
- package/dist/cjs/SelectScrollButton.js +0 -105
- package/dist/cjs/SelectScrollButton.js.map +0 -6
- package/dist/cjs/SelectTrigger.js +0 -81
- package/dist/cjs/SelectTrigger.js.map +0 -6
- package/dist/cjs/SelectViewport.js +0 -114
- package/dist/cjs/SelectViewport.js.map +0 -6
- package/dist/cjs/constants.js +0 -27
- package/dist/cjs/constants.js.map +0 -6
- package/dist/cjs/context.js +0 -33
- package/dist/cjs/context.js.map +0 -6
- package/dist/cjs/index.js +0 -16
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/types.js +0 -14
- package/dist/cjs/types.js.map +0 -6
- package/dist/cjs/useSelectBreakpointActive.js +0 -25
- package/dist/cjs/useSelectBreakpointActive.js.map +0 -6
- package/dist/esm/BubbleSelect.js +0 -17
- package/dist/esm/BubbleSelect.js.map +0 -6
- package/dist/esm/Select.js +0 -412
- package/dist/esm/Select.js.map +0 -6
- package/dist/esm/SelectContent.js +0 -39
- package/dist/esm/SelectContent.js.map +0 -6
- package/dist/esm/SelectImpl.js +0 -223
- package/dist/esm/SelectImpl.js.map +0 -6
- package/dist/esm/SelectItem.js +0 -148
- package/dist/esm/SelectItem.js.map +0 -6
- package/dist/esm/SelectItemText.js +0 -46
- package/dist/esm/SelectItemText.js.map +0 -6
- package/dist/esm/SelectScrollButton.js +0 -87
- package/dist/esm/SelectScrollButton.js.map +0 -6
- package/dist/esm/SelectTrigger.js +0 -61
- package/dist/esm/SelectTrigger.js.map +0 -6
- package/dist/esm/SelectViewport.js +0 -112
- package/dist/esm/SelectViewport.js.map +0 -6
- package/dist/esm/constants.js +0 -11
- package/dist/esm/constants.js.map +0 -6
- package/dist/esm/context.js +0 -19
- package/dist/esm/context.js.map +0 -6
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -6
- package/dist/esm/useSelectBreakpointActive.js +0 -9
- package/dist/esm/useSelectBreakpointActive.js.map +0 -6
- package/dist/jsx/BubbleSelect.js +0 -17
- package/dist/jsx/BubbleSelect.js.map +0 -6
- package/dist/jsx/Select.js +0 -412
- package/dist/jsx/Select.js.map +0 -6
- package/dist/jsx/SelectContent.js +0 -39
- package/dist/jsx/SelectContent.js.map +0 -6
- package/dist/jsx/SelectImpl.js +0 -223
- package/dist/jsx/SelectImpl.js.map +0 -6
- package/dist/jsx/SelectItem.js +0 -148
- package/dist/jsx/SelectItem.js.map +0 -6
- package/dist/jsx/SelectItemText.js +0 -46
- package/dist/jsx/SelectItemText.js.map +0 -6
- package/dist/jsx/SelectScrollButton.js +0 -87
- package/dist/jsx/SelectScrollButton.js.map +0 -6
- package/dist/jsx/SelectTrigger.js +0 -61
- package/dist/jsx/SelectTrigger.js.map +0 -6
- package/dist/jsx/SelectViewport.js +0 -112
- package/dist/jsx/SelectViewport.js.map +0 -6
- package/dist/jsx/constants.js +0 -11
- package/dist/jsx/constants.js.map +0 -6
- package/dist/jsx/context.js +0 -19
- package/dist/jsx/context.js.map +0 -6
- package/dist/jsx/types.js +0 -1
- package/dist/jsx/types.js.map +0 -6
- package/dist/jsx/useSelectBreakpointActive.js +0 -9
- package/dist/jsx/useSelectBreakpointActive.js.map +0 -6
|
@@ -1,74 +1,88 @@
|
|
|
1
|
-
import { autoUpdate, offset, useFloating } from "@floating
|
|
1
|
+
import { autoUpdate, offset, useFloatingRaw as useFloating } from "@tamagui/floating";
|
|
2
2
|
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
3
3
|
import { YStack } from "@tamagui/stacks";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { flushSync } from "react-dom";
|
|
6
6
|
import { useSelectContext } from "./context.mjs";
|
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
|
8
|
-
const SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton"
|
|
9
|
-
|
|
8
|
+
const SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton";
|
|
9
|
+
const SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {
|
|
10
|
+
return /* @__PURE__ */jsx(SelectScrollButtonImpl, {
|
|
10
11
|
componentName: SCROLL_UP_BUTTON_NAME,
|
|
11
12
|
...props,
|
|
12
13
|
dir: "up",
|
|
13
14
|
ref: forwardedRef
|
|
14
|
-
})
|
|
15
|
+
});
|
|
16
|
+
});
|
|
15
17
|
SelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;
|
|
16
|
-
const SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton"
|
|
17
|
-
|
|
18
|
+
const SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton";
|
|
19
|
+
const SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {
|
|
20
|
+
return /* @__PURE__ */jsx(SelectScrollButtonImpl, {
|
|
18
21
|
componentName: SCROLL_DOWN_BUTTON_NAME,
|
|
19
22
|
...props,
|
|
20
23
|
dir: "down",
|
|
21
24
|
ref: forwardedRef
|
|
22
|
-
})
|
|
25
|
+
});
|
|
26
|
+
});
|
|
23
27
|
SelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
|
|
24
28
|
const SelectScrollButtonImpl = React.memo(React.forwardRef((props, forwardedRef) => {
|
|
25
29
|
const {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (!isVisible)
|
|
30
|
+
scope,
|
|
31
|
+
dir,
|
|
32
|
+
componentName,
|
|
33
|
+
...scrollIndicatorProps
|
|
34
|
+
} = props;
|
|
35
|
+
const {
|
|
36
|
+
forceUpdate,
|
|
37
|
+
open,
|
|
38
|
+
fallback,
|
|
39
|
+
setScrollTop,
|
|
40
|
+
setInnerOffset,
|
|
41
|
+
...context
|
|
42
|
+
} = useSelectContext(scope);
|
|
43
|
+
const floatingRef = context.floatingContext?.refs.floating;
|
|
44
|
+
const statusRef = React.useRef("idle");
|
|
45
|
+
const isVisible = context[dir === "down" ? "canScrollDown" : "canScrollUp"];
|
|
46
|
+
const frameRef = React.useRef(null);
|
|
47
|
+
const {
|
|
48
|
+
x,
|
|
49
|
+
y,
|
|
50
|
+
refs,
|
|
51
|
+
strategy
|
|
52
|
+
} = useFloating({
|
|
53
|
+
open: open && isVisible,
|
|
54
|
+
strategy: "fixed",
|
|
55
|
+
elements: {
|
|
56
|
+
reference: floatingRef?.current
|
|
57
|
+
},
|
|
58
|
+
placement: dir === "up" ? "top" : "bottom",
|
|
59
|
+
middleware: [offset(({
|
|
60
|
+
rects
|
|
61
|
+
}) => -rects.floating.height)],
|
|
62
|
+
whileElementsMounted: (...args) => autoUpdate(...args, {
|
|
63
|
+
animationFrame: true
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
const composedRef = useComposedRefs(forwardedRef, refs.setFloating);
|
|
67
|
+
if (!isVisible) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
64
70
|
const onScroll = amount => {
|
|
65
71
|
const floating = floatingRef;
|
|
66
|
-
|
|
72
|
+
if (!floating) return;
|
|
73
|
+
if (fallback) {
|
|
74
|
+
if (floating.current) {
|
|
75
|
+
floating.current.scrollTop -= amount;
|
|
76
|
+
flushSync(() => setScrollTop(floating.current?.scrollTop ?? 0));
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
flushSync(() => setInnerOffset(value => value - amount));
|
|
80
|
+
}
|
|
67
81
|
};
|
|
68
82
|
return /* @__PURE__ */jsx(YStack, {
|
|
69
83
|
ref: composedRef,
|
|
70
84
|
componentName,
|
|
71
|
-
"aria-hidden":
|
|
85
|
+
"aria-hidden": true,
|
|
72
86
|
...scrollIndicatorProps,
|
|
73
87
|
zIndex: 1e3,
|
|
74
88
|
position: strategy,
|
|
@@ -81,19 +95,24 @@ const SelectScrollButtonImpl = React.memo(React.forwardRef((props, forwardedRef)
|
|
|
81
95
|
function frame() {
|
|
82
96
|
const element = floatingRef?.current;
|
|
83
97
|
if (element) {
|
|
84
|
-
const currentNow = Date.now()
|
|
85
|
-
|
|
98
|
+
const currentNow = Date.now();
|
|
99
|
+
const msElapsed = currentNow - prevNow;
|
|
86
100
|
prevNow = currentNow;
|
|
87
|
-
const pixelsToScroll = msElapsed / 2
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
onScroll(dir === "up" ? Math.min(pixelsToScroll, remainingPixels) : Math.max(-pixelsToScroll, -remainingPixels))
|
|
101
|
+
const pixelsToScroll = msElapsed / 2;
|
|
102
|
+
const remainingPixels = dir === "up" ? element.scrollTop : element.scrollHeight - element.clientHeight - element.scrollTop;
|
|
103
|
+
const scrollRemaining = dir === "up" ? element.scrollTop - pixelsToScroll > 0 : element.scrollTop + pixelsToScroll < element.scrollHeight - element.clientHeight;
|
|
104
|
+
onScroll(dir === "up" ? Math.min(pixelsToScroll, remainingPixels) : Math.max(-pixelsToScroll, -remainingPixels));
|
|
105
|
+
if (scrollRemaining) {
|
|
106
|
+
frameRef.current = requestAnimationFrame(frame);
|
|
107
|
+
}
|
|
91
108
|
}
|
|
92
109
|
}
|
|
93
|
-
cancelAnimationFrame(frameRef.current)
|
|
110
|
+
cancelAnimationFrame(frameRef.current);
|
|
111
|
+
frameRef.current = requestAnimationFrame(frame);
|
|
94
112
|
},
|
|
95
113
|
onPointerLeave: () => {
|
|
96
|
-
statusRef.current = "idle"
|
|
114
|
+
statusRef.current = "idle";
|
|
115
|
+
cancelAnimationFrame(frameRef.current);
|
|
97
116
|
}
|
|
98
117
|
});
|
|
99
118
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["autoUpdate","offset","useFloating","useComposedRefs","YStack","React","flushSync","useSelectContext","jsx","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","forwardRef","props","forwardedRef","SelectScrollButtonImpl","componentName","dir","ref","displayName","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","memo","scope","scrollIndicatorProps","forceUpdate","open","fallback","setScrollTop","setInnerOffset","context","floatingRef","floatingContext","refs","floating","statusRef","useRef","isVisible","frameRef","x","y","strategy","elements","reference","current","placement","middleware","rects","height","whileElementsMounted","args","animationFrame","composedRef","setFloating","onScroll","amount","scrollTop","value","zIndex","position","left","top","width","offsetWidth","onPointerEnter","prevNow","Date","now","frame","element","currentNow","msElapsed","pixelsToScroll","remainingPixels","scrollHeight","clientHeight","scrollRemaining","Math","min","max","requestAnimationFrame","cancelAnimationFrame","onPointerLeave"],"sources":["../../src/SelectScrollButton.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,EAAYC,MAAA,EAAQC,WAAA,QAAmB;
|
|
1
|
+
{"version":3,"names":["autoUpdate","offset","useFloatingRaw","useFloating","useComposedRefs","YStack","React","flushSync","useSelectContext","jsx","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","forwardRef","props","forwardedRef","SelectScrollButtonImpl","componentName","dir","ref","displayName","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","memo","scope","scrollIndicatorProps","forceUpdate","open","fallback","setScrollTop","setInnerOffset","context","floatingRef","floatingContext","refs","floating","statusRef","useRef","isVisible","frameRef","x","y","strategy","elements","reference","current","placement","middleware","rects","height","whileElementsMounted","args","animationFrame","composedRef","setFloating","onScroll","amount","scrollTop","value","zIndex","position","left","top","width","offsetWidth","onPointerEnter","prevNow","Date","now","frame","element","currentNow","msElapsed","pixelsToScroll","remainingPixels","scrollHeight","clientHeight","scrollRemaining","Math","min","max","requestAnimationFrame","cancelAnimationFrame","onPointerLeave"],"sources":["../../src/SelectScrollButton.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var SelectScrollUpButton = function (_) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
return null;
|
|
3
|
+
};
|
|
4
|
+
var SelectScrollDownButton = function (_) {
|
|
5
|
+
return null;
|
|
6
|
+
};
|
|
7
7
|
export { SelectScrollDownButton, SelectScrollUpButton };
|
|
8
8
|
//# sourceMappingURL=SelectScrollButton.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SelectScrollUpButton","_","SelectScrollDownButton"],"sources":["../../src/SelectScrollButton.native.tsx"],"sourcesContent":[null],"mappings":"AAAO,IAAIA,oBAAA,GAAuB,SAAAA,CAASC,CAAA,EAAG;
|
|
1
|
+
{"version":3,"names":["SelectScrollUpButton","_","SelectScrollDownButton"],"sources":["../../src/SelectScrollButton.native.tsx"],"sourcesContent":[null],"mappings":"AAAO,IAAIA,oBAAA,GAAuB,SAAAA,CAASC,CAAA,EAAG;EAC1C,OAAO;AACX;AACO,IAAIC,sBAAA,GAAyB,SAAAA,CAASD,CAAA,EAAG;EAC5C,OAAO;AACX","ignoreList":[]}
|
|
@@ -3,59 +3,61 @@ import { ListItem } from "@tamagui/list-item";
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { useSelectContext, useSelectItemParentContext } from "./context.mjs";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
|
-
const TRIGGER_NAME = "SelectTrigger"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
itemParentContext.setOpen(!context.open);
|
|
47
|
-
}
|
|
48
|
-
} : {
|
|
49
|
-
onMouseDown() {
|
|
50
|
-
context.floatingContext?.update(), itemParentContext.setOpen(!context.open);
|
|
51
|
-
}
|
|
52
|
-
})
|
|
53
|
-
} : {
|
|
6
|
+
const TRIGGER_NAME = "SelectTrigger";
|
|
7
|
+
const isPointerCoarse = typeof window !== "undefined" && true ? window.matchMedia("(pointer:coarse)").matches : true;
|
|
8
|
+
const SelectTrigger = React.forwardRef(function SelectTrigger2(props, forwardedRef) {
|
|
9
|
+
const {
|
|
10
|
+
scope,
|
|
11
|
+
disabled = false,
|
|
12
|
+
unstyled = false,
|
|
13
|
+
...triggerProps
|
|
14
|
+
} = props;
|
|
15
|
+
const context = useSelectContext(scope);
|
|
16
|
+
const itemParentContext = useSelectItemParentContext(scope);
|
|
17
|
+
const composedRefs = useComposedRefs(forwardedRef, context.floatingContext?.refs.setReference);
|
|
18
|
+
if (itemParentContext.shouldRenderWebNative) return null;
|
|
19
|
+
return /* @__PURE__ */jsx(ListItem, {
|
|
20
|
+
componentName: TRIGGER_NAME,
|
|
21
|
+
unstyled,
|
|
22
|
+
render: "button",
|
|
23
|
+
type: "button",
|
|
24
|
+
id: itemParentContext.id,
|
|
25
|
+
...(!unstyled && {
|
|
26
|
+
focusVisibleStyle: {
|
|
27
|
+
outlineStyle: "solid",
|
|
28
|
+
outlineWidth: 2,
|
|
29
|
+
outlineColor: "$outlineColor"
|
|
30
|
+
},
|
|
31
|
+
borderWidth: 1,
|
|
32
|
+
size: itemParentContext.size
|
|
33
|
+
}),
|
|
34
|
+
role: "combobox",
|
|
35
|
+
"aria-haspopup": "listbox",
|
|
36
|
+
"aria-expanded": context.open,
|
|
37
|
+
"aria-autocomplete": "none",
|
|
38
|
+
dir: context.dir,
|
|
39
|
+
disabled,
|
|
40
|
+
"data-disabled": disabled ? "" : void 0,
|
|
41
|
+
...triggerProps,
|
|
42
|
+
ref: composedRefs,
|
|
43
|
+
...(itemParentContext.interactions ? {
|
|
44
|
+
...itemParentContext.interactions.getReferenceProps(),
|
|
45
|
+
...(isPointerCoarse ? {
|
|
54
46
|
onPress() {
|
|
55
47
|
itemParentContext.setOpen(!context.open);
|
|
56
48
|
}
|
|
49
|
+
} : {
|
|
50
|
+
onMouseDown() {
|
|
51
|
+
context.floatingContext?.update?.();
|
|
52
|
+
itemParentContext.setOpen(!context.open);
|
|
53
|
+
}
|
|
57
54
|
})
|
|
58
|
-
}
|
|
55
|
+
} : {
|
|
56
|
+
onPress() {
|
|
57
|
+
itemParentContext.setOpen(!context.open);
|
|
58
|
+
}
|
|
59
|
+
})
|
|
59
60
|
});
|
|
61
|
+
});
|
|
60
62
|
export { SelectTrigger };
|
|
61
63
|
//# sourceMappingURL=SelectTrigger.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useComposedRefs","ListItem","React","useSelectContext","useSelectItemParentContext","jsx","TRIGGER_NAME","isPointerCoarse","window","matchMedia","matches","SelectTrigger","forwardRef","props","forwardedRef","scope","disabled","unstyled","triggerProps","context","itemParentContext","composedRefs","floatingContext","refs","setReference","shouldRenderWebNative","componentName","render","type","id","focusVisibleStyle","outlineStyle","outlineWidth","outlineColor","borderWidth","size","role","open","dir","ref","interactions","getReferenceProps","onPress","setOpen","onMouseDown","update"],"sources":["../../src/SelectTrigger.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAA,QAAuB;AAGhC,SAASC,QAAA,QAAgB;AACzB,YAAYC,KAAA,MAAW;AAEvB,SAASC,gBAAA,EAAkBC,0BAAA,QAAkC;AAiCvD,SAAAC,GAAA;AA3BN,MAAMC,YAAA,GAAe;
|
|
1
|
+
{"version":3,"names":["useComposedRefs","ListItem","React","useSelectContext","useSelectItemParentContext","jsx","TRIGGER_NAME","isPointerCoarse","window","matchMedia","matches","SelectTrigger","forwardRef","SelectTrigger2","props","forwardedRef","scope","disabled","unstyled","triggerProps","context","itemParentContext","composedRefs","floatingContext","refs","setReference","shouldRenderWebNative","componentName","render","type","id","focusVisibleStyle","outlineStyle","outlineWidth","outlineColor","borderWidth","size","role","open","dir","ref","interactions","getReferenceProps","onPress","setOpen","onMouseDown","update"],"sources":["../../src/SelectTrigger.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAA,QAAuB;AAGhC,SAASC,QAAA,QAAgB;AACzB,YAAYC,KAAA,MAAW;AAEvB,SAASC,gBAAA,EAAkBC,0BAAA,QAAkC;AAiCvD,SAAAC,GAAA;AA3BN,MAAMC,YAAA,GAAe;AAIrB,MAAMC,eAAA,GACJ,OAAOC,MAAA,KAAW,eAAe,OAAAA,MAAY,CAAAC,UAAA,mBACzC,EAAAC,OAAO,OAAW;AAGjB,MAAMC,aAAA,GAAgBT,KAAA,CAAMU,UAAA,UAAAC,eAAAC,KAAA,EAAAC,YAAA;EAAA,MACjC;IAAAC,KAAS;IAAAC,QAAA,GAAc;IAA2BC,QAAA,QAAc;IAAA,GAAAC;EAAA,IAAAL,KAAA;EAC9D,MAAAM,OAAQ,GAAAjB,gBAAkB,CAAAa,KAAO;EAEjC,MAAAK,iBAAgB,GAAAjB,0BAAsB,CAAAY,KAAA;EACtC,MAAAM,YAAM,GAAAtB,eAAoB,CAAAe,YAAA,EAAAK,OAA2B,CAAAG,eAAK,EAAAC,IAAA,CAAAC,YAAA;EAC1D,IAAAJ,iBAAM,CAAAK,qBAAe;EAAA,OACnB,eAAArB,GAAA,CAAAJ,QAAA;IAAA0B,aACQ,EAAArB,YAAA;IAAsBY,QAChC;IAIAU,MAAI;IACFC,IAAA,UAAO;IAAAC,EACT,EAAAT,iBAAA,CAAAS,EAAA;IAEA,KAAAZ,QACE;MAAAa,iBAAC;QAAAC,YAAA;QAAAC,YACC;QAAeC,YACf;MAAA;MACOC,WACF;MAAAC,IAAA,EACLf,iBAAI,CAAAe;IAAkB;IACJC,IAAA,YAChB;IAAmB,eACjB,WAAc;IAAA,eACd,EAAAjB,OAAc,CAAAkB,IAAA;IAAA,mBACd,QAAc;IAAAC,GAAA,EAAAnB,OAChB,CAAAmB,GAAA;IAAAtB,QACA;IAAa,eACP,EAAAA,QAAA,QAAkB;IAAA,GAAAE,YAC1B;IAAAqB,GAAA,EAAAlB,YACK;IAAA,IAAAD,iBACL,CAAAoB,YAAc;MAAA,GAAApB,iBACd,CAAAoB,YAAuB,CAAAC,iBAAA;MAAA,IAAAnC,eACvB;QAAAoC,OAAkBA,CAAA;UAAAtB,iBACL,CAAAuB,OAAA,EAAAxB,OAAA,CAAAkB,IAAA;QAAA;MAAA,IACb;QAAAO,YAAA;UAAAzB,OACA,CAAAG,eAAe,EAAAuB,MAAA,GAAW;UAAKzB,iBAC3B,CAAAuB,OAAA,EAAAxB,OAAA,CAAAkB,IAAA;QAAA;MAAA;IACC;MACJK,OAAIA,CAAA;QACDtB,iBACK,CAAAuB,OAAA,EAAAxB,OAAkB,CAAAkB,IAAA;MAA+B;IAAA;EAEhD;AAEI;AAAuC,SAAA3B,aACzC","ignoreList":[]}
|
|
@@ -4,18 +4,19 @@ import { ListItem } from "@tamagui/list-item";
|
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { useSelectContext, useSelectItemParentContext } from "./context.native.js";
|
|
6
6
|
var TRIGGER_NAME = "SelectTrigger";
|
|
7
|
-
var SelectTrigger = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
|
|
8
|
-
var _context_floatingContext
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
var SelectTrigger = /* @__PURE__ */React.forwardRef(function SelectTrigger2(props, forwardedRef) {
|
|
8
|
+
var _context_floatingContext;
|
|
9
|
+
var {
|
|
10
|
+
scope,
|
|
11
|
+
disabled = false,
|
|
12
|
+
unstyled = false,
|
|
13
|
+
...triggerProps
|
|
14
|
+
} = props;
|
|
15
|
+
var context = useSelectContext(scope);
|
|
16
|
+
var itemParentContext = useSelectItemParentContext(scope);
|
|
17
|
+
var composedRefs = useComposedRefs(forwardedRef, (_context_floatingContext = context.floatingContext) === null || _context_floatingContext === void 0 ? void 0 : _context_floatingContext.refs.setReference);
|
|
18
|
+
if (itemParentContext.shouldRenderWebNative) return null;
|
|
19
|
+
return /* @__PURE__ */_jsx(ListItem, {
|
|
19
20
|
componentName: TRIGGER_NAME,
|
|
20
21
|
unstyled,
|
|
21
22
|
render: "button",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","useComposedRefs","ListItem","React","useSelectContext","useSelectItemParentContext","TRIGGER_NAME","SelectTrigger","forwardRef","props","forwardedRef","_context_floatingContext","scope","disabled","unstyled","triggerProps","context","itemParentContext","composedRefs","floatingContext","refs","setReference","shouldRenderWebNative","componentName","render","type","id","focusVisibleStyle","outlineStyle","outlineWidth","outlineColor","borderWidth","size","role","open","dir","ref","onPress","setOpen"],"sources":["../../src/SelectTrigger.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,2BAAuB;AAGhC,SAASC,eAAA,QAAgB;AACzB,SAAAC,QAAY,QAAW;AAEvB,YAASC,KAAA,aAAkB;AAiCrB,SAAAC,gBAAA,EAAAC,0BAAA;AA3BN,IAAAC,YAAM,kBAAe;
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","useComposedRefs","ListItem","React","useSelectContext","useSelectItemParentContext","TRIGGER_NAME","SelectTrigger","forwardRef","SelectTrigger2","props","forwardedRef","_context_floatingContext","scope","disabled","unstyled","triggerProps","context","itemParentContext","composedRefs","floatingContext","refs","setReference","shouldRenderWebNative","componentName","render","type","id","focusVisibleStyle","outlineStyle","outlineWidth","outlineColor","borderWidth","size","role","open","dir","ref","onPress","setOpen"],"sources":["../../src/SelectTrigger.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,2BAAuB;AAGhC,SAASC,eAAA,QAAgB;AACzB,SAAAC,QAAY,QAAW;AAEvB,YAASC,KAAA,aAAkB;AAiCrB,SAAAC,gBAAA,EAAAC,0BAAA;AA3BN,IAAAC,YAAM,kBAAe;AAIrB,IAAAC,aAAM,kBACGJ,KAAA,CAAWK,UAAA,UAAeC,cAAYA,CAAAC,KAAA,EAAAC,YACzC;EAGC,IAAAC,wBAA4B;EAAA,IACjC;IAAAC,KAAS;IAAAC,QAAA,QAAc;IAAAC,QAA2B,QAAc;IAAA,GAAAC;EAAA,IAAAN,KAAA;EAC9D,IAAAO,OAAQ,GAAAb,gBAAkB,CAAAS,KAAO;EAEjC,IAAAK,iBAAgB,GAAAb,0BAAsB,CAAAQ,KAAA;EACtC,IAAAM,YAAM,GAAAlB,eAAoB,CAAAU,YAAA,GAAAC,wBAAgC,GAAAK,OAAA,CAAAG,eAAA,cAAAR,wBAAA,uBAAAA,wBAAA,CAAAS,IAAA,CAAAC,YAAA;EAC1D,IAAAJ,iBAAM,CAAAK,qBAAe;EAAA,OACnB,eAAAvB,IAAA,CAAAE,QAAA;IAAAsB,aACQ,EAAAlB,YAAA;IAAsBS,QAChC;IAIAU,MAAI;IACFC,IAAA,UAAO;IAAAC,EACT,EAAAT,iBAAA,CAAAS,EAAA;IAEA,KAAAZ,QACE;MAAAa,iBAAC;QAAAC,YAAA;QAAAC,YACC;QAAeC,YACf;MAAA;MACOC,WACF;MAAAC,IAAA,EACLf,iBAAI,CAAAe;IAAkB;IACJC,IAAA,YAChB;IAAmB,eACjB,WAAc;IAAA,eACd,EAAAjB,OAAc,CAAAkB,IAAA;IAAA,mBACd,QAAc;IAAAC,GAAA,EAAAnB,OAChB,CAAAmB,GAAA;IAAAtB,QACA;IAAa,eACP,EAAAA,QAAA,QAAkB;IAAA,GAAAE,YAC1B;IAAAqB,GAAA,EAAAlB,YACK;IAAAmB,OACLA,CAAA;MAAcpB,iBACd,CAAAqB,OAAe,EAAAtB,OAAQ,CAAAkB,IAAA;IAAA;EACL;AACL;AACb,SACA5B,aAAA","ignoreList":[]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { FloatingFocusManager } from "@floating-ui/react";
|
|
2
1
|
import { AdaptPortalContents, useAdaptIsActive } from "@tamagui/adapt";
|
|
3
2
|
import { AnimatePresence } from "@tamagui/animate-presence";
|
|
4
3
|
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
@@ -6,104 +5,130 @@ import { isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
|
6
5
|
import { styled } from "@tamagui/core";
|
|
7
6
|
import { needsPortalRepropagation } from "@tamagui/portal";
|
|
8
7
|
import { YStack } from "@tamagui/stacks";
|
|
8
|
+
import { startTransition } from "@tamagui/start-transition";
|
|
9
|
+
import * as React from "react";
|
|
9
10
|
import { VIEWPORT_NAME } from "./constants.mjs";
|
|
10
11
|
import { ForwardSelectContext, useSelectContext, useSelectItemParentContext } from "./context.mjs";
|
|
11
12
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
12
13
|
const SelectViewportFrame = styled(YStack, {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
size: {
|
|
26
|
-
"...size": (val, {
|
|
27
|
-
tokens
|
|
28
|
-
}) => ({
|
|
29
|
-
borderRadius: tokens.radius[val] ?? val
|
|
30
|
-
})
|
|
14
|
+
name: VIEWPORT_NAME,
|
|
15
|
+
variants: {
|
|
16
|
+
unstyled: {
|
|
17
|
+
false: {
|
|
18
|
+
size: "$2",
|
|
19
|
+
backgroundColor: "$background",
|
|
20
|
+
elevate: true,
|
|
21
|
+
bordered: true,
|
|
22
|
+
userSelect: "none",
|
|
23
|
+
outlineWidth: 0
|
|
31
24
|
}
|
|
32
25
|
},
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
size: {
|
|
27
|
+
"...size": (val, {
|
|
28
|
+
tokens
|
|
29
|
+
}) => {
|
|
30
|
+
return {
|
|
31
|
+
borderRadius: tokens.radius[val] ?? val
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
defaultVariants: {
|
|
37
|
+
unstyled: process.env.TAMAGUI_HEADLESS === "1"
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
const needsRepropagation = needsPortalRepropagation();
|
|
41
|
+
const SelectViewport = SelectViewportFrame.styleable(function SelectViewport2(props, forwardedRef) {
|
|
42
|
+
const {
|
|
43
|
+
scope,
|
|
44
|
+
children,
|
|
45
|
+
disableScroll,
|
|
46
|
+
...viewportProps
|
|
47
|
+
} = props;
|
|
48
|
+
const context = useSelectContext(scope);
|
|
49
|
+
const itemContext = useSelectItemParentContext(scope);
|
|
50
|
+
const isAdapted = useAdaptIsActive(context.adaptScope);
|
|
51
|
+
const [lazyMounted, setLazyMounted] = React.useState(context.lazyMount ? false : true);
|
|
52
|
+
React.useEffect(() => {
|
|
53
|
+
if (!context.lazyMount) return;
|
|
54
|
+
if (!context.open) return;
|
|
55
|
+
if (lazyMounted) return;
|
|
56
|
+
startTransition(() => {
|
|
57
|
+
setLazyMounted(true);
|
|
58
|
+
});
|
|
59
|
+
}, [context.lazyMount, context.open, lazyMounted]);
|
|
60
|
+
const composedRefs = useComposedRefs(
|
|
61
|
+
// @ts-ignore TODO react 19 type needs fix
|
|
62
|
+
forwardedRef, context.floatingContext?.refs.setFloating);
|
|
63
|
+
useIsomorphicLayoutEffect(() => {
|
|
64
|
+
if (context.update) {
|
|
65
|
+
context.update();
|
|
35
66
|
}
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
} = props,
|
|
45
|
-
context = useSelectContext(scope),
|
|
46
|
-
itemContext = useSelectItemParentContext(scope),
|
|
47
|
-
isAdapted = useAdaptIsActive(context.adaptScope),
|
|
48
|
-
composedRefs = useComposedRefs(
|
|
49
|
-
// @ts-ignore TODO react 19 type needs fix
|
|
50
|
-
forwardedRef, context.floatingContext?.refs.setFloating);
|
|
51
|
-
if (useIsomorphicLayoutEffect(() => {
|
|
52
|
-
context.update && context.update();
|
|
53
|
-
}, [isAdapted]), itemContext.shouldRenderWebNative) return /* @__PURE__ */jsx(YStack, {
|
|
67
|
+
}, [isAdapted]);
|
|
68
|
+
useIsomorphicLayoutEffect(() => {
|
|
69
|
+
if (context.lazyMount && lazyMounted && context.open && context.update) {
|
|
70
|
+
context.update();
|
|
71
|
+
}
|
|
72
|
+
}, [lazyMounted]);
|
|
73
|
+
if (itemContext.shouldRenderWebNative) {
|
|
74
|
+
return /* @__PURE__ */jsx(YStack, {
|
|
54
75
|
position: "relative",
|
|
55
76
|
children
|
|
56
77
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
78
|
+
}
|
|
79
|
+
if (isAdapted || !isWeb) {
|
|
80
|
+
let content = children;
|
|
81
|
+
if (needsRepropagation) {
|
|
82
|
+
content = /* @__PURE__ */jsx(ForwardSelectContext, {
|
|
60
83
|
itemContext,
|
|
61
84
|
context,
|
|
62
85
|
children: content
|
|
63
|
-
})), /* @__PURE__ */jsx(AdaptPortalContents, {
|
|
64
|
-
scope: context.adaptScope,
|
|
65
|
-
children: content
|
|
66
86
|
});
|
|
67
87
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// remove this, it was set to "Select" always
|
|
72
|
-
className,
|
|
73
|
-
...floatingProps
|
|
74
|
-
} = itemContext.interactions.getFloatingProps();
|
|
75
|
-
return /* @__PURE__ */jsxs(Fragment, {
|
|
76
|
-
children: [!disableScroll && !props.unstyled && /* @__PURE__ */jsx("style", {
|
|
77
|
-
dangerouslySetInnerHTML: {
|
|
78
|
-
__html: selectViewportCSS
|
|
79
|
-
}
|
|
80
|
-
}), /* @__PURE__ */jsx(AnimatePresence, {
|
|
81
|
-
children: context.open ? /* @__PURE__ */jsx(FloatingFocusManager, {
|
|
82
|
-
context: context.floatingContext,
|
|
83
|
-
modal: !1,
|
|
84
|
-
initialFocus: -1,
|
|
85
|
-
children: /* @__PURE__ */jsx(SelectViewportFrame, {
|
|
86
|
-
size: itemContext.size,
|
|
87
|
-
role: "presentation",
|
|
88
|
-
...viewportProps,
|
|
89
|
-
...style,
|
|
90
|
-
...floatingProps,
|
|
91
|
-
...(!props.unstyled && {
|
|
92
|
-
overflowY: disableScroll ? void 0 : style.overflow ?? "auto"
|
|
93
|
-
}),
|
|
94
|
-
ref: composedRefs,
|
|
95
|
-
children
|
|
96
|
-
}, "select-viewport")
|
|
97
|
-
}) : null
|
|
98
|
-
}), !context.open && /* @__PURE__ */jsx("div", {
|
|
99
|
-
style: {
|
|
100
|
-
display: "none"
|
|
101
|
-
},
|
|
102
|
-
children: props.children
|
|
103
|
-
})]
|
|
88
|
+
return /* @__PURE__ */jsx(AdaptPortalContents, {
|
|
89
|
+
scope: context.adaptScope,
|
|
90
|
+
children: content
|
|
104
91
|
});
|
|
105
|
-
}
|
|
106
|
-
|
|
92
|
+
}
|
|
93
|
+
if (!itemContext.interactions) {
|
|
94
|
+
if (process.env.NODE_ENV === "development") {
|
|
95
|
+
console.warn(`No interactions provided to Select, potentially missing Adapt`);
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const {
|
|
100
|
+
style,
|
|
101
|
+
// remove this, it was set to "Select" always
|
|
102
|
+
className,
|
|
103
|
+
...floatingProps
|
|
104
|
+
} = itemContext.interactions.getFloatingProps();
|
|
105
|
+
return /* @__PURE__ */jsxs(Fragment, {
|
|
106
|
+
children: [!disableScroll && !props.unstyled && /* @__PURE__ */jsx("style", {
|
|
107
|
+
dangerouslySetInnerHTML: {
|
|
108
|
+
__html: selectViewportCSS
|
|
109
|
+
}
|
|
110
|
+
}), /* @__PURE__ */jsx(AnimatePresence, {
|
|
111
|
+
children: context.open ? /* @__PURE__ */jsx(SelectViewportFrame, {
|
|
112
|
+
size: itemContext.size,
|
|
113
|
+
role: "presentation",
|
|
114
|
+
...viewportProps,
|
|
115
|
+
...style,
|
|
116
|
+
...floatingProps,
|
|
117
|
+
...(!props.unstyled && {
|
|
118
|
+
overflowY: disableScroll ? void 0 : style.overflow ?? "auto"
|
|
119
|
+
}),
|
|
120
|
+
ref: composedRefs,
|
|
121
|
+
children: lazyMounted ? children : null
|
|
122
|
+
}, "select-viewport") : null
|
|
123
|
+
}), !context.open && !(context.lazyMount && context.renderValue) && lazyMounted && /* @__PURE__ */jsx("div", {
|
|
124
|
+
style: {
|
|
125
|
+
display: "none"
|
|
126
|
+
},
|
|
127
|
+
children
|
|
128
|
+
})]
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
const selectViewportCSS = `
|
|
107
132
|
.is_SelectViewport {
|
|
108
133
|
scrollbar-width: none;
|
|
109
134
|
-webkit-overflow-scrolling: touch;
|