@etsoo/materialui 1.0.71 → 1.0.72
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 -5
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,14 +48,17 @@ export interface ViewPageField<T extends object> extends GridProps {
|
|
|
48
48
|
renderProps?: GridColumnRenderProps;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
* View page field type
|
|
53
|
-
*/
|
|
54
|
-
export type ViewPageFieldType<T extends object> =
|
|
51
|
+
type ViewPageFieldTypeNarrow<T extends object> =
|
|
55
52
|
| (string & keyof T)
|
|
56
53
|
| [string & keyof T, GridDataType, GridColumnRenderProps?, RowType?]
|
|
57
54
|
| ViewPageField<T>;
|
|
58
55
|
|
|
56
|
+
/**
|
|
57
|
+
* View page field type
|
|
58
|
+
*/
|
|
59
|
+
export type ViewPageFieldType<T extends object> = ViewPageFieldTypeNarrow<T> &
|
|
60
|
+
((data: T) => React.ReactNode);
|
|
61
|
+
|
|
59
62
|
/**
|
|
60
63
|
* View page props
|
|
61
64
|
*/
|
|
@@ -118,7 +121,7 @@ function getResp(singleRow: RowType) {
|
|
|
118
121
|
}
|
|
119
122
|
|
|
120
123
|
function getItemField<T extends object>(
|
|
121
|
-
field:
|
|
124
|
+
field: ViewPageFieldTypeNarrow<T>,
|
|
122
125
|
data: T
|
|
123
126
|
): [React.ReactNode, React.ReactNode, GridProps] {
|
|
124
127
|
// Item data and label
|
|
@@ -232,6 +235,11 @@ export function ViewPage<T extends DataTypes.StringRecord>(
|
|
|
232
235
|
>
|
|
233
236
|
{fields.map((field, index) => {
|
|
234
237
|
// Get data
|
|
238
|
+
if (typeof field === 'function') {
|
|
239
|
+
// Most flexible way, do whatever you want
|
|
240
|
+
return field(data);
|
|
241
|
+
}
|
|
242
|
+
|
|
235
243
|
const [itemData, itemLabel, gridProps] =
|
|
236
244
|
getItemField(field, data);
|
|
237
245
|
|