@terreno/ui 0.10.0 → 0.11.0
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/Banner.js +2 -2
- package/dist/Banner.js.map +1 -1
- package/dist/TextFieldNumberActionSheet.d.ts +1 -1
- package/dist/Toast.d.ts +1 -1
- package/dist/Toast.js +2 -2
- package/dist/Toast.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/package.json +2 -1
- package/src/ActionSheet.test.tsx +262 -3
- package/src/AddressField.test.tsx +50 -0
- package/src/Banner.test.tsx +22 -0
- package/src/Banner.tsx +2 -2
- package/src/Box.test.tsx +218 -0
- package/src/Button.test.tsx +71 -0
- package/src/ConsentFormScreen.test.tsx +167 -0
- package/src/ConsentNavigator.test.tsx +206 -0
- package/src/DecimalRangeActionSheet.test.tsx +53 -2
- package/src/EmailField.test.tsx +81 -0
- package/src/EmojiSelector.test.tsx +262 -1
- package/src/HeightActionSheet.test.tsx +57 -2
- package/src/InfoModalIcon.test.tsx +16 -0
- package/src/InfoTooltipButton.test.tsx +53 -1
- package/src/MobileAddressAutoComplete.test.tsx +137 -7
- package/src/Modal.test.tsx +188 -0
- package/src/NumberPickerActionSheet.test.tsx +59 -2
- package/src/Page.test.tsx +162 -1
- package/src/Pagination.test.tsx +16 -0
- package/src/PhoneNumberField.test.tsx +46 -9
- package/src/PickerSelect.test.tsx +230 -0
- package/src/SegmentedControl.test.tsx +38 -0
- package/src/SelectBadge.test.tsx +52 -1
- package/src/SideDrawer.test.tsx +69 -0
- package/src/Signature.test.tsx +42 -5
- package/src/SignatureField.test.tsx +35 -0
- package/src/Slider.test.tsx +59 -0
- package/src/Spinner.test.tsx +6 -0
- package/src/SplitPage.test.tsx +228 -2
- package/src/TapToEdit.test.tsx +171 -1
- package/src/TerrenoProvider.test.tsx +42 -2
- package/src/TextFieldNumberActionSheet.tsx +1 -1
- package/src/Theme.test.tsx +118 -28
- package/src/Toast.test.tsx +95 -2
- package/src/Toast.tsx +3 -3
- package/src/Tooltip.test.tsx +204 -1
- package/src/UnifiedAddressAutoComplete.test.tsx +38 -19
- package/src/UserInactivity.test.tsx +73 -1
- package/src/Utilities.test.tsx +190 -2
- package/src/WebAddressAutocomplete.test.tsx +148 -1
- package/src/__snapshots__/ActionSheet.test.tsx.snap +1736 -0
- package/src/__snapshots__/Button.test.tsx.snap +68 -0
- package/src/__snapshots__/EmojiSelector.test.tsx.snap +1363 -0
- package/src/__snapshots__/InfoTooltipButton.test.tsx.snap +72 -3
- package/src/__snapshots__/MobileAddressAutoComplete.test.tsx.snap +60 -9
- package/src/__snapshots__/Modal.test.tsx.snap +181 -0
- package/src/__snapshots__/Page.test.tsx.snap +48 -2
- package/src/__snapshots__/PhoneNumberField.test.tsx.snap +0 -93
- package/src/__snapshots__/PickerSelect.test.tsx.snap +706 -0
- package/src/__snapshots__/SideDrawer.test.tsx.snap +533 -1399
- package/src/__snapshots__/Signature.test.tsx.snap +0 -3
- package/src/__snapshots__/SplitPage.test.tsx.snap +970 -0
- package/src/__snapshots__/UnifiedAddressAutoComplete.test.tsx.snap +220 -4
- package/src/__snapshots__/WebAddressAutocomplete.test.tsx.snap +93 -0
- package/src/bunSetup.ts +204 -121
- package/src/index.tsx +2 -2
- package/src/table/TableHeaderCell.test.tsx +142 -0
- package/src/table/TableRow.test.tsx +33 -0
- package/src/table/__snapshots__/TableRow.test.tsx.snap +403 -0
- package/src/table/tableContext.test.tsx +96 -0
- package/src/test-utils.tsx +1 -1
- package/src/useConsentForms.test.ts +130 -0
- 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
|
-
|
|
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");
|
package/dist/Banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAC,iBAAiB,EAAE,IAAI,IAAI,UAAU,EAAE,SAAS,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAEpF,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACjC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AASlC,MAAM,YAAY,GAAG,CAAC,EACpB,OAAO,EAAE,YAAY,EACrB,UAAU,EACV,cAAc,EACd,aAAa,GACK,EAA6B,EAAE;IACjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAC,SAAS,IACR,iBAAiB,EAAE,2BAA2B,UAAU,EAAE,gBAC9C,UAAU,eACZ,QAAQ,EAClB,OAAO,EAAE,QAAQ,CACf,KAAK,IAAI,EAAE;YACT,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,aAAa,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClB,MAAM,KAAK,CAAC;YACd,CAAC;YACD,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,EACD,GAAG,EACH,EAAC,OAAO,EAAE,IAAI,EAAC,CAChB,EACD,KAAK,EAAE;YACL,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,SAAS;YACpB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;YACnC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,OAAc;YACzC,aAAa,EAAE,QAAQ;YACvB,cAAc,EAAE,QAAQ;YACxB,iBAAiB,EAAE,EAAE;YACrB,eAAe,EAAE,CAAC;SACnB,YAED,MAAC,IAAI,IAAC,KAAK,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,aACjC,MAAC,IAAI,IAAC,KAAK,EAAE,EAAC,aAAa,EAAE,aAAa,EAAC,aACxC,OAAO,CAAC,cAAc,CAAC,IAAI,CAC1B,KAAC,IAAI,IACH,KAAK,EAAE;gCACL,SAAS,EAAE,QAAQ;gCACnB,UAAU,EAAE,CAAC;gCACb,WAAW,EAAE,CAAC;6BACf,YAED,KAAC,IAAI,IAAC,QAAQ,EAAE,cAA0B,EAAE,IAAI,EAAC,OAAO,GAAG,GACtD,CACR,EACD,KAAC,UAAU,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,YAAG,UAAU,GAAc,IACvD,EACN,OAAO,CAAC,OAAO,CAAC,IAAI,CACnB,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,iBAAiB,IAAC,IAAI,EAAC,OAAO,GAAG,GAC9B,CACP,IACI,GACG,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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():
|
|
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
|
|
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
|
|
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":";AACA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAGvD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACjC,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAEtD,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC;AAYnC,MAAM,
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../src/Toast.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
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.
|
|
140
|
+
"version": "0.11.0"
|
|
140
141
|
}
|
package/src/ActionSheet.test.tsx
CHANGED
|
@@ -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
|
});
|
package/src/Banner.test.tsx
CHANGED
|
@@ -103,4 +103,26 @@ describe("Banner", () => {
|
|
|
103
103
|
expect(handleClick).toHaveBeenCalled();
|
|
104
104
|
});
|
|
105
105
|
});
|
|
106
|
+
|
|
107
|
+
it("invokes buttonOnClick when icon button is pressed", async () => {
|
|
108
|
+
const handleClick = mock(() => Promise.resolve());
|
|
109
|
+
const {getByText} = renderWithTheme(
|
|
110
|
+
<Banner
|
|
111
|
+
buttonIconName="arrow-right"
|
|
112
|
+
buttonOnClick={handleClick}
|
|
113
|
+
buttonText="Go"
|
|
114
|
+
id="test-icon-banner"
|
|
115
|
+
text="Banner"
|
|
116
|
+
/>
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
await act(async () => {
|
|
120
|
+
fireEvent.press(getByText("Go"));
|
|
121
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
await waitFor(() => {
|
|
125
|
+
expect(handleClick).toHaveBeenCalled();
|
|
126
|
+
});
|
|
127
|
+
});
|
|
106
128
|
});
|
package/src/Banner.tsx
CHANGED
|
@@ -86,9 +86,9 @@ const BannerButton = ({
|
|
|
86
86
|
);
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
|
|
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)} `);
|