@tamagui/sheet 1.138.3 → 1.138.5

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.
Files changed (39) hide show
  1. package/dist/cjs/SheetImplementationCustom.cjs +9 -2
  2. package/dist/cjs/SheetImplementationCustom.js +27 -10
  3. package/dist/cjs/SheetImplementationCustom.js.map +1 -1
  4. package/dist/cjs/SheetImplementationCustom.native.js +16 -7
  5. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  6. package/dist/cjs/createSheet.cjs +26 -18
  7. package/dist/cjs/createSheet.js +24 -17
  8. package/dist/cjs/createSheet.js.map +1 -1
  9. package/dist/cjs/createSheet.native.js +26 -21
  10. package/dist/cjs/createSheet.native.js.map +1 -1
  11. package/dist/esm/SheetImplementationCustom.js +27 -10
  12. package/dist/esm/SheetImplementationCustom.js.map +1 -1
  13. package/dist/esm/SheetImplementationCustom.mjs +9 -2
  14. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  15. package/dist/esm/SheetImplementationCustom.native.js +16 -7
  16. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  17. package/dist/esm/createSheet.js +25 -18
  18. package/dist/esm/createSheet.js.map +1 -1
  19. package/dist/esm/createSheet.mjs +27 -19
  20. package/dist/esm/createSheet.mjs.map +1 -1
  21. package/dist/esm/createSheet.native.js +27 -22
  22. package/dist/esm/createSheet.native.js.map +1 -1
  23. package/dist/jsx/SheetImplementationCustom.js +27 -10
  24. package/dist/jsx/SheetImplementationCustom.js.map +1 -1
  25. package/dist/jsx/SheetImplementationCustom.mjs +9 -2
  26. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  27. package/dist/jsx/SheetImplementationCustom.native.js +16 -7
  28. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  29. package/dist/jsx/createSheet.js +25 -18
  30. package/dist/jsx/createSheet.js.map +1 -1
  31. package/dist/jsx/createSheet.mjs +27 -19
  32. package/dist/jsx/createSheet.mjs.map +1 -1
  33. package/dist/jsx/createSheet.native.js +26 -21
  34. package/dist/jsx/createSheet.native.js.map +1 -1
  35. package/package.json +19 -19
  36. package/src/SheetImplementationCustom.tsx +35 -11
  37. package/src/createSheet.tsx +20 -3
  38. package/types/SheetImplementationCustom.d.ts.map +1 -1
  39. 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
- getYPositions(snapPointsMode, point, screenSize, frameSize)
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((e: LayoutChangeEvent) => {
405
- // avoid bugs where it grows forever for whatever reason
406
- const next = Math.min(
407
- e.nativeEvent?.layout.height,
408
- Dimensions.get(relativeDimensionTo).height
409
- )
410
- if (!next) return
411
- setFrameSize(next)
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
@@ -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={hasFit ? undefined : frameSize}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAyiBrC,CAAA"}
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;;;;;;;;;;;;;;;;;;;EAyL5D"}
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"}