@wordpress/dataviews 4.1.0 → 4.3.0
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/CHANGELOG.md +19 -0
- package/README.md +77 -29
- package/build/components/dataviews/index.js +10 -14
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-bulk-actions/index.js +145 -141
- package/build/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build/components/dataviews-filters/add-filter.js +4 -6
- package/build/components/dataviews-filters/add-filter.js.map +1 -1
- package/build/components/dataviews-filters/index.js +3 -0
- package/build/components/dataviews-filters/index.js.map +1 -1
- package/build/components/dataviews-filters/search-widget.js +30 -23
- package/build/components/dataviews-filters/search-widget.js.map +1 -1
- package/build/components/dataviews-footer/index.js +45 -0
- package/build/components/dataviews-footer/index.js.map +1 -0
- package/build/components/dataviews-item-actions/index.js +5 -8
- package/build/components/dataviews-item-actions/index.js.map +1 -1
- package/build/components/dataviews-pagination/index.js +27 -19
- package/build/components/dataviews-pagination/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +197 -41
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/dataform-controls/datetime.js +49 -0
- package/build/dataform-controls/datetime.js.map +1 -0
- package/build/dataform-controls/index.js +50 -0
- package/build/dataform-controls/index.js.map +1 -0
- package/build/dataform-controls/integer.js +45 -0
- package/build/dataform-controls/integer.js.map +1 -0
- package/build/dataform-controls/radio.js +45 -0
- package/build/dataform-controls/radio.js.map +1 -0
- package/build/dataform-controls/select.js +58 -0
- package/build/dataform-controls/select.js.map +1 -0
- package/build/dataform-controls/text.js +45 -0
- package/build/dataform-controls/text.js.map +1 -0
- package/build/dataforms-layouts/panel/index.js +10 -4
- package/build/dataforms-layouts/panel/index.js.map +1 -1
- package/build/dataforms-layouts/regular/index.js +6 -3
- package/build/dataforms-layouts/regular/index.js.map +1 -1
- package/build/dataviews-layouts/grid/density-picker.js +23 -52
- package/build/dataviews-layouts/grid/density-picker.js.map +1 -1
- package/build/dataviews-layouts/grid/index.js +1 -1
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/index.js +48 -2
- package/build/dataviews-layouts/index.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +124 -80
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/table/column-header-menu.js +52 -57
- package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build/dataviews-layouts/table/index.js +7 -35
- package/build/dataviews-layouts/table/index.js.map +1 -1
- package/build/field-types/datetime.js +30 -0
- package/build/field-types/datetime.js.map +1 -0
- package/build/field-types/index.js +4 -0
- package/build/field-types/index.js.map +1 -1
- package/build/field-types/integer.js +1 -60
- package/build/field-types/integer.js.map +1 -1
- package/build/field-types/text.js +1 -60
- package/build/field-types/text.js.map +1 -1
- package/build/normalize-fields.js +10 -9
- package/build/normalize-fields.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build-module/components/dataviews/index.js +10 -14
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-bulk-actions/index.js +145 -143
- package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build-module/components/dataviews-filters/add-filter.js +4 -6
- package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
- package/build-module/components/dataviews-filters/index.js +3 -0
- package/build-module/components/dataviews-filters/index.js.map +1 -1
- package/build-module/components/dataviews-filters/search-widget.js +30 -23
- package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
- package/build-module/components/dataviews-footer/index.js +38 -0
- package/build-module/components/dataviews-footer/index.js.map +1 -0
- package/build-module/components/dataviews-item-actions/index.js +5 -8
- package/build-module/components/dataviews-item-actions/index.js.map +1 -1
- package/build-module/components/dataviews-pagination/index.js +28 -20
- package/build-module/components/dataviews-pagination/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +203 -47
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/dataform-controls/datetime.js +43 -0
- package/build-module/dataform-controls/datetime.js.map +1 -0
- package/build-module/dataform-controls/index.js +42 -0
- package/build-module/dataform-controls/index.js.map +1 -0
- package/build-module/dataform-controls/integer.js +38 -0
- package/build-module/dataform-controls/integer.js.map +1 -0
- package/build-module/dataform-controls/radio.js +38 -0
- package/build-module/dataform-controls/radio.js.map +1 -0
- package/build-module/dataform-controls/select.js +51 -0
- package/build-module/dataform-controls/select.js.map +1 -0
- package/build-module/dataform-controls/text.js +38 -0
- package/build-module/dataform-controls/text.js.map +1 -0
- package/build-module/dataforms-layouts/panel/index.js +10 -4
- package/build-module/dataforms-layouts/panel/index.js.map +1 -1
- package/build-module/dataforms-layouts/regular/index.js +6 -3
- package/build-module/dataforms-layouts/regular/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/density-picker.js +25 -56
- package/build-module/dataviews-layouts/grid/density-picker.js.map +1 -1
- package/build-module/dataviews-layouts/grid/index.js +1 -1
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/index.js +45 -1
- package/build-module/dataviews-layouts/index.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +125 -80
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/column-header-menu.js +52 -57
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build-module/dataviews-layouts/table/index.js +9 -37
- package/build-module/dataviews-layouts/table/index.js.map +1 -1
- package/build-module/field-types/datetime.js +24 -0
- package/build-module/field-types/datetime.js.map +1 -0
- package/build-module/field-types/index.js +4 -0
- package/build-module/field-types/index.js.map +1 -1
- package/build-module/field-types/integer.js +2 -60
- package/build-module/field-types/integer.js.map +1 -1
- package/build-module/field-types/text.js +2 -60
- package/build-module/field-types/text.js.map +1 -1
- package/build-module/normalize-fields.js +11 -9
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-style/style-rtl.css +93 -80
- package/build-style/style.css +93 -80
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews/index.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/fixtures.d.ts +28 -113
- package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/index.story.d.ts +12 -44
- package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews-bulk-actions/index.d.ts +11 -1
- package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/index.d.ts +1 -1
- package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
- package/build-types/components/dataviews-footer/index.d.ts +2 -0
- package/build-types/components/dataviews-footer/index.d.ts.map +1 -0
- package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts +4 -3
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/dataform-controls/datetime.d.ts +6 -0
- package/build-types/dataform-controls/datetime.d.ts.map +1 -0
- package/build-types/dataform-controls/index.d.ts +11 -0
- package/build-types/dataform-controls/index.d.ts.map +1 -0
- package/build-types/dataform-controls/integer.d.ts +6 -0
- package/build-types/dataform-controls/integer.d.ts.map +1 -0
- package/build-types/dataform-controls/radio.d.ts +6 -0
- package/build-types/dataform-controls/radio.d.ts.map +1 -0
- package/build-types/dataform-controls/select.d.ts +6 -0
- package/build-types/dataform-controls/select.d.ts.map +1 -0
- package/build-types/dataform-controls/text.d.ts +6 -0
- package/build-types/dataform-controls/text.d.ts.map +1 -0
- package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/grid/density-picker.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +4 -2
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/field-types/datetime.d.ts +13 -0
- package/build-types/field-types/datetime.d.ts.map +1 -0
- package/build-types/field-types/index.d.ts +1 -1
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/integer.d.ts +2 -3
- package/build-types/field-types/integer.d.ts.map +1 -1
- package/build-types/field-types/text.d.ts +2 -3
- package/build-types/field-types/text.d.ts.map +1 -1
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/types.d.ts +43 -21
- package/build-types/types.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/components/dataform/stories/index.story.tsx +43 -2
- package/src/components/dataviews/index.tsx +14 -18
- package/src/components/dataviews/stories/fixtures.tsx +690 -0
- package/src/components/dataviews/stories/index.story.tsx +164 -0
- package/src/components/dataviews/style.scss +2 -12
- package/src/components/dataviews-bulk-actions/index.tsx +264 -213
- package/src/components/dataviews-bulk-actions/style.scss +9 -4
- package/src/components/dataviews-filters/add-filter.tsx +7 -11
- package/src/components/dataviews-filters/index.tsx +3 -0
- package/src/components/dataviews-filters/search-widget.tsx +46 -25
- package/src/components/dataviews-filters/style.scss +13 -3
- package/src/components/dataviews-footer/index.tsx +50 -0
- package/src/components/dataviews-footer/style.scss +40 -0
- package/src/components/dataviews-item-actions/index.tsx +8 -14
- package/src/components/dataviews-pagination/index.tsx +40 -21
- package/src/components/dataviews-pagination/style.scss +7 -21
- package/src/components/dataviews-view-config/index.tsx +297 -69
- package/src/components/dataviews-view-config/style.scss +25 -0
- package/src/dataform-controls/datetime.tsx +43 -0
- package/src/dataform-controls/index.tsx +61 -0
- package/src/dataform-controls/integer.tsx +38 -0
- package/src/dataform-controls/radio.tsx +42 -0
- package/src/dataform-controls/select.tsx +52 -0
- package/src/dataform-controls/style.scss +4 -0
- package/src/dataform-controls/text.tsx +40 -0
- package/src/dataforms-layouts/panel/index.tsx +8 -2
- package/src/dataforms-layouts/regular/index.tsx +6 -2
- package/src/dataviews-layouts/grid/density-picker.tsx +33 -67
- package/src/dataviews-layouts/grid/index.tsx +1 -1
- package/src/dataviews-layouts/grid/style.scss +1 -5
- package/src/dataviews-layouts/index.ts +63 -2
- package/src/dataviews-layouts/list/index.tsx +199 -123
- package/src/dataviews-layouts/list/style.scss +10 -4
- package/src/dataviews-layouts/table/column-header-menu.tsx +86 -90
- package/src/dataviews-layouts/table/index.tsx +8 -65
- package/src/dataviews-layouts/table/style.scss +0 -5
- package/src/field-types/datetime.tsx +28 -0
- package/src/field-types/index.tsx +5 -0
- package/src/field-types/integer.tsx +2 -71
- package/src/field-types/text.tsx +2 -70
- package/src/normalize-fields.ts +10 -10
- package/src/style.scss +2 -1
- package/src/test/filter-and-sort-data-view.js +28 -0
- package/src/types.ts +56 -32
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/dataviews-bulk-actions-toolbar/index.js +0 -207
- package/build/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
- package/build-module/components/dataviews-bulk-actions-toolbar/index.js +0 -201
- package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
- package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +0 -2
- package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +0 -1
- package/src/components/dataviews/stories/fixtures.js +0 -222
- package/src/components/dataviews/stories/index.story.js +0 -65
- package/src/components/dataviews-bulk-actions-toolbar/index.tsx +0 -288
- package/src/components/dataviews-bulk-actions-toolbar/style.scss +0 -45
package/src/normalize-fields.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import getFieldTypeDefinition from './field-types';
|
|
5
5
|
import type { Field, NormalizedField } from './types';
|
|
6
|
+
import { getControl } from './dataform-controls';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Apply default values and normalize the fields config.
|
|
@@ -17,8 +18,7 @@ export function normalizeFields< Item >(
|
|
|
17
18
|
const fieldTypeDefinition = getFieldTypeDefinition( field.type );
|
|
18
19
|
|
|
19
20
|
const getValue =
|
|
20
|
-
field.getValue ||
|
|
21
|
-
( ( { item }: { item: Item } ) => item[ field.id as keyof Item ] );
|
|
21
|
+
field.getValue || ( ( { item } ) => ( item as any )[ field.id ] );
|
|
22
22
|
|
|
23
23
|
const sort =
|
|
24
24
|
field.sort ??
|
|
@@ -39,17 +39,14 @@ export function normalizeFields< Item >(
|
|
|
39
39
|
);
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
const Edit = field
|
|
42
|
+
const Edit = getControl( field, fieldTypeDefinition );
|
|
43
43
|
|
|
44
44
|
const renderFromElements = ( { item }: { item: Item } ) => {
|
|
45
45
|
const value = getValue( { item } );
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
} )?.label;
|
|
51
|
-
|
|
52
|
-
return label || value;
|
|
46
|
+
return (
|
|
47
|
+
field?.elements?.find( ( element ) => element.value === value )
|
|
48
|
+
?.label || getValue( { item } )
|
|
49
|
+
);
|
|
53
50
|
};
|
|
54
51
|
|
|
55
52
|
const render =
|
|
@@ -58,11 +55,14 @@ export function normalizeFields< Item >(
|
|
|
58
55
|
return {
|
|
59
56
|
...field,
|
|
60
57
|
label: field.label || field.id,
|
|
58
|
+
header: field.header || field.label || field.id,
|
|
61
59
|
getValue,
|
|
62
60
|
render,
|
|
63
61
|
sort,
|
|
64
62
|
isValid,
|
|
65
63
|
Edit,
|
|
64
|
+
enableHiding: field.enableHiding ?? true,
|
|
65
|
+
enableSorting: field.enableSorting ?? true,
|
|
66
66
|
};
|
|
67
67
|
} );
|
|
68
68
|
}
|
package/src/style.scss
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@import "./components/dataviews/style.scss";
|
|
2
2
|
@import "./components/dataviews-bulk-actions/style.scss";
|
|
3
|
-
@import "./components/dataviews-bulk-actions-toolbar/style.scss";
|
|
4
3
|
@import "./components/dataviews-filters/style.scss";
|
|
4
|
+
@import "./components/dataviews-footer/style.scss";
|
|
5
5
|
@import "./components/dataviews-pagination/style.scss";
|
|
6
6
|
@import "./components/dataviews-item-actions/style.scss";
|
|
7
7
|
@import "./components/dataviews-selection-checkbox/style.scss";
|
|
@@ -11,4 +11,5 @@
|
|
|
11
11
|
@import "./dataviews-layouts/list/style.scss";
|
|
12
12
|
@import "./dataviews-layouts/table/style.scss";
|
|
13
13
|
|
|
14
|
+
@import "./dataform-controls/style.scss";
|
|
14
15
|
@import "./dataforms-layouts/panel/style.scss";
|
|
@@ -268,6 +268,34 @@ describe( 'sorting', () => {
|
|
|
268
268
|
expect( result[ 1 ].title ).toBe( 'Neptune' );
|
|
269
269
|
} );
|
|
270
270
|
|
|
271
|
+
it( 'should sort datetime field types', () => {
|
|
272
|
+
const { data: resultDesc } = filterSortAndPaginate(
|
|
273
|
+
data,
|
|
274
|
+
{
|
|
275
|
+
sort: { field: 'date', direction: 'desc' },
|
|
276
|
+
},
|
|
277
|
+
fields
|
|
278
|
+
);
|
|
279
|
+
expect( resultDesc ).toHaveLength( 11 );
|
|
280
|
+
expect( resultDesc[ 0 ].title ).toBe( 'NASA' );
|
|
281
|
+
expect( resultDesc[ 1 ].title ).toBe( 'Earth' );
|
|
282
|
+
expect( resultDesc[ 9 ].title ).toBe( 'Space' );
|
|
283
|
+
expect( resultDesc[ 10 ].title ).toBe( 'Jupiter' );
|
|
284
|
+
|
|
285
|
+
const { data: resultAsc } = filterSortAndPaginate(
|
|
286
|
+
data,
|
|
287
|
+
{
|
|
288
|
+
sort: { field: 'date', direction: 'asc' },
|
|
289
|
+
},
|
|
290
|
+
fields
|
|
291
|
+
);
|
|
292
|
+
expect( resultAsc ).toHaveLength( 11 );
|
|
293
|
+
expect( resultAsc[ 0 ].title ).toBe( 'Jupiter' );
|
|
294
|
+
expect( resultAsc[ 1 ].title ).toBe( 'Space' );
|
|
295
|
+
expect( resultAsc[ 9 ].title ).toBe( 'Earth' );
|
|
296
|
+
expect( resultAsc[ 10 ].title ).toBe( 'NASA' );
|
|
297
|
+
} );
|
|
298
|
+
|
|
271
299
|
it( 'should sort untyped fields if the value is a number', () => {
|
|
272
300
|
const { data: result } = filterSortAndPaginate(
|
|
273
301
|
data,
|
package/src/types.ts
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
5
|
-
ReactElement,
|
|
6
|
-
ComponentType,
|
|
7
|
-
Dispatch,
|
|
8
|
-
SetStateAction,
|
|
9
|
-
} from 'react';
|
|
4
|
+
import type { ReactElement, ComponentType } from 'react';
|
|
10
5
|
|
|
11
6
|
/**
|
|
12
7
|
* Internal dependencies
|
|
@@ -47,14 +42,32 @@ export type Operator =
|
|
|
47
42
|
| 'isAll'
|
|
48
43
|
| 'isNotAll';
|
|
49
44
|
|
|
50
|
-
export type
|
|
51
|
-
|
|
52
|
-
export type FieldType = 'text' | 'integer';
|
|
45
|
+
export type FieldType = 'text' | 'integer' | 'datetime';
|
|
53
46
|
|
|
54
47
|
export type ValidationContext = {
|
|
55
48
|
elements?: Option[];
|
|
56
49
|
};
|
|
57
50
|
|
|
51
|
+
/**
|
|
52
|
+
* An abstract interface for Field based on the field type.
|
|
53
|
+
*/
|
|
54
|
+
export type FieldTypeDefinition< Item > = {
|
|
55
|
+
/**
|
|
56
|
+
* Callback used to sort the field.
|
|
57
|
+
*/
|
|
58
|
+
sort: ( a: Item, b: Item, direction: SortDirection ) => number;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Callback used to validate the field.
|
|
62
|
+
*/
|
|
63
|
+
isValid: ( item: Item, context?: ValidationContext ) => boolean;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Callback used to render an edit control for the field or control name.
|
|
67
|
+
*/
|
|
68
|
+
Edit: ComponentType< DataFormControlProps< Item > > | string;
|
|
69
|
+
};
|
|
70
|
+
|
|
58
71
|
/**
|
|
59
72
|
* A dataview field for a specific property of a data type.
|
|
60
73
|
*/
|
|
@@ -74,6 +87,12 @@ export type Field< Item > = {
|
|
|
74
87
|
*/
|
|
75
88
|
label?: string;
|
|
76
89
|
|
|
90
|
+
/**
|
|
91
|
+
* The header of the field. Defaults to the label.
|
|
92
|
+
* It allows the usage of a React Element to render the field labels.
|
|
93
|
+
*/
|
|
94
|
+
header?: string | ReactElement;
|
|
95
|
+
|
|
77
96
|
/**
|
|
78
97
|
* A description of the field.
|
|
79
98
|
*/
|
|
@@ -92,7 +111,7 @@ export type Field< Item > = {
|
|
|
92
111
|
/**
|
|
93
112
|
* Callback used to render an edit control for the field.
|
|
94
113
|
*/
|
|
95
|
-
Edit?: ComponentType< DataFormControlProps< Item >
|
|
114
|
+
Edit?: ComponentType< DataFormControlProps< Item > > | string;
|
|
96
115
|
|
|
97
116
|
/**
|
|
98
117
|
* Callback used to sort the field.
|
|
@@ -128,29 +147,24 @@ export type Field< Item > = {
|
|
|
128
147
|
* Filter config for the field.
|
|
129
148
|
*/
|
|
130
149
|
filterBy?: FilterByConfig | undefined;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
: {
|
|
140
|
-
/**
|
|
141
|
-
* Callback used to retrieve the value of the field from the item.
|
|
142
|
-
* Defaults to `item[ field.id ]`.
|
|
143
|
-
*/
|
|
144
|
-
getValue: ( args: { item: Item } ) => any;
|
|
145
|
-
} );
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Callback used to retrieve the value of the field from the item.
|
|
153
|
+
* Defaults to `item[ field.id ]`.
|
|
154
|
+
*/
|
|
155
|
+
getValue?: ( args: { item: Item } ) => any;
|
|
156
|
+
};
|
|
146
157
|
|
|
147
158
|
export type NormalizedField< Item > = Field< Item > & {
|
|
148
159
|
label: string;
|
|
160
|
+
header: string | ReactElement;
|
|
149
161
|
getValue: ( args: { item: Item } ) => any;
|
|
150
162
|
render: ComponentType< { item: Item } >;
|
|
151
163
|
Edit: ComponentType< DataFormControlProps< Item > >;
|
|
152
164
|
sort: ( a: Item, b: Item, direction: SortDirection ) => number;
|
|
153
165
|
isValid: ( item: Item, context?: ValidationContext ) => boolean;
|
|
166
|
+
enableHiding: boolean;
|
|
167
|
+
enableSorting: boolean;
|
|
154
168
|
};
|
|
155
169
|
|
|
156
170
|
/**
|
|
@@ -171,7 +185,7 @@ export type Form = {
|
|
|
171
185
|
export type DataFormControlProps< Item > = {
|
|
172
186
|
data: Item;
|
|
173
187
|
field: NormalizedField< Item >;
|
|
174
|
-
onChange:
|
|
188
|
+
onChange: ( value: Record< string, any > ) => void;
|
|
175
189
|
hideLabelFromVision?: boolean;
|
|
176
190
|
};
|
|
177
191
|
|
|
@@ -284,6 +298,8 @@ export interface CombinedField {
|
|
|
284
298
|
|
|
285
299
|
label: string;
|
|
286
300
|
|
|
301
|
+
header?: string | ReactElement;
|
|
302
|
+
|
|
287
303
|
/**
|
|
288
304
|
* The fields to use as columns.
|
|
289
305
|
*/
|
|
@@ -421,6 +437,18 @@ interface ActionBase< Item > {
|
|
|
421
437
|
* Whether the action can be used as a bulk action.
|
|
422
438
|
*/
|
|
423
439
|
supportsBulk?: boolean;
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* The context in which the action is visible.
|
|
443
|
+
* This is only a "meta" information for now.
|
|
444
|
+
*/
|
|
445
|
+
context?: 'list' | 'single';
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
export interface RenderModalProps< Item > {
|
|
449
|
+
items: Item[];
|
|
450
|
+
closeModal?: () => void;
|
|
451
|
+
onActionPerformed?: ( items: Item[] ) => void;
|
|
424
452
|
}
|
|
425
453
|
|
|
426
454
|
export interface ActionModal< Item > extends ActionBase< Item > {
|
|
@@ -431,11 +459,7 @@ export interface ActionModal< Item > extends ActionBase< Item > {
|
|
|
431
459
|
items,
|
|
432
460
|
closeModal,
|
|
433
461
|
onActionPerformed,
|
|
434
|
-
}:
|
|
435
|
-
items: Item[];
|
|
436
|
-
closeModal?: () => void;
|
|
437
|
-
onActionPerformed?: ( items: Item[] ) => void;
|
|
438
|
-
} ) => ReactElement;
|
|
462
|
+
}: RenderModalProps< Item > ) => ReactElement;
|
|
439
463
|
|
|
440
464
|
/**
|
|
441
465
|
* Whether to hide the modal header.
|
|
@@ -504,5 +528,5 @@ export interface DataFormProps< Item > {
|
|
|
504
528
|
data: Item;
|
|
505
529
|
fields: Field< Item >[];
|
|
506
530
|
form: Form;
|
|
507
|
-
onChange:
|
|
531
|
+
onChange: ( value: Record< string, any > ) => void;
|
|
508
532
|
}
|