react-native-terra-ui 0.11.14 → 0.11.15

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.11.15](https://github.com/earthling-std/react-native-terra-ui/compare/v0.11.14...v0.11.15) (2026-09-19)
4
+
5
+ ### Bug Fixes
6
+
7
+ * **ui:** [header] stop status-bar taps scrolling the wrong list ([6ec4094](https://github.com/earthling-std/react-native-terra-ui/commit/6ec4094ac6d6062b763946c69dbe6fb794f2d582))
8
+
3
9
  ## [0.11.14](https://github.com/earthlin9/react-native-terra-ui/compare/v0.11.13...v0.11.14) (2026-09-19)
4
10
 
5
11
  ### Features
@@ -4,6 +4,7 @@ import { View } from "react-native-unistyles/components/native/View";
4
4
  import { Text } from "react-native-unistyles/components/native/Text";
5
5
  import { useState } from "react";
6
6
  import Animated from "react-native-reanimated";
7
+ import { ScrollToTopGuard } from "react-native-screens/experimental";
7
8
  import { StyleSheet, useUnistyles } from "react-native-unistyles";
8
9
  import { FONT_WEIGHT_VALUE } from "../../../utils/typography.js";
9
10
  import { resolveScreenPadding } from "../../../theme/screen-padding.js";
@@ -43,28 +44,46 @@ export function HeaderBar({
43
44
  navigation: navigation,
44
45
  onDismiss: onDismiss
45
46
  });
46
- return /*#__PURE__*/_jsxs(View, {
47
- style: [styles.bar, styles.windowInsets(windowInsets.left, windowInsets.right)],
48
- children: [/*#__PURE__*/_jsx(HeaderSurface, {
49
- color: color,
50
- animatedStyle: surfaceStyle
51
- }), /*#__PURE__*/_jsx(HeaderWindowInsets, {
52
- onInsetsChange: setWindowInsets
53
- }), (leading != null || dismissAction === "back") && /*#__PURE__*/_jsxs(Toolbar, {
54
- children: [dismissAction === "back" && dismiss, leading]
55
- }), /*#__PURE__*/_jsx(Animated.View, {
56
- style: [styles.titleContainer, styles.titleInsets(windowInsets.left, windowInsets.right, titleAlignment), titleStyle],
57
- pointerEvents: isCustomTitle(title) ? "box-none" : "none",
58
- children: isTextTitle(title) ? String(title).trim().length > 0 && /*#__PURE__*/_jsx(Text, {
59
- style: styles.title,
60
- maxFontSizeMultiplier: theme.typography.variants["title-md"].maxFontSizeMultiplier,
61
- children: title
62
- }) : title
63
- }), (trailing != null || dismissAction === "close") && /*#__PURE__*/_jsxs(Toolbar, {
64
- style: styles.trailing,
65
- children: [dismissAction === "close" && dismiss, trailing]
66
- })]
67
- });
47
+ return (
48
+ /*#__PURE__*/
49
+ /*
50
+ iPadOS 26 extended the status bar's tap-to-scroll-to-top zone down over
51
+ this bar, and a React Native `Pressable` is not a `UIControl`, so a tap on
52
+ a header button reaches UIKit's gesture as well. UIKit then scrolls
53
+ whichever container still accepts it — routinely not the one the reader
54
+ touched, but the list on the screen underneath the one being dismissed.
55
+ The guard covers the whole bar rather than each button: the zone covers
56
+ the bar, so the title and the gaps between actions are just as exposed.
57
+ Gesture recognizers on descendants are exempt, so the buttons keep their
58
+ own touch handling; only the ancestor gesture is made to wait and lose.
59
+ The status bar above the bar is untouched and still scrolls to top.
60
+ A Fragment off iOS and inert below iPadOS 26. See react-native#56061.
61
+ */
62
+ _jsx(ScrollToTopGuard, {
63
+ children: /*#__PURE__*/_jsxs(View, {
64
+ style: [styles.bar, styles.windowInsets(windowInsets.left, windowInsets.right)],
65
+ children: [/*#__PURE__*/_jsx(HeaderSurface, {
66
+ color: color,
67
+ animatedStyle: surfaceStyle
68
+ }), /*#__PURE__*/_jsx(HeaderWindowInsets, {
69
+ onInsetsChange: setWindowInsets
70
+ }), (leading != null || dismissAction === "back") && /*#__PURE__*/_jsxs(Toolbar, {
71
+ children: [dismissAction === "back" && dismiss, leading]
72
+ }), /*#__PURE__*/_jsx(Animated.View, {
73
+ style: [styles.titleContainer, styles.titleInsets(windowInsets.left, windowInsets.right, titleAlignment), titleStyle],
74
+ pointerEvents: isCustomTitle(title) ? "box-none" : "none",
75
+ children: isTextTitle(title) ? String(title).trim().length > 0 && /*#__PURE__*/_jsx(Text, {
76
+ style: styles.title,
77
+ maxFontSizeMultiplier: theme.typography.variants["title-md"].maxFontSizeMultiplier,
78
+ children: title
79
+ }) : title
80
+ }), (trailing != null || dismissAction === "close") && /*#__PURE__*/_jsxs(Toolbar, {
81
+ style: styles.trailing,
82
+ children: [dismissAction === "close" && dismiss, trailing]
83
+ })]
84
+ })
85
+ })
86
+ );
68
87
  }
69
88
  }
70
89
  const styles = StyleSheet.create((theme, runtime) => ({
@@ -1 +1 @@
1
- {"version":3,"names":["useState","Animated","StyleSheet","useUnistyles","FONT_WEIGHT_VALUE","resolveScreenPadding","Toolbar","HeaderDismissButton","isCustomTitle","isTextTitle","HeaderSurface","HeaderWindowInsets","jsx","_jsx","jsxs","_jsxs","HeaderBar","title","leading","trailing","titleAlignment","color","surfaceStyle","titleStyle","dismissAction","navigation","onDismiss","theme","windowInsets","setWindowInsets","left","right","_styles","styles","useVariants","dismiss","View","style","bar","children","animatedStyle","onInsetsChange","titleContainer","titleInsets","pointerEvents","String","trim","length","Text","maxFontSizeMultiplier","typography","variants","create","runtime","paddingLeft","Math","max","breakpoint","x","paddingRight","uni__dependencies","alignment","height","layout","header","flexDirection","alignItems","paddingHorizontal","screen","padding","gap","spacing","justifyContent","center","marginLeft","position","flex","fontSize","lineHeight","letterSpacing","fontWeight","textAlign"],"sourceRoot":"../../../../../src","sources":["components/header/parts/HeaderBar.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useState","Animated","ScrollToTopGuard","StyleSheet","useUnistyles","FONT_WEIGHT_VALUE","resolveScreenPadding","Toolbar","HeaderDismissButton","isCustomTitle","isTextTitle","HeaderSurface","HeaderWindowInsets","jsx","_jsx","jsxs","_jsxs","HeaderBar","title","leading","trailing","titleAlignment","color","surfaceStyle","titleStyle","dismissAction","navigation","onDismiss","theme","windowInsets","setWindowInsets","left","right","_styles","styles","useVariants","dismiss","children","View","style","bar","animatedStyle","onInsetsChange","titleContainer","titleInsets","pointerEvents","String","trim","length","Text","maxFontSizeMultiplier","typography","variants","create","runtime","paddingLeft","Math","max","breakpoint","x","paddingRight","uni__dependencies","alignment","height","layout","header","flexDirection","alignItems","paddingHorizontal","screen","padding","gap","spacing","justifyContent","center","marginLeft","position","flex","fontSize","lineHeight","letterSpacing","fontWeight","textAlign"],"sourceRoot":"../../../../../src","sources":["components/header/parts/HeaderBar.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderBar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/header/parts/HeaderBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAGtE,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAM/C,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,sBAAmB,CAAC;AAEjF,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,oBAAiB,CAAC;AAGzE,UAAU,cAAe,SAAQ,kBAAkB;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;CAC5D;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,cAAc,EACd,KAAK,EACL,YAAY,EACZ,UAAU,EACV,aAAsB,EACtB,UAAU,EACV,SAAS,GACV,EAAE,cAAc,+BA4ChB"}
1
+ {"version":3,"file":"HeaderBar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/header/parts/HeaderBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAGtE,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAO/C,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,sBAAmB,CAAC;AAEjF,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,oBAAiB,CAAC;AAGzE,UAAU,cAAe,SAAQ,kBAAkB;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;CAC5D;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,cAAc,EACd,KAAK,EACL,YAAY,EACZ,UAAU,EACV,aAAsB,EACtB,UAAU,EACV,SAAS,GACV,EAAE,cAAc,+BA6DhB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-terra-ui",
3
- "version": "0.11.14",
3
+ "version": "0.11.15",
4
4
  "description": "Themeable React Native UI components built on react-native-unistyles",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -75,7 +75,7 @@
75
75
  "react-native-nitro-modules": "0.36.1",
76
76
  "react-native-reanimated": "4.4.3",
77
77
  "react-native-safe-area-context": "5.7.0",
78
- "react-native-screens": "4.25.2",
78
+ "react-native-screens": "4.27.0",
79
79
  "react-native-svg": "15.15.4",
80
80
  "react-native-unistyles": "^3.3.0",
81
81
  "react-native-worklets": "0.10.0",
@@ -89,7 +89,7 @@
89
89
  "react-native": "*",
90
90
  "react-native-reanimated": ">=4.0.0",
91
91
  "react-native-safe-area-context": ">=4.0.0",
92
- "react-native-screens": ">=4.16.0",
92
+ "react-native-screens": ">=4.27.0",
93
93
  "react-native-svg": ">=15.0.0",
94
94
  "react-native-unistyles": ">=3.0.0",
95
95
  "react-native-worklets": ">=0.8.0"
@@ -2,6 +2,7 @@ import { type ComponentProps, type ReactNode, useState } from "react";
2
2
  import { Text, View } from "react-native";
3
3
 
4
4
  import Animated from "react-native-reanimated";
5
+ import { ScrollToTopGuard } from "react-native-screens/experimental";
5
6
  import { StyleSheet, useUnistyles } from "react-native-unistyles";
6
7
 
7
8
  import { FONT_WEIGHT_VALUE } from "#utils/typography";
@@ -42,41 +43,58 @@ export function HeaderBar({
42
43
  <HeaderDismissButton dismissAction={dismissAction} navigation={navigation} onDismiss={onDismiss} />
43
44
  );
44
45
  return (
45
- <View style={[styles.bar, styles.windowInsets(windowInsets.left, windowInsets.right)]}>
46
- <HeaderSurface color={color} animatedStyle={surfaceStyle} />
47
- <HeaderWindowInsets onInsetsChange={setWindowInsets} />
48
- {(leading != null || dismissAction === "back") && (
49
- <Toolbar>
50
- {dismissAction === "back" && dismiss}
51
- {leading}
52
- </Toolbar>
53
- )}
54
- <Animated.View
55
- style={[
56
- styles.titleContainer,
57
- styles.titleInsets(windowInsets.left, windowInsets.right, titleAlignment),
58
- titleStyle,
59
- ]}
60
- pointerEvents={isCustomTitle(title) ? "box-none" : "none"}
61
- >
62
- {isTextTitle(title)
63
- ? String(title).trim().length > 0 && (
64
- <Text
65
- style={styles.title}
66
- maxFontSizeMultiplier={theme.typography.variants["title-md"].maxFontSizeMultiplier}
67
- >
68
- {title}
69
- </Text>
70
- )
71
- : title}
72
- </Animated.View>
73
- {(trailing != null || dismissAction === "close") && (
74
- <Toolbar style={styles.trailing}>
75
- {dismissAction === "close" && dismiss}
76
- {trailing}
77
- </Toolbar>
78
- )}
79
- </View>
46
+ /*
47
+ iPadOS 26 extended the status bar's tap-to-scroll-to-top zone down over
48
+ this bar, and a React Native `Pressable` is not a `UIControl`, so a tap on
49
+ a header button reaches UIKit's gesture as well. UIKit then scrolls
50
+ whichever container still accepts it — routinely not the one the reader
51
+ touched, but the list on the screen underneath the one being dismissed.
52
+
53
+ The guard covers the whole bar rather than each button: the zone covers
54
+ the bar, so the title and the gaps between actions are just as exposed.
55
+ Gesture recognizers on descendants are exempt, so the buttons keep their
56
+ own touch handling; only the ancestor gesture is made to wait and lose.
57
+ The status bar above the bar is untouched and still scrolls to top.
58
+
59
+ A Fragment off iOS and inert below iPadOS 26. See react-native#56061.
60
+ */
61
+ <ScrollToTopGuard>
62
+ <View style={[styles.bar, styles.windowInsets(windowInsets.left, windowInsets.right)]}>
63
+ <HeaderSurface color={color} animatedStyle={surfaceStyle} />
64
+ <HeaderWindowInsets onInsetsChange={setWindowInsets} />
65
+ {(leading != null || dismissAction === "back") && (
66
+ <Toolbar>
67
+ {dismissAction === "back" && dismiss}
68
+ {leading}
69
+ </Toolbar>
70
+ )}
71
+ <Animated.View
72
+ style={[
73
+ styles.titleContainer,
74
+ styles.titleInsets(windowInsets.left, windowInsets.right, titleAlignment),
75
+ titleStyle,
76
+ ]}
77
+ pointerEvents={isCustomTitle(title) ? "box-none" : "none"}
78
+ >
79
+ {isTextTitle(title)
80
+ ? String(title).trim().length > 0 && (
81
+ <Text
82
+ style={styles.title}
83
+ maxFontSizeMultiplier={theme.typography.variants["title-md"].maxFontSizeMultiplier}
84
+ >
85
+ {title}
86
+ </Text>
87
+ )
88
+ : title}
89
+ </Animated.View>
90
+ {(trailing != null || dismissAction === "close") && (
91
+ <Toolbar style={styles.trailing}>
92
+ {dismissAction === "close" && dismiss}
93
+ {trailing}
94
+ </Toolbar>
95
+ )}
96
+ </View>
97
+ </ScrollToTopGuard>
80
98
  );
81
99
  }
82
100