@wordpress/dataviews 14.2.1-next.v.202605131032.0 → 15.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 (108) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/build/components/dataform-controls/date.cjs.map +3 -3
  3. package/build/components/dataform-controls/datetime.cjs.map +2 -2
  4. package/build/components/dataform-controls/email.cjs.map +3 -3
  5. package/build/components/dataform-controls/telephone.cjs.map +3 -3
  6. package/build/components/dataform-controls/url.cjs.map +3 -3
  7. package/build/components/dataform-layouts/panel/summary-button.cjs +18 -1
  8. package/build/components/dataform-layouts/panel/summary-button.cjs.map +3 -3
  9. package/build/components/dataform-layouts/panel/utils/get-label-content.cjs +17 -4
  10. package/build/components/dataform-layouts/panel/utils/get-label-content.cjs.map +3 -3
  11. package/build/components/dataviews-context/index.cjs.map +2 -2
  12. package/build/components/dataviews-filters/filter.cjs +86 -80
  13. package/build/components/dataviews-filters/filter.cjs.map +3 -3
  14. package/build/components/dataviews-filters/search-widget.cjs.map +3 -3
  15. package/build/components/dataviews-layouts/grid/composite-grid.cjs +10 -2
  16. package/build/components/dataviews-layouts/grid/composite-grid.cjs.map +2 -2
  17. package/build/components/dataviews-layouts/picker-table/index.cjs +8 -0
  18. package/build/components/dataviews-layouts/picker-table/index.cjs.map +2 -2
  19. package/build/components/dataviews-layouts/table/column-header-menu.cjs.map +3 -3
  20. package/build/components/dataviews-layouts/table/use-scroll-state.cjs.map +1 -1
  21. package/build/components/dataviews-layouts/utils/item-click-wrapper.cjs.map +2 -2
  22. package/build/components/dataviews-view-config/properties-section.cjs.map +3 -3
  23. package/build/hooks/use-form-validity.cjs.map +1 -1
  24. package/build-module/components/dataform-controls/date.mjs +2 -2
  25. package/build-module/components/dataform-controls/date.mjs.map +2 -2
  26. package/build-module/components/dataform-controls/datetime.mjs.map +2 -2
  27. package/build-module/components/dataform-controls/email.mjs +2 -2
  28. package/build-module/components/dataform-controls/email.mjs.map +2 -2
  29. package/build-module/components/dataform-controls/telephone.mjs +2 -2
  30. package/build-module/components/dataform-controls/telephone.mjs.map +2 -2
  31. package/build-module/components/dataform-controls/url.mjs +2 -2
  32. package/build-module/components/dataform-controls/url.mjs.map +2 -2
  33. package/build-module/components/dataform-layouts/panel/summary-button.mjs +19 -2
  34. package/build-module/components/dataform-layouts/panel/summary-button.mjs.map +2 -2
  35. package/build-module/components/dataform-layouts/panel/utils/get-label-content.mjs +18 -5
  36. package/build-module/components/dataform-layouts/panel/utils/get-label-content.mjs.map +2 -2
  37. package/build-module/components/dataviews-context/index.mjs.map +2 -2
  38. package/build-module/components/dataviews-filters/filter.mjs +88 -83
  39. package/build-module/components/dataviews-filters/filter.mjs.map +2 -2
  40. package/build-module/components/dataviews-filters/search-widget.mjs +3 -3
  41. package/build-module/components/dataviews-filters/search-widget.mjs.map +2 -2
  42. package/build-module/components/dataviews-layouts/grid/composite-grid.mjs +11 -4
  43. package/build-module/components/dataviews-layouts/grid/composite-grid.mjs.map +2 -2
  44. package/build-module/components/dataviews-layouts/picker-table/index.mjs +8 -0
  45. package/build-module/components/dataviews-layouts/picker-table/index.mjs.map +2 -2
  46. package/build-module/components/dataviews-layouts/table/column-header-menu.mjs +5 -5
  47. package/build-module/components/dataviews-layouts/table/column-header-menu.mjs.map +2 -2
  48. package/build-module/components/dataviews-layouts/table/use-scroll-state.mjs.map +1 -1
  49. package/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs.map +2 -2
  50. package/build-module/components/dataviews-view-config/properties-section.mjs +2 -2
  51. package/build-module/components/dataviews-view-config/properties-section.mjs.map +2 -2
  52. package/build-module/hooks/use-form-validity.mjs.map +1 -1
  53. package/build-style/style-rtl.css +395 -377
  54. package/build-style/style.css +395 -377
  55. package/build-types/components/dataform-layouts/panel/summary-button.d.ts.map +1 -1
  56. package/build-types/components/dataform-layouts/panel/utils/get-label-content.d.ts.map +1 -1
  57. package/build-types/components/dataviews-context/index.d.ts +2 -2
  58. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  59. package/build-types/components/dataviews-filters/filter.d.ts.map +1 -1
  60. package/build-types/components/dataviews-layouts/grid/composite-grid.d.ts.map +1 -1
  61. package/build-types/components/dataviews-layouts/picker-table/index.d.ts.map +1 -1
  62. package/build-types/components/dataviews-layouts/table/use-scroll-state.d.ts +9 -5
  63. package/build-types/components/dataviews-layouts/table/use-scroll-state.d.ts.map +1 -1
  64. package/build-types/components/dataviews-layouts/utils/item-click-wrapper.d.ts.map +1 -1
  65. package/build-types/dataviews/stories/free-composition.d.ts.map +1 -1
  66. package/build-wp/index.js +3298 -1396
  67. package/package.json +18 -18
  68. package/src/components/dataform-controls/date.tsx +2 -2
  69. package/src/components/dataform-controls/datetime.tsx +1 -1
  70. package/src/components/dataform-controls/email.tsx +2 -2
  71. package/src/components/dataform-controls/style.scss +2 -4
  72. package/src/components/dataform-controls/telephone.tsx +2 -2
  73. package/src/components/dataform-controls/url.tsx +2 -2
  74. package/src/components/dataform-layouts/card/style.scss +4 -7
  75. package/src/components/dataform-layouts/details/style.scss +2 -4
  76. package/src/components/dataform-layouts/panel/style.scss +41 -21
  77. package/src/components/dataform-layouts/panel/summary-button.tsx +17 -6
  78. package/src/components/dataform-layouts/panel/utils/get-label-content.tsx +15 -7
  79. package/src/components/dataform-layouts/regular/style.scss +5 -8
  80. package/src/components/dataviews-bulk-actions/style.scss +2 -6
  81. package/src/components/dataviews-context/index.ts +2 -4
  82. package/src/components/dataviews-filters/filter.tsx +93 -77
  83. package/src/components/dataviews-filters/search-widget.tsx +3 -3
  84. package/src/components/dataviews-filters/style.scss +93 -95
  85. package/src/components/dataviews-footer/style.scss +4 -6
  86. package/src/components/dataviews-item-actions/style.scss +1 -3
  87. package/src/components/dataviews-layouts/activity/style.scss +39 -41
  88. package/src/components/dataviews-layouts/grid/composite-grid.tsx +15 -8
  89. package/src/components/dataviews-layouts/grid/style.scss +46 -50
  90. package/src/components/dataviews-layouts/list/style.scss +61 -59
  91. package/src/components/dataviews-layouts/picker-grid/style.scss +33 -37
  92. package/src/components/dataviews-layouts/picker-table/index.tsx +15 -0
  93. package/src/components/dataviews-layouts/picker-table/style.scss +5 -8
  94. package/src/components/dataviews-layouts/table/column-header-menu.tsx +5 -5
  95. package/src/components/dataviews-layouts/table/style.scss +44 -46
  96. package/src/components/dataviews-layouts/table/use-scroll-state.ts +6 -6
  97. package/src/components/dataviews-layouts/utils/grid-items.scss +4 -6
  98. package/src/components/dataviews-layouts/utils/item-click-wrapper.tsx +3 -1
  99. package/src/components/dataviews-pagination/style.scss +2 -3
  100. package/src/components/dataviews-picker-footer/style.scss +1 -3
  101. package/src/components/dataviews-selection-checkbox/style.scss +0 -1
  102. package/src/components/dataviews-view-config/properties-section.tsx +2 -2
  103. package/src/components/dataviews-view-config/style.scss +8 -11
  104. package/src/dataviews/stories/free-composition.tsx +3 -1
  105. package/src/dataviews/style.scss +27 -18
  106. package/src/dataviews-picker/stories/index.story.tsx +2 -0
  107. package/src/field-types/stories/index.story.tsx +2 -2
  108. package/src/hooks/use-form-validity.ts +2 -2
@@ -1,5 +1,4 @@
1
- @use "@wordpress/base-styles/colors" as *;
2
- @use "@wordpress/base-styles/variables" as *;
1
+ @use "@wordpress/base-styles/variables" as vars;
3
2
  @use "../../../dataviews/style" as *;
4
3
 
5
4
  div.dataviews-view-list {
@@ -12,11 +11,11 @@ div.dataviews-view-list {
12
11
  div[role="row"],
13
12
  div[role="article"] {
14
13
  margin: 0;
15
- border-top: 1px solid $gray-100;
14
+ border-top: 1px solid var(--wpds-color-stroke-surface-neutral-weak);
16
15
 
17
16
  .dataviews-view-list__item-wrapper {
18
17
  position: relative;
19
- padding: $grid-unit-20 $grid-unit-30;
18
+ padding: var(--wpds-dimension-padding-lg) var(--wpds-dimension-padding-2xl);
20
19
  box-sizing: border-box;
21
20
  }
22
21
 
@@ -24,7 +23,7 @@ div.dataviews-view-list {
24
23
  display: flex;
25
24
  width: max-content;
26
25
  flex: 0 0 auto;
27
- gap: $grid-unit-05;
26
+ gap: var(--wpds-dimension-gap-xs);
28
27
  white-space: nowrap;
29
28
 
30
29
  .components-button {
@@ -33,7 +32,7 @@ div.dataviews-view-list {
33
32
  }
34
33
 
35
34
  > div {
36
- height: $button-size-small;
35
+ height: vars.$button-size-small;
37
36
  }
38
37
 
39
38
  > :not(:last-child) {
@@ -61,11 +60,11 @@ div.dataviews-view-list {
61
60
  }
62
61
 
63
62
  &.is-selected.is-selected {
64
- border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12);
63
+ border-top: 1px solid var(--wpds-color-stroke-surface-brand);
65
64
 
66
65
  & + div[role="row"],
67
66
  & + div[role="article"] {
68
- border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12);
67
+ border-top: 1px solid var(--wpds-color-stroke-surface-brand);
69
68
  }
70
69
  }
71
70
 
@@ -73,18 +72,12 @@ div.dataviews-view-list {
73
72
  &:hover,
74
73
  &.is-hovered,
75
74
  &:focus-within {
76
- color: var(--wp-admin-theme-color);
77
- background-color: rgba(var(--wp-admin-theme-color--rgb), 0.04);
78
- border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12);
79
-
80
- & + div[role="row"],
81
- & + div[role="article"] {
82
- border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12);
83
- }
75
+ color: var(--wpds-color-fg-interactive-brand);
76
+ background-color: var(--wpds-color-bg-interactive-brand-weak);
84
77
 
85
78
  .dataviews-title-field,
86
79
  .dataviews-view-list__field {
87
- color: var(--wp-admin-theme-color);
80
+ color: var(--wpds-color-fg-interactive-brand);
88
81
  }
89
82
  }
90
83
  }
@@ -96,12 +89,12 @@ div.dataviews-view-list {
96
89
  div[role="article"].is-selected,
97
90
  div[role="article"].is-selected:focus-within {
98
91
  .dataviews-view-list__item-wrapper {
99
- background-color: rgba(var(--wp-admin-theme-color--rgb), 0.08);
100
- color: $gray-900;
92
+ background-color: var(--wpds-color-bg-interactive-brand-weak-active);
93
+ color: var(--wpds-color-fg-interactive-neutral);
101
94
 
102
95
  .dataviews-title-field,
103
96
  .dataviews-view-list__field {
104
- color: $gray-900;
97
+ color: var(--wpds-color-fg-interactive-neutral-active);
105
98
  }
106
99
  }
107
100
  }
@@ -110,7 +103,7 @@ div.dataviews-view-list {
110
103
  position: absolute;
111
104
  z-index: 1;
112
105
  inset: 0;
113
- scroll-margin: $grid-unit-10 0;
106
+ scroll-margin: var(--wpds-dimension-gap-sm) 0;
114
107
  appearance: none;
115
108
  border: none;
116
109
  background: none;
@@ -124,8 +117,8 @@ div.dataviews-view-list {
124
117
  position: absolute;
125
118
  content: "";
126
119
  inset: var(--wp-admin-border-width-focus);
127
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
128
- border-radius: $radius-small;
120
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wpds-color-stroke-focus-brand);
121
+ border-radius: var(--wpds-border-radius-sm);
129
122
  // Windows High Contrast mode will show this outline, but not the box-shadow.
130
123
  outline: 2px solid transparent;
131
124
  }
@@ -133,8 +126,8 @@ div.dataviews-view-list {
133
126
  }
134
127
  .dataviews-view-list__title-field {
135
128
  flex: 1;
136
- min-height: $grid-unit-30;
137
- line-height: $grid-unit-30;
129
+ min-height: calc(var(--wpds-dimension-base) * 6); // TODO: use size token when available
130
+ line-height: var(--wpds-typography-line-height-md);
138
131
  overflow: hidden;
139
132
  // The field should be in front of the main button in case it has a link/button.
140
133
  &:has(a, button) {
@@ -143,13 +136,13 @@ div.dataviews-view-list {
143
136
  }
144
137
 
145
138
  .dataviews-view-list__media-wrapper {
146
- width: $grid-unit-05 * 13;
147
- height: $grid-unit-05 * 13;
139
+ width: calc(var(--wpds-dimension-base) * 13);
140
+ height: calc(var(--wpds-dimension-base) * 13);
148
141
  overflow: hidden;
149
142
  position: relative;
150
143
  flex-shrink: 0;
151
- background-color: $white;
152
- border-radius: $radius-medium;
144
+ background-color: var(--wpds-color-bg-surface-neutral-strong);
145
+ border-radius: var(--wpds-border-radius-md);
153
146
 
154
147
  img {
155
148
  width: 100%;
@@ -164,24 +157,25 @@ div.dataviews-view-list {
164
157
  left: 0;
165
158
  width: 100%;
166
159
  height: 100%;
167
- box-shadow: inset 0 0 0 $border-width rgba(0, 0, 0, 0.1);
168
- border-radius: $radius-medium;
160
+ box-shadow: inset 0 0 0 var(--wpds-border-width-xs) rgba(0, 0, 0, 0.1);
161
+ border-radius: var(--wpds-border-radius-md);
169
162
  }
170
163
  }
171
164
 
172
165
  .dataviews-view-list__field-wrapper {
166
+ min-height: calc(var(--wpds-dimension-base) * 13); // Ensures title is centrally aligned when all fields are hidden
173
167
  flex-grow: 1;
174
168
  min-width: 0;
175
169
  }
176
170
 
177
171
  .dataviews-view-list__field {
178
- color: $gray-700;
172
+ color: var(--wpds-color-fg-interactive-neutral-weak);
179
173
  }
180
174
 
181
175
  .dataviews-view-list__fields {
182
176
  display: flex;
183
- gap: $grid-unit-15;
184
- row-gap: $grid-unit-05;
177
+ gap: var(--wpds-dimension-gap-md);
178
+ row-gap: var(--wpds-dimension-gap-xs);
185
179
  flex-wrap: wrap;
186
180
  font-size: 12px;
187
181
 
@@ -196,8 +190,8 @@ div.dataviews-view-list {
196
190
  }
197
191
 
198
192
  .dataviews-view-list__field-value {
199
- min-height: $grid-unit-30;
200
- line-height: $grid-unit-05 * 5;
193
+ min-height: calc(var(--wpds-dimension-base) * 6); // TODO: use size token when available
194
+ line-height: var(--wpds-typography-line-height-sm);
201
195
  display: flex;
202
196
  align-items: center;
203
197
  }
@@ -211,26 +205,30 @@ div.dataviews-view-list {
211
205
  &.has-compact-density {
212
206
  div[role="row"] {
213
207
  .dataviews-view-list__item-wrapper {
214
- padding: $grid-unit-10 $grid-unit-30;
208
+ padding: var(--wpds-dimension-padding-sm) var(--wpds-dimension-padding-2xl);
215
209
  }
216
210
 
217
211
  .dataviews-view-list__title-field {
218
- min-height: $grid-unit-20;
219
- line-height: $grid-unit-20;
212
+ min-height: calc(var(--wpds-dimension-base) * 4); // TODO: use size token when available
213
+ line-height: var(--wpds-typography-line-height-xs);
220
214
  }
221
215
 
222
216
  .dataviews-view-list__media-wrapper {
223
- width: $grid-unit-05 * 8;
224
- height: $grid-unit-05 * 8;
217
+ width: calc(var(--wpds-dimension-base) * 8); // TODO: use size token when available
218
+ height: calc(var(--wpds-dimension-base) * 8); // TODO: use size token when available
219
+ }
220
+
221
+ .dataviews-view-list__field-wrapper {
222
+ min-height: calc(var(--wpds-dimension-base) * 8); // TODO: use size token when available
225
223
  }
226
224
 
227
225
  .dataviews-view-list__fields {
228
- gap: $grid-unit-10;
229
- row-gap: $grid-unit-05;
226
+ gap: var(--wpds-dimension-gap-sm);
227
+ row-gap: var(--wpds-dimension-gap-xs);
230
228
 
231
229
  .dataviews-view-list__field-value {
232
- min-height: $grid-unit-20;
233
- line-height: $grid-unit-05 * 4;
230
+ min-height: calc(var(--wpds-dimension-base) * 4); // TODO: use size token when available
231
+ line-height: var(--wpds-typography-line-height-xs);
234
232
  }
235
233
  }
236
234
  }
@@ -239,26 +237,30 @@ div.dataviews-view-list {
239
237
  &.has-comfortable-density {
240
238
  div[role="row"] {
241
239
  .dataviews-view-list__item-wrapper {
242
- padding: $grid-unit-30 $grid-unit-30;
240
+ padding: var(--wpds-dimension-padding-2xl) var(--wpds-dimension-padding-2xl);
243
241
  }
244
242
 
245
243
  .dataviews-view-list__title-field {
246
- min-height: $grid-unit-40;
247
- line-height: $grid-unit-40;
244
+ min-height: calc(var(--wpds-dimension-base) * 8); // TODO: use size token when available
245
+ line-height: var(--wpds-typography-line-height-xl);
248
246
  }
249
247
 
250
248
  .dataviews-view-list__media-wrapper {
251
- width: $grid-unit-05 * 16;
252
- height: $grid-unit-05 * 16;
249
+ width: calc(var(--wpds-dimension-base) * 16);
250
+ height: calc(var(--wpds-dimension-base) * 16);
251
+ }
252
+
253
+ .dataviews-view-list__field-wrapper {
254
+ min-height: calc(var(--wpds-dimension-base) * 16);
253
255
  }
254
256
 
255
257
  .dataviews-view-list__fields {
256
- gap: $grid-unit-20;
257
- row-gap: $grid-unit-10;
258
+ gap: var(--wpds-dimension-gap-lg);
259
+ row-gap: var(--wpds-dimension-gap-sm);
258
260
 
259
261
  .dataviews-view-list__field-value {
260
- min-height: $grid-unit-40;
261
- line-height: $grid-unit-05 * 6;
262
+ min-height: calc(var(--wpds-dimension-base) * 8); // TODO: use size token when available
263
+ line-height: var(--wpds-typography-line-height-md);
262
264
  }
263
265
  }
264
266
  }
@@ -270,9 +272,9 @@ div.dataviews-view-list {
270
272
  }
271
273
 
272
274
  .dataviews-view-list__group-header {
273
- font-size: $font-size-large;
274
- font-weight: $font-weight-medium;
275
- color: $gray-900;
276
- margin: 0 0 $grid-unit-10 0;
277
- padding: 0 $grid-unit-30;
275
+ font-size: var(--wpds-typography-font-size-lg);
276
+ font-weight: var(--wpds-typography-font-weight-medium);
277
+ color: var(--wpds-color-fg-content-neutral);
278
+ margin: 0 0 var(--wpds-dimension-gap-sm) 0;
279
+ padding: 0 var(--wpds-dimension-padding-2xl);
278
280
  }
@@ -1,31 +1,28 @@
1
- @use "sass:math";
2
- @use "@wordpress/base-styles/colors" as *;
3
- @use "@wordpress/base-styles/variables" as *;
4
- @use "@wordpress/base-styles/z-index" as *;
5
1
  @use "../utils/grid-items.scss" as *;
6
2
 
7
3
  .dataviews-view-picker-grid {
8
4
  // When grouped, the density class is on the parent Composite,
9
5
  // and the gap is on child .dataviews-view-grid-items elements.
10
6
  &.has-compact-density .dataviews-view-grid-items {
11
- gap: $grid-unit-20;
7
+ gap: var(--wpds-dimension-gap-lg);
12
8
  }
13
9
 
14
10
  &.has-comfortable-density .dataviews-view-grid-items {
15
- gap: $grid-unit-40;
11
+ gap: var(--wpds-dimension-gap-2xl);
16
12
  }
17
13
 
18
14
  .dataviews-view-picker-grid__card {
19
15
  height: 100%;
20
16
  justify-content: flex-start;
21
17
  position: relative;
18
+ isolation: isolate;
22
19
 
23
20
  .dataviews-view-picker-grid__title-actions {
24
- padding: $grid-unit-10 0 $grid-unit-05;
21
+ padding: var(--wpds-dimension-padding-sm) 0 var(--wpds-dimension-padding-xs);
25
22
  }
26
23
 
27
24
  .dataviews-view-picker-grid__title-field {
28
- min-height: $grid-unit-30; // Preserve layout when there is no ellipsis button
25
+ min-height: calc(var(--wpds-dimension-base) * 6); // TODO: use size token when available. Preserve layout when there is no ellipsis button
29
26
  overflow: hidden;
30
27
  align-content: center;
31
28
  text-align: start;
@@ -38,18 +35,16 @@
38
35
 
39
36
  &.is-selected {
40
37
  .dataviews-view-picker-grid__fields .dataviews-view-picker-grid__field .dataviews-view-picker-grid__field-value {
41
- color: $gray-900;
38
+ color: var(--wpds-color-fg-content-neutral);
42
39
  }
43
40
  }
44
- &.is-selected .dataviews-view-picker-grid__media::after,
45
- .dataviews-view-picker-grid__media:focus::after {
46
- background-color: rgba(var(--wp-admin-theme-color--rgb), 0.08);
47
- }
48
41
  &.is-selected .dataviews-view-picker-grid__media::after {
49
- box-shadow: inset 0 0 0 $border-width var(--wp-admin-theme-color);
42
+ box-shadow:
43
+ inset 0 0 0 var(--wpds-border-width-xs) var(--wpds-color-stroke-interactive-brand),
44
+ inset 0 0 0 var(--wpds-border-width-sm) var(--wpds-color-bg-surface-neutral-strong);
50
45
  }
51
46
  .dataviews-view-picker-grid__media:focus::after {
52
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
47
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wpds-color-stroke-focus-brand);
53
48
  }
54
49
  }
55
50
 
@@ -61,13 +56,13 @@
61
56
  }
62
57
 
63
58
  [data-active-item="true"] {
64
- outline: 2px solid var(--wp-admin-theme-color);
59
+ outline: 2px solid var(--wpds-color-stroke-focus-brand);
65
60
  }
66
61
  }
67
62
 
68
63
  .dataviews-selection-checkbox {
69
64
  // Always show the checkbox in picker mode.
70
- top: $grid-unit-10 !important;
65
+ top: var(--wpds-dimension-padding-sm) !important;
71
66
 
72
67
  input {
73
68
  // When the dataview is used as a picker, ensure the checkbox can't be clicked on.
@@ -80,8 +75,8 @@
80
75
  width: 100%;
81
76
  aspect-ratio: 1/1;
82
77
  min-height: 0;
83
- background-color: $white;
84
- border-radius: $radius-medium;
78
+ background-color: var(--wpds-color-bg-surface-neutral-strong);
79
+ border-radius: var(--wpds-border-radius-md);
85
80
  position: relative;
86
81
 
87
82
  img {
@@ -97,8 +92,8 @@
97
92
  left: 0;
98
93
  width: 100%;
99
94
  height: 100%;
100
- box-shadow: inset 0 0 0 $border-width rgba(0, 0, 0, 0.1);
101
- border-radius: $grid-unit-05;
95
+ box-shadow: inset 0 0 0 var(--wpds-border-width-xs) rgba(0, 0, 0, 0.1);
96
+ border-radius: var(--wpds-border-radius-md);
102
97
  pointer-events: none;
103
98
  }
104
99
  }
@@ -109,22 +104,22 @@
109
104
  line-height: 16px;
110
105
 
111
106
  &:not(:empty) {
112
- padding: 0 0 $grid-unit-15;
107
+ padding: 0 0 var(--wpds-dimension-padding-md);
113
108
  }
114
109
 
115
110
  .dataviews-view-picker-grid__field-value:not(:empty) {
116
- min-height: $grid-unit-30;
117
- line-height: $grid-unit-05 * 5;
118
- padding-top: math.div($grid-unit-05, 2);
111
+ min-height: calc(var(--wpds-dimension-base) * 6); // TODO: use size token when available
112
+ line-height: var(--wpds-typography-line-height-sm);
113
+ padding-top: calc(var(--wpds-dimension-base) / 2);
119
114
  }
120
115
 
121
116
  .dataviews-view-picker-grid__field {
122
- min-height: $grid-unit-30;
117
+ min-height: calc(var(--wpds-dimension-base) * 6); // TODO: use size token when available
123
118
  align-items: center;
124
119
 
125
120
  .dataviews-view-picker-grid__field-name {
126
121
  width: 35%;
127
- color: $gray-700;
122
+ color: var(--wpds-color-fg-content-neutral-weak);
128
123
  overflow: hidden;
129
124
  text-overflow: ellipsis;
130
125
  white-space: nowrap;
@@ -145,7 +140,7 @@
145
140
 
146
141
  .dataviews-view-picker-grid__badge-fields {
147
142
  &:not(:empty) {
148
- padding-bottom: $grid-unit-15;
143
+ padding-bottom: var(--wpds-dimension-padding-md);
149
144
  }
150
145
  }
151
146
  }
@@ -158,19 +153,20 @@
158
153
  .dataviews-view-picker-grid__card .dataviews-selection-checkbox {
159
154
  position: absolute;
160
155
  top: -9999em;
161
- left: $grid-unit-10;
162
- z-index: z-index(".dataviews-view-grid__card .dataviews-selection-checkbox");
156
+ left: var(--wpds-dimension-padding-sm);
157
+ // Ensure selection checkbox stays above the preview field.
158
+ z-index: 1;
163
159
 
164
160
  @media (hover: none) {
165
161
  // Show checkboxes on devices that do not support hover.
166
- top: $grid-unit-10;
162
+ top: var(--wpds-dimension-padding-sm);
167
163
  }
168
164
  }
169
165
 
170
166
  .dataviews-view-picker-grid__card:hover .dataviews-selection-checkbox,
171
167
  .dataviews-view-picker-grid__card:focus-within .dataviews-selection-checkbox,
172
168
  .dataviews-view-picker-grid__card.is-selected .dataviews-selection-checkbox {
173
- top: $grid-unit-10;
169
+ top: var(--wpds-dimension-padding-sm);
174
170
  }
175
171
 
176
172
  .dataviews-view-picker-grid__media--clickable {
@@ -178,9 +174,9 @@
178
174
  }
179
175
 
180
176
  .dataviews-view-picker-grid-group__header {
181
- font-size: $font-size-large;
182
- font-weight: $font-weight-medium;
183
- color: $gray-900;
184
- margin: 0 0 $grid-unit-10 0;
185
- padding: 0 $grid-unit-60;
177
+ font-size: var(--wpds-typography-font-size-lg);
178
+ font-weight: var(--wpds-typography-font-weight-medium);
179
+ color: var(--wpds-color-fg-content-neutral);
180
+ margin: 0 0 var(--wpds-dimension-gap-sm) 0;
181
+ padding: 0 calc(var(--wpds-dimension-base) * 12);
186
182
  }
@@ -142,6 +142,21 @@ function TableRow< Item >( {
142
142
  aria-setsize={ paginationInfo.totalItems || undefined }
143
143
  aria-posinset={ posinset }
144
144
  role={ infiniteScrollEnabled ? 'article' : 'option' }
145
+ onMouseDown={ ( event ) => {
146
+ if ( event.button !== 0 ) {
147
+ return;
148
+ }
149
+ // Pre-focus the Composite container (parent `tbody`) so that
150
+ // when the row is focused on click, Ariakit sees the focus
151
+ // coming from within the Composite and uses `focusSilently`
152
+ // (which passes `preventScroll: true`). Without this, the
153
+ // first focus into the Composite scrolls the active row
154
+ // under the sticky table header, which also causes the click
155
+ // to land on a different element than the original target.
156
+ event.currentTarget.parentElement?.focus( {
157
+ preventScroll: true,
158
+ } );
159
+ } }
145
160
  onClick={ () => {
146
161
  // Toggle in/out of selection array
147
162
  if ( isSelected ) {
@@ -1,5 +1,3 @@
1
- @use "@wordpress/base-styles/variables" as *;
2
-
3
1
  // Picker-specific table styles
4
2
  // The table picker mainly reuses the regular table styles from ../table/style.scss
5
3
  // Add any picker-specific overrides here if needed in the future.
@@ -9,7 +7,7 @@
9
7
 
10
8
  // Constrain checkbox column to fixed width while other columns share remaining space.
11
9
  .dataviews-view-table__checkbox-column {
12
- width: $grid-unit-60;
10
+ width: calc(var(--wpds-dimension-base) * 12);
13
11
  }
14
12
 
15
13
  tbody:focus-visible {
@@ -20,7 +18,7 @@
20
18
  }
21
19
 
22
20
  [data-active-item="true"] {
23
- outline: 2px solid var(--wp-admin-theme-color);
21
+ outline: 2px solid var(--wpds-color-stroke-focus-brand);
24
22
  }
25
23
  }
26
24
 
@@ -39,16 +37,15 @@
39
37
  cursor: var(--wpds-cursor-control);
40
38
 
41
39
  &.is-selected {
42
- // Ensure selected rows are visually distinct
43
- background-color: rgba(var(--wp-admin-theme-color--rgb), 0.04);
40
+ background-color: var(--wpds-color-bg-interactive-brand-weak-active);
44
41
  }
45
42
 
46
43
  &.is-hovered {
47
- background-color: rgba(var(--wp-admin-theme-color--rgb), 0.08);
44
+ background-color: var(--wpds-color-bg-interactive-brand-weak-active);
48
45
  }
49
46
 
50
47
  &.is-selected.is-hovered {
51
- background-color: rgba(var(--wp-admin-theme-color--rgb), 0.12);
48
+ background-color: var(--wpds-color-bg-interactive-brand-weak-active);
52
49
  }
53
50
  }
54
51
  }
@@ -10,7 +10,7 @@ import { __, isRTL } from '@wordpress/i18n';
10
10
  import { arrowLeft, arrowRight, unseen, funnel } from '@wordpress/icons';
11
11
  import {
12
12
  Button,
13
- Icon,
13
+ Icon as WCIcon,
14
14
  privateApis as componentsPrivateApis,
15
15
  } from '@wordpress/components';
16
16
  import { forwardRef, Children, Fragment, useContext } from '@wordpress/element';
@@ -181,7 +181,7 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
181
181
  { canAddFilter && (
182
182
  <Menu.Group>
183
183
  <Menu.Item
184
- prefix={ <Icon icon={ funnel } /> }
184
+ prefix={ <WCIcon icon={ funnel } /> }
185
185
  onClick={ () => {
186
186
  setOpenedFilter( fieldId );
187
187
  setIsShowingFilter( true );
@@ -209,7 +209,7 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
209
209
  <Menu.Group>
210
210
  { canMove && (
211
211
  <Menu.Item
212
- prefix={ <Icon icon={ arrowLeft } /> }
212
+ prefix={ <WCIcon icon={ arrowLeft } /> }
213
213
  disabled={
214
214
  isRtl
215
215
  ? index >=
@@ -243,7 +243,7 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
243
243
  ) }
244
244
  { canMove && (
245
245
  <Menu.Item
246
- prefix={ <Icon icon={ arrowRight } /> }
246
+ prefix={ <WCIcon icon={ arrowRight } /> }
247
247
  disabled={
248
248
  isRtl
249
249
  ? index < 1
@@ -357,7 +357,7 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
357
357
  ) }
358
358
  { isHidable && field && (
359
359
  <Menu.Item
360
- prefix={ <Icon icon={ unseen } /> }
360
+ prefix={ <WCIcon icon={ unseen } /> }
361
361
  onClick={ () => {
362
362
  onHide( field );
363
363
  onChangeView( {