@terreno/ui 0.11.4-beta.4 → 0.11.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.
- package/dist/Common.d.ts +0 -13
- package/dist/CustomSelectField.js +1 -1
- package/dist/CustomSelectField.js.map +1 -1
- package/dist/DataTable.js +6 -3
- package/dist/DataTable.js.map +1 -1
- package/dist/ErrorBoundary.d.ts +3 -7
- package/dist/ErrorBoundary.js.map +1 -1
- package/dist/Link.d.ts +1 -1
- package/dist/Link.js +10 -1
- package/dist/Link.js.map +1 -1
- package/dist/MarkdownEditorField.js +2 -2
- package/dist/MarkdownEditorField.js.map +1 -1
- package/dist/Modal.js +1 -1
- package/dist/Modal.js.map +1 -1
- package/dist/SelectField.js +2 -2
- package/dist/SelectField.js.map +1 -1
- package/dist/SidebarNavigation.native.d.ts +17 -9
- package/dist/SidebarNavigation.native.js +103 -167
- package/dist/SidebarNavigation.native.js.map +1 -1
- package/dist/icons/MobileIcon.d.ts +2 -1
- package/dist/icons/MobileIcon.js.map +1 -1
- package/package.json +1 -1
- package/src/Common.ts +0 -13
- package/src/CustomSelectField.test.tsx +53 -1
- package/src/CustomSelectField.tsx +1 -1
- package/src/DataTable.tsx +35 -31
- package/src/ErrorBoundary.tsx +5 -5
- package/src/Link.tsx +11 -2
- package/src/MarkdownEditorField.tsx +3 -3
- package/src/Modal.tsx +3 -3
- package/src/SelectField.tsx +2 -2
- package/src/SidebarNavigation.native.tsx +158 -275
- package/src/ToastNotifications.test.tsx +206 -0
- package/src/icons/MobileIcon.tsx +2 -1
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { TabRouter } from "@react-navigation/native";
|
|
3
3
|
import { Navigator, Slot } from "expo-router";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
// update the import path here — this is the only place in the codebase that references it.
|
|
7
|
-
// eslint-disable-next-line import/no-internal-modules
|
|
8
|
-
import { Screen } from "expo-router/build/views/Screen";
|
|
9
|
-
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
10
|
-
import { Animated, Dimensions, PanResponder, Pressable, View, } from "react-native";
|
|
11
|
-
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
4
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
5
|
+
import { Animated, Dimensions, Pressable, View } from "react-native";
|
|
12
6
|
import { Badge } from "./Badge";
|
|
13
7
|
import { SIDEBAR_BADGE_STATUS_MAP } from "./Common";
|
|
14
8
|
import { Icon } from "./Icon";
|
|
15
9
|
import { Text } from "./Text";
|
|
16
10
|
import { useTheme } from "./Theme";
|
|
17
|
-
const
|
|
11
|
+
const DRAWER_WIDTH = 280;
|
|
12
|
+
const ITEM_HEIGHT = 48;
|
|
18
13
|
const ICON_SIZE = 20;
|
|
19
14
|
const BACKDROP_OPACITY = 0.5;
|
|
20
|
-
const ANIMATION_DURATION =
|
|
21
|
-
const DISMISS_THRESHOLD = 0.3;
|
|
15
|
+
const ANIMATION_DURATION = 250;
|
|
22
16
|
const SidebarItem = ({ item, isActive, onPress, itemStyle }) => {
|
|
23
17
|
var _a;
|
|
24
18
|
const { theme } = useTheme();
|
|
@@ -28,192 +22,136 @@ const SidebarItem = ({ item, isActive, onPress, itemStyle }) => {
|
|
|
28
22
|
return (_jsxs(Pressable, { accessibilityLabel: item.label, accessibilityRole: "button", onPress: handlePress, style: [
|
|
29
23
|
{
|
|
30
24
|
alignItems: "center",
|
|
31
|
-
backgroundColor: isActive ? theme.surface.
|
|
25
|
+
backgroundColor: isActive ? theme.surface.secondaryLight : "transparent",
|
|
32
26
|
borderRadius: theme.radius.default,
|
|
33
27
|
flexDirection: "row",
|
|
34
|
-
gap:
|
|
28
|
+
gap: 14,
|
|
35
29
|
height: ITEM_HEIGHT,
|
|
36
|
-
marginHorizontal:
|
|
37
|
-
paddingHorizontal:
|
|
30
|
+
marginHorizontal: 12,
|
|
31
|
+
paddingHorizontal: 14,
|
|
38
32
|
},
|
|
39
33
|
itemStyle,
|
|
40
|
-
], children: [_jsxs(View, { style: { alignItems: "center", justifyContent: "center", width: ICON_SIZE }, children: [_jsx(Icon, { color: isActive ? "primary" : "
|
|
34
|
+
], children: [_jsxs(View, { style: { alignItems: "center", justifyContent: "center", width: ICON_SIZE }, children: [_jsx(Icon, { color: isActive ? "primary" : "secondaryDark", iconName: item.iconName, size: "md" }), Boolean(item.badge) && (_jsx(View, { style: {
|
|
41
35
|
bottom: item.badge === true ? -4 : undefined,
|
|
42
36
|
position: "absolute",
|
|
43
37
|
right: -6,
|
|
44
38
|
top: item.badge === true ? undefined : -4,
|
|
45
|
-
}, children: _jsx(Badge, { maxValue: 99, status: SIDEBAR_BADGE_STATUS_MAP[(_a = item.badgeStatus) !== null && _a !== void 0 ? _a : "error"], value: item.badge === true ? undefined : String(item.badge), variant: item.badge === true ? "iconOnly" : "numberOnly" }) }))] }), _jsx(Text, { bold: isActive, color: isActive ? "primary" : "
|
|
39
|
+
}, children: _jsx(Badge, { maxValue: 99, status: SIDEBAR_BADGE_STATUS_MAP[(_a = item.badgeStatus) !== null && _a !== void 0 ? _a : "error"], value: item.badge === true ? undefined : String(item.badge), variant: item.badge === true ? "iconOnly" : "numberOnly" }) }))] }), _jsx(Text, { bold: isActive, color: isActive ? "primary" : "secondaryDark", size: "md", children: item.label })] }));
|
|
46
40
|
};
|
|
47
|
-
const SidebarHamburger = ({ onOpen }) => (_jsx(Pressable, { accessibilityLabel: "Open navigation menu", accessibilityRole: "button", onPress: onOpen, style: { alignItems: "center", height: 40, justifyContent: "center", width: 40 }, children: _jsx(Icon, { color: "primary", iconName: "bars", size: "md" }) }));
|
|
48
41
|
/**
|
|
49
|
-
* Renders the
|
|
50
|
-
*
|
|
51
|
-
* Supports two modes:
|
|
52
|
-
* - Uncontrolled (default): manages open state internally and shows a floating hamburger button.
|
|
53
|
-
* - Controlled: caller provides isOpen + onOpenChange and owns the trigger (e.g. a header button).
|
|
42
|
+
* Renders the hamburger button, drawer overlay, and children. Works without expo-router Navigator context.
|
|
54
43
|
*/
|
|
55
|
-
export const SidebarNavigationPanel = ({ topItems, bottomItems, activeRoute, onNavigate, children, panelStyle, itemStyle,
|
|
44
|
+
export const SidebarNavigationPanel = ({ topItems, bottomItems, activeRoute, onNavigate, children, panelStyle, itemStyle, }) => {
|
|
56
45
|
const { theme } = useTheme();
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
const [isOpenInternal, setIsOpenInternal] = useState(false);
|
|
60
|
-
const isOpen = isControlled ? isOpenProp : isOpenInternal;
|
|
61
|
-
const sheetHeight = useMemo(() => Dimensions.get("window").height * 0.65, []);
|
|
62
|
-
const slideAnim = useRef(new Animated.Value(sheetHeight)).current;
|
|
46
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
47
|
+
const slideAnim = useRef(new Animated.Value(-DRAWER_WIDTH)).current;
|
|
63
48
|
const backdropAnim = useRef(new Animated.Value(0)).current;
|
|
64
|
-
|
|
65
|
-
// Play open animation whenever isOpen becomes true
|
|
49
|
+
// Animate drawer open/close
|
|
66
50
|
useEffect(() => {
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
toValue: BACKDROP_OPACITY,
|
|
81
|
-
useNativeDriver: true,
|
|
82
|
-
}),
|
|
83
|
-
]).start();
|
|
84
|
-
}, [isOpen, slideAnim, backdropAnim, sheetHeight]);
|
|
85
|
-
// Play close animation then update state
|
|
86
|
-
const handleClose = useCallback(() => {
|
|
87
|
-
Animated.parallel([
|
|
88
|
-
Animated.timing(slideAnim, {
|
|
89
|
-
duration: ANIMATION_DURATION,
|
|
90
|
-
toValue: sheetHeight,
|
|
91
|
-
useNativeDriver: true,
|
|
92
|
-
}),
|
|
93
|
-
Animated.timing(backdropAnim, {
|
|
94
|
-
duration: ANIMATION_DURATION,
|
|
95
|
-
toValue: 0,
|
|
96
|
-
useNativeDriver: true,
|
|
97
|
-
}),
|
|
98
|
-
]).start(() => {
|
|
99
|
-
if (isControlled) {
|
|
100
|
-
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(false);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
setIsOpenInternal(false);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}, [isControlled, onOpenChange, slideAnim, backdropAnim, sheetHeight]);
|
|
107
|
-
const handleOpen = useCallback(() => {
|
|
108
|
-
if (isControlled) {
|
|
109
|
-
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(true);
|
|
51
|
+
if (isOpen) {
|
|
52
|
+
Animated.parallel([
|
|
53
|
+
Animated.timing(slideAnim, {
|
|
54
|
+
duration: ANIMATION_DURATION,
|
|
55
|
+
toValue: 0,
|
|
56
|
+
useNativeDriver: true,
|
|
57
|
+
}),
|
|
58
|
+
Animated.timing(backdropAnim, {
|
|
59
|
+
duration: ANIMATION_DURATION,
|
|
60
|
+
toValue: BACKDROP_OPACITY,
|
|
61
|
+
useNativeDriver: true,
|
|
62
|
+
}),
|
|
63
|
+
]).start();
|
|
110
64
|
}
|
|
111
65
|
else {
|
|
112
|
-
|
|
66
|
+
Animated.parallel([
|
|
67
|
+
Animated.timing(slideAnim, {
|
|
68
|
+
duration: ANIMATION_DURATION,
|
|
69
|
+
toValue: -DRAWER_WIDTH,
|
|
70
|
+
useNativeDriver: true,
|
|
71
|
+
}),
|
|
72
|
+
Animated.timing(backdropAnim, {
|
|
73
|
+
duration: ANIMATION_DURATION,
|
|
74
|
+
toValue: 0,
|
|
75
|
+
useNativeDriver: true,
|
|
76
|
+
}),
|
|
77
|
+
]).start();
|
|
113
78
|
}
|
|
114
|
-
}, [
|
|
79
|
+
}, [isOpen, slideAnim, backdropAnim]);
|
|
80
|
+
const handleOpen = useCallback(() => setIsOpen(true), []);
|
|
81
|
+
const handleClose = useCallback(() => setIsOpen(false), []);
|
|
115
82
|
const handleNavigate = useCallback((route) => {
|
|
116
|
-
|
|
83
|
+
setIsOpen(false);
|
|
117
84
|
onNavigate(route);
|
|
118
|
-
}, [
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
onPanResponderGrant: () => {
|
|
122
|
-
slideAnim.stopAnimation((value) => {
|
|
123
|
-
capturedSlideValue.current = value;
|
|
124
|
-
});
|
|
125
|
-
backdropAnim.stopAnimation();
|
|
126
|
-
},
|
|
127
|
-
onPanResponderMove: (_, { dy }) => {
|
|
128
|
-
const next = capturedSlideValue.current + dy;
|
|
129
|
-
if (next < 0) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
slideAnim.setValue(next);
|
|
133
|
-
backdropAnim.setValue(BACKDROP_OPACITY * Math.max(0, 1 - next / sheetHeight));
|
|
134
|
-
},
|
|
135
|
-
onPanResponderRelease: (_, { dy, vy }) => {
|
|
136
|
-
if (dy > sheetHeight * DISMISS_THRESHOLD || vy > 0.5) {
|
|
137
|
-
handleClose();
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
Animated.parallel([
|
|
141
|
-
Animated.timing(slideAnim, {
|
|
142
|
-
duration: 200,
|
|
143
|
-
toValue: 0,
|
|
144
|
-
useNativeDriver: true,
|
|
145
|
-
}),
|
|
146
|
-
Animated.timing(backdropAnim, {
|
|
147
|
-
duration: 200,
|
|
148
|
-
toValue: BACKDROP_OPACITY,
|
|
149
|
-
useNativeDriver: true,
|
|
150
|
-
}),
|
|
151
|
-
]).start();
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
}), [slideAnim, backdropAnim, sheetHeight, handleClose]);
|
|
155
|
-
return (_jsxs(View, { style: { flex: 1 }, children: [children, !isControlled && (_jsx(Pressable, { accessibilityLabel: "Open navigation menu", accessibilityRole: "button", onPress: handleOpen, style: {
|
|
85
|
+
}, [onNavigate]);
|
|
86
|
+
const screenHeight = Dimensions.get("window").height;
|
|
87
|
+
return (_jsxs(View, { style: { flex: 1 }, children: [children, _jsx(Pressable, { accessibilityLabel: "Open navigation menu", accessibilityRole: "button", onPress: handleOpen, style: {
|
|
156
88
|
alignItems: "center",
|
|
89
|
+
backgroundColor: theme.surface.primary,
|
|
90
|
+
borderRadius: theme.radius.full,
|
|
91
|
+
elevation: 4,
|
|
157
92
|
height: 44,
|
|
158
93
|
justifyContent: "center",
|
|
159
94
|
left: 16,
|
|
160
95
|
position: "absolute",
|
|
161
|
-
|
|
96
|
+
shadowColor: "#000",
|
|
97
|
+
shadowOffset: { height: 2, width: 0 },
|
|
98
|
+
shadowOpacity: 0.25,
|
|
99
|
+
shadowRadius: 4,
|
|
100
|
+
top: 16,
|
|
162
101
|
width: 44,
|
|
163
102
|
zIndex: 10,
|
|
164
|
-
}, children: _jsx(Icon, { color: "
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
height: 44,
|
|
201
|
-
justifyContent: "space-between",
|
|
202
|
-
paddingHorizontal: 16,
|
|
203
|
-
}, children: [_jsxs(View, { style: { alignItems: "center", flexDirection: "row", gap: 12 }, children: [_jsx(SidebarHamburger, { onOpen: onOpen }), headerLeft === null || headerLeft === void 0 ? void 0 : headerLeft({}), Boolean(title) && (_jsx(Text, { bold: true, size: "lg", children: title }))] }), Boolean(headerRight) && _jsx(View, { style: { alignItems: "flex-end" }, children: headerRight === null || headerRight === void 0 ? void 0 : headerRight({}) })] }) }));
|
|
103
|
+
}, children: _jsx(Icon, { color: "inverted", iconName: "bars", size: "md" }) }), isOpen && (_jsx(Pressable, { onPress: handleClose, style: {
|
|
104
|
+
bottom: 0,
|
|
105
|
+
left: 0,
|
|
106
|
+
position: "absolute",
|
|
107
|
+
right: 0,
|
|
108
|
+
top: 0,
|
|
109
|
+
zIndex: 100,
|
|
110
|
+
}, children: _jsx(Animated.View, { style: {
|
|
111
|
+
backgroundColor: "#000",
|
|
112
|
+
flex: 1,
|
|
113
|
+
opacity: backdropAnim,
|
|
114
|
+
} }) })), _jsxs(Animated.View, { style: [
|
|
115
|
+
{
|
|
116
|
+
backgroundColor: theme.surface.base,
|
|
117
|
+
borderColor: theme.border.default,
|
|
118
|
+
borderRightWidth: 1,
|
|
119
|
+
height: screenHeight,
|
|
120
|
+
justifyContent: "space-between",
|
|
121
|
+
left: 0,
|
|
122
|
+
paddingBottom: 32,
|
|
123
|
+
paddingTop: 20,
|
|
124
|
+
position: "absolute",
|
|
125
|
+
top: 0,
|
|
126
|
+
transform: [{ translateX: slideAnim }],
|
|
127
|
+
width: DRAWER_WIDTH,
|
|
128
|
+
zIndex: 200,
|
|
129
|
+
},
|
|
130
|
+
panelStyle,
|
|
131
|
+
], children: [_jsxs(View, { children: [_jsx(Pressable, { accessibilityLabel: "Close navigation menu", accessibilityRole: "button", onPress: handleClose, style: {
|
|
132
|
+
alignItems: "center",
|
|
133
|
+
alignSelf: "flex-end",
|
|
134
|
+
height: 40,
|
|
135
|
+
justifyContent: "center",
|
|
136
|
+
marginRight: 12,
|
|
137
|
+
width: 40,
|
|
138
|
+
}, children: _jsx(Icon, { color: "secondaryDark", iconName: "xmark", size: "md" }) }), _jsx(View, { style: { gap: 4, marginTop: 8 }, children: topItems.map((item) => (_jsx(SidebarItem, { isActive: activeRoute === item.route, item: item, itemStyle: itemStyle, onPress: handleNavigate }, item.route))) })] }), _jsx(View, { style: { gap: 4 }, children: bottomItems.map((item) => (_jsx(SidebarItem, { isActive: activeRoute === item.route, item: item, onPress: handleNavigate }, item.route))) })] })] }));
|
|
204
139
|
};
|
|
205
|
-
/**
|
|
206
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Reads active route from Navigator context and renders the drawer + Slot.
|
|
142
|
+
*/
|
|
143
|
+
const SidebarNavigatorContent = ({ topItems, bottomItems, onNavigate, panelStyle, itemStyle }) => {
|
|
144
|
+
var _a;
|
|
207
145
|
const { state, navigation } = Navigator.useContext();
|
|
208
|
-
const activeRoute = state.routes[state.index];
|
|
146
|
+
const activeRoute = (_a = state.routes[state.index]) === null || _a === void 0 ? void 0 : _a.name;
|
|
209
147
|
const handleNavigate = useCallback((route) => {
|
|
210
148
|
navigation.navigate(route);
|
|
211
149
|
onNavigate === null || onNavigate === void 0 ? void 0 : onNavigate(route);
|
|
212
150
|
}, [navigation, onNavigate]);
|
|
213
|
-
return (_jsx(SidebarNavigationPanel, { activeRoute: activeRoute
|
|
151
|
+
return (_jsx(SidebarNavigationPanel, { activeRoute: activeRoute, bottomItems: bottomItems, itemStyle: itemStyle, onNavigate: handleNavigate, panelStyle: panelStyle, topItems: topItems, children: _jsx(Slot, {}) }));
|
|
214
152
|
};
|
|
215
153
|
/**
|
|
216
|
-
* Custom expo-router navigator with a
|
|
154
|
+
* Custom expo-router navigator with a hamburger-triggered slide-in drawer.
|
|
217
155
|
* Use in _layout.tsx files:
|
|
218
156
|
*
|
|
219
157
|
* ```tsx
|
|
@@ -227,9 +165,7 @@ const SidebarNavigatorContent = ({ topItems, bottomItems, isOpen, onOpenChange,
|
|
|
227
165
|
* }
|
|
228
166
|
* ```
|
|
229
167
|
*/
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
return (_jsxs(Navigator, { initialRouteName: initialRouteName, router: TabRouter, screenOptions: screenOptions, children: [_jsxs(View, { style: { flex: 1 }, children: [_jsx(SidebarHeader, { onOpen: () => setIsSheetOpen(true) }), _jsx(SidebarNavigatorContent, { bottomItems: bottomItems, isOpen: isSheetOpen, itemStyle: itemStyle, onNavigate: onNavigate, onOpenChange: setIsSheetOpen, panelStyle: panelStyle, topItems: topItems })] }), children] }));
|
|
168
|
+
export const SidebarNavigation = ({ topItems, bottomItems, onNavigate, initialRouteName, screenOptions, panelStyle, itemStyle, }) => {
|
|
169
|
+
return (_jsx(Navigator, { initialRouteName: initialRouteName, router: TabRouter, screenOptions: screenOptions, children: _jsx(SidebarNavigatorContent, { bottomItems: bottomItems, itemStyle: itemStyle, onNavigate: onNavigate, panelStyle: panelStyle, topItems: topItems }) }));
|
|
233
170
|
};
|
|
234
|
-
export const SidebarNavigation = Object.assign(SidebarNavigationBase, { Screen });
|
|
235
171
|
//# sourceMappingURL=SidebarNavigation.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarNavigation.native.js","sourceRoot":"","sources":["../src/SidebarNavigation.native.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SidebarNavigation.native.js","sourceRoot":"","sources":["../src/SidebarNavigation.native.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import type React from "react";
|
|
1
2
|
import type { CustomSvgProps } from "../Common";
|
|
2
|
-
export declare const MobileIcon: ({ doNotDisturb, ...props }: CustomSvgProps) =>
|
|
3
|
+
export declare const MobileIcon: ({ doNotDisturb, ...props }: CustomSvgProps) => React.ReactElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileIcon.js","sourceRoot":"","sources":["../../src/icons/MobileIcon.tsx"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"MobileIcon.js","sourceRoot":"","sources":["../../src/icons/MobileIcon.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,GAAG,EAAE,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAI3C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAwC,EAAsB,EAAE;QAAhE,EAAC,YAAY,OAA2B,EAAtB,KAAK,cAAvB,gBAAwB,CAAD;IAChD,OAAO,CACL,MAAC,GAAG,kBAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,IAAM,KAAK,eACnE,KAAC,IAAI,IAAC,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,GAAG,EACtC,KAAC,IAAI,IACH,CAAC,EAAC,iMAAiM,EACnM,IAAI,EAAC,SAAS,EACd,MAAM,EAAC,MAAM,EACb,WAAW,EAAE,CAAC,GACd,EACF,KAAC,IAAI,IACH,CAAC,EAAC,0HAA0H,EAC5H,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,MAAM,GACb,EACD,YAAY,IAAI,CACf,8BACE,KAAC,IAAI,IACH,CAAC,EAAC,oBAAoB,EACtB,MAAM,EAAC,MAAM,EACb,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,GACd,EACF,KAAC,IAAI,IACH,CAAC,EAAC,oBAAoB,EACtB,MAAM,EAAC,SAAS,EAChB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,GACd,IACD,CACJ,KACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
package/src/Common.ts
CHANGED
|
@@ -3044,17 +3044,4 @@ export interface SidebarNavigationPanelProps {
|
|
|
3044
3044
|
* Additional styles applied to each navigation item.
|
|
3045
3045
|
*/
|
|
3046
3046
|
itemStyle?: StyleProp<ViewStyle>;
|
|
3047
|
-
/**
|
|
3048
|
-
* Controlled open state. When provided, the panel hides its internal hamburger
|
|
3049
|
-
* button and defers open/close to the caller.
|
|
3050
|
-
*
|
|
3051
|
-
* @platform mobile — the web sidebar is always visible; this prop is ignored on web.
|
|
3052
|
-
*/
|
|
3053
|
-
isOpen?: boolean;
|
|
3054
|
-
/**
|
|
3055
|
-
* Called when the panel requests an open or close (controlled mode only).
|
|
3056
|
-
*
|
|
3057
|
-
* @platform mobile — the web sidebar is always visible; this prop is ignored on web.
|
|
3058
|
-
*/
|
|
3059
|
-
onOpenChange?: (isOpen: boolean) => void;
|
|
3060
3047
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {describe, expect, it} from "bun:test";
|
|
1
|
+
import {describe, expect, it, mock} from "bun:test";
|
|
2
|
+
import {act, fireEvent} from "@testing-library/react-native";
|
|
2
3
|
|
|
3
4
|
import {CustomSelectField} from "./CustomSelectField";
|
|
4
5
|
import {renderWithTheme} from "./test-utils";
|
|
@@ -82,4 +83,55 @@ describe("CustomSelectField", () => {
|
|
|
82
83
|
);
|
|
83
84
|
expect(toJSON()).toMatchSnapshot();
|
|
84
85
|
});
|
|
86
|
+
|
|
87
|
+
it("shows custom input when 'custom' is selected from dropdown", async () => {
|
|
88
|
+
const onChange = mock(() => {});
|
|
89
|
+
const {getByTestId, queryByPlaceholderText} = renderWithTheme(
|
|
90
|
+
<CustomSelectField onChange={onChange} options={defaultOptions} value="a" />
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
const picker = getByTestId("ios_picker");
|
|
94
|
+
await act(async () => {
|
|
95
|
+
fireEvent(picker, "onValueChange", "custom", 4);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// onChange should be called with empty string when custom is selected
|
|
99
|
+
expect(onChange).toHaveBeenCalledWith("");
|
|
100
|
+
|
|
101
|
+
// The custom input field should now be visible
|
|
102
|
+
expect(queryByPlaceholderText("None selected")).toBeTruthy();
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it("hides custom input and updates value when a non-custom option is selected after custom", async () => {
|
|
106
|
+
const onChange = mock(() => {});
|
|
107
|
+
// Start with a custom value so custom input is already shown
|
|
108
|
+
const {getByTestId, queryByPlaceholderText} = renderWithTheme(
|
|
109
|
+
<CustomSelectField onChange={onChange} options={defaultOptions} value="my-custom-value" />
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
// Custom input should be visible because value is not in options
|
|
113
|
+
expect(queryByPlaceholderText("None selected")).toBeTruthy();
|
|
114
|
+
|
|
115
|
+
const picker = getByTestId("ios_picker");
|
|
116
|
+
await act(async () => {
|
|
117
|
+
fireEvent(picker, "onValueChange", "a", 1);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// onChange should be called with the option value
|
|
121
|
+
expect(onChange).toHaveBeenCalledWith("a");
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it("calls onChange with selected value for a regular option", async () => {
|
|
125
|
+
const onChange = mock(() => {});
|
|
126
|
+
const {getByTestId} = renderWithTheme(
|
|
127
|
+
<CustomSelectField onChange={onChange} options={defaultOptions} value="" />
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
const picker = getByTestId("ios_picker");
|
|
131
|
+
await act(async () => {
|
|
132
|
+
fireEvent(picker, "onValueChange", "b", 2);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
expect(onChange).toHaveBeenCalledWith("b");
|
|
136
|
+
});
|
|
85
137
|
});
|
package/src/DataTable.tsx
CHANGED
|
@@ -263,37 +263,41 @@ const DataTableHeaderCell: FC<DataTableHeaderCellProps> = ({
|
|
|
263
263
|
}),
|
|
264
264
|
}}
|
|
265
265
|
>
|
|
266
|
-
{
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
266
|
+
{[
|
|
267
|
+
Boolean(column.title) ? (
|
|
268
|
+
<TableTitle align="left" key="data-table-header-title" title={column.title!} />
|
|
269
|
+
) : null,
|
|
270
|
+
<View key="data-table-header-tools" style={{alignItems: "center", flexDirection: "row"}}>
|
|
271
|
+
{column.infoModalText && (
|
|
272
|
+
<InfoModalIcon infoModalChildren={<Markdown>{column.infoModalText}</Markdown>} />
|
|
273
|
+
)}
|
|
274
|
+
{column.sortable && (
|
|
275
|
+
<Pressable hitSlop={16} onPress={() => onSort(index)}>
|
|
276
|
+
<View
|
|
277
|
+
style={{
|
|
278
|
+
alignItems: "center",
|
|
279
|
+
backgroundColor: sort ? theme.surface.primary : theme.surface.neutralLight,
|
|
280
|
+
borderRadius: theme.radius.rounded,
|
|
281
|
+
height: 16,
|
|
282
|
+
justifyContent: "center",
|
|
283
|
+
marginLeft: 8,
|
|
284
|
+
width: 16,
|
|
285
|
+
}}
|
|
286
|
+
>
|
|
287
|
+
<FontAwesome6
|
|
288
|
+
color={theme.text.inverted}
|
|
289
|
+
name={
|
|
290
|
+
sort === "asc" ? "arrow-down" : sort === "desc" ? "arrow-up" : "arrows-up-down"
|
|
291
|
+
}
|
|
292
|
+
selectable={undefined}
|
|
293
|
+
size={10}
|
|
294
|
+
solid
|
|
295
|
+
/>
|
|
296
|
+
</View>
|
|
297
|
+
</Pressable>
|
|
298
|
+
)}
|
|
299
|
+
</View>,
|
|
300
|
+
]}
|
|
297
301
|
</View>
|
|
298
302
|
);
|
|
299
303
|
};
|
package/src/ErrorBoundary.tsx
CHANGED
|
@@ -8,14 +8,14 @@ interface State {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export class ErrorBoundary extends React.Component<ErrorBoundaryProps, State> {
|
|
11
|
-
state = {error: undefined};
|
|
11
|
+
state: State = {error: undefined};
|
|
12
12
|
|
|
13
|
-
static getDerivedStateFromError(error: Error) {
|
|
13
|
+
static getDerivedStateFromError(error: Error): State {
|
|
14
14
|
console.warn("[ErrorBoundary] Derived error", error);
|
|
15
15
|
return {error};
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
componentDidCatch(error: Error, info: {componentStack: string}) {
|
|
18
|
+
componentDidCatch(error: Error, info: {componentStack: string}): void {
|
|
19
19
|
console.warn("[ErrorBoundary] Caught error", error);
|
|
20
20
|
|
|
21
21
|
if (this.props.onError) {
|
|
@@ -23,11 +23,11 @@ export class ErrorBoundary extends React.Component<ErrorBoundaryProps, State> {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
resetError = () => {
|
|
26
|
+
resetError = (): void => {
|
|
27
27
|
this.setState({error: undefined});
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
render() {
|
|
30
|
+
render(): React.ReactNode {
|
|
31
31
|
const error = this.state.error;
|
|
32
32
|
if (error) {
|
|
33
33
|
return <ErrorPage error={error} resetError={this.resetError} />;
|
package/src/Link.tsx
CHANGED
|
@@ -4,15 +4,24 @@ import {Linking, Pressable} from "react-native";
|
|
|
4
4
|
import type {LinkProps} from "./Common";
|
|
5
5
|
import {Text} from "./Text";
|
|
6
6
|
|
|
7
|
-
export const Link = ({text, href, onClick}
|
|
7
|
+
export const Link: React.FC<LinkProps> = ({text, href, onClick}) => {
|
|
8
8
|
if (!href && !onClick) {
|
|
9
9
|
console.error("Link component requires either href or onClick prop");
|
|
10
|
+
return null;
|
|
10
11
|
}
|
|
11
12
|
return (
|
|
12
13
|
<Pressable
|
|
13
14
|
aria-role="button"
|
|
14
15
|
hitSlop={20}
|
|
15
|
-
onPress={() =>
|
|
16
|
+
onPress={() => {
|
|
17
|
+
if (onClick) {
|
|
18
|
+
onClick();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (href) {
|
|
22
|
+
void Linking.openURL(href);
|
|
23
|
+
}
|
|
24
|
+
}}
|
|
16
25
|
>
|
|
17
26
|
<Text color="link" skipLinking underline>
|
|
18
27
|
{text}
|