@multiplatform.one/components 7.10.0 → 7.11.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/README.md +98 -0
- package/dist/cjs/SheetModal/index.cjs +22 -3
- package/dist/cjs/SheetModal/index.native.js +50 -10
- package/dist/cjs/SheetModal/index.native.js.map +1 -1
- package/dist/cjs/Tabs/index.cjs +33 -12
- package/dist/cjs/Tabs/index.native.js +37 -12
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/views/TreeView.cjs +175 -43
- package/dist/cjs/views/TreeView.native.js +181 -46
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/esm/SheetModal/index.mjs +22 -3
- package/dist/esm/SheetModal/index.mjs.map +1 -1
- package/dist/esm/SheetModal/index.native.js +51 -11
- package/dist/esm/SheetModal/index.native.js.map +1 -1
- package/dist/esm/Tabs/index.mjs +33 -12
- package/dist/esm/Tabs/index.mjs.map +1 -1
- package/dist/esm/Tabs/index.native.js +37 -12
- package/dist/esm/Tabs/index.native.js.map +1 -1
- package/dist/esm/layouts/tags.mjs.map +1 -1
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/views/TreeView.mjs +175 -43
- package/dist/esm/views/TreeView.mjs.map +1 -1
- package/dist/esm/views/TreeView.native.js +181 -46
- package/dist/esm/views/TreeView.native.js.map +1 -1
- package/dist/jsx/SheetModal/index.mjs +22 -3
- package/dist/jsx/SheetModal/index.mjs.map +1 -1
- package/dist/jsx/SheetModal/index.native.js +50 -10
- package/dist/jsx/SheetModal/index.native.js.map +1 -1
- package/dist/jsx/Tabs/index.mjs +33 -12
- package/dist/jsx/Tabs/index.mjs.map +1 -1
- package/dist/jsx/Tabs/index.native.js +37 -12
- package/dist/jsx/Tabs/index.native.js.map +1 -1
- package/dist/jsx/layouts/tags.mjs.map +1 -1
- package/dist/jsx/layouts/tags.native.js.map +1 -1
- package/dist/jsx/views/TreeView.mjs +175 -43
- package/dist/jsx/views/TreeView.mjs.map +1 -1
- package/dist/jsx/views/TreeView.native.js +181 -46
- package/dist/jsx/views/TreeView.native.js.map +1 -1
- package/package.json +11 -11
- package/src/Accordion/index.tsx +1 -1
- package/src/SheetModal/SheetModal.fill.spec.tsx +147 -0
- package/src/SheetModal/SheetModal.ownedBody.spec.tsx +200 -0
- package/src/SheetModal/SheetModal.stories.spec.tsx +23 -2
- package/src/SheetModal/SheetModal.stories.tsx +275 -2
- package/src/SheetModal/index.native.tsx +50 -6
- package/src/SheetModal/index.tsx +40 -3
- package/src/Tabs/Tabs.lifecycle.spec.tsx +123 -0
- package/src/Tabs/Tabs.measurement.spec.tsx +186 -0
- package/src/Tabs/Tabs.stories.tsx +43 -0
- package/src/Tabs/index.tsx +42 -13
- package/src/layouts/tags.tsx +2 -1
- package/src/views/TreeView.reveal.spec.tsx +7 -0
- package/src/views/TreeView.reveal.stories.tsx +134 -0
- package/src/views/TreeView.scroll-index.spec.tsx +246 -0
- package/src/views/TreeView.scroll.spec.tsx +711 -50
- package/src/views/TreeView.tsx +230 -49
- package/types/SheetModal/index.d.ts +8 -1
- package/types/SheetModal/index.d.ts.map +1 -1
- package/types/SheetModal/index.native.d.ts +1 -1
- package/types/SheetModal/index.native.d.ts.map +1 -1
- package/types/Tabs/index.d.ts.map +1 -1
- package/types/layouts/tags.d.ts.map +1 -1
- package/types/views/TreeView.d.ts +10 -1
- package/types/views/TreeView.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -57,6 +57,104 @@ export function UserCard() {
|
|
|
57
57
|
}
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
## TreeView scroll retention
|
|
61
|
+
|
|
62
|
+
Keep scroll memory outside the mounted tree, alongside expansion. Pass the measured
|
|
63
|
+
height of the available viewport to `height`; TreeView owns its virtual scrolling.
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
import { TreeView, type TreeNode } from "@multiplatform.one/components";
|
|
67
|
+
import { Button } from "@multiplatform.one/forms";
|
|
68
|
+
import { useState } from "react";
|
|
69
|
+
|
|
70
|
+
export function Library({ nodes, height }: { nodes: TreeNode[]; height: number }) {
|
|
71
|
+
const [showTree, setShowTree] = useState(true);
|
|
72
|
+
const [offset, setOffset] = useState<number>();
|
|
73
|
+
const [expandedIds, setExpandedIds] = useState<string[]>([]);
|
|
74
|
+
return (
|
|
75
|
+
<>
|
|
76
|
+
<Button onPress={() => setShowTree((shown) => !shown)}>Toggle tree</Button>
|
|
77
|
+
{showTree && (
|
|
78
|
+
<TreeView
|
|
79
|
+
nodes={nodes}
|
|
80
|
+
height={height}
|
|
81
|
+
expandedIds={expandedIds}
|
|
82
|
+
onExpandedIdsChange={setExpandedIds}
|
|
83
|
+
initialScrollOffset={offset}
|
|
84
|
+
onScrollOffsetChange={setOffset}
|
|
85
|
+
/>
|
|
86
|
+
)}
|
|
87
|
+
</>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`initialScrollOffset?: number` is a mount-time seed, including when omitted.
|
|
93
|
+
Changing it after mount never requests another scroll. Values use vertical CSS
|
|
94
|
+
pixels on web and layout units on native; fractions are preserved. Negative and
|
|
95
|
+
non-finite seeds become zero. Restoration waits for nonempty data, loaded content
|
|
96
|
+
and a usable visible viewport, then clamps to the actual list extent. An unchanged
|
|
97
|
+
pending target with identical bounds isn't replayed on each layout notification.
|
|
98
|
+
|
|
99
|
+
`onScrollOffsetChange?: (offset: number) => void` reports observed offsets,
|
|
100
|
+
clamped to the current scroll range and deduplicated. It covers manual scrolling,
|
|
101
|
+
keyboard navigation, drag auto-scroll and explicit reveal. A scroll command alone
|
|
102
|
+
isn't confirmation. Subpixel requests reach the list unchanged; observed device
|
|
103
|
+
rounding is reported as observed. No provisional mount-time zero overwrites saved memory while
|
|
104
|
+
restoration is waiting. Callback identity changes alone don't emit.
|
|
105
|
+
|
|
106
|
+
A new explicit `revealRequest` or user scroll/navigation cancels pending initial
|
|
107
|
+
restoration. The seed never returns after reveal cancellation or later dataset
|
|
108
|
+
changes. Acknowledge completed reveals in the persistent controller and only pass
|
|
109
|
+
still-pending requests on remount. Restoration doesn't select, focus, expand, or
|
|
110
|
+
call `onRevealComplete`.
|
|
111
|
+
|
|
112
|
+
Restore data and expansion together before the first usable nonempty layout. If
|
|
113
|
+
saved state itself arrives asynchronously, wait to mount the tree until it's
|
|
114
|
+
known. Retention stores a pixel offset, not an item anchor across dataset edits.
|
|
115
|
+
After restoration, replacing data with an empty list doesn't rearm the seed;
|
|
116
|
+
retain previous rows during refresh or deliberately remount with saved state.
|
|
117
|
+
|
|
118
|
+
The **Retained scroll across unmount and delayed layout** story uses 500 variable
|
|
119
|
+
height rows. Manually scroll, unmount/mount, then test delayed data and hidden
|
|
120
|
+
layout. Remount with reveal to check that reveal wins. Change viewport height to
|
|
121
|
+
check clamping. The story shows observed offsets separately from measured reveal
|
|
122
|
+
completion. Native sheet sizing is a separate host responsibility.
|
|
123
|
+
|
|
124
|
+
## SheetModal body sizing
|
|
125
|
+
|
|
126
|
+
`SheetModal` sizes its body to the content by default. A consumer-owned
|
|
127
|
+
viewport — a virtualized list, a measured workspace — cannot bootstrap from
|
|
128
|
+
that: on native it is delivered height 0, reports zero, and mounts nothing,
|
|
129
|
+
while a sibling with a declared height gets the space it asked for.
|
|
130
|
+
|
|
131
|
+
`fill?: boolean` (default `false`) opts that body into the sheet's height
|
|
132
|
+
instead. On native it turns the existing keyboard-aware cap into a definite
|
|
133
|
+
frame height and opens every link down to the body, so the remaining height
|
|
134
|
+
reaches the consumer. On web it opens the same chain inside the percent-height
|
|
135
|
+
snapped frame. The grabber, the header and the bottom safe-area spacer stay
|
|
136
|
+
outside the flexible body.
|
|
137
|
+
|
|
138
|
+
```tsx
|
|
139
|
+
<SheetModal open={open} onOpenChange={setOpen} fill snapPoint={88} header={<Title />}>
|
|
140
|
+
<YStack flex={1} minHeight={0}>
|
|
141
|
+
<Toolbar />
|
|
142
|
+
<MyVirtualList />
|
|
143
|
+
</YStack>
|
|
144
|
+
</SheetModal>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
`fill` allocates height; it does not add a scroll owner. With `scrollable`
|
|
148
|
+
false the children keep sole ownership of scrolling and virtualization; with
|
|
149
|
+
`scrollable` true the sheet's own scroller fills the slot instead, and there
|
|
150
|
+
is still exactly one. Leaving `fill` off, or passing `false`, renders the
|
|
151
|
+
unchanged intrinsic body.
|
|
152
|
+
|
|
153
|
+
The contract is proven at the fully expanded rest, where the panel is not
|
|
154
|
+
translated. Smaller detents translate the whole panel down, so an allocated
|
|
155
|
+
body can extend below the visible window there; check the settled rest before
|
|
156
|
+
relying on `fill` with a shorter `snapPoint`.
|
|
157
|
+
|
|
60
158
|
## Styling
|
|
61
159
|
|
|
62
160
|
Components resolve structural styling (radius, spacing, elevation, typography)
|
|
@@ -35,6 +35,13 @@ const FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), selec
|
|
|
35
35
|
const IN_DIALOG_REGION = {
|
|
36
36
|
inDialogRegion: true
|
|
37
37
|
};
|
|
38
|
+
const fillSlot = {
|
|
39
|
+
flex: 1,
|
|
40
|
+
minHeight: 0
|
|
41
|
+
};
|
|
42
|
+
const nonShrinking = {
|
|
43
|
+
flexShrink: 0
|
|
44
|
+
};
|
|
38
45
|
const frameRingReset = {
|
|
39
46
|
outlineWidth: 0,
|
|
40
47
|
outlineStyle: "none",
|
|
@@ -138,7 +145,8 @@ function SheetModal({
|
|
|
138
145
|
children,
|
|
139
146
|
header,
|
|
140
147
|
snapPoint = 60,
|
|
141
|
-
scrollable
|
|
148
|
+
scrollable,
|
|
149
|
+
fill = false
|
|
142
150
|
}) {
|
|
143
151
|
const {
|
|
144
152
|
knobProps
|
|
@@ -190,13 +198,24 @@ function SheetModal({
|
|
|
190
198
|
value: IN_DIALOG_REGION,
|
|
191
199
|
children: [header ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
|
|
192
200
|
id: titleId,
|
|
201
|
+
...(fill ? nonShrinking : null),
|
|
193
202
|
children: header
|
|
194
|
-
}) : null,
|
|
203
|
+
}) : null, fill ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
|
|
204
|
+
testID: "sheet-modal-body",
|
|
205
|
+
...fillSlot,
|
|
206
|
+
children: scrollable ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Sheet.ScrollView, {
|
|
207
|
+
testID: "sheet-modal-scroll",
|
|
208
|
+
...fillSlot,
|
|
209
|
+
children
|
|
210
|
+
}) : children
|
|
211
|
+
}) : scrollable ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Sheet.ScrollView, {
|
|
212
|
+
testID: "sheet-modal-scroll",
|
|
195
213
|
children
|
|
196
214
|
}) : children, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
|
|
197
215
|
style: {
|
|
198
216
|
height: "env(safe-area-inset-bottom)"
|
|
199
|
-
}
|
|
217
|
+
},
|
|
218
|
+
...(fill ? nonShrinking : null)
|
|
200
219
|
})]
|
|
201
220
|
})
|
|
202
221
|
})]
|
|
@@ -43,6 +43,13 @@ var dismissThreshold = 56;
|
|
|
43
43
|
var IN_DIALOG_REGION = {
|
|
44
44
|
inDialogRegion: true
|
|
45
45
|
};
|
|
46
|
+
var fillSlot = {
|
|
47
|
+
flex: 1,
|
|
48
|
+
minHeight: 0
|
|
49
|
+
};
|
|
50
|
+
var nonShrinking = {
|
|
51
|
+
flexShrink: 0
|
|
52
|
+
};
|
|
46
53
|
function SheetModal(param) {
|
|
47
54
|
var {
|
|
48
55
|
open,
|
|
@@ -50,7 +57,8 @@ function SheetModal(param) {
|
|
|
50
57
|
children,
|
|
51
58
|
header,
|
|
52
59
|
snapPoint,
|
|
53
|
-
scrollable
|
|
60
|
+
scrollable,
|
|
61
|
+
fill = false
|
|
54
62
|
} = param;
|
|
55
63
|
var {
|
|
56
64
|
t
|
|
@@ -262,23 +270,34 @@ function SheetModal(param) {
|
|
|
262
270
|
var h = Math.round(e.nativeEvent.layout.height);
|
|
263
271
|
if (h > 0 && h !== measuredHeight) setMeasuredHeight(h);
|
|
264
272
|
},
|
|
273
|
+
testID: "sheet-modal-frame",
|
|
265
274
|
style: {
|
|
266
275
|
// MPO-64: flex children default to flexShrink 0, so without this
|
|
267
276
|
// the sheet cannot give way to the keyboard.
|
|
268
277
|
flexShrink: 1,
|
|
269
278
|
minHeight: 0,
|
|
270
279
|
maxHeight,
|
|
280
|
+
// The cap is already keyboard- and window-aware; fill only asks
|
|
281
|
+
// for it as a definite height rather than an upper bound.
|
|
282
|
+
...(fill ? {
|
|
283
|
+
height: maxHeight
|
|
284
|
+
} : null),
|
|
271
285
|
transform: [{
|
|
272
286
|
translateY
|
|
273
287
|
}]
|
|
274
288
|
},
|
|
275
289
|
children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
|
|
290
|
+
testID: "sheet-modal-surface",
|
|
276
291
|
...knobProps.surface,
|
|
277
292
|
...knobProps.borderRadius,
|
|
278
293
|
borderBottomLeftRadius: 0,
|
|
279
294
|
borderBottomRightRadius: 0,
|
|
280
295
|
elevation: knobProps.elevation,
|
|
281
296
|
maxHeight,
|
|
297
|
+
...(fill ? {
|
|
298
|
+
...fillSlot,
|
|
299
|
+
flexShrink: 1
|
|
300
|
+
} : null),
|
|
282
301
|
paddingTop: "$2",
|
|
283
302
|
paddingBottom: keyboardInset > 0 ? 8 : bottomInset,
|
|
284
303
|
overflow: "hidden",
|
|
@@ -303,11 +322,13 @@ function SheetModal(param) {
|
|
|
303
322
|
...panResponder.panHandlers,
|
|
304
323
|
accessibilityRole: "adjustable",
|
|
305
324
|
accessibilityLabel: t("Drag to resize"),
|
|
325
|
+
testID: "sheet-modal-grabber",
|
|
306
326
|
style: {
|
|
307
327
|
alignSelf: "stretch",
|
|
308
328
|
alignItems: "center",
|
|
309
329
|
paddingTop: 3,
|
|
310
|
-
paddingBottom: 11
|
|
330
|
+
paddingBottom: 11,
|
|
331
|
+
...(fill ? nonShrinking : null)
|
|
311
332
|
},
|
|
312
333
|
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
|
|
313
334
|
width: 36,
|
|
@@ -319,17 +340,36 @@ function SheetModal(param) {
|
|
|
319
340
|
})
|
|
320
341
|
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_surfaces.DialogRegionContext.Provider, {
|
|
321
342
|
value: IN_DIALOG_REGION,
|
|
322
|
-
children: /* @__PURE__ */(0, import_jsx_runtime.
|
|
343
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
|
|
344
|
+
testID: "sheet-modal-content",
|
|
323
345
|
padding: knobProps.panelPadding.padding,
|
|
324
346
|
gap: knobProps.gap.gap,
|
|
325
347
|
flexShrink: 1,
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
348
|
+
...(fill ? fillSlot : null),
|
|
349
|
+
children: fill ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
350
|
+
children: [header ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
|
|
351
|
+
style: nonShrinking,
|
|
352
|
+
children: header
|
|
353
|
+
}) : null, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
|
|
354
|
+
testID: "sheet-modal-body",
|
|
355
|
+
style: fillSlot,
|
|
356
|
+
children: scrollable ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.ScrollView, {
|
|
357
|
+
testID: "sheet-modal-scroll",
|
|
358
|
+
style: fillSlot,
|
|
359
|
+
keyboardShouldPersistTaps: "handled",
|
|
360
|
+
children
|
|
361
|
+
}) : children
|
|
362
|
+
})]
|
|
363
|
+
}) : /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
364
|
+
children: [header, scrollable ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.ScrollView, {
|
|
365
|
+
testID: "sheet-modal-scroll",
|
|
366
|
+
style: {
|
|
367
|
+
flexGrow: 0
|
|
368
|
+
},
|
|
369
|
+
keyboardShouldPersistTaps: "handled",
|
|
370
|
+
children
|
|
371
|
+
}) : children]
|
|
372
|
+
})
|
|
333
373
|
})
|
|
334
374
|
})]
|
|
335
375
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["index_native_exports","__export","SheetModal","module","exports","__toCommonJS","import_jsx_runtime","require","import_react","import_react_native","import_theme","import_detents","import_i18n","import_useKeyboardInset","import_tamagui","import_surfaces","sheetMaxHeightRatio","bottomInset","Platform","OS","backdropStrip","dismissThreshold","IN_DIALOG_REGION","inDialogRegion","param","open","onOpenChange","children","header","snapPoint","scrollable","t","useTranslation","knobProps","useResolvedKnobs","height","windowHeight","useWindowDimensions","keyboardInset","useKeyboardInset","backdropArmed","setBackdropArmed","useState","armTimerRef","useRef","close","useCallback","handleBackdropPress","available","Math","max","maxHeight","minSheetHeight","round","min","measuredHeight","setMeasuredHeight","travel","detents","useMemo","resolveSheetDetents","translateY","Animated","Value","current","restRef","travelRef","detentsRef","presentationRef","activeRef","settleTo","toValue","velocity","arguments","length","spring","damping","stiffness","mass","overshootClamping","useNativeDriver","start","dismiss","presentation","param2","finished","panResponder","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","_evt","g","abs","dy","onPanResponderGrant","stopAnimation","value","Number","isFinite","onPanResponderMove","next","setValue","onPanResponderRelease","points","tvl","projected","vy","smallestRest","best","bestDelta","POSITIVE_INFINITY","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","delta","err","return","onPanResponderTerminate","enteredRef","enter","clearTimeout","setTimeout","timing","duration","easing","Easing","out","cubic","useEffect","parked","jsx","Modal","visible","transparent","animationType","statusBarTranslucent","onRequestClose","onShow","jsxs","View","style","flex","justifyContent","paddingBottom","Pressable","StyleSheet","absoluteFill","onPress","accessibilityRole","accessibilityLabel","backgroundColor","onLayout","e","h","nativeEvent","layout","flexShrink","minHeight","transform","YStack","surface","borderRadius","borderBottomLeftRadius","borderBottomRightRadius","elevation","paddingTop","overflow","outlineWidth","focusStyle","focusVisibleStyle","accessibilityViewIsModal","onAccessibilityEscape","panHandlers","alignSelf","alignItems","width","opacity","accessible","DialogRegionContext","Provider","padding","panelPadding","gap","ScrollView","flexGrow","keyboardShouldPersistTaps"],"sources":["../../../src/SheetModal/index.native.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["index_native_exports","__export","SheetModal","module","exports","__toCommonJS","import_jsx_runtime","require","import_react","import_react_native","import_theme","import_detents","import_i18n","import_useKeyboardInset","import_tamagui","import_surfaces","sheetMaxHeightRatio","bottomInset","Platform","OS","backdropStrip","dismissThreshold","IN_DIALOG_REGION","inDialogRegion","fillSlot","flex","minHeight","nonShrinking","flexShrink","param","open","onOpenChange","children","header","snapPoint","scrollable","fill","t","useTranslation","knobProps","useResolvedKnobs","height","windowHeight","useWindowDimensions","keyboardInset","useKeyboardInset","backdropArmed","setBackdropArmed","useState","armTimerRef","useRef","close","useCallback","handleBackdropPress","available","Math","max","maxHeight","minSheetHeight","round","min","measuredHeight","setMeasuredHeight","travel","detents","useMemo","resolveSheetDetents","translateY","Animated","Value","current","restRef","travelRef","detentsRef","presentationRef","activeRef","settleTo","toValue","velocity","arguments","length","spring","damping","stiffness","mass","overshootClamping","useNativeDriver","start","dismiss","presentation","param2","finished","panResponder","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","_evt","g","abs","dy","onPanResponderGrant","stopAnimation","value","Number","isFinite","onPanResponderMove","next","setValue","onPanResponderRelease","points","tvl","projected","vy","smallestRest","best","bestDelta","POSITIVE_INFINITY","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","delta","err","return","onPanResponderTerminate","enteredRef","enter","clearTimeout","setTimeout","timing","duration","easing","Easing","out","cubic","useEffect","parked","jsx","Modal","visible","transparent","animationType","statusBarTranslucent","onRequestClose","onShow","jsxs","View","style","justifyContent","paddingBottom","Pressable","StyleSheet","absoluteFill","onPress","accessibilityRole","accessibilityLabel","backgroundColor","onLayout","e","h","nativeEvent","layout","testID","transform","YStack","surface","borderRadius","borderBottomLeftRadius","borderBottomRightRadius","elevation","paddingTop","overflow","outlineWidth","focusStyle","focusVisibleStyle","accessibilityViewIsModal","onAccessibilityEscape","panHandlers","alignSelf","alignItems","width","opacity","accessible","DialogRegionContext","Provider","padding","panelPadding","gap","Fragment","ScrollView","keyboardShouldPersistTaps","flexGrow"],"sources":["../../../src/SheetModal/index.native.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/Tabs/index.cjs
CHANGED
|
@@ -57,6 +57,7 @@ function tabsOverflowFades(offset, viewport, content, direction, threshold = 4)
|
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
59
|
function tabsScrollIntoViewX(layout, offset, viewport, content, direction, pad = 32) {
|
|
60
|
+
if (![layout.x, layout.width, layout.height, offset, viewport, content].every(Number.isFinite) || layout.width <= 0 || layout.height <= 0 || viewport <= 0 || content <= 0) return void 0;
|
|
60
61
|
const range = Math.max(content - viewport, 0);
|
|
61
62
|
if (range <= 0) return void 0;
|
|
62
63
|
const minScrollLeft = direction === "rtl" ? -range : 0;
|
|
@@ -215,16 +216,21 @@ function TabsRoot({
|
|
|
215
216
|
onChange?.(next);
|
|
216
217
|
};
|
|
217
218
|
const [activeLayout, setActiveLayout] = import_react.default.useState(null);
|
|
218
|
-
const handleInteraction = (type, layout) => {
|
|
219
|
-
if (type !== "select" || !layout) return;
|
|
220
|
-
setActiveLayout(prev => prev && prev.x === layout.x && prev.y === layout.y && prev.width === layout.width && prev.height === layout.height ? prev :
|
|
219
|
+
const handleInteraction = (tabValue, type, layout) => {
|
|
220
|
+
if (type !== "select" || !layout || tabValue !== currentValue) return;
|
|
221
|
+
setActiveLayout(prev => prev && prev.value === tabValue && prev.x === layout.x && prev.y === layout.y && prev.width === layout.width && prev.height === layout.height ? prev : {
|
|
222
|
+
...layout,
|
|
223
|
+
value: tabValue
|
|
224
|
+
});
|
|
221
225
|
};
|
|
222
226
|
const scrollRef = import_react.default.useRef(null);
|
|
227
|
+
const tabRefs = import_react.default.useRef(/* @__PURE__ */new Map());
|
|
223
228
|
const scrollMetrics = import_react.default.useRef({
|
|
224
229
|
offset: 0,
|
|
225
230
|
viewport: 0,
|
|
226
231
|
content: 0
|
|
227
232
|
});
|
|
233
|
+
const [sizeRevision, setSizeRevision] = import_react.default.useState(0);
|
|
228
234
|
const [fades, setFades] = import_react.default.useState({
|
|
229
235
|
left: false,
|
|
230
236
|
right: false
|
|
@@ -238,25 +244,42 @@ function TabsRoot({
|
|
|
238
244
|
const next = tabsOverflowFades(offset, viewport, content, direction);
|
|
239
245
|
setFades(prev => prev.left === next.left && prev.right === next.right ? prev : next);
|
|
240
246
|
};
|
|
247
|
+
const updateScrollSize = (dimension, size2) => {
|
|
248
|
+
if (!Object.is(scrollMetrics.current[dimension], size2)) {
|
|
249
|
+
scrollMetrics.current[dimension] = size2;
|
|
250
|
+
if (import_tamagui.isWeb) {
|
|
251
|
+
const selected = tabRefs.current.get(currentValue);
|
|
252
|
+
if (selected && selected.offsetWidth > 0 && selected.offsetHeight > 0) {
|
|
253
|
+
handleInteraction(currentValue, "select", {
|
|
254
|
+
x: selected.offsetLeft,
|
|
255
|
+
y: selected.offsetTop,
|
|
256
|
+
width: selected.offsetWidth,
|
|
257
|
+
height: selected.offsetHeight
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
setSizeRevision(current => current + 1);
|
|
262
|
+
}
|
|
263
|
+
updateFades();
|
|
264
|
+
};
|
|
241
265
|
import_react.default.useEffect(() => {
|
|
242
|
-
if (!activeLayout) return;
|
|
266
|
+
if (!activeLayout || activeLayout.value !== currentValue) return;
|
|
243
267
|
const {
|
|
244
268
|
offset,
|
|
245
269
|
viewport,
|
|
246
270
|
content
|
|
247
271
|
} = scrollMetrics.current;
|
|
248
272
|
const target = tabsScrollIntoViewX(activeLayout, offset, viewport, content, direction);
|
|
249
|
-
if (target !== void 0) {
|
|
273
|
+
if (target !== void 0 && Math.abs(target - offset) >= 1) {
|
|
250
274
|
scrollRef.current?.scrollTo({
|
|
251
275
|
x: target,
|
|
252
276
|
animated: true
|
|
253
277
|
});
|
|
254
278
|
}
|
|
255
|
-
}, [activeLayout, direction]);
|
|
279
|
+
}, [activeLayout, currentValue, direction, sizeRevision]);
|
|
256
280
|
const isUnderline = variant === "underline";
|
|
257
281
|
const isBand = variant === "band";
|
|
258
282
|
const equalDistribution = isBand || distribution === "equal";
|
|
259
|
-
const tabRefs = import_react.default.useRef(/* @__PURE__ */new Map());
|
|
260
283
|
const onTabKeyDown = (event, value2) => {
|
|
261
284
|
if (!["Home", "End", "ArrowLeft", "ArrowRight"].includes(event.key)) return;
|
|
262
285
|
const enabled = items.filter(item => !disabled && !item.disabled);
|
|
@@ -382,7 +405,7 @@ function TabsRoot({
|
|
|
382
405
|
}
|
|
383
406
|
}),
|
|
384
407
|
hitSlop: tabHitSlop,
|
|
385
|
-
onInteraction: handleInteraction,
|
|
408
|
+
onInteraction: (type, layout) => handleInteraction(item.value, type, layout),
|
|
386
409
|
cursor: isDisabled ? "not-allowed" : "pointer",
|
|
387
410
|
backgroundColor: isBand ? isActive ? import_componentColors.componentColors.surface.background : isDisabled ? "transparent" : feedbackBackground : "transparent",
|
|
388
411
|
borderRadius: 0,
|
|
@@ -479,12 +502,10 @@ function TabsRoot({
|
|
|
479
502
|
updateFades();
|
|
480
503
|
},
|
|
481
504
|
onLayout: e => {
|
|
482
|
-
|
|
483
|
-
updateFades();
|
|
505
|
+
updateScrollSize("viewport", e.nativeEvent.layout.width);
|
|
484
506
|
},
|
|
485
507
|
onContentSizeChange: w => {
|
|
486
|
-
|
|
487
|
-
updateFades();
|
|
508
|
+
updateScrollSize("content", w);
|
|
488
509
|
},
|
|
489
510
|
children: tabList
|
|
490
511
|
})
|
|
@@ -61,6 +61,7 @@ function tabsOverflowFades(offset, viewport, content, direction) {
|
|
|
61
61
|
}
|
|
62
62
|
function tabsScrollIntoViewX(layout, offset, viewport, content, direction) {
|
|
63
63
|
var pad = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 32;
|
|
64
|
+
if (![layout.x, layout.width, layout.height, offset, viewport, content].every(Number.isFinite) || layout.width <= 0 || layout.height <= 0 || viewport <= 0 || content <= 0) return void 0;
|
|
64
65
|
var range = Math.max(content - viewport, 0);
|
|
65
66
|
if (range <= 0) return void 0;
|
|
66
67
|
var minScrollLeft = direction === "rtl" ? -range : 0;
|
|
@@ -226,18 +227,23 @@ function TabsRoot(param) {
|
|
|
226
227
|
onChange === null || onChange === void 0 ? void 0 : onChange(next);
|
|
227
228
|
};
|
|
228
229
|
var [activeLayout, setActiveLayout] = import_react.default.useState(null);
|
|
229
|
-
var handleInteraction = function handleInteraction2(type, layout) {
|
|
230
|
-
if (type !== "select" || !layout) return;
|
|
230
|
+
var handleInteraction = function handleInteraction2(tabValue, type, layout) {
|
|
231
|
+
if (type !== "select" || !layout || tabValue !== currentValue) return;
|
|
231
232
|
setActiveLayout(function (prev) {
|
|
232
|
-
return prev && prev.x === layout.x && prev.y === layout.y && prev.width === layout.width && prev.height === layout.height ? prev :
|
|
233
|
+
return prev && prev.value === tabValue && prev.x === layout.x && prev.y === layout.y && prev.width === layout.width && prev.height === layout.height ? prev : {
|
|
234
|
+
...layout,
|
|
235
|
+
value: tabValue
|
|
236
|
+
};
|
|
233
237
|
});
|
|
234
238
|
};
|
|
235
239
|
var scrollRef = import_react.default.useRef(null);
|
|
240
|
+
var tabRefs = import_react.default.useRef(/* @__PURE__ */new Map());
|
|
236
241
|
var scrollMetrics = import_react.default.useRef({
|
|
237
242
|
offset: 0,
|
|
238
243
|
viewport: 0,
|
|
239
244
|
content: 0
|
|
240
245
|
});
|
|
246
|
+
var [sizeRevision, setSizeRevision] = import_react.default.useState(0);
|
|
241
247
|
var [fades, setFades] = import_react.default.useState({
|
|
242
248
|
left: false,
|
|
243
249
|
right: false
|
|
@@ -253,26 +259,45 @@ function TabsRoot(param) {
|
|
|
253
259
|
return prev.left === next.left && prev.right === next.right ? prev : next;
|
|
254
260
|
});
|
|
255
261
|
};
|
|
262
|
+
var updateScrollSize = function updateScrollSize2(dimension, size2) {
|
|
263
|
+
if (!Object.is(scrollMetrics.current[dimension], size2)) {
|
|
264
|
+
scrollMetrics.current[dimension] = size2;
|
|
265
|
+
if (import_tamagui.isWeb) {
|
|
266
|
+
var selected = tabRefs.current.get(currentValue);
|
|
267
|
+
if (selected && selected.offsetWidth > 0 && selected.offsetHeight > 0) {
|
|
268
|
+
handleInteraction(currentValue, "select", {
|
|
269
|
+
x: selected.offsetLeft,
|
|
270
|
+
y: selected.offsetTop,
|
|
271
|
+
width: selected.offsetWidth,
|
|
272
|
+
height: selected.offsetHeight
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
setSizeRevision(function (current) {
|
|
277
|
+
return current + 1;
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
updateFades();
|
|
281
|
+
};
|
|
256
282
|
import_react.default.useEffect(function () {
|
|
257
|
-
if (!activeLayout) return;
|
|
283
|
+
if (!activeLayout || activeLayout.value !== currentValue) return;
|
|
258
284
|
var {
|
|
259
285
|
offset,
|
|
260
286
|
viewport,
|
|
261
287
|
content
|
|
262
288
|
} = scrollMetrics.current;
|
|
263
289
|
var target = tabsScrollIntoViewX(activeLayout, offset, viewport, content, direction);
|
|
264
|
-
if (target !== void 0) {
|
|
290
|
+
if (target !== void 0 && Math.abs(target - offset) >= 1) {
|
|
265
291
|
var _scrollRef_current;
|
|
266
292
|
(_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : _scrollRef_current.scrollTo({
|
|
267
293
|
x: target,
|
|
268
294
|
animated: true
|
|
269
295
|
});
|
|
270
296
|
}
|
|
271
|
-
}, [activeLayout, direction]);
|
|
297
|
+
}, [activeLayout, currentValue, direction, sizeRevision]);
|
|
272
298
|
var isUnderline = variant === "underline";
|
|
273
299
|
var isBand = variant === "band";
|
|
274
300
|
var equalDistribution = isBand || distribution === "equal";
|
|
275
|
-
var tabRefs = import_react.default.useRef(/* @__PURE__ */new Map());
|
|
276
301
|
var onTabKeyDown = function onTabKeyDown2(event, value2) {
|
|
277
302
|
var _tabRefs_current_get;
|
|
278
303
|
if (!["Home", "End", "ArrowLeft", "ArrowRight"].includes(event.key)) return;
|
|
@@ -417,7 +442,9 @@ function TabsRoot(param) {
|
|
|
417
442
|
}
|
|
418
443
|
}),
|
|
419
444
|
hitSlop: tabHitSlop,
|
|
420
|
-
onInteraction:
|
|
445
|
+
onInteraction: function onInteraction(type, layout) {
|
|
446
|
+
return handleInteraction(item.value, type, layout);
|
|
447
|
+
},
|
|
421
448
|
cursor: isDisabled ? "not-allowed" : "pointer",
|
|
422
449
|
backgroundColor: isBand ? isActive ? import_componentColors.componentColors.surface.background : isDisabled ? "transparent" : feedbackBackground : "transparent",
|
|
423
450
|
borderRadius: 0,
|
|
@@ -544,12 +571,10 @@ function TabsRoot(param) {
|
|
|
544
571
|
updateFades();
|
|
545
572
|
},
|
|
546
573
|
onLayout: function onLayout(e) {
|
|
547
|
-
|
|
548
|
-
updateFades();
|
|
574
|
+
updateScrollSize("viewport", e.nativeEvent.layout.width);
|
|
549
575
|
},
|
|
550
576
|
onContentSizeChange: function onContentSizeChange(w) {
|
|
551
|
-
|
|
552
|
-
updateFades();
|
|
577
|
+
updateScrollSize("content", w);
|
|
553
578
|
},
|
|
554
579
|
children: tabList
|
|
555
580
|
})
|