Skip to content

Commit e9f106c

Browse files
Safe area view conditional edges (#274)
2 parents 572a69f + 8236d9e commit e9f106c

File tree

5 files changed

+90
-7
lines changed

5 files changed

+90
-7
lines changed

packages/pluggableWidgets/safe-area-view-native/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "safe-area-view-native",
33
"widgetName": "SafeAreaView",
4-
"version": "3.0.0",
4+
"version": "3.1.0",
55
"license": "Apache-2.0",
66
"repository": {
77
"type": "git",
@@ -21,6 +21,7 @@
2121
"dependencies": {
2222
"@mendix/piw-native-utils-internal": "*",
2323
"@mendix/piw-utils-internal": "*",
24+
"@react-navigation/bottom-tabs": "6.6.1",
2425
"react-native-safe-area-context": "4.11.0"
2526
},
2627
"devDependencies": {
Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
11
import { createElement } from "react";
2-
import { View } from "react-native";
32
import { flattenStyles } from "@mendix/piw-native-utils-internal";
43
import { SafeAreaViewStyle, defaultSafeAreaViewStyle } from "./ui/Styles";
54
import { SafeAreaViewProps } from "../typings/SafeAreaViewProps";
65
import { SafeAreaView as SafeAreaViewComponent } from "react-native-safe-area-context";
6+
import { useBottomTabBarHeight } from "@react-navigation/bottom-tabs";
7+
import { View } from "react-native";
8+
9+
export function useSafeBottomTabBarHeight(): number {
10+
try {
11+
const height = useBottomTabBarHeight();
12+
return height;
13+
} catch (e) {
14+
return 0;
15+
}
16+
}
717

818
export const SafeAreaView = (props: SafeAreaViewProps<SafeAreaViewStyle>): JSX.Element => {
919
const styles = flattenStyles(defaultSafeAreaViewStyle, props.style);
20+
const tabBarHeight = useSafeBottomTabBarHeight();
1021

22+
const isBottomBarActive = tabBarHeight > 0;
1123
return (
1224
<SafeAreaViewComponent
13-
edges={["top", "left", "right"]}
25+
edges={isBottomBarActive ? ["top", "left", "right"] : undefined}
1426
style={{ flex: 1, ...{ backgroundColor: styles.container.backgroundColor } }}
1527
pointerEvents={"box-none"}
1628
testID={props.name}
@@ -20,4 +32,4 @@ export const SafeAreaView = (props: SafeAreaViewProps<SafeAreaViewStyle>): JSX.E
2032
</View>
2133
</SafeAreaViewComponent>
2234
);
23-
};
35+
};

packages/pluggableWidgets/safe-area-view-native/src/__tests__/SafeAreaView.spec.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import { SafeAreaViewProps } from "../../typings/SafeAreaViewProps";
55
import { SafeAreaViewStyle } from "../ui/Styles";
66
import { Text } from "react-native";
77

8+
jest.mock("@react-navigation/bottom-tabs", () => ({
9+
useBottomTabBarHeight: jest.fn(() => 50)
10+
}));
11+
812
describe("Safe area view", () => {
913
let defaultProps: SafeAreaViewProps<SafeAreaViewStyle>;
1014

packages/pluggableWidgets/safe-area-view-native/src/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<package xmlns="http://www.mendix.com/package/1.0/">
3-
<clientModule name="SafeAreaView" version="3.0.0" xmlns="http://www.mendix.com/clientModule/1.0/">
3+
<clientModule name="SafeAreaView" version="3.1.0" xmlns="http://www.mendix.com/clientModule/1.0/">
44
<widgetFiles>
55
<widgetFile path="SafeAreaView.xml" />
66
</widgetFiles>

yarn.lock

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4301,6 +4301,35 @@ __metadata:
43014301
languageName: node
43024302
linkType: hard
43034303

4304+
"@react-navigation/bottom-tabs@npm:6.6.1":
4305+
version: 6.6.1
4306+
resolution: "@react-navigation/bottom-tabs@npm:6.6.1"
4307+
dependencies:
4308+
"@react-navigation/elements": "npm:^1.3.31"
4309+
color: "npm:^4.2.3"
4310+
warn-once: "npm:^0.1.0"
4311+
peerDependencies:
4312+
"@react-navigation/native": ^6.0.0
4313+
react: "*"
4314+
react-native: "*"
4315+
react-native-safe-area-context: ">= 3.0.0"
4316+
react-native-screens: ">= 3.0.0"
4317+
checksum: 10/572f67c1ea26ac52a0c599064957ec6ac5cd0eee810d2e3cd5b4f4beb1016fbd5c5e8eb54c4d62836e1afe90c5ef922b31a288f41e0c442123dcfc417aa8fd7f
4318+
languageName: node
4319+
linkType: hard
4320+
4321+
"@react-navigation/elements@npm:^1.3.31":
4322+
version: 1.3.31
4323+
resolution: "@react-navigation/elements@npm:1.3.31"
4324+
peerDependencies:
4325+
"@react-navigation/native": ^6.0.0
4326+
react: "*"
4327+
react-native: "*"
4328+
react-native-safe-area-context: ">= 3.0.0"
4329+
checksum: 10/379b3657300f9ab8043979f1ecaea95dce96253903db8d6954468e39dc7cf0710cc08345fa6625071a1505b6442a395e0e20bde39c0b997fd90fea370275fc08
4330+
languageName: node
4331+
linkType: hard
4332+
43044333
"@rollup/plugin-alias@npm:^3.1.5":
43054334
version: 3.1.9
43064335
resolution: "@rollup/plugin-alias@npm:3.1.9"
@@ -7102,7 +7131,7 @@ __metadata:
71027131
languageName: node
71037132
linkType: hard
71047133

7105-
"color-name@npm:^1.1.4, color-name@npm:~1.1.4":
7134+
"color-name@npm:^1.0.0, color-name@npm:^1.1.4, color-name@npm:~1.1.4":
71067135
version: 1.1.4
71077136
resolution: "color-name@npm:1.1.4"
71087137
checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610
@@ -7126,6 +7155,16 @@ __metadata:
71267155
languageName: unknown
71277156
linkType: soft
71287157

7158+
"color-string@npm:^1.9.0":
7159+
version: 1.9.1
7160+
resolution: "color-string@npm:1.9.1"
7161+
dependencies:
7162+
color-name: "npm:^1.0.0"
7163+
simple-swizzle: "npm:^0.2.2"
7164+
checksum: 10/72aa0b81ee71b3f4fb1ac9cd839cdbd7a011a7d318ef58e6cb13b3708dca75c7e45029697260488709f1b1c7ac4e35489a87e528156c1e365917d1c4ccb9b9cd
7165+
languageName: node
7166+
linkType: hard
7167+
71297168
"color-support@npm:^1.1.3":
71307169
version: 1.1.3
71317170
resolution: "color-support@npm:1.1.3"
@@ -7135,6 +7174,16 @@ __metadata:
71357174
languageName: node
71367175
linkType: hard
71377176

7177+
"color@npm:^4.2.3":
7178+
version: 4.2.3
7179+
resolution: "color@npm:4.2.3"
7180+
dependencies:
7181+
color-convert: "npm:^2.0.1"
7182+
color-string: "npm:^1.9.0"
7183+
checksum: 10/b23f5e500a79ea22428db43d1a70642d983405c0dd1f95ef59dbdb9ba66afbb4773b334fa0b75bb10b0552fd7534c6b28d4db0a8b528f91975976e70973c0152
7184+
languageName: node
7185+
linkType: hard
7186+
71387187
"colord@npm:^2.9.1":
71397188
version: 2.9.3
71407189
resolution: "colord@npm:2.9.3"
@@ -10483,6 +10532,13 @@ __metadata:
1048310532
languageName: node
1048410533
linkType: hard
1048510534

10535+
"is-arrayish@npm:^0.3.1":
10536+
version: 0.3.2
10537+
resolution: "is-arrayish@npm:0.3.2"
10538+
checksum: 10/81a78d518ebd8b834523e25d102684ee0f7e98637136d3bdc93fd09636350fa06f1d8ca997ea28143d4d13cb1b69c0824f082db0ac13e1ab3311c10ffea60ade
10539+
languageName: node
10540+
linkType: hard
10541+
1048610542
"is-bigint@npm:^1.0.1":
1048710543
version: 1.0.4
1048810544
resolution: "is-bigint@npm:1.0.4"
@@ -16995,6 +17051,7 @@ __metadata:
1699517051
"@mendix/piw-native-utils-internal": "npm:*"
1699617052
"@mendix/piw-utils-internal": "npm:*"
1699717053
"@mendix/pluggable-widgets-tools": "npm:~10.0.1"
17054+
"@react-navigation/bottom-tabs": "npm:6.6.1"
1699817055
eslint: "npm:^7.32.0"
1699917056
react-native-safe-area-context: "npm:4.11.0"
1700017057
languageName: unknown
@@ -17397,6 +17454,15 @@ __metadata:
1739717454
languageName: node
1739817455
linkType: hard
1739917456

17457+
"simple-swizzle@npm:^0.2.2":
17458+
version: 0.2.2
17459+
resolution: "simple-swizzle@npm:0.2.2"
17460+
dependencies:
17461+
is-arrayish: "npm:^0.3.1"
17462+
checksum: 10/c6dffff17aaa383dae7e5c056fbf10cf9855a9f79949f20ee225c04f06ddde56323600e0f3d6797e82d08d006e93761122527438ee9531620031c08c9e0d73cc
17463+
languageName: node
17464+
linkType: hard
17465+
1740017466
"sisteransi@npm:^1.0.5":
1740117467
version: 1.0.5
1740217468
resolution: "sisteransi@npm:1.0.5"
@@ -19315,7 +19381,7 @@ __metadata:
1931519381
languageName: node
1931619382
linkType: hard
1931719383

19318-
"warn-once@npm:0.1.1":
19384+
"warn-once@npm:0.1.1, warn-once@npm:^0.1.0":
1931919385
version: 0.1.1
1932019386
resolution: "warn-once@npm:0.1.1"
1932119387
checksum: 10/e6a5a1f5a8dba7744399743d3cfb571db4c3947897875d4962a7c5b1bf2195ab4518c838cb4cea652e71729f21bba2e98dc75686f5fccde0fabbd894e2ed0c0d

0 commit comments

Comments
 (0)