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