ferns-ui 0.45.1 → 0.45.3
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 +108 -8
- package/dist/FernsProvider.d.ts +2 -1
- package/dist/FernsProvider.js +4 -2
- package/dist/FernsProvider.js.map +1 -1
- package/dist/OpenAPIContext.d.ts +1 -31
- package/dist/OpenAPIContext.js +1 -2
- package/dist/OpenAPIContext.js.map +1 -1
- package/dist/Pagination.d.ts +9 -0
- package/dist/Pagination.js +16 -0
- package/dist/Pagination.js.map +1 -0
- package/dist/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl.js +20 -4
- package/dist/SegmentedControl.js.map +1 -1
- package/dist/Table.d.ts +1 -1
- package/dist/Table.js +20 -8
- package/dist/Table.js.map +1 -1
- package/dist/TapToEdit.d.ts +1 -1
- package/dist/TapToEdit.js +2 -2
- package/dist/TapToEdit.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tableContext.d.ts +2 -18
- package/dist/tableContext.js +3 -1
- package/dist/tableContext.js.map +1 -1
- package/package.json +1 -1
- package/src/Common.ts +133 -7
- package/src/FernsProvider.tsx +11 -2
- package/src/OpenAPIContext.tsx +9 -37
- package/src/Pagination.tsx +43 -0
- package/src/SegmentedControl.tsx +16 -6
- package/src/Table.tsx +47 -16
- package/src/TapToEdit.tsx +8 -1
- package/src/index.tsx +1 -0
- package/src/tableContext.tsx +5 -19
package/dist/Common.d.ts
CHANGED
|
@@ -246,18 +246,27 @@ export interface PillProps {
|
|
|
246
246
|
enabled?: boolean;
|
|
247
247
|
onClick: (enabled: boolean) => void;
|
|
248
248
|
}
|
|
249
|
-
|
|
249
|
+
type BaseSegmentedControlProps = {
|
|
250
250
|
items: string[];
|
|
251
|
-
onChange?: ({ activeIndex }: {
|
|
252
|
-
activeIndex: number | number[];
|
|
253
|
-
}) => void;
|
|
254
|
-
selectedItemIndex?: number;
|
|
255
|
-
selectedItemIndexes?: number[];
|
|
256
251
|
responsive?: boolean;
|
|
257
252
|
size?: "md" | "lg";
|
|
258
|
-
multiselect?: boolean;
|
|
259
253
|
selectLimit?: number;
|
|
260
|
-
}
|
|
254
|
+
};
|
|
255
|
+
export type SegmentedControlPropsSingleSelect = BaseSegmentedControlProps & {
|
|
256
|
+
multiselect?: false;
|
|
257
|
+
onChange: ({ activeIndex }: {
|
|
258
|
+
activeIndex: number;
|
|
259
|
+
}) => void;
|
|
260
|
+
selectedItemIndex?: number;
|
|
261
|
+
};
|
|
262
|
+
export type SegmentedControlPropsMultiSelect = BaseSegmentedControlProps & {
|
|
263
|
+
multiselect: true;
|
|
264
|
+
onChange: ({ activeIndex }: {
|
|
265
|
+
activeIndex: number[];
|
|
266
|
+
}) => void;
|
|
267
|
+
selectedItemIndexes?: number[];
|
|
268
|
+
};
|
|
269
|
+
export type SegmentedControlProps = SegmentedControlPropsSingleSelect | SegmentedControlPropsMultiSelect;
|
|
261
270
|
export interface FieldWithLabelsProps {
|
|
262
271
|
testID?: string;
|
|
263
272
|
errorMessage?: string;
|
|
@@ -1100,6 +1109,10 @@ export interface SpinnerProps {
|
|
|
1100
1109
|
size?: "sm" | "md";
|
|
1101
1110
|
color?: Color;
|
|
1102
1111
|
}
|
|
1112
|
+
export type ColumnSortInterface = {
|
|
1113
|
+
column: number;
|
|
1114
|
+
direction: "asc" | "desc";
|
|
1115
|
+
};
|
|
1103
1116
|
export interface TableProps {
|
|
1104
1117
|
/**
|
|
1105
1118
|
* Must be instances of TableHeader, TableRow, and/or TableFooter components.
|
|
@@ -1126,6 +1139,26 @@ export interface TableProps {
|
|
|
1126
1139
|
* If true, alternate rows will have a light gray background. Defaults to true.
|
|
1127
1140
|
*/
|
|
1128
1141
|
alternateRowBackground?: boolean;
|
|
1142
|
+
/**
|
|
1143
|
+
* Control sort outside of the Table
|
|
1144
|
+
*/
|
|
1145
|
+
sort?: ColumnSortInterface;
|
|
1146
|
+
/**
|
|
1147
|
+
* Set the page outside of the Table
|
|
1148
|
+
*/
|
|
1149
|
+
page?: number;
|
|
1150
|
+
/**
|
|
1151
|
+
* Set the page outside of the Table
|
|
1152
|
+
*/
|
|
1153
|
+
setPage?: (page: number) => void;
|
|
1154
|
+
/**
|
|
1155
|
+
* If true, the table will render a next page button. Defaults to true.
|
|
1156
|
+
*/
|
|
1157
|
+
more?: boolean;
|
|
1158
|
+
/**
|
|
1159
|
+
* Extra controls to render below the table next to pagination
|
|
1160
|
+
*/
|
|
1161
|
+
extraControls?: React.ReactElement;
|
|
1129
1162
|
}
|
|
1130
1163
|
export interface TableHeaderProps {
|
|
1131
1164
|
/**
|
|
@@ -1175,6 +1208,24 @@ export interface TableRowProps {
|
|
|
1175
1208
|
*/
|
|
1176
1209
|
color?: BoxColor;
|
|
1177
1210
|
}
|
|
1211
|
+
export type TableFilters = Record<string, string[]>;
|
|
1212
|
+
export type TableSearch = {
|
|
1213
|
+
search: string;
|
|
1214
|
+
field: string;
|
|
1215
|
+
};
|
|
1216
|
+
export interface TableContextType {
|
|
1217
|
+
columns: Array<number | string>;
|
|
1218
|
+
hasDrawerContents: boolean;
|
|
1219
|
+
sortColumn?: ColumnSortInterface | undefined;
|
|
1220
|
+
setSortColumn?: (sort: ColumnSortInterface | undefined) => void;
|
|
1221
|
+
stickyHeader?: boolean;
|
|
1222
|
+
borderStyle?: "sm" | "none";
|
|
1223
|
+
alternateRowBackground?: boolean;
|
|
1224
|
+
page?: number;
|
|
1225
|
+
}
|
|
1226
|
+
export interface TableContextProviderProps extends TableContextType {
|
|
1227
|
+
children: React.ReactElement;
|
|
1228
|
+
}
|
|
1178
1229
|
export interface TextProps {
|
|
1179
1230
|
align?: "left" | "right" | "center" | "justify";
|
|
1180
1231
|
children?: React.ReactNode;
|
|
@@ -1245,6 +1296,7 @@ export interface TapToEditProps extends Omit<FieldProps, "onChange" | "value"> {
|
|
|
1245
1296
|
openApiModel?: string;
|
|
1246
1297
|
openApiField?: string;
|
|
1247
1298
|
showDescriptionAsTooltip?: boolean;
|
|
1299
|
+
onlyShowDescriptionWhileEditing?: boolean;
|
|
1248
1300
|
}
|
|
1249
1301
|
export interface APIError {
|
|
1250
1302
|
status: number;
|
|
@@ -1264,4 +1316,52 @@ export interface APIError {
|
|
|
1264
1316
|
};
|
|
1265
1317
|
};
|
|
1266
1318
|
}
|
|
1319
|
+
export type OpenApiPropertyType = "string" | "date" | "datetime" | "boolean" | "array" | "object" | "number" | "any";
|
|
1320
|
+
export type OpenApiProperty = {
|
|
1321
|
+
type?: OpenApiPropertyType;
|
|
1322
|
+
format?: string;
|
|
1323
|
+
properties?: OpenApiProperty;
|
|
1324
|
+
items?: OpenApiProperty[];
|
|
1325
|
+
description?: string;
|
|
1326
|
+
required?: string[];
|
|
1327
|
+
enum?: string[];
|
|
1328
|
+
};
|
|
1329
|
+
export type ModelFields = {
|
|
1330
|
+
type: "object" | "array";
|
|
1331
|
+
required: string[];
|
|
1332
|
+
properties: {
|
|
1333
|
+
[name: string]: OpenApiProperty;
|
|
1334
|
+
};
|
|
1335
|
+
};
|
|
1336
|
+
export interface OpenAPISpec {
|
|
1337
|
+
paths: {
|
|
1338
|
+
[key: string]: any;
|
|
1339
|
+
};
|
|
1340
|
+
}
|
|
1341
|
+
export type ModelFieldConfig = any;
|
|
1342
|
+
export interface OpenAPIProviderProps {
|
|
1343
|
+
children: React.ReactElement;
|
|
1344
|
+
specUrl?: string;
|
|
1345
|
+
}
|
|
1346
|
+
export interface OpenAPIContextType {
|
|
1347
|
+
spec: OpenAPISpec | null;
|
|
1348
|
+
getModelFields: (modelName: string) => ModelFields | null;
|
|
1349
|
+
getModelField: (modelName: string, field: string) => OpenApiProperty | null;
|
|
1350
|
+
}
|
|
1351
|
+
export interface ModelAdminFieldConfig {
|
|
1352
|
+
fieldKey: string;
|
|
1353
|
+
title: string;
|
|
1354
|
+
description?: string;
|
|
1355
|
+
type: OpenApiPropertyType;
|
|
1356
|
+
width?: number;
|
|
1357
|
+
minWidth?: number;
|
|
1358
|
+
options?: string[];
|
|
1359
|
+
sort?: string;
|
|
1360
|
+
CustomComponent?: (props: ModelAdminCustomComponentProps) => React.ReactElement | null;
|
|
1361
|
+
}
|
|
1362
|
+
export interface ModelAdminCustomComponentProps extends Omit<FieldProps, "name"> {
|
|
1363
|
+
doc: any;
|
|
1364
|
+
fieldKey: string;
|
|
1365
|
+
editing: boolean;
|
|
1366
|
+
}
|
|
1267
1367
|
export {};
|
package/dist/FernsProvider.d.ts
CHANGED
package/dist/FernsProvider.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Host } from "react-native-portalize";
|
|
3
3
|
import { ToastProvider } from "react-native-toast-notifications";
|
|
4
|
+
import { OpenAPIProvider } from "./OpenAPIContext";
|
|
4
5
|
import { ThemeProvider } from "./Theme";
|
|
5
6
|
import { Toast } from "./Toast";
|
|
6
|
-
export const FernsProvider = ({ children }) => {
|
|
7
|
+
export const FernsProvider = ({ children, openAPISpecUrl, }) => {
|
|
7
8
|
return (React.createElement(ThemeProvider, null,
|
|
8
9
|
React.createElement(ToastProvider, { animationDuration: 250, animationType: "slide-in", duration: 50000, offset: 50, placement: "bottom", renderToast: (toastOptions) => React.createElement(Toast, Object.assign({}, toastOptions)), swipeEnabled: true },
|
|
9
|
-
React.createElement(
|
|
10
|
+
React.createElement(OpenAPIProvider, { specUrl: openAPISpecUrl },
|
|
11
|
+
React.createElement(Host, null, children)))));
|
|
10
12
|
};
|
|
11
13
|
//# sourceMappingURL=FernsProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FernsProvider.js","sourceRoot":"","sources":["../src/FernsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,EAAC,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAC,aAAa,EAAC,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"FernsProvider.js","sourceRoot":"","sources":["../src/FernsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,EAAC,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAC,aAAa,EAAC,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,QAAQ,EACR,cAAc,GAIf,EAAsB,EAAE;IACvB,OAAO,CACL,oBAAC,aAAa;QACZ,oBAAC,aAAa,IACZ,iBAAiB,EAAE,GAAG,EACtB,aAAa,EAAC,UAAU,EACxB,QAAQ,EAAE,KAAK,EACf,MAAM,EAAE,EAAE,EACV,SAAS,EAAC,QAAQ,EAClB,WAAW,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,oBAAC,KAAK,oBAAM,YAAoB,EAAI,EACnE,YAAY;YAEZ,oBAAC,eAAe,IAAC,OAAO,EAAE,cAAc;gBACtC,oBAAC,IAAI,QAAE,QAAQ,CAAQ,CACP,CACJ,CACF,CACjB,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/OpenAPIContext.d.ts
CHANGED
|
@@ -1,34 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
3
|
-
paths: {
|
|
4
|
-
[key: string]: any;
|
|
5
|
-
};
|
|
6
|
-
}
|
|
7
|
-
export type ModelFieldConfig = any;
|
|
8
|
-
export type OpenApiPropertyType = "string" | "number" | "boolean" | "array" | "object";
|
|
9
|
-
export type OpenApiProperty = {
|
|
10
|
-
type?: OpenApiPropertyType;
|
|
11
|
-
format?: string;
|
|
12
|
-
properties?: OpenApiProperty;
|
|
13
|
-
items?: OpenApiProperty[];
|
|
14
|
-
description?: string;
|
|
15
|
-
};
|
|
16
|
-
export type ModelFields = {
|
|
17
|
-
type: "object" | "array";
|
|
18
|
-
required: string[];
|
|
19
|
-
properties: {
|
|
20
|
-
[name: string]: OpenApiProperty;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
interface OpenAPIContextType {
|
|
24
|
-
spec: OpenAPISpec | null;
|
|
25
|
-
getModelFields: (modelName: string) => ModelFields | null;
|
|
26
|
-
getModelField: (modelName: string, field: string) => OpenApiProperty;
|
|
27
|
-
}
|
|
28
|
-
interface OpenAPIProviderProps {
|
|
29
|
-
children: React.ReactElement;
|
|
30
|
-
specUrl?: string;
|
|
31
|
-
}
|
|
2
|
+
import { OpenAPIContextType, OpenAPIProviderProps } from "./Common";
|
|
32
3
|
export declare const OpenAPIProvider: ({ children, specUrl }: OpenAPIProviderProps) => React.ReactElement;
|
|
33
4
|
export declare const useOpenAPISpec: () => OpenAPIContextType;
|
|
34
|
-
export {};
|
package/dist/OpenAPIContext.js
CHANGED
|
@@ -13,8 +13,7 @@ export const OpenAPIProvider = ({ children, specUrl }) => {
|
|
|
13
13
|
}
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
return items;
|
|
16
|
+
return (_j = (_h = (_g = (_f = (_e = (_d = (_c = (_b = rootConfig === null || rootConfig === void 0 ? void 0 : rootConfig.get) === null || _b === void 0 ? void 0 : _b.responses) === null || _c === void 0 ? void 0 : _c["200"]) === null || _d === void 0 ? void 0 : _d.content) === null || _e === void 0 ? void 0 : _e["application/json"]) === null || _f === void 0 ? void 0 : _f.schema) === null || _g === void 0 ? void 0 : _g.properties) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.items;
|
|
18
17
|
};
|
|
19
18
|
const getModelField = (modelName, fieldName) => {
|
|
20
19
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAPIContext.js","sourceRoot":"","sources":["../src/OpenAPIContext.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,EAAE,EAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAPIContext.js","sourceRoot":"","sources":["../src/OpenAPIContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactElement } from "react";
|
|
2
|
+
interface PaginationControlProps {
|
|
3
|
+
shouldDisableBackButton: boolean;
|
|
4
|
+
shouldDisableNextButton: boolean;
|
|
5
|
+
page: number;
|
|
6
|
+
setPage: (page: number) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const PaginationControl: ({ shouldDisableBackButton, shouldDisableNextButton, page, setPage, }: PaginationControlProps) => ReactElement;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box } from "./Box";
|
|
3
|
+
import { Button } from "./Button";
|
|
4
|
+
import { Text } from "./Text";
|
|
5
|
+
export const PaginationControl = ({ shouldDisableBackButton, shouldDisableNextButton, page, setPage, }) => {
|
|
6
|
+
return (React.createElement(Box, { direction: "row", paddingY: 2 },
|
|
7
|
+
React.createElement(Box, null,
|
|
8
|
+
React.createElement(Button, { color: "blue", disabled: shouldDisableBackButton, text: "Prev Page", onClick: () => setPage(Number(page) - 1) })),
|
|
9
|
+
React.createElement(Box, { justifyContent: "center", paddingX: 4 },
|
|
10
|
+
React.createElement(Text, null,
|
|
11
|
+
"Page: ",
|
|
12
|
+
page)),
|
|
13
|
+
React.createElement(Box, null,
|
|
14
|
+
React.createElement(Button, { color: "blue", disabled: shouldDisableNextButton, text: "Next Page", onClick: () => setPage(Number(page) + 1) }))));
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=Pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../src/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAS5B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,uBAAuB,EACvB,uBAAuB,EACvB,IAAI,EACJ,OAAO,GACgB,EAAgB,EAAE;IACzC,OAAO,CACL,oBAAC,GAAG,IAAC,SAAS,EAAC,KAAK,EAAC,QAAQ,EAAE,CAAC;QAC9B,oBAAC,GAAG;YACF,oBAAC,MAAM,IACL,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAE,uBAAuB,EACjC,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,GAAS,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAC9C,CACE;QACN,oBAAC,GAAG,IAAC,cAAc,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC;YACtC,oBAAC,IAAI;;gBAAQ,IAAI,CAAQ,CACrB;QACN,oBAAC,GAAG;YACF,oBAAC,MAAM,IACL,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAE,uBAAuB,EACjC,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,GAAS,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAC9C,CACE,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { SegmentedControlProps } from "./Common";
|
|
3
|
-
export declare const SegmentedControl: ({ items, onChange,
|
|
3
|
+
export declare const SegmentedControl: ({ items, onChange, multiselect, selectLimit, ...props }: SegmentedControlProps) => React.JSX.Element | null;
|
package/dist/SegmentedControl.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
1
12
|
import React from "react";
|
|
2
13
|
import { Box } from "./Box";
|
|
3
14
|
import { Text } from "./Text";
|
|
4
|
-
export const SegmentedControl = (
|
|
15
|
+
export const SegmentedControl = (_a) => {
|
|
16
|
+
var { items, onChange = () => { }, multiselect = false, selectLimit = 1 } = _a, props = __rest(_a, ["items", "onChange", "multiselect", "selectLimit"]);
|
|
17
|
+
const selectedItemIndex = props.selectedItemIndex;
|
|
18
|
+
const selectedItemIndexes = props.selectedItemIndexes;
|
|
5
19
|
const renderItem = (item) => {
|
|
6
20
|
return (React.createElement(Text, { align: "center", weight: "bold" }, item));
|
|
7
21
|
// if (typeof item === "string") {
|
|
@@ -38,17 +52,19 @@ export const SegmentedControl = ({ items, onChange = () => { }, selectedItemInde
|
|
|
38
52
|
return;
|
|
39
53
|
}
|
|
40
54
|
if (multiselect) {
|
|
55
|
+
const typedOnChange = onChange;
|
|
41
56
|
if (selectedItemIndexes === null || selectedItemIndexes === void 0 ? void 0 : selectedItemIndexes.includes(index)) {
|
|
42
|
-
|
|
57
|
+
typedOnChange({ activeIndex: selectedItemIndexes.filter((i) => i !== index) });
|
|
43
58
|
}
|
|
44
59
|
else {
|
|
45
60
|
const currentIndexes = [...selectedItemIndexes];
|
|
46
61
|
currentIndexes === null || currentIndexes === void 0 ? void 0 : currentIndexes.push(index);
|
|
47
|
-
|
|
62
|
+
typedOnChange({ activeIndex: currentIndexes === null || currentIndexes === void 0 ? void 0 : currentIndexes.sort() });
|
|
48
63
|
}
|
|
49
64
|
}
|
|
50
65
|
else {
|
|
51
|
-
|
|
66
|
+
const typedOnChange = onChange;
|
|
67
|
+
typedOnChange({ activeIndex: index });
|
|
52
68
|
}
|
|
53
69
|
} }, renderItem(item)))))));
|
|
54
70
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.js","sourceRoot":"","sources":["../src/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SegmentedControl.js","sourceRoot":"","sources":["../src/SegmentedControl.tsx"],"names":[],"mappings":"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"}
|
package/dist/Table.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React, { ReactElement } from "react";
|
|
2
2
|
import { TableProps } from "./Common";
|
|
3
|
-
export declare const Table: ({ children, columns, borderStyle, alternateRowBackground, maxHeight, stickyHeader, }: TableProps) => React.ReactElement;
|
|
3
|
+
export declare const Table: ({ children, columns, borderStyle, alternateRowBackground, maxHeight, stickyHeader, sort, page: propsPage, setPage: propsSetPage, more, extraControls, }: TableProps) => React.ReactElement;
|
package/dist/Table.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import React, { Children } from "react";
|
|
2
|
-
import { ScrollView } from "
|
|
2
|
+
import { ScrollView } from "react-native";
|
|
3
|
+
import { Box } from "./Box";
|
|
4
|
+
import { PaginationControl } from "./Pagination";
|
|
3
5
|
import { TableContextProvider } from "./tableContext";
|
|
4
|
-
export const Table = ({ children, columns, borderStyle, alternateRowBackground = true, maxHeight, stickyHeader = true, }) => {
|
|
6
|
+
export const Table = ({ children, columns, borderStyle, alternateRowBackground = true, maxHeight, stickyHeader = true, sort, page: propsPage, setPage: propsSetPage, more, extraControls, }) => {
|
|
5
7
|
const arrayChildren = Children.toArray(children);
|
|
6
|
-
|
|
8
|
+
// Check if any of the rows below have a drawerContents prop to see if we need to render space
|
|
9
|
+
// for the caret.
|
|
10
|
+
const [sortColumn, setSortColumn] = React.useState(sort);
|
|
11
|
+
const [page, setPage] = React.useState(propsPage !== null && propsPage !== void 0 ? propsPage : 1);
|
|
7
12
|
// Check if any of the rows below have a drawerContents prop to see if we need to render space
|
|
8
13
|
// for the caret.
|
|
9
14
|
const hasDrawerContents = arrayChildren.some((child) => {
|
|
@@ -24,10 +29,17 @@ export const Table = ({ children, columns, borderStyle, alternateRowBackground =
|
|
|
24
29
|
else {
|
|
25
30
|
width = "100%";
|
|
26
31
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
const shouldPaginate = more || page > 1;
|
|
33
|
+
return (React.createElement(TableContextProvider, { alternateRowBackground: alternateRowBackground, borderStyle: borderStyle, columns: columns, hasDrawerContents: hasDrawerContents, page: page, setSortColumn: setSortColumn, sortColumn: sortColumn, stickyHeader: stickyHeader },
|
|
34
|
+
React.createElement(React.Fragment, null,
|
|
35
|
+
React.createElement(Box, { flex: "grow", maxWidth: "100%", width: width },
|
|
36
|
+
React.createElement(ScrollView, { horizontal: true, style: { width, maxWidth: "100%" } },
|
|
37
|
+
React.createElement(ScrollView, { stickyHeaderIndices: stickyHeader ? [0] : undefined, style: { width, maxWidth: "100%", flex: 1, maxHeight } }, Children.map(children, (child, index) => Boolean(child) &&
|
|
38
|
+
React.cloneElement(child, {
|
|
39
|
+
color: index % 2 === 1 && alternateRowBackground ? "lightGray" : "white",
|
|
40
|
+
}))))),
|
|
41
|
+
Boolean(shouldPaginate) && (React.createElement(Box, { alignItems: "center", borderTop: "gray", direction: "row", height: 60, paddingX: 8 },
|
|
42
|
+
React.createElement(PaginationControl, { page: propsPage !== null && propsPage !== void 0 ? propsPage : page, setPage: propsSetPage !== null && propsSetPage !== void 0 ? propsSetPage : setPage, shouldDisableBackButton: (propsPage !== null && propsPage !== void 0 ? propsPage : page) <= 1, shouldDisableNextButton: !more }),
|
|
43
|
+
Boolean(extraControls) && extraControls)))));
|
|
32
44
|
};
|
|
33
45
|
//# sourceMappingURL=Table.js.map
|
package/dist/Table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,QAAQ,EAAe,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../src/Table.tsx"],"names":[],"mappings":"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"}
|
package/dist/TapToEdit.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ReactElement } from "react";
|
|
2
2
|
import { TapToEditProps } from "./Common";
|
|
3
3
|
export declare function formatAddress(address: any, asString?: boolean): string;
|
|
4
|
-
export declare const TapToEdit: ({ value, setValue, placeholder, title, onSave, editable, isEditing, rowBoxProps, transform, fieldComponent, withConfirmation, confirmationText, confirmationHeading, description: propsDescription, showDescriptionAsTooltip, ...fieldProps }: TapToEditProps) => ReactElement;
|
|
4
|
+
export declare const TapToEdit: ({ value, setValue, placeholder, title, onSave, editable, isEditing, rowBoxProps, transform, fieldComponent, withConfirmation, confirmationText, confirmationHeading, description: propsDescription, showDescriptionAsTooltip, onlyShowDescriptionWhileEditing, ...fieldProps }: TapToEditProps) => ReactElement;
|
package/dist/TapToEdit.js
CHANGED
|
@@ -48,7 +48,7 @@ export const TapToEdit = (_a) => {
|
|
|
48
48
|
var { value, setValue, placeholder, title, onSave, editable = true, isEditing = false, rowBoxProps, transform, fieldComponent, withConfirmation = false, confirmationText = "Are you sure you want to save your changes?", confirmationHeading = "Confirm", description: propsDescription,
|
|
49
49
|
// openApiModel,
|
|
50
50
|
// openApiField,
|
|
51
|
-
showDescriptionAsTooltip = false } = _a, fieldProps = __rest(_a, ["value", "setValue", "placeholder", "title", "onSave", "editable", "isEditing", "rowBoxProps", "transform", "fieldComponent", "withConfirmation", "confirmationText", "confirmationHeading", "description", "showDescriptionAsTooltip"]);
|
|
51
|
+
showDescriptionAsTooltip = false, onlyShowDescriptionWhileEditing = true } = _a, fieldProps = __rest(_a, ["value", "setValue", "placeholder", "title", "onSave", "editable", "isEditing", "rowBoxProps", "transform", "fieldComponent", "withConfirmation", "confirmationText", "confirmationHeading", "description", "showDescriptionAsTooltip", "onlyShowDescriptionWhileEditing"]);
|
|
52
52
|
const [editing, setEditing] = useState(false);
|
|
53
53
|
const [initialValue] = useState(value);
|
|
54
54
|
// const {getModelField} = useOpenAPISpec();
|
|
@@ -141,7 +141,7 @@ export const TapToEdit = (_a) => {
|
|
|
141
141
|
React.createElement(Text, { weight: "bold" },
|
|
142
142
|
title,
|
|
143
143
|
":"),
|
|
144
|
-
Boolean(description && !showDescriptionAsTooltip) && React.createElement(Text,
|
|
144
|
+
Boolean(description && !showDescriptionAsTooltip && !onlyShowDescriptionWhileEditing) && (React.createElement(Text, { color: "gray", size: "sm" }, description))));
|
|
145
145
|
};
|
|
146
146
|
return (React.createElement(Box, Object.assign({ direction: "row", justifyContent: "between", paddingX: 3, paddingY: 2, width: "100%" }, rowBoxProps),
|
|
147
147
|
showDescriptionAsTooltip ? (React.createElement(Tooltip, { idealDirection: "top", text: description }, renderTitleDescription())) : (renderTitleDescription()),
|
package/dist/TapToEdit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TapToEdit.js","sourceRoot":"","sources":["../src/TapToEdit.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TapToEdit.js","sourceRoot":"","sources":["../src/TapToEdit.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC"}
|
package/dist/tableContext.d.ts
CHANGED
|
@@ -1,21 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
3
|
-
column: number | undefined;
|
|
4
|
-
direction: "asc" | "desc" | undefined;
|
|
5
|
-
}
|
|
6
|
-
interface TableContextType {
|
|
7
|
-
columns: Array<number | string>;
|
|
8
|
-
hasDrawerContents: boolean;
|
|
9
|
-
sortColumn?: ColumnSortInterface | undefined;
|
|
10
|
-
setSortColumn?: (sort: ColumnSortInterface | undefined) => void;
|
|
11
|
-
stickyHeader?: boolean;
|
|
12
|
-
borderStyle?: "sm" | "none";
|
|
13
|
-
alternateRowBackground?: boolean;
|
|
14
|
-
}
|
|
15
|
-
interface Props extends TableContextType {
|
|
16
|
-
children: React.ReactElement;
|
|
17
|
-
}
|
|
2
|
+
import { TableContextProviderProps, TableContextType } from "./Common";
|
|
18
3
|
export declare const Provider: React.Provider<TableContextType>;
|
|
19
|
-
export declare const TableContextProvider: ({ children, columns, hasDrawerContents, sortColumn, setSortColumn, stickyHeader, borderStyle, alternateRowBackground, }:
|
|
4
|
+
export declare const TableContextProvider: ({ children, columns, hasDrawerContents, sortColumn, setSortColumn, stickyHeader, borderStyle, alternateRowBackground, page, }: TableContextProviderProps) => React.ReactElement<typeof Provider>;
|
|
20
5
|
export declare function useTableContext(): TableContextType;
|
|
21
|
-
export {};
|
package/dist/tableContext.js
CHANGED
|
@@ -7,9 +7,10 @@ const TableContext = createContext({
|
|
|
7
7
|
stickyHeader: true,
|
|
8
8
|
borderStyle: "sm",
|
|
9
9
|
alternateRowBackground: true,
|
|
10
|
+
page: 1,
|
|
10
11
|
});
|
|
11
12
|
export const { Provider } = TableContext;
|
|
12
|
-
export const TableContextProvider = ({ children, columns, hasDrawerContents, sortColumn, setSortColumn, stickyHeader, borderStyle, alternateRowBackground, }) => {
|
|
13
|
+
export const TableContextProvider = ({ children, columns, hasDrawerContents, sortColumn, setSortColumn, stickyHeader, borderStyle, alternateRowBackground, page, }) => {
|
|
13
14
|
return (React.createElement(Provider, { value: {
|
|
14
15
|
columns,
|
|
15
16
|
alternateRowBackground,
|
|
@@ -18,6 +19,7 @@ export const TableContextProvider = ({ children, columns, hasDrawerContents, sor
|
|
|
18
19
|
sortColumn,
|
|
19
20
|
setSortColumn,
|
|
20
21
|
stickyHeader,
|
|
22
|
+
page,
|
|
21
23
|
} }, children));
|
|
22
24
|
};
|
|
23
25
|
export function useTableContext() {
|
package/dist/tableContext.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableContext.js","sourceRoot":"","sources":["../src/tableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAU,aAAa,EAAE,UAAU,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tableContext.js","sourceRoot":"","sources":["../src/tableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAU,aAAa,EAAE,UAAU,EAAC,MAAM,OAAO,CAAC;AAIhE,MAAM,YAAY,GAA8B,aAAa,CAAmB;IAC9E,OAAO,EAAE,EAAE;IACX,iBAAiB,EAAE,KAAK;IACxB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;IACvB,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,sBAAsB,EAAE,IAAI;IAC5B,IAAI,EAAE,CAAC;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAC,QAAQ,EAAC,GAAG,YAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,QAAQ,EACR,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,IAAI,GACsB,EAAuC,EAAE;IACnE,OAAO,CACL,oBAAC,QAAQ,IACP,KAAK,EAAE;YACL,OAAO;YACP,sBAAsB;YACtB,WAAW;YACX,iBAAiB;YACjB,UAAU;YACV,aAAa;YACb,YAAY;YACZ,IAAI;SACL,IAEA,QAAQ,CACA,CACZ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,MAAM,EACJ,OAAO,EACP,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACZ,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC7B,OAAO;QACL,OAAO;QACP,iBAAiB;QACjB,aAAa;QACb,UAAU;QACV,YAAY;QACZ,sBAAsB;QACtB,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
package/src/Common.ts
CHANGED
|
@@ -1878,16 +1878,28 @@ export interface PillProps {
|
|
|
1878
1878
|
onClick: (enabled: boolean) => void;
|
|
1879
1879
|
}
|
|
1880
1880
|
|
|
1881
|
-
|
|
1881
|
+
type BaseSegmentedControlProps = {
|
|
1882
1882
|
items: string[];
|
|
1883
|
-
onChange?: ({activeIndex}: {activeIndex: number | number[]}) => void;
|
|
1884
|
-
selectedItemIndex?: number;
|
|
1885
|
-
selectedItemIndexes?: number[];
|
|
1886
1883
|
responsive?: boolean;
|
|
1887
|
-
size?: "md" | "lg";
|
|
1888
|
-
multiselect?: boolean;
|
|
1884
|
+
size?: "md" | "lg";
|
|
1889
1885
|
selectLimit?: number;
|
|
1890
|
-
}
|
|
1886
|
+
};
|
|
1887
|
+
|
|
1888
|
+
export type SegmentedControlPropsSingleSelect = BaseSegmentedControlProps & {
|
|
1889
|
+
multiselect?: false;
|
|
1890
|
+
onChange: ({activeIndex}: {activeIndex: number}) => void;
|
|
1891
|
+
selectedItemIndex?: number;
|
|
1892
|
+
};
|
|
1893
|
+
|
|
1894
|
+
export type SegmentedControlPropsMultiSelect = BaseSegmentedControlProps & {
|
|
1895
|
+
multiselect: true;
|
|
1896
|
+
onChange: ({activeIndex}: {activeIndex: number[]}) => void;
|
|
1897
|
+
selectedItemIndexes?: number[];
|
|
1898
|
+
};
|
|
1899
|
+
|
|
1900
|
+
export type SegmentedControlProps =
|
|
1901
|
+
| SegmentedControlPropsSingleSelect
|
|
1902
|
+
| SegmentedControlPropsMultiSelect;
|
|
1891
1903
|
|
|
1892
1904
|
// Shared props for fields with labels, subtext, and error messages.
|
|
1893
1905
|
export interface FieldWithLabelsProps {
|
|
@@ -2902,6 +2914,11 @@ export interface SpinnerProps {
|
|
|
2902
2914
|
color?: Color;
|
|
2903
2915
|
}
|
|
2904
2916
|
|
|
2917
|
+
export type ColumnSortInterface = {
|
|
2918
|
+
column: number;
|
|
2919
|
+
direction: "asc" | "desc";
|
|
2920
|
+
};
|
|
2921
|
+
|
|
2905
2922
|
export interface TableProps {
|
|
2906
2923
|
/**
|
|
2907
2924
|
* Must be instances of TableHeader, TableRow, and/or TableFooter components.
|
|
@@ -2928,6 +2945,27 @@ export interface TableProps {
|
|
|
2928
2945
|
* If true, alternate rows will have a light gray background. Defaults to true.
|
|
2929
2946
|
*/
|
|
2930
2947
|
alternateRowBackground?: boolean;
|
|
2948
|
+
|
|
2949
|
+
/**
|
|
2950
|
+
* Control sort outside of the Table
|
|
2951
|
+
*/
|
|
2952
|
+
sort?: ColumnSortInterface;
|
|
2953
|
+
/**
|
|
2954
|
+
* Set the page outside of the Table
|
|
2955
|
+
*/
|
|
2956
|
+
page?: number;
|
|
2957
|
+
/**
|
|
2958
|
+
* Set the page outside of the Table
|
|
2959
|
+
*/
|
|
2960
|
+
setPage?: (page: number) => void;
|
|
2961
|
+
/**
|
|
2962
|
+
* If true, the table will render a next page button. Defaults to true.
|
|
2963
|
+
*/
|
|
2964
|
+
more?: boolean;
|
|
2965
|
+
/**
|
|
2966
|
+
* Extra controls to render below the table next to pagination
|
|
2967
|
+
*/
|
|
2968
|
+
extraControls?: React.ReactElement;
|
|
2931
2969
|
}
|
|
2932
2970
|
|
|
2933
2971
|
export interface TableHeaderProps {
|
|
@@ -2981,6 +3019,25 @@ export interface TableRowProps {
|
|
|
2981
3019
|
color?: BoxColor;
|
|
2982
3020
|
}
|
|
2983
3021
|
|
|
3022
|
+
export type TableFilters = Record<string, string[]>;
|
|
3023
|
+
|
|
3024
|
+
export type TableSearch = {search: string; field: string};
|
|
3025
|
+
|
|
3026
|
+
export interface TableContextType {
|
|
3027
|
+
columns: Array<number | string>;
|
|
3028
|
+
hasDrawerContents: boolean;
|
|
3029
|
+
sortColumn?: ColumnSortInterface | undefined;
|
|
3030
|
+
setSortColumn?: (sort: ColumnSortInterface | undefined) => void;
|
|
3031
|
+
stickyHeader?: boolean;
|
|
3032
|
+
borderStyle?: "sm" | "none";
|
|
3033
|
+
alternateRowBackground?: boolean;
|
|
3034
|
+
page?: number;
|
|
3035
|
+
}
|
|
3036
|
+
|
|
3037
|
+
export interface TableContextProviderProps extends TableContextType {
|
|
3038
|
+
children: React.ReactElement;
|
|
3039
|
+
}
|
|
3040
|
+
|
|
2984
3041
|
export interface TextProps {
|
|
2985
3042
|
align?: "left" | "right" | "center" | "justify"; // default "left"
|
|
2986
3043
|
children?: React.ReactNode;
|
|
@@ -3063,6 +3120,8 @@ export interface TapToEditProps extends Omit<FieldProps, "onChange" | "value"> {
|
|
|
3063
3120
|
openApiModel?: string;
|
|
3064
3121
|
openApiField?: string;
|
|
3065
3122
|
showDescriptionAsTooltip?: boolean;
|
|
3123
|
+
// Default true. If false, description is shown below the value always.
|
|
3124
|
+
onlyShowDescriptionWhileEditing?: boolean;
|
|
3066
3125
|
}
|
|
3067
3126
|
|
|
3068
3127
|
export interface APIError {
|
|
@@ -3081,3 +3140,70 @@ export interface APIError {
|
|
|
3081
3140
|
meta?: {[id: string]: any};
|
|
3082
3141
|
};
|
|
3083
3142
|
}
|
|
3143
|
+
|
|
3144
|
+
export type OpenApiPropertyType =
|
|
3145
|
+
| "string"
|
|
3146
|
+
| "date"
|
|
3147
|
+
| "datetime"
|
|
3148
|
+
| "boolean"
|
|
3149
|
+
| "array"
|
|
3150
|
+
| "object"
|
|
3151
|
+
| "number"
|
|
3152
|
+
| "any";
|
|
3153
|
+
|
|
3154
|
+
export type OpenApiProperty = {
|
|
3155
|
+
type?: OpenApiPropertyType;
|
|
3156
|
+
format?: string;
|
|
3157
|
+
properties?: OpenApiProperty;
|
|
3158
|
+
items?: OpenApiProperty[];
|
|
3159
|
+
description?: string;
|
|
3160
|
+
// TODO: is this actually there?
|
|
3161
|
+
required?: string[];
|
|
3162
|
+
enum?: string[];
|
|
3163
|
+
};
|
|
3164
|
+
|
|
3165
|
+
export type ModelFields = {
|
|
3166
|
+
type: "object" | "array";
|
|
3167
|
+
required: string[];
|
|
3168
|
+
properties: {[name: string]: OpenApiProperty};
|
|
3169
|
+
};
|
|
3170
|
+
|
|
3171
|
+
export interface OpenAPISpec {
|
|
3172
|
+
paths: {
|
|
3173
|
+
[key: string]: any;
|
|
3174
|
+
};
|
|
3175
|
+
}
|
|
3176
|
+
|
|
3177
|
+
export type ModelFieldConfig = any;
|
|
3178
|
+
|
|
3179
|
+
export interface OpenAPIProviderProps {
|
|
3180
|
+
children: React.ReactElement;
|
|
3181
|
+
specUrl?: string;
|
|
3182
|
+
}
|
|
3183
|
+
|
|
3184
|
+
export interface OpenAPIContextType {
|
|
3185
|
+
spec: OpenAPISpec | null;
|
|
3186
|
+
getModelFields: (modelName: string) => ModelFields | null;
|
|
3187
|
+
getModelField: (modelName: string, field: string) => OpenApiProperty | null;
|
|
3188
|
+
}
|
|
3189
|
+
|
|
3190
|
+
// The config for a single column in the table display of a model.
|
|
3191
|
+
export interface ModelAdminFieldConfig {
|
|
3192
|
+
fieldKey: string; // Dot notation representation of the field.
|
|
3193
|
+
title: string;
|
|
3194
|
+
description?: string;
|
|
3195
|
+
type: OpenApiPropertyType;
|
|
3196
|
+
width?: number;
|
|
3197
|
+
minWidth?: number;
|
|
3198
|
+
options?: string[];
|
|
3199
|
+
sort?: string;
|
|
3200
|
+
CustomComponent?: (props: ModelAdminCustomComponentProps) => React.ReactElement | null;
|
|
3201
|
+
}
|
|
3202
|
+
|
|
3203
|
+
// The props for a custom column component for ModelAdmin.
|
|
3204
|
+
export interface ModelAdminCustomComponentProps extends Omit<FieldProps, "name"> {
|
|
3205
|
+
doc: any; // The rest of the document.
|
|
3206
|
+
fieldKey: string; // Dot notation representation of the field.
|
|
3207
|
+
// user: User;
|
|
3208
|
+
editing: boolean; // Allow for inline editing of the field.
|
|
3209
|
+
}
|
package/src/FernsProvider.tsx
CHANGED
|
@@ -2,10 +2,17 @@ import React from "react";
|
|
|
2
2
|
import {Host} from "react-native-portalize";
|
|
3
3
|
import {ToastProvider} from "react-native-toast-notifications";
|
|
4
4
|
|
|
5
|
+
import {OpenAPIProvider} from "./OpenAPIContext";
|
|
5
6
|
import {ThemeProvider} from "./Theme";
|
|
6
7
|
import {Toast} from "./Toast";
|
|
7
8
|
|
|
8
|
-
export const FernsProvider = ({
|
|
9
|
+
export const FernsProvider = ({
|
|
10
|
+
children,
|
|
11
|
+
openAPISpecUrl,
|
|
12
|
+
}: {
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
openAPISpecUrl?: string;
|
|
15
|
+
}): React.ReactElement => {
|
|
9
16
|
return (
|
|
10
17
|
<ThemeProvider>
|
|
11
18
|
<ToastProvider
|
|
@@ -17,7 +24,9 @@ export const FernsProvider = ({children}: {children: React.ReactNode}): React.Re
|
|
|
17
24
|
renderToast={(toastOptions) => <Toast {...(toastOptions as any)} />}
|
|
18
25
|
swipeEnabled
|
|
19
26
|
>
|
|
20
|
-
<
|
|
27
|
+
<OpenAPIProvider specUrl={openAPISpecUrl}>
|
|
28
|
+
<Host>{children}</Host>
|
|
29
|
+
</OpenAPIProvider>
|
|
21
30
|
</ToastProvider>
|
|
22
31
|
</ThemeProvider>
|
|
23
32
|
);
|
package/src/OpenAPIContext.tsx
CHANGED
|
@@ -1,42 +1,16 @@
|
|
|
1
1
|
import camelCase from "lodash/camelCase";
|
|
2
2
|
import React, {createContext, useContext, useEffect, useState} from "react";
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export type OpenApiPropertyType = "string" | "number" | "boolean" | "array" | "object";
|
|
13
|
-
export type OpenApiProperty = {
|
|
14
|
-
type?: OpenApiPropertyType;
|
|
15
|
-
format?: string;
|
|
16
|
-
properties?: OpenApiProperty;
|
|
17
|
-
items?: OpenApiProperty[];
|
|
18
|
-
description?: string;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export type ModelFields = {
|
|
22
|
-
type: "object" | "array";
|
|
23
|
-
required: string[];
|
|
24
|
-
properties: {[name: string]: OpenApiProperty};
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
interface OpenAPIContextType {
|
|
28
|
-
spec: OpenAPISpec | null;
|
|
29
|
-
getModelFields: (modelName: string) => ModelFields | null;
|
|
30
|
-
getModelField: (modelName: string, field: string) => OpenApiProperty;
|
|
31
|
-
}
|
|
4
|
+
import {
|
|
5
|
+
ModelFieldConfig,
|
|
6
|
+
ModelFields,
|
|
7
|
+
OpenAPIContextType,
|
|
8
|
+
OpenAPIProviderProps,
|
|
9
|
+
OpenAPISpec,
|
|
10
|
+
} from "./Common";
|
|
32
11
|
|
|
33
12
|
const OpenAPIContext = createContext<OpenAPIContextType | null>(null);
|
|
34
13
|
|
|
35
|
-
interface OpenAPIProviderProps {
|
|
36
|
-
children: React.ReactElement;
|
|
37
|
-
specUrl?: string;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
14
|
export const OpenAPIProvider = ({children, specUrl}: OpenAPIProviderProps): React.ReactElement => {
|
|
41
15
|
const [spec, setSpec] = useState<OpenAPISpec | null>(null);
|
|
42
16
|
|
|
@@ -50,10 +24,8 @@ export const OpenAPIProvider = ({children, specUrl}: OpenAPIProviderProps): Reac
|
|
|
50
24
|
return null;
|
|
51
25
|
}
|
|
52
26
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
?.items;
|
|
56
|
-
return items;
|
|
27
|
+
return rootConfig?.get?.responses?.["200"]?.content?.["application/json"]?.schema?.properties
|
|
28
|
+
?.data?.items;
|
|
57
29
|
};
|
|
58
30
|
|
|
59
31
|
const getModelField = (modelName: string, fieldName: string): ModelFieldConfig => {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React, {ReactElement} from "react";
|
|
2
|
+
|
|
3
|
+
import {Box} from "./Box";
|
|
4
|
+
import {Button} from "./Button";
|
|
5
|
+
import {Text} from "./Text";
|
|
6
|
+
|
|
7
|
+
interface PaginationControlProps {
|
|
8
|
+
shouldDisableBackButton: boolean;
|
|
9
|
+
shouldDisableNextButton: boolean;
|
|
10
|
+
page: number;
|
|
11
|
+
setPage: (page: number) => void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const PaginationControl = ({
|
|
15
|
+
shouldDisableBackButton,
|
|
16
|
+
shouldDisableNextButton,
|
|
17
|
+
page,
|
|
18
|
+
setPage,
|
|
19
|
+
}: PaginationControlProps): ReactElement => {
|
|
20
|
+
return (
|
|
21
|
+
<Box direction="row" paddingY={2}>
|
|
22
|
+
<Box>
|
|
23
|
+
<Button
|
|
24
|
+
color="blue"
|
|
25
|
+
disabled={shouldDisableBackButton}
|
|
26
|
+
text="Prev Page"
|
|
27
|
+
onClick={(): void => setPage(Number(page) - 1)}
|
|
28
|
+
/>
|
|
29
|
+
</Box>
|
|
30
|
+
<Box justifyContent="center" paddingX={4}>
|
|
31
|
+
<Text>Page: {page}</Text>
|
|
32
|
+
</Box>
|
|
33
|
+
<Box>
|
|
34
|
+
<Button
|
|
35
|
+
color="blue"
|
|
36
|
+
disabled={shouldDisableNextButton}
|
|
37
|
+
text="Next Page"
|
|
38
|
+
onClick={(): void => setPage(Number(page) + 1)}
|
|
39
|
+
/>
|
|
40
|
+
</Box>
|
|
41
|
+
</Box>
|
|
42
|
+
);
|
|
43
|
+
};
|
package/src/SegmentedControl.tsx
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
3
|
import {Box} from "./Box";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
SegmentedControlProps,
|
|
6
|
+
SegmentedControlPropsMultiSelect,
|
|
7
|
+
SegmentedControlPropsSingleSelect,
|
|
8
|
+
} from "./Common";
|
|
5
9
|
import {Text} from "./Text";
|
|
6
10
|
|
|
7
11
|
export const SegmentedControl = ({
|
|
8
12
|
items,
|
|
9
13
|
onChange = () => {},
|
|
10
|
-
selectedItemIndexes = undefined,
|
|
11
|
-
selectedItemIndex = undefined,
|
|
12
14
|
multiselect = false,
|
|
13
15
|
selectLimit = 1,
|
|
16
|
+
...props
|
|
14
17
|
}: SegmentedControlProps) => {
|
|
18
|
+
const selectedItemIndex = (props as SegmentedControlPropsSingleSelect).selectedItemIndex;
|
|
19
|
+
const selectedItemIndexes = (props as SegmentedControlPropsMultiSelect).selectedItemIndexes;
|
|
20
|
+
|
|
15
21
|
const renderItem = (item: string | React.ReactNode) => {
|
|
16
22
|
return (
|
|
17
23
|
<Text align="center" weight="bold">
|
|
@@ -81,15 +87,19 @@ export const SegmentedControl = ({
|
|
|
81
87
|
return;
|
|
82
88
|
}
|
|
83
89
|
if (multiselect) {
|
|
90
|
+
const typedOnChange =
|
|
91
|
+
onChange as unknown as SegmentedControlPropsMultiSelect["onChange"];
|
|
84
92
|
if (selectedItemIndexes?.includes(index)) {
|
|
85
|
-
|
|
93
|
+
typedOnChange({activeIndex: selectedItemIndexes.filter((i) => i !== index)});
|
|
86
94
|
} else {
|
|
87
95
|
const currentIndexes = [...(selectedItemIndexes as number[])];
|
|
88
96
|
currentIndexes?.push(index);
|
|
89
|
-
|
|
97
|
+
typedOnChange({activeIndex: currentIndexes?.sort() as number[]});
|
|
90
98
|
}
|
|
91
99
|
} else {
|
|
92
|
-
|
|
100
|
+
const typedOnChange =
|
|
101
|
+
onChange as unknown as SegmentedControlPropsSingleSelect["onChange"];
|
|
102
|
+
typedOnChange({activeIndex: index});
|
|
93
103
|
}
|
|
94
104
|
}}
|
|
95
105
|
>
|
package/src/Table.tsx
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React, {Children, ReactElement} from "react";
|
|
2
|
+
import {ScrollView} from "react-native";
|
|
2
3
|
import {DimensionValue} from "react-native/Libraries/StyleSheet/StyleSheetTypes";
|
|
3
4
|
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import {Box} from "./Box";
|
|
6
|
+
import {ColumnSortInterface, TableProps} from "./Common";
|
|
7
|
+
import {PaginationControl} from "./Pagination";
|
|
8
|
+
import {TableContextProvider} from "./tableContext";
|
|
7
9
|
|
|
8
10
|
export const Table = ({
|
|
9
11
|
children,
|
|
@@ -12,10 +14,18 @@ export const Table = ({
|
|
|
12
14
|
alternateRowBackground = true,
|
|
13
15
|
maxHeight,
|
|
14
16
|
stickyHeader = true,
|
|
17
|
+
sort,
|
|
18
|
+
page: propsPage,
|
|
19
|
+
setPage: propsSetPage,
|
|
20
|
+
more,
|
|
21
|
+
extraControls,
|
|
15
22
|
}: TableProps): React.ReactElement => {
|
|
16
23
|
const arrayChildren = Children.toArray(children);
|
|
17
|
-
const [sortColumn, setSortColumn] = React.useState<ColumnSortInterface | undefined>(undefined);
|
|
18
24
|
|
|
25
|
+
// Check if any of the rows below have a drawerContents prop to see if we need to render space
|
|
26
|
+
// for the caret.
|
|
27
|
+
const [sortColumn, setSortColumn] = React.useState<ColumnSortInterface | undefined>(sort);
|
|
28
|
+
const [page, setPage] = React.useState<number>(propsPage ?? 1);
|
|
19
29
|
// Check if any of the rows below have a drawerContents prop to see if we need to render space
|
|
20
30
|
// for the caret.
|
|
21
31
|
const hasDrawerContents = arrayChildren.some((child) => {
|
|
@@ -36,28 +46,49 @@ export const Table = ({
|
|
|
36
46
|
width = "100%";
|
|
37
47
|
}
|
|
38
48
|
|
|
49
|
+
const shouldPaginate = more || page > 1;
|
|
50
|
+
|
|
39
51
|
return (
|
|
40
52
|
<TableContextProvider
|
|
41
53
|
alternateRowBackground={alternateRowBackground}
|
|
42
54
|
borderStyle={borderStyle}
|
|
43
55
|
columns={columns}
|
|
44
56
|
hasDrawerContents={hasDrawerContents}
|
|
57
|
+
page={page}
|
|
45
58
|
setSortColumn={setSortColumn}
|
|
46
59
|
sortColumn={sortColumn}
|
|
47
60
|
stickyHeader={stickyHeader}
|
|
48
61
|
>
|
|
49
|
-
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
<>
|
|
63
|
+
<Box flex="grow" maxWidth="100%" width={width}>
|
|
64
|
+
<ScrollView horizontal style={{width, maxWidth: "100%"}}>
|
|
65
|
+
<ScrollView
|
|
66
|
+
stickyHeaderIndices={stickyHeader ? [0] : undefined}
|
|
67
|
+
style={{width, maxWidth: "100%", flex: 1, maxHeight}}
|
|
68
|
+
>
|
|
69
|
+
{Children.map(
|
|
70
|
+
children,
|
|
71
|
+
(child, index) =>
|
|
72
|
+
Boolean(child) &&
|
|
73
|
+
React.cloneElement(child as any, {
|
|
74
|
+
color: index % 2 === 1 && alternateRowBackground ? "lightGray" : "white",
|
|
75
|
+
})
|
|
76
|
+
)}
|
|
77
|
+
</ScrollView>
|
|
78
|
+
</ScrollView>
|
|
79
|
+
</Box>
|
|
80
|
+
{Boolean(shouldPaginate) && (
|
|
81
|
+
<Box alignItems="center" borderTop="gray" direction="row" height={60} paddingX={8}>
|
|
82
|
+
<PaginationControl
|
|
83
|
+
page={propsPage ?? page}
|
|
84
|
+
setPage={propsSetPage ?? setPage}
|
|
85
|
+
shouldDisableBackButton={(propsPage ?? page) <= 1}
|
|
86
|
+
shouldDisableNextButton={!more}
|
|
87
|
+
/>
|
|
88
|
+
{Boolean(extraControls) && extraControls}
|
|
89
|
+
</Box>
|
|
90
|
+
)}
|
|
91
|
+
</>
|
|
61
92
|
</TableContextProvider>
|
|
62
93
|
);
|
|
63
94
|
};
|
package/src/TapToEdit.tsx
CHANGED
|
@@ -66,6 +66,7 @@ export const TapToEdit = ({
|
|
|
66
66
|
// openApiModel,
|
|
67
67
|
// openApiField,
|
|
68
68
|
showDescriptionAsTooltip = false,
|
|
69
|
+
onlyShowDescriptionWhileEditing = true,
|
|
69
70
|
...fieldProps
|
|
70
71
|
}: TapToEditProps): ReactElement => {
|
|
71
72
|
const [editing, setEditing] = useState(false);
|
|
@@ -189,7 +190,13 @@ export const TapToEdit = ({
|
|
|
189
190
|
return (
|
|
190
191
|
<Box flex="grow">
|
|
191
192
|
<Text weight="bold">{title}:</Text>
|
|
192
|
-
{Boolean(
|
|
193
|
+
{Boolean(
|
|
194
|
+
description && !showDescriptionAsTooltip && !onlyShowDescriptionWhileEditing
|
|
195
|
+
) && (
|
|
196
|
+
<Text color="gray" size="sm">
|
|
197
|
+
{description}
|
|
198
|
+
</Text>
|
|
199
|
+
)}
|
|
193
200
|
</Box>
|
|
194
201
|
);
|
|
195
202
|
};
|
package/src/index.tsx
CHANGED
package/src/tableContext.tsx
CHANGED
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
import React, {Context, createContext, useContext} from "react";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
column: number | undefined;
|
|
5
|
-
direction: "asc" | "desc" | undefined;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
interface TableContextType {
|
|
9
|
-
columns: Array<number | string>;
|
|
10
|
-
hasDrawerContents: boolean;
|
|
11
|
-
sortColumn?: ColumnSortInterface | undefined;
|
|
12
|
-
setSortColumn?: (sort: ColumnSortInterface | undefined) => void;
|
|
13
|
-
stickyHeader?: boolean;
|
|
14
|
-
borderStyle?: "sm" | "none";
|
|
15
|
-
alternateRowBackground?: boolean;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
interface Props extends TableContextType {
|
|
19
|
-
children: React.ReactElement;
|
|
20
|
-
}
|
|
3
|
+
import {TableContextProviderProps, TableContextType} from "./Common";
|
|
21
4
|
|
|
22
5
|
const TableContext: Context<TableContextType> = createContext<TableContextType>({
|
|
23
6
|
columns: [],
|
|
@@ -27,6 +10,7 @@ const TableContext: Context<TableContextType> = createContext<TableContextType>(
|
|
|
27
10
|
stickyHeader: true,
|
|
28
11
|
borderStyle: "sm",
|
|
29
12
|
alternateRowBackground: true,
|
|
13
|
+
page: 1,
|
|
30
14
|
});
|
|
31
15
|
|
|
32
16
|
export const {Provider} = TableContext;
|
|
@@ -40,7 +24,8 @@ export const TableContextProvider = ({
|
|
|
40
24
|
stickyHeader,
|
|
41
25
|
borderStyle,
|
|
42
26
|
alternateRowBackground,
|
|
43
|
-
|
|
27
|
+
page,
|
|
28
|
+
}: TableContextProviderProps): React.ReactElement<typeof Provider> => {
|
|
44
29
|
return (
|
|
45
30
|
<Provider
|
|
46
31
|
value={{
|
|
@@ -51,6 +36,7 @@ export const TableContextProvider = ({
|
|
|
51
36
|
sortColumn,
|
|
52
37
|
setSortColumn,
|
|
53
38
|
stickyHeader,
|
|
39
|
+
page,
|
|
54
40
|
}}
|
|
55
41
|
>
|
|
56
42
|
{children}
|