@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.
@@ -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> = (string & keyof T) | [string & keyof T, GridDataType, GridColumnRenderProps?, RowType?] | ViewPageField<T>;
36
+ export declare type ViewPageFieldType<T extends object> = ViewPageFieldTypeNarrow<T> | ((data: T) => React.ReactNode);
36
37
  /**
37
38
  * View page props
38
39
  */
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/materialui",
3
- "version": "1.0.71",
3
+ "version": "1.0.73",
4
4
  "description": "TypeScript Material-UI Implementation",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -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
- | (string & keyof T)
56
- | [string & keyof T, GridDataType, GridColumnRenderProps?, RowType?]
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: ViewPageFieldType<T>,
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