@wordpress/dataviews 2.2.0 → 3.0.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 +16 -0
- package/README.md +5 -5
- package/build/add-filter.js +1 -1
- package/build/add-filter.js.map +1 -1
- package/build/bulk-actions-toolbar.js +0 -1
- package/build/bulk-actions-toolbar.js.map +1 -1
- package/build/bulk-actions.js +1 -1
- package/build/bulk-actions.js.map +1 -1
- package/build/dataform.js +78 -0
- package/build/dataform.js.map +1 -0
- package/build/dataviews.js +17 -28
- package/build/dataviews.js.map +1 -1
- package/build/filter-and-sort-data-view.js +4 -1
- package/build/filter-and-sort-data-view.js.map +1 -1
- package/build/filter-summary.js +6 -5
- package/build/filter-summary.js.map +1 -1
- package/build/filters.js +1 -1
- package/build/filters.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/item-actions.js +1 -1
- package/build/item-actions.js.map +1 -1
- package/build/normalize-fields.js.map +1 -1
- package/build/pagination.js +2 -2
- package/build/pagination.js.map +1 -1
- package/build/private-types.js +6 -0
- package/build/private-types.js.map +1 -0
- package/build/reset-filters.js +1 -1
- package/build/reset-filters.js.map +1 -1
- package/build/search-widget.js +8 -6
- package/build/search-widget.js.map +1 -1
- package/build/single-selection-checkbox.js +5 -16
- package/build/single-selection-checkbox.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build/utils.js.map +1 -1
- package/build/view-actions.js +76 -65
- package/build/view-actions.js.map +1 -1
- package/build/view-grid.js +7 -19
- package/build/view-grid.js.map +1 -1
- package/build/view-list.js +6 -5
- package/build/view-list.js.map +1 -1
- package/build/view-table.js +11 -20
- package/build/view-table.js.map +1 -1
- package/build-module/add-filter.js +1 -1
- package/build-module/add-filter.js.map +1 -1
- package/build-module/bulk-actions-toolbar.js +0 -1
- package/build-module/bulk-actions-toolbar.js.map +1 -1
- package/build-module/bulk-actions.js +1 -1
- package/build-module/bulk-actions.js.map +1 -1
- package/build-module/dataform.js +72 -0
- package/build-module/dataform.js.map +1 -0
- package/build-module/dataviews.js +15 -28
- package/build-module/dataviews.js.map +1 -1
- package/build-module/filter-and-sort-data-view.js +4 -1
- package/build-module/filter-and-sort-data-view.js.map +1 -1
- package/build-module/filter-summary.js +6 -5
- package/build-module/filter-summary.js.map +1 -1
- package/build-module/filters.js +1 -1
- package/build-module/filters.js.map +1 -1
- package/build-module/index.js +1 -0
- package/build-module/index.js.map +1 -1
- package/build-module/item-actions.js +1 -1
- package/build-module/item-actions.js.map +1 -1
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/pagination.js +2 -2
- package/build-module/pagination.js.map +1 -1
- package/build-module/private-types.js +2 -0
- package/build-module/private-types.js.map +1 -0
- package/build-module/reset-filters.js +1 -1
- package/build-module/reset-filters.js.map +1 -1
- package/build-module/search-widget.js +8 -6
- package/build-module/search-widget.js.map +1 -1
- package/build-module/single-selection-checkbox.js +5 -16
- package/build-module/single-selection-checkbox.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-module/utils.js.map +1 -1
- package/build-module/view-actions.js +80 -68
- package/build-module/view-actions.js.map +1 -1
- package/build-module/view-grid.js +7 -19
- package/build-module/view-grid.js.map +1 -1
- package/build-module/view-list.js +6 -5
- package/build-module/view-list.js.map +1 -1
- package/build-module/view-table.js +11 -20
- package/build-module/view-table.js.map +1 -1
- package/build-style/style-rtl.css +8 -24
- package/build-style/style.css +8 -24
- package/build-types/bulk-actions-toolbar.d.ts +5 -4
- package/build-types/bulk-actions-toolbar.d.ts.map +1 -1
- package/build-types/bulk-actions.d.ts +7 -6
- package/build-types/bulk-actions.d.ts.map +1 -1
- package/build-types/dataform.d.ts +17 -0
- package/build-types/dataform.d.ts.map +1 -0
- package/build-types/dataviews.d.ts +14 -7
- package/build-types/dataviews.d.ts.map +1 -1
- package/build-types/filter-and-sort-data-view.d.ts +2 -2
- package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
- package/build-types/filter-summary.d.ts.map +1 -1
- package/build-types/filters.d.ts +3 -3
- package/build-types/filters.d.ts.map +1 -1
- package/build-types/index.d.ts +1 -0
- package/build-types/index.d.ts.map +1 -1
- package/build-types/item-actions.d.ts +10 -10
- package/build-types/item-actions.d.ts.map +1 -1
- package/build-types/normalize-fields.d.ts +2 -2
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/private-types.d.ts +3 -0
- package/build-types/private-types.d.ts.map +1 -0
- package/build-types/single-selection-checkbox.d.ts +5 -5
- package/build-types/single-selection-checkbox.d.ts.map +1 -1
- package/build-types/stories/fixtures.d.ts +14 -1
- package/build-types/stories/fixtures.d.ts.map +1 -1
- package/build-types/stories/index.story.d.ts +15 -1
- package/build-types/stories/index.story.d.ts.map +1 -1
- package/build-types/types.d.ts +68 -27
- package/build-types/types.d.ts.map +1 -1
- package/build-types/utils.d.ts +2 -2
- package/build-types/utils.d.ts.map +1 -1
- package/build-types/view-actions.d.ts +4 -4
- package/build-types/view-actions.d.ts.map +1 -1
- package/build-types/view-grid.d.ts +2 -2
- package/build-types/view-grid.d.ts.map +1 -1
- package/build-types/view-list.d.ts +2 -2
- package/build-types/view-list.d.ts.map +1 -1
- package/build-types/view-table.d.ts +2 -2
- package/build-types/view-table.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/add-filter.tsx +1 -1
- package/src/bulk-actions-toolbar.tsx +13 -13
- package/src/bulk-actions.tsx +18 -13
- package/src/dataform.tsx +106 -0
- package/src/dataviews.tsx +43 -49
- package/src/filter-and-sort-data-view.ts +13 -3
- package/src/filter-summary.tsx +18 -12
- package/src/filters.tsx +4 -4
- package/src/index.ts +1 -0
- package/src/item-actions.tsx +15 -16
- package/src/normalize-fields.ts +5 -3
- package/src/pagination.tsx +2 -2
- package/src/private-types.tsx +2 -0
- package/src/reset-filters.tsx +1 -1
- package/src/search-widget.tsx +6 -6
- package/src/single-selection-checkbox.tsx +14 -29
- package/src/stories/fixtures.js +17 -1
- package/src/stories/index.story.js +15 -28
- package/src/style.scss +10 -22
- package/src/test/filter-and-sort-data-view.js +16 -1
- package/src/types.ts +68 -34
- package/src/utils.ts +2 -4
- package/src/view-actions.tsx +105 -102
- package/src/view-grid.tsx +21 -38
- package/src/view-list.tsx +12 -15
- package/src/view-table.tsx +31 -42
- package/tsconfig.tsbuildinfo +1 -1
package/src/view-table.tsx
CHANGED
|
@@ -46,12 +46,12 @@ import {
|
|
|
46
46
|
} from './bulk-actions';
|
|
47
47
|
import type {
|
|
48
48
|
Action,
|
|
49
|
-
AnyItem,
|
|
50
49
|
NormalizedField,
|
|
51
50
|
SortDirection,
|
|
52
51
|
ViewTable as ViewTableType,
|
|
53
52
|
ViewTableProps,
|
|
54
53
|
} from './types';
|
|
54
|
+
import type { SetSelection } from './private-types';
|
|
55
55
|
|
|
56
56
|
const {
|
|
57
57
|
DropdownMenuV2: DropdownMenu,
|
|
@@ -62,23 +62,24 @@ const {
|
|
|
62
62
|
DropdownMenuSeparatorV2: DropdownMenuSeparator,
|
|
63
63
|
} = unlock( componentsPrivateApis );
|
|
64
64
|
|
|
65
|
-
interface HeaderMenuProps< Item
|
|
65
|
+
interface HeaderMenuProps< Item > {
|
|
66
66
|
field: NormalizedField< Item >;
|
|
67
67
|
view: ViewTableType;
|
|
68
|
+
fields: NormalizedField< Item >[];
|
|
68
69
|
onChangeView: ( view: ViewTableType ) => void;
|
|
69
70
|
onHide: ( field: NormalizedField< Item > ) => void;
|
|
70
71
|
setOpenedFilter: ( fieldId: string ) => void;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
interface BulkSelectionCheckboxProps< Item
|
|
74
|
+
interface BulkSelectionCheckboxProps< Item > {
|
|
74
75
|
selection: string[];
|
|
75
|
-
onSelectionChange:
|
|
76
|
+
onSelectionChange: SetSelection;
|
|
76
77
|
data: Item[];
|
|
77
78
|
actions: Action< Item >[];
|
|
78
79
|
getItemId: ( item: Item ) => string;
|
|
79
80
|
}
|
|
80
81
|
|
|
81
|
-
interface TableRowProps< Item
|
|
82
|
+
interface TableRowProps< Item > {
|
|
82
83
|
hasBulkActions: boolean;
|
|
83
84
|
item: Item;
|
|
84
85
|
actions: Action< Item >[];
|
|
@@ -87,8 +88,7 @@ interface TableRowProps< Item extends AnyItem > {
|
|
|
87
88
|
primaryField?: NormalizedField< Item >;
|
|
88
89
|
selection: string[];
|
|
89
90
|
getItemId: ( item: Item ) => string;
|
|
90
|
-
onSelectionChange:
|
|
91
|
-
data: Item[];
|
|
91
|
+
onSelectionChange: SetSelection;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
function WithDropDownMenuSeparators( { children }: { children: ReactNode } ) {
|
|
@@ -102,10 +102,11 @@ function WithDropDownMenuSeparators( { children }: { children: ReactNode } ) {
|
|
|
102
102
|
) );
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
const _HeaderMenu = forwardRef( function HeaderMenu< Item
|
|
105
|
+
const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
|
|
106
106
|
{
|
|
107
107
|
field,
|
|
108
108
|
view,
|
|
109
|
+
fields,
|
|
109
110
|
onChangeView,
|
|
110
111
|
onHide,
|
|
111
112
|
setOpenedFilter,
|
|
@@ -220,11 +221,13 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item extends AnyItem >(
|
|
|
220
221
|
<DropdownMenuItem
|
|
221
222
|
prefix={ <Icon icon={ unseen } /> }
|
|
222
223
|
onClick={ () => {
|
|
224
|
+
const viewFields =
|
|
225
|
+
view.fields || fields.map( ( f ) => f.id );
|
|
223
226
|
onHide( field );
|
|
224
227
|
onChangeView( {
|
|
225
228
|
...view,
|
|
226
|
-
|
|
227
|
-
field.id
|
|
229
|
+
fields: viewFields.filter(
|
|
230
|
+
( fieldId ) => fieldId !== field.id
|
|
228
231
|
),
|
|
229
232
|
} );
|
|
230
233
|
} }
|
|
@@ -240,12 +243,12 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item extends AnyItem >(
|
|
|
240
243
|
} );
|
|
241
244
|
|
|
242
245
|
// @ts-expect-error Lift the `Item` type argument through the forwardRef.
|
|
243
|
-
const HeaderMenu: < Item
|
|
246
|
+
const HeaderMenu: < Item >(
|
|
244
247
|
props: PropsWithoutRef< HeaderMenuProps< Item > > &
|
|
245
248
|
RefAttributes< HTMLButtonElement >
|
|
246
249
|
) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;
|
|
247
250
|
|
|
248
|
-
function BulkSelectionCheckbox< Item
|
|
251
|
+
function BulkSelectionCheckbox< Item >( {
|
|
249
252
|
selection,
|
|
250
253
|
onSelectionChange,
|
|
251
254
|
data,
|
|
@@ -277,7 +280,9 @@ function BulkSelectionCheckbox< Item extends AnyItem >( {
|
|
|
277
280
|
if ( areAllSelected ) {
|
|
278
281
|
onSelectionChange( [] );
|
|
279
282
|
} else {
|
|
280
|
-
onSelectionChange(
|
|
283
|
+
onSelectionChange(
|
|
284
|
+
selectableItems.map( ( item ) => getItemId( item ) )
|
|
285
|
+
);
|
|
281
286
|
}
|
|
282
287
|
} }
|
|
283
288
|
aria-label={
|
|
@@ -287,7 +292,7 @@ function BulkSelectionCheckbox< Item extends AnyItem >( {
|
|
|
287
292
|
);
|
|
288
293
|
}
|
|
289
294
|
|
|
290
|
-
function TableRow< Item
|
|
295
|
+
function TableRow< Item >( {
|
|
291
296
|
hasBulkActions,
|
|
292
297
|
item,
|
|
293
298
|
actions,
|
|
@@ -297,7 +302,6 @@ function TableRow< Item extends AnyItem >( {
|
|
|
297
302
|
selection,
|
|
298
303
|
getItemId,
|
|
299
304
|
onSelectionChange,
|
|
300
|
-
data,
|
|
301
305
|
}: TableRowProps< Item > ) {
|
|
302
306
|
const hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );
|
|
303
307
|
const isSelected = hasPossibleBulkAction && selection.includes( id );
|
|
@@ -337,27 +341,11 @@ function TableRow< Item extends AnyItem >( {
|
|
|
337
341
|
! isTouchDevice.current &&
|
|
338
342
|
document.getSelection()?.type !== 'Range'
|
|
339
343
|
) {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
itemId === id ||
|
|
346
|
-
selection.includes( itemId )
|
|
347
|
-
);
|
|
348
|
-
} )
|
|
349
|
-
);
|
|
350
|
-
} else {
|
|
351
|
-
onSelectionChange(
|
|
352
|
-
data.filter( ( _item ) => {
|
|
353
|
-
const itemId = getItemId?.( _item );
|
|
354
|
-
return (
|
|
355
|
-
itemId !== id &&
|
|
356
|
-
selection.includes( itemId )
|
|
357
|
-
);
|
|
358
|
-
} )
|
|
359
|
-
);
|
|
360
|
-
}
|
|
344
|
+
onSelectionChange(
|
|
345
|
+
selection.includes( id )
|
|
346
|
+
? selection.filter( ( itemId ) => id !== itemId )
|
|
347
|
+
: [ ...selection, id ]
|
|
348
|
+
);
|
|
361
349
|
}
|
|
362
350
|
} }
|
|
363
351
|
>
|
|
@@ -374,7 +362,6 @@ function TableRow< Item extends AnyItem >( {
|
|
|
374
362
|
selection={ selection }
|
|
375
363
|
onSelectionChange={ onSelectionChange }
|
|
376
364
|
getItemId={ getItemId }
|
|
377
|
-
data={ data }
|
|
378
365
|
primaryField={ primaryField }
|
|
379
366
|
disabled={ ! hasPossibleBulkAction }
|
|
380
367
|
/>
|
|
@@ -425,7 +412,7 @@ function TableRow< Item extends AnyItem >( {
|
|
|
425
412
|
);
|
|
426
413
|
}
|
|
427
414
|
|
|
428
|
-
function ViewTable< Item
|
|
415
|
+
function ViewTable< Item >( {
|
|
429
416
|
actions,
|
|
430
417
|
data,
|
|
431
418
|
fields,
|
|
@@ -471,15 +458,17 @@ function ViewTable< Item extends AnyItem >( {
|
|
|
471
458
|
: undefined;
|
|
472
459
|
setNextHeaderMenuToFocus( fallback?.node );
|
|
473
460
|
};
|
|
461
|
+
|
|
462
|
+
const viewFields = view.fields || fields.map( ( f ) => f.id );
|
|
474
463
|
const visibleFields = fields.filter(
|
|
475
464
|
( field ) =>
|
|
476
|
-
|
|
477
|
-
|
|
465
|
+
viewFields.includes( field.id ) ||
|
|
466
|
+
[ view.layout?.mediaField ].includes( field.id )
|
|
478
467
|
);
|
|
479
468
|
const hasData = !! data?.length;
|
|
480
469
|
|
|
481
470
|
const primaryField = fields.find(
|
|
482
|
-
( field ) => field.id === view.layout
|
|
471
|
+
( field ) => field.id === view.layout?.primaryField
|
|
483
472
|
);
|
|
484
473
|
|
|
485
474
|
return (
|
|
@@ -548,6 +537,7 @@ function ViewTable< Item extends AnyItem >( {
|
|
|
548
537
|
} }
|
|
549
538
|
field={ field }
|
|
550
539
|
view={ view }
|
|
540
|
+
fields={ fields }
|
|
551
541
|
onChangeView={ onChangeView }
|
|
552
542
|
onHide={ onHide }
|
|
553
543
|
setOpenedFilter={ setOpenedFilter }
|
|
@@ -580,7 +570,6 @@ function ViewTable< Item extends AnyItem >( {
|
|
|
580
570
|
selection={ selection }
|
|
581
571
|
getItemId={ getItemId }
|
|
582
572
|
onSelectionChange={ onSelectionChange }
|
|
583
|
-
data={ data }
|
|
584
573
|
/>
|
|
585
574
|
) ) }
|
|
586
575
|
</tbody>
|