@wordpress/dataviews 1.1.0 → 1.2.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 +11 -5
- package/build/bulk-actions-toolbar.js +182 -0
- package/build/bulk-actions-toolbar.js.map +1 -0
- package/build/bulk-actions.js +8 -8
- package/build/bulk-actions.js.map +1 -1
- package/build/dataviews.js +11 -4
- package/build/dataviews.js.map +1 -1
- package/build/filter-and-sort-data-view.js +2 -2
- package/build/filter-and-sort-data-view.js.map +1 -1
- package/build/filter-summary.js +3 -3
- package/build/filter-summary.js.map +1 -1
- package/build/item-actions.js +41 -22
- package/build/item-actions.js.map +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/normalize-fields.js.map +1 -1
- package/build/pagination.js +13 -7
- package/build/pagination.js.map +1 -1
- package/build/single-selection-checkbox.js +4 -0
- package/build/single-selection-checkbox.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build/view-grid.js +9 -10
- package/build/view-grid.js.map +1 -1
- package/build/view-list.js +134 -21
- package/build/view-list.js.map +1 -1
- package/build/view-table.js +9 -9
- package/build/view-table.js.map +1 -1
- package/build-module/bulk-actions-toolbar.js +175 -0
- package/build-module/bulk-actions-toolbar.js.map +1 -0
- package/build-module/bulk-actions.js +8 -8
- package/build-module/bulk-actions.js.map +1 -1
- package/build-module/dataviews.js +11 -4
- package/build-module/dataviews.js.map +1 -1
- package/build-module/filter-and-sort-data-view.js +2 -2
- package/build-module/filter-and-sort-data-view.js.map +1 -1
- package/build-module/filter-summary.js +3 -3
- package/build-module/filter-summary.js.map +1 -1
- package/build-module/item-actions.js +40 -24
- package/build-module/item-actions.js.map +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/pagination.js +14 -7
- package/build-module/pagination.js.map +1 -1
- package/build-module/single-selection-checkbox.js +5 -0
- package/build-module/single-selection-checkbox.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-module/view-grid.js +9 -10
- package/build-module/view-grid.js.map +1 -1
- package/build-module/view-list.js +135 -23
- package/build-module/view-list.js.map +1 -1
- package/build-module/view-table.js +9 -9
- package/build-module/view-table.js.map +1 -1
- package/build-style/style-rtl.css +62 -27
- package/build-style/style.css +62 -27
- package/build-types/add-filter.d.ts +8 -0
- package/build-types/add-filter.d.ts.map +1 -0
- package/build-types/bulk-actions-toolbar.d.ts +8 -0
- package/build-types/bulk-actions-toolbar.d.ts.map +1 -0
- package/build-types/bulk-actions.d.ts +14 -0
- package/build-types/bulk-actions.d.ts.map +1 -0
- package/build-types/dataviews.d.ts +15 -0
- package/build-types/dataviews.d.ts.map +1 -0
- package/build-types/dropdown-menu-helper.d.ts +6 -0
- package/build-types/dropdown-menu-helper.d.ts.map +1 -0
- package/build-types/filter-and-sort-data-view.d.ts +3 -3
- package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
- package/build-types/filter-summary.d.ts +6 -0
- package/build-types/filter-summary.d.ts.map +1 -0
- package/build-types/filters.d.ts +3 -0
- package/build-types/filters.d.ts.map +1 -0
- package/build-types/index.d.ts +4 -0
- package/build-types/index.d.ts.map +1 -0
- package/build-types/item-actions.d.ts +37 -0
- package/build-types/item-actions.d.ts.map +1 -0
- package/build-types/layouts.d.ts +20 -0
- package/build-types/layouts.d.ts.map +1 -0
- package/build-types/lock-unlock.d.ts +2 -0
- package/build-types/lock-unlock.d.ts.map +1 -0
- package/build-types/normalize-fields.d.ts +2 -2
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/pagination.d.ts +16 -0
- package/build-types/pagination.d.ts.map +1 -0
- package/build-types/reset-filters.d.ts +6 -0
- package/build-types/reset-filters.d.ts.map +1 -0
- package/build-types/search-widget.d.ts +2 -0
- package/build-types/search-widget.d.ts.map +1 -0
- package/build-types/search.d.ts +3 -0
- package/build-types/search.d.ts.map +1 -0
- package/build-types/single-selection-checkbox.d.ts +17 -0
- package/build-types/single-selection-checkbox.d.ts.map +1 -0
- package/build-types/stories/fixtures.d.ts +114 -0
- package/build-types/stories/fixtures.d.ts.map +1 -0
- package/build-types/stories/index.story.d.ts +15 -0
- package/build-types/stories/index.story.d.ts.map +1 -0
- package/build-types/types.d.ts +152 -20
- package/build-types/types.d.ts.map +1 -1
- package/build-types/utils.d.ts +2 -0
- package/build-types/utils.d.ts.map +1 -0
- package/build-types/view-actions.d.ts +3 -0
- package/build-types/view-actions.d.ts.map +1 -0
- package/build-types/view-grid.d.ts +15 -0
- package/build-types/view-grid.d.ts.map +1 -0
- package/build-types/view-list.d.ts +16 -0
- package/build-types/view-list.d.ts.map +1 -0
- package/build-types/view-table.d.ts +14 -0
- package/build-types/view-table.d.ts.map +1 -0
- package/package.json +12 -12
- package/src/bulk-actions-toolbar.js +244 -0
- package/src/{bulk-actions.js → bulk-actions.tsx} +73 -17
- package/src/dataviews.js +14 -3
- package/src/filter-and-sort-data-view.ts +13 -8
- package/src/filter-summary.js +3 -3
- package/src/{item-actions.js → item-actions.tsx} +112 -28
- package/src/normalize-fields.ts +4 -2
- package/src/{pagination.js → pagination.tsx} +28 -7
- package/src/{single-selection-checkbox.js → single-selection-checkbox.tsx} +17 -2
- package/src/style.scss +77 -28
- package/src/types.ts +190 -20
- package/src/{view-grid.js → view-grid.tsx} +45 -16
- package/src/view-list.tsx +421 -0
- package/src/view-table.js +8 -8
- package/tsconfig.json +4 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/src/view-list.js +0 -207
- /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { MouseEventHandler, ReactElement } from 'react';
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* WordPress dependencies
|
|
3
8
|
*/
|
|
@@ -15,6 +20,7 @@ import { moreVertical } from '@wordpress/icons';
|
|
|
15
20
|
* Internal dependencies
|
|
16
21
|
*/
|
|
17
22
|
import { unlock } from './lock-unlock';
|
|
23
|
+
import type { Action, ActionModal as ActionModalType, AnyItem } from './types';
|
|
18
24
|
|
|
19
25
|
const {
|
|
20
26
|
DropdownMenuV2: DropdownMenu,
|
|
@@ -24,7 +30,50 @@ const {
|
|
|
24
30
|
kebabCase,
|
|
25
31
|
} = unlock( componentsPrivateApis );
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
interface ButtonTriggerProps< Item extends AnyItem > {
|
|
34
|
+
action: Action< Item >;
|
|
35
|
+
onClick: MouseEventHandler;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface DropdownMenuItemTriggerProps< Item extends AnyItem > {
|
|
39
|
+
action: Action< Item >;
|
|
40
|
+
onClick: MouseEventHandler;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
interface ActionModalProps< Item extends AnyItem > {
|
|
44
|
+
action: ActionModalType< Item >;
|
|
45
|
+
items: Item[];
|
|
46
|
+
closeModal?: () => void;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface ActionWithModalProps< Item extends AnyItem >
|
|
50
|
+
extends ActionModalProps< Item > {
|
|
51
|
+
ActionTrigger: (
|
|
52
|
+
props: ButtonTriggerProps< Item > | DropdownMenuItemTriggerProps< Item >
|
|
53
|
+
) => ReactElement;
|
|
54
|
+
isBusy?: boolean;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
interface ActionsDropdownMenuGroupProps< Item extends AnyItem > {
|
|
58
|
+
actions: Action< Item >[];
|
|
59
|
+
item: Item;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
interface ItemActionsProps< Item extends AnyItem > {
|
|
63
|
+
item: Item;
|
|
64
|
+
actions: Action< Item >[];
|
|
65
|
+
isCompact: boolean;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
interface CompactItemActionsProps< Item extends AnyItem > {
|
|
69
|
+
item: Item;
|
|
70
|
+
actions: Action< Item >[];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function ButtonTrigger< Item extends AnyItem >( {
|
|
74
|
+
action,
|
|
75
|
+
onClick,
|
|
76
|
+
}: ButtonTriggerProps< Item > ) {
|
|
28
77
|
return (
|
|
29
78
|
<Button
|
|
30
79
|
label={ action.label }
|
|
@@ -36,58 +85,86 @@ function ButtonTrigger( { action, onClick } ) {
|
|
|
36
85
|
);
|
|
37
86
|
}
|
|
38
87
|
|
|
39
|
-
function DropdownMenuItemTrigger
|
|
88
|
+
function DropdownMenuItemTrigger< Item extends AnyItem >( {
|
|
89
|
+
action,
|
|
90
|
+
onClick,
|
|
91
|
+
}: DropdownMenuItemTriggerProps< Item > ) {
|
|
40
92
|
return (
|
|
41
93
|
<DropdownMenuItem
|
|
42
94
|
onClick={ onClick }
|
|
43
|
-
hideOnClick={ !
|
|
95
|
+
hideOnClick={ ! ( 'RenderModal' in action ) }
|
|
44
96
|
>
|
|
45
97
|
<DropdownMenuItemLabel>{ action.label }</DropdownMenuItemLabel>
|
|
46
98
|
</DropdownMenuItem>
|
|
47
99
|
);
|
|
48
100
|
}
|
|
49
101
|
|
|
50
|
-
function
|
|
102
|
+
export function ActionModal< Item extends AnyItem >( {
|
|
103
|
+
action,
|
|
104
|
+
items,
|
|
105
|
+
closeModal,
|
|
106
|
+
}: ActionModalProps< Item > ) {
|
|
107
|
+
return (
|
|
108
|
+
<Modal
|
|
109
|
+
title={ action.modalHeader || action.label }
|
|
110
|
+
__experimentalHideHeader={ !! action.hideModalHeader }
|
|
111
|
+
onRequestClose={ closeModal ?? ( () => {} ) }
|
|
112
|
+
overlayClassName={ `dataviews-action-modal dataviews-action-modal__${ kebabCase(
|
|
113
|
+
action.id
|
|
114
|
+
) }` }
|
|
115
|
+
>
|
|
116
|
+
<action.RenderModal
|
|
117
|
+
items={ items }
|
|
118
|
+
closeModal={ closeModal }
|
|
119
|
+
onActionStart={ action.onActionStart }
|
|
120
|
+
onActionPerformed={ action.onActionPerformed }
|
|
121
|
+
/>
|
|
122
|
+
</Modal>
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export function ActionWithModal< Item extends AnyItem >( {
|
|
127
|
+
action,
|
|
128
|
+
items,
|
|
129
|
+
ActionTrigger,
|
|
130
|
+
isBusy,
|
|
131
|
+
}: ActionWithModalProps< Item > ) {
|
|
51
132
|
const [ isModalOpen, setIsModalOpen ] = useState( false );
|
|
52
133
|
const actionTriggerProps = {
|
|
53
134
|
action,
|
|
54
|
-
onClick: () =>
|
|
135
|
+
onClick: () => {
|
|
136
|
+
setIsModalOpen( true );
|
|
137
|
+
},
|
|
138
|
+
items,
|
|
139
|
+
isBusy,
|
|
55
140
|
};
|
|
56
|
-
const { RenderModal, hideModalHeader } = action;
|
|
57
141
|
return (
|
|
58
142
|
<>
|
|
59
143
|
<ActionTrigger { ...actionTriggerProps } />
|
|
60
144
|
{ isModalOpen && (
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
} }
|
|
67
|
-
overlayClassName={ `dataviews-action-modal dataviews-action-modal__${ kebabCase(
|
|
68
|
-
action.id
|
|
69
|
-
) }` }
|
|
70
|
-
>
|
|
71
|
-
<RenderModal
|
|
72
|
-
items={ [ item ] }
|
|
73
|
-
closeModal={ () => setIsModalOpen( false ) }
|
|
74
|
-
/>
|
|
75
|
-
</Modal>
|
|
145
|
+
<ActionModal
|
|
146
|
+
action={ action }
|
|
147
|
+
items={ items }
|
|
148
|
+
closeModal={ () => setIsModalOpen( false ) }
|
|
149
|
+
/>
|
|
76
150
|
) }
|
|
77
151
|
</>
|
|
78
152
|
);
|
|
79
153
|
}
|
|
80
154
|
|
|
81
|
-
function ActionsDropdownMenuGroup
|
|
155
|
+
export function ActionsDropdownMenuGroup< Item extends AnyItem >( {
|
|
156
|
+
actions,
|
|
157
|
+
item,
|
|
158
|
+
}: ActionsDropdownMenuGroupProps< Item > ) {
|
|
82
159
|
return (
|
|
83
160
|
<DropdownMenuGroup>
|
|
84
161
|
{ actions.map( ( action ) => {
|
|
85
|
-
if (
|
|
162
|
+
if ( 'RenderModal' in action ) {
|
|
86
163
|
return (
|
|
87
164
|
<ActionWithModal
|
|
88
165
|
key={ action.id }
|
|
89
166
|
action={ action }
|
|
90
|
-
|
|
167
|
+
items={ [ item ] }
|
|
91
168
|
ActionTrigger={ DropdownMenuItemTrigger }
|
|
92
169
|
/>
|
|
93
170
|
);
|
|
@@ -104,7 +181,11 @@ function ActionsDropdownMenuGroup( { actions, item } ) {
|
|
|
104
181
|
);
|
|
105
182
|
}
|
|
106
183
|
|
|
107
|
-
export default function ItemActions
|
|
184
|
+
export default function ItemActions< Item extends AnyItem >( {
|
|
185
|
+
item,
|
|
186
|
+
actions,
|
|
187
|
+
isCompact,
|
|
188
|
+
}: ItemActionsProps< Item > ) {
|
|
108
189
|
const { primaryActions, eligibleActions } = useMemo( () => {
|
|
109
190
|
// If an action is eligible for all items, doesn't need
|
|
110
191
|
// to provide the `isEligible` function.
|
|
@@ -134,12 +215,12 @@ export default function ItemActions( { item, actions, isCompact } ) {
|
|
|
134
215
|
>
|
|
135
216
|
{ !! primaryActions.length &&
|
|
136
217
|
primaryActions.map( ( action ) => {
|
|
137
|
-
if (
|
|
218
|
+
if ( 'RenderModal' in action ) {
|
|
138
219
|
return (
|
|
139
220
|
<ActionWithModal
|
|
140
221
|
key={ action.id }
|
|
141
222
|
action={ action }
|
|
142
|
-
|
|
223
|
+
items={ [ item ] }
|
|
143
224
|
ActionTrigger={ ButtonTrigger }
|
|
144
225
|
/>
|
|
145
226
|
);
|
|
@@ -157,7 +238,10 @@ export default function ItemActions( { item, actions, isCompact } ) {
|
|
|
157
238
|
);
|
|
158
239
|
}
|
|
159
240
|
|
|
160
|
-
function CompactItemActions
|
|
241
|
+
function CompactItemActions< Item extends AnyItem >( {
|
|
242
|
+
item,
|
|
243
|
+
actions,
|
|
244
|
+
}: CompactItemActionsProps< Item > ) {
|
|
161
245
|
return (
|
|
162
246
|
<DropdownMenu
|
|
163
247
|
trigger={
|
package/src/normalize-fields.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
|
-
import type { Field, NormalizedField } from './types';
|
|
4
|
+
import type { Field, AnyItem, NormalizedField } from './types';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Apply default values and normalize the fields config.
|
|
@@ -9,7 +9,9 @@ import type { Field, NormalizedField } from './types';
|
|
|
9
9
|
* @param fields Fields config.
|
|
10
10
|
* @return Normalized fields config.
|
|
11
11
|
*/
|
|
12
|
-
export function normalizeFields
|
|
12
|
+
export function normalizeFields< Item extends AnyItem >(
|
|
13
|
+
fields: Field< Item >[]
|
|
14
|
+
): NormalizedField< Item >[] {
|
|
13
15
|
return fields.map( ( field ) => {
|
|
14
16
|
const getValue = field.getValue || ( ( { item } ) => item[ field.id ] );
|
|
15
17
|
|
|
@@ -10,14 +10,29 @@ import { createInterpolateElement, memo } from '@wordpress/element';
|
|
|
10
10
|
import { sprintf, __, _x } from '@wordpress/i18n';
|
|
11
11
|
import { chevronRight, chevronLeft } from '@wordpress/icons';
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
import type { View } from './types';
|
|
17
|
+
|
|
18
|
+
interface PaginationProps {
|
|
19
|
+
view: View;
|
|
20
|
+
onChangeView: ( view: View ) => void;
|
|
21
|
+
paginationInfo: {
|
|
22
|
+
totalItems: number;
|
|
23
|
+
totalPages: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
13
27
|
const Pagination = memo( function Pagination( {
|
|
14
28
|
view,
|
|
15
29
|
onChangeView,
|
|
16
30
|
paginationInfo: { totalItems = 0, totalPages },
|
|
17
|
-
} ) {
|
|
31
|
+
}: PaginationProps ) {
|
|
18
32
|
if ( ! totalItems || ! totalPages ) {
|
|
19
33
|
return null;
|
|
20
34
|
}
|
|
35
|
+
const currentPage = view.page ?? 1;
|
|
21
36
|
return (
|
|
22
37
|
!! totalItems &&
|
|
23
38
|
totalPages !== 1 && (
|
|
@@ -43,12 +58,15 @@ const Pagination = memo( function Pagination( {
|
|
|
43
58
|
CurrentPageControl: (
|
|
44
59
|
<SelectControl
|
|
45
60
|
aria-label={ __( 'Current page' ) }
|
|
46
|
-
value={ view.page }
|
|
61
|
+
value={ view.page?.toString() }
|
|
47
62
|
options={ Array.from(
|
|
48
63
|
Array( totalPages )
|
|
49
64
|
).map( ( _, i ) => {
|
|
50
65
|
const page = i + 1;
|
|
51
|
-
return {
|
|
66
|
+
return {
|
|
67
|
+
value: page.toString(),
|
|
68
|
+
label: page.toString(),
|
|
69
|
+
};
|
|
52
70
|
} ) }
|
|
53
71
|
onChange={ ( newValue ) => {
|
|
54
72
|
onChangeView( {
|
|
@@ -66,9 +84,12 @@ const Pagination = memo( function Pagination( {
|
|
|
66
84
|
<HStack expanded={ false } spacing={ 1 }>
|
|
67
85
|
<Button
|
|
68
86
|
onClick={ () =>
|
|
69
|
-
onChangeView( {
|
|
87
|
+
onChangeView( {
|
|
88
|
+
...view,
|
|
89
|
+
page: currentPage - 1,
|
|
90
|
+
} )
|
|
70
91
|
}
|
|
71
|
-
disabled={
|
|
92
|
+
disabled={ currentPage === 1 }
|
|
72
93
|
__experimentalIsFocusable
|
|
73
94
|
label={ __( 'Previous page' ) }
|
|
74
95
|
icon={ chevronLeft }
|
|
@@ -78,9 +99,9 @@ const Pagination = memo( function Pagination( {
|
|
|
78
99
|
/>
|
|
79
100
|
<Button
|
|
80
101
|
onClick={ () =>
|
|
81
|
-
onChangeView( { ...view, page:
|
|
102
|
+
onChangeView( { ...view, page: currentPage + 1 } )
|
|
82
103
|
}
|
|
83
|
-
disabled={
|
|
104
|
+
disabled={ currentPage >= totalPages }
|
|
84
105
|
__experimentalIsFocusable
|
|
85
106
|
label={ __( 'Next page' ) }
|
|
86
107
|
icon={ chevronRight }
|
|
@@ -4,7 +4,22 @@
|
|
|
4
4
|
import { __, sprintf } from '@wordpress/i18n';
|
|
5
5
|
import { CheckboxControl } from '@wordpress/components';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import type { Field, AnyItem } from './types';
|
|
11
|
+
|
|
12
|
+
interface SingleSelectionCheckboxProps< Item extends AnyItem > {
|
|
13
|
+
selection: string[];
|
|
14
|
+
onSelectionChange: ( selection: Item[] ) => void;
|
|
15
|
+
item: Item;
|
|
16
|
+
data: Item[];
|
|
17
|
+
getItemId: ( item: Item ) => string;
|
|
18
|
+
primaryField?: Field< Item >;
|
|
19
|
+
disabled: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default function SingleSelectionCheckbox< Item extends AnyItem >( {
|
|
8
23
|
selection,
|
|
9
24
|
onSelectionChange,
|
|
10
25
|
item,
|
|
@@ -12,7 +27,7 @@ export default function SingleSelectionCheckbox( {
|
|
|
12
27
|
getItemId,
|
|
13
28
|
primaryField,
|
|
14
29
|
disabled,
|
|
15
|
-
} ) {
|
|
30
|
+
}: SingleSelectionCheckboxProps< Item > ) {
|
|
16
31
|
const id = getItemId( item );
|
|
17
32
|
const isSelected = selection.includes( id );
|
|
18
33
|
let selectionLabel;
|
package/src/style.scss
CHANGED
|
@@ -339,6 +339,7 @@
|
|
|
339
339
|
height: 100%;
|
|
340
340
|
box-shadow: inset 0 0 0 $border-width rgba(0, 0, 0, 0.1);
|
|
341
341
|
border-radius: $grid-unit-05;
|
|
342
|
+
pointer-events: none;
|
|
342
343
|
}
|
|
343
344
|
}
|
|
344
345
|
|
|
@@ -396,32 +397,33 @@
|
|
|
396
397
|
|
|
397
398
|
.dataviews-view-list {
|
|
398
399
|
margin: 0;
|
|
399
|
-
padding: $grid-unit-10;
|
|
400
400
|
|
|
401
401
|
li {
|
|
402
402
|
margin: 0;
|
|
403
403
|
cursor: pointer;
|
|
404
|
+
border-top: 1px solid $gray-100;
|
|
404
405
|
|
|
405
406
|
.dataviews-view-list__item-wrapper {
|
|
406
407
|
position: relative;
|
|
407
|
-
padding-right: $grid-unit-30;
|
|
408
408
|
border-radius: $grid-unit-05;
|
|
409
409
|
|
|
410
|
-
&::after {
|
|
411
|
-
position: absolute;
|
|
412
|
-
content: "";
|
|
413
|
-
top: 100%;
|
|
414
|
-
left: $grid-unit-30;
|
|
415
|
-
right: $grid-unit-30;
|
|
416
|
-
background: $gray-100;
|
|
417
|
-
height: 1px;
|
|
418
|
-
}
|
|
419
|
-
|
|
420
410
|
> * {
|
|
421
411
|
width: 100%;
|
|
422
412
|
}
|
|
423
413
|
}
|
|
424
414
|
|
|
415
|
+
.dataviews-view-list__item-actions .components-button {
|
|
416
|
+
opacity: 0;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
&.is-selected,
|
|
420
|
+
&.is-hovered,
|
|
421
|
+
&:focus-within {
|
|
422
|
+
.dataviews-view-list__item-actions .components-button {
|
|
423
|
+
opacity: 1;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
425
427
|
&:not(.is-selected) {
|
|
426
428
|
.dataviews-view-list__primary-field {
|
|
427
429
|
color: $gray-900;
|
|
@@ -429,6 +431,7 @@
|
|
|
429
431
|
&:hover,
|
|
430
432
|
&:focus-within {
|
|
431
433
|
color: var(--wp-admin-theme-color);
|
|
434
|
+
background-color: #f8f8f8;
|
|
432
435
|
|
|
433
436
|
.dataviews-view-list__primary-field,
|
|
434
437
|
.dataviews-view-list__fields {
|
|
@@ -436,28 +439,25 @@
|
|
|
436
439
|
}
|
|
437
440
|
}
|
|
438
441
|
}
|
|
442
|
+
|
|
439
443
|
}
|
|
440
444
|
|
|
441
445
|
li.is-selected,
|
|
442
446
|
li.is-selected:focus-within {
|
|
443
447
|
.dataviews-view-list__item-wrapper {
|
|
444
|
-
background-color: var(--wp-admin-theme-color);
|
|
445
|
-
color: $
|
|
448
|
+
background-color: rgba(var(--wp-admin-theme-color--rgb), 0.04);
|
|
449
|
+
color: $gray-900;
|
|
446
450
|
|
|
447
451
|
.dataviews-view-list__primary-field,
|
|
448
452
|
.dataviews-view-list__fields,
|
|
449
453
|
.components-button {
|
|
450
|
-
color:
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
&::after {
|
|
454
|
-
background: transparent;
|
|
454
|
+
color: var(--wp-admin-theme-color);
|
|
455
455
|
}
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
458
|
|
|
459
459
|
.dataviews-view-list__item {
|
|
460
|
-
padding: $grid-unit-
|
|
460
|
+
padding: $grid-unit-20 0 $grid-unit-20 $grid-unit-40;
|
|
461
461
|
width: 100%;
|
|
462
462
|
scroll-margin: $grid-unit-10 0;
|
|
463
463
|
|
|
@@ -465,13 +465,12 @@
|
|
|
465
465
|
&::before {
|
|
466
466
|
position: absolute;
|
|
467
467
|
content: "";
|
|
468
|
-
top: -1px;
|
|
469
|
-
right: -
|
|
470
|
-
bottom: -
|
|
471
|
-
left: -
|
|
472
|
-
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
|
|
473
|
-
|
|
474
|
-
border-radius: $grid-unit-05;
|
|
468
|
+
top: calc(var(--wp-admin-border-width-focus) + 1px);
|
|
469
|
+
right: var(--wp-admin-border-width-focus);
|
|
470
|
+
bottom: var(--wp-admin-border-width-focus);
|
|
471
|
+
left: var(--wp-admin-border-width-focus);
|
|
472
|
+
box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
|
|
473
|
+
border-radius: $radius-block-ui;
|
|
475
474
|
}
|
|
476
475
|
}
|
|
477
476
|
.dataviews-view-list__primary-field {
|
|
@@ -483,11 +482,11 @@
|
|
|
483
482
|
.dataviews-view-list__media-wrapper {
|
|
484
483
|
width: $grid-unit-50;
|
|
485
484
|
height: $grid-unit-50;
|
|
486
|
-
border-radius: $grid-unit-05;
|
|
487
485
|
overflow: hidden;
|
|
488
486
|
position: relative;
|
|
489
487
|
flex-shrink: 0;
|
|
490
488
|
background-color: $gray-100;
|
|
489
|
+
border-radius: $grid-unit-05;
|
|
491
490
|
|
|
492
491
|
img {
|
|
493
492
|
width: 100%;
|
|
@@ -528,6 +527,11 @@
|
|
|
528
527
|
}
|
|
529
528
|
}
|
|
530
529
|
|
|
530
|
+
.dataviews-view-list__item-actions {
|
|
531
|
+
padding-top: $grid-unit-20;
|
|
532
|
+
padding-right: $grid-unit-40;
|
|
533
|
+
}
|
|
534
|
+
|
|
531
535
|
& + .dataviews-pagination {
|
|
532
536
|
justify-content: space-between;
|
|
533
537
|
}
|
|
@@ -797,3 +801,48 @@
|
|
|
797
801
|
}
|
|
798
802
|
}
|
|
799
803
|
}
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
.dataviews-bulk-actions-toolbar-wrapper {
|
|
807
|
+
display: flex;
|
|
808
|
+
flex-grow: 1;
|
|
809
|
+
width: 100%;
|
|
810
|
+
|
|
811
|
+
.components-toolbar-group {
|
|
812
|
+
align-items: center;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
.components-button.is-busy {
|
|
816
|
+
max-height: $button-size;
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
.dataviews-bulk-actions {
|
|
821
|
+
position: absolute;
|
|
822
|
+
display: flex;
|
|
823
|
+
flex-direction: column;
|
|
824
|
+
align-content: center;
|
|
825
|
+
flex-wrap: wrap;
|
|
826
|
+
width: 100%;
|
|
827
|
+
bottom: $grid-unit-30;
|
|
828
|
+
z-index: z-index(".dataviews-bulk-actions");
|
|
829
|
+
|
|
830
|
+
.components-accessible-toolbar {
|
|
831
|
+
border-color: $gray-300;
|
|
832
|
+
box-shadow: $shadow-popover;
|
|
833
|
+
|
|
834
|
+
.components-toolbar-group {
|
|
835
|
+
border-color: $gray-200;
|
|
836
|
+
|
|
837
|
+
&:last-child {
|
|
838
|
+
border: 0;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
.dataviews-bulk-actions__selection-count {
|
|
844
|
+
display: flex;
|
|
845
|
+
align-items: center;
|
|
846
|
+
margin: 0 $grid-unit-10 0 $grid-unit-10;
|
|
847
|
+
}
|
|
848
|
+
}
|