@wordpress/dataviews 12.1.1-next.v.202602271551.0 → 13.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 (44) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/build/components/dataform-layouts/card/index.cjs +12 -7
  3. package/build/components/dataform-layouts/card/index.cjs.map +2 -2
  4. package/build/components/dataviews-filters/toggle.cjs +6 -2
  5. package/build/components/dataviews-filters/toggle.cjs.map +2 -2
  6. package/build/components/dataviews-layouts/list/index.cjs +4 -2
  7. package/build/components/dataviews-layouts/list/index.cjs.map +2 -2
  8. package/build/components/dataviews-layouts/table/index.cjs +20 -2
  9. package/build/components/dataviews-layouts/table/index.cjs.map +2 -2
  10. package/build-module/components/dataform-layouts/card/index.mjs +12 -7
  11. package/build-module/components/dataform-layouts/card/index.mjs.map +2 -2
  12. package/build-module/components/dataviews-filters/toggle.mjs +6 -2
  13. package/build-module/components/dataviews-filters/toggle.mjs.map +2 -2
  14. package/build-module/components/dataviews-layouts/list/index.mjs +4 -2
  15. package/build-module/components/dataviews-layouts/list/index.mjs.map +2 -2
  16. package/build-module/components/dataviews-layouts/table/index.mjs +20 -2
  17. package/build-module/components/dataviews-layouts/table/index.mjs.map +2 -2
  18. package/build-style/style-rtl.css +2 -7
  19. package/build-style/style.css +2 -7
  20. package/build-types/components/dataform-layouts/card/index.d.ts.map +1 -1
  21. package/build-types/components/dataviews-filters/toggle.d.ts.map +1 -1
  22. package/build-types/components/dataviews-layouts/list/index.d.ts.map +1 -1
  23. package/build-types/components/dataviews-layouts/table/index.d.ts.map +1 -1
  24. package/build-types/dataform/stories/layout-panel.d.ts.map +1 -1
  25. package/build-types/dataviews/stories/empty.d.ts.map +1 -1
  26. package/build-types/dataviews/stories/free-composition.d.ts.map +1 -1
  27. package/build-types/dataviews/stories/layout-table.d.ts.map +1 -1
  28. package/build-types/dataviews/stories/minimal-ui.d.ts.map +1 -1
  29. package/build-types/dataviews/stories/with-card.d.ts.map +1 -1
  30. package/build-wp/index.js +44 -17
  31. package/package.json +16 -19
  32. package/src/components/dataform-layouts/card/index.tsx +8 -9
  33. package/src/components/dataform-layouts/panel/style.scss +1 -0
  34. package/src/components/dataviews-filters/toggle.tsx +9 -2
  35. package/src/components/dataviews-layouts/list/index.tsx +6 -2
  36. package/src/components/dataviews-layouts/list/style.scss +0 -9
  37. package/src/components/dataviews-layouts/table/index.tsx +24 -2
  38. package/src/components/dataviews-layouts/table/style.scss +1 -0
  39. package/src/dataform/stories/layout-panel.tsx +5 -1
  40. package/src/dataviews/stories/empty.tsx +1 -7
  41. package/src/dataviews/stories/free-composition.tsx +0 -5
  42. package/src/dataviews/stories/layout-table.tsx +1 -7
  43. package/src/dataviews/stories/minimal-ui.tsx +0 -5
  44. package/src/dataviews/stories/with-card.tsx +1 -7
@@ -217,6 +217,10 @@ function ListItem< Item >( {
217
217
  <titleField.render item={ item } field={ titleField } />
218
218
  ) : null;
219
219
 
220
+ const renderDescription = showDescription && descriptionField?.render;
221
+ // When we have only the media and title fields, we want to center them vertically in the list item.
222
+ const hasOnlyMediaAndTitle =
223
+ !! renderedMediaField && ! renderDescription && ! otherFields.length;
220
224
  const usedActions = eligibleActions?.length > 0 && (
221
225
  <Stack
222
226
  direction="row"
@@ -315,7 +319,7 @@ function ListItem< Item >( {
315
319
  direction="row"
316
320
  gap="md"
317
321
  justify="start"
318
- align="flex-start"
322
+ align={ hasOnlyMediaAndTitle ? 'center' : 'flex-start' }
319
323
  style={ { flex: 1, minWidth: 0 } }
320
324
  >
321
325
  { renderedMediaField }
@@ -333,7 +337,7 @@ function ListItem< Item >( {
333
337
  </div>
334
338
  { usedActions }
335
339
  </Stack>
336
- { showDescription && descriptionField?.render && (
340
+ { renderDescription && (
337
341
  <div className="dataviews-view-list__field">
338
342
  <descriptionField.render
339
343
  item={ item }
@@ -170,7 +170,6 @@ div.dataviews-view-list {
170
170
  }
171
171
 
172
172
  .dataviews-view-list__field-wrapper {
173
- min-height: $grid-unit-05 * 13; // Ensures title is centrally aligned when all fields are hidden
174
173
  flex-grow: 1;
175
174
  min-width: 0;
176
175
  }
@@ -225,10 +224,6 @@ div.dataviews-view-list {
225
224
  height: $grid-unit-05 * 8;
226
225
  }
227
226
 
228
- .dataviews-view-list__field-wrapper {
229
- min-height: $grid-unit-05 * 8;
230
- }
231
-
232
227
  .dataviews-view-list__fields {
233
228
  gap: $grid-unit-10;
234
229
  row-gap: $grid-unit-05;
@@ -257,10 +252,6 @@ div.dataviews-view-list {
257
252
  height: $grid-unit-05 * 16;
258
253
  }
259
254
 
260
- .dataviews-view-list__field-wrapper {
261
- min-height: $grid-unit-05 * 16;
262
- }
263
-
264
255
  .dataviews-view-list__fields {
265
256
  gap: $grid-unit-20;
266
257
  row-gap: $grid-unit-10;
@@ -44,6 +44,19 @@ import getDataByGroup from '../utils/get-data-by-group';
44
44
  import { PropertiesSection } from '../../dataviews-view-config/properties-section';
45
45
  import { useDelayedLoading } from '../../../hooks/use-delayed-loading';
46
46
 
47
+ function getEffectiveAlign(
48
+ explicitAlign: 'start' | 'center' | 'end' | undefined,
49
+ fieldType: string | undefined
50
+ ): 'start' | 'center' | 'end' | undefined {
51
+ if ( explicitAlign ) {
52
+ return explicitAlign;
53
+ }
54
+ if ( fieldType === 'integer' || fieldType === 'number' ) {
55
+ return 'end';
56
+ }
57
+ return undefined;
58
+ }
59
+
47
60
  interface TableColumnFieldProps< Item > {
48
61
  fields: NormalizedField< Item >[];
49
62
  column: string;
@@ -226,6 +239,8 @@ function TableRow< Item >( {
226
239
  // Explicit picks the supported styles.
227
240
  const { width, maxWidth, minWidth, align } =
228
241
  view.layout?.styles?.[ column ] ?? {};
242
+ const field = fields.find( ( f ) => f.id === column );
243
+ const effectiveAlign = getEffectiveAlign( align, field?.type );
229
244
 
230
245
  return (
231
246
  <td
@@ -240,7 +255,7 @@ function TableRow< Item >( {
240
255
  fields={ fields }
241
256
  item={ item }
242
257
  column={ column }
243
- align={ align }
258
+ align={ effectiveAlign }
244
259
  />
245
260
  </td>
246
261
  );
@@ -501,6 +516,13 @@ function ViewTable< Item >( {
501
516
  // Explicit picks the supported styles.
502
517
  const { width, maxWidth, minWidth, align } =
503
518
  view.layout?.styles?.[ column ] ?? {};
519
+ const field = fields.find(
520
+ ( f ) => f.id === column
521
+ );
522
+ const effectiveAlign = getEffectiveAlign(
523
+ align,
524
+ field?.type
525
+ );
504
526
  const canInsertOrMove =
505
527
  view.layout?.enableMoving ?? true;
506
528
  return (
@@ -510,7 +532,7 @@ function ViewTable< Item >( {
510
532
  width,
511
533
  maxWidth,
512
534
  minWidth,
513
- textAlign: align,
535
+ textAlign: effectiveAlign,
514
536
  } }
515
537
  aria-sort={
516
538
  view.sort?.direction &&
@@ -177,6 +177,7 @@
177
177
 
178
178
  &.dataviews-view-table__cell-align-end {
179
179
  justify-content: flex-end;
180
+ font-variant-numeric: tabular-nums;
180
181
  }
181
182
 
182
183
  &.dataviews-view-table__cell-align-center {
@@ -75,6 +75,10 @@ const fields: Field< SamplePost >[] = [
75
75
  { value: 2, label: 'John' },
76
76
  { value: 3, label: 'Alice' },
77
77
  { value: 4, label: 'Bob' },
78
+ {
79
+ value: 5,
80
+ label: 'Superadministratoraccountwithalongunhyphenatedusername',
81
+ },
78
82
  ],
79
83
  setValue: ( { value } ) => ( {
80
84
  author: Number( value ),
@@ -310,7 +314,7 @@ const LayoutPanelComponent = ( {
310
314
  const [ post, setPost ] = useState< SamplePost >( {
311
315
  title: 'Hello, World!',
312
316
  order: 2,
313
- author: 1,
317
+ author: 5,
314
318
  status: 'draft',
315
319
  reviewer: 'fulano',
316
320
  date: '2021-01-01T12:00:00',
@@ -59,13 +59,7 @@ const EmptyComponent = ( {
59
59
  search: '',
60
60
  page: 1,
61
61
  perPage: 10,
62
- layout: {
63
- styles: {
64
- satellites: {
65
- align: 'end' as const,
66
- },
67
- },
68
- },
62
+ layout: {},
69
63
  filters: [],
70
64
  fields: [ 'title', 'description', 'categories' ],
71
65
  } );
@@ -134,11 +134,6 @@ export const FreeCompositionComponent = () => {
134
134
  page: 1,
135
135
  perPage: 10,
136
136
  layout: {
137
- styles: {
138
- satellites: {
139
- align: 'end' as const,
140
- },
141
- },
142
137
  enableMoving: false,
143
138
  },
144
139
  filters: [],
@@ -32,13 +32,7 @@ export const LayoutTableComponent = ( {
32
32
  search: '',
33
33
  page: 1,
34
34
  perPage: 10,
35
- layout: {
36
- styles: {
37
- satellites: {
38
- align: 'end' as const,
39
- },
40
- },
41
- },
35
+ layout: {},
42
36
  filters: [],
43
37
  fields: [ 'categories' ],
44
38
  titleField: 'title',
@@ -23,11 +23,6 @@ const MinimalUIComponent = ( {
23
23
  page: 1,
24
24
  perPage: 10,
25
25
  layout: {
26
- styles: {
27
- satellites: {
28
- align: 'end' as const,
29
- },
30
- },
31
26
  enableMoving: false,
32
27
  },
33
28
  filters: [],
@@ -24,13 +24,7 @@ const WithCardComponent = () => {
24
24
  search: '',
25
25
  page: 1,
26
26
  perPage: 10,
27
- layout: {
28
- styles: {
29
- satellites: {
30
- align: 'end' as const,
31
- },
32
- },
33
- },
27
+ layout: {},
34
28
  filters: [],
35
29
  fields: [ 'categories' ],
36
30
  titleField: 'title',