@terreno/ui 0.10.0 → 0.11.1

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 (74) hide show
  1. package/dist/Banner.js +7 -5
  2. package/dist/Banner.js.map +1 -1
  3. package/dist/Common.d.ts +3 -1
  4. package/dist/Common.js.map +1 -1
  5. package/dist/TextFieldNumberActionSheet.d.ts +1 -1
  6. package/dist/Toast.d.ts +1 -1
  7. package/dist/Toast.js +2 -2
  8. package/dist/Toast.js.map +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/package.json +2 -1
  11. package/src/ActionSheet.test.tsx +262 -3
  12. package/src/AddressField.test.tsx +50 -0
  13. package/src/Banner.test.tsx +65 -0
  14. package/src/Banner.tsx +7 -5
  15. package/src/Box.test.tsx +218 -0
  16. package/src/Button.test.tsx +71 -0
  17. package/src/Common.ts +3 -1
  18. package/src/ConsentFormScreen.test.tsx +167 -0
  19. package/src/ConsentNavigator.test.tsx +206 -0
  20. package/src/DecimalRangeActionSheet.test.tsx +53 -2
  21. package/src/EmailField.test.tsx +81 -0
  22. package/src/EmojiSelector.test.tsx +262 -1
  23. package/src/HeightActionSheet.test.tsx +57 -2
  24. package/src/InfoModalIcon.test.tsx +16 -0
  25. package/src/InfoTooltipButton.test.tsx +53 -1
  26. package/src/MobileAddressAutoComplete.test.tsx +137 -7
  27. package/src/Modal.test.tsx +188 -0
  28. package/src/NumberPickerActionSheet.test.tsx +59 -2
  29. package/src/Page.test.tsx +162 -1
  30. package/src/Pagination.test.tsx +16 -0
  31. package/src/PhoneNumberField.test.tsx +46 -9
  32. package/src/PickerSelect.test.tsx +230 -0
  33. package/src/SegmentedControl.test.tsx +38 -0
  34. package/src/SelectBadge.test.tsx +52 -1
  35. package/src/SideDrawer.test.tsx +69 -0
  36. package/src/Signature.test.tsx +42 -5
  37. package/src/SignatureField.test.tsx +35 -0
  38. package/src/Slider.test.tsx +59 -0
  39. package/src/Spinner.test.tsx +6 -0
  40. package/src/SplitPage.test.tsx +228 -2
  41. package/src/TapToEdit.test.tsx +171 -1
  42. package/src/TerrenoProvider.test.tsx +42 -2
  43. package/src/TextFieldNumberActionSheet.tsx +1 -1
  44. package/src/Theme.test.tsx +118 -28
  45. package/src/Toast.test.tsx +95 -2
  46. package/src/Toast.tsx +3 -3
  47. package/src/Tooltip.test.tsx +204 -1
  48. package/src/UnifiedAddressAutoComplete.test.tsx +38 -19
  49. package/src/UserInactivity.test.tsx +73 -1
  50. package/src/Utilities.test.tsx +190 -2
  51. package/src/WebAddressAutocomplete.test.tsx +148 -1
  52. package/src/__snapshots__/ActionSheet.test.tsx.snap +1736 -0
  53. package/src/__snapshots__/Button.test.tsx.snap +68 -0
  54. package/src/__snapshots__/EmojiSelector.test.tsx.snap +1363 -0
  55. package/src/__snapshots__/InfoTooltipButton.test.tsx.snap +72 -3
  56. package/src/__snapshots__/MobileAddressAutoComplete.test.tsx.snap +60 -9
  57. package/src/__snapshots__/Modal.test.tsx.snap +181 -0
  58. package/src/__snapshots__/Page.test.tsx.snap +48 -2
  59. package/src/__snapshots__/PhoneNumberField.test.tsx.snap +0 -93
  60. package/src/__snapshots__/PickerSelect.test.tsx.snap +706 -0
  61. package/src/__snapshots__/SideDrawer.test.tsx.snap +533 -1399
  62. package/src/__snapshots__/Signature.test.tsx.snap +0 -3
  63. package/src/__snapshots__/SplitPage.test.tsx.snap +970 -0
  64. package/src/__snapshots__/UnifiedAddressAutoComplete.test.tsx.snap +220 -4
  65. package/src/__snapshots__/WebAddressAutocomplete.test.tsx.snap +93 -0
  66. package/src/bunSetup.ts +204 -121
  67. package/src/index.tsx +2 -2
  68. package/src/table/TableHeaderCell.test.tsx +142 -0
  69. package/src/table/TableRow.test.tsx +33 -0
  70. package/src/table/__snapshots__/TableRow.test.tsx.snap +403 -0
  71. package/src/table/tableContext.test.tsx +96 -0
  72. package/src/test-utils.tsx +1 -1
  73. package/src/useConsentForms.test.ts +130 -0
  74. package/src/useSubmitConsent.test.ts +64 -0
package/dist/Banner.js CHANGED
@@ -39,9 +39,9 @@ const BannerButton = ({ loading: propsLoading, buttonText, buttonIconName, butto
39
39
  marginRight: 0,
40
40
  }, children: _jsx(Icon, { iconName: buttonIconName, type: "solid" }) })), _jsx(NativeText, { style: { fontSize: 12 }, children: buttonText })] }), Boolean(loading) && (_jsx(Box, { marginLeft: 2, children: _jsx(ActivityIndicator, { size: "small" }) }))] }) }));
41
41
  };
42
- function getKey(id) {
42
+ const getKey = (id) => {
43
43
  return `@TerrenoUI:${id}`;
44
- }
44
+ };
45
45
  export const hideBanner = (id) => {
46
46
  console.debug(`[banner] Hiding ${getKey(id)} `);
47
47
  return Unifier.storage.setItem(getKey(id), "true");
@@ -58,9 +58,9 @@ export const Banner = (props) => {
58
58
  bgColor = "warning";
59
59
  }
60
60
  const [show, setShow] = useState(true);
61
- // Load seen from async storage.
61
+ // Load seen from async storage (only when id is provided).
62
62
  useEffect(() => {
63
- if (dismissible) {
63
+ if (dismissible && id) {
64
64
  void Unifier.storage.getItem(getKey(id)).then((isSeen) => {
65
65
  console.debug(`[banner] ${getKey(id)} seen? ${isSeen}`);
66
66
  setShow(!isSeen);
@@ -71,7 +71,9 @@ export const Banner = (props) => {
71
71
  if (!dismissible) {
72
72
  return;
73
73
  }
74
- await hideBanner(id);
74
+ if (id) {
75
+ await hideBanner(id);
76
+ }
75
77
  setShow(false);
76
78
  };
77
79
  if (!show) {
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"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"}
package/dist/Common.d.ts CHANGED
@@ -1183,8 +1183,10 @@ export interface BannerButtonProps {
1183
1183
  export interface BannerPropsBase {
1184
1184
  /**
1185
1185
  * Used to identify if banner has been dismissed by the user.
1186
+ * When provided, dismissal state is persisted to AsyncStorage.
1187
+ * When omitted, dismissal is ephemeral (resets on remount).
1186
1188
  */
1187
- id: string;
1189
+ id?: string;
1188
1190
  /**
1189
1191
  * The text to display in the main body of the banner.
1190
1192
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAqXA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,WAAW,CAAC,OAAyB,CAAC,CAAC;AAChD,CAAC;AAqBD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;IAClD,OAAO;QACL,KAAK,EAAE,EAAE;QACT,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,CAAC;KACN,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAqTF,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,EAAE;IACR,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,CAAC;IACL,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,GAAG;IACZ,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAsnED;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC"}
1
+ {"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAqXA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,WAAW,CAAC,OAAyB,CAAC,CAAC;AAChD,CAAC;AAqBD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;IAClD,OAAO;QACL,KAAK,EAAE,EAAE;QACT,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,CAAC;KACN,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAqTF,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,EAAE;IACR,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,CAAC;IACL,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,GAAG;IACZ,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAwnED;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC"}
@@ -2,6 +2,6 @@ import React from "react";
2
2
  import type { TextFieldPickerActionSheetProps } from "./Common";
3
3
  type NumberPickerActionSheetState = {};
4
4
  export declare class NumberPickerActionSheet extends React.Component<TextFieldPickerActionSheetProps, NumberPickerActionSheetState> {
5
- render(): import("react/jsx-runtime").JSX.Element;
5
+ render(): React.ReactElement;
6
6
  }
7
7
  export {};
package/dist/Toast.d.ts CHANGED
@@ -10,7 +10,7 @@ type UseToastVariantOptions = {
10
10
  type UseToastOptions = {
11
11
  variant?: ToastProps["variant"];
12
12
  } & UseToastVariantOptions;
13
- export declare function useToast(): {
13
+ export declare const useToast: () => {
14
14
  hide: (id: string) => void;
15
15
  success: (title: string, options?: UseToastVariantOptions) => string;
16
16
  info: (title: string, options?: UseToastVariantOptions) => string;
package/dist/Toast.js CHANGED
@@ -7,7 +7,7 @@ import { useTheme } from "./Theme";
7
7
  import { useToastNotifications } from "./ToastNotifications";
8
8
  import { isAPIError, printAPIError } from "./Utilities";
9
9
  const TOAST_DURATION_MS = 3 * 1000;
10
- export function useToast() {
10
+ export const useToast = () => {
11
11
  const toast = useToastNotifications();
12
12
  const show = (title, options) => {
13
13
  if (!(toast === null || toast === void 0 ? void 0 : toast.show)) {
@@ -54,7 +54,7 @@ export function useToast() {
54
54
  return show(title, Object.assign(Object.assign({}, options), { variant: "warning" }));
55
55
  },
56
56
  };
57
- }
57
+ };
58
58
  // TODO: Support secondary version of Toast.
59
59
  // TODO: Support dismissible version of Toast. Currently only persistent are dismissible.
60
60
  export const Toast = ({ title, variant = "info", secondary, size = "sm", onDismiss, persistent,
package/dist/Toast.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../src/Toast.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../src/Toast.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -249,8 +249,8 @@ export interface LayoutRoot {
249
249
  * Set the root
250
250
  */
251
251
  root: Layout;
252
- modals?: any;
253
- overlays?: any;
252
+ modals?: Layout[];
253
+ overlays?: Layout[];
254
254
  }
255
255
  export interface ExternalComponent {
256
256
  /**
package/package.json CHANGED
@@ -134,7 +134,8 @@
134
134
  "local": "tsc-watch --onSuccess \"cp -a dist/* ../flourish/node_modules/@terreno/ui/dist\"",
135
135
  "test": "TZ=America/New_York bun test --watch",
136
136
  "test:ci": "TZ=America/New_York bun test",
137
+ "test:coverage": "TZ=America/New_York bun run ../scripts/check-coverage.ts",
137
138
  "types": "bun typedoc"
138
139
  },
139
- "version": "0.10.0"
140
+ "version": "0.11.1"
140
141
  }
@@ -1,11 +1,20 @@
1
- import {describe, expect, it} from "bun:test";
2
- import {render} from "@testing-library/react-native";
1
+ import {beforeAll, describe, expect, it, mock} from "bun:test";
2
+ import {act, render} from "@testing-library/react-native";
3
3
  import {createRef} from "react";
4
4
  import {Text} from "react-native";
5
5
 
6
- import {ActionSheet, getDeviceHeight, getElevation} from "./ActionSheet";
6
+ import {ActionSheet, getDeviceHeight, getElevation, waitAsync} from "./ActionSheet";
7
7
  import {ThemeProvider} from "./Theme";
8
8
 
9
+ beforeAll(() => {
10
+ (global as any).requestAnimationFrame = (callback: FrameRequestCallback) => {
11
+ return setTimeout(() => callback(Date.now()), 0) as unknown as number;
12
+ };
13
+ (global as any).cancelAnimationFrame = (id: number) => {
14
+ clearTimeout(id);
15
+ };
16
+ });
17
+
9
18
  describe("ActionSheet", () => {
10
19
  it("component is defined", () => {
11
20
  expect(ActionSheet).toBeDefined();
@@ -48,6 +57,249 @@ describe("ActionSheet", () => {
48
57
  expect(toJSON()).toMatchSnapshot();
49
58
  });
50
59
 
60
+ it("show() sets modalVisible to true", () => {
61
+ const ref = createRef<ActionSheet>();
62
+ render(
63
+ <ThemeProvider>
64
+ <ActionSheet ref={ref}>
65
+ <Text>Content</Text>
66
+ </ActionSheet>
67
+ </ThemeProvider>
68
+ );
69
+ act(() => {
70
+ ref.current?.show();
71
+ });
72
+ expect(ref.current?.state.modalVisible).toBe(true);
73
+ });
74
+
75
+ it("show() followed by hide() calls hide animation path", () => {
76
+ const ref = createRef<ActionSheet>();
77
+ render(
78
+ <ThemeProvider>
79
+ <ActionSheet closeAnimationDuration={1} ref={ref}>
80
+ <Text>Content</Text>
81
+ </ActionSheet>
82
+ </ThemeProvider>
83
+ );
84
+ act(() => {
85
+ ref.current?.show();
86
+ });
87
+ expect(ref.current?.state.modalVisible).toBe(true);
88
+ act(() => {
89
+ ref.current?.hide();
90
+ });
91
+ // hide() does not immediately flip modalVisible (it animates first)
92
+ expect(ref.current).toBeTruthy();
93
+ });
94
+
95
+ it("setModalVisible does nothing when state already matches", () => {
96
+ const ref = createRef<ActionSheet>();
97
+ render(
98
+ <ThemeProvider>
99
+ <ActionSheet ref={ref}>
100
+ <Text>Content</Text>
101
+ </ActionSheet>
102
+ </ThemeProvider>
103
+ );
104
+ // modal starts hidden, call hide again (setModalVisible(false)) - state stays hidden
105
+ act(() => {
106
+ ref.current?.hide();
107
+ });
108
+ expect(ref.current?.state.modalVisible).toBe(false);
109
+ });
110
+
111
+ it("snapToOffset does not throw when called before layout", () => {
112
+ const ref = createRef<ActionSheet>();
113
+ render(
114
+ <ThemeProvider>
115
+ <ActionSheet ref={ref}>
116
+ <Text>Content</Text>
117
+ </ActionSheet>
118
+ </ThemeProvider>
119
+ );
120
+ expect(() => ref.current?.snapToOffset(100)).not.toThrow();
121
+ });
122
+
123
+ it("renders with elevation prop", () => {
124
+ const ref = createRef<ActionSheet>();
125
+ const {toJSON} = render(
126
+ <ThemeProvider>
127
+ <ActionSheet elevation={10} ref={ref}>
128
+ <Text>Elevated</Text>
129
+ </ActionSheet>
130
+ </ThemeProvider>
131
+ );
132
+ expect(toJSON()).toMatchSnapshot();
133
+ });
134
+
135
+ it("renders with indicator color", () => {
136
+ const ref = createRef<ActionSheet>();
137
+ const {toJSON} = render(
138
+ <ThemeProvider>
139
+ <ActionSheet indicatorColor="red" ref={ref}>
140
+ <Text>Indicator</Text>
141
+ </ActionSheet>
142
+ </ThemeProvider>
143
+ );
144
+ expect(toJSON()).toMatchSnapshot();
145
+ });
146
+
147
+ it("renders with initialOffsetFromBottom", () => {
148
+ const ref = createRef<ActionSheet>();
149
+ const {toJSON} = render(
150
+ <ThemeProvider>
151
+ <ActionSheet initialOffsetFromBottom={0.5} ref={ref}>
152
+ <Text>Offset</Text>
153
+ </ActionSheet>
154
+ </ThemeProvider>
155
+ );
156
+ expect(toJSON()).toMatchSnapshot();
157
+ });
158
+
159
+ it("renders with bottomOffset", () => {
160
+ const ref = createRef<ActionSheet>();
161
+ const {toJSON} = render(
162
+ <ThemeProvider>
163
+ <ActionSheet bottomOffset={20} ref={ref}>
164
+ <Text>Bottom</Text>
165
+ </ActionSheet>
166
+ </ThemeProvider>
167
+ );
168
+ expect(toJSON()).toMatchSnapshot();
169
+ });
170
+
171
+ it("renders with closable=false and persistent", () => {
172
+ const ref = createRef<ActionSheet>();
173
+ const {toJSON} = render(
174
+ <ThemeProvider>
175
+ <ActionSheet closable={false} ref={ref}>
176
+ <Text>Persistent</Text>
177
+ </ActionSheet>
178
+ </ThemeProvider>
179
+ );
180
+ expect(toJSON()).toMatchSnapshot();
181
+ });
182
+
183
+ it("renders with custom containerStyle", () => {
184
+ const ref = createRef<ActionSheet>();
185
+ const {toJSON} = render(
186
+ <ThemeProvider>
187
+ <ActionSheet containerStyle={{backgroundColor: "blue"}} ref={ref}>
188
+ <Text>Styled</Text>
189
+ </ActionSheet>
190
+ </ThemeProvider>
191
+ );
192
+ expect(toJSON()).toMatchSnapshot();
193
+ });
194
+
195
+ it("invokes onOpen when modal is shown", () => {
196
+ const ref = createRef<ActionSheet>();
197
+ const handleOpen = mock(() => {});
198
+ render(
199
+ <ThemeProvider>
200
+ <ActionSheet onOpen={handleOpen} ref={ref}>
201
+ <Text>Open</Text>
202
+ </ActionSheet>
203
+ </ThemeProvider>
204
+ );
205
+ act(() => {
206
+ ref.current?.show();
207
+ });
208
+ expect(ref.current?.state.modalVisible).toBe(true);
209
+ });
210
+
211
+ it("_onRequestClose hides modal when closeOnPressBack is true", () => {
212
+ const ref = createRef<ActionSheet>();
213
+ render(
214
+ <ThemeProvider>
215
+ <ActionSheet closeAnimationDuration={1} closeOnPressBack ref={ref}>
216
+ <Text>Close</Text>
217
+ </ActionSheet>
218
+ </ThemeProvider>
219
+ );
220
+ act(() => {
221
+ ref.current?.show();
222
+ });
223
+ expect(() => (ref.current as any)._onRequestClose()).not.toThrow();
224
+ });
225
+
226
+ it("_onTouchBackdrop hides modal when closeOnTouchBackdrop is true", () => {
227
+ const ref = createRef<ActionSheet>();
228
+ render(
229
+ <ThemeProvider>
230
+ <ActionSheet closeAnimationDuration={1} closeOnTouchBackdrop ref={ref}>
231
+ <Text>Backdrop</Text>
232
+ </ActionSheet>
233
+ </ThemeProvider>
234
+ );
235
+ act(() => {
236
+ ref.current?.show();
237
+ });
238
+ expect(() => (ref.current as any)._onTouchBackdrop()).not.toThrow();
239
+ });
240
+
241
+ it("_onRequestClose does not hide when closeOnPressBack is false", () => {
242
+ const ref = createRef<ActionSheet>();
243
+ render(
244
+ <ThemeProvider>
245
+ <ActionSheet closeOnPressBack={false} ref={ref}>
246
+ <Text>NoClose</Text>
247
+ </ActionSheet>
248
+ </ThemeProvider>
249
+ );
250
+ act(() => {
251
+ ref.current?.show();
252
+ });
253
+ (ref.current as any)._onRequestClose();
254
+ expect(ref.current?.state.modalVisible).toBe(true);
255
+ });
256
+
257
+ it("_onTouchBackdrop does not hide when closeOnTouchBackdrop is false", () => {
258
+ const ref = createRef<ActionSheet>();
259
+ render(
260
+ <ThemeProvider>
261
+ <ActionSheet closeOnTouchBackdrop={false} ref={ref}>
262
+ <Text>NoBackdrop</Text>
263
+ </ActionSheet>
264
+ </ThemeProvider>
265
+ );
266
+ act(() => {
267
+ ref.current?.show();
268
+ });
269
+ (ref.current as any)._onTouchBackdrop();
270
+ expect(ref.current?.state.modalVisible).toBe(true);
271
+ });
272
+
273
+ it("_onScroll does not throw", () => {
274
+ const ref = createRef<ActionSheet>();
275
+ render(
276
+ <ThemeProvider>
277
+ <ActionSheet ref={ref}>
278
+ <Text>Scroll</Text>
279
+ </ActionSheet>
280
+ </ThemeProvider>
281
+ );
282
+ expect(() =>
283
+ (ref.current as any)._onScroll({
284
+ nativeEvent: {contentOffset: {x: 0, y: 10}},
285
+ })
286
+ ).not.toThrow();
287
+ });
288
+
289
+ it("_onTouchStart and _onTouchMove do not throw", () => {
290
+ const ref = createRef<ActionSheet>();
291
+ render(
292
+ <ThemeProvider>
293
+ <ActionSheet ref={ref}>
294
+ <Text>Touch</Text>
295
+ </ActionSheet>
296
+ </ThemeProvider>
297
+ );
298
+ expect(() => (ref.current as any)._onTouchStart()).not.toThrow();
299
+ expect(() => (ref.current as any)._onTouchMove()).not.toThrow();
300
+ expect(() => (ref.current as any)._onTouchEnd()).not.toThrow();
301
+ });
302
+
51
303
  describe("getDeviceHeight", () => {
52
304
  it("returns a number", () => {
53
305
  const height = getDeviceHeight(false);
@@ -74,4 +326,11 @@ describe("ActionSheet", () => {
74
326
  expect(result).toHaveProperty("boxShadow");
75
327
  });
76
328
  });
329
+
330
+ describe("waitAsync", () => {
331
+ it("resolves after the specified time", async () => {
332
+ const result = await waitAsync(1);
333
+ expect(result).toBeNull();
334
+ });
335
+ });
77
336
  });
@@ -1,5 +1,6 @@
1
1
  import {afterEach, beforeEach, describe, expect, it, mock} from "bun:test";
2
2
  import {fireEvent} from "@testing-library/react-native";
3
+ import type {ReactTestInstance} from "react-test-renderer";
3
4
 
4
5
  import {AddressField} from "./AddressField";
5
6
  import {renderWithTheme} from "./test-utils";
@@ -117,4 +118,53 @@ describe("AddressField", () => {
117
118
  expect(address1Input.props.accessibilityState.disabled).toBe(true);
118
119
  expect(cityInput.props.accessibilityState.disabled).toBe(true);
119
120
  });
121
+
122
+ it("calls onChange when address2 changes", () => {
123
+ const {getByTestId} = renderWithTheme(
124
+ <AddressField {...defaultProps} onBlur={mockOnBlur} onChange={mockOnChange} />
125
+ );
126
+ fireEvent.changeText(getByTestId("test-address-address2"), "Suite 500");
127
+ expect(mockOnChange).toHaveBeenCalledWith({...defaultValue, address2: "Suite 500"});
128
+ });
129
+
130
+ it("calls onChange when countyName and countyCode change", () => {
131
+ const {getByTestId} = renderWithTheme(
132
+ <AddressField {...defaultProps} includeCounty onBlur={mockOnBlur} onChange={mockOnChange} />
133
+ );
134
+ fireEvent.changeText(getByTestId("test-address-county"), "Clark");
135
+ expect(mockOnChange).toHaveBeenCalledWith({...defaultValue, countyName: "Clark"});
136
+ fireEvent.changeText(getByTestId("test-address-county-code"), "999");
137
+ expect(mockOnChange).toHaveBeenCalledWith({...defaultValue, countyCode: "999"});
138
+ });
139
+
140
+ it("renders without throwing when value is undefined", () => {
141
+ expect(() =>
142
+ renderWithTheme(
143
+ <AddressField onBlur={mockOnBlur} onChange={mockOnChange} testID="no-value" />
144
+ )
145
+ ).not.toThrow();
146
+ });
147
+
148
+ it("invokes autocomplete callbacks with merged values", () => {
149
+ const {UNSAFE_getAllByProps} = renderWithTheme(
150
+ <AddressField {...defaultProps} onBlur={mockOnBlur} onChange={mockOnChange} />
151
+ );
152
+ const autocompletes = UNSAFE_getAllByProps({}).filter(
153
+ (el: ReactTestInstance) =>
154
+ typeof el.props?.handleAutoCompleteChange === "function" &&
155
+ typeof el.props?.handleAddressChange === "function"
156
+ );
157
+ expect(autocompletes.length).toBeGreaterThan(0);
158
+ const ac = autocompletes[0];
159
+ // Trigger handleAddressChange for address1
160
+ ac.props.handleAddressChange("456 Oak Ave");
161
+ expect(mockOnChange).toHaveBeenCalledWith({...defaultValue, address1: "456 Oak Ave"});
162
+ // Trigger handleAutoCompleteChange with a new address object
163
+ ac.props.handleAutoCompleteChange({city: "Chicago", state: "IL"});
164
+ expect(mockOnChange).toHaveBeenCalledWith({
165
+ ...defaultValue,
166
+ city: "Chicago",
167
+ state: "IL",
168
+ });
169
+ });
120
170
  });
@@ -1,8 +1,10 @@
1
1
  import {describe, expect, it, mock} from "bun:test";
2
2
  import {act, fireEvent, waitFor} from "@testing-library/react-native";
3
+ import React from "react";
3
4
 
4
5
  import {Banner} from "./Banner";
5
6
  import {renderWithTheme} from "./test-utils";
7
+ import {Unifier} from "./Unifier";
6
8
 
7
9
  describe("Banner", () => {
8
10
  it("renders correctly with default props", () => {
@@ -103,4 +105,67 @@ describe("Banner", () => {
103
105
  expect(handleClick).toHaveBeenCalled();
104
106
  });
105
107
  });
108
+
109
+ it("invokes buttonOnClick when icon button is pressed", async () => {
110
+ const handleClick = mock(() => Promise.resolve());
111
+ const {getByText} = renderWithTheme(
112
+ <Banner
113
+ buttonIconName="arrow-right"
114
+ buttonOnClick={handleClick}
115
+ buttonText="Go"
116
+ id="test-icon-banner"
117
+ text="Banner"
118
+ />
119
+ );
120
+
121
+ await act(async () => {
122
+ fireEvent.press(getByText("Go"));
123
+ await new Promise((resolve) => setTimeout(resolve, 100));
124
+ });
125
+
126
+ await waitFor(() => {
127
+ expect(handleClick).toHaveBeenCalled();
128
+ });
129
+ });
130
+
131
+ // Tests for optional id prop
132
+ it("renders without id prop", () => {
133
+ const {getByText} = renderWithTheme(<Banner text="No id banner" />);
134
+ expect(getByText("No id banner")).toBeTruthy();
135
+ });
136
+
137
+ it("renders without id and without dismissible", () => {
138
+ const {getByText, queryByLabelText} = renderWithTheme(<Banner text="Simple banner no id" />);
139
+ expect(getByText("Simple banner no id")).toBeTruthy();
140
+ expect(queryByLabelText("Dismiss")).toBeNull();
141
+ });
142
+
143
+ it("hides dismissible banner without id when dismissed", async () => {
144
+ const {getByLabelText, queryByText} = renderWithTheme(
145
+ <Banner dismissible text="Ephemeral banner" />
146
+ );
147
+
148
+ await act(async () => {
149
+ fireEvent.press(getByLabelText("Dismiss"));
150
+ });
151
+
152
+ await waitFor(() => {
153
+ expect(queryByText("Ephemeral banner")).toBeNull();
154
+ });
155
+ });
156
+
157
+ it("does not persist dismissal to storage when id is omitted", async () => {
158
+ const setItemMock = Unifier.storage.setItem as ReturnType<typeof mock>;
159
+ setItemMock.mockClear();
160
+
161
+ const {getByLabelText} = renderWithTheme(<Banner dismissible text="No persist banner" />);
162
+
163
+ await act(async () => {
164
+ fireEvent.press(getByLabelText("Dismiss"));
165
+ });
166
+
167
+ await waitFor(() => {
168
+ expect(setItemMock).not.toHaveBeenCalled();
169
+ });
170
+ });
106
171
  });
package/src/Banner.tsx CHANGED
@@ -86,9 +86,9 @@ const BannerButton = ({
86
86
  );
87
87
  };
88
88
 
89
- function getKey(id: string): string {
89
+ const getKey = (id: string): string => {
90
90
  return `@TerrenoUI:${id}`;
91
- }
91
+ };
92
92
 
93
93
  export const hideBanner = (id: string): Promise<void> => {
94
94
  console.debug(`[banner] Hiding ${getKey(id)} `);
@@ -112,9 +112,9 @@ export const Banner = (props: BannerProps): React.ReactElement | null => {
112
112
 
113
113
  const [show, setShow] = useState(true);
114
114
 
115
- // Load seen from async storage.
115
+ // Load seen from async storage (only when id is provided).
116
116
  useEffect(() => {
117
- if (dismissible) {
117
+ if (dismissible && id) {
118
118
  void Unifier.storage.getItem(getKey(id)).then((isSeen) => {
119
119
  console.debug(`[banner] ${getKey(id)} seen? ${isSeen}`);
120
120
  setShow(!isSeen);
@@ -126,7 +126,9 @@ export const Banner = (props: BannerProps): React.ReactElement | null => {
126
126
  if (!dismissible) {
127
127
  return;
128
128
  }
129
- await hideBanner(id);
129
+ if (id) {
130
+ await hideBanner(id);
131
+ }
130
132
  setShow(false);
131
133
  };
132
134