@wordpress/dataviews 3.0.0 → 4.0.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 (274) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/README.md +19 -4
  3. package/build/{dataform.js → components/dataform/index.js} +5 -5
  4. package/build/components/dataform/index.js.map +1 -0
  5. package/build/components/dataviews/index.js +115 -0
  6. package/build/components/dataviews/index.js.map +1 -0
  7. package/build/{bulk-actions.js → components/dataviews-bulk-actions/index.js} +39 -16
  8. package/build/components/dataviews-bulk-actions/index.js.map +1 -0
  9. package/build/{bulk-actions-toolbar.js → components/dataviews-bulk-actions-toolbar/index.js} +36 -19
  10. package/build/components/dataviews-bulk-actions-toolbar/index.js.map +1 -0
  11. package/build/components/dataviews-context/index.js +36 -0
  12. package/build/components/dataviews-context/index.js.map +1 -0
  13. package/build/{add-filter.js → components/dataviews-filters/add-filter.js} +2 -2
  14. package/build/components/dataviews-filters/add-filter.js.map +1 -0
  15. package/build/{filter-summary.js → components/dataviews-filters/filter-summary.js} +9 -9
  16. package/build/components/dataviews-filters/filter-summary.js.map +1 -0
  17. package/build/{filters.js → components/dataviews-filters/index.js} +14 -15
  18. package/build/components/dataviews-filters/index.js.map +1 -0
  19. package/build/components/dataviews-filters/reset-filters.js.map +1 -0
  20. package/build/{search-widget.js → components/dataviews-filters/search-widget.js} +13 -13
  21. package/build/components/dataviews-filters/search-widget.js.map +1 -0
  22. package/build/{item-actions.js → components/dataviews-item-actions/index.js} +2 -2
  23. package/build/components/dataviews-item-actions/index.js.map +1 -0
  24. package/build/components/dataviews-layout/index.js +53 -0
  25. package/build/components/dataviews-layout/index.js.map +1 -0
  26. package/build/{pagination.js → components/dataviews-pagination/index.js} +16 -13
  27. package/build/components/dataviews-pagination/index.js.map +1 -0
  28. package/build/{search.js → components/dataviews-search/index.js} +10 -6
  29. package/build/components/dataviews-search/index.js.map +1 -0
  30. package/build/{single-selection-checkbox.js → components/dataviews-selection-checkbox/index.js} +6 -6
  31. package/build/components/dataviews-selection-checkbox/index.js.map +1 -0
  32. package/build/{view-actions.js → components/dataviews-view-config/index.js} +19 -16
  33. package/build/components/dataviews-view-config/index.js.map +1 -0
  34. package/build/index.js +2 -2
  35. package/build/index.js.map +1 -1
  36. package/build/layouts/grid/density-picker.js +143 -0
  37. package/build/layouts/grid/density-picker.js.map +1 -0
  38. package/build/{view-grid.js → layouts/grid/index.js} +34 -35
  39. package/build/layouts/grid/index.js.map +1 -0
  40. package/build/layouts/index.js +52 -0
  41. package/build/layouts/index.js.map +1 -0
  42. package/build/{view-list.js → layouts/list/index.js} +26 -23
  43. package/build/layouts/list/index.js.map +1 -0
  44. package/build/layouts/table/column-header-menu.js +196 -0
  45. package/build/layouts/table/column-header-menu.js.map +1 -0
  46. package/build/layouts/table/index.js +350 -0
  47. package/build/layouts/table/index.js.map +1 -0
  48. package/build/normalize-fields.js +1 -1
  49. package/build/normalize-fields.js.map +1 -1
  50. package/build/types.js.map +1 -1
  51. package/build-module/{dataform.js → components/dataform/index.js} +5 -5
  52. package/build-module/components/dataform/index.js.map +1 -0
  53. package/build-module/components/dataviews/index.js +108 -0
  54. package/build-module/components/dataviews/index.js.map +1 -0
  55. package/build-module/{bulk-actions.js → components/dataviews-bulk-actions/index.js} +39 -17
  56. package/build-module/components/dataviews-bulk-actions/index.js.map +1 -0
  57. package/build-module/{bulk-actions-toolbar.js → components/dataviews-bulk-actions-toolbar/index.js} +35 -19
  58. package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +1 -0
  59. package/build-module/components/dataviews-context/index.js +30 -0
  60. package/build-module/components/dataviews-context/index.js.map +1 -0
  61. package/build-module/{add-filter.js → components/dataviews-filters/add-filter.js} +2 -2
  62. package/build-module/components/dataviews-filters/add-filter.js.map +1 -0
  63. package/build-module/{filter-summary.js → components/dataviews-filters/filter-summary.js} +9 -9
  64. package/build-module/components/dataviews-filters/filter-summary.js.map +1 -0
  65. package/build-module/{filters.js → components/dataviews-filters/index.js} +15 -16
  66. package/build-module/components/dataviews-filters/index.js.map +1 -0
  67. package/build-module/components/dataviews-filters/reset-filters.js.map +1 -0
  68. package/build-module/{search-widget.js → components/dataviews-filters/search-widget.js} +13 -13
  69. package/build-module/components/dataviews-filters/search-widget.js.map +1 -0
  70. package/build-module/{item-actions.js → components/dataviews-item-actions/index.js} +2 -2
  71. package/build-module/components/dataviews-item-actions/index.js.map +1 -0
  72. package/build-module/components/dataviews-layout/index.js +45 -0
  73. package/build-module/components/dataviews-layout/index.js.map +1 -0
  74. package/build-module/{pagination.js → components/dataviews-pagination/index.js} +17 -15
  75. package/build-module/components/dataviews-pagination/index.js.map +1 -0
  76. package/build-module/{search.js → components/dataviews-search/index.js} +10 -7
  77. package/build-module/components/dataviews-search/index.js.map +1 -0
  78. package/build-module/{single-selection-checkbox.js → components/dataviews-selection-checkbox/index.js} +5 -5
  79. package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -0
  80. package/build-module/{view-actions.js → components/dataviews-view-config/index.js} +19 -17
  81. package/build-module/components/dataviews-view-config/index.js.map +1 -0
  82. package/build-module/index.js +2 -2
  83. package/build-module/index.js.map +1 -1
  84. package/build-module/layouts/grid/density-picker.js +138 -0
  85. package/build-module/layouts/grid/density-picker.js.map +1 -0
  86. package/build-module/{view-grid.js → layouts/grid/index.js} +31 -32
  87. package/build-module/layouts/grid/index.js.map +1 -0
  88. package/build-module/layouts/index.js +43 -0
  89. package/build-module/layouts/index.js.map +1 -0
  90. package/build-module/{view-list.js → layouts/list/index.js} +24 -21
  91. package/build-module/layouts/list/index.js.map +1 -0
  92. package/build-module/layouts/table/column-header-menu.js +190 -0
  93. package/build-module/layouts/table/column-header-menu.js.map +1 -0
  94. package/build-module/layouts/table/index.js +344 -0
  95. package/build-module/layouts/table/index.js.map +1 -0
  96. package/build-module/normalize-fields.js +1 -1
  97. package/build-module/normalize-fields.js.map +1 -1
  98. package/build-module/types.js.map +1 -1
  99. package/build-style/style-rtl.css +607 -545
  100. package/build-style/style.css +607 -545
  101. package/build-types/{dataform.d.ts → components/dataform/index.d.ts} +2 -2
  102. package/build-types/components/dataform/index.d.ts.map +1 -0
  103. package/build-types/components/dataform/stories/index.story.d.ts +11 -0
  104. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -0
  105. package/build-types/{dataviews.d.ts → components/dataviews/index.d.ts} +9 -7
  106. package/build-types/components/dataviews/index.d.ts.map +1 -0
  107. package/build-types/{stories → components/dataviews/stories}/fixtures.d.ts +7 -19
  108. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -0
  109. package/build-types/components/dataviews/stories/index.story.d.ts +46 -0
  110. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -0
  111. package/build-types/components/dataviews-bulk-actions/index.d.ts +5 -0
  112. package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -0
  113. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +2 -0
  114. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +1 -0
  115. package/build-types/components/dataviews-context/index.d.ts +26 -0
  116. package/build-types/components/dataviews-context/index.d.ts.map +1 -0
  117. package/build-types/{add-filter.d.ts → components/dataviews-filters/add-filter.d.ts} +1 -2
  118. package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -0
  119. package/build-types/{filter-summary.d.ts → components/dataviews-filters/filter-summary.d.ts} +1 -1
  120. package/build-types/components/dataviews-filters/filter-summary.d.ts.map +1 -0
  121. package/build-types/components/dataviews-filters/index.d.ts +4 -0
  122. package/build-types/components/dataviews-filters/index.d.ts.map +1 -0
  123. package/build-types/{reset-filters.d.ts → components/dataviews-filters/reset-filters.d.ts} +1 -2
  124. package/build-types/components/dataviews-filters/reset-filters.d.ts.map +1 -0
  125. package/build-types/{search-widget.d.ts → components/dataviews-filters/search-widget.d.ts} +1 -2
  126. package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -0
  127. package/build-types/{item-actions.d.ts → components/dataviews-item-actions/index.d.ts} +2 -2
  128. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -0
  129. package/build-types/components/dataviews-layout/index.d.ts +2 -0
  130. package/build-types/components/dataviews-layout/index.d.ts.map +1 -0
  131. package/build-types/components/dataviews-pagination/index.d.ts +4 -0
  132. package/build-types/components/dataviews-pagination/index.d.ts.map +1 -0
  133. package/build-types/components/dataviews-search/index.d.ts +6 -0
  134. package/build-types/components/dataviews-search/index.d.ts.map +1 -0
  135. package/build-types/components/dataviews-selection-checkbox/index.d.ts +16 -0
  136. package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -0
  137. package/build-types/components/dataviews-view-config/index.d.ts +8 -0
  138. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -0
  139. package/build-types/index.d.ts +2 -2
  140. package/build-types/index.d.ts.map +1 -1
  141. package/build-types/layouts/grid/density-picker.d.ts +5 -0
  142. package/build-types/layouts/grid/density-picker.d.ts.map +1 -0
  143. package/build-types/layouts/grid/index.d.ts +3 -0
  144. package/build-types/layouts/grid/index.d.ts.map +1 -0
  145. package/build-types/{layouts.d.ts → layouts/index.d.ts} +6 -5
  146. package/build-types/layouts/index.d.ts.map +1 -0
  147. package/build-types/layouts/list/index.d.ts +3 -0
  148. package/build-types/layouts/list/index.d.ts.map +1 -0
  149. package/build-types/layouts/table/column-header-menu.d.ts +17 -0
  150. package/build-types/layouts/table/column-header-menu.d.ts.map +1 -0
  151. package/build-types/layouts/table/index.d.ts +4 -0
  152. package/build-types/layouts/table/index.d.ts.map +1 -0
  153. package/build-types/types.d.ts +42 -23
  154. package/build-types/types.d.ts.map +1 -1
  155. package/package.json +10 -10
  156. package/src/{dataform.tsx → components/dataform/index.tsx} +5 -5
  157. package/src/components/dataform/stories/index.story.tsx +42 -0
  158. package/src/components/dataviews/index.tsx +149 -0
  159. package/src/{stories → components/dataviews/stories}/fixtures.js +7 -11
  160. package/src/{stories → components/dataviews/stories}/index.story.js +17 -3
  161. package/src/components/dataviews/style.scss +97 -0
  162. package/src/{bulk-actions.tsx → components/dataviews-bulk-actions/index.tsx} +46 -29
  163. package/src/components/dataviews-bulk-actions/style.scss +7 -0
  164. package/src/{bulk-actions-toolbar.tsx → components/dataviews-bulk-actions-toolbar/index.tsx} +42 -30
  165. package/src/components/dataviews-bulk-actions-toolbar/style.scss +45 -0
  166. package/src/components/dataviews-context/index.ts +49 -0
  167. package/src/{add-filter.tsx → components/dataviews-filters/add-filter.tsx} +3 -3
  168. package/src/{filter-summary.tsx → components/dataviews-filters/filter-summary.tsx} +18 -10
  169. package/src/{filters.tsx → components/dataviews-filters/index.tsx} +10 -24
  170. package/src/{reset-filters.tsx → components/dataviews-filters/reset-filters.tsx} +1 -1
  171. package/src/{search-widget.tsx → components/dataviews-filters/search-widget.tsx} +14 -14
  172. package/src/components/dataviews-filters/style.scss +252 -0
  173. package/src/{item-actions.tsx → components/dataviews-item-actions/index.tsx} +2 -2
  174. package/src/components/dataviews-item-actions/style.scss +3 -0
  175. package/src/components/dataviews-layout/index.tsx +51 -0
  176. package/src/{pagination.tsx → components/dataviews-pagination/index.tsx} +13 -21
  177. package/src/components/dataviews-pagination/style.scss +26 -0
  178. package/src/{search.tsx → components/dataviews-search/index.tsx} +5 -10
  179. package/src/{single-selection-checkbox.tsx → components/dataviews-selection-checkbox/index.tsx} +9 -9
  180. package/src/components/dataviews-selection-checkbox/style.scss +14 -0
  181. package/src/{view-actions.tsx → components/dataviews-view-config/index.tsx} +16 -22
  182. package/src/index.ts +2 -2
  183. package/src/layouts/grid/density-picker.tsx +136 -0
  184. package/src/{view-grid.tsx → layouts/grid/index.tsx} +28 -29
  185. package/src/layouts/grid/style.scss +140 -0
  186. package/src/layouts/index.ts +66 -0
  187. package/src/{view-list.tsx → layouts/list/index.tsx} +30 -17
  188. package/src/layouts/list/style.scss +189 -0
  189. package/src/layouts/table/column-header-menu.tsx +268 -0
  190. package/src/layouts/table/index.tsx +471 -0
  191. package/src/layouts/table/style.scss +201 -0
  192. package/src/normalize-fields.ts +1 -1
  193. package/src/style.scss +11 -907
  194. package/src/test/filter-and-sort-data-view.js +1 -1
  195. package/src/types.ts +48 -24
  196. package/tsconfig.tsbuildinfo +1 -1
  197. package/build/add-filter.js.map +0 -1
  198. package/build/bulk-actions-toolbar.js.map +0 -1
  199. package/build/bulk-actions.js.map +0 -1
  200. package/build/dataform.js.map +0 -1
  201. package/build/dataviews.js +0 -125
  202. package/build/dataviews.js.map +0 -1
  203. package/build/filter-summary.js.map +0 -1
  204. package/build/filters.js.map +0 -1
  205. package/build/item-actions.js.map +0 -1
  206. package/build/layouts.js +0 -38
  207. package/build/layouts.js.map +0 -1
  208. package/build/pagination.js.map +0 -1
  209. package/build/reset-filters.js.map +0 -1
  210. package/build/search-widget.js.map +0 -1
  211. package/build/search.js.map +0 -1
  212. package/build/single-selection-checkbox.js.map +0 -1
  213. package/build/view-actions.js.map +0 -1
  214. package/build/view-grid.js.map +0 -1
  215. package/build/view-list.js.map +0 -1
  216. package/build/view-table.js +0 -400
  217. package/build/view-table.js.map +0 -1
  218. package/build-module/add-filter.js.map +0 -1
  219. package/build-module/bulk-actions-toolbar.js.map +0 -1
  220. package/build-module/bulk-actions.js.map +0 -1
  221. package/build-module/dataform.js.map +0 -1
  222. package/build-module/dataviews.js +0 -116
  223. package/build-module/dataviews.js.map +0 -1
  224. package/build-module/filter-summary.js.map +0 -1
  225. package/build-module/filters.js.map +0 -1
  226. package/build-module/item-actions.js.map +0 -1
  227. package/build-module/layouts.js +0 -30
  228. package/build-module/layouts.js.map +0 -1
  229. package/build-module/pagination.js.map +0 -1
  230. package/build-module/reset-filters.js.map +0 -1
  231. package/build-module/search-widget.js.map +0 -1
  232. package/build-module/search.js.map +0 -1
  233. package/build-module/single-selection-checkbox.js.map +0 -1
  234. package/build-module/view-actions.js.map +0 -1
  235. package/build-module/view-grid.js.map +0 -1
  236. package/build-module/view-list.js.map +0 -1
  237. package/build-module/view-table.js +0 -393
  238. package/build-module/view-table.js.map +0 -1
  239. package/build-types/add-filter.d.ts.map +0 -1
  240. package/build-types/bulk-actions-toolbar.d.ts +0 -13
  241. package/build-types/bulk-actions-toolbar.d.ts.map +0 -1
  242. package/build-types/bulk-actions.d.ts +0 -15
  243. package/build-types/bulk-actions.d.ts.map +0 -1
  244. package/build-types/dataform.d.ts.map +0 -1
  245. package/build-types/dataviews.d.ts.map +0 -1
  246. package/build-types/filter-summary.d.ts.map +0 -1
  247. package/build-types/filters.d.ts +0 -13
  248. package/build-types/filters.d.ts.map +0 -1
  249. package/build-types/item-actions.d.ts.map +0 -1
  250. package/build-types/layouts.d.ts.map +0 -1
  251. package/build-types/pagination.d.ts +0 -16
  252. package/build-types/pagination.d.ts.map +0 -1
  253. package/build-types/reset-filters.d.ts.map +0 -1
  254. package/build-types/search-widget.d.ts.map +0 -1
  255. package/build-types/search.d.ts +0 -13
  256. package/build-types/search.d.ts.map +0 -1
  257. package/build-types/single-selection-checkbox.d.ts +0 -17
  258. package/build-types/single-selection-checkbox.d.ts.map +0 -1
  259. package/build-types/stories/fixtures.d.ts.map +0 -1
  260. package/build-types/stories/index.story.d.ts +0 -29
  261. package/build-types/stories/index.story.d.ts.map +0 -1
  262. package/build-types/view-actions.d.ts +0 -12
  263. package/build-types/view-actions.d.ts.map +0 -1
  264. package/build-types/view-grid.d.ts +0 -4
  265. package/build-types/view-grid.d.ts.map +0 -1
  266. package/build-types/view-list.d.ts +0 -4
  267. package/build-types/view-list.d.ts.map +0 -1
  268. package/build-types/view-table.d.ts +0 -5
  269. package/build-types/view-table.d.ts.map +0 -1
  270. package/src/dataviews.tsx +0 -183
  271. package/src/layouts.ts +0 -39
  272. package/src/view-table.tsx +0 -592
  273. /package/build/{reset-filters.js → components/dataviews-filters/reset-filters.js} +0 -0
  274. /package/build-module/{reset-filters.js → components/dataviews-filters/reset-filters.js} +0 -0
@@ -0,0 +1,138 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { RangeControl, Button } from '@wordpress/components';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { useViewportMatch } from '@wordpress/compose';
7
+ import { plus, lineSolid } from '@wordpress/icons';
8
+ import { useEffect } from '@wordpress/element';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { Fragment as _Fragment } from "react/jsx-runtime";
11
+ import { jsxs as _jsxs } from "react/jsx-runtime";
12
+ const viewportBreaks = {
13
+ xhuge: {
14
+ min: 3,
15
+ max: 6,
16
+ default: 5
17
+ },
18
+ huge: {
19
+ min: 2,
20
+ max: 4,
21
+ default: 4
22
+ },
23
+ xlarge: {
24
+ min: 2,
25
+ max: 3,
26
+ default: 3
27
+ },
28
+ large: {
29
+ min: 1,
30
+ max: 2,
31
+ default: 2
32
+ },
33
+ mobile: {
34
+ min: 1,
35
+ max: 2,
36
+ default: 2
37
+ }
38
+ };
39
+ function useViewPortBreakpoint() {
40
+ const isXHuge = useViewportMatch('xhuge', '>=');
41
+ const isHuge = useViewportMatch('huge', '>=');
42
+ const isXlarge = useViewportMatch('xlarge', '>=');
43
+ const isLarge = useViewportMatch('large', '>=');
44
+ const isMobile = useViewportMatch('mobile', '>=');
45
+ if (isXHuge) {
46
+ return 'xhuge';
47
+ }
48
+ if (isHuge) {
49
+ return 'huge';
50
+ }
51
+ if (isXlarge) {
52
+ return 'xlarge';
53
+ }
54
+ if (isLarge) {
55
+ return 'large';
56
+ }
57
+ if (isMobile) {
58
+ return 'mobile';
59
+ }
60
+ return null;
61
+ }
62
+
63
+ // Value is number from 0 to 100 representing how big an item is in the grid
64
+ // 100 being the biggest and 0 being the smallest.
65
+ // The size is relative to the viewport size, if one a given viewport the
66
+ // number of allowed items in a grid is 3 to 6 a 0 ( the smallest ) will mean that the grid will
67
+ // have 6 items in a row, a 100 ( the biggest ) will mean that the grid will have 3 items in a row.
68
+ // A value of 75 will mean that the grid will have 4 items in a row.
69
+ function getRangeValue(density, breakValues) {
70
+ const inverseDensity = breakValues.max - density;
71
+ const max = breakValues.max - breakValues.min;
72
+ return Math.round(inverseDensity * 100 / max);
73
+ }
74
+ export default function DensityPicker({
75
+ density,
76
+ setDensity
77
+ }) {
78
+ const viewport = useViewPortBreakpoint();
79
+ useEffect(() => {
80
+ setDensity(_density => {
81
+ if (!viewport || !_density) {
82
+ return 0;
83
+ }
84
+ const breakValues = viewportBreaks[viewport];
85
+ if (_density < breakValues.min) {
86
+ return breakValues.min;
87
+ }
88
+ if (_density > breakValues.max) {
89
+ return breakValues.max;
90
+ }
91
+ return _density;
92
+ });
93
+ }, [setDensity, viewport]);
94
+ if (!viewport) {
95
+ return null;
96
+ }
97
+ const breakValues = viewportBreaks[viewport];
98
+ const densityToUse = density || breakValues.default;
99
+ const rangeValue = getRangeValue(densityToUse, breakValues);
100
+ const step = 100 / (breakValues.max - breakValues.min + 1);
101
+ return /*#__PURE__*/_jsxs(_Fragment, {
102
+ children: [/*#__PURE__*/_jsx(Button, {
103
+ size: "compact",
104
+ icon: lineSolid,
105
+ disabled: rangeValue <= 0,
106
+ accessibleWhenDisabled: true,
107
+ label: __('Decrease size'),
108
+ onClick: () => {
109
+ setDensity(densityToUse + 1);
110
+ }
111
+ }), /*#__PURE__*/_jsx(RangeControl, {
112
+ __nextHasNoMarginBottom: true,
113
+ showTooltip: false,
114
+ className: "dataviews-density-picker__range-control",
115
+ label: __('Item size'),
116
+ hideLabelFromVision: true,
117
+ value: rangeValue,
118
+ min: 0,
119
+ max: 100,
120
+ withInputField: false,
121
+ onChange: (value = 0) => {
122
+ const inverseValue = 100 - value;
123
+ setDensity(Math.round(inverseValue * (breakValues.max - breakValues.min) / 100 + breakValues.min));
124
+ },
125
+ step: step
126
+ }), /*#__PURE__*/_jsx(Button, {
127
+ size: "compact",
128
+ icon: plus,
129
+ disabled: rangeValue >= 100,
130
+ accessibleWhenDisabled: true,
131
+ label: __('Increase size'),
132
+ onClick: () => {
133
+ setDensity(densityToUse - 1);
134
+ }
135
+ })]
136
+ });
137
+ }
138
+ //# sourceMappingURL=density-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RangeControl","Button","__","useViewportMatch","plus","lineSolid","useEffect","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","viewportBreaks","xhuge","min","max","default","huge","xlarge","large","mobile","useViewPortBreakpoint","isXHuge","isHuge","isXlarge","isLarge","isMobile","getRangeValue","density","breakValues","inverseDensity","Math","round","DensityPicker","setDensity","viewport","_density","densityToUse","rangeValue","step","children","size","icon","disabled","accessibleWhenDisabled","label","onClick","__nextHasNoMarginBottom","showTooltip","className","hideLabelFromVision","value","withInputField","onChange","inverseValue"],"sources":["@wordpress/dataviews/src/layouts/grid/density-picker.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RangeControl, Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { plus, lineSolid } from '@wordpress/icons';\nimport { useEffect } from '@wordpress/element';\n\nconst viewportBreaks = {\n\txhuge: { min: 3, max: 6, default: 5 },\n\thuge: { min: 2, max: 4, default: 4 },\n\txlarge: { min: 2, max: 3, default: 3 },\n\tlarge: { min: 1, max: 2, default: 2 },\n\tmobile: { min: 1, max: 2, default: 2 },\n};\n\nfunction useViewPortBreakpoint() {\n\tconst isXHuge = useViewportMatch( 'xhuge', '>=' );\n\tconst isHuge = useViewportMatch( 'huge', '>=' );\n\tconst isXlarge = useViewportMatch( 'xlarge', '>=' );\n\tconst isLarge = useViewportMatch( 'large', '>=' );\n\tconst isMobile = useViewportMatch( 'mobile', '>=' );\n\n\tif ( isXHuge ) {\n\t\treturn 'xhuge';\n\t}\n\tif ( isHuge ) {\n\t\treturn 'huge';\n\t}\n\tif ( isXlarge ) {\n\t\treturn 'xlarge';\n\t}\n\tif ( isLarge ) {\n\t\treturn 'large';\n\t}\n\tif ( isMobile ) {\n\t\treturn 'mobile';\n\t}\n\treturn null;\n}\n\n// Value is number from 0 to 100 representing how big an item is in the grid\n// 100 being the biggest and 0 being the smallest.\n// The size is relative to the viewport size, if one a given viewport the\n// number of allowed items in a grid is 3 to 6 a 0 ( the smallest ) will mean that the grid will\n// have 6 items in a row, a 100 ( the biggest ) will mean that the grid will have 3 items in a row.\n// A value of 75 will mean that the grid will have 4 items in a row.\nfunction getRangeValue(\n\tdensity: number,\n\tbreakValues: { min: number; max: number; default: number }\n) {\n\tconst inverseDensity = breakValues.max - density;\n\tconst max = breakValues.max - breakValues.min;\n\treturn Math.round( ( inverseDensity * 100 ) / max );\n}\n\nexport default function DensityPicker( {\n\tdensity,\n\tsetDensity,\n}: {\n\tdensity: number;\n\tsetDensity: React.Dispatch< React.SetStateAction< number > >;\n} ) {\n\tconst viewport = useViewPortBreakpoint();\n\tuseEffect( () => {\n\t\tsetDensity( ( _density ) => {\n\t\t\tif ( ! viewport || ! _density ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tconst breakValues = viewportBreaks[ viewport ];\n\t\t\tif ( _density < breakValues.min ) {\n\t\t\t\treturn breakValues.min;\n\t\t\t}\n\t\t\tif ( _density > breakValues.max ) {\n\t\t\t\treturn breakValues.max;\n\t\t\t}\n\t\t\treturn _density;\n\t\t} );\n\t}, [ setDensity, viewport ] );\n\tif ( ! viewport ) {\n\t\treturn null;\n\t}\n\tconst breakValues = viewportBreaks[ viewport ];\n\tconst densityToUse = density || breakValues.default;\n\tconst rangeValue = getRangeValue( densityToUse, breakValues );\n\n\tconst step = 100 / ( breakValues.max - breakValues.min + 1 );\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tsize=\"compact\"\n\t\t\t\ticon={ lineSolid }\n\t\t\t\tdisabled={ rangeValue <= 0 }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\tlabel={ __( 'Decrease size' ) }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetDensity( densityToUse + 1 );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<RangeControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tshowTooltip={ false }\n\t\t\t\tclassName=\"dataviews-density-picker__range-control\"\n\t\t\t\tlabel={ __( 'Item size' ) }\n\t\t\t\thideLabelFromVision\n\t\t\t\tvalue={ rangeValue }\n\t\t\t\tmin={ 0 }\n\t\t\t\tmax={ 100 }\n\t\t\t\twithInputField={ false }\n\t\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\t\tconst inverseValue = 100 - value;\n\t\t\t\t\tsetDensity(\n\t\t\t\t\t\tMath.round(\n\t\t\t\t\t\t\t( inverseValue *\n\t\t\t\t\t\t\t\t( breakValues.max - breakValues.min ) ) /\n\t\t\t\t\t\t\t\t100 +\n\t\t\t\t\t\t\t\tbreakValues.min\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t\tstep={ step }\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\tsize=\"compact\"\n\t\t\t\ticon={ plus }\n\t\t\t\tdisabled={ rangeValue >= 100 }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\tlabel={ __( 'Increase size' ) }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetDensity( densityToUse - 1 );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -12,15 +12,15 @@ import { __ } from '@wordpress/i18n';
12
12
  /**
13
13
  * Internal dependencies
14
14
  */
15
- import ItemActions from './item-actions';
16
- import SingleSelectionCheckbox from './single-selection-checkbox';
17
- import { useHasAPossibleBulkAction } from './bulk-actions';
15
+ import ItemActions from '../../components/dataviews-item-actions';
16
+ import SingleSelectionCheckbox from '../../components/dataviews-selection-checkbox';
17
+ import { useHasAPossibleBulkAction } from '../../components/dataviews-bulk-actions';
18
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
19
  import { jsxs as _jsxs } from "react/jsx-runtime";
20
20
  import { Fragment as _Fragment } from "react/jsx-runtime";
21
21
  function GridItem({
22
22
  selection,
23
- onSelectionChange,
23
+ onChangeSelection,
24
24
  getItemId,
25
25
  item,
26
26
  actions,
@@ -33,6 +33,12 @@ function GridItem({
33
33
  const hasBulkAction = useHasAPossibleBulkAction(actions, item);
34
34
  const id = getItemId(item);
35
35
  const isSelected = selection.includes(id);
36
+ const renderedMediaField = mediaField?.render ? /*#__PURE__*/_jsx(mediaField.render, {
37
+ item: item
38
+ }) : null;
39
+ const renderedPrimaryField = primaryField?.render ? /*#__PURE__*/_jsx(primaryField.render, {
40
+ item: item
41
+ }) : null;
36
42
  return /*#__PURE__*/_jsxs(VStack, {
37
43
  spacing: 0,
38
44
  className: clsx('dataviews-view-grid__card', {
@@ -45,29 +51,25 @@ function GridItem({
45
51
  if (!hasBulkAction) {
46
52
  return;
47
53
  }
48
- onSelectionChange(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [...selection, id]);
54
+ onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [...selection, id]);
49
55
  }
50
56
  },
51
57
  children: [/*#__PURE__*/_jsx("div", {
52
58
  className: "dataviews-view-grid__media",
53
- children: mediaField?.render({
54
- item
55
- })
59
+ children: renderedMediaField
56
60
  }), /*#__PURE__*/_jsxs(HStack, {
57
61
  justify: "space-between",
58
62
  className: "dataviews-view-grid__title-actions",
59
63
  children: [/*#__PURE__*/_jsx(SingleSelectionCheckbox, {
60
64
  item: item,
61
65
  selection: selection,
62
- onSelectionChange: onSelectionChange,
66
+ onChangeSelection: onChangeSelection,
63
67
  getItemId: getItemId,
64
68
  primaryField: primaryField,
65
69
  disabled: !hasBulkAction
66
70
  }), /*#__PURE__*/_jsx(HStack, {
67
71
  className: "dataviews-view-grid__primary-field",
68
- children: primaryField?.render({
69
- item
70
- })
72
+ children: renderedPrimaryField
71
73
  }), /*#__PURE__*/_jsx(ItemActions, {
72
74
  item: item,
73
75
  actions: actions,
@@ -80,27 +82,17 @@ function GridItem({
80
82
  alignment: "top",
81
83
  justify: "flex-start",
82
84
  children: badgeFields.map(field => {
83
- const renderedValue = field.render({
84
- item
85
- });
86
- if (!renderedValue) {
87
- return null;
88
- }
89
85
  return /*#__PURE__*/_jsx(FlexItem, {
90
86
  className: "dataviews-view-grid__field-value",
91
- children: renderedValue
87
+ children: /*#__PURE__*/_jsx(field.render, {
88
+ item: item
89
+ })
92
90
  }, field.id);
93
91
  })
94
92
  }), !!visibleFields?.length && /*#__PURE__*/_jsx(VStack, {
95
93
  className: "dataviews-view-grid__fields",
96
- spacing: 3,
94
+ spacing: 1,
97
95
  children: visibleFields.map(field => {
98
- const renderedValue = field.render({
99
- item
100
- });
101
- if (!renderedValue) {
102
- return null;
103
- }
104
96
  return /*#__PURE__*/_jsx(Flex, {
105
97
  className: clsx('dataviews-view-grid__field', columnFields?.includes(field.id) ? 'is-column' : 'is-row'),
106
98
  gap: 1,
@@ -113,13 +105,15 @@ function GridItem({
113
105
  children: /*#__PURE__*/_jsxs(_Fragment, {
114
106
  children: [/*#__PURE__*/_jsx(FlexItem, {
115
107
  className: "dataviews-view-grid__field-name",
116
- children: field.header
108
+ children: field.label
117
109
  }), /*#__PURE__*/_jsx(FlexItem, {
118
110
  className: "dataviews-view-grid__field-value",
119
111
  style: {
120
112
  maxHeight: 'none'
121
113
  },
122
- children: renderedValue
114
+ children: /*#__PURE__*/_jsx(field.render, {
115
+ item: item
116
+ })
123
117
  })]
124
118
  })
125
119
  }, field.id);
@@ -133,9 +127,10 @@ export default function ViewGrid({
133
127
  fields,
134
128
  getItemId,
135
129
  isLoading,
136
- onSelectionChange,
130
+ onChangeSelection,
137
131
  selection,
138
- view
132
+ view,
133
+ density
139
134
  }) {
140
135
  const mediaField = fields.find(field => field.id === view.layout?.mediaField);
141
136
  const primaryField = fields.find(field => field.id === view.layout?.primaryField);
@@ -157,17 +152,21 @@ export default function ViewGrid({
157
152
  badgeFields: []
158
153
  });
159
154
  const hasData = !!data?.length;
155
+ const gridStyle = density ? {
156
+ gridTemplateColumns: `repeat(${density}, minmax(0, 1fr))`
157
+ } : {};
160
158
  return /*#__PURE__*/_jsxs(_Fragment, {
161
159
  children: [hasData && /*#__PURE__*/_jsx(Grid, {
162
160
  gap: 8,
163
161
  columns: 2,
164
162
  alignment: "top",
165
163
  className: "dataviews-view-grid",
164
+ style: gridStyle,
166
165
  "aria-busy": isLoading,
167
166
  children: data.map(item => {
168
167
  return /*#__PURE__*/_jsx(GridItem, {
169
168
  selection: selection,
170
- onSelectionChange: onSelectionChange,
169
+ onChangeSelection: onChangeSelection,
171
170
  getItemId: getItemId,
172
171
  item: item,
173
172
  actions: actions,
@@ -189,4 +188,4 @@ export default function ViewGrid({
189
188
  })]
190
189
  });
191
190
  }
192
- //# sourceMappingURL=view-grid.js.map
191
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["clsx","__experimentalGrid","Grid","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","__","ItemActions","SingleSelectionCheckbox","useHasAPossibleBulkAction","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","GridItem","selection","onChangeSelection","getItemId","item","actions","mediaField","primaryField","visibleFields","badgeFields","columnFields","hasBulkAction","id","isSelected","includes","renderedMediaField","render","renderedPrimaryField","spacing","className","onClickCapture","event","ctrlKey","metaKey","stopPropagation","preventDefault","filter","itemId","children","justify","disabled","isCompact","length","wrap","alignment","map","field","gap","expanded","style","height","direction","label","maxHeight","ViewGrid","data","fields","isLoading","view","density","find","layout","viewFields","reduce","accumulator","key","push","hasData","gridStyle","gridTemplateColumns","columns"],"sources":["@wordpress/dataviews/src/layouts/grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGrid as Grid,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ItemActions from '../../components/dataviews-item-actions';\nimport SingleSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport { useHasAPossibleBulkAction } from '../../components/dataviews-bulk-actions';\nimport type { Action, NormalizedField, ViewGridProps } from '../../types';\nimport type { SetSelection } from '../../private-types';\n\ninterface GridItemProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\titem: Item;\n\tactions: Action< Item >[];\n\tmediaField?: NormalizedField< Item >;\n\tprimaryField?: NormalizedField< Item >;\n\tvisibleFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\tcolumnFields?: string[];\n}\n\nfunction GridItem< Item >( {\n\tselection,\n\tonChangeSelection,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\tprimaryField,\n\tvisibleFields,\n\tbadgeFields,\n\tcolumnFields,\n}: GridItemProps< Item > ) {\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render item={ item } />\n\t) : null;\n\tconst renderedPrimaryField = primaryField?.render ? (\n\t\t<primaryField.render item={ item } />\n\t) : null;\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 0 }\n\t\t\tkey={ id }\n\t\t\tclassName={ clsx( 'dataviews-view-grid__card', {\n\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t} ) }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tif ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-view-grid__media\">\n\t\t\t\t{ renderedMediaField }\n\t\t\t</div>\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t>\n\t\t\t\t<SingleSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t\t<HStack className=\"dataviews-view-grid__primary-field\">\n\t\t\t\t\t{ renderedPrimaryField }\n\t\t\t\t</HStack>\n\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t</HStack>\n\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\twrap\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t>\n\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<field.render item={ item } />\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ !! visibleFields?.length && (\n\t\t\t\t<VStack className=\"dataviews-view-grid__fields\" spacing={ 1 }>\n\t\t\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-grid__field',\n\t\t\t\t\t\t\t\t\tcolumnFields?.includes( field.id )\n\t\t\t\t\t\t\t\t\t\t? 'is-column'\n\t\t\t\t\t\t\t\t\t\t: 'is-row'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\tdirection={\n\t\t\t\t\t\t\t\t\tcolumnFields?.includes( field.id )\n\t\t\t\t\t\t\t\t\t\t? 'column'\n\t\t\t\t\t\t\t\t\t\t: 'row'\n\t\t\t\t\t\t\t\t}\n\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<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<field.render item={ item } />\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default function ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tselection,\n\tview,\n\tdensity,\n}: ViewGridProps< Item > ) {\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout?.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\tconst viewFields = view.fields || fields.map( ( field ) => field.id );\n\tconst { visibleFields, badgeFields } = fields.reduce(\n\t\t( accumulator: Record< string, NormalizedField< Item >[] >, field ) => {\n\t\t\tif (\n\t\t\t\t! viewFields.includes( field.id ) ||\n\t\t\t\t[\n\t\t\t\t\tview.layout?.mediaField,\n\t\t\t\t\tview?.layout?.primaryField,\n\t\t\t\t].includes( field.id )\n\t\t\t) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( field.id )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'visibleFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ visibleFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst gridStyle = density\n\t\t? { gridTemplateColumns: `repeat(${ density }, minmax(0, 1fr))` }\n\t\t: {};\n\treturn (\n\t\t<>\n\t\t\t{ hasData && (\n\t\t\t\t<Grid\n\t\t\t\t\tgap={ 8 }\n\t\t\t\t\tcolumns={ 2 }\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tclassName=\"dataviews-view-grid\"\n\t\t\t\t\tstyle={ gridStyle }\n\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t>\n\t\t\t\t\t{ data.map( ( item ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\tcolumnFields={ view.layout?.columnFields }\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</Grid>\n\t\t\t) }\n\t\t\t{ ! hasData && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __, isRTL } from '@wordpress/i18n';
5
+ import { blockTable, category, formatListBullets, formatListBulletsRTL } from '@wordpress/icons';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import ViewTable from './table';
11
+ import ViewGrid from './grid';
12
+ import ViewList from './list';
13
+ import { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';
14
+ export const VIEW_LAYOUTS = [{
15
+ type: LAYOUT_TABLE,
16
+ label: __('Table'),
17
+ component: ViewTable,
18
+ icon: blockTable
19
+ }, {
20
+ type: LAYOUT_GRID,
21
+ label: __('Grid'),
22
+ component: ViewGrid,
23
+ icon: category
24
+ }, {
25
+ type: LAYOUT_LIST,
26
+ label: __('List'),
27
+ component: ViewList,
28
+ icon: isRTL() ? formatListBulletsRTL : formatListBullets
29
+ }];
30
+ export function getMandatoryFields(view) {
31
+ if (view.type === 'table') {
32
+ var _view$layout$combined;
33
+ return [view.layout?.primaryField].concat((_view$layout$combined = view.layout?.combinedFields?.flatMap(field => field.children)) !== null && _view$layout$combined !== void 0 ? _view$layout$combined : []).filter(item => !!item);
34
+ }
35
+ if (view.type === 'grid') {
36
+ return [view.layout?.primaryField, view.layout?.mediaField].filter(item => !!item);
37
+ }
38
+ if (view.type === 'list') {
39
+ return [view.layout?.primaryField, view.layout?.mediaField].filter(item => !!item);
40
+ }
41
+ return [];
42
+ }
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","LAYOUT_GRID","LAYOUT_LIST","LAYOUT_TABLE","VIEW_LAYOUTS","type","label","component","icon","getMandatoryFields","view","_view$layout$combined","layout","primaryField","concat","combinedFields","flatMap","field","children","filter","item","mediaField"],"sources":["@wordpress/dataviews/src/layouts/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';\nimport type { View } from '../types';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n\nexport function getMandatoryFields( view: View ): string[] {\n\tif ( view.type === 'table' ) {\n\t\treturn [ view.layout?.primaryField ]\n\t\t\t.concat(\n\t\t\t\tview.layout?.combinedFields?.flatMap(\n\t\t\t\t\t( field ) => field.children\n\t\t\t\t) ?? []\n\t\t\t)\n\t\t\t.filter( ( item ): item is string => !! item );\n\t}\n\n\tif ( view.type === 'grid' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\tif ( view.type === 'list' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\treturn [];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,SAAS;AAC/B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,SAASC,WAAW,EAAEC,WAAW,EAAEC,YAAY,QAAQ,cAAc;AAGrE,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEF,YAAY;EAClBG,KAAK,EAAEd,EAAE,CAAE,OAAQ,CAAC;EACpBe,SAAS,EAAET,SAAS;EACpBU,IAAI,EAAEd;AACP,CAAC,EACD;EACCW,IAAI,EAAEJ,WAAW;EACjBK,KAAK,EAAEd,EAAE,CAAE,MAAO,CAAC;EACnBe,SAAS,EAAER,QAAQ;EACnBS,IAAI,EAAEb;AACP,CAAC,EACD;EACCU,IAAI,EAAEH,WAAW;EACjBI,KAAK,EAAEd,EAAE,CAAE,MAAO,CAAC;EACnBe,SAAS,EAAEP,QAAQ;EACnBQ,IAAI,EAAEf,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,CACD;AAED,OAAO,SAASa,kBAAkBA,CAAEC,IAAU,EAAa;EAC1D,IAAKA,IAAI,CAACL,IAAI,KAAK,OAAO,EAAG;IAAA,IAAAM,qBAAA;IAC5B,OAAO,CAAED,IAAI,CAACE,MAAM,EAAEC,YAAY,CAAE,CAClCC,MAAM,EAAAH,qBAAA,GACND,IAAI,CAACE,MAAM,EAAEG,cAAc,EAAEC,OAAO,CACjCC,KAAK,IAAMA,KAAK,CAACC,QACpB,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,EACN,CAAC,CACAQ,MAAM,CAAIC,IAAI,IAAsB,CAAC,CAAEA,IAAK,CAAC;EAChD;EAEA,IAAKV,IAAI,CAACL,IAAI,KAAK,MAAM,EAAG;IAC3B,OAAO,CAAEK,IAAI,CAACE,MAAM,EAAEC,YAAY,EAAEH,IAAI,CAACE,MAAM,EAAES,UAAU,CAAE,CAACF,MAAM,CACjEC,IAAI,IAAsB,CAAC,CAAEA,IAChC,CAAC;EACF;EAEA,IAAKV,IAAI,CAACL,IAAI,KAAK,MAAM,EAAG;IAC3B,OAAO,CAAEK,IAAI,CAACE,MAAM,EAAEC,YAAY,EAAEH,IAAI,CAACE,MAAM,EAAES,UAAU,CAAE,CAACF,MAAM,CACjEC,IAAI,IAAsB,CAAC,CAAEA,IAChC,CAAC;EACF;EAEA,OAAO,EAAE;AACV","ignoreList":[]}
@@ -18,8 +18,8 @@ import { useRegistry } from '@wordpress/data';
18
18
  /**
19
19
  * Internal dependencies
20
20
  */
21
- import { unlock } from './lock-unlock';
22
- import { ActionsDropdownMenuGroup, ActionModal } from './item-actions';
21
+ import { unlock } from '../../lock-unlock';
22
+ import { ActionsDropdownMenuGroup, ActionModal } from '../../components/dataviews-item-actions';
23
23
  import { jsx as _jsx } from "react/jsx-runtime";
24
24
  import { jsxs as _jsxs } from "react/jsx-runtime";
25
25
  const {
@@ -75,6 +75,14 @@ function ListItem({
75
75
  }, [actions, item]);
76
76
  const [isModalOpen, setIsModalOpen] = useState(false);
77
77
  const primaryActionLabel = primaryAction && (typeof primaryAction.label === 'string' ? primaryAction.label : primaryAction.label([item]));
78
+ const renderedMediaField = mediaField?.render ? /*#__PURE__*/_jsx(mediaField.render, {
79
+ item: item
80
+ }) : /*#__PURE__*/_jsx("div", {
81
+ className: "dataviews-view-list__media-placeholder"
82
+ });
83
+ const renderedPrimaryField = primaryField?.render ? /*#__PURE__*/_jsx(primaryField.render, {
84
+ item: item
85
+ }) : null;
78
86
  return /*#__PURE__*/_jsx(CompositeRow, {
79
87
  ref: itemRef,
80
88
  render: /*#__PURE__*/_jsx("li", {}),
@@ -107,19 +115,14 @@ function ListItem({
107
115
  alignment: "flex-start",
108
116
  children: [/*#__PURE__*/_jsx("div", {
109
117
  className: "dataviews-view-list__media-wrapper",
110
- children: mediaField?.render({
111
- item
112
- }) || /*#__PURE__*/_jsx("div", {
113
- className: "dataviews-view-list__media-placeholder"
114
- })
118
+ children: renderedMediaField
115
119
  }), /*#__PURE__*/_jsxs(VStack, {
116
- spacing: 0,
120
+ spacing: 1,
121
+ className: "dataviews-view-list__field-wrapper",
117
122
  children: [/*#__PURE__*/_jsx("span", {
118
123
  className: "dataviews-view-list__primary-field",
119
124
  id: labelId,
120
- children: primaryField?.render({
121
- item
122
- })
125
+ children: renderedPrimaryField
123
126
  }), /*#__PURE__*/_jsx("div", {
124
127
  className: "dataviews-view-list__fields",
125
128
  id: descriptionId,
@@ -128,11 +131,11 @@ function ListItem({
128
131
  children: [/*#__PURE__*/_jsx(VisuallyHidden, {
129
132
  as: "span",
130
133
  className: "dataviews-view-list__field-label",
131
- children: field.header
134
+ children: field.label
132
135
  }), /*#__PURE__*/_jsx("span", {
133
136
  className: "dataviews-view-list__field-value",
134
- children: field.render({
135
- item
137
+ children: /*#__PURE__*/_jsx(field.render, {
138
+ item: item
136
139
  })
137
140
  })]
138
141
  }, field.id))
@@ -141,7 +144,7 @@ function ListItem({
141
144
  })
142
145
  })
143
146
  }), eligibleActions?.length > 0 && /*#__PURE__*/_jsxs(HStack, {
144
- spacing: 1,
147
+ spacing: 3,
145
148
  justify: "flex-end",
146
149
  className: "dataviews-view-list__item-actions",
147
150
  style: {
@@ -156,7 +159,7 @@ function ListItem({
156
159
  label: primaryActionLabel,
157
160
  icon: primaryAction.icon,
158
161
  isDestructive: primaryAction.isDestructive,
159
- size: "compact",
162
+ size: "small",
160
163
  onClick: () => setIsModalOpen(true)
161
164
  }),
162
165
  children: isModalOpen && /*#__PURE__*/_jsx(ActionModal, {
@@ -173,7 +176,7 @@ function ListItem({
173
176
  label: primaryActionLabel,
174
177
  icon: primaryAction.icon,
175
178
  isDestructive: primaryAction.isDestructive,
176
- size: "compact",
179
+ size: "small",
177
180
  onClick: () => {
178
181
  primaryAction.callback([item], {
179
182
  registry
@@ -187,7 +190,7 @@ function ListItem({
187
190
  trigger: /*#__PURE__*/_jsx(CompositeItem, {
188
191
  store: store,
189
192
  render: /*#__PURE__*/_jsx(Button, {
190
- size: "compact",
193
+ size: "small",
191
194
  icon: moreVertical,
192
195
  label: __('Actions'),
193
196
  accessibleWhenDisabled: true,
@@ -224,7 +227,7 @@ export default function ViewList(props) {
224
227
  fields,
225
228
  getItemId,
226
229
  isLoading,
227
- onSelectionChange,
230
+ onChangeSelection,
228
231
  selection,
229
232
  view
230
233
  } = props;
@@ -234,7 +237,7 @@ export default function ViewList(props) {
234
237
  const primaryField = fields.find(field => field.id === view.layout?.primaryField);
235
238
  const viewFields = view.fields || fields.map(field => field.id);
236
239
  const visibleFields = fields.filter(field => viewFields.includes(field.id) && ![view.layout?.primaryField, view.layout?.mediaField].includes(field.id));
237
- const onSelect = item => onSelectionChange([getItemId(item)]);
240
+ const onSelect = item => onChangeSelection([getItemId(item)]);
238
241
  const getItemDomId = useCallback(item => item ? `${baseId}-${getItemId(item)}` : undefined, [baseId, getItemId]);
239
242
  const store = useCompositeStore({
240
243
  defaultActiveId: getItemDomId(selectedItem)
@@ -286,4 +289,4 @@ export default function ViewList(props) {
286
289
  })
287
290
  });
288
291
  }
289
- //# sourceMappingURL=view-list.js.map
292
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["clsx","useInstanceId","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","useCallback","useEffect","useMemo","useRef","useState","__","moreVertical","useRegistry","unlock","ActionsDropdownMenuGroup","ActionModal","jsx","_jsx","jsxs","_jsxs","useCompositeStoreV2","useCompositeStore","CompositeV2","Composite","CompositeItemV2","CompositeItem","CompositeRowV2","CompositeRow","DropdownMenuV2","DropdownMenu","ListItem","actions","id","isSelected","item","mediaField","onSelect","primaryField","store","visibleFields","registry","itemRef","labelId","descriptionId","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","current","scrollIntoView","behavior","block","inline","primaryAction","eligibleActions","_eligibleActions","filter","action","isEligible","_primaryActions","isPrimary","icon","isModalOpen","setIsModalOpen","primaryActionLabel","label","renderedMediaField","render","className","renderedPrimaryField","ref","role","onMouseEnter","onMouseLeave","children","alignment","spacing","onClick","justify","map","field","as","length","style","flexShrink","width","isDestructive","size","items","closeModal","callback","trigger","accessibleWhenDisabled","disabled","onKeyDown","event","key","preventDefault","move","down","up","placement","ViewList","props","data","fields","getItemId","isLoading","onChangeSelection","selection","view","baseId","selectedItem","findLast","includes","find","layout","viewFields","getItemDomId","undefined","defaultActiveId","isActiveIdInList","state","some","activeId","hasData"],"sources":["@wordpress/dataviews/src/layouts/list/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n// Import CompositeStore type, which is not exported from @wordpress/components.\n// eslint-disable-next-line no-restricted-imports\nimport type { CompositeStore } from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tActionsDropdownMenuGroup,\n\tActionModal,\n} from '../../components/dataviews-item-actions';\nimport type { Action, NormalizedField, ViewListProps } from '../../types';\n\ninterface ListViewItemProps< Item > {\n\tactions: Action< Item >[];\n\tid?: string;\n\tisSelected: boolean;\n\titem: Item;\n\tmediaField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\tprimaryField?: NormalizedField< Item >;\n\tstore: CompositeStore;\n\tvisibleFields: NormalizedField< Item >[];\n}\n\nconst {\n\tuseCompositeStoreV2: useCompositeStore,\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tCompositeRowV2: CompositeRow,\n\tDropdownMenuV2: DropdownMenu,\n} = unlock( componentsPrivateApis );\n\nfunction ListItem< Item >( {\n\tactions,\n\tid,\n\tisSelected,\n\titem,\n\tmediaField,\n\tonSelect,\n\tprimaryField,\n\tstore,\n\tvisibleFields,\n}: ListViewItemProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst itemRef = useRef< HTMLElement >( null );\n\tconst labelId = `${ id }-label`;\n\tconst descriptionId = `${ id }-description`;\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions?.[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst primaryActionLabel =\n\t\tprimaryAction &&\n\t\t( typeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] ) );\n\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render item={ item } />\n\t) : (\n\t\t<div className=\"dataviews-view-list__media-placeholder\"></div>\n\t);\n\n\tconst renderedPrimaryField = primaryField?.render ? (\n\t\t<primaryField.render item={ item } />\n\t) : null;\n\n\treturn (\n\t\t<CompositeRow\n\t\t\tref={ itemRef }\n\t\t\trender={ <li /> }\n\t\t\trole=\"row\"\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t>\n\t\t\t<HStack\n\t\t\t\tclassName=\"dataviews-view-list__item-wrapper\"\n\t\t\t\talignment=\"center\"\n\t\t\t\tspacing={ 0 }\n\t\t\t>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\trender={ <div /> }\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__primary-field\"\n\t\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ renderedPrimaryField }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\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{ field.label }\n\t\t\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t\t\t<field.render item={ item } />\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</CompositeItem>\n\t\t\t\t</div>\n\t\t\t\t{ eligibleActions?.length > 0 && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item-actions\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tflexShrink: '0',\n\t\t\t\t\t\t\twidth: 'auto',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ primaryAction && 'RenderModal' in primaryAction && (\n\t\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryActionLabel }\n\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( true )\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>\n\t\t\t\t\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\t\t\t\t\tcloseModal={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false )\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</CompositeItem>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ primaryAction &&\n\t\t\t\t\t\t\t! ( 'RenderModal' in primaryAction ) && (\n\t\t\t\t\t\t\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryActionLabel }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\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\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.callback(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ item ],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ registry }\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/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={ ( event: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey: string;\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreventDefault: () => void;\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\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'ArrowDown'\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// Prevent the default behaviour (open dropdown menu) and go down.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.down()\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\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key === 'ArrowUp'\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// Prevent the default behavior (open dropdown menu) and go up.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.up()\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/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</CompositeRow>\n\t);\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout?.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\tconst viewFields = view.fields || fields.map( ( field ) => field.id );\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\tviewFields.includes( field.id ) &&\n\t\t\t! [ view.layout?.primaryField, view.layout?.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst getItemDomId = useCallback(\n\t\t( item?: Item ) =>\n\t\t\titem ? `${ baseId }-${ getItemId( item ) }` : undefined,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst store = useCompositeStore( {\n\t\tdefaultActiveId: getItemDomId( selectedItem ),\n\t} );\n\n\t// Manage focused item, when the active one is removed from the list.\n\tconst isActiveIdInList = store.useState(\n\t\t( state: { items: any[]; activeId: any } ) =>\n\t\t\tstate.items.some(\n\t\t\t\t( item: { id: any } ) => item.id === state.activeId\n\t\t\t)\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isActiveIdInList ) {\n\t\t\t// Prefer going down, except if there is no item below (last item), then go up (last item in list).\n\t\t\tif ( store.down() ) {\n\t\t\t\tstore.move( store.down() );\n\t\t\t} else if ( store.up() ) {\n\t\t\t\tstore.move( store.up() );\n\t\t\t}\n\t\t}\n\t}, [ isActiveIdInList ] );\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Composite\n\t\t\tid={ baseId }\n\t\t\trender={ <ul /> }\n\t\t\tclassName=\"dataviews-view-list\"\n\t\t\trole=\"grid\"\n\t\t\tstore={ store }\n\t\t>\n\t\t\t{ data.map( ( item ) => {\n\t\t\t\tconst id = getItemDomId( item );\n\t\t\t\treturn (\n\t\t\t\t\t<ListItem\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}