@etsoo/materialui 1.0.71 → 1.0.73
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/lib/pages/ViewPage.d.ts +2 -1
- package/lib/pages/ViewPage.js +4 -0
- package/package.json +1 -1
- package/src/pages/ViewPage.tsx +13 -4
package/lib/pages/ViewPage.d.ts
CHANGED
|
@@ -29,10 +29,11 @@ export interface ViewPageField<T extends object> extends GridProps {
|
|
|
29
29
|
*/
|
|
30
30
|
renderProps?: GridColumnRenderProps;
|
|
31
31
|
}
|
|
32
|
+
declare type ViewPageFieldTypeNarrow<T extends object> = (string & keyof T) | [string & keyof T, GridDataType, GridColumnRenderProps?, RowType?] | ViewPageField<T>;
|
|
32
33
|
/**
|
|
33
34
|
* View page field type
|
|
34
35
|
*/
|
|
35
|
-
export declare type ViewPageFieldType<T extends object> =
|
|
36
|
+
export declare type ViewPageFieldType<T extends object> = ViewPageFieldTypeNarrow<T> | ((data: T) => React.ReactNode);
|
|
36
37
|
/**
|
|
37
38
|
* View page props
|
|
38
39
|
*/
|
package/lib/pages/ViewPage.js
CHANGED
|
@@ -92,6 +92,10 @@ export function ViewPage(props) {
|
|
|
92
92
|
}
|
|
93
93
|
} }, fields.map((field, index) => {
|
|
94
94
|
// Get data
|
|
95
|
+
if (typeof field === 'function') {
|
|
96
|
+
// Most flexible way, do whatever you want
|
|
97
|
+
return field(data);
|
|
98
|
+
}
|
|
95
99
|
const [itemData, itemLabel, gridProps] = getItemField(field, data);
|
|
96
100
|
// Some callback function may return '' instead of undefined
|
|
97
101
|
if (itemData == null || itemData === '')
|
package/package.json
CHANGED
package/src/pages/ViewPage.tsx
CHANGED
|
@@ -48,13 +48,17 @@ export interface ViewPageField<T extends object> extends GridProps {
|
|
|
48
48
|
renderProps?: GridColumnRenderProps;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
type ViewPageFieldTypeNarrow<T extends object> =
|
|
52
|
+
| (string & keyof T)
|
|
53
|
+
| [string & keyof T, GridDataType, GridColumnRenderProps?, RowType?]
|
|
54
|
+
| ViewPageField<T>;
|
|
55
|
+
|
|
51
56
|
/**
|
|
52
57
|
* View page field type
|
|
53
58
|
*/
|
|
54
59
|
export type ViewPageFieldType<T extends object> =
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
| ViewPageField<T>;
|
|
60
|
+
| ViewPageFieldTypeNarrow<T>
|
|
61
|
+
| ((data: T) => React.ReactNode);
|
|
58
62
|
|
|
59
63
|
/**
|
|
60
64
|
* View page props
|
|
@@ -118,7 +122,7 @@ function getResp(singleRow: RowType) {
|
|
|
118
122
|
}
|
|
119
123
|
|
|
120
124
|
function getItemField<T extends object>(
|
|
121
|
-
field:
|
|
125
|
+
field: ViewPageFieldTypeNarrow<T>,
|
|
122
126
|
data: T
|
|
123
127
|
): [React.ReactNode, React.ReactNode, GridProps] {
|
|
124
128
|
// Item data and label
|
|
@@ -232,6 +236,11 @@ export function ViewPage<T extends DataTypes.StringRecord>(
|
|
|
232
236
|
>
|
|
233
237
|
{fields.map((field, index) => {
|
|
234
238
|
// Get data
|
|
239
|
+
if (typeof field === 'function') {
|
|
240
|
+
// Most flexible way, do whatever you want
|
|
241
|
+
return field(data);
|
|
242
|
+
}
|
|
243
|
+
|
|
235
244
|
const [itemData, itemLabel, gridProps] =
|
|
236
245
|
getItemField(field, data);
|
|
237
246
|
|