@wordpress/dataviews 2.0.1 → 2.0.3

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.
Files changed (36) hide show
  1. package/build/bulk-actions.js +5 -19
  2. package/build/bulk-actions.js.map +1 -1
  3. package/build/dataviews.js +17 -11
  4. package/build/dataviews.js.map +1 -1
  5. package/build/lock-unlock.js +1 -1
  6. package/build/lock-unlock.js.map +1 -1
  7. package/build/single-selection-checkbox.js +1 -1
  8. package/build/single-selection-checkbox.js.map +1 -1
  9. package/build/view-list.js +2 -2
  10. package/build/view-list.js.map +1 -1
  11. package/build/view-table.js +11 -5
  12. package/build/view-table.js.map +1 -1
  13. package/build-module/bulk-actions.js +6 -20
  14. package/build-module/bulk-actions.js.map +1 -1
  15. package/build-module/dataviews.js +18 -12
  16. package/build-module/dataviews.js.map +1 -1
  17. package/build-module/lock-unlock.js +1 -1
  18. package/build-module/lock-unlock.js.map +1 -1
  19. package/build-module/single-selection-checkbox.js +1 -1
  20. package/build-module/single-selection-checkbox.js.map +1 -1
  21. package/build-module/view-list.js +2 -2
  22. package/build-module/view-list.js.map +1 -1
  23. package/build-module/view-table.js +11 -5
  24. package/build-module/view-table.js.map +1 -1
  25. package/build-types/bulk-actions.d.ts.map +1 -1
  26. package/build-types/dataviews.d.ts +3 -1
  27. package/build-types/dataviews.d.ts.map +1 -1
  28. package/build-types/view-table.d.ts.map +1 -1
  29. package/package.json +5 -5
  30. package/src/bulk-actions.tsx +10 -31
  31. package/src/dataviews.tsx +25 -24
  32. package/src/lock-unlock.ts +1 -1
  33. package/src/single-selection-checkbox.tsx +1 -1
  34. package/src/view-list.tsx +2 -2
  35. package/src/view-table.tsx +14 -3
  36. package/tsconfig.tsbuildinfo +1 -1
@@ -75,6 +75,7 @@ interface BulkSelectionCheckboxProps< Item extends AnyItem > {
75
75
  onSelectionChange: ( items: Item[] ) => void;
76
76
  data: Item[];
77
77
  actions: Action< Item >[];
78
+ getItemId: ( item: Item ) => string;
78
79
  }
79
80
 
80
81
  interface TableRowProps< Item extends AnyItem > {
@@ -249,6 +250,7 @@ function BulkSelectionCheckbox< Item extends AnyItem >( {
249
250
  onSelectionChange,
250
251
  data,
251
252
  actions,
253
+ getItemId,
252
254
  }: BulkSelectionCheckboxProps< Item > ) {
253
255
  const selectableItems = useMemo( () => {
254
256
  return data.filter( ( item ) => {
@@ -259,13 +261,18 @@ function BulkSelectionCheckbox< Item extends AnyItem >( {
259
261
  );
260
262
  } );
261
263
  }, [ data, actions ] );
262
- const areAllSelected = selection.length === selectableItems.length;
264
+ const selectedItems = data.filter(
265
+ ( item ) =>
266
+ selection.includes( getItemId( item ) ) &&
267
+ selectableItems.includes( item )
268
+ );
269
+ const areAllSelected = selectedItems.length === selectableItems.length;
263
270
  return (
264
271
  <CheckboxControl
265
272
  className="dataviews-view-table-selection-checkbox"
266
273
  __nextHasNoMarginBottom
267
274
  checked={ areAllSelected }
268
- indeterminate={ ! areAllSelected && !! selection.length }
275
+ indeterminate={ ! areAllSelected && !! selectedItems.length }
269
276
  onChange={ () => {
270
277
  if ( areAllSelected ) {
271
278
  onSelectionChange( [] );
@@ -293,7 +300,7 @@ function TableRow< Item extends AnyItem >( {
293
300
  data,
294
301
  }: TableRowProps< Item > ) {
295
302
  const hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );
296
- const isSelected = selection.includes( id );
303
+ const isSelected = hasPossibleBulkAction && selection.includes( id );
297
304
 
298
305
  const [ isHovered, setIsHovered ] = useState( false );
299
306
 
@@ -323,6 +330,9 @@ function TableRow< Item extends AnyItem >( {
323
330
  isTouchDevice.current = true;
324
331
  } }
325
332
  onClick={ () => {
333
+ if ( ! hasPossibleBulkAction ) {
334
+ return;
335
+ }
326
336
  if (
327
337
  ! isTouchDevice.current &&
328
338
  document.getSelection()?.type !== 'Range'
@@ -495,6 +505,7 @@ function ViewTable< Item extends AnyItem >( {
495
505
  onSelectionChange={ onSelectionChange }
496
506
  data={ data }
497
507
  actions={ actions }
508
+ getItemId={ getItemId }
498
509
  />
499
510
  </th>
500
511
  ) }