@wordpress/edit-site 5.23.0 → 5.24.1

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 (320) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +56 -38
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/block-editor/site-editor-canvas.js +7 -2
  5. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  6. package/build/components/dataviews/add-filter.js +21 -20
  7. package/build/components/dataviews/add-filter.js.map +1 -1
  8. package/build/components/dataviews/constants.js +14 -0
  9. package/build/components/dataviews/constants.js.map +1 -0
  10. package/build/components/dataviews/dataviews.js +9 -7
  11. package/build/components/dataviews/dataviews.js.map +1 -1
  12. package/build/components/dataviews/filter-summary.js +62 -0
  13. package/build/components/dataviews/filter-summary.js.map +1 -0
  14. package/build/components/dataviews/filters.js +15 -30
  15. package/build/components/dataviews/filters.js.map +1 -1
  16. package/build/components/dataviews/item-actions.js +84 -30
  17. package/build/components/dataviews/item-actions.js.map +1 -1
  18. package/build/components/dataviews/pagination.js +4 -0
  19. package/build/components/dataviews/pagination.js.map +1 -1
  20. package/build/components/dataviews/view-actions.js +24 -24
  21. package/build/components/dataviews/view-actions.js.map +1 -1
  22. package/build/components/dataviews/view-grid.js +48 -25
  23. package/build/components/dataviews/view-grid.js.map +1 -1
  24. package/build/components/dataviews/view-list.js +28 -33
  25. package/build/components/dataviews/view-list.js.map +1 -1
  26. package/build/components/editor/index.js +23 -27
  27. package/build/components/editor/index.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  29. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/index.js +15 -2
  31. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  32. package/build/components/global-styles/header.js +4 -2
  33. package/build/components/global-styles/header.js.map +1 -1
  34. package/build/components/global-styles/screen-block-list.js +22 -16
  35. package/build/components/global-styles/screen-block-list.js.map +1 -1
  36. package/build/components/global-styles/screen-revisions/index.js +26 -5
  37. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  38. package/build/components/global-styles/screen-revisions/revisions-buttons.js +52 -24
  39. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  40. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +9 -3
  41. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  42. package/build/components/global-styles/ui.js +28 -36
  43. package/build/components/global-styles/ui.js.map +1 -1
  44. package/build/components/header-edit-mode/document-actions/index.js +21 -16
  45. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  46. package/build/components/header-edit-mode/index.js +2 -1
  47. package/build/components/header-edit-mode/index.js.map +1 -1
  48. package/build/components/header-edit-mode/more-menu/index.js +1 -1
  49. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  50. package/build/components/list/added-by.js +43 -54
  51. package/build/components/list/added-by.js.map +1 -1
  52. package/build/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +9 -8
  53. package/build/components/page-content-focus-notifications/back-to-page-notification.js.map +1 -0
  54. package/build/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  55. package/build/components/page-content-focus-notifications/edit-template-notification.js.map +1 -0
  56. package/build/components/page-content-focus-notifications/index.js +22 -0
  57. package/build/components/page-content-focus-notifications/index.js.map +1 -0
  58. package/build/components/page-pages/index.js +9 -15
  59. package/build/components/page-pages/index.js.map +1 -1
  60. package/build/components/page-patterns/use-patterns.js +1 -1
  61. package/build/components/page-patterns/use-patterns.js.map +1 -1
  62. package/build/components/page-templates/dataviews-templates.js +166 -51
  63. package/build/components/page-templates/dataviews-templates.js.map +1 -1
  64. package/build/components/preferences-modal/index.js +1 -1
  65. package/build/components/preferences-modal/index.js.map +1 -1
  66. package/build/components/save-button/index.js +9 -6
  67. package/build/components/save-button/index.js.map +1 -1
  68. package/build/components/save-hub/index.js +14 -0
  69. package/build/components/save-hub/index.js.map +1 -1
  70. package/build/components/sidebar-dataviews/custom-dataviews-list.js +3 -1
  71. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  72. package/build/components/sidebar-dataviews/default-views.js +7 -2
  73. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  74. package/build/components/sidebar-edit-mode/index.js +6 -5
  75. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  76. package/build/components/sidebar-edit-mode/page-panels/edit-template.js +15 -26
  77. package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  78. package/build/components/sidebar-edit-mode/page-panels/hooks.js +22 -8
  79. package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
  80. package/build/components/sidebar-edit-mode/page-panels/page-status.js +8 -5
  81. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  82. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +4 -8
  83. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  84. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +2 -2
  85. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
  86. package/build/components/sidebar-edit-mode/settings-header/index.js +10 -6
  87. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  88. package/build/components/sidebar-navigation-screen-page/index.js +23 -4
  89. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  90. package/build/components/style-book/index.js +22 -12
  91. package/build/components/style-book/index.js.map +1 -1
  92. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +41 -9
  93. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  94. package/build/components/welcome-guide/page.js +2 -2
  95. package/build/components/welcome-guide/page.js.map +1 -1
  96. package/build/components/welcome-guide/template.js +6 -3
  97. package/build/components/welcome-guide/template.js.map +1 -1
  98. package/build/hooks/commands/use-edit-mode-commands.js +24 -14
  99. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  100. package/build/store/actions.js +4 -1
  101. package/build/store/actions.js.map +1 -1
  102. package/build/store/private-actions.js +2 -27
  103. package/build/store/private-actions.js.map +1 -1
  104. package/build/store/private-selectors.js +0 -23
  105. package/build/store/private-selectors.js.map +1 -1
  106. package/build/store/reducer.js +1 -40
  107. package/build/store/reducer.js.map +1 -1
  108. package/build/store/selectors.js +8 -4
  109. package/build/store/selectors.js.map +1 -1
  110. package/build/utils/constants.js +1 -12
  111. package/build/utils/constants.js.map +1 -1
  112. package/build-module/components/actions/index.js +55 -36
  113. package/build-module/components/actions/index.js.map +1 -1
  114. package/build-module/components/block-editor/site-editor-canvas.js +7 -2
  115. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  116. package/build-module/components/dataviews/add-filter.js +21 -20
  117. package/build-module/components/dataviews/add-filter.js.map +1 -1
  118. package/build-module/components/dataviews/constants.js +6 -0
  119. package/build-module/components/dataviews/constants.js.map +1 -0
  120. package/build-module/components/dataviews/dataviews.js +9 -7
  121. package/build-module/components/dataviews/dataviews.js.map +1 -1
  122. package/build-module/components/dataviews/filter-summary.js +55 -0
  123. package/build-module/components/dataviews/filter-summary.js.map +1 -0
  124. package/build-module/components/dataviews/filters.js +15 -28
  125. package/build-module/components/dataviews/filters.js.map +1 -1
  126. package/build-module/components/dataviews/item-actions.js +84 -30
  127. package/build-module/components/dataviews/item-actions.js.map +1 -1
  128. package/build-module/components/dataviews/pagination.js +4 -0
  129. package/build-module/components/dataviews/pagination.js.map +1 -1
  130. package/build-module/components/dataviews/view-actions.js +24 -24
  131. package/build-module/components/dataviews/view-actions.js.map +1 -1
  132. package/build-module/components/dataviews/view-grid.js +49 -26
  133. package/build-module/components/dataviews/view-grid.js.map +1 -1
  134. package/build-module/components/dataviews/view-list.js +28 -33
  135. package/build-module/components/dataviews/view-list.js.map +1 -1
  136. package/build-module/components/editor/index.js +26 -30
  137. package/build-module/components/editor/index.js.map +1 -1
  138. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  139. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -1
  140. package/build-module/components/global-styles/font-library-modal/utils/index.js +14 -2
  141. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  142. package/build-module/components/global-styles/header.js +4 -2
  143. package/build-module/components/global-styles/header.js.map +1 -1
  144. package/build-module/components/global-styles/screen-block-list.js +23 -17
  145. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  146. package/build-module/components/global-styles/screen-revisions/index.js +27 -6
  147. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  148. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +51 -24
  149. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  150. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +9 -3
  151. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  152. package/build-module/components/global-styles/ui.js +28 -36
  153. package/build-module/components/global-styles/ui.js.map +1 -1
  154. package/build-module/components/header-edit-mode/document-actions/index.js +21 -16
  155. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  156. package/build-module/components/header-edit-mode/index.js +2 -1
  157. package/build-module/components/header-edit-mode/index.js.map +1 -1
  158. package/build-module/components/header-edit-mode/more-menu/index.js +1 -1
  159. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  160. package/build-module/components/list/added-by.js +44 -55
  161. package/build-module/components/list/added-by.js.map +1 -1
  162. package/build-module/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +9 -8
  163. package/build-module/components/page-content-focus-notifications/back-to-page-notification.js.map +1 -0
  164. package/build-module/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  165. package/build-module/components/page-content-focus-notifications/edit-template-notification.js.map +1 -0
  166. package/build-module/components/page-content-focus-notifications/index.js +14 -0
  167. package/build-module/components/page-content-focus-notifications/index.js.map +1 -0
  168. package/build-module/components/page-pages/index.js +10 -16
  169. package/build-module/components/page-pages/index.js.map +1 -1
  170. package/build-module/components/page-patterns/use-patterns.js +1 -1
  171. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  172. package/build-module/components/page-templates/dataviews-templates.js +168 -53
  173. package/build-module/components/page-templates/dataviews-templates.js.map +1 -1
  174. package/build-module/components/preferences-modal/index.js +1 -1
  175. package/build-module/components/preferences-modal/index.js.map +1 -1
  176. package/build-module/components/save-button/index.js +11 -8
  177. package/build-module/components/save-button/index.js.map +1 -1
  178. package/build-module/components/save-hub/index.js +14 -0
  179. package/build-module/components/save-hub/index.js.map +1 -1
  180. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +3 -1
  181. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  182. package/build-module/components/sidebar-dataviews/default-views.js +7 -2
  183. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  184. package/build-module/components/sidebar-edit-mode/index.js +6 -5
  185. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  186. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +16 -27
  187. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  188. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +21 -7
  189. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
  190. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +9 -6
  191. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  192. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +5 -9
  193. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  194. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +3 -3
  195. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
  196. package/build-module/components/sidebar-edit-mode/settings-header/index.js +10 -6
  197. package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  198. package/build-module/components/sidebar-navigation-screen-page/index.js +23 -4
  199. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  200. package/build-module/components/style-book/index.js +22 -12
  201. package/build-module/components/style-book/index.js.map +1 -1
  202. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +41 -9
  203. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  204. package/build-module/components/welcome-guide/page.js +2 -2
  205. package/build-module/components/welcome-guide/page.js.map +1 -1
  206. package/build-module/components/welcome-guide/template.js +6 -3
  207. package/build-module/components/welcome-guide/template.js.map +1 -1
  208. package/build-module/hooks/commands/use-edit-mode-commands.js +24 -14
  209. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  210. package/build-module/store/actions.js +4 -1
  211. package/build-module/store/actions.js.map +1 -1
  212. package/build-module/store/private-actions.js +1 -25
  213. package/build-module/store/private-actions.js.map +1 -1
  214. package/build-module/store/private-selectors.js +0 -22
  215. package/build-module/store/private-selectors.js.map +1 -1
  216. package/build-module/store/reducer.js +1 -38
  217. package/build-module/store/reducer.js.map +1 -1
  218. package/build-module/store/selectors.js +8 -4
  219. package/build-module/store/selectors.js.map +1 -1
  220. package/build-module/utils/constants.js +0 -10
  221. package/build-module/utils/constants.js.map +1 -1
  222. package/build-style/style-rtl.css +152 -62
  223. package/build-style/style.css +152 -62
  224. package/package.json +41 -41
  225. package/src/components/actions/index.js +76 -48
  226. package/src/components/block-editor/site-editor-canvas.js +8 -2
  227. package/src/components/dataviews/README.md +14 -11
  228. package/src/components/dataviews/add-filter.js +21 -24
  229. package/src/components/dataviews/constants.js +5 -0
  230. package/src/components/dataviews/dataviews.js +10 -10
  231. package/src/components/dataviews/filter-summary.js +79 -0
  232. package/src/components/dataviews/filters.js +18 -35
  233. package/src/components/dataviews/item-actions.js +106 -42
  234. package/src/components/dataviews/pagination.js +4 -0
  235. package/src/components/dataviews/style.scss +84 -8
  236. package/src/components/dataviews/view-actions.js +39 -41
  237. package/src/components/dataviews/view-grid.js +63 -38
  238. package/src/components/dataviews/view-list.js +50 -57
  239. package/src/components/editor/index.js +18 -34
  240. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  241. package/src/components/global-styles/font-library-modal/utils/index.js +20 -9
  242. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +46 -15
  243. package/src/components/global-styles/font-library-modal/utils/test/wpKebabCase.spec.js +28 -0
  244. package/src/components/global-styles/header.js +2 -1
  245. package/src/components/global-styles/screen-block-list.js +37 -26
  246. package/src/components/global-styles/screen-revisions/index.js +39 -10
  247. package/src/components/global-styles/screen-revisions/revisions-buttons.js +65 -45
  248. package/src/components/global-styles/screen-revisions/style.scss +52 -28
  249. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +15 -6
  250. package/src/components/global-styles/style.scss +0 -11
  251. package/src/components/global-styles/ui.js +59 -74
  252. package/src/components/header-edit-mode/document-actions/index.js +20 -18
  253. package/src/components/header-edit-mode/index.js +1 -0
  254. package/src/components/header-edit-mode/more-menu/index.js +1 -1
  255. package/src/components/list/added-by.js +23 -63
  256. package/src/components/list/style.scss +11 -13
  257. package/src/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +12 -13
  258. package/src/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  259. package/src/components/page-content-focus-notifications/index.js +14 -0
  260. package/src/components/page-pages/index.js +15 -20
  261. package/src/components/page-patterns/use-patterns.js +1 -1
  262. package/src/components/page-templates/dataviews-templates.js +169 -48
  263. package/src/components/page-templates/style.scss +13 -0
  264. package/src/components/preferences-modal/index.js +1 -1
  265. package/src/components/save-button/index.js +37 -24
  266. package/src/components/save-hub/index.js +15 -0
  267. package/src/components/save-hub/style.scss +7 -0
  268. package/src/components/sidebar-dataviews/custom-dataviews-list.js +2 -0
  269. package/src/components/sidebar-dataviews/default-views.js +7 -2
  270. package/src/components/sidebar-dataviews/style.scss +7 -0
  271. package/src/components/sidebar-edit-mode/index.js +13 -9
  272. package/src/components/sidebar-edit-mode/page-panels/edit-template.js +33 -52
  273. package/src/components/sidebar-edit-mode/page-panels/hooks.js +20 -9
  274. package/src/components/sidebar-edit-mode/page-panels/page-status.js +6 -6
  275. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +8 -9
  276. package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +3 -3
  277. package/src/components/sidebar-edit-mode/page-panels/style.scss +9 -19
  278. package/src/components/sidebar-edit-mode/settings-header/index.js +8 -9
  279. package/src/components/sidebar-navigation-screen/style.scss +1 -0
  280. package/src/components/sidebar-navigation-screen-page/index.js +24 -3
  281. package/src/components/sidebar-navigation-screen-template/style.scss +6 -1
  282. package/src/components/style-book/index.js +48 -35
  283. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +69 -17
  284. package/src/components/welcome-guide/page.js +2 -2
  285. package/src/components/welcome-guide/template.js +4 -2
  286. package/src/hooks/commands/use-edit-mode-commands.js +22 -16
  287. package/src/store/actions.js +5 -1
  288. package/src/store/private-actions.js +1 -24
  289. package/src/store/private-selectors.js +0 -22
  290. package/src/store/reducer.js +0 -39
  291. package/src/store/selectors.js +12 -4
  292. package/src/store/test/actions.js +3 -32
  293. package/src/store/test/reducer.js +0 -62
  294. package/src/store/test/selectors.js +0 -35
  295. package/src/style.scss +1 -0
  296. package/src/utils/constants.js +0 -10
  297. package/build/components/dataviews/in-filter.js +0 -51
  298. package/build/components/dataviews/in-filter.js.map +0 -1
  299. package/build/components/page-content-focus-manager/back-to-page-notification.js.map +0 -1
  300. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -63
  301. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +0 -1
  302. package/build/components/page-content-focus-manager/edit-template-notification.js.map +0 -1
  303. package/build/components/page-content-focus-manager/index.js +0 -61
  304. package/build/components/page-content-focus-manager/index.js.map +0 -1
  305. package/build/components/sidebar-edit-mode/page-panels/publish-date.js +0 -87
  306. package/build/components/sidebar-edit-mode/page-panels/publish-date.js.map +0 -1
  307. package/build-module/components/dataviews/in-filter.js +0 -42
  308. package/build-module/components/dataviews/in-filter.js.map +0 -1
  309. package/build-module/components/page-content-focus-manager/back-to-page-notification.js.map +0 -1
  310. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -56
  311. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +0 -1
  312. package/build-module/components/page-content-focus-manager/edit-template-notification.js.map +0 -1
  313. package/build-module/components/page-content-focus-manager/index.js +0 -52
  314. package/build-module/components/page-content-focus-manager/index.js.map +0 -1
  315. package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js +0 -80
  316. package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js.map +0 -1
  317. package/src/components/dataviews/in-filter.js +0 -63
  318. package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -57
  319. package/src/components/page-content-focus-manager/index.js +0 -51
  320. package/src/components/sidebar-edit-mode/page-panels/publish-date.js +0 -94
@@ -1,8 +1,8 @@
1
1
  .dataviews-wrapper {
2
2
  width: 100%;
3
- height: 100%;
3
+ height: calc(100% - #{$grid-unit-40} * 2);
4
4
  overflow: auto;
5
- padding: $grid-unit-40;
5
+ padding: $grid-unit-40 $grid-unit-40 0;
6
6
 
7
7
  > div {
8
8
  min-height: 100%;
@@ -11,6 +11,15 @@
11
11
 
12
12
  .dataviews-pagination {
13
13
  margin-top: auto;
14
+ position: sticky;
15
+ bottom: 0;
16
+ background-color: $white;
17
+ padding: $grid-unit-20 0;
18
+ border-top: $border-width solid $gray-200;
19
+ }
20
+
21
+ .dataviews-filters-options {
22
+ margin: $grid-unit-40 0 $grid-unit-20;
14
23
  }
15
24
 
16
25
  .dataviews-list-view {
@@ -19,6 +28,7 @@
19
28
  border-color: inherit;
20
29
  border-collapse: collapse;
21
30
  position: relative;
31
+
22
32
  a {
23
33
  text-decoration: none;
24
34
  }
@@ -37,16 +47,82 @@
37
47
  }
38
48
  tr {
39
49
  border-bottom: 1px solid $gray-100;
50
+
51
+ &:last-child {
52
+ border-bottom: 0;
53
+ }
54
+ }
55
+ thead {
56
+ tr {
57
+ border: 0;
58
+ }
59
+ th {
60
+ position: sticky;
61
+ top: - #{$grid-unit-40}; // Offset the container padding
62
+ background-color: $white;
63
+ box-shadow: inset 0 -#{$border-width} 0 $gray-200;
64
+ }
40
65
  }
41
66
  }
42
67
 
43
- .dataviews-view-grid__media {
44
- width: 100%;
45
- min-height: 200px;
68
+ .dataviews-grid-view {
69
+ margin-bottom: $grid-unit-30;
70
+ grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
71
+
72
+ @include break-xlarge() {
73
+ grid-template-columns: repeat(3, minmax(0, 1fr)) !important; // Todo: eliminate !important dependency
74
+ }
75
+
76
+ @include break-huge() {
77
+ grid-template-columns: repeat(4, minmax(0, 1fr)) !important; // Todo: eliminate !important dependency
78
+ }
46
79
 
47
- > * {
48
- max-width: 100%;
49
- object-fit: cover;
80
+ .dataviews-view-grid__card {
81
+ h3 { // Todo: A better way to target this
82
+ white-space: nowrap;
83
+ overflow: hidden;
84
+ text-overflow: ellipsis;
85
+ }
86
+ }
87
+
88
+ .dataviews-view-grid__media {
89
+ width: 100%;
90
+ min-height: 200px;
91
+ aspect-ratio: 1/1;
92
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
93
+ border-radius: $radius-block-ui * 2;
94
+ overflow: hidden;
95
+
96
+ > * {
97
+ object-fit: cover;
98
+ width: 100%;
99
+ height: 100%;
100
+ }
101
+ }
102
+
103
+ .dataviews-view-grid__title {
104
+ min-height: $grid-unit-30;
105
+
106
+ a {
107
+ color: $gray-900;
108
+ text-decoration: none;
109
+ font-weight: 500;
110
+ }
111
+ }
112
+
113
+ .dataviews-view-grid__fields {
114
+ position: relative;
115
+ font-size: 12px;
116
+ line-height: 16px;
117
+
118
+ .dataviews-view-grid__field {
119
+ .dataviews-view-grid__field-header {
120
+ color: $gray-700;
121
+ }
122
+ .dataviews-view-grid__field-value {
123
+ color: $gray-900;
124
+ }
125
+ }
50
126
  }
51
127
  }
52
128
 
@@ -23,11 +23,11 @@ import { __ } from '@wordpress/i18n';
23
23
  import { unlock } from '../../lock-unlock';
24
24
 
25
25
  const {
26
- DropdownMenuV2,
27
- DropdownMenuGroupV2,
28
- DropdownMenuItemV2,
29
- DropdownSubMenuV2,
30
- DropdownSubMenuTriggerV2,
26
+ DropdownMenuV2: DropdownMenu,
27
+ DropdownMenuGroupV2: DropdownMenuGroup,
28
+ DropdownMenuItemV2: DropdownMenuItem,
29
+ DropdownSubMenuV2: DropdownSubMenu,
30
+ DropdownSubMenuTriggerV2: DropdownSubMenuTrigger,
31
31
  } = unlock( componentsPrivateApis );
32
32
 
33
33
  const availableViews = [
@@ -57,9 +57,9 @@ function ViewTypeMenu( { view, onChangeView, supportedLayouts } ) {
57
57
  }
58
58
  const activeView = _availableViews.find( ( v ) => view.type === v.id );
59
59
  return (
60
- <DropdownSubMenuV2
60
+ <DropdownSubMenu
61
61
  trigger={
62
- <DropdownSubMenuTriggerV2
62
+ <DropdownSubMenuTrigger
63
63
  suffix={
64
64
  <>
65
65
  { activeView.label }
@@ -68,12 +68,12 @@ function ViewTypeMenu( { view, onChangeView, supportedLayouts } ) {
68
68
  }
69
69
  >
70
70
  { __( 'Layout' ) }
71
- </DropdownSubMenuTriggerV2>
71
+ </DropdownSubMenuTrigger>
72
72
  }
73
73
  >
74
74
  { _availableViews.map( ( availableView ) => {
75
75
  return (
76
- <DropdownMenuItemV2
76
+ <DropdownMenuItem
77
77
  key={ availableView.id }
78
78
  prefix={
79
79
  availableView.id === view.type && (
@@ -89,19 +89,19 @@ function ViewTypeMenu( { view, onChangeView, supportedLayouts } ) {
89
89
  role="menuitemcheckbox"
90
90
  >
91
91
  { availableView.label }
92
- </DropdownMenuItemV2>
92
+ </DropdownMenuItem>
93
93
  );
94
94
  } ) }
95
- </DropdownSubMenuV2>
95
+ </DropdownSubMenu>
96
96
  );
97
97
  }
98
98
 
99
99
  const PAGE_SIZE_VALUES = [ 10, 20, 50, 100 ];
100
100
  function PageSizeMenu( { view, onChangeView } ) {
101
101
  return (
102
- <DropdownSubMenuV2
102
+ <DropdownSubMenu
103
103
  trigger={
104
- <DropdownSubMenuTriggerV2
104
+ <DropdownSubMenuTrigger
105
105
  suffix={
106
106
  <>
107
107
  { view.perPage }
@@ -111,12 +111,12 @@ function PageSizeMenu( { view, onChangeView } ) {
111
111
  >
112
112
  { /* TODO: probably label per view type. */ }
113
113
  { __( 'Rows per page' ) }
114
- </DropdownSubMenuTriggerV2>
114
+ </DropdownSubMenuTrigger>
115
115
  }
116
116
  >
117
117
  { PAGE_SIZE_VALUES.map( ( size ) => {
118
118
  return (
119
- <DropdownMenuItemV2
119
+ <DropdownMenuItem
120
120
  key={ size }
121
121
  prefix={
122
122
  view.perPage === size && <Icon icon={ check } />
@@ -130,10 +130,10 @@ function PageSizeMenu( { view, onChangeView } ) {
130
130
  role="menuitemcheckbox"
131
131
  >
132
132
  { size }
133
- </DropdownMenuItemV2>
133
+ </DropdownMenuItem>
134
134
  );
135
135
  } ) }
136
- </DropdownSubMenuV2>
136
+ </DropdownSubMenu>
137
137
  );
138
138
  }
139
139
 
@@ -145,18 +145,18 @@ function FieldsVisibilityMenu( { view, onChangeView, fields } ) {
145
145
  return null;
146
146
  }
147
147
  return (
148
- <DropdownSubMenuV2
148
+ <DropdownSubMenu
149
149
  trigger={
150
- <DropdownSubMenuTriggerV2
150
+ <DropdownSubMenuTrigger
151
151
  suffix={ <Icon icon={ chevronRightSmall } /> }
152
152
  >
153
153
  { __( 'Fields' ) }
154
- </DropdownSubMenuTriggerV2>
154
+ </DropdownSubMenuTrigger>
155
155
  }
156
156
  >
157
157
  { hidableFields?.map( ( field ) => {
158
158
  return (
159
- <DropdownMenuItemV2
159
+ <DropdownMenuItem
160
160
  key={ field.id }
161
161
  prefix={
162
162
  ! view.hiddenFields?.includes( field.id ) && (
@@ -179,10 +179,10 @@ function FieldsVisibilityMenu( { view, onChangeView, fields } ) {
179
179
  role="menuitemcheckbox"
180
180
  >
181
181
  { field.header }
182
- </DropdownMenuItemV2>
182
+ </DropdownMenuItem>
183
183
  );
184
184
  } ) }
185
- </DropdownSubMenuV2>
185
+ </DropdownSubMenu>
186
186
  );
187
187
  }
188
188
 
@@ -202,9 +202,9 @@ function SortMenu( { fields, view, onChangeView } ) {
202
202
  ( field ) => field.id === view.sort?.field
203
203
  );
204
204
  return (
205
- <DropdownSubMenuV2
205
+ <DropdownSubMenu
206
206
  trigger={
207
- <DropdownSubMenuTriggerV2
207
+ <DropdownSubMenuTrigger
208
208
  suffix={
209
209
  <>
210
210
  { currentSortedField?.header }
@@ -213,20 +213,20 @@ function SortMenu( { fields, view, onChangeView } ) {
213
213
  }
214
214
  >
215
215
  { __( 'Sort by' ) }
216
- </DropdownSubMenuTriggerV2>
216
+ </DropdownSubMenuTrigger>
217
217
  }
218
218
  >
219
219
  { sortableFields?.map( ( field ) => {
220
220
  const sortedDirection = view.sort?.direction;
221
221
  return (
222
- <DropdownSubMenuV2
222
+ <DropdownSubMenu
223
223
  key={ field.id }
224
224
  trigger={
225
- <DropdownSubMenuTriggerV2
225
+ <DropdownSubMenuTrigger
226
226
  suffix={ <Icon icon={ chevronRightSmall } /> }
227
227
  >
228
228
  { field.header }
229
- </DropdownSubMenuTriggerV2>
229
+ </DropdownSubMenuTrigger>
230
230
  }
231
231
  side="left"
232
232
  >
@@ -237,7 +237,7 @@ function SortMenu( { fields, view, onChangeView } ) {
237
237
  sortedDirection === direction &&
238
238
  field.id === currentSortedField.id;
239
239
  return (
240
- <DropdownMenuItemV2
240
+ <DropdownMenuItem
241
241
  key={ direction }
242
242
  prefix={ <Icon icon={ info.icon } /> }
243
243
  suffix={
@@ -264,14 +264,14 @@ function SortMenu( { fields, view, onChangeView } ) {
264
264
  } }
265
265
  >
266
266
  { info.label }
267
- </DropdownMenuItemV2>
267
+ </DropdownMenuItem>
268
268
  );
269
269
  }
270
270
  ) }
271
- </DropdownSubMenuV2>
271
+ </DropdownSubMenu>
272
272
  );
273
273
  } ) }
274
- </DropdownSubMenuV2>
274
+ </DropdownSubMenu>
275
275
  );
276
276
  }
277
277
 
@@ -284,8 +284,7 @@ export default function ViewActions( {
284
284
  supportedLayouts,
285
285
  } ) {
286
286
  return (
287
- <DropdownMenuV2
288
- label={ __( 'Actions' ) }
287
+ <DropdownMenu
289
288
  trigger={
290
289
  <Button
291
290
  variant="tertiary"
@@ -293,12 +292,11 @@ export default function ViewActions( {
293
292
  icon={
294
293
  VIEW_TYPE_ICONS[ view.type ] || VIEW_TYPE_ICONS.list
295
294
  }
296
- >
297
- { __( 'View' ) }
298
- </Button>
295
+ label={ __( 'View options' ) }
296
+ />
299
297
  }
300
298
  >
301
- <DropdownMenuGroupV2>
299
+ <DropdownMenuGroup>
302
300
  <ViewTypeMenu
303
301
  view={ view }
304
302
  onChangeView={ onChangeView }
@@ -315,7 +313,7 @@ export default function ViewActions( {
315
313
  onChangeView={ onChangeView }
316
314
  />
317
315
  <PageSizeMenu view={ view } onChangeView={ onChangeView } />
318
- </DropdownMenuGroupV2>
319
- </DropdownMenuV2>
316
+ </DropdownMenuGroup>
317
+ </DropdownMenu>
320
318
  );
321
319
  }
@@ -5,61 +5,86 @@ import {
5
5
  __experimentalGrid as Grid,
6
6
  __experimentalHStack as HStack,
7
7
  __experimentalVStack as VStack,
8
- FlexBlock,
9
- Placeholder,
10
8
  } from '@wordpress/components';
9
+ import { useAsyncList } from '@wordpress/compose';
11
10
 
12
11
  /**
13
12
  * Internal dependencies
14
13
  */
15
14
  import ItemActions from './item-actions';
16
15
 
17
- export function ViewGrid( { data, fields, view, actions } ) {
16
+ export function ViewGrid( { data, fields, view, actions, getItemId } ) {
18
17
  const mediaField = fields.find(
19
18
  ( field ) => field.id === view.layout.mediaField
20
19
  );
20
+ const primaryField = fields.find(
21
+ ( field ) => field.id === view.layout.primaryField
22
+ );
21
23
  const visibleFields = fields.filter(
22
24
  ( field ) =>
23
25
  ! view.hiddenFields.includes( field.id ) &&
24
- field.id !== view.layout.mediaField
26
+ ! [ view.layout.mediaField, view.layout.primaryField ].includes(
27
+ field.id
28
+ )
25
29
  );
30
+ const shownData = useAsyncList( data, { step: 3 } );
26
31
  return (
27
- <Grid gap={ 8 } columns={ 2 } alignment="top">
28
- { data.map( ( item, index ) => {
29
- return (
30
- <VStack key={ index }>
31
- <div className="dataviews-view-grid__media">
32
- { mediaField?.render( { item, view } ) || (
33
- <Placeholder
34
- withIllustration
35
- style={ {
36
- width: '100%',
37
- minHeight: '200px',
38
- } }
39
- />
40
- ) }
41
- </div>
42
-
43
- <HStack justify="space-between" alignment="top">
44
- <FlexBlock>
45
- <VStack>
46
- { visibleFields.map( ( field ) => (
47
- <div key={ field.id }>
48
- { field.render( { item, view } ) }
49
- </div>
50
- ) ) }
32
+ <Grid
33
+ gap={ 8 }
34
+ columns={ 2 }
35
+ alignment="top"
36
+ className="dataviews-grid-view"
37
+ >
38
+ { shownData.map( ( item, index ) => (
39
+ <VStack
40
+ spacing={ 3 }
41
+ key={ getItemId?.( item ) || index }
42
+ className="dataviews-view-grid__card"
43
+ >
44
+ <div className="dataviews-view-grid__media">
45
+ { mediaField?.render( { item, view } ) }
46
+ </div>
47
+ <HStack
48
+ className="dataviews-view-grid__title"
49
+ justify="space-between"
50
+ >
51
+ { primaryField?.render( { item, view } ) }
52
+ <ItemActions
53
+ item={ item }
54
+ actions={ actions }
55
+ isCompact
56
+ />
57
+ </HStack>
58
+ <VStack
59
+ className="dataviews-view-grid__fields"
60
+ spacing={ 3 }
61
+ >
62
+ { visibleFields.map( ( field ) => {
63
+ const renderedValue = field.render( {
64
+ item,
65
+ view,
66
+ } );
67
+ if ( ! renderedValue ) {
68
+ return null;
69
+ }
70
+ return (
71
+ <VStack
72
+ className="dataviews-view-grid__field"
73
+ key={ field.id }
74
+ spacing={ 1 }
75
+ >
76
+ <div className="dataviews-view-grid__field-header">
77
+ { field.header }
78
+ </div>
79
+ <div className="dataviews-view-grid__field-value">
80
+ { field.render( { item, view } ) }
81
+ </div>
51
82
  </VStack>
52
- </FlexBlock>
53
- <FlexBlock>
54
- <ItemActions
55
- item={ item }
56
- actions={ actions }
57
- />
58
- </FlexBlock>
59
- </HStack>
83
+ );
84
+ } ) }
60
85
  </VStack>
61
- );
62
- } ) }
86
+ </VStack>
87
+ ) ) }
63
88
  </Grid>
64
89
  );
65
90
  }