@multiplatform.one/components 7.7.2 → 7.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/SheetModal/index.native.js +49 -25
- package/dist/cjs/SheetModal/index.native.js.map +1 -1
- package/dist/esm/Accordion/index.native.js.map +1 -1
- package/dist/esm/AnimateHeight/index.native.js.map +1 -1
- package/dist/esm/Avatar/getInitials.native.js.map +1 -1
- package/dist/esm/Avatar/index.native.js.map +1 -1
- package/dist/esm/Badge/index.native.js.map +1 -1
- package/dist/esm/Button.native.js.map +1 -1
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/ContextMenu/index.native.js.map +1 -1
- package/dist/esm/CopyField/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/DropdownMenu/index.native.js.map +1 -1
- package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
- package/dist/esm/Heading.native.js.map +1 -1
- package/dist/esm/Meter/index.native.js.map +1 -1
- package/dist/esm/Meter/meter.native.js.map +1 -1
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/Quote/index.native.js.map +1 -1
- package/dist/esm/Separator/index.native.js.map +1 -1
- package/dist/esm/SheetModal/detents.native.js.map +1 -1
- package/dist/esm/SheetModal/index.native.js +49 -25
- package/dist/esm/SheetModal/index.native.js.map +1 -1
- package/dist/esm/Skeleton/index.native.js.map +1 -1
- package/dist/esm/SkipLink/index.native.js.map +1 -1
- package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
- package/dist/esm/SortableList/index.native.js.map +1 -1
- package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
- package/dist/esm/Tabs/index.native.js.map +1 -1
- package/dist/esm/Text.native.js.map +1 -1
- package/dist/esm/Toast/index.native.js.map +1 -1
- package/dist/esm/Toast/store.native.js.map +1 -1
- package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
- package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
- package/dist/esm/TreeSelect/index.native.js.map +1 -1
- package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
- package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
- package/dist/esm/Video/VideoFrame.native.js.map +1 -1
- package/dist/esm/Video/types.native.js.map +1 -1
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/Wizard/index.native.js.map +1 -1
- package/dist/esm/actions/ActionBar.native.js.map +1 -1
- package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
- package/dist/esm/actions/devWarn.native.js.map +1 -1
- package/dist/esm/actions/index.native.js.map +1 -1
- package/dist/esm/actions/severity.native.js.map +1 -1
- package/dist/esm/charts/Axis.native.js.map +1 -1
- package/dist/esm/charts/BarChart.native.js.map +1 -1
- package/dist/esm/charts/ChartSurface.native.js.map +1 -1
- package/dist/esm/charts/LineChart.native.js.map +1 -1
- package/dist/esm/charts/PieChart.native.js.map +1 -1
- package/dist/esm/charts/Sparkline.native.js.map +1 -1
- package/dist/esm/charts/accessibility.native.js.map +1 -1
- package/dist/esm/charts/composeChart.native.js.map +1 -1
- package/dist/esm/charts/index.native.js.map +1 -1
- package/dist/esm/charts/math.native.js.map +1 -1
- package/dist/esm/charts/series.native.js.map +1 -1
- package/dist/esm/charts/svg.native.js.map +1 -1
- package/dist/esm/charts/types.native.js.map +1 -1
- package/dist/esm/charts/useChartTheme.native.js.map +1 -1
- package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
- package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/esm/code/Highlighter/index.native.js.map +1 -1
- package/dist/esm/code/Pre/index.native.js.map +1 -1
- package/dist/esm/code/index.native.js.map +1 -1
- package/dist/esm/componentColors.native.js.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
- package/dist/esm/feedback/copy.native.js.map +1 -1
- package/dist/esm/feedback/index.native.js.map +1 -1
- package/dist/esm/feedback/notify.native.js.map +1 -1
- package/dist/esm/feedback/route.native.js.map +1 -1
- package/dist/esm/feedback/store.native.js.map +1 -1
- package/dist/esm/hooks/index.native.js.map +1 -1
- package/dist/esm/hooks/useClipboard.native.js.map +1 -1
- package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
- package/dist/esm/icons/CheckRegular.native.js.map +1 -1
- package/dist/esm/icons/MinusRegular.native.js.map +1 -1
- package/dist/esm/icons/index.native.js.map +1 -1
- package/dist/esm/icons/lucide.native.js.map +1 -1
- package/dist/esm/icons/themed.native.js.map +1 -1
- package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/esm/images/Image/shared.native.js.map +1 -1
- package/dist/esm/images/Image/types.native.js.map +1 -1
- package/dist/esm/images/index.native.js.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/knobImmuneExports.native.js.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/esm/layouts/Debug/index.native.js.map +1 -1
- package/dist/esm/layouts/EmptyState.native.js.map +1 -1
- package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
- package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
- package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/esm/layouts/index.native.js.map +1 -1
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/esm/layouts/sidebar.native.js.map +1 -1
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/layouts/toolbar.native.js.map +1 -1
- package/dist/esm/shared/actionScan.native.js.map +1 -1
- package/dist/esm/shared/i18n.native.js.map +1 -1
- package/dist/esm/shared/t.native.js.map +1 -1
- package/dist/esm/shared/textRidesText.native.js.map +1 -1
- package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/tamagui.native.js.map +1 -1
- package/dist/esm/testSetup.native.js.map +1 -1
- package/dist/esm/utils/setTinted.native.js.map +1 -1
- package/dist/esm/utils/unwrapText.native.js.map +1 -1
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Dashboard.native.js.map +1 -1
- package/dist/esm/views/Gantt.native.js.map +1 -1
- package/dist/esm/views/ImageGrid.native.js.map +1 -1
- package/dist/esm/views/List.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/TreeView.native.js.map +1 -1
- package/dist/esm/views/calendarMath.native.js.map +1 -1
- package/dist/esm/views/ganttMath.native.js.map +1 -1
- package/dist/esm/views/index.native.js.map +1 -1
- package/dist/esm/views/kanbanDnd.native.js.map +1 -1
- package/dist/esm/views/treeViewDnd.native.js.map +1 -1
- package/dist/esm/views/treeViewLayout.native.js.map +1 -1
- package/dist/esm/views/treeViewMotion.native.js.map +1 -1
- package/dist/jsx/SheetModal/index.native.js +49 -25
- package/dist/jsx/SheetModal/index.native.js.map +1 -1
- package/dist/jsx/code/CodeBlock/index.native.js +1 -1
- package/dist/jsx/code/index.native.js +1 -1
- package/dist/jsx/feedback/NotifyHost.native.js +1 -1
- package/dist/jsx/index.native.js +1 -1
- package/dist/jsx/layouts/AsyncBoundary.native.js +1 -1
- package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
- package/package.json +9 -9
- package/src/SheetModal/SheetModal.native.spec.tsx +138 -0
- package/src/SheetModal/index.native.tsx +59 -26
- package/types/SheetModal/index.native.d.ts.map +1 -1
|
@@ -62,19 +62,6 @@ export function SheetModal({
|
|
|
62
62
|
if (backdropArmed) close();
|
|
63
63
|
}, [backdropArmed, close]);
|
|
64
64
|
|
|
65
|
-
useEffect(() => {
|
|
66
|
-
if (!open) {
|
|
67
|
-
setBackdropArmed(false);
|
|
68
|
-
if (armTimerRef.current) {
|
|
69
|
-
clearTimeout(armTimerRef.current);
|
|
70
|
-
armTimerRef.current = null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return () => {
|
|
74
|
-
if (armTimerRef.current) clearTimeout(armTimerRef.current);
|
|
75
|
-
};
|
|
76
|
-
}, [open]);
|
|
77
|
-
|
|
78
65
|
// MPO-64: the sheet ends above the keyboard rather than running under it.
|
|
79
66
|
const available = Math.max(0, windowHeight - keyboardInset);
|
|
80
67
|
const maxHeight = Math.max(
|
|
@@ -127,11 +114,9 @@ export function SheetModal({
|
|
|
127
114
|
travelRef.current = travel;
|
|
128
115
|
detentsRef.current = detents;
|
|
129
116
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
restRef.current = travelRef.current;
|
|
134
|
-
}, [open, translateY]);
|
|
117
|
+
// Async callbacks belong to one committed presentation, never its successor.
|
|
118
|
+
const presentationRef = useRef(0);
|
|
119
|
+
const activeRef = useRef(false);
|
|
135
120
|
|
|
136
121
|
const settleTo = useCallback(
|
|
137
122
|
(toValue: number, velocity = 0) => {
|
|
@@ -143,7 +128,10 @@ export function SheetModal({
|
|
|
143
128
|
stiffness: 320,
|
|
144
129
|
mass: 0.9,
|
|
145
130
|
overshootClamping: true,
|
|
146
|
-
|
|
131
|
+
// MPO-256: JS driver. A native-driven Animated node inside a core RN
|
|
132
|
+
// Modal does not advance on the New Architecture, and the drag path
|
|
133
|
+
// already writes this value from JS.
|
|
134
|
+
useNativeDriver: false,
|
|
147
135
|
}).start();
|
|
148
136
|
},
|
|
149
137
|
[translateY],
|
|
@@ -151,6 +139,8 @@ export function SheetModal({
|
|
|
151
139
|
|
|
152
140
|
const dismiss = useCallback(
|
|
153
141
|
(velocity = 0) => {
|
|
142
|
+
if (!activeRef.current) return;
|
|
143
|
+
const presentation = presentationRef.current;
|
|
154
144
|
restRef.current = travelRef.current;
|
|
155
145
|
Animated.spring(translateY, {
|
|
156
146
|
toValue: travelRef.current,
|
|
@@ -159,9 +149,9 @@ export function SheetModal({
|
|
|
159
149
|
stiffness: 400,
|
|
160
150
|
mass: 0.9,
|
|
161
151
|
overshootClamping: true,
|
|
162
|
-
useNativeDriver:
|
|
152
|
+
useNativeDriver: false,
|
|
163
153
|
}).start(({ finished }) => {
|
|
164
|
-
if (finished) close();
|
|
154
|
+
if (finished && activeRef.current && presentation === presentationRef.current) close();
|
|
165
155
|
});
|
|
166
156
|
},
|
|
167
157
|
[close, translateY],
|
|
@@ -207,9 +197,25 @@ export function SheetModal({
|
|
|
207
197
|
[dismiss, settleTo, translateY],
|
|
208
198
|
);
|
|
209
199
|
|
|
210
|
-
|
|
200
|
+
/*
|
|
201
|
+
* MPO-256 — the entrance runs from an effect on `open` as well as from
|
|
202
|
+
* `onShow`, whichever gets here first, guarded so the second is a no-op.
|
|
203
|
+
* Wired to `onShow` ALONE, the sheet stays parked at `travel` for good
|
|
204
|
+
* whenever that callback does not arrive: one sheet-height below the
|
|
205
|
+
* screen, every row in the accessibility tree and none of them reachable.
|
|
206
|
+
*/
|
|
207
|
+
const enteredRef = useRef(false);
|
|
208
|
+
const enter = useCallback(() => {
|
|
209
|
+
if (!activeRef.current || enteredRef.current) return;
|
|
210
|
+
const presentation = presentationRef.current;
|
|
211
|
+
enteredRef.current = true;
|
|
211
212
|
if (armTimerRef.current) clearTimeout(armTimerRef.current);
|
|
212
|
-
armTimerRef.current = setTimeout(() =>
|
|
213
|
+
armTimerRef.current = setTimeout(() => {
|
|
214
|
+
if (activeRef.current && presentation === presentationRef.current) {
|
|
215
|
+
armTimerRef.current = null;
|
|
216
|
+
setBackdropArmed(true);
|
|
217
|
+
}
|
|
218
|
+
}, 280);
|
|
213
219
|
// MPO-62: the modal fades (backdrop dims IN PLACE); only the panel slides.
|
|
214
220
|
// MPO-71: the sheet is already parked off-screen before the present, so
|
|
215
221
|
// this setValue only normalises the start to exactly `travel` once the
|
|
@@ -221,10 +227,37 @@ export function SheetModal({
|
|
|
221
227
|
toValue: 0,
|
|
222
228
|
duration: 280,
|
|
223
229
|
easing: Easing.out(Easing.cubic),
|
|
224
|
-
useNativeDriver:
|
|
225
|
-
}).start()
|
|
230
|
+
useNativeDriver: false,
|
|
231
|
+
}).start(({ finished }) => {
|
|
232
|
+
if (finished && activeRef.current && presentation === presentationRef.current)
|
|
233
|
+
translateY.setValue(0);
|
|
234
|
+
});
|
|
226
235
|
}, [translateY]);
|
|
227
236
|
|
|
237
|
+
useEffect(() => {
|
|
238
|
+
presentationRef.current += 1;
|
|
239
|
+
activeRef.current = open;
|
|
240
|
+
if (open) {
|
|
241
|
+
enter();
|
|
242
|
+
} else {
|
|
243
|
+
setBackdropArmed(false);
|
|
244
|
+
const parked = travelRef.current || 10000;
|
|
245
|
+
translateY.setValue(parked);
|
|
246
|
+
restRef.current = parked;
|
|
247
|
+
}
|
|
248
|
+
return () => {
|
|
249
|
+
// Invalidate first: stopping an animation can synchronously finish it.
|
|
250
|
+
activeRef.current = false;
|
|
251
|
+
presentationRef.current += 1;
|
|
252
|
+
enteredRef.current = false;
|
|
253
|
+
if (armTimerRef.current) {
|
|
254
|
+
clearTimeout(armTimerRef.current);
|
|
255
|
+
armTimerRef.current = null;
|
|
256
|
+
}
|
|
257
|
+
translateY.stopAnimation();
|
|
258
|
+
};
|
|
259
|
+
}, [open, enter, translateY]);
|
|
260
|
+
|
|
228
261
|
return (
|
|
229
262
|
<Modal
|
|
230
263
|
visible={open}
|
|
@@ -232,7 +265,7 @@ export function SheetModal({
|
|
|
232
265
|
animationType="fade"
|
|
233
266
|
statusBarTranslucent
|
|
234
267
|
onRequestClose={close}
|
|
235
|
-
onShow={
|
|
268
|
+
onShow={enter}
|
|
236
269
|
>
|
|
237
270
|
<RNView style={{ flex: 1, justifyContent: "flex-end", paddingBottom: keyboardInset }}>
|
|
238
271
|
<Pressable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/SheetModal/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAU/C,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,UAAU,GACX,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/SheetModal/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAU/C,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,UAAU,GACX,EAAE,eAAe,2CAiTjB"}
|