@wordpress/dataviews 4.6.0 → 4.7.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 (64) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/dataviews-bulk-actions/index.js +6 -6
  3. package/build/components/dataviews-bulk-actions/index.js.map +1 -1
  4. package/build/components/dataviews-filters/add-filter.js +7 -7
  5. package/build/components/dataviews-filters/add-filter.js.map +1 -1
  6. package/build/components/dataviews-filters/index.js +2 -2
  7. package/build/components/dataviews-filters/index.js.map +1 -1
  8. package/build/components/dataviews-item-actions/index.js +11 -11
  9. package/build/components/dataviews-item-actions/index.js.map +1 -1
  10. package/build/components/dataviews-selection-checkbox/index.js +1 -2
  11. package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
  12. package/build/components/dataviews-view-config/index.js +6 -6
  13. package/build/components/dataviews-view-config/index.js.map +1 -1
  14. package/build/dataforms-layouts/panel/index.js +1 -1
  15. package/build/dataforms-layouts/panel/index.js.map +1 -1
  16. package/build/dataviews-layouts/list/index.js +10 -12
  17. package/build/dataviews-layouts/list/index.js.map +1 -1
  18. package/build/dataviews-layouts/table/column-header-menu.js +18 -18
  19. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  20. package/build/types.js.map +1 -1
  21. package/build-module/components/dataviews-bulk-actions/index.js +6 -6
  22. package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
  23. package/build-module/components/dataviews-filters/add-filter.js +6 -6
  24. package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
  25. package/build-module/components/dataviews-filters/index.js +4 -4
  26. package/build-module/components/dataviews-filters/index.js.map +1 -1
  27. package/build-module/components/dataviews-item-actions/index.js +10 -10
  28. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  29. package/build-module/components/dataviews-selection-checkbox/index.js +1 -2
  30. package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
  31. package/build-module/components/dataviews-view-config/index.js +6 -6
  32. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  33. package/build-module/dataforms-layouts/panel/index.js +2 -2
  34. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  35. package/build-module/dataviews-layouts/list/index.js +11 -13
  36. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  37. package/build-module/dataviews-layouts/table/column-header-menu.js +18 -18
  38. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  39. package/build-module/types.js.map +1 -1
  40. package/build-style/style-rtl.css +1 -6
  41. package/build-style/style.css +1 -6
  42. package/build-types/components/dataviews-filters/add-filter.d.ts +1 -1
  43. package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
  44. package/build-types/components/dataviews-item-actions/index.d.ts +2 -2
  45. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  46. package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
  47. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  48. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  49. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  50. package/build-types/types.d.ts +5 -6
  51. package/build-types/types.d.ts.map +1 -1
  52. package/package.json +12 -11
  53. package/src/components/dataviews-bulk-actions/index.tsx +6 -6
  54. package/src/components/dataviews-filters/add-filter.tsx +8 -10
  55. package/src/components/dataviews-filters/index.tsx +4 -4
  56. package/src/components/dataviews-item-actions/index.tsx +15 -15
  57. package/src/components/dataviews-selection-checkbox/index.tsx +3 -2
  58. package/src/components/dataviews-view-config/index.tsx +8 -10
  59. package/src/dataforms-layouts/panel/index.tsx +2 -2
  60. package/src/dataviews-layouts/list/index.tsx +10 -12
  61. package/src/dataviews-layouts/list/style.scss +1 -7
  62. package/src/dataviews-layouts/table/column-header-menu.tsx +31 -35
  63. package/src/types.ts +6 -2
  64. package/tsconfig.tsbuildinfo +1 -1
@@ -51,7 +51,7 @@ import DataViewsContext from '../dataviews-context';
51
51
  import { unlock } from '../../lock-unlock';
52
52
  import DensityPicker from '../../dataviews-layouts/grid/density-picker';
53
53
 
54
- const { DropdownMenuV2 } = unlock( componentsPrivateApis );
54
+ const { Menu } = unlock( componentsPrivateApis );
55
55
 
56
56
  interface ViewTypeMenuProps {
57
57
  defaultLayouts?: SupportedLayouts;
@@ -69,7 +69,7 @@ function ViewTypeMenu( {
69
69
  }
70
70
  const activeView = VIEW_LAYOUTS.find( ( v ) => view.type === v.type );
71
71
  return (
72
- <DropdownMenuV2
72
+ <Menu
73
73
  trigger={
74
74
  <Button
75
75
  size="compact"
@@ -84,7 +84,7 @@ function ViewTypeMenu( {
84
84
  return null;
85
85
  }
86
86
  return (
87
- <DropdownMenuV2.RadioItem
87
+ <Menu.RadioItem
88
88
  key={ layout }
89
89
  value={ layout }
90
90
  name="view-actions-available-view"
@@ -104,13 +104,11 @@ function ViewTypeMenu( {
104
104
  warning( 'Invalid dataview' );
105
105
  } }
106
106
  >
107
- <DropdownMenuV2.ItemLabel>
108
- { config.label }
109
- </DropdownMenuV2.ItemLabel>
110
- </DropdownMenuV2.RadioItem>
107
+ <Menu.ItemLabel>{ config.label }</Menu.ItemLabel>
108
+ </Menu.RadioItem>
111
109
  );
112
110
  } ) }
113
- </DropdownMenuV2>
111
+ </Menu>
114
112
  );
115
113
  }
116
114
 
@@ -363,12 +361,12 @@ function FieldItem( {
363
361
  isVisible
364
362
  ? sprintf(
365
363
  /* translators: %s: field label */
366
- __( 'Hide %s' ),
364
+ _x( 'Hide %s', 'field' ),
367
365
  label
368
366
  )
369
367
  : sprintf(
370
368
  /* translators: %s: field label */
371
- __( 'Show %s' ),
369
+ _x( 'Show %s', 'field' ),
372
370
  label
373
371
  )
374
372
  }
@@ -10,7 +10,7 @@ import {
10
10
  Button,
11
11
  } from '@wordpress/components';
12
12
  import { useState, useMemo } from '@wordpress/element';
13
- import { sprintf, __ } from '@wordpress/i18n';
13
+ import { sprintf, __, _x } from '@wordpress/i18n';
14
14
  import { closeSmall } from '@wordpress/icons';
15
15
 
16
16
  /**
@@ -105,7 +105,7 @@ function FormField< Item >( {
105
105
  aria-expanded={ isOpen }
106
106
  aria-label={ sprintf(
107
107
  // translators: %s: Field name.
108
- __( 'Edit %s' ),
108
+ _x( 'Edit %s', 'field' ),
109
109
  field.label
110
110
  ) }
111
111
  onClick={ onToggle }
@@ -32,7 +32,7 @@ import { useRegistry } from '@wordpress/data';
32
32
  */
33
33
  import { unlock } from '../../lock-unlock';
34
34
  import {
35
- ActionsDropdownMenuGroup,
35
+ ActionsMenuGroup,
36
36
  ActionModal,
37
37
  } from '../../components/dataviews-item-actions';
38
38
  import type { Action, NormalizedField, ViewListProps } from '../../types';
@@ -49,7 +49,7 @@ interface ListViewItemProps< Item > {
49
49
  onDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;
50
50
  }
51
51
 
52
- const { DropdownMenuV2: DropdownMenu } = unlock( componentsPrivateApis );
52
+ const { Menu } = unlock( componentsPrivateApis );
53
53
 
54
54
  function generateItemWrapperCompositeId( idPrefix: string ) {
55
55
  return `${ idPrefix }-item-wrapper`;
@@ -176,10 +176,10 @@ function ListItem< Item >( {
176
176
  }, [ actions, item ] );
177
177
 
178
178
  const renderedMediaField = mediaField?.render ? (
179
- <mediaField.render item={ item } />
180
- ) : (
181
- <div className="dataviews-view-list__media-placeholder"></div>
182
- );
179
+ <div className="dataviews-view-list__media-wrapper">
180
+ <mediaField.render item={ item } />
181
+ </div>
182
+ ) : null;
183
183
 
184
184
  const renderedPrimaryField = primaryField?.render ? (
185
185
  <primaryField.render item={ item } />
@@ -195,7 +195,7 @@ function ListItem< Item >( {
195
195
  />
196
196
  ) }
197
197
  <div role="gridcell">
198
- <DropdownMenu
198
+ <Menu
199
199
  trigger={
200
200
  <Composite.Item
201
201
  id={ generateDropdownTriggerCompositeId(
@@ -215,11 +215,11 @@ function ListItem< Item >( {
215
215
  }
216
216
  placement="bottom-end"
217
217
  >
218
- <ActionsDropdownMenuGroup
218
+ <ActionsMenuGroup
219
219
  actions={ eligibleActions }
220
220
  item={ item }
221
221
  />
222
- </DropdownMenu>
222
+ </Menu>
223
223
  </div>
224
224
  </HStack>
225
225
  );
@@ -248,9 +248,7 @@ function ListItem< Item >( {
248
248
  />
249
249
  </div>
250
250
  <HStack spacing={ 3 } justify="start" alignment="flex-start">
251
- <div className="dataviews-view-list__media-wrapper">
252
- { renderedMediaField }
253
- </div>
251
+ { renderedMediaField }
254
252
  <VStack
255
253
  spacing={ 1 }
256
254
  className="dataviews-view-list__field-wrapper"
@@ -33,7 +33,7 @@ ul.dataviews-view-list {
33
33
  .dataviews-view-list__item-actions {
34
34
  flex-basis: min-content;
35
35
  overflow: unset;
36
- margin-inline: $grid-unit-10 0;
36
+ padding-inline-end: $grid-unit-05;
37
37
 
38
38
  .components-button {
39
39
  opacity: 1;
@@ -144,12 +144,6 @@ ul.dataviews-view-list {
144
144
  }
145
145
  }
146
146
 
147
- .dataviews-view-list__media-placeholder {
148
- width: $grid-unit-05 * 13;
149
- height: $grid-unit-05 * 13;
150
- background-color: $gray-200;
151
- }
152
-
153
147
  .dataviews-view-list__field-wrapper {
154
148
  min-height: $grid-unit-05 * 13; // Ensures title is centrally aligned when all fields are hidden
155
149
  flex-grow: 1;
@@ -29,7 +29,7 @@ import type {
29
29
  } from '../../types';
30
30
  import { getVisibleFieldIds } from '../index';
31
31
 
32
- const { DropdownMenuV2 } = unlock( componentsPrivateApis );
32
+ const { Menu } = unlock( componentsPrivateApis );
33
33
 
34
34
  interface HeaderMenuProps< Item > {
35
35
  fieldId: string;
@@ -40,12 +40,12 @@ interface HeaderMenuProps< Item > {
40
40
  setOpenedFilter: ( fieldId: string ) => void;
41
41
  }
42
42
 
43
- function WithDropDownMenuSeparators( { children }: { children: ReactNode } ) {
43
+ function WithMenuSeparators( { children }: { children: ReactNode } ) {
44
44
  return Children.toArray( children )
45
45
  .filter( Boolean )
46
46
  .map( ( child, i ) => (
47
47
  <Fragment key={ i }>
48
- { i > 0 && <DropdownMenuV2.Separator /> }
48
+ { i > 0 && <Menu.Separator /> }
49
49
  { child }
50
50
  </Fragment>
51
51
  ) );
@@ -101,7 +101,7 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
101
101
  }
102
102
 
103
103
  return (
104
- <DropdownMenuV2
104
+ <Menu
105
105
  align="start"
106
106
  trigger={
107
107
  <Button
@@ -120,9 +120,9 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
120
120
  }
121
121
  style={ { minWidth: '240px' } }
122
122
  >
123
- <WithDropDownMenuSeparators>
123
+ <WithMenuSeparators>
124
124
  { isSortable && (
125
- <DropdownMenuV2.Group>
125
+ <Menu.Group>
126
126
  { SORTING_DIRECTIONS.map(
127
127
  ( direction: SortDirection ) => {
128
128
  const isChecked =
@@ -133,7 +133,7 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
133
133
  const value = `${ fieldId }-${ direction }`;
134
134
 
135
135
  return (
136
- <DropdownMenuV2.RadioItem
136
+ <Menu.RadioItem
137
137
  key={ value }
138
138
  // All sorting radio items share the same name, so that
139
139
  // selecting a sorting option automatically deselects the
@@ -153,18 +153,18 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
153
153
  } );
154
154
  } }
155
155
  >
156
- <DropdownMenuV2.ItemLabel>
156
+ <Menu.ItemLabel>
157
157
  { sortLabels[ direction ] }
158
- </DropdownMenuV2.ItemLabel>
159
- </DropdownMenuV2.RadioItem>
158
+ </Menu.ItemLabel>
159
+ </Menu.RadioItem>
160
160
  );
161
161
  }
162
162
  ) }
163
- </DropdownMenuV2.Group>
163
+ </Menu.Group>
164
164
  ) }
165
165
  { canAddFilter && (
166
- <DropdownMenuV2.Group>
167
- <DropdownMenuV2.Item
166
+ <Menu.Group>
167
+ <Menu.Item
168
168
  prefix={ <Icon icon={ funnel } /> }
169
169
  onClick={ () => {
170
170
  setOpenedFilter( fieldId );
@@ -182,14 +182,14 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
182
182
  } );
183
183
  } }
184
184
  >
185
- <DropdownMenuV2.ItemLabel>
185
+ <Menu.ItemLabel>
186
186
  { __( 'Add filter' ) }
187
- </DropdownMenuV2.ItemLabel>
188
- </DropdownMenuV2.Item>
189
- </DropdownMenuV2.Group>
187
+ </Menu.ItemLabel>
188
+ </Menu.Item>
189
+ </Menu.Group>
190
190
  ) }
191
- <DropdownMenuV2.Group>
192
- <DropdownMenuV2.Item
191
+ <Menu.Group>
192
+ <Menu.Item
193
193
  prefix={ <Icon icon={ arrowLeft } /> }
194
194
  disabled={ index < 1 }
195
195
  onClick={ () => {
@@ -207,11 +207,9 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
207
207
  } );
208
208
  } }
209
209
  >
210
- <DropdownMenuV2.ItemLabel>
211
- { __( 'Move left' ) }
212
- </DropdownMenuV2.ItemLabel>
213
- </DropdownMenuV2.Item>
214
- <DropdownMenuV2.Item
210
+ <Menu.ItemLabel>{ __( 'Move left' ) }</Menu.ItemLabel>
211
+ </Menu.Item>
212
+ <Menu.Item
215
213
  prefix={ <Icon icon={ arrowRight } /> }
216
214
  disabled={ index >= visibleFieldIds.length - 1 }
217
215
  onClick={ () => {
@@ -227,12 +225,10 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
227
225
  } );
228
226
  } }
229
227
  >
230
- <DropdownMenuV2.ItemLabel>
231
- { __( 'Move right' ) }
232
- </DropdownMenuV2.ItemLabel>
233
- </DropdownMenuV2.Item>
228
+ <Menu.ItemLabel>{ __( 'Move right' ) }</Menu.ItemLabel>
229
+ </Menu.Item>
234
230
  { isHidable && field && (
235
- <DropdownMenuV2.Item
231
+ <Menu.Item
236
232
  prefix={ <Icon icon={ unseen } /> }
237
233
  onClick={ () => {
238
234
  onHide( field );
@@ -244,14 +240,14 @@ const _HeaderMenu = forwardRef( function HeaderMenu< Item >(
244
240
  } );
245
241
  } }
246
242
  >
247
- <DropdownMenuV2.ItemLabel>
243
+ <Menu.ItemLabel>
248
244
  { __( 'Hide column' ) }
249
- </DropdownMenuV2.ItemLabel>
250
- </DropdownMenuV2.Item>
245
+ </Menu.ItemLabel>
246
+ </Menu.Item>
251
247
  ) }
252
- </DropdownMenuV2.Group>
253
- </WithDropDownMenuSeparators>
254
- </DropdownMenuV2>
248
+ </Menu.Group>
249
+ </WithMenuSeparators>
250
+ </Menu>
255
251
  );
256
252
  } );
257
253
 
package/src/types.ts CHANGED
@@ -106,7 +106,7 @@ export type Field< Item > = {
106
106
  /**
107
107
  * Callback used to render the field. Defaults to `field.getValue`.
108
108
  */
109
- render?: ComponentType< { item: Item } >;
109
+ render?: ComponentType< DataViewRenderFieldProps< Item > >;
110
110
 
111
111
  /**
112
112
  * Callback used to render an edit control for the field.
@@ -159,7 +159,7 @@ export type NormalizedField< Item > = Field< Item > & {
159
159
  label: string;
160
160
  header: string | ReactElement;
161
161
  getValue: ( args: { item: Item } ) => any;
162
- render: ComponentType< { item: Item } >;
162
+ render: ComponentType< DataViewRenderFieldProps< Item > >;
163
163
  Edit: ComponentType< DataFormControlProps< Item > >;
164
164
  sort: ( a: Item, b: Item, direction: SortDirection ) => number;
165
165
  isValid: ( item: Item, context?: ValidationContext ) => boolean;
@@ -181,6 +181,10 @@ export type DataFormControlProps< Item > = {
181
181
  hideLabelFromVision?: boolean;
182
182
  };
183
183
 
184
+ export type DataViewRenderFieldProps< Item > = {
185
+ item: Item;
186
+ };
187
+
184
188
  /**
185
189
  * The filters applied to the dataset.
186
190
  */