@tamagui/sheet 1.138.3 → 1.138.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/SheetImplementationCustom.cjs +9 -2
- package/dist/cjs/SheetImplementationCustom.js +27 -10
- package/dist/cjs/SheetImplementationCustom.js.map +1 -1
- package/dist/cjs/SheetImplementationCustom.native.js +16 -7
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
- package/dist/cjs/createSheet.cjs +26 -18
- package/dist/cjs/createSheet.js +24 -17
- package/dist/cjs/createSheet.js.map +1 -1
- package/dist/cjs/createSheet.native.js +26 -21
- package/dist/cjs/createSheet.native.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.js +27 -10
- package/dist/esm/SheetImplementationCustom.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.mjs +9 -2
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
- package/dist/esm/SheetImplementationCustom.native.js +16 -7
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
- package/dist/esm/createSheet.js +25 -18
- package/dist/esm/createSheet.js.map +1 -1
- package/dist/esm/createSheet.mjs +27 -19
- package/dist/esm/createSheet.mjs.map +1 -1
- package/dist/esm/createSheet.native.js +27 -22
- package/dist/esm/createSheet.native.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.js +27 -10
- package/dist/jsx/SheetImplementationCustom.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.mjs +9 -2
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
- package/dist/jsx/SheetImplementationCustom.native.js +16 -7
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
- package/dist/jsx/createSheet.js +25 -18
- package/dist/jsx/createSheet.js.map +1 -1
- package/dist/jsx/createSheet.mjs +27 -19
- package/dist/jsx/createSheet.mjs.map +1 -1
- package/dist/jsx/createSheet.native.js +26 -21
- package/dist/jsx/createSheet.native.js.map +1 -1
- package/package.json +19 -19
- package/src/SheetImplementationCustom.tsx +35 -11
- package/src/createSheet.tsx +20 -3
- package/types/SheetImplementationCustom.d.ts.map +1 -1
- package/types/createSheet.d.ts.map +1 -1
|
@@ -123,12 +123,28 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
123
123
|
setIsShowingInnerSheet(hasChild)
|
|
124
124
|
}, [])
|
|
125
125
|
|
|
126
|
+
// FIX: Store stable frameSize to prevent recalculation during exit animation
|
|
127
|
+
const stableFrameSize = React.useRef(frameSize)
|
|
128
|
+
|
|
129
|
+
React.useEffect(() => {
|
|
130
|
+
// Only update stable size when sheet is open
|
|
131
|
+
if (open && frameSize) {
|
|
132
|
+
stableFrameSize.current = frameSize
|
|
133
|
+
}
|
|
134
|
+
}, [open, frameSize])
|
|
135
|
+
|
|
126
136
|
const positions = React.useMemo(
|
|
127
137
|
() =>
|
|
128
138
|
snapPoints.map((point) =>
|
|
129
|
-
|
|
139
|
+
// FIX: Use stable frameSize when closing to prevent position jumps
|
|
140
|
+
getYPositions(
|
|
141
|
+
snapPointsMode,
|
|
142
|
+
point,
|
|
143
|
+
screenSize,
|
|
144
|
+
open ? frameSize : stableFrameSize.current
|
|
145
|
+
)
|
|
130
146
|
),
|
|
131
|
-
[screenSize, frameSize, snapPoints, snapPointsMode]
|
|
147
|
+
[screenSize, frameSize, snapPoints, snapPointsMode, open]
|
|
132
148
|
)
|
|
133
149
|
|
|
134
150
|
const { useAnimatedNumber, useAnimatedNumberStyle, useAnimatedNumberReaction } =
|
|
@@ -401,15 +417,23 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
401
417
|
})
|
|
402
418
|
}, [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition])
|
|
403
419
|
|
|
404
|
-
const handleAnimationViewLayout = React.useCallback(
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
420
|
+
const handleAnimationViewLayout = React.useCallback(
|
|
421
|
+
(e: LayoutChangeEvent) => {
|
|
422
|
+
// FIX: Don't update frameSize during exit animation to prevent position jumps
|
|
423
|
+
if (!open && stableFrameSize.current !== 0) {
|
|
424
|
+
return
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// avoid bugs where it grows forever for whatever reason
|
|
428
|
+
const next = Math.min(
|
|
429
|
+
e.nativeEvent?.layout.height,
|
|
430
|
+
Dimensions.get(relativeDimensionTo).height
|
|
431
|
+
)
|
|
432
|
+
if (!next) return
|
|
433
|
+
setFrameSize(next)
|
|
434
|
+
},
|
|
435
|
+
[open]
|
|
436
|
+
)
|
|
413
437
|
|
|
414
438
|
const handleMaxContentViewLayout = React.useCallback((e: LayoutChangeEvent) => {
|
|
415
439
|
// avoid bugs where it grows forever for whatever reason
|
package/src/createSheet.tsx
CHANGED
|
@@ -14,7 +14,7 @@ import { RemoveScroll } from '@tamagui/remove-scroll'
|
|
|
14
14
|
import { useDidFinishSSR } from '@tamagui/use-did-finish-ssr'
|
|
15
15
|
import { StackZIndexContext } from '@tamagui/z-index-stack'
|
|
16
16
|
import type { ForwardRefExoticComponent, FunctionComponent, RefAttributes } from 'react'
|
|
17
|
-
import { forwardRef, memo, useMemo } from 'react'
|
|
17
|
+
import { forwardRef, memo, useMemo, useEffect, useRef } from 'react'
|
|
18
18
|
import type { View } from 'react-native'
|
|
19
19
|
import { Platform } from 'react-native'
|
|
20
20
|
import { SHEET_HANDLE_NAME, SHEET_NAME, SHEET_OVERLAY_NAME } from './constants'
|
|
@@ -153,13 +153,30 @@ export function createSheet<
|
|
|
153
153
|
const composedContentRef = useComposedRefs(forwardedRef, contentRef)
|
|
154
154
|
const offscreenSize = useSheetOffscreenSize(context)
|
|
155
155
|
|
|
156
|
+
// FIX: Store the frameSize when open for use during close animation
|
|
157
|
+
const stableFrameSize = useRef(frameSize)
|
|
158
|
+
useEffect(() => {
|
|
159
|
+
if (open && frameSize) {
|
|
160
|
+
stableFrameSize.current = frameSize
|
|
161
|
+
}
|
|
162
|
+
}, [open, frameSize])
|
|
163
|
+
|
|
156
164
|
const sheetContents = useMemo(() => {
|
|
165
|
+
// FIX: Use fixed height during close animation to prevent content-driven resizing
|
|
166
|
+
const shouldUseFixedHeight = hasFit && !open && stableFrameSize.current
|
|
167
|
+
|
|
157
168
|
return (
|
|
158
169
|
// @ts-expect-error
|
|
159
170
|
<Frame
|
|
160
171
|
ref={composedContentRef}
|
|
161
|
-
flex={hasFit ? 0 : 1}
|
|
162
|
-
height={
|
|
172
|
+
flex={hasFit && open ? 0 : 1}
|
|
173
|
+
height={
|
|
174
|
+
shouldUseFixedHeight
|
|
175
|
+
? stableFrameSize.current
|
|
176
|
+
: hasFit
|
|
177
|
+
? undefined
|
|
178
|
+
: frameSize
|
|
179
|
+
}
|
|
163
180
|
pointerEvents={open ? 'auto' : 'none'}
|
|
164
181
|
{...props}
|
|
165
182
|
>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetImplementationCustom.d.ts","sourceRoot":"","sources":["../src/SheetImplementationCustom.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAOvC,OAAO,EAAsC,IAAI,EAAE,MAAM,cAAc,CAAA;AAIvE,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,SAAS,CAAA;AAWzD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"SheetImplementationCustom.d.ts","sourceRoot":"","sources":["../src/SheetImplementationCustom.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAOvC,OAAO,EAAsC,IAAI,EAAE,MAAM,cAAc,CAAA;AAIvE,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,SAAS,CAAA;AAWzD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAikBrC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSheet.d.ts","sourceRoot":"","sources":["../src/createSheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,iCAAiC,EAElC,MAAM,eAAe,CAAA;AAOtB,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAExF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAOxC,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI3D,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,SAAS,GAAG,UAAU,GAAG,gBAAgB,CAAA;AAE9C,KAAK,oBAAoB,GAAG,iCAAiC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;AAE1F,wBAAgB,WAAW,CACzB,CAAC,SAAS,gBAAgB,GAAG,oBAAoB,EACjD,CAAC,SAAS,gBAAgB,GAAG,oBAAoB,EACjD,CAAC,SAAS,gBAAgB,GAAG,oBAAoB,EACjD,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA6E7D;;;;eAIG;wCACyB,OAAO;YAEnC;;;;eAIG;+CACgC,OAAO;;YAZ1C;;;;eAIG;wCACyB,OAAO;YAEnC;;;;eAIG;+CACgC,OAAO;;+DArD3B,gBAAgB,CAAC,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;QAyCzD;;;;WAIG;oCACyB,OAAO;QAEnC;;;;WAIG;2CACgC,OAAO;;QAZ1C;;;;WAIG;oCACyB,OAAO;QAEnC;;;;WAIG;2CACgC,OAAO;;2DArD3B,gBAAgB,CAAC,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createSheet.d.ts","sourceRoot":"","sources":["../src/createSheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,iCAAiC,EAElC,MAAM,eAAe,CAAA;AAOtB,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAExF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAOxC,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI3D,KAAK,gBAAgB,GAAG;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,SAAS,GAAG,UAAU,GAAG,gBAAgB,CAAA;AAE9C,KAAK,oBAAoB,GAAG,iCAAiC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;AAE1F,wBAAgB,WAAW,CACzB,CAAC,SAAS,gBAAgB,GAAG,oBAAoB,EACjD,CAAC,SAAS,gBAAgB,GAAG,oBAAoB,EACjD,CAAC,SAAS,gBAAgB,GAAG,oBAAoB,EACjD,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA6E7D;;;;eAIG;wCACyB,OAAO;YAEnC;;;;eAIG;+CACgC,OAAO;;YAZ1C;;;;eAIG;wCACyB,OAAO;YAEnC;;;;eAIG;+CACgC,OAAO;;+DArD3B,gBAAgB,CAAC,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;QAyCzD;;;;WAIG;oCACyB,OAAO;QAEnC;;;;WAIG;2CACgC,OAAO;;QAZ1C;;;;WAIG;oCACyB,OAAO;QAEnC;;;;WAIG;2CACgC,OAAO;;2DArD3B,gBAAgB,CAAC,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;;;;EA0M5D"}
|