@wordpress/dataviews 13.1.1-next.v.202603161435.0 → 14.1.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 (370) hide show
  1. package/CHANGELOG.md +36 -6
  2. package/README.md +33 -7
  3. package/build/components/dataform-controls/array.cjs +2 -0
  4. package/build/components/dataform-controls/array.cjs.map +2 -2
  5. package/build/components/dataform-controls/checkbox.cjs +3 -1
  6. package/build/components/dataform-controls/checkbox.cjs.map +2 -2
  7. package/build/components/dataform-controls/color.cjs +8 -2
  8. package/build/components/dataform-controls/color.cjs.map +2 -2
  9. package/build/components/dataform-controls/date.cjs +31 -9
  10. package/build/components/dataform-controls/date.cjs.map +3 -3
  11. package/build/components/dataform-controls/datetime.cjs +17 -6
  12. package/build/components/dataform-controls/datetime.cjs.map +3 -3
  13. package/build/components/dataform-controls/password.cjs +4 -1
  14. package/build/components/dataform-controls/password.cjs.map +2 -2
  15. package/build/components/dataform-controls/radio.cjs +3 -1
  16. package/build/components/dataform-controls/radio.cjs.map +2 -2
  17. package/build/components/dataform-controls/select.cjs +3 -1
  18. package/build/components/dataform-controls/select.cjs.map +2 -2
  19. package/build/components/dataform-controls/textarea.cjs +2 -0
  20. package/build/components/dataform-controls/textarea.cjs.map +2 -2
  21. package/build/components/dataform-controls/toggle-group.cjs +3 -1
  22. package/build/components/dataform-controls/toggle-group.cjs.map +2 -2
  23. package/build/components/dataform-controls/toggle.cjs +3 -1
  24. package/build/components/dataform-controls/toggle.cjs.map +2 -2
  25. package/build/components/dataform-controls/utils/relative-date-control.cjs +5 -2
  26. package/build/components/dataform-controls/utils/relative-date-control.cjs.map +2 -2
  27. package/build/components/dataform-controls/utils/use-disabled-date-matchers.cjs +48 -0
  28. package/build/components/dataform-controls/utils/use-disabled-date-matchers.cjs.map +7 -0
  29. package/build/components/dataform-controls/utils/validated-input.cjs +2 -0
  30. package/build/components/dataform-controls/utils/validated-input.cjs.map +2 -2
  31. package/build/components/dataform-controls/utils/validated-number.cjs +3 -1
  32. package/build/components/dataform-controls/utils/validated-number.cjs.map +2 -2
  33. package/build/components/dataform-layouts/card/index.cjs +132 -128
  34. package/build/components/dataform-layouts/card/index.cjs.map +3 -3
  35. package/build/components/dataform-layouts/panel/summary-button.cjs +0 -1
  36. package/build/components/dataform-layouts/panel/summary-button.cjs.map +2 -2
  37. package/build/components/dataviews-bulk-actions/index.cjs +28 -5
  38. package/build/components/dataviews-bulk-actions/index.cjs.map +2 -2
  39. package/build/components/dataviews-context/index.cjs +2 -2
  40. package/build/components/dataviews-context/index.cjs.map +2 -2
  41. package/build/components/dataviews-filters/input-widget.cjs +4 -0
  42. package/build/components/dataviews-filters/input-widget.cjs.map +2 -2
  43. package/build/components/dataviews-footer/index.cjs +2 -3
  44. package/build/components/dataviews-footer/index.cjs.map +2 -2
  45. package/build/components/dataviews-layouts/grid/composite-grid.cjs +378 -249
  46. package/build/components/dataviews-layouts/grid/composite-grid.cjs.map +2 -2
  47. package/build/components/dataviews-layouts/picker-grid/index.cjs +60 -30
  48. package/build/components/dataviews-layouts/picker-grid/index.cjs.map +2 -2
  49. package/build/components/dataviews-layouts/picker-table/index.cjs +45 -30
  50. package/build/components/dataviews-layouts/picker-table/index.cjs.map +2 -2
  51. package/build/components/dataviews-layouts/table/index.cjs +0 -1
  52. package/build/components/dataviews-layouts/table/index.cjs.map +2 -2
  53. package/build/components/dataviews-layouts/utils/use-infinite-scroll.cjs +62 -0
  54. package/build/components/dataviews-layouts/utils/use-infinite-scroll.cjs.map +7 -0
  55. package/build/components/dataviews-pagination/index.cjs +1 -0
  56. package/build/components/dataviews-pagination/index.cjs.map +2 -2
  57. package/build/components/dataviews-picker-footer/index.cjs +23 -4
  58. package/build/components/dataviews-picker-footer/index.cjs.map +2 -2
  59. package/build/components/dataviews-search/index.cjs +2 -1
  60. package/build/components/dataviews-search/index.cjs.map +2 -2
  61. package/build/components/dataviews-selection-checkbox/index.cjs +3 -2
  62. package/build/components/dataviews-selection-checkbox/index.cjs.map +2 -2
  63. package/build/components/dataviews-view-config/index.cjs +0 -2
  64. package/build/components/dataviews-view-config/index.cjs.map +3 -3
  65. package/build/components/dataviews-view-config/infinite-scroll-toggle.cjs +0 -3
  66. package/build/components/dataviews-view-config/infinite-scroll-toggle.cjs.map +2 -2
  67. package/build/dataviews/index.cjs +47 -45
  68. package/build/dataviews/index.cjs.map +3 -3
  69. package/build/dataviews-picker/index.cjs +41 -33
  70. package/build/dataviews-picker/index.cjs.map +3 -3
  71. package/build/field-types/date.cjs +4 -1
  72. package/build/field-types/date.cjs.map +2 -2
  73. package/build/field-types/datetime.cjs +4 -1
  74. package/build/field-types/datetime.cjs.map +2 -2
  75. package/build/field-types/index.cjs +1 -0
  76. package/build/field-types/index.cjs.map +2 -2
  77. package/build/field-types/utils/get-is-valid.cjs +29 -24
  78. package/build/field-types/utils/get-is-valid.cjs.map +2 -2
  79. package/build/field-types/utils/is-valid-date-boundary.cjs +64 -0
  80. package/build/field-types/utils/is-valid-date-boundary.cjs.map +7 -0
  81. package/build/hooks/index.cjs +11 -2
  82. package/build/hooks/index.cjs.map +2 -2
  83. package/build/hooks/use-data.cjs +146 -9
  84. package/build/hooks/use-data.cjs.map +2 -2
  85. package/build/hooks/use-infinite-scroll.cjs +208 -0
  86. package/build/hooks/use-infinite-scroll.cjs.map +7 -0
  87. package/build/hooks/use-selected-items.cjs +57 -0
  88. package/build/hooks/use-selected-items.cjs.map +7 -0
  89. package/build/types/dataviews.cjs.map +1 -1
  90. package/build/types/field-api.cjs.map +1 -1
  91. package/build/utils/filter-sort-and-paginate.cjs +5 -1
  92. package/build/utils/filter-sort-and-paginate.cjs.map +2 -2
  93. package/build/utils/get-footer-message.cjs +8 -8
  94. package/build/utils/get-footer-message.cjs.map +2 -2
  95. package/build-module/components/dataform-controls/array.mjs +2 -0
  96. package/build-module/components/dataform-controls/array.mjs.map +2 -2
  97. package/build-module/components/dataform-controls/checkbox.mjs +3 -1
  98. package/build-module/components/dataform-controls/checkbox.mjs.map +2 -2
  99. package/build-module/components/dataform-controls/color.mjs +8 -2
  100. package/build-module/components/dataform-controls/color.mjs.map +2 -2
  101. package/build-module/components/dataform-controls/date.mjs +31 -9
  102. package/build-module/components/dataform-controls/date.mjs.map +2 -2
  103. package/build-module/components/dataform-controls/datetime.mjs +17 -6
  104. package/build-module/components/dataform-controls/datetime.mjs.map +2 -2
  105. package/build-module/components/dataform-controls/password.mjs +4 -1
  106. package/build-module/components/dataform-controls/password.mjs.map +2 -2
  107. package/build-module/components/dataform-controls/radio.mjs +3 -1
  108. package/build-module/components/dataform-controls/radio.mjs.map +2 -2
  109. package/build-module/components/dataform-controls/select.mjs +3 -1
  110. package/build-module/components/dataform-controls/select.mjs.map +2 -2
  111. package/build-module/components/dataform-controls/textarea.mjs +2 -0
  112. package/build-module/components/dataform-controls/textarea.mjs.map +2 -2
  113. package/build-module/components/dataform-controls/toggle-group.mjs +3 -1
  114. package/build-module/components/dataform-controls/toggle-group.mjs.map +2 -2
  115. package/build-module/components/dataform-controls/toggle.mjs +3 -1
  116. package/build-module/components/dataform-controls/toggle.mjs.map +2 -2
  117. package/build-module/components/dataform-controls/utils/relative-date-control.mjs +5 -2
  118. package/build-module/components/dataform-controls/utils/relative-date-control.mjs.map +2 -2
  119. package/build-module/components/dataform-controls/utils/use-disabled-date-matchers.mjs +27 -0
  120. package/build-module/components/dataform-controls/utils/use-disabled-date-matchers.mjs.map +7 -0
  121. package/build-module/components/dataform-controls/utils/validated-input.mjs +2 -0
  122. package/build-module/components/dataform-controls/utils/validated-input.mjs.map +2 -2
  123. package/build-module/components/dataform-controls/utils/validated-number.mjs +3 -1
  124. package/build-module/components/dataform-controls/utils/validated-number.mjs.map +2 -2
  125. package/build-module/components/dataform-layouts/card/index.mjs +132 -133
  126. package/build-module/components/dataform-layouts/card/index.mjs.map +2 -2
  127. package/build-module/components/dataform-layouts/panel/summary-button.mjs +0 -1
  128. package/build-module/components/dataform-layouts/panel/summary-button.mjs.map +2 -2
  129. package/build-module/components/dataviews-bulk-actions/index.mjs +28 -5
  130. package/build-module/components/dataviews-bulk-actions/index.mjs.map +2 -2
  131. package/build-module/components/dataviews-context/index.mjs +2 -2
  132. package/build-module/components/dataviews-context/index.mjs.map +2 -2
  133. package/build-module/components/dataviews-filters/input-widget.mjs +4 -0
  134. package/build-module/components/dataviews-filters/input-widget.mjs.map +2 -2
  135. package/build-module/components/dataviews-footer/index.mjs +2 -3
  136. package/build-module/components/dataviews-footer/index.mjs.map +2 -2
  137. package/build-module/components/dataviews-layouts/grid/composite-grid.mjs +387 -250
  138. package/build-module/components/dataviews-layouts/grid/composite-grid.mjs.map +2 -2
  139. package/build-module/components/dataviews-layouts/picker-grid/index.mjs +64 -31
  140. package/build-module/components/dataviews-layouts/picker-grid/index.mjs.map +2 -2
  141. package/build-module/components/dataviews-layouts/picker-table/index.mjs +45 -30
  142. package/build-module/components/dataviews-layouts/picker-table/index.mjs.map +2 -2
  143. package/build-module/components/dataviews-layouts/table/index.mjs +0 -1
  144. package/build-module/components/dataviews-layouts/table/index.mjs.map +2 -2
  145. package/build-module/components/dataviews-layouts/utils/use-infinite-scroll.mjs +26 -0
  146. package/build-module/components/dataviews-layouts/utils/use-infinite-scroll.mjs.map +7 -0
  147. package/build-module/components/dataviews-pagination/index.mjs +1 -0
  148. package/build-module/components/dataviews-pagination/index.mjs.map +2 -2
  149. package/build-module/components/dataviews-picker-footer/index.mjs +23 -4
  150. package/build-module/components/dataviews-picker-footer/index.mjs.map +2 -2
  151. package/build-module/components/dataviews-search/index.mjs +2 -1
  152. package/build-module/components/dataviews-search/index.mjs.map +2 -2
  153. package/build-module/components/dataviews-selection-checkbox/index.mjs +3 -2
  154. package/build-module/components/dataviews-selection-checkbox/index.mjs.map +2 -2
  155. package/build-module/components/dataviews-view-config/index.mjs +0 -2
  156. package/build-module/components/dataviews-view-config/index.mjs.map +2 -2
  157. package/build-module/components/dataviews-view-config/infinite-scroll-toggle.mjs +0 -3
  158. package/build-module/components/dataviews-view-config/infinite-scroll-toggle.mjs.map +2 -2
  159. package/build-module/dataviews/index.mjs +55 -47
  160. package/build-module/dataviews/index.mjs.map +2 -2
  161. package/build-module/dataviews-picker/index.mjs +49 -35
  162. package/build-module/dataviews-picker/index.mjs.map +2 -2
  163. package/build-module/field-types/date.mjs +4 -1
  164. package/build-module/field-types/date.mjs.map +2 -2
  165. package/build-module/field-types/datetime.mjs +4 -1
  166. package/build-module/field-types/datetime.mjs.map +2 -2
  167. package/build-module/field-types/index.mjs +1 -0
  168. package/build-module/field-types/index.mjs.map +2 -2
  169. package/build-module/field-types/utils/get-is-valid.mjs +29 -24
  170. package/build-module/field-types/utils/get-is-valid.mjs.map +2 -2
  171. package/build-module/field-types/utils/is-valid-date-boundary.mjs +38 -0
  172. package/build-module/field-types/utils/is-valid-date-boundary.mjs.map +7 -0
  173. package/build-module/hooks/index.mjs +7 -1
  174. package/build-module/hooks/index.mjs.map +2 -2
  175. package/build-module/hooks/use-data.mjs +147 -10
  176. package/build-module/hooks/use-data.mjs.map +2 -2
  177. package/build-module/hooks/use-infinite-scroll.mjs +188 -0
  178. package/build-module/hooks/use-infinite-scroll.mjs.map +7 -0
  179. package/build-module/hooks/use-selected-items.mjs +36 -0
  180. package/build-module/hooks/use-selected-items.mjs.map +7 -0
  181. package/build-module/utils/filter-sort-and-paginate.mjs +5 -1
  182. package/build-module/utils/filter-sort-and-paginate.mjs.map +2 -2
  183. package/build-module/utils/get-footer-message.mjs +8 -8
  184. package/build-module/utils/get-footer-message.mjs.map +2 -2
  185. package/build-style/style-rtl.css +75 -52
  186. package/build-style/style.css +75 -52
  187. package/build-types/components/dataform-controls/array.d.ts.map +1 -1
  188. package/build-types/components/dataform-controls/checkbox.d.ts.map +1 -1
  189. package/build-types/components/dataform-controls/color.d.ts.map +1 -1
  190. package/build-types/components/dataform-controls/date.d.ts.map +1 -1
  191. package/build-types/components/dataform-controls/datetime.d.ts +1 -1
  192. package/build-types/components/dataform-controls/datetime.d.ts.map +1 -1
  193. package/build-types/components/dataform-controls/password.d.ts.map +1 -1
  194. package/build-types/components/dataform-controls/radio.d.ts.map +1 -1
  195. package/build-types/components/dataform-controls/select.d.ts.map +1 -1
  196. package/build-types/components/dataform-controls/textarea.d.ts.map +1 -1
  197. package/build-types/components/dataform-controls/toggle-group.d.ts.map +1 -1
  198. package/build-types/components/dataform-controls/toggle.d.ts.map +1 -1
  199. package/build-types/components/dataform-controls/utils/relative-date-control.d.ts.map +1 -1
  200. package/build-types/components/dataform-controls/utils/use-disabled-date-matchers.d.ts +16 -0
  201. package/build-types/components/dataform-controls/utils/use-disabled-date-matchers.d.ts.map +1 -0
  202. package/build-types/components/dataform-controls/utils/validated-input.d.ts.map +1 -1
  203. package/build-types/components/dataform-controls/utils/validated-number.d.ts.map +1 -1
  204. package/build-types/components/dataform-layouts/card/index.d.ts.map +1 -1
  205. package/build-types/components/dataform-layouts/panel/summary-button.d.ts.map +1 -1
  206. package/build-types/components/dataviews-bulk-actions/index.d.ts +2 -1
  207. package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
  208. package/build-types/components/dataviews-context/index.d.ts +3 -3
  209. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  210. package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
  211. package/build-types/components/dataviews-footer/index.d.ts.map +1 -1
  212. package/build-types/components/dataviews-layouts/grid/composite-grid.d.ts.map +1 -1
  213. package/build-types/components/dataviews-layouts/index.d.ts +6 -6
  214. package/build-types/components/dataviews-layouts/picker-grid/index.d.ts.map +1 -1
  215. package/build-types/components/dataviews-layouts/picker-table/index.d.ts.map +1 -1
  216. package/build-types/components/dataviews-layouts/table/index.d.ts.map +1 -1
  217. package/build-types/components/dataviews-layouts/utils/use-infinite-scroll.d.ts +22 -0
  218. package/build-types/components/dataviews-layouts/utils/use-infinite-scroll.d.ts.map +1 -0
  219. package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
  220. package/build-types/components/dataviews-picker-footer/index.d.ts.map +1 -1
  221. package/build-types/components/dataviews-search/index.d.ts +1 -1
  222. package/build-types/components/dataviews-search/index.d.ts.map +1 -1
  223. package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
  224. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  225. package/build-types/components/dataviews-view-config/infinite-scroll-toggle.d.ts +1 -1
  226. package/build-types/components/dataviews-view-config/infinite-scroll-toggle.d.ts.map +1 -1
  227. package/build-types/constants.d.ts +2 -2
  228. package/build-types/dataform/stories/index.story.d.ts +11 -1
  229. package/build-types/dataform/stories/index.story.d.ts.map +1 -1
  230. package/build-types/dataform/stories/layout-regular.d.ts +2 -1
  231. package/build-types/dataform/stories/layout-regular.d.ts.map +1 -1
  232. package/build-types/dataform/stories/validation.d.ts.map +1 -1
  233. package/build-types/dataviews/index.d.ts +1 -2
  234. package/build-types/dataviews/index.d.ts.map +1 -1
  235. package/build-types/dataviews/stories/fixtures.d.ts.map +1 -1
  236. package/build-types/dataviews/stories/free-composition.d.ts.map +1 -1
  237. package/build-types/dataviews/stories/index.story.d.ts +11 -0
  238. package/build-types/dataviews/stories/index.story.d.ts.map +1 -1
  239. package/build-types/dataviews/stories/infinite-scroll.d.ts.map +1 -1
  240. package/build-types/dataviews/stories/with-card.d.ts.map +1 -1
  241. package/build-types/dataviews-picker/index.d.ts +3 -3
  242. package/build-types/dataviews-picker/index.d.ts.map +1 -1
  243. package/build-types/dataviews-picker/stories/fixtures.d.ts.map +1 -1
  244. package/build-types/dataviews-picker/stories/index.story.d.ts.map +1 -1
  245. package/build-types/field-types/array.d.ts +1 -1
  246. package/build-types/field-types/array.d.ts.map +1 -1
  247. package/build-types/field-types/boolean.d.ts +1 -1
  248. package/build-types/field-types/boolean.d.ts.map +1 -1
  249. package/build-types/field-types/color.d.ts +1 -1
  250. package/build-types/field-types/color.d.ts.map +1 -1
  251. package/build-types/field-types/date.d.ts +3 -0
  252. package/build-types/field-types/date.d.ts.map +1 -1
  253. package/build-types/field-types/datetime.d.ts +3 -0
  254. package/build-types/field-types/datetime.d.ts.map +1 -1
  255. package/build-types/field-types/email.d.ts +1 -1
  256. package/build-types/field-types/email.d.ts.map +1 -1
  257. package/build-types/field-types/index.d.ts.map +1 -1
  258. package/build-types/field-types/integer.d.ts +1 -1
  259. package/build-types/field-types/integer.d.ts.map +1 -1
  260. package/build-types/field-types/number.d.ts +1 -1
  261. package/build-types/field-types/number.d.ts.map +1 -1
  262. package/build-types/field-types/stories/index.story.d.ts +37 -15
  263. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  264. package/build-types/field-types/utils/get-is-valid.d.ts.map +1 -1
  265. package/build-types/field-types/utils/is-valid-date-boundary.d.ts +7 -0
  266. package/build-types/field-types/utils/is-valid-date-boundary.d.ts.map +1 -0
  267. package/build-types/hooks/index.d.ts +3 -0
  268. package/build-types/hooks/index.d.ts.map +1 -1
  269. package/build-types/hooks/test/use-data.d.ts +2 -0
  270. package/build-types/hooks/test/use-data.d.ts.map +1 -0
  271. package/build-types/hooks/use-data.d.ts +41 -3
  272. package/build-types/hooks/use-data.d.ts.map +1 -1
  273. package/build-types/hooks/use-infinite-scroll.d.ts +21 -0
  274. package/build-types/hooks/use-infinite-scroll.d.ts.map +1 -0
  275. package/build-types/hooks/use-selected-items.d.ts +19 -0
  276. package/build-types/hooks/use-selected-items.d.ts.map +1 -0
  277. package/build-types/types/dataviews.d.ts +15 -1
  278. package/build-types/types/dataviews.d.ts.map +1 -1
  279. package/build-types/types/field-api.d.ts +39 -13
  280. package/build-types/types/field-api.d.ts.map +1 -1
  281. package/build-types/utils/filter-sort-and-paginate.d.ts.map +1 -1
  282. package/build-types/utils/get-footer-message.d.ts +3 -2
  283. package/build-types/utils/get-footer-message.d.ts.map +1 -1
  284. package/build-wp/index.js +3264 -2713
  285. package/package.json +19 -19
  286. package/src/components/dataform-controls/array.tsx +2 -0
  287. package/src/components/dataform-controls/checkbox.tsx +2 -0
  288. package/src/components/dataform-controls/color.tsx +7 -0
  289. package/src/components/dataform-controls/date.tsx +30 -4
  290. package/src/components/dataform-controls/datetime.tsx +36 -11
  291. package/src/components/dataform-controls/password.tsx +3 -0
  292. package/src/components/dataform-controls/radio.tsx +2 -0
  293. package/src/components/dataform-controls/select.tsx +2 -0
  294. package/src/components/dataform-controls/textarea.tsx +2 -0
  295. package/src/components/dataform-controls/toggle-group.tsx +2 -0
  296. package/src/components/dataform-controls/toggle.tsx +2 -0
  297. package/src/components/dataform-controls/utils/relative-date-control.tsx +3 -0
  298. package/src/components/dataform-controls/utils/use-disabled-date-matchers.ts +48 -0
  299. package/src/components/dataform-controls/utils/validated-input.tsx +2 -0
  300. package/src/components/dataform-controls/utils/validated-number.tsx +2 -0
  301. package/src/components/dataform-layouts/card/index.tsx +171 -146
  302. package/src/components/dataform-layouts/card/style.scss +8 -5
  303. package/src/components/dataform-layouts/panel/style.scss +4 -5
  304. package/src/components/dataform-layouts/panel/summary-button.tsx +0 -1
  305. package/src/components/dataviews-bulk-actions/index.tsx +28 -1
  306. package/src/components/dataviews-context/index.ts +4 -4
  307. package/src/components/dataviews-filters/input-widget.tsx +4 -0
  308. package/src/components/dataviews-filters/style.scss +2 -2
  309. package/src/components/dataviews-footer/index.tsx +1 -6
  310. package/src/components/dataviews-layouts/activity/style.scss +3 -3
  311. package/src/components/dataviews-layouts/grid/composite-grid.tsx +433 -284
  312. package/src/components/dataviews-layouts/grid/style.scss +5 -1
  313. package/src/components/dataviews-layouts/list/style.scss +1 -1
  314. package/src/components/dataviews-layouts/picker-grid/index.tsx +49 -15
  315. package/src/components/dataviews-layouts/picker-grid/style.scss +1 -1
  316. package/src/components/dataviews-layouts/picker-table/index.tsx +45 -23
  317. package/src/components/dataviews-layouts/picker-table/style.scss +1 -1
  318. package/src/components/dataviews-layouts/table/index.tsx +0 -2
  319. package/src/components/dataviews-layouts/utils/use-infinite-scroll.ts +64 -0
  320. package/src/components/dataviews-pagination/index.tsx +1 -0
  321. package/src/components/dataviews-picker-footer/index.tsx +21 -1
  322. package/src/components/dataviews-search/index.tsx +2 -1
  323. package/src/components/dataviews-selection-checkbox/index.tsx +4 -2
  324. package/src/components/dataviews-view-config/index.tsx +0 -2
  325. package/src/components/dataviews-view-config/infinite-scroll-toggle.tsx +0 -5
  326. package/src/dataform/stories/content.story.tsx +1 -1
  327. package/src/dataform/stories/data-adapter.tsx +6 -6
  328. package/src/dataform/stories/index.story.tsx +7 -0
  329. package/src/dataform/stories/layout-card.tsx +5 -5
  330. package/src/dataform/stories/layout-details.tsx +5 -5
  331. package/src/dataform/stories/layout-panel.tsx +9 -9
  332. package/src/dataform/stories/layout-regular.tsx +31 -10
  333. package/src/dataform/stories/layout-row.tsx +9 -9
  334. package/src/dataform/stories/validation.tsx +25 -10
  335. package/src/dataviews/index.tsx +68 -59
  336. package/src/dataviews/stories/empty.tsx +4 -4
  337. package/src/dataviews/stories/fixtures.tsx +288 -0
  338. package/src/dataviews/stories/free-composition.tsx +14 -13
  339. package/src/dataviews/stories/index.story.tsx +19 -2
  340. package/src/dataviews/stories/infinite-scroll.tsx +16 -96
  341. package/src/dataviews/stories/layout-custom.tsx +1 -1
  342. package/src/dataviews/stories/layout-grid.tsx +1 -1
  343. package/src/dataviews/stories/layout-list.tsx +1 -1
  344. package/src/dataviews/stories/layout-table.tsx +1 -1
  345. package/src/dataviews/stories/minimal-ui.tsx +1 -1
  346. package/src/dataviews/stories/with-card.tsx +30 -23
  347. package/src/dataviews/style.scss +6 -8
  348. package/src/dataviews/test/dataviews.tsx +94 -15
  349. package/src/dataviews-picker/index.tsx +57 -41
  350. package/src/dataviews-picker/stories/fixtures.tsx +270 -0
  351. package/src/dataviews-picker/stories/index.story.tsx +62 -133
  352. package/src/dataviews-picker/test/dataviews-picker.tsx +79 -2
  353. package/src/field-types/date.tsx +3 -0
  354. package/src/field-types/datetime.tsx +3 -0
  355. package/src/field-types/index.tsx +4 -0
  356. package/src/field-types/stories/index.story.tsx +79 -6
  357. package/src/field-types/test/normalize-fields.ts +44 -0
  358. package/src/field-types/utils/get-is-valid.ts +44 -31
  359. package/src/field-types/utils/is-valid-date-boundary.ts +80 -0
  360. package/src/hooks/index.ts +3 -0
  361. package/src/hooks/test/use-data.ts +791 -0
  362. package/src/hooks/test/use-form-validity.ts +479 -0
  363. package/src/hooks/use-data.ts +288 -21
  364. package/src/hooks/use-infinite-scroll.ts +304 -0
  365. package/src/hooks/use-selected-items.ts +72 -0
  366. package/src/types/dataviews.ts +17 -1
  367. package/src/types/field-api.ts +43 -12
  368. package/src/utils/filter-sort-and-paginate.ts +13 -1
  369. package/src/utils/get-footer-message.ts +12 -9
  370. package/src/utils/test/filter-sort-and-paginate.js +78 -54
@@ -333,6 +333,294 @@ export const data: SpaceObject[] = [
333
333
  email: 'thessalonikopolymnianebuchodonossarinacharybdis@example.com',
334
334
  author: 'interstellar_nomadic_planetary_body_tracking_specialist',
335
335
  },
336
+ {
337
+ id: 20,
338
+ name: {
339
+ title: 'Titan',
340
+ description: 'Largest moon of Saturn',
341
+ },
342
+ image: 'https://upload.wikimedia.org/wikipedia/commons/f/fe/Titan_in_true_color_by_Kevin_M._Gill.jpg',
343
+ type: 'Satellite',
344
+ isPlanet: false,
345
+ categories: [ 'Solar system', 'Satellite', 'Saturn', 'Moon' ],
346
+ satellites: 0,
347
+ date: '2022-02-15',
348
+ datetime: '2022-02-15T08:30:00Z',
349
+ email: 'titan@example.com',
350
+ author: 'saturn_system_researcher',
351
+ },
352
+ {
353
+ id: 21,
354
+ name: {
355
+ title: 'Enceladus',
356
+ description: 'Icy moon of Saturn with geysers',
357
+ },
358
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/PIA17202_-_Approaching_Enceladus.jpg/960px-PIA17202_-_Approaching_Enceladus.jpg',
359
+ type: 'Satellite',
360
+ isPlanet: false,
361
+ categories: [ 'Solar system', 'Satellite', 'Saturn', 'Moon' ],
362
+ satellites: 0,
363
+ date: '2023-03-20',
364
+ datetime: '2023-03-20T11:45:00Z',
365
+ email: 'enceladus@example.com',
366
+ author: 'cryovolcanism_observer',
367
+ },
368
+ {
369
+ id: 22,
370
+ name: {
371
+ title: 'Mimas',
372
+ description: 'Death Star moon of Saturn',
373
+ },
374
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Mimas_Cassini.jpg/960px-Mimas_Cassini.jpg',
375
+ type: 'Satellite',
376
+ isPlanet: false,
377
+ categories: [ 'Solar system', 'Satellite', 'Saturn', 'Moon' ],
378
+ satellites: 0,
379
+ date: '2021-07-12',
380
+ datetime: '2021-07-12T15:20:00Z',
381
+ email: 'mimas@example.com',
382
+ author: 'impact_crater_analyst',
383
+ },
384
+ {
385
+ id: 23,
386
+ name: {
387
+ title: 'Charon',
388
+ description: 'Largest moon of Pluto',
389
+ },
390
+ image: 'https://upload.wikimedia.org/wikipedia/commons/2/2e/Charon_in_True_Color_-_High-Res.jpg',
391
+ type: 'Satellite',
392
+ isPlanet: false,
393
+ categories: [ 'Solar system', 'Satellite', 'Pluto', 'Moon' ],
394
+ satellites: 0,
395
+ date: '2020-09-25',
396
+ datetime: '2020-09-25T13:15:00Z',
397
+ email: 'charon@example.com',
398
+ author: 'pluto_system_mapper',
399
+ },
400
+ {
401
+ id: 24,
402
+ name: {
403
+ title: 'Phobos',
404
+ description: 'Larger moon of Mars',
405
+ },
406
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Phobos_colour_2008.jpg/960px-Phobos_colour_2008.jpg',
407
+ type: 'Satellite',
408
+ isPlanet: false,
409
+ categories: [ 'Solar system', 'Satellite', 'Mars', 'Moon' ],
410
+ satellites: 0,
411
+ date: '2019-06-14',
412
+ datetime: '2019-06-14T07:45:00Z',
413
+ email: 'phobos@example.com',
414
+ author: 'martian_surface_cartographer',
415
+ },
416
+ {
417
+ id: 25,
418
+ name: {
419
+ title: 'Deimos',
420
+ description: 'Smaller moon of Mars',
421
+ },
422
+ image: 'https://upload.wikimedia.org/wikipedia/commons/8/86/NASA-Deimos-MarsMoon-20090221.jpg',
423
+ type: 'Satellite',
424
+ isPlanet: false,
425
+ categories: [ 'Solar system', 'Satellite', 'Mars', 'Moon' ],
426
+ satellites: 0,
427
+ date: '2018-11-30',
428
+ datetime: '2018-11-30T16:00:00Z',
429
+ email: 'deimos@example.com',
430
+ author: 'small_moon_surveyor',
431
+ },
432
+ {
433
+ id: 26,
434
+ name: {
435
+ title: 'Rhea',
436
+ description: 'Second largest moon of Saturn',
437
+ },
438
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/PIA07763_Rhea_full_globe5.jpg/2560px-PIA07763_Rhea_full_globe5.jpg',
439
+ type: 'Satellite',
440
+ isPlanet: false,
441
+ categories: [ 'Solar system', 'Satellite', 'Saturn', 'Moon' ],
442
+ satellites: 0,
443
+ date: '2022-08-19',
444
+ datetime: '2022-08-19T10:30:00Z',
445
+ email: 'rhea@example.com',
446
+ author: 'saturn_geology_specialist',
447
+ },
448
+ {
449
+ id: 27,
450
+ name: {
451
+ title: 'Iapetus',
452
+ description: 'Two-toned moon of Saturn',
453
+ },
454
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Iapetus_trailing_natural_color.jpg/2560px-Iapetus_trailing_natural_color.jpg',
455
+ type: 'Satellite',
456
+ isPlanet: false,
457
+ categories: [ 'Solar system', 'Satellite', 'Saturn', 'Moon' ],
458
+ satellites: 0,
459
+ date: '2023-01-22',
460
+ datetime: '2023-01-22T14:20:00Z',
461
+ email: 'iapetus@example.com',
462
+ author: 'two_tone_surface_expert',
463
+ },
464
+ {
465
+ id: 28,
466
+ name: {
467
+ title: 'Dione',
468
+ description: 'Icy moon of Saturn',
469
+ },
470
+ image: 'https://upload.wikimedia.org/wikipedia/commons/d/d0/Dione_in_natural_light_%28cropped%29.jpg',
471
+ type: 'Satellite',
472
+ isPlanet: false,
473
+ categories: [ 'Solar system', 'Satellite', 'Saturn', 'Moon' ],
474
+ satellites: 0,
475
+ date: '2021-04-17',
476
+ datetime: '2021-04-17T12:00:00Z',
477
+ email: 'dione@example.com',
478
+ author: 'icy_surface_geochemist',
479
+ },
480
+ {
481
+ id: 29,
482
+ name: {
483
+ title: 'Tethys',
484
+ description: 'Mid-sized moon of Saturn',
485
+ },
486
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Tethys_-_Rev_15_%2837267740632%29.png/960px-Tethys_-_Rev_15_%2837267740632%29.png',
487
+ type: 'Satellite',
488
+ isPlanet: false,
489
+ categories: [ 'Solar system', 'Satellite', 'Saturn', 'Moon' ],
490
+ satellites: 0,
491
+ date: '2020-12-05',
492
+ datetime: '2020-12-05T09:40:00Z',
493
+ email: 'tethys@example.com',
494
+ author: 'middle_satellite_researcher',
495
+ },
496
+ {
497
+ id: 30,
498
+ name: {
499
+ title: 'Miranda',
500
+ description: 'Unusual moon of Uranus',
501
+ },
502
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Miranda_mosaic_in_color_-_Voyager_2.png/960px-Miranda_mosaic_in_color_-_Voyager_2.png',
503
+ type: 'Satellite',
504
+ isPlanet: false,
505
+ categories: [ 'Solar system', 'Satellite', 'Uranus', 'Moon' ],
506
+ satellites: 0,
507
+ date: '2024-02-28',
508
+ datetime: '2024-02-28T11:15:00Z',
509
+ email: 'miranda@example.com',
510
+ author: 'uranian_moon_geologist',
511
+ },
512
+ {
513
+ id: 31,
514
+ name: {
515
+ title: 'Ariel',
516
+ description: 'Brightest moon of Uranus',
517
+ },
518
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Ariel_in_monochrome.jpg/960px-Ariel_in_monochrome.jpg',
519
+ type: 'Satellite',
520
+ isPlanet: false,
521
+ categories: [ 'Solar system', 'Satellite', 'Uranus', 'Moon' ],
522
+ satellites: 0,
523
+ date: '2023-09-10',
524
+ datetime: '2023-09-10T08:25:00Z',
525
+ email: 'ariel@example.com',
526
+ author: 'planetary_reflectance_specialist',
527
+ },
528
+ {
529
+ id: 32,
530
+ name: {
531
+ title: 'Umbriel',
532
+ description: 'Dark moon of Uranus',
533
+ },
534
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/PIA00040_Umbrielx2.47.jpg/560px-PIA00040_Umbrielx2.47.jpg',
535
+ type: 'Satellite',
536
+ isPlanet: false,
537
+ categories: [ 'Solar system', 'Satellite', 'Uranus', 'Moon' ],
538
+ satellites: 0,
539
+ date: '2022-05-03',
540
+ datetime: '2022-05-03T15:50:00Z',
541
+ email: 'umbriel@example.com',
542
+ author: 'dark_surface_researcher',
543
+ },
544
+ {
545
+ id: 33,
546
+ name: {
547
+ title: 'Titania',
548
+ description: 'Largest moon of Uranus',
549
+ },
550
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Titania_-_Jan_24_1986_%2822689891350%29.jpg/560px-Titania_-_Jan_24_1986_%2822689891350%29.jpg',
551
+ type: 'Satellite',
552
+ isPlanet: false,
553
+ categories: [ 'Solar system', 'Satellite', 'Uranus', 'Moon' ],
554
+ satellites: 0,
555
+ date: '2021-10-18',
556
+ datetime: '2021-10-18T13:35:00Z',
557
+ email: 'titania@example.com',
558
+ author: 'uranian_system_surveyor',
559
+ },
560
+ {
561
+ id: 34,
562
+ name: {
563
+ title: 'Oberon',
564
+ description: 'Outermost major moon of Uranus',
565
+ },
566
+ image: 'https://upload.wikimedia.org/wikipedia/commons/6/6d/Oberon_in_true_color_by_Kevin_M._Gill.jpg',
567
+ type: 'Satellite',
568
+ isPlanet: false,
569
+ categories: [ 'Solar system', 'Satellite', 'Uranus', 'Moon' ],
570
+ satellites: 0,
571
+ date: '2020-07-22',
572
+ datetime: '2020-07-22T10:05:00Z',
573
+ email: 'oberon@example.com',
574
+ author: 'outer_uranian_orbitalist',
575
+ },
576
+ {
577
+ id: 35,
578
+ name: {
579
+ title: 'Ceres',
580
+ description: 'Largest object in the asteroid belt',
581
+ },
582
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Ceres_-_RC3_-_Haulani_Crater_%2822381131691%29_%28cropped%29.jpg/560px-Ceres_-_RC3_-_Haulani_Crater_%2822381131691%29_%28cropped%29.jpg',
583
+ type: 'Dwarf planet',
584
+ isPlanet: false,
585
+ categories: [ 'Solar system', 'Dwarf planet', 'Asteroid belt' ],
586
+ satellites: 0,
587
+ date: '2024-08-14',
588
+ datetime: '2024-08-14T16:40:00Z',
589
+ email: 'ceres@example.com',
590
+ author: 'asteroid_belt_specialist',
591
+ },
592
+ {
593
+ id: 36,
594
+ name: {
595
+ title: 'Makemake',
596
+ description: 'Reddish dwarf planet',
597
+ },
598
+ image: 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Makemake_and_its_moon.jpg/560px-Makemake_and_its_moon.jpg',
599
+ type: 'Dwarf planet',
600
+ isPlanet: false,
601
+ categories: [ 'Solar system', 'Dwarf planet', 'Trans-Neptunian' ],
602
+ satellites: 1,
603
+ date: '2022-03-29',
604
+ datetime: '2022-03-29T12:55:00Z',
605
+ email: 'makemake@example.com',
606
+ author: 'trans_neptunian_researcher',
607
+ },
608
+ {
609
+ id: 37,
610
+ name: {
611
+ title: 'Haumea',
612
+ description: 'Elongated dwarf planet',
613
+ },
614
+ image: 'https://upload.wikimedia.org/wikipedia/commons/2/2b/Haumea_Hubble.png',
615
+ type: 'Dwarf planet',
616
+ isPlanet: false,
617
+ categories: [ 'Solar system', 'Dwarf planet', 'Trans-Neptunian' ],
618
+ satellites: 2,
619
+ date: '2021-11-11',
620
+ datetime: '2021-11-11T09:10:00Z',
621
+ email: 'haumea@example.com',
622
+ author: 'dwarf_planet_dynamics_specialist',
623
+ },
336
624
  ];
337
625
 
338
626
  export const actions: Action< SpaceObject >[] = [
@@ -7,14 +7,15 @@ import {
7
7
  createInterpolateElement,
8
8
  } from '@wordpress/element';
9
9
  import {
10
- Card,
11
- CardBody,
12
10
  __experimentalHeading as Heading,
13
11
  __experimentalText as Text,
14
12
  Button,
15
13
  } from '@wordpress/components';
16
14
  import { __, _n } from '@wordpress/i18n';
17
- import { Stack } from '@wordpress/ui';
15
+ // TODO: enable in the ESlint rule once we complete
16
+ // https://github.com/WordPress/gutenberg/issues/76135.
17
+ // eslint-disable-next-line @wordpress/use-recommended-components
18
+ import { Card, Stack } from '@wordpress/ui';
18
19
 
19
20
  /**
20
21
  * Internal dependencies
@@ -52,8 +53,8 @@ function PlanetOverview( { planets }: { planets: SpaceObject[] } ) {
52
53
  </Stack>
53
54
  </Stack>
54
55
  <DataViews.FiltersToggled />
55
- <Card variant="secondary">
56
- <CardBody>
56
+ <Card.Root>
57
+ <Card.Content>
57
58
  <Stack direction="column" gap="sm">
58
59
  <Text size={ 18 } as="p">
59
60
  { createInterpolateElement(
@@ -87,10 +88,10 @@ function PlanetOverview( { planets }: { planets: SpaceObject[] } ) {
87
88
  ) }
88
89
  </Text>
89
90
  </Stack>
90
- </CardBody>
91
- </Card>
92
- <Card style={ { width: '100%' } }>
93
- <CardBody>
91
+ </Card.Content>
92
+ </Card.Root>
93
+ <Card.Root style={ { width: '100%' } }>
94
+ <Card.Content>
94
95
  <Stack
95
96
  direction="row"
96
97
  justify="space-between"
@@ -100,8 +101,8 @@ function PlanetOverview( { planets }: { planets: SpaceObject[] } ) {
100
101
  <DataViews.BulkActionToolbar />
101
102
  <DataViews.Pagination />
102
103
  </Stack>
103
- </CardBody>
104
- </Card>
104
+ </Card.Content>
105
+ </Card.Root>
105
106
  </Stack>
106
107
  </div>
107
108
  <DataViews.Layout className="free-composition-dataviews-layout" />
@@ -161,8 +162,8 @@ export const FreeCompositionComponent = () => {
161
162
  actions={ actions }
162
163
  onChangeView={ setView }
163
164
  defaultLayouts={ {
164
- table: {},
165
- grid: {},
165
+ table: true,
166
+ grid: true,
166
167
  } }
167
168
  empty={
168
169
  <Stack
@@ -41,9 +41,15 @@ const meta = {
41
41
  layout: 'fullscreen',
42
42
  },
43
43
  decorators: [
44
- ( Story, { args }: { args: any } ) => (
44
+ ( Story, { args, parameters }: { args: any; parameters: any } ) => (
45
45
  <div style={ { padding: '1rem' } }>
46
- <div style={ { height: args.containerHeight, minHeight: 0 } }>
46
+ <div
47
+ style={ {
48
+ height:
49
+ parameters.containerHeight ?? args.containerHeight,
50
+ minHeight: 0,
51
+ } }
52
+ >
47
53
  <Story containerHeight={ args.containerHeight } />
48
54
  </div>
49
55
  </div>
@@ -259,4 +265,15 @@ export const WithCard = {
259
265
 
260
266
  export const InfiniteScroll = {
261
267
  render: InfiniteScrollComponent,
268
+ parameters: {
269
+ containerHeight: '600px',
270
+ },
271
+ argTypes: {
272
+ containerHeight: {
273
+ control: false,
274
+ table: {
275
+ disable: true,
276
+ },
277
+ },
278
+ },
262
279
  };
@@ -1,9 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useState, useMemo, useCallback, useEffect } from '@wordpress/element';
5
- import { __experimentalText as Text } from '@wordpress/components';
6
- import { __ } from '@wordpress/i18n';
4
+ import { useState, useMemo } from '@wordpress/element';
7
5
 
8
6
  /**
9
7
  * Internal dependencies
@@ -17,14 +15,14 @@ import {
17
15
  } from '../../constants';
18
16
  import filterSortAndPaginate from '../../utils/filter-sort-and-paginate';
19
17
  import type { View } from '../../types';
20
- import { actions, data, fields, type SpaceObject } from './fixtures';
18
+ import { actions, data, fields } from './fixtures';
21
19
 
22
20
  const InfiniteScroll = () => {
23
21
  const [ view, setView ] = useState< View >( {
24
22
  type: LAYOUT_GRID,
25
23
  search: '',
26
- page: 1,
27
- perPage: 6, // Start with a small number to demonstrate pagination
24
+ startPosition: 1,
25
+ perPage: 15, // Start with a small number to demonstrate pagination
28
26
  filters: [],
29
27
  fields: [ 'satellites' ],
30
28
  titleField: 'title',
@@ -32,108 +30,30 @@ const InfiniteScroll = () => {
32
30
  mediaField: 'image',
33
31
  infiniteScrollEnabled: true, // Enable infinite scroll by default
34
32
  } );
35
- const { data: shownData } = useMemo( () => {
33
+ const { data: shownData, paginationInfo } = useMemo( () => {
36
34
  return filterSortAndPaginate( data, view, fields );
37
35
  }, [ view ] );
38
-
39
- // Custom pagination handler that simulates server-side pagination
40
- const [ allLoadedRecords, setAllLoadedRecords ] = useState< SpaceObject[] >(
41
- []
42
- );
43
- const [ isLoadingMore, setIsLoadingMore ] = useState( false );
44
-
45
- const totalItems = data.length;
46
- const totalPages = Math.ceil( totalItems / 6 ); // perPage is 6.
47
- const currentPage = view.page || 1;
48
- const hasMoreData = currentPage < totalPages;
49
- const getItemId = ( item: {
50
- id: any;
51
- title?: string;
52
- description?: string;
53
- image?: string;
54
- type?: string;
55
- isPlanet?: boolean;
56
- categories?: string[];
57
- satellites?: number;
58
- date?: string;
59
- datetime?: string;
60
- email?: string;
61
- } ) => item.id.toString();
62
-
63
- const infiniteScrollHandler = useCallback( () => {
64
- if ( isLoadingMore || currentPage >= totalPages ) {
65
- return;
66
- }
67
-
68
- setIsLoadingMore( true );
69
-
70
- setView( {
71
- ...view,
72
- page: currentPage + 1,
73
- } );
74
- }, [ isLoadingMore, currentPage, totalPages, view ] );
75
-
76
- // Initialize data on first load or when view changes significantly
77
- useEffect( () => {
78
- if ( currentPage === 1 || ! view.infiniteScrollEnabled ) {
79
- // First page - replace all data
80
- setAllLoadedRecords( shownData );
81
- } else {
82
- // Subsequent pages - append to existing data
83
- setAllLoadedRecords( ( prev ) => {
84
- const existingIds = new Set( prev.map( getItemId ) );
85
- const newRecords = shownData.filter(
86
- ( record ) => ! existingIds.has( getItemId( record ) )
87
- );
88
- return [ ...prev, ...newRecords ];
89
- } );
90
- }
91
- setIsLoadingMore( false );
92
- }, [
93
- shownData,
94
- view.search,
95
- view.filters,
96
- view.perPage,
97
- currentPage,
98
- view.infiniteScrollEnabled,
99
- ] );
100
-
101
- const paginationInfo = {
102
- totalItems,
103
- totalPages,
104
- infiniteScrollHandler,
105
- };
106
-
107
36
  return (
108
37
  <>
109
- <Text
110
- style={ {
111
- marginBottom: '16px',
112
- padding: '8px',
113
- background: '#f0f0f0',
114
- borderRadius: '4px',
115
- display: 'block',
116
- } }
117
- >
118
- { __( 'Infinite Scroll Demo' ) }: { allLoadedRecords.length } of{ ' ' }
119
- { totalItems } items loaded.
120
- { isLoadingMore && __( 'Loading more…' ) }
121
- { ! hasMoreData && __( 'All items loaded!' ) }
122
- </Text>
38
+ <style>{ `
39
+ .dataviews-wrapper {
40
+ height: 750px;
41
+ overflow: auto;
42
+ }
43
+ ` }</style>
123
44
  <DataViews
124
45
  getItemId={ ( item ) => item.id.toString() }
125
46
  paginationInfo={ paginationInfo }
126
- data={ allLoadedRecords }
47
+ data={ shownData }
127
48
  view={ view }
128
49
  fields={ fields }
129
50
  onChangeView={ setView }
130
51
  actions={ actions }
131
- isLoading={ isLoadingMore }
132
52
  defaultLayouts={ {
133
- [ LAYOUT_TABLE ]: {},
134
- [ LAYOUT_GRID ]: {},
135
- [ LAYOUT_LIST ]: {},
136
- [ LAYOUT_ACTIVITY ]: {},
53
+ [ LAYOUT_TABLE ]: true,
54
+ [ LAYOUT_GRID ]: true,
55
+ [ LAYOUT_LIST ]: true,
56
+ [ LAYOUT_ACTIVITY ]: true,
137
57
  } }
138
58
  />
139
59
  </>
@@ -130,7 +130,7 @@ export const LayoutCustomComponent = ( {
130
130
  view={ view }
131
131
  fields={ fields }
132
132
  onChangeView={ setView }
133
- defaultLayouts={ { table: {} } }
133
+ defaultLayouts={ { table: true } }
134
134
  >
135
135
  <div style={ { padding: '2px', height: containerHeight } }>
136
136
  <DataViews.Search />
@@ -97,7 +97,7 @@ export const LayoutTableComponent = ( {
97
97
  ) }
98
98
  isItemClickable={ () => hasClickableItems }
99
99
  defaultLayouts={ {
100
- [ LAYOUT_GRID ]: {},
100
+ [ LAYOUT_GRID ]: true,
101
101
  } }
102
102
  config={ { perPageSizes } }
103
103
  />
@@ -100,7 +100,7 @@ export const LayoutTableComponent = ( {
100
100
  ) }
101
101
  isItemClickable={ () => hasClickableItems }
102
102
  defaultLayouts={ {
103
- [ LAYOUT_LIST ]: {},
103
+ [ LAYOUT_LIST ]: true,
104
104
  } }
105
105
  config={ { perPageSizes } }
106
106
  />
@@ -98,7 +98,7 @@ export const LayoutTableComponent = ( {
98
98
  ) }
99
99
  isItemClickable={ () => hasClickableItems }
100
100
  defaultLayouts={ {
101
- [ LAYOUT_TABLE ]: {},
101
+ [ LAYOUT_TABLE ]: true,
102
102
  } }
103
103
  config={ { perPageSizes } }
104
104
  />
@@ -54,7 +54,7 @@ const MinimalUIComponent = ( {
54
54
  view={ view }
55
55
  fields={ _fields }
56
56
  onChangeView={ setView }
57
- defaultLayouts={ { [ layout ]: {} } }
57
+ defaultLayouts={ { [ layout ]: true } }
58
58
  >
59
59
  <DataViews.Layout />
60
60
  <DataViews.Footer />
@@ -2,7 +2,10 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useState, useMemo } from '@wordpress/element';
5
- import { Card, CardHeader, CardBody } from '@wordpress/components';
5
+ // TODO: enable in the ESlint rule once we complete
6
+ // https://github.com/WordPress/gutenberg/issues/76135.
7
+ // eslint-disable-next-line @wordpress/use-recommended-components
8
+ import { Card } from '@wordpress/ui';
6
9
 
7
10
  /**
8
11
  * Internal dependencies
@@ -39,28 +42,32 @@ const WithCardComponent = ( {
39
42
  return filterSortAndPaginate( data, view, fields );
40
43
  }, [ view ] );
41
44
  return (
42
- <Card>
43
- <CardHeader>Header</CardHeader>
44
- <CardBody style={ { height: containerHeight, minHeight: 0 } }>
45
- <DataViews
46
- getItemId={ ( item ) => item.id.toString() }
47
- paginationInfo={ paginationInfo }
48
- data={ shownData }
49
- view={ view }
50
- fields={ fields }
51
- onChangeView={ setView }
52
- actions={ actions.filter(
53
- ( action ) => ! action.supportsBulk
54
- ) }
55
- defaultLayouts={ {
56
- [ LAYOUT_TABLE ]: {},
57
- [ LAYOUT_GRID ]: {},
58
- [ LAYOUT_LIST ]: {},
59
- [ LAYOUT_ACTIVITY ]: {},
60
- } }
61
- />
62
- </CardBody>
63
- </Card>
45
+ <Card.Root>
46
+ <Card.Header>
47
+ <Card.Title>Header</Card.Title>
48
+ </Card.Header>
49
+ <Card.Content style={ { height: containerHeight, minHeight: 0 } }>
50
+ <Card.FullBleed>
51
+ <DataViews
52
+ getItemId={ ( item ) => item.id.toString() }
53
+ paginationInfo={ paginationInfo }
54
+ data={ shownData }
55
+ view={ view }
56
+ fields={ fields }
57
+ onChangeView={ setView }
58
+ actions={ actions.filter(
59
+ ( action ) => ! action.supportsBulk
60
+ ) }
61
+ defaultLayouts={ {
62
+ [ LAYOUT_TABLE ]: true,
63
+ [ LAYOUT_GRID ]: true,
64
+ [ LAYOUT_LIST ]: true,
65
+ [ LAYOUT_ACTIVITY ]: true,
66
+ } }
67
+ />
68
+ </Card.FullBleed>
69
+ </Card.Content>
70
+ </Card.Root>
64
71
  );
65
72
  };
66
73
 
@@ -118,7 +118,7 @@
118
118
  }
119
119
 
120
120
  .dataviews-title-field--clickable {
121
- cursor: pointer;
121
+ cursor: var(--wpds-cursor-control);
122
122
  color: $gray-800;
123
123
  &:hover {
124
124
  color: var(--wp-admin-theme-color);
@@ -126,11 +126,9 @@
126
126
  @include link-reset();
127
127
  }
128
128
 
129
- /**
130
- * When DataViews are placed within cards, apply a consistent top padding.
131
- */
132
- .components-card__body:has(> .dataviews-wrapper),
133
- .components-card__body:has(> .dataviews-picker-wrapper) {
134
- padding: $grid-unit-10 0 0;
135
- overflow: hidden; // Prevent cells with white backgrounds overflowing the card
129
+ .dataviews__view-actions--infinite-scroll {
130
+ position: sticky;
131
+ top: 0;
132
+ z-index: 2; // Ensure it appears above dataview items when scrolling.
133
+ background-color: #fff;
136
134
  }