@wordpress/dataviews 1.1.0 → 2.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.
Files changed (176) hide show
  1. package/CHANGELOG.md +27 -5
  2. package/README.md +33 -30
  3. package/build/add-filter.js +30 -22
  4. package/build/add-filter.js.map +1 -1
  5. package/build/bulk-actions-toolbar.js +187 -0
  6. package/build/bulk-actions-toolbar.js.map +1 -0
  7. package/build/bulk-actions.js +75 -62
  8. package/build/bulk-actions.js.map +1 -1
  9. package/build/constants.js +17 -10
  10. package/build/constants.js.map +1 -1
  11. package/build/dataviews.js +64 -50
  12. package/build/dataviews.js.map +1 -1
  13. package/build/filter-and-sort-data-view.js +2 -2
  14. package/build/filter-and-sort-data-view.js.map +1 -1
  15. package/build/filter-summary.js +106 -96
  16. package/build/filter-summary.js.map +1 -1
  17. package/build/filters.js +18 -17
  18. package/build/filters.js.map +1 -1
  19. package/build/index.js.map +1 -1
  20. package/build/item-actions.js +101 -69
  21. package/build/item-actions.js.map +1 -1
  22. package/build/layouts.js.map +1 -1
  23. package/build/lock-unlock.js.map +1 -1
  24. package/build/normalize-fields.js.map +1 -1
  25. package/build/pagination.js +66 -57
  26. package/build/pagination.js.map +1 -1
  27. package/build/reset-filters.js +9 -4
  28. package/build/reset-filters.js.map +1 -1
  29. package/build/search-widget.js +108 -89
  30. package/build/search-widget.js.map +1 -1
  31. package/build/search.js +13 -6
  32. package/build/search.js.map +1 -1
  33. package/build/single-selection-checkbox.js +6 -2
  34. package/build/single-selection-checkbox.js.map +1 -1
  35. package/build/types.js.map +1 -1
  36. package/build/utils.js +3 -15
  37. package/build/utils.js.map +1 -1
  38. package/build/view-actions.js +168 -120
  39. package/build/view-actions.js.map +1 -1
  40. package/build/view-grid.js +119 -106
  41. package/build/view-grid.js.map +1 -1
  42. package/build/view-list.js +217 -83
  43. package/build/view-list.js.map +1 -1
  44. package/build/view-table.js +227 -199
  45. package/build/view-table.js.map +1 -1
  46. package/build-module/add-filter.js +30 -22
  47. package/build-module/add-filter.js.map +1 -1
  48. package/build-module/bulk-actions-toolbar.js +182 -0
  49. package/build-module/bulk-actions-toolbar.js.map +1 -0
  50. package/build-module/bulk-actions.js +77 -62
  51. package/build-module/bulk-actions.js.map +1 -1
  52. package/build-module/constants.js +16 -9
  53. package/build-module/constants.js.map +1 -1
  54. package/build-module/dataviews.js +65 -50
  55. package/build-module/dataviews.js.map +1 -1
  56. package/build-module/filter-and-sort-data-view.js +2 -2
  57. package/build-module/filter-and-sort-data-view.js.map +1 -1
  58. package/build-module/filter-summary.js +107 -97
  59. package/build-module/filter-summary.js.map +1 -1
  60. package/build-module/filters.js +18 -17
  61. package/build-module/filters.js.map +1 -1
  62. package/build-module/index.js.map +1 -1
  63. package/build-module/item-actions.js +102 -71
  64. package/build-module/item-actions.js.map +1 -1
  65. package/build-module/layouts.js.map +1 -1
  66. package/build-module/lock-unlock.js.map +1 -1
  67. package/build-module/normalize-fields.js.map +1 -1
  68. package/build-module/pagination.js +67 -57
  69. package/build-module/pagination.js.map +1 -1
  70. package/build-module/reset-filters.js +9 -4
  71. package/build-module/reset-filters.js.map +1 -1
  72. package/build-module/search-widget.js +109 -89
  73. package/build-module/search-widget.js.map +1 -1
  74. package/build-module/search.js +13 -6
  75. package/build-module/search.js.map +1 -1
  76. package/build-module/single-selection-checkbox.js +6 -2
  77. package/build-module/single-selection-checkbox.js.map +1 -1
  78. package/build-module/types.js.map +1 -1
  79. package/build-module/utils.js +2 -13
  80. package/build-module/utils.js.map +1 -1
  81. package/build-module/view-actions.js +170 -121
  82. package/build-module/view-actions.js.map +1 -1
  83. package/build-module/view-grid.js +121 -106
  84. package/build-module/view-grid.js.map +1 -1
  85. package/build-module/view-list.js +219 -85
  86. package/build-module/view-list.js.map +1 -1
  87. package/build-module/view-table.js +230 -201
  88. package/build-module/view-table.js.map +1 -1
  89. package/build-style/style-rtl.css +168 -44
  90. package/build-style/style.css +168 -44
  91. package/build-types/add-filter.d.ts +11 -0
  92. package/build-types/add-filter.d.ts.map +1 -0
  93. package/build-types/bulk-actions-toolbar.d.ts +12 -0
  94. package/build-types/bulk-actions-toolbar.d.ts.map +1 -0
  95. package/build-types/bulk-actions.d.ts +14 -0
  96. package/build-types/bulk-actions.d.ts.map +1 -0
  97. package/build-types/constants.d.ts +19 -32
  98. package/build-types/constants.d.ts.map +1 -1
  99. package/build-types/dataviews.d.ts +22 -0
  100. package/build-types/dataviews.d.ts.map +1 -0
  101. package/build-types/filter-and-sort-data-view.d.ts +3 -3
  102. package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
  103. package/build-types/filter-summary.d.ts +14 -0
  104. package/build-types/filter-summary.d.ts.map +1 -0
  105. package/build-types/filters.d.ts +13 -0
  106. package/build-types/filters.d.ts.map +1 -0
  107. package/build-types/index.d.ts +4 -0
  108. package/build-types/index.d.ts.map +1 -0
  109. package/build-types/item-actions.d.ts +35 -0
  110. package/build-types/item-actions.d.ts.map +1 -0
  111. package/build-types/layouts.d.ts +24 -0
  112. package/build-types/layouts.d.ts.map +1 -0
  113. package/build-types/lock-unlock.d.ts +2 -0
  114. package/build-types/lock-unlock.d.ts.map +1 -0
  115. package/build-types/normalize-fields.d.ts +2 -2
  116. package/build-types/normalize-fields.d.ts.map +1 -1
  117. package/build-types/pagination.d.ts +16 -0
  118. package/build-types/pagination.d.ts.map +1 -0
  119. package/build-types/reset-filters.d.ts +13 -0
  120. package/build-types/reset-filters.d.ts.map +1 -0
  121. package/build-types/search-widget.d.ts +10 -0
  122. package/build-types/search-widget.d.ts.map +1 -0
  123. package/build-types/search.d.ts +13 -0
  124. package/build-types/search.d.ts.map +1 -0
  125. package/build-types/single-selection-checkbox.d.ts +17 -0
  126. package/build-types/single-selection-checkbox.d.ts.map +1 -0
  127. package/build-types/stories/fixtures.d.ts +114 -0
  128. package/build-types/stories/fixtures.d.ts.map +1 -0
  129. package/build-types/stories/index.story.d.ts +15 -0
  130. package/build-types/stories/index.story.d.ts.map +1 -0
  131. package/build-types/types.d.ts +221 -21
  132. package/build-types/types.d.ts.map +1 -1
  133. package/build-types/utils.d.ts +3 -0
  134. package/build-types/utils.d.ts.map +1 -0
  135. package/build-types/view-actions.d.ts +12 -0
  136. package/build-types/view-actions.d.ts.map +1 -0
  137. package/build-types/view-grid.d.ts +4 -0
  138. package/build-types/view-grid.d.ts.map +1 -0
  139. package/build-types/view-list.d.ts +4 -0
  140. package/build-types/view-list.d.ts.map +1 -0
  141. package/build-types/view-table.d.ts +5 -0
  142. package/build-types/view-table.d.ts.map +1 -0
  143. package/package.json +12 -13
  144. package/src/{add-filter.js → add-filter.tsx} +17 -1
  145. package/src/bulk-actions-toolbar.tsx +272 -0
  146. package/src/{bulk-actions.js → bulk-actions.tsx} +77 -17
  147. package/src/constants.ts +12 -5
  148. package/src/{dataviews.js → dataviews.tsx} +54 -14
  149. package/src/filter-and-sort-data-view.ts +13 -8
  150. package/src/{filter-summary.js → filter-summary.tsx} +38 -9
  151. package/src/{filters.js → filters.tsx} +18 -6
  152. package/src/{item-actions.js → item-actions.tsx} +119 -30
  153. package/src/normalize-fields.ts +4 -2
  154. package/src/{pagination.js → pagination.tsx} +29 -8
  155. package/src/{reset-filters.js → reset-filters.tsx} +17 -2
  156. package/src/{search-widget.js → search-widget.tsx} +27 -7
  157. package/src/{search.js → search.tsx} +22 -5
  158. package/src/{single-selection-checkbox.js → single-selection-checkbox.tsx} +17 -2
  159. package/src/style.scss +166 -43
  160. package/src/types.ts +286 -21
  161. package/src/{utils.js → utils.ts} +5 -13
  162. package/src/{view-actions.js → view-actions.tsx} +105 -49
  163. package/src/{view-grid.js → view-grid.tsx} +31 -18
  164. package/src/view-list.tsx +410 -0
  165. package/src/{view-table.js → view-table.tsx} +99 -40
  166. package/tsconfig.json +3 -4
  167. package/tsconfig.tsbuildinfo +1 -1
  168. package/build/dropdown-menu-helper.js +0 -71
  169. package/build/dropdown-menu-helper.js.map +0 -1
  170. package/build-module/dropdown-menu-helper.js +0 -64
  171. package/build-module/dropdown-menu-helper.js.map +0 -1
  172. package/src/dropdown-menu-helper.js +0 -61
  173. package/src/view-list.js +0 -207
  174. /package/src/{index.js → index.ts} +0 -0
  175. /package/src/{layouts.js → layouts.ts} +0 -0
  176. /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
@@ -6,20 +6,37 @@ import { useEffect, useRef, memo } from '@wordpress/element';
6
6
  import { SearchControl } from '@wordpress/components';
7
7
  import { useDebouncedInput } from '@wordpress/compose';
8
8
 
9
- const Search = memo( function Search( { label, view, onChangeView } ) {
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import type { View } from './types';
13
+
14
+ interface SearchProps {
15
+ label?: string;
16
+ view: View;
17
+ onChangeView: ( view: View ) => void;
18
+ }
19
+
20
+ const Search = memo( function Search( {
21
+ label,
22
+ view,
23
+ onChangeView,
24
+ }: SearchProps ) {
10
25
  const [ search, setSearch, debouncedSearch ] = useDebouncedInput(
11
26
  view.search
12
27
  );
13
28
  useEffect( () => {
14
- setSearch( view.search );
15
- }, [ view ] );
29
+ setSearch( view.search ?? '' );
30
+ }, [ view.search, setSearch ] );
16
31
  const onChangeViewRef = useRef( onChangeView );
32
+ const viewRef = useRef( view );
17
33
  useEffect( () => {
18
34
  onChangeViewRef.current = onChangeView;
19
- }, [ onChangeView ] );
35
+ viewRef.current = view;
36
+ }, [ onChangeView, view ] );
20
37
  useEffect( () => {
21
38
  onChangeViewRef.current( {
22
- ...view,
39
+ ...viewRef.current,
23
40
  page: 1,
24
41
  search: debouncedSearch,
25
42
  } );
@@ -4,7 +4,22 @@
4
4
  import { __, sprintf } from '@wordpress/i18n';
5
5
  import { CheckboxControl } from '@wordpress/components';
6
6
 
7
- export default function SingleSelectionCheckbox( {
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import type { Field, AnyItem } from './types';
11
+
12
+ interface SingleSelectionCheckboxProps< Item extends AnyItem > {
13
+ selection: string[];
14
+ onSelectionChange: ( selection: Item[] ) => void;
15
+ item: Item;
16
+ data: Item[];
17
+ getItemId: ( item: Item ) => string;
18
+ primaryField?: Field< Item >;
19
+ disabled: boolean;
20
+ }
21
+
22
+ export default function SingleSelectionCheckbox< Item extends AnyItem >( {
8
23
  selection,
9
24
  onSelectionChange,
10
25
  item,
@@ -12,7 +27,7 @@ export default function SingleSelectionCheckbox( {
12
27
  getItemId,
13
28
  primaryField,
14
29
  disabled,
15
- } ) {
30
+ }: SingleSelectionCheckboxProps< Item > ) {
16
31
  const id = getItemId( item );
17
32
  const isSelected = selection.includes( id );
18
33
  let selectionLabel;
package/src/style.scss CHANGED
@@ -3,15 +3,20 @@
3
3
  overflow: auto;
4
4
  box-sizing: border-box;
5
5
  scroll-padding-bottom: $grid-unit-80;
6
+ /* stylelint-disable-next-line property-no-unknown -- '@container' not globally permitted */
7
+ container: dataviews-wrapper / inline-size;
8
+ display: flex;
9
+ flex-direction: column;
6
10
  }
7
11
 
8
12
  .dataviews-filters__view-actions {
9
13
  box-sizing: border-box;
10
- padding: $grid-unit-15 $grid-unit-40 0;
11
- margin-bottom: $grid-unit-15;
14
+ padding: $grid-unit-20 $grid-unit-60;
12
15
  flex-shrink: 0;
13
16
  position: sticky;
14
17
  left: 0;
18
+ transition: padding ease-out 0.1s;
19
+ @include reduce-motion("transition");
15
20
 
16
21
  .components-search-control {
17
22
  .components-base-control__field {
@@ -21,8 +26,6 @@
21
26
  }
22
27
 
23
28
  .dataviews-filters__container {
24
- padding-right: $grid-unit-40;
25
-
26
29
  .dataviews-filters__reset-button[aria-disabled="true"] {
27
30
  &,
28
31
  &:hover {
@@ -44,10 +47,12 @@
44
47
  bottom: 0;
45
48
  left: 0;
46
49
  background-color: $white;
47
- padding: $grid-unit-15 $grid-unit-40;
50
+ padding: $grid-unit-15 $grid-unit-60;
48
51
  border-top: $border-width solid $gray-100;
49
52
  color: $gray-700;
50
53
  flex-shrink: 0;
54
+ transition: padding ease-out 0.1s;
55
+ @include reduce-motion("transition");
51
56
  }
52
57
 
53
58
  .dataviews-pagination__page-selection {
@@ -68,6 +73,7 @@
68
73
  border-collapse: collapse;
69
74
  position: relative;
70
75
  color: $gray-700;
76
+ margin-bottom: auto;
71
77
 
72
78
  a {
73
79
  text-decoration: none;
@@ -100,9 +106,18 @@
100
106
  gap: $grid-unit-05;
101
107
  }
102
108
 
109
+ th,
110
+ td {
111
+ &:first-child,
112
+ &:last-child {
113
+ transition: padding ease-out 0.1s;
114
+ @include reduce-motion("transition");
115
+ }
116
+ }
117
+
103
118
  td:first-child,
104
119
  th:first-child {
105
- padding-left: $grid-unit-40;
120
+ padding-left: $grid-unit-60;
106
121
 
107
122
  .dataviews-view-table-header-button,
108
123
  .dataviews-view-table-header {
@@ -112,7 +127,7 @@
112
127
 
113
128
  td:last-child,
114
129
  th:last-child {
115
- padding-right: $grid-unit-40;
130
+ padding-right: $grid-unit-60;
116
131
  }
117
132
 
118
133
  &:last-child {
@@ -278,10 +293,16 @@
278
293
  }
279
294
 
280
295
  .dataviews-view-grid {
281
- margin-bottom: $grid-unit-30;
282
- grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
296
+ margin-bottom: auto;
297
+ grid-template-columns: repeat(1, minmax(0, 1fr)) !important;
283
298
  grid-template-rows: max-content;
284
- padding: 0 $grid-unit-40;
299
+ padding: 0 $grid-unit-60 $grid-unit-30;
300
+ transition: padding ease-out 0.1s;
301
+ @include reduce-motion("transition");
302
+
303
+ @include break-mobile() {
304
+ grid-template-columns: repeat(2, minmax(0, 1fr)) !important; // Todo: eliminate !important dependency
305
+ }
285
306
 
286
307
  @include break-xlarge() {
287
308
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important; // Todo: eliminate !important dependency
@@ -339,6 +360,7 @@
339
360
  height: 100%;
340
361
  box-shadow: inset 0 0 0 $border-width rgba(0, 0, 0, 0.1);
341
362
  border-radius: $grid-unit-05;
363
+ pointer-events: none;
342
364
  }
343
365
  }
344
366
 
@@ -395,33 +417,46 @@
395
417
  }
396
418
 
397
419
  .dataviews-view-list {
398
- margin: 0;
399
- padding: $grid-unit-10;
420
+ margin: 0 0 auto;
400
421
 
401
422
  li {
402
423
  margin: 0;
403
424
  cursor: pointer;
425
+ border-top: 1px solid $gray-100;
404
426
 
405
427
  .dataviews-view-list__item-wrapper {
406
428
  position: relative;
407
- padding-right: $grid-unit-30;
408
429
  border-radius: $grid-unit-05;
409
430
 
410
- &::after {
411
- position: absolute;
412
- content: "";
413
- top: 100%;
414
- left: $grid-unit-30;
415
- right: $grid-unit-30;
416
- background: $gray-100;
417
- height: 1px;
418
- }
419
-
420
431
  > * {
421
432
  width: 100%;
422
433
  }
423
434
  }
424
435
 
436
+ .dataviews-view-list__item-actions {
437
+ .components-button {
438
+ opacity: 0;
439
+ position: fixed;
440
+ }
441
+ }
442
+
443
+ &.is-selected,
444
+ &.is-hovered,
445
+ &:focus-within {
446
+ .dataviews-view-list__item-actions {
447
+ padding-right: $grid-unit-40;
448
+
449
+ .components-button {
450
+ opacity: 1;
451
+ position: static;
452
+ }
453
+ }
454
+
455
+ .dataviews-view-list__item {
456
+ padding-right: 0;
457
+ }
458
+ }
459
+
425
460
  &:not(.is-selected) {
426
461
  .dataviews-view-list__primary-field {
427
462
  color: $gray-900;
@@ -429,6 +464,7 @@
429
464
  &:hover,
430
465
  &:focus-within {
431
466
  color: var(--wp-admin-theme-color);
467
+ background-color: #f8f8f8;
432
468
 
433
469
  .dataviews-view-list__primary-field,
434
470
  .dataviews-view-list__fields {
@@ -436,28 +472,24 @@
436
472
  }
437
473
  }
438
474
  }
475
+
439
476
  }
440
477
 
441
478
  li.is-selected,
442
479
  li.is-selected:focus-within {
443
480
  .dataviews-view-list__item-wrapper {
444
- background-color: var(--wp-admin-theme-color);
445
- color: $white;
481
+ background-color: rgba(var(--wp-admin-theme-color--rgb), 0.04);
482
+ color: $gray-900;
446
483
 
447
484
  .dataviews-view-list__primary-field,
448
- .dataviews-view-list__fields,
449
- .components-button {
450
- color: $white;
451
- }
452
-
453
- &::after {
454
- background: transparent;
485
+ .dataviews-view-list__fields {
486
+ color: var(--wp-admin-theme-color);
455
487
  }
456
488
  }
457
489
  }
458
490
 
459
491
  .dataviews-view-list__item {
460
- padding: $grid-unit-15 0 $grid-unit-15 $grid-unit-30;
492
+ padding: $grid-unit-20 0 $grid-unit-20 $grid-unit-30;
461
493
  width: 100%;
462
494
  scroll-margin: $grid-unit-10 0;
463
495
 
@@ -465,17 +497,17 @@
465
497
  &::before {
466
498
  position: absolute;
467
499
  content: "";
468
- top: -1px;
469
- right: -1px;
470
- bottom: -1px;
471
- left: -1px;
472
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
473
- z-index: -1;
474
- border-radius: $grid-unit-05;
500
+ top: calc(var(--wp-admin-border-width-focus) + 1px);
501
+ right: var(--wp-admin-border-width-focus);
502
+ bottom: var(--wp-admin-border-width-focus);
503
+ left: var(--wp-admin-border-width-focus);
504
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
505
+ border-radius: $radius-block-ui;
475
506
  }
476
507
  }
477
508
  .dataviews-view-list__primary-field {
478
509
  min-height: $grid-unit-05 * 5;
510
+ line-height: $grid-unit-05 * 5;
479
511
  overflow: hidden;
480
512
  }
481
513
  }
@@ -483,11 +515,11 @@
483
515
  .dataviews-view-list__media-wrapper {
484
516
  width: $grid-unit-50;
485
517
  height: $grid-unit-50;
486
- border-radius: $grid-unit-05;
487
518
  overflow: hidden;
488
519
  position: relative;
489
520
  flex-shrink: 0;
490
521
  background-color: $gray-100;
522
+ border-radius: $grid-unit-05;
491
523
 
492
524
  img {
493
525
  width: 100%;
@@ -519,13 +551,20 @@
519
551
  gap: $grid-unit-10;
520
552
  flex-wrap: wrap;
521
553
  font-size: 12px;
522
- line-height: $grid-unit-20;
523
554
 
524
555
  .dataviews-view-list__field {
525
556
  &:has(.dataviews-view-list__field-value:empty) {
526
557
  display: none;
527
558
  }
528
559
  }
560
+
561
+ .dataviews-view-list__field-value {
562
+ line-height: $grid-unit-05 * 5;
563
+ display: inline-flex;
564
+ }
565
+ }
566
+ .dataviews-view-list__item-actions {
567
+ padding-right: $grid-unit-30;
529
568
  }
530
569
 
531
570
  & + .dataviews-pagination {
@@ -540,11 +579,13 @@
540
579
 
541
580
  .dataviews-no-results,
542
581
  .dataviews-loading {
543
- padding: 0 $grid-unit-40;
582
+ padding: 0 $grid-unit-60;
544
583
  flex-grow: 1;
545
584
  display: flex;
546
585
  align-items: center;
547
586
  justify-content: center;
587
+ transition: padding ease-out 0.1s;
588
+ @include reduce-motion("transition");
548
589
  }
549
590
 
550
591
  .dataviews-view-table-selection-checkbox {
@@ -555,6 +596,11 @@
555
596
  }
556
597
 
557
598
  line-height: 0;
599
+ flex-shrink: 0;
600
+
601
+ .components-checkbox-control__input-container {
602
+ margin: 0;
603
+ }
558
604
  }
559
605
 
560
606
  .dataviews-filters__custom-menu-radio-item-prefix {
@@ -797,3 +843,80 @@
797
843
  }
798
844
  }
799
845
  }
846
+
847
+ /* stylelint-disable-next-line scss/at-rule-no-unknown -- '@container' not globally permitted */
848
+ @container (max-width: 430px) {
849
+ .dataviews-pagination,
850
+ .dataviews-filters__view-actions {
851
+ padding: $grid-unit-15 $grid-unit-30;
852
+ }
853
+
854
+ .dataviews-filters__view-actions {
855
+ .components-search-control {
856
+ .components-base-control__field {
857
+ max-width: 112px;
858
+ }
859
+ }
860
+ }
861
+
862
+ .dataviews-view-table tr td:first-child,
863
+ .dataviews-view-table tr th:first-child {
864
+ padding-left: $grid-unit-30;
865
+ }
866
+
867
+ .dataviews-view-table tr td:last-child,
868
+ .dataviews-view-table tr th:last-child {
869
+ padding-right: $grid-unit-30;
870
+ }
871
+
872
+ .dataviews-view-grid,
873
+ .dataviews-no-results,
874
+ .dataviews-loading {
875
+ padding-left: $grid-unit-30;
876
+ padding-right: $grid-unit-30;
877
+ }
878
+ }
879
+
880
+ .dataviews-bulk-actions-toolbar-wrapper {
881
+ display: flex;
882
+ flex-grow: 1;
883
+ width: 100%;
884
+
885
+ .components-toolbar-group {
886
+ align-items: center;
887
+ }
888
+
889
+ .components-button.is-busy {
890
+ max-height: $button-size;
891
+ }
892
+ }
893
+
894
+ .dataviews-bulk-actions {
895
+ position: absolute;
896
+ display: flex;
897
+ flex-direction: column;
898
+ align-content: center;
899
+ flex-wrap: wrap;
900
+ width: 100%;
901
+ bottom: $grid-unit-30;
902
+ z-index: z-index(".dataviews-bulk-actions");
903
+
904
+ .components-accessible-toolbar {
905
+ border-color: $gray-300;
906
+ box-shadow: $shadow-popover;
907
+
908
+ .components-toolbar-group {
909
+ border-color: $gray-200;
910
+
911
+ &:last-child {
912
+ border: 0;
913
+ }
914
+ }
915
+ }
916
+
917
+ .dataviews-bulk-actions__selection-count {
918
+ display: flex;
919
+ align-items: center;
920
+ margin: 0 $grid-unit-10 0 $grid-unit-10;
921
+ }
922
+ }