@wordpress/dataviews 4.5.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 (87) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/dataviews-bulk-actions/index.js +8 -8
  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/filter-summary.js +8 -8
  7. package/build/components/dataviews-filters/filter-summary.js.map +1 -1
  8. package/build/components/dataviews-filters/index.js +3 -3
  9. package/build/components/dataviews-filters/index.js.map +1 -1
  10. package/build/components/dataviews-filters/search-widget.js +1 -1
  11. package/build/components/dataviews-filters/search-widget.js.map +1 -1
  12. package/build/components/dataviews-item-actions/index.js +11 -11
  13. package/build/components/dataviews-item-actions/index.js.map +1 -1
  14. package/build/components/dataviews-selection-checkbox/index.js +1 -2
  15. package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
  16. package/build/components/dataviews-view-config/index.js +10 -10
  17. package/build/components/dataviews-view-config/index.js.map +1 -1
  18. package/build/dataforms-layouts/panel/index.js +1 -1
  19. package/build/dataforms-layouts/panel/index.js.map +1 -1
  20. package/build/dataviews-layouts/grid/index.js.map +1 -1
  21. package/build/dataviews-layouts/list/index.js +74 -81
  22. package/build/dataviews-layouts/list/index.js.map +1 -1
  23. package/build/dataviews-layouts/table/column-header-menu.js +18 -18
  24. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  25. package/build/types.js.map +1 -1
  26. package/build-module/components/dataform-combined-edit/index.js +1 -3
  27. package/build-module/components/dataform-combined-edit/index.js.map +1 -1
  28. package/build-module/components/dataviews/index.js +1 -2
  29. package/build-module/components/dataviews/index.js.map +1 -1
  30. package/build-module/components/dataviews-bulk-actions/index.js +9 -10
  31. package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
  32. package/build-module/components/dataviews-filters/add-filter.js +6 -6
  33. package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
  34. package/build-module/components/dataviews-filters/filter-summary.js +9 -10
  35. package/build-module/components/dataviews-filters/filter-summary.js.map +1 -1
  36. package/build-module/components/dataviews-filters/index.js +6 -7
  37. package/build-module/components/dataviews-filters/index.js.map +1 -1
  38. package/build-module/components/dataviews-filters/search-widget.js +2 -3
  39. package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
  40. package/build-module/components/dataviews-footer/index.js +1 -2
  41. package/build-module/components/dataviews-footer/index.js.map +1 -1
  42. package/build-module/components/dataviews-item-actions/index.js +11 -13
  43. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  44. package/build-module/components/dataviews-pagination/index.js +1 -2
  45. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  46. package/build-module/components/dataviews-selection-checkbox/index.js +1 -2
  47. package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
  48. package/build-module/components/dataviews-view-config/index.js +11 -13
  49. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  50. package/build-module/dataform-controls/datetime.js +1 -2
  51. package/build-module/dataform-controls/datetime.js.map +1 -1
  52. package/build-module/dataforms-layouts/panel/index.js +3 -5
  53. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  54. package/build-module/dataviews-layouts/grid/index.js +1 -3
  55. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  56. package/build-module/dataviews-layouts/list/index.js +76 -84
  57. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  58. package/build-module/dataviews-layouts/table/column-header-menu.js +19 -20
  59. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  60. package/build-module/dataviews-layouts/table/index.js +1 -3
  61. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  62. package/build-module/types.js.map +1 -1
  63. package/build-style/style-rtl.css +30 -38
  64. package/build-style/style.css +30 -38
  65. package/build-types/components/dataviews-filters/add-filter.d.ts +1 -1
  66. package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
  67. package/build-types/components/dataviews-item-actions/index.d.ts +2 -2
  68. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  69. package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
  70. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  71. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  72. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  73. package/build-types/types.d.ts +5 -6
  74. package/build-types/types.d.ts.map +1 -1
  75. package/package.json +13 -12
  76. package/src/components/dataviews-bulk-actions/index.tsx +6 -6
  77. package/src/components/dataviews-filters/add-filter.tsx +8 -10
  78. package/src/components/dataviews-filters/index.tsx +4 -4
  79. package/src/components/dataviews-item-actions/index.tsx +15 -15
  80. package/src/components/dataviews-selection-checkbox/index.tsx +3 -2
  81. package/src/components/dataviews-view-config/index.tsx +9 -11
  82. package/src/dataforms-layouts/panel/index.tsx +2 -2
  83. package/src/dataviews-layouts/list/index.tsx +85 -106
  84. package/src/dataviews-layouts/list/style.scss +32 -49
  85. package/src/dataviews-layouts/table/column-header-menu.tsx +31 -35
  86. package/src/types.ts +6 -2
  87. package/tsconfig.tsbuildinfo +1 -1
@@ -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`;
@@ -145,11 +145,9 @@ function ListItem< Item >( {
145
145
  const descriptionId = `${ idPrefix }-description`;
146
146
 
147
147
  const [ isHovered, setIsHovered ] = useState( false );
148
- const handleMouseEnter = () => {
149
- setIsHovered( true );
150
- };
151
- const handleMouseLeave = () => {
152
- setIsHovered( false );
148
+ const handleHover: React.MouseEventHandler = ( { type } ) => {
149
+ const isHover = type === 'mouseenter';
150
+ setIsHovered( isHover );
153
151
  };
154
152
 
155
153
  useEffect( () => {
@@ -178,15 +176,54 @@ function ListItem< Item >( {
178
176
  }, [ actions, item ] );
179
177
 
180
178
  const renderedMediaField = mediaField?.render ? (
181
- <mediaField.render item={ item } />
182
- ) : (
183
- <div className="dataviews-view-list__media-placeholder"></div>
184
- );
179
+ <div className="dataviews-view-list__media-wrapper">
180
+ <mediaField.render item={ item } />
181
+ </div>
182
+ ) : null;
185
183
 
186
184
  const renderedPrimaryField = primaryField?.render ? (
187
185
  <primaryField.render item={ item } />
188
186
  ) : null;
189
187
 
188
+ const usedActions = eligibleActions?.length > 0 && (
189
+ <HStack spacing={ 3 } className="dataviews-view-list__item-actions">
190
+ { primaryAction && (
191
+ <PrimaryActionGridCell
192
+ idPrefix={ idPrefix }
193
+ primaryAction={ primaryAction }
194
+ item={ item }
195
+ />
196
+ ) }
197
+ <div role="gridcell">
198
+ <Menu
199
+ trigger={
200
+ <Composite.Item
201
+ id={ generateDropdownTriggerCompositeId(
202
+ idPrefix
203
+ ) }
204
+ render={
205
+ <Button
206
+ size="small"
207
+ icon={ moreVertical }
208
+ label={ __( 'Actions' ) }
209
+ accessibleWhenDisabled
210
+ disabled={ ! actions.length }
211
+ onKeyDown={ onDropdownTriggerKeyDown }
212
+ />
213
+ }
214
+ />
215
+ }
216
+ placement="bottom-end"
217
+ >
218
+ <ActionsMenuGroup
219
+ actions={ eligibleActions }
220
+ item={ item }
221
+ />
222
+ </Menu>
223
+ </div>
224
+ </HStack>
225
+ );
226
+
190
227
  return (
191
228
  <Composite.Row
192
229
  ref={ itemRef }
@@ -196,116 +233,58 @@ function ListItem< Item >( {
196
233
  'is-selected': isSelected,
197
234
  'is-hovered': isHovered,
198
235
  } ) }
199
- onMouseEnter={ handleMouseEnter }
200
- onMouseLeave={ handleMouseLeave }
236
+ onMouseEnter={ handleHover }
237
+ onMouseLeave={ handleHover }
201
238
  >
202
- <HStack
203
- className="dataviews-view-list__item-wrapper"
204
- alignment="center"
205
- spacing={ 0 }
206
- >
239
+ <HStack className="dataviews-view-list__item-wrapper" spacing={ 0 }>
207
240
  <div role="gridcell">
208
241
  <Composite.Item
209
- render={ <div /> }
210
- role="button"
211
242
  id={ generateItemWrapperCompositeId( idPrefix ) }
212
243
  aria-pressed={ isSelected }
213
244
  aria-labelledby={ labelId }
214
245
  aria-describedby={ descriptionId }
215
246
  className="dataviews-view-list__item"
216
247
  onClick={ () => onSelect( item ) }
248
+ />
249
+ </div>
250
+ <HStack spacing={ 3 } justify="start" alignment="flex-start">
251
+ { renderedMediaField }
252
+ <VStack
253
+ spacing={ 1 }
254
+ className="dataviews-view-list__field-wrapper"
217
255
  >
218
- <HStack
219
- spacing={ 3 }
220
- justify="start"
221
- alignment="flex-start"
222
- >
223
- <div className="dataviews-view-list__media-wrapper">
224
- { renderedMediaField }
225
- </div>
226
- <VStack
227
- spacing={ 1 }
228
- className="dataviews-view-list__field-wrapper"
256
+ <HStack spacing={ 0 }>
257
+ <div
258
+ className="dataviews-view-list__primary-field"
259
+ id={ labelId }
229
260
  >
230
- <span
231
- className="dataviews-view-list__primary-field"
232
- id={ labelId }
233
- >
234
- { renderedPrimaryField }
235
- </span>
261
+ { renderedPrimaryField }
262
+ </div>
263
+ { usedActions }
264
+ </HStack>
265
+ <div
266
+ className="dataviews-view-list__fields"
267
+ id={ descriptionId }
268
+ >
269
+ { visibleFields.map( ( field ) => (
236
270
  <div
237
- className="dataviews-view-list__fields"
238
- id={ descriptionId }
271
+ key={ field.id }
272
+ className="dataviews-view-list__field"
239
273
  >
240
- { visibleFields.map( ( field ) => (
241
- <div
242
- key={ field.id }
243
- className="dataviews-view-list__field"
244
- >
245
- <VisuallyHidden
246
- as="span"
247
- className="dataviews-view-list__field-label"
248
- >
249
- { field.label }
250
- </VisuallyHidden>
251
- <span className="dataviews-view-list__field-value">
252
- <field.render item={ item } />
253
- </span>
254
- </div>
255
- ) ) }
274
+ <VisuallyHidden
275
+ as="span"
276
+ className="dataviews-view-list__field-label"
277
+ >
278
+ { field.label }
279
+ </VisuallyHidden>
280
+ <span className="dataviews-view-list__field-value">
281
+ <field.render item={ item } />
282
+ </span>
256
283
  </div>
257
- </VStack>
258
- </HStack>
259
- </Composite.Item>
260
- </div>
261
- { eligibleActions?.length > 0 && (
262
- <HStack
263
- spacing={ 3 }
264
- justify="flex-end"
265
- className="dataviews-view-list__item-actions"
266
- style={ {
267
- flexShrink: '0',
268
- width: 'auto',
269
- } }
270
- >
271
- { primaryAction && (
272
- <PrimaryActionGridCell
273
- idPrefix={ idPrefix }
274
- primaryAction={ primaryAction }
275
- item={ item }
276
- />
277
- ) }
278
- <div role="gridcell">
279
- <DropdownMenu
280
- trigger={
281
- <Composite.Item
282
- id={ generateDropdownTriggerCompositeId(
283
- idPrefix
284
- ) }
285
- render={
286
- <Button
287
- size="small"
288
- icon={ moreVertical }
289
- label={ __( 'Actions' ) }
290
- accessibleWhenDisabled
291
- disabled={ ! actions.length }
292
- onKeyDown={
293
- onDropdownTriggerKeyDown
294
- }
295
- />
296
- }
297
- />
298
- }
299
- placement="bottom-end"
300
- >
301
- <ActionsDropdownMenuGroup
302
- actions={ eligibleActions }
303
- item={ item }
304
- />
305
- </DropdownMenu>
284
+ ) ) }
306
285
  </div>
307
- </HStack>
308
- ) }
286
+ </VStack>
287
+ </HStack>
309
288
  </HStack>
310
289
  </Composite.Row>
311
290
  );
@@ -7,63 +7,40 @@ ul.dataviews-view-list {
7
7
 
8
8
  li {
9
9
  margin: 0;
10
- cursor: pointer;
11
10
  border-top: 1px solid $gray-100;
12
11
 
13
12
  .dataviews-view-list__item-wrapper {
14
13
  position: relative;
15
- border-radius: $grid-unit-05;
16
-
17
- > * {
18
- width: 100%;
19
- }
14
+ padding: $grid-unit-20 $grid-unit-30;
20
15
  }
21
16
 
22
17
  .dataviews-view-list__item-actions {
23
- position: absolute;
24
- top: $grid-unit-20;
25
- right: 0;
26
-
18
+ flex: 0;
19
+ overflow: hidden;
27
20
 
28
21
  > div {
29
22
  height: $button-size-small;
30
23
  }
31
24
 
32
25
  .components-button {
26
+ position: relative;
27
+ z-index: 1;
33
28
  opacity: 0;
34
29
  }
35
30
  }
36
31
 
37
- &:has(.dataviews-view-list__fields:empty) {
32
+ &:where(.is-selected, .is-hovered, :focus-within) {
38
33
  .dataviews-view-list__item-actions {
39
- top: 50%;
40
- transform: translateY(-50%);
41
- }
42
- }
43
-
44
- &.is-selected,
45
- &.is-hovered,
46
- &:focus-within {
47
- .dataviews-view-list__item-actions {
48
- background: #f8f8f8;
49
- padding-left: $grid-unit-10;
50
- margin-right: $grid-unit-30;
51
- box-shadow: -12px 0 8px 0 #f8f8f8;
34
+ flex-basis: min-content;
35
+ overflow: unset;
36
+ padding-inline-end: $grid-unit-05;
52
37
 
53
38
  .components-button {
54
39
  opacity: 1;
55
- position: static;
56
40
  }
57
41
  }
58
42
  }
59
43
 
60
- &.is-selected {
61
- .dataviews-view-list__item-actions {
62
- background-color: rgb(247 248 255);
63
- box-shadow: -12px 0 8px 0 rgb(247 248 255);
64
- }
65
- }
66
-
67
44
  &.is-selected.is-selected {
68
45
  border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12);
69
46
 
@@ -105,27 +82,38 @@ ul.dataviews-view-list {
105
82
  }
106
83
 
107
84
  .dataviews-view-list__item {
108
- box-sizing: border-box;
109
- padding: $grid-unit-20 $grid-unit-30;
110
- width: 100%;
85
+ position: absolute;
86
+ z-index: 1;
87
+ inset: 0;
111
88
  scroll-margin: $grid-unit-10 0;
89
+ appearance: none;
90
+ border: none;
91
+ background: none;
92
+ padding: 0;
93
+ cursor: pointer;
112
94
 
113
95
  &:focus-visible {
96
+ outline: none;
97
+
114
98
  &::before {
115
99
  position: absolute;
116
100
  content: "";
117
- top: var(--wp-admin-border-width-focus);
118
- right: var(--wp-admin-border-width-focus);
119
- bottom: var(--wp-admin-border-width-focus);
120
- left: var(--wp-admin-border-width-focus);
101
+ inset: var(--wp-admin-border-width-focus);
121
102
  box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
122
103
  border-radius: $radius-small;
104
+ // Windows High Contrast mode will show this outline, but not the box-shadow.
105
+ outline: 2px solid transparent;
123
106
  }
124
107
  }
125
- .dataviews-view-list__primary-field {
126
- min-height: $grid-unit-30;
127
- line-height: $grid-unit-30;
128
- overflow: hidden;
108
+ }
109
+ .dataviews-view-list__primary-field {
110
+ flex: 1;
111
+ min-height: $grid-unit-30;
112
+ line-height: $grid-unit-30;
113
+ overflow: hidden;
114
+ // The field should be in front of the main button in case it has a link/button.
115
+ &:has(a, button) {
116
+ z-index: 1;
129
117
  }
130
118
  }
131
119
 
@@ -156,14 +144,9 @@ ul.dataviews-view-list {
156
144
  }
157
145
  }
158
146
 
159
- .dataviews-view-list__media-placeholder {
160
- width: $grid-unit-05 * 13;
161
- height: $grid-unit-05 * 13;
162
- background-color: $gray-200;
163
- }
164
-
165
147
  .dataviews-view-list__field-wrapper {
166
148
  min-height: $grid-unit-05 * 13; // Ensures title is centrally aligned when all fields are hidden
149
+ flex-grow: 1;
167
150
  }
168
151
 
169
152
  .dataviews-view-list__fields {
@@ -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
  */