@terreno/ui 0.13.3 → 0.14.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.
- package/dist/ActionSheet.d.ts +5 -5
- package/dist/ActionSheet.js +2 -2
- package/dist/ActionSheet.js.map +1 -1
- package/dist/Avatar.js +1 -1
- package/dist/Avatar.js.map +1 -1
- package/dist/Banner.js.map +1 -1
- package/dist/Box.js +2 -0
- package/dist/Box.js.map +1 -1
- package/dist/Button.d.ts +2 -2
- package/dist/Button.js +35 -23
- package/dist/Button.js.map +1 -1
- package/dist/Common.d.ts +16 -4
- package/dist/Common.js +4 -4
- package/dist/Common.js.map +1 -1
- package/dist/ConsentFormScreen.js +3 -3
- package/dist/ConsentFormScreen.js.map +1 -1
- package/dist/ConsentNavigator.d.ts +1 -1
- package/dist/ConsentNavigator.js +2 -1
- package/dist/ConsentNavigator.js.map +1 -1
- package/dist/CustomSelectField.js +3 -1
- package/dist/CustomSelectField.js.map +1 -1
- package/dist/DataTable.js +1 -1
- package/dist/DataTable.js.map +1 -1
- package/dist/DateTimeActionSheet.js +2 -1
- package/dist/DateTimeActionSheet.js.map +1 -1
- package/dist/DateTimeField.js +3 -2
- package/dist/DateTimeField.js.map +1 -1
- package/dist/DateUtilities.d.ts +25 -25
- package/dist/DateUtilities.js +31 -32
- package/dist/DateUtilities.js.map +1 -1
- package/dist/HeightField.js.map +1 -1
- package/dist/Hyperlink.js +19 -9
- package/dist/Hyperlink.js.map +1 -1
- package/dist/IconButton.js.map +1 -1
- package/dist/ImageBackground.d.ts +2 -5
- package/dist/ImageBackground.js +1 -1
- package/dist/ImageBackground.js.map +1 -1
- package/dist/MediaQuery.d.ts +4 -4
- package/dist/MediaQuery.js +8 -8
- package/dist/MediaQuery.js.map +1 -1
- package/dist/ModalSheet.d.ts +3 -2
- package/dist/ModalSheet.js +1 -1
- package/dist/ModalSheet.js.map +1 -1
- package/dist/OfflineBanner.d.ts +21 -0
- package/dist/OfflineBanner.js +25 -0
- package/dist/OfflineBanner.js.map +1 -0
- package/dist/OpenAPIContext.js +1 -1
- package/dist/OpenAPIContext.js.map +1 -1
- package/dist/Page.d.ts +1 -0
- package/dist/Page.js +7 -2
- package/dist/Page.js.map +1 -1
- package/dist/Pagination.js.map +1 -1
- package/dist/Permissions.js +3 -0
- package/dist/Permissions.js.map +1 -1
- package/dist/PickerSelect.d.ts +1 -1
- package/dist/PickerSelect.js +9 -6
- package/dist/PickerSelect.js.map +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/SelectField.js.map +1 -1
- package/dist/SplitPage.js +7 -2
- package/dist/SplitPage.js.map +1 -1
- package/dist/SplitPage.native.js +4 -1
- package/dist/SplitPage.native.js.map +1 -1
- package/dist/TapToEdit.d.ts +1 -1
- package/dist/TapToEdit.js +12 -14
- package/dist/TapToEdit.js.map +1 -1
- package/dist/Toast.js.map +1 -1
- package/dist/ToastNotifications.js +2 -2
- package/dist/ToastNotifications.js.map +1 -1
- package/dist/Tooltip.d.ts +24 -1
- package/dist/Tooltip.js +2 -2
- package/dist/Tooltip.js.map +1 -1
- package/dist/Unifier.d.ts +3 -3
- package/dist/Unifier.js +15 -12
- package/dist/Unifier.js.map +1 -1
- package/dist/Utilities.d.ts +12 -8
- package/dist/Utilities.js +13 -15
- package/dist/Utilities.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/signUp/PasswordRequirements.js +3 -3
- package/dist/signUp/PasswordRequirements.js.map +1 -1
- package/dist/table/TableHeaderCell.js +1 -9
- package/dist/table/TableHeaderCell.js.map +1 -1
- package/dist/table/tableContext.d.ts +1 -1
- package/dist/table/tableContext.js +2 -2
- package/dist/table/tableContext.js.map +1 -1
- package/package.json +2 -1
- package/src/ActionSheet.test.tsx +1 -0
- package/src/ActionSheet.tsx +8 -6
- package/src/Avatar.tsx +9 -2
- package/src/Badge.test.tsx +1 -0
- package/src/Banner.test.tsx +71 -0
- package/src/Banner.tsx +1 -1
- package/src/Box.test.tsx +1 -0
- package/src/Box.tsx +10 -6
- package/src/Button.test.tsx +35 -0
- package/src/Button.tsx +65 -34
- package/src/Common.ts +42 -19
- package/src/ConsentFormScreen.test.tsx +124 -0
- package/src/ConsentFormScreen.tsx +18 -6
- package/src/ConsentNavigator.test.tsx +1 -0
- package/src/ConsentNavigator.tsx +5 -3
- package/src/CustomSelectField.tsx +3 -1
- package/src/DataTable.test.tsx +218 -0
- package/src/DataTable.tsx +1 -1
- package/src/DateTimeActionSheet.tsx +7 -3
- package/src/DateTimeField.test.tsx +1 -0
- package/src/DateTimeField.tsx +3 -2
- package/src/DateUtilities.test.ts +111 -0
- package/src/DateUtilities.tsx +43 -44
- package/src/DecimalRangeActionSheet.test.tsx +28 -0
- package/src/ErrorBoundary.test.tsx +1 -0
- package/src/HeightActionSheet.test.tsx +16 -0
- package/src/HeightField.test.tsx +106 -1
- package/src/HeightField.tsx +2 -1
- package/src/Hyperlink.tsx +83 -52
- package/src/IconButton.tsx +1 -1
- package/src/ImageBackground.tsx +5 -6
- package/src/MediaQuery.ts +8 -8
- package/src/MobileAddressAutoComplete.test.tsx +20 -1
- package/src/ModalSheet.test.tsx +1 -5
- package/src/ModalSheet.tsx +15 -6
- package/src/NumberField.test.tsx +14 -0
- package/src/OfflineBanner.test.tsx +70 -0
- package/src/OfflineBanner.tsx +54 -0
- package/src/OpenAPIContext.tsx +3 -2
- package/src/Page.test.tsx +28 -0
- package/src/Page.tsx +18 -2
- package/src/Pagination.tsx +1 -1
- package/src/Permissions.ts +3 -0
- package/src/PickerSelect.tsx +20 -17
- package/src/SelectBadge.test.tsx +1 -0
- package/src/SelectField.tsx +1 -1
- package/src/Signature.test.tsx +1 -0
- package/src/SplitPage.native.tsx +2 -0
- package/src/SplitPage.tsx +6 -1
- package/src/TapToEdit.test.tsx +48 -0
- package/src/TapToEdit.tsx +13 -14
- package/src/Toast.tsx +1 -1
- package/src/ToastNotifications.test.tsx +738 -0
- package/src/ToastNotifications.tsx +3 -6
- package/src/Tooltip.test.tsx +586 -8
- package/src/Tooltip.tsx +2 -2
- package/src/Unifier.ts +20 -16
- package/src/Utilities.tsx +20 -19
- package/src/WebAddressAutocomplete.test.tsx +138 -0
- package/src/WebDropdownMenu.test.tsx +23 -0
- package/src/__snapshots__/AddressField.test.tsx.snap +3 -1
- package/src/__snapshots__/Button.test.tsx.snap +92 -50
- package/src/__snapshots__/CustomSelectField.test.tsx.snap +21 -7
- package/src/__snapshots__/DecimalRangeActionSheet.test.tsx.snap +14 -8
- package/src/__snapshots__/ErrorPage.test.tsx.snap +7 -4
- package/src/__snapshots__/Field.test.tsx.snap +18 -6
- package/src/__snapshots__/HeightActionSheet.test.tsx.snap +14 -8
- package/src/__snapshots__/HeightField.test.tsx.snap +35 -20
- package/src/__snapshots__/InfoModalIcon.test.tsx.snap +28 -16
- package/src/__snapshots__/Modal.test.tsx.snap +19 -10
- package/src/__snapshots__/ModalSheet.test.tsx.snap +0 -1
- package/src/__snapshots__/NumberPickerActionSheet.test.tsx.snap +14 -8
- package/src/__snapshots__/Page.test.tsx.snap +7 -4
- package/src/__snapshots__/SelectField.test.tsx.snap +18 -6
- package/src/__snapshots__/TerrenoProvider.test.tsx.snap +0 -2
- package/src/__snapshots__/TimezonePicker.test.tsx.snap +18 -6
- package/src/bunSetup.ts +25 -2
- package/src/index.tsx +2 -1
- package/src/login/LoginScreen.test.tsx +23 -1
- package/src/login/__snapshots__/LoginScreen.test.tsx.snap +15 -6
- package/src/signUp/PasswordRequirements.tsx +9 -6
- package/src/signUp/__snapshots__/PasswordRequirements.test.tsx.snap +50 -2
- package/src/signUp/__snapshots__/SignUpScreen.test.tsx.snap +35 -5
- package/src/table/TableHeaderCell.tsx +8 -11
- package/src/table/TableRow.test.tsx +31 -1
- package/src/table/__snapshots__/TableBadge.test.tsx.snap +3 -1
- package/src/table/__snapshots__/TableHeaderCell.test.tsx.snap +2 -0
- package/src/table/tableContext.tsx +2 -2
- package/src/types/react-native-swiper-flatlist.d.ts +1 -0
- package/src/useStoredState.test.tsx +47 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {describe, expect, it} from "bun:test";
|
|
1
|
+
import {describe, expect, it, type mock} from "bun:test";
|
|
2
|
+
import {act} from "@testing-library/react-native";
|
|
2
3
|
|
|
4
|
+
import {IconButton} from "../IconButton";
|
|
3
5
|
import {Text} from "../Text";
|
|
4
6
|
import {renderWithTheme} from "../test-utils";
|
|
5
7
|
import {Table} from "./Table";
|
|
@@ -113,4 +115,32 @@ describe("TableRow", () => {
|
|
|
113
115
|
// Snapshot captures the blank placeholder cell for the row without drawer contents
|
|
114
116
|
expect(toJSON()).toMatchSnapshot();
|
|
115
117
|
});
|
|
118
|
+
|
|
119
|
+
it("toggles drawer contents when the expand button is pressed", () => {
|
|
120
|
+
const iconButtonMock = IconButton as unknown as ReturnType<typeof mock>;
|
|
121
|
+
iconButtonMock.mockClear();
|
|
122
|
+
|
|
123
|
+
const {queryByText} = renderWithTheme(
|
|
124
|
+
<Table columns={[100]}>
|
|
125
|
+
<TableHeader>
|
|
126
|
+
<TableHeaderCell index={0} title="Name" />
|
|
127
|
+
</TableHeader>
|
|
128
|
+
<TableRow drawerContents={<Text>Hidden content</Text>}>
|
|
129
|
+
<TableText value="Row" />
|
|
130
|
+
</TableRow>
|
|
131
|
+
</Table>
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
expect(queryByText("Hidden content")).toBeNull();
|
|
135
|
+
|
|
136
|
+
act(() => {
|
|
137
|
+
iconButtonMock.mock.calls[iconButtonMock.mock.calls.length - 1][0].onClick();
|
|
138
|
+
});
|
|
139
|
+
expect(queryByText("Hidden content")).toBeTruthy();
|
|
140
|
+
|
|
141
|
+
act(() => {
|
|
142
|
+
iconButtonMock.mock.calls[iconButtonMock.mock.calls.length - 1][0].onClick();
|
|
143
|
+
});
|
|
144
|
+
expect(queryByText("Hidden content")).toBeNull();
|
|
145
|
+
});
|
|
116
146
|
});
|
|
@@ -1544,6 +1544,8 @@ exports[`TableHeaderCell renders sortable header with sort indicator when sorted
|
|
|
1544
1544
|
"$$typeof": Symbol(react.test.json),
|
|
1545
1545
|
"children": null,
|
|
1546
1546
|
"props": {
|
|
1547
|
+
"onPointerEnter": [Function: AsyncFunction],
|
|
1548
|
+
"onPointerLeave": [Function: AsyncFunction],
|
|
1547
1549
|
"style": {
|
|
1548
1550
|
"alignItems": "center",
|
|
1549
1551
|
"backgroundColor": "#0E9DCD",
|
|
@@ -45,7 +45,7 @@ export const TableContextProvider = ({
|
|
|
45
45
|
);
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
export
|
|
48
|
+
export const useTableContext = (): TableContextType => {
|
|
49
49
|
const {
|
|
50
50
|
columns,
|
|
51
51
|
hasDrawerContents,
|
|
@@ -64,4 +64,4 @@ export function useTableContext(): TableContextType {
|
|
|
64
64
|
sortColumn,
|
|
65
65
|
stickyHeader,
|
|
66
66
|
};
|
|
67
|
-
}
|
|
67
|
+
};
|
|
@@ -41,6 +41,7 @@ declare module "react-native-swiper-flatlist" {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export const SwiperFlatList: React.ForwardRefExoticComponent<
|
|
44
|
+
// biome-ignore lint/suspicious/noExplicitAny: declaration must use any for the generic to allow consumers to specify their data type without explicit type args
|
|
44
45
|
SwiperFlatListProps<any> & React.RefAttributes<SwiperFlatListRefProps>
|
|
45
46
|
>;
|
|
46
47
|
|
|
@@ -140,4 +140,51 @@ describe("useStoredState", () => {
|
|
|
140
140
|
expect(result.current[0]).toBe("initial value");
|
|
141
141
|
expect(result.current[2]).toBe(true);
|
|
142
142
|
});
|
|
143
|
+
|
|
144
|
+
it("should handle the outer catch when fetchData rejects unexpectedly", async () => {
|
|
145
|
+
const originalConsoleError = console.error;
|
|
146
|
+
console.error = mock((...args: unknown[]) => {
|
|
147
|
+
const msg = String(args[0]);
|
|
148
|
+
if (msg.includes("Error reading data from AsyncStorage")) {
|
|
149
|
+
throw new Error("unexpected failure in error handler");
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
getItemMock = mock(() => Promise.reject(new Error("Storage read failure")));
|
|
154
|
+
Unifier.storage.getItem = getItemMock;
|
|
155
|
+
|
|
156
|
+
const {result} = renderHook(() => useStoredState("testKey", "fallback"));
|
|
157
|
+
|
|
158
|
+
await act(async () => {
|
|
159
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
expect(result.current[2]).toBe(false);
|
|
163
|
+
console.error = originalConsoleError;
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
it("should not update state in outer catch if unmounted", async () => {
|
|
167
|
+
const originalConsoleError = console.error;
|
|
168
|
+
console.error = mock((...args: unknown[]) => {
|
|
169
|
+
const msg = String(args[0]);
|
|
170
|
+
if (msg.includes("Error reading data from AsyncStorage")) {
|
|
171
|
+
throw new Error("force outer catch");
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
getItemMock = mock(() => Promise.reject(new Error("fail")));
|
|
176
|
+
Unifier.storage.getItem = getItemMock;
|
|
177
|
+
|
|
178
|
+
const {result, unmount} = renderHook(() => useStoredState("testKey", "init"));
|
|
179
|
+
|
|
180
|
+
unmount();
|
|
181
|
+
|
|
182
|
+
await act(async () => {
|
|
183
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
expect(result.current[0]).toBe("init");
|
|
187
|
+
expect(result.current[2]).toBe(true);
|
|
188
|
+
console.error = originalConsoleError;
|
|
189
|
+
});
|
|
143
190
|
});
|