@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.
@@ -29,7 +29,11 @@ export interface ViewPageField<T extends object> extends GridProps {
29
29
  */
30
30
  renderProps?: GridColumnRenderProps;
31
31
  }
32
- declare type ViewPageFieldType<T extends object> = (string & keyof T) | [string & keyof T, GridDataType, GridColumnRenderProps?, RowType?] | ViewPageField<T>;
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
  */
@@ -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.70",
3
+ "version": "1.0.72",
4
4
  "description": "TypeScript Material-UI Implementation",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -48,11 +48,17 @@ export interface ViewPageField<T extends object> extends GridProps {
48
48
  renderProps?: GridColumnRenderProps;
49
49
  }
50
50
 
51
- type ViewPageFieldType<T extends object> =
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: ViewPageFieldType<T>,
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