@wordpress/dataviews 0.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.
Files changed (84) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE.md +788 -0
  3. package/README.md +224 -0
  4. package/build/add-filter.js +90 -0
  5. package/build/add-filter.js.map +1 -0
  6. package/build/constants.js +55 -0
  7. package/build/constants.js.map +1 -0
  8. package/build/dataviews.js +93 -0
  9. package/build/dataviews.js.map +1 -0
  10. package/build/filter-summary.js +137 -0
  11. package/build/filter-summary.js.map +1 -0
  12. package/build/filters.js +75 -0
  13. package/build/filters.js.map +1 -0
  14. package/build/index.js +21 -0
  15. package/build/index.js.map +1 -0
  16. package/build/item-actions.js +185 -0
  17. package/build/item-actions.js.map +1 -0
  18. package/build/lock-unlock.js +18 -0
  19. package/build/lock-unlock.js.map +1 -0
  20. package/build/pagination.js +123 -0
  21. package/build/pagination.js.map +1 -0
  22. package/build/reset-filters.js +33 -0
  23. package/build/reset-filters.js.map +1 -0
  24. package/build/search.js +46 -0
  25. package/build/search.js.map +1 -0
  26. package/build/view-actions.js +223 -0
  27. package/build/view-actions.js.map +1 -0
  28. package/build/view-grid.js +80 -0
  29. package/build/view-grid.js.map +1 -0
  30. package/build/view-list.js +83 -0
  31. package/build/view-list.js.map +1 -0
  32. package/build/view-table.js +286 -0
  33. package/build/view-table.js.map +1 -0
  34. package/build-module/add-filter.js +83 -0
  35. package/build-module/add-filter.js.map +1 -0
  36. package/build-module/constants.js +41 -0
  37. package/build-module/constants.js.map +1 -0
  38. package/build-module/dataviews.js +85 -0
  39. package/build-module/dataviews.js.map +1 -0
  40. package/build-module/filter-summary.js +130 -0
  41. package/build-module/filter-summary.js.map +1 -0
  42. package/build-module/filters.js +67 -0
  43. package/build-module/filters.js.map +1 -0
  44. package/build-module/index.js +3 -0
  45. package/build-module/index.js.map +1 -0
  46. package/build-module/item-actions.js +178 -0
  47. package/build-module/item-actions.js.map +1 -0
  48. package/build-module/lock-unlock.js +9 -0
  49. package/build-module/lock-unlock.js.map +1 -0
  50. package/build-module/pagination.js +115 -0
  51. package/build-module/pagination.js.map +1 -0
  52. package/build-module/reset-filters.js +26 -0
  53. package/build-module/reset-filters.js.map +1 -0
  54. package/build-module/search.js +39 -0
  55. package/build-module/search.js.map +1 -0
  56. package/build-module/view-actions.js +216 -0
  57. package/build-module/view-actions.js.map +1 -0
  58. package/build-module/view-grid.js +72 -0
  59. package/build-module/view-grid.js.map +1 -0
  60. package/build-module/view-list.js +75 -0
  61. package/build-module/view-list.js.map +1 -0
  62. package/build-module/view-table.js +277 -0
  63. package/build-module/view-table.js.map +1 -0
  64. package/build-style/style-rtl.css +325 -0
  65. package/build-style/style.css +325 -0
  66. package/package.json +49 -0
  67. package/src/add-filter.js +106 -0
  68. package/src/constants.js +50 -0
  69. package/src/dataviews.js +99 -0
  70. package/src/filter-summary.js +221 -0
  71. package/src/filters.js +84 -0
  72. package/src/index.js +2 -0
  73. package/src/item-actions.js +211 -0
  74. package/src/lock-unlock.js +10 -0
  75. package/src/pagination.js +144 -0
  76. package/src/reset-filters.js +26 -0
  77. package/src/search.js +38 -0
  78. package/src/stories/fixtures.js +126 -0
  79. package/src/stories/index.story.js +137 -0
  80. package/src/style.scss +245 -0
  81. package/src/view-actions.js +298 -0
  82. package/src/view-grid.js +100 -0
  83. package/src/view-list.js +99 -0
  84. package/src/view-table.js +425 -0
@@ -0,0 +1,277 @@
1
+ import { createElement } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __ } from '@wordpress/i18n';
6
+ import { useAsyncList } from '@wordpress/compose';
7
+ import { chevronDown, chevronUp, unseen, check, arrowUp, arrowDown, chevronRightSmall, funnel } from '@wordpress/icons';
8
+ import { Button, Icon, privateApis as componentsPrivateApis } from '@wordpress/components';
9
+ import { Children, Fragment } from '@wordpress/element';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import { unlock } from './lock-unlock';
15
+ import ItemActions from './item-actions';
16
+ import { ENUMERATION_TYPE, OPERATOR_IN, OPERATOR_NOT_IN } from './constants';
17
+ const {
18
+ DropdownMenuV2: DropdownMenu,
19
+ DropdownMenuGroupV2: DropdownMenuGroup,
20
+ DropdownMenuItemV2: DropdownMenuItem,
21
+ DropdownMenuSeparatorV2: DropdownMenuSeparator,
22
+ DropdownSubMenuV2: DropdownSubMenu,
23
+ DropdownSubMenuTriggerV2: DropdownSubMenuTrigger
24
+ } = unlock(componentsPrivateApis);
25
+ const sortingItemsInfo = {
26
+ asc: {
27
+ icon: arrowUp,
28
+ label: __('Sort ascending')
29
+ },
30
+ desc: {
31
+ icon: arrowDown,
32
+ label: __('Sort descending')
33
+ }
34
+ };
35
+ const sortIcons = {
36
+ asc: chevronUp,
37
+ desc: chevronDown
38
+ };
39
+ function HeaderMenu({
40
+ field,
41
+ view,
42
+ onChangeView
43
+ }) {
44
+ const isSortable = field.enableSorting !== false;
45
+ const isHidable = field.enableHiding !== false;
46
+ if (!isSortable && !isHidable) {
47
+ return field.header;
48
+ }
49
+ const isSorted = view.sort?.field === field.id;
50
+ let filter, filterInView;
51
+ const otherFilters = [];
52
+ if (field.type === ENUMERATION_TYPE) {
53
+ let columnOperators = field.filterBy?.operators;
54
+ if (!columnOperators || !Array.isArray(columnOperators)) {
55
+ columnOperators = [OPERATOR_IN, OPERATOR_NOT_IN];
56
+ }
57
+ const operators = columnOperators.filter(operator => [OPERATOR_IN, OPERATOR_NOT_IN].includes(operator));
58
+ if (operators.length >= 0) {
59
+ filter = {
60
+ field: field.id,
61
+ operators,
62
+ elements: field.elements || []
63
+ };
64
+ filterInView = {
65
+ field: filter.field,
66
+ operator: filter.operators[0],
67
+ value: undefined
68
+ };
69
+ }
70
+ }
71
+ const isFilterable = !!filter;
72
+ if (isFilterable) {
73
+ const columnFilters = view.filters;
74
+ columnFilters.forEach(columnFilter => {
75
+ if (columnFilter.field === filter.field) {
76
+ filterInView = {
77
+ ...columnFilter
78
+ };
79
+ } else {
80
+ otherFilters.push(columnFilter);
81
+ }
82
+ });
83
+ }
84
+ return createElement(DropdownMenu, {
85
+ align: "start",
86
+ trigger: createElement(Button, {
87
+ icon: isSorted && sortIcons[view.sort.direction],
88
+ iconPosition: "right",
89
+ text: field.header,
90
+ style: {
91
+ padding: 0
92
+ },
93
+ size: "compact"
94
+ })
95
+ }, createElement(WithSeparators, null, isSortable && createElement(DropdownMenuGroup, null, Object.entries(sortingItemsInfo).map(([direction, info]) => {
96
+ const isActive = isSorted && view.sort.direction === direction;
97
+ return createElement(DropdownMenuItem, {
98
+ key: direction,
99
+ role: "menuitemradio",
100
+ "aria-checked": isActive,
101
+ prefix: createElement(Icon, {
102
+ icon: info.icon
103
+ }),
104
+ suffix: isActive && createElement(Icon, {
105
+ icon: check
106
+ }),
107
+ onSelect: event => {
108
+ event.preventDefault();
109
+ onChangeView({
110
+ ...view,
111
+ sort: {
112
+ field: field.id,
113
+ direction
114
+ }
115
+ });
116
+ }
117
+ }, info.label);
118
+ })), isHidable && createElement(DropdownMenuItem, {
119
+ role: "menuitemradio",
120
+ "aria-checked": false,
121
+ prefix: createElement(Icon, {
122
+ icon: unseen
123
+ }),
124
+ onSelect: event => {
125
+ event.preventDefault();
126
+ onChangeView({
127
+ ...view,
128
+ hiddenFields: view.hiddenFields.concat(field.id)
129
+ });
130
+ }
131
+ }, __('Hide')), isFilterable && createElement(DropdownMenuGroup, null, createElement(DropdownSubMenu, {
132
+ key: filter.field,
133
+ trigger: createElement(DropdownSubMenuTrigger, {
134
+ prefix: createElement(Icon, {
135
+ icon: funnel
136
+ }),
137
+ suffix: createElement(Icon, {
138
+ icon: chevronRightSmall
139
+ })
140
+ }, __('Filter by'))
141
+ }, createElement(WithSeparators, null, createElement(DropdownMenuGroup, null, filter.elements.map(element => {
142
+ let isActive = false;
143
+ if (filterInView) {
144
+ // Intentionally use loose comparison, so it does type conversion.
145
+ // This covers the case where a top-level filter for the same field converts a number into a string.
146
+ /* eslint-disable eqeqeq */
147
+ isActive = element.value == filterInView.value;
148
+ /* eslint-enable eqeqeq */
149
+ }
150
+
151
+ return createElement(DropdownMenuItem, {
152
+ key: element.value,
153
+ role: "menuitemradio",
154
+ "aria-checked": isActive,
155
+ prefix: isActive && createElement(Icon, {
156
+ icon: check
157
+ }),
158
+ onSelect: () => {
159
+ onChangeView({
160
+ ...view,
161
+ filters: [...otherFilters, {
162
+ field: filter.field,
163
+ operator: filterInView?.operator,
164
+ value: isActive ? undefined : element.value
165
+ }]
166
+ });
167
+ }
168
+ }, element.label);
169
+ })), filter.operators.length > 1 && createElement(DropdownSubMenu, {
170
+ trigger: createElement(DropdownSubMenuTrigger, {
171
+ suffix: createElement(Fragment, null, filterInView.operator === OPERATOR_IN ? __('Is') : __('Is not'), createElement(Icon, {
172
+ icon: chevronRightSmall
173
+ }), ' ')
174
+ }, __('Conditions'))
175
+ }, createElement(DropdownMenuItem, {
176
+ key: "in-filter",
177
+ role: "menuitemradio",
178
+ "aria-checked": filterInView?.operator === OPERATOR_IN,
179
+ prefix: filterInView?.operator === OPERATOR_IN && createElement(Icon, {
180
+ icon: check
181
+ }),
182
+ onSelect: () => onChangeView({
183
+ ...view,
184
+ filters: [...otherFilters, {
185
+ field: filter.field,
186
+ operator: OPERATOR_IN,
187
+ value: filterInView?.value
188
+ }]
189
+ })
190
+ }, __('Is')), createElement(DropdownMenuItem, {
191
+ key: "not-in-filter",
192
+ role: "menuitemradio",
193
+ "aria-checked": filterInView?.operator === OPERATOR_NOT_IN,
194
+ prefix: filterInView?.operator === OPERATOR_NOT_IN && createElement(Icon, {
195
+ icon: check
196
+ }),
197
+ onSelect: () => onChangeView({
198
+ ...view,
199
+ filters: [...otherFilters, {
200
+ field: filter.field,
201
+ operator: OPERATOR_NOT_IN,
202
+ value: filterInView?.value
203
+ }]
204
+ })
205
+ }, __('Is not'))))))));
206
+ }
207
+ function WithSeparators({
208
+ children
209
+ }) {
210
+ return Children.toArray(children).filter(Boolean).map((child, i) => createElement(Fragment, {
211
+ key: i
212
+ }, i > 0 && createElement(DropdownMenuSeparator, null), child));
213
+ }
214
+ function ViewTable({
215
+ view,
216
+ onChangeView,
217
+ fields,
218
+ actions,
219
+ data,
220
+ getItemId,
221
+ isLoading = false,
222
+ deferredRendering
223
+ }) {
224
+ const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField, view.layout.primaryField].includes(field.id));
225
+ const shownData = useAsyncList(data);
226
+ const usedData = deferredRendering ? shownData : data;
227
+ const hasData = !!usedData?.length;
228
+ if (isLoading) {
229
+ // TODO:Add spinner or progress bar..
230
+ return createElement("div", {
231
+ className: "dataviews-loading"
232
+ }, createElement("h3", null, __('Loading')));
233
+ }
234
+ const sortValues = {
235
+ asc: 'ascending',
236
+ desc: 'descending'
237
+ };
238
+ return createElement("div", {
239
+ className: "dataviews-table-view-wrapper"
240
+ }, hasData && createElement("table", {
241
+ className: "dataviews-table-view"
242
+ }, createElement("thead", null, createElement("tr", null, visibleFields.map(field => createElement("th", {
243
+ key: field.id,
244
+ style: {
245
+ width: field.width || undefined,
246
+ minWidth: field.minWidth || undefined,
247
+ maxWidth: field.maxWidth || undefined
248
+ },
249
+ "data-field-id": field.id,
250
+ "aria-sort": view.sort?.field === field.id && sortValues[view.sort.direction],
251
+ scope: "col"
252
+ }, createElement(HeaderMenu, {
253
+ field: field,
254
+ view: view,
255
+ onChangeView: onChangeView
256
+ }))), !!actions?.length && createElement("th", {
257
+ "data-field-id": "actions"
258
+ }, __('Actions')))), createElement("tbody", null, usedData.map((item, index) => createElement("tr", {
259
+ key: getItemId?.(item) || index
260
+ }, visibleFields.map(field => createElement("td", {
261
+ key: field.id,
262
+ style: {
263
+ width: field.width || undefined,
264
+ minWidth: field.minWidth || undefined,
265
+ maxWidth: field.maxWidth || undefined
266
+ }
267
+ }, field.render({
268
+ item
269
+ }))), !!actions?.length && createElement("td", null, createElement(ItemActions, {
270
+ item: item,
271
+ actions: actions
272
+ })))))), !hasData && createElement("div", {
273
+ className: "dataviews-no-results"
274
+ }, createElement("p", null, __('No results'))));
275
+ }
276
+ export default ViewTable;
277
+ //# sourceMappingURL=view-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","useAsyncList","chevronDown","chevronUp","unseen","check","arrowUp","arrowDown","chevronRightSmall","funnel","Button","Icon","privateApis","componentsPrivateApis","Children","Fragment","unlock","ItemActions","ENUMERATION_TYPE","OPERATOR_IN","OPERATOR_NOT_IN","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","DropdownSubMenuV2","DropdownSubMenu","DropdownSubMenuTriggerV2","DropdownSubMenuTrigger","sortingItemsInfo","asc","icon","label","desc","sortIcons","HeaderMenu","field","view","onChangeView","isSortable","enableSorting","isHidable","enableHiding","header","isSorted","sort","id","filter","filterInView","otherFilters","type","columnOperators","filterBy","operators","Array","isArray","operator","includes","length","elements","value","undefined","isFilterable","columnFilters","filters","forEach","columnFilter","push","createElement","align","trigger","direction","iconPosition","text","style","padding","size","WithSeparators","Object","entries","map","info","isActive","key","role","prefix","suffix","onSelect","event","preventDefault","hiddenFields","concat","element","children","toArray","Boolean","child","i","ViewTable","fields","actions","data","getItemId","isLoading","deferredRendering","visibleFields","layout","mediaField","primaryField","shownData","usedData","hasData","className","sortValues","width","minWidth","maxWidth","scope","item","index","render"],"sources":["@wordpress/dataviews/src/view-table.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\nimport {\n\tchevronDown,\n\tchevronUp,\n\tunseen,\n\tcheck,\n\tarrowUp,\n\tarrowDown,\n\tchevronRightSmall,\n\tfunnel,\n} from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { Children, Fragment } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { ENUMERATION_TYPE, OPERATOR_IN, OPERATOR_NOT_IN } from './constants';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n\tDropdownSubMenuV2: DropdownSubMenu,\n\tDropdownSubMenuTriggerV2: DropdownSubMenuTrigger,\n} = unlock( componentsPrivateApis );\n\nconst sortingItemsInfo = {\n\tasc: { icon: arrowUp, label: __( 'Sort ascending' ) },\n\tdesc: { icon: arrowDown, label: __( 'Sort descending' ) },\n};\nconst sortIcons = { asc: chevronUp, desc: chevronDown };\n\nfunction HeaderMenu( { field, view, onChangeView } ) {\n\tconst isSortable = field.enableSorting !== false;\n\tconst isHidable = field.enableHiding !== false;\n\tif ( ! isSortable && ! isHidable ) {\n\t\treturn field.header;\n\t}\n\tconst isSorted = view.sort?.field === field.id;\n\tlet filter, filterInView;\n\tconst otherFilters = [];\n\tif ( field.type === ENUMERATION_TYPE ) {\n\t\tlet columnOperators = field.filterBy?.operators;\n\t\tif ( ! columnOperators || ! Array.isArray( columnOperators ) ) {\n\t\t\tcolumnOperators = [ OPERATOR_IN, OPERATOR_NOT_IN ];\n\t\t}\n\t\tconst operators = columnOperators.filter( ( operator ) =>\n\t\t\t[ OPERATOR_IN, OPERATOR_NOT_IN ].includes( operator )\n\t\t);\n\t\tif ( operators.length >= 0 ) {\n\t\t\tfilter = {\n\t\t\t\tfield: field.id,\n\t\t\t\toperators,\n\t\t\t\telements: field.elements || [],\n\t\t\t};\n\t\t\tfilterInView = {\n\t\t\t\tfield: filter.field,\n\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\tvalue: undefined,\n\t\t\t};\n\t\t}\n\t}\n\tconst isFilterable = !! filter;\n\n\tif ( isFilterable ) {\n\t\tconst columnFilters = view.filters;\n\t\tcolumnFilters.forEach( ( columnFilter ) => {\n\t\t\tif ( columnFilter.field === filter.field ) {\n\t\t\t\tfilterInView = {\n\t\t\t\t\t...columnFilter,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\totherFilters.push( columnFilter );\n\t\t\t}\n\t\t} );\n\t}\n\treturn (\n\t\t<DropdownMenu\n\t\t\talign=\"start\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\ticon={ isSorted && sortIcons[ view.sort.direction ] }\n\t\t\t\t\ticonPosition=\"right\"\n\t\t\t\t\ttext={ field.header }\n\t\t\t\t\tstyle={ { padding: 0 } }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<WithSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ Object.entries( sortingItemsInfo ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\taria-checked={ isActive }\n\t\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ info.icon } /> }\n\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\tisActive && <Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t\t{ isHidable && (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\taria-checked={ false }\n\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\thiddenFields: view.hiddenFields.concat(\n\t\t\t\t\t\t\t\t\tfield.id\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Hide' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t) }\n\t\t\t\t{ isFilterable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownSubMenu\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<DropdownSubMenuTrigger\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Filter by' ) }\n\t\t\t\t\t\t\t\t</DropdownSubMenuTrigger>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WithSeparators>\n\t\t\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t\t{ filter.elements.map( ( element ) => {\n\t\t\t\t\t\t\t\t\t\tlet isActive = false;\n\t\t\t\t\t\t\t\t\t\tif ( filterInView ) {\n\t\t\t\t\t\t\t\t\t\t\t// Intentionally use loose comparison, so it does type conversion.\n\t\t\t\t\t\t\t\t\t\t\t// This covers the case where a top-level filter for the same field converts a number into a string.\n\t\t\t\t\t\t\t\t\t\t\t/* eslint-disable eqeqeq */\n\t\t\t\t\t\t\t\t\t\t\tisActive =\n\t\t\t\t\t\t\t\t\t\t\t\telement.value ==\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView.value;\n\t\t\t\t\t\t\t\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-checked={ isActive }\n\t\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\t\tisActive && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tonSelect={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: isActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: element.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t\t\t\t\t{ filter.operators.length > 1 && (\n\t\t\t\t\t\t\t\t\t<DropdownSubMenu\n\t\t\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t\t\t<DropdownSubMenuTrigger\n\t\t\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ filterInView.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Is' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Is not' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchevronRightSmall\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>{ ' ' }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Conditions' ) }\n\t\t\t\t\t\t\t\t\t\t\t</DropdownSubMenuTrigger>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey=\"in-filter\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\taria-checked={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Is' ) }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey=\"not-in-filter\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\taria-checked={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_NOT_IN\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_NOT_IN && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_NOT_IN,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Is not' ) }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t</DropdownSubMenu>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</WithSeparators>\n\t\t\t\t\t\t</DropdownSubMenu>\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t</WithSeparators>\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction WithSeparators( { children } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuSeparator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nfunction ViewTable( {\n\tview,\n\tonChangeView,\n\tfields,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tdeferredRendering,\n} ) {\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.mediaField, view.layout.primaryField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\tconst shownData = useAsyncList( data );\n\tconst usedData = deferredRendering ? shownData : data;\n\tconst hasData = !! usedData?.length;\n\tif ( isLoading ) {\n\t\t// TODO:Add spinner or progress bar..\n\t\treturn (\n\t\t\t<div className=\"dataviews-loading\">\n\t\t\t\t<h3>{ __( 'Loading' ) }</h3>\n\t\t\t</div>\n\t\t);\n\t}\n\tconst sortValues = { asc: 'ascending', desc: 'descending' };\n\treturn (\n\t\t<div className=\"dataviews-table-view-wrapper\">\n\t\t\t{ hasData && (\n\t\t\t\t<table className=\"dataviews-table-view\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tdata-field-id={ field.id }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === field.id &&\n\t\t\t\t\t\t\t\t\t\tsortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HeaderMenu\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t<th data-field-id=\"actions\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{ usedData.map( ( item, index ) => (\n\t\t\t\t\t\t\t<tr key={ getItemId?.( item ) || index }>\n\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\t\tminWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.maxWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t) }\n\t\t\t{ ! hasData && (\n\t\t\t\t<div className=\"dataviews-no-results\">\n\t\t\t\t\t<p>{ __( 'No results' ) }</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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"}
@@ -0,0 +1,325 @@
1
+ /**
2
+ * Converts a hex value into the rgb equivalent.
3
+ *
4
+ * @param {string} hex - the hexadecimal value to convert
5
+ * @return {string} comma separated rgb values
6
+ */
7
+ /**
8
+ * Colors
9
+ */
10
+ /**
11
+ * Breakpoints & Media Queries
12
+ */
13
+ /**
14
+ * SCSS Variables.
15
+ *
16
+ * Please use variables from this sheet to ensure consistency across the UI.
17
+ * Don't add to this sheet unless you're pretty sure the value will be reused in many places.
18
+ * For example, don't add rules to this sheet that affect block visuals. It's purely for UI.
19
+ */
20
+ /**
21
+ * Converts a hex value into the rgb equivalent.
22
+ *
23
+ * @param {string} hex - the hexadecimal value to convert
24
+ * @return {string} comma separated rgb values
25
+ */
26
+ /**
27
+ * Colors
28
+ */
29
+ /**
30
+ * Fonts & basic variables.
31
+ */
32
+ /**
33
+ * Grid System.
34
+ * https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
35
+ */
36
+ /**
37
+ * Dimensions.
38
+ */
39
+ /**
40
+ * Shadows.
41
+ */
42
+ /**
43
+ * Editor widths.
44
+ */
45
+ /**
46
+ * Block & Editor UI.
47
+ */
48
+ /**
49
+ * Block paddings.
50
+ */
51
+ /**
52
+ * React Native specific.
53
+ * These variables do not appear to be used anywhere else.
54
+ */
55
+ /**
56
+ * Converts a hex value into the rgb equivalent.
57
+ *
58
+ * @param {string} hex - the hexadecimal value to convert
59
+ * @return {string} comma separated rgb values
60
+ */
61
+ /**
62
+ * Long content fade mixin
63
+ *
64
+ * Creates a fading overlay to signify that the content is longer
65
+ * than the space allows.
66
+ */
67
+ /**
68
+ * Breakpoint mixins
69
+ */
70
+ /**
71
+ * Focus styles.
72
+ */
73
+ /**
74
+ * Applies editor left position to the selector passed as argument
75
+ */
76
+ /**
77
+ * Styles that are reused verbatim in a few places
78
+ */
79
+ /**
80
+ * Allows users to opt-out of animations via OS-level preferences.
81
+ */
82
+ /**
83
+ * Reset default styles for JavaScript UI based pages.
84
+ * This is a WP-admin agnostic reset
85
+ */
86
+ /**
87
+ * Reset the WP Admin page styles for Gutenberg-like pages.
88
+ */
89
+ :root {
90
+ --wp-admin-theme-color: #007cba;
91
+ --wp-admin-theme-color--rgb: 0, 124, 186;
92
+ --wp-admin-theme-color-darker-10: #006ba1;
93
+ --wp-admin-theme-color-darker-10--rgb: 0, 107, 161;
94
+ --wp-admin-theme-color-darker-20: #005a87;
95
+ --wp-admin-theme-color-darker-20--rgb: 0, 90, 135;
96
+ --wp-admin-border-width-focus: 2px;
97
+ --wp-block-synced-color: #7a00df;
98
+ --wp-block-synced-color--rgb: 122, 0, 223;
99
+ }
100
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
101
+ :root {
102
+ --wp-admin-border-width-focus: 1.5px;
103
+ }
104
+ }
105
+
106
+ .dataviews-wrapper {
107
+ width: 100%;
108
+ height: 100%;
109
+ overflow: auto;
110
+ box-sizing: border-box;
111
+ scroll-padding-bottom: 64px;
112
+ }
113
+ .dataviews-wrapper > div {
114
+ min-height: 100%;
115
+ }
116
+
117
+ .dataviews__filters-view-actions {
118
+ padding: 12px 32px;
119
+ }
120
+
121
+ .dataviews-pagination {
122
+ margin-top: auto;
123
+ position: sticky;
124
+ bottom: 0;
125
+ background-color: #fff;
126
+ padding: 12px 32px;
127
+ border-top: 1px solid #f0f0f0;
128
+ color: #757575;
129
+ }
130
+
131
+ .dataviews-filters-options {
132
+ margin: 32px 0 16px;
133
+ }
134
+
135
+ .dataviews-table-view {
136
+ width: 100%;
137
+ text-indent: 0;
138
+ border-color: inherit;
139
+ border-collapse: collapse;
140
+ position: relative;
141
+ color: #757575;
142
+ }
143
+ .dataviews-table-view a {
144
+ text-decoration: none;
145
+ color: #1e1e1e;
146
+ font-weight: 500;
147
+ }
148
+ .dataviews-table-view th {
149
+ text-align: right;
150
+ color: var(--wp-components-color-foreground, #1e1e1e);
151
+ font-weight: normal;
152
+ font-size: 13px;
153
+ }
154
+ .dataviews-table-view td,
155
+ .dataviews-table-view th {
156
+ padding: 12px;
157
+ min-width: 160px;
158
+ }
159
+ .dataviews-table-view td[data-field-id=actions],
160
+ .dataviews-table-view th[data-field-id=actions] {
161
+ text-align: left;
162
+ }
163
+ .dataviews-table-view tr {
164
+ border-bottom: 1px solid #f0f0f0;
165
+ }
166
+ .dataviews-table-view tr td:first-child,
167
+ .dataviews-table-view tr th:first-child {
168
+ padding-right: 32px;
169
+ }
170
+ .dataviews-table-view tr td:last-child,
171
+ .dataviews-table-view tr th:last-child {
172
+ padding-left: 32px;
173
+ }
174
+ .dataviews-table-view tr:last-child {
175
+ border-bottom: 0;
176
+ }
177
+ .dataviews-table-view thead tr {
178
+ border: 0;
179
+ }
180
+ .dataviews-table-view thead th {
181
+ position: sticky;
182
+ top: -1px;
183
+ background-color: #fafafa;
184
+ box-shadow: inset 0 -1px 0 #f0f0f0;
185
+ border-top: 1px solid #f0f0f0;
186
+ padding-top: 4px;
187
+ padding-bottom: 4px;
188
+ }
189
+
190
+ .dataviews-grid-view {
191
+ margin-bottom: 24px;
192
+ grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
193
+ padding: 0 32px;
194
+ }
195
+ @media (min-width: 1080px) {
196
+ .dataviews-grid-view {
197
+ grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
198
+ }
199
+ }
200
+ @media (min-width: 1440px) {
201
+ .dataviews-grid-view {
202
+ grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
203
+ }
204
+ }
205
+ .dataviews-grid-view .dataviews-view-grid__card h3 {
206
+ white-space: nowrap;
207
+ overflow: hidden;
208
+ text-overflow: ellipsis;
209
+ }
210
+ .dataviews-grid-view .dataviews-view-grid__media {
211
+ width: 100%;
212
+ min-height: 200px;
213
+ aspect-ratio: 1/1;
214
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
215
+ border-radius: 4px;
216
+ overflow: hidden;
217
+ }
218
+ .dataviews-grid-view .dataviews-view-grid__media > * {
219
+ -o-object-fit: cover;
220
+ object-fit: cover;
221
+ width: 100%;
222
+ height: 100%;
223
+ }
224
+ .dataviews-grid-view .dataviews-view-grid__primary-field {
225
+ min-height: 24px;
226
+ }
227
+ .dataviews-grid-view .dataviews-view-grid__primary-field a {
228
+ color: #1e1e1e;
229
+ text-decoration: none;
230
+ font-weight: 500;
231
+ }
232
+ .dataviews-grid-view .dataviews-view-grid__fields {
233
+ position: relative;
234
+ font-size: 12px;
235
+ line-height: 16px;
236
+ }
237
+ .dataviews-grid-view .dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-header {
238
+ color: #757575;
239
+ }
240
+ .dataviews-grid-view .dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-value {
241
+ color: #1e1e1e;
242
+ }
243
+
244
+ .dataviews-list-view {
245
+ margin: 0;
246
+ }
247
+ .dataviews-list-view li {
248
+ border-bottom: 1px solid #f0f0f0;
249
+ margin: 0;
250
+ }
251
+ .dataviews-list-view li:first-child {
252
+ border-top: 1px solid #f0f0f0;
253
+ }
254
+ .dataviews-list-view li:last-child {
255
+ border-bottom: 0;
256
+ }
257
+ .dataviews-list-view .dataviews-list-view__item {
258
+ padding: 12px 32px;
259
+ cursor: default;
260
+ }
261
+ .dataviews-list-view .dataviews-list-view__item:focus, .dataviews-list-view .dataviews-list-view__item:hover {
262
+ background-color: #f8f8f8;
263
+ }
264
+ .dataviews-list-view .dataviews-list-view__item:focus {
265
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
266
+ }
267
+ .dataviews-list-view .dataviews-list-view__item h3 {
268
+ overflow: hidden;
269
+ text-overflow: ellipsis;
270
+ white-space: nowrap;
271
+ }
272
+ .dataviews-list-view .dataviews-list-view__item-selected,
273
+ .dataviews-list-view .dataviews-list-view__item-selected:hover {
274
+ background-color: #f0f0f0;
275
+ }
276
+ .dataviews-list-view .dataviews-list-view__item-selected:focus,
277
+ .dataviews-list-view .dataviews-list-view__item-selected:hover:focus {
278
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
279
+ }
280
+ .dataviews-list-view .dataviews-list-view__media-wrapper {
281
+ min-width: 32px;
282
+ height: 32px;
283
+ border-radius: 4px;
284
+ overflow: hidden;
285
+ position: relative;
286
+ }
287
+ .dataviews-list-view .dataviews-list-view__media-wrapper::after {
288
+ content: "";
289
+ position: absolute;
290
+ top: 0;
291
+ right: 0;
292
+ width: 100%;
293
+ height: 100%;
294
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
295
+ border-radius: 4px;
296
+ }
297
+ .dataviews-list-view .edit-site-page-pages__featured-image,
298
+ .dataviews-list-view .dataviews-list-view__media-placeholder {
299
+ min-width: 32px;
300
+ height: 32px;
301
+ }
302
+ .dataviews-list-view .dataviews-list-view__media-placeholder {
303
+ background-color: #e0e0e0;
304
+ }
305
+ .dataviews-list-view .dataviews-list-view__fields {
306
+ color: #757575;
307
+ overflow: hidden;
308
+ text-overflow: ellipsis;
309
+ white-space: nowrap;
310
+ }
311
+ .dataviews-list-view .dataviews-list-view__fields .dataviews-list-view__field {
312
+ margin-left: 12px;
313
+ }
314
+ .dataviews-list-view .dataviews-list-view__fields .dataviews-list-view__field:last-child {
315
+ margin-left: 0;
316
+ }
317
+
318
+ .dataviews-action-modal {
319
+ z-index: 1000001;
320
+ }
321
+
322
+ .dataviews-no-results,
323
+ .dataviews-loading {
324
+ padding: 0 32px;
325
+ }