@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.
- package/CHANGELOG.md +2 -0
- package/build/components/dataviews-bulk-actions/index.js +6 -6
- package/build/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build/components/dataviews-filters/add-filter.js +7 -7
- package/build/components/dataviews-filters/add-filter.js.map +1 -1
- package/build/components/dataviews-filters/index.js +2 -2
- package/build/components/dataviews-filters/index.js.map +1 -1
- package/build/components/dataviews-item-actions/index.js +11 -11
- package/build/components/dataviews-item-actions/index.js.map +1 -1
- package/build/components/dataviews-selection-checkbox/index.js +1 -2
- package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +6 -6
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/dataforms-layouts/panel/index.js +1 -1
- package/build/dataforms-layouts/panel/index.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +10 -12
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/table/column-header-menu.js +18 -18
- package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build-module/components/dataviews-bulk-actions/index.js +6 -6
- package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build-module/components/dataviews-filters/add-filter.js +6 -6
- package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
- package/build-module/components/dataviews-filters/index.js +4 -4
- package/build-module/components/dataviews-filters/index.js.map +1 -1
- package/build-module/components/dataviews-item-actions/index.js +10 -10
- package/build-module/components/dataviews-item-actions/index.js.map +1 -1
- package/build-module/components/dataviews-selection-checkbox/index.js +1 -2
- package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +6 -6
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/dataforms-layouts/panel/index.js +2 -2
- package/build-module/dataforms-layouts/panel/index.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +11 -13
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/column-header-menu.js +18 -18
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-style/style-rtl.css +1 -6
- package/build-style/style.css +1 -6
- package/build-types/components/dataviews-filters/add-filter.d.ts +1 -1
- package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
- package/build-types/components/dataviews-item-actions/index.d.ts +2 -2
- package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
- package/build-types/types.d.ts +5 -6
- package/build-types/types.d.ts.map +1 -1
- package/package.json +12 -11
- package/src/components/dataviews-bulk-actions/index.tsx +6 -6
- package/src/components/dataviews-filters/add-filter.tsx +8 -10
- package/src/components/dataviews-filters/index.tsx +4 -4
- package/src/components/dataviews-item-actions/index.tsx +15 -15
- package/src/components/dataviews-selection-checkbox/index.tsx +3 -2
- package/src/components/dataviews-view-config/index.tsx +8 -10
- package/src/dataforms-layouts/panel/index.tsx +2 -2
- package/src/dataviews-layouts/list/index.tsx +10 -12
- package/src/dataviews-layouts/list/style.scss +1 -7
- package/src/dataviews-layouts/table/column-header-menu.tsx +31 -35
- package/src/types.ts +6 -2
- 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 {
|
|
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
|
-
<
|
|
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
|
-
<
|
|
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
|
-
<
|
|
108
|
-
|
|
109
|
-
</DropdownMenuV2.ItemLabel>
|
|
110
|
-
</DropdownMenuV2.RadioItem>
|
|
107
|
+
<Menu.ItemLabel>{ config.label }</Menu.ItemLabel>
|
|
108
|
+
</Menu.RadioItem>
|
|
111
109
|
);
|
|
112
110
|
} ) }
|
|
113
|
-
</
|
|
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
|
-
|
|
364
|
+
_x( 'Hide %s', 'field' ),
|
|
367
365
|
label
|
|
368
366
|
)
|
|
369
367
|
: sprintf(
|
|
370
368
|
/* translators: %s: field label */
|
|
371
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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
|
-
<
|
|
180
|
-
|
|
181
|
-
|
|
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
|
-
<
|
|
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
|
-
<
|
|
218
|
+
<ActionsMenuGroup
|
|
219
219
|
actions={ eligibleActions }
|
|
220
220
|
item={ item }
|
|
221
221
|
/>
|
|
222
|
-
</
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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
|
|
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 && <
|
|
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
|
-
<
|
|
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
|
-
<
|
|
123
|
+
<WithMenuSeparators>
|
|
124
124
|
{ isSortable && (
|
|
125
|
-
<
|
|
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
|
-
<
|
|
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
|
-
<
|
|
156
|
+
<Menu.ItemLabel>
|
|
157
157
|
{ sortLabels[ direction ] }
|
|
158
|
-
</
|
|
159
|
-
</
|
|
158
|
+
</Menu.ItemLabel>
|
|
159
|
+
</Menu.RadioItem>
|
|
160
160
|
);
|
|
161
161
|
}
|
|
162
162
|
) }
|
|
163
|
-
</
|
|
163
|
+
</Menu.Group>
|
|
164
164
|
) }
|
|
165
165
|
{ canAddFilter && (
|
|
166
|
-
<
|
|
167
|
-
<
|
|
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
|
-
<
|
|
185
|
+
<Menu.ItemLabel>
|
|
186
186
|
{ __( 'Add filter' ) }
|
|
187
|
-
</
|
|
188
|
-
</
|
|
189
|
-
</
|
|
187
|
+
</Menu.ItemLabel>
|
|
188
|
+
</Menu.Item>
|
|
189
|
+
</Menu.Group>
|
|
190
190
|
) }
|
|
191
|
-
<
|
|
192
|
-
<
|
|
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
|
-
<
|
|
211
|
-
|
|
212
|
-
|
|
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
|
-
<
|
|
231
|
-
|
|
232
|
-
</DropdownMenuV2.ItemLabel>
|
|
233
|
-
</DropdownMenuV2.Item>
|
|
228
|
+
<Menu.ItemLabel>{ __( 'Move right' ) }</Menu.ItemLabel>
|
|
229
|
+
</Menu.Item>
|
|
234
230
|
{ isHidable && field && (
|
|
235
|
-
<
|
|
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
|
-
<
|
|
243
|
+
<Menu.ItemLabel>
|
|
248
244
|
{ __( 'Hide column' ) }
|
|
249
|
-
</
|
|
250
|
-
</
|
|
245
|
+
</Menu.ItemLabel>
|
|
246
|
+
</Menu.Item>
|
|
251
247
|
) }
|
|
252
|
-
</
|
|
253
|
-
</
|
|
254
|
-
</
|
|
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<
|
|
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<
|
|
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
|
*/
|