@wordpress/dataviews 4.22.0 → 5.0.1-next.719a03cbe.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 (335) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +146 -32
  3. package/build/components/dataviews/index.js +71 -37
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-context/index.js +15 -1
  6. package/build/components/dataviews-context/index.js.map +1 -1
  7. package/build/components/dataviews-filters/{filter-summary.js → filter.js} +108 -17
  8. package/build/components/dataviews-filters/filter.js.map +1 -0
  9. package/build/components/dataviews-filters/index.js +21 -20
  10. package/build/components/dataviews-filters/index.js.map +1 -1
  11. package/build/components/dataviews-filters/input-widget.js +76 -0
  12. package/build/components/dataviews-filters/input-widget.js.map +1 -0
  13. package/build/components/dataviews-filters/search-widget.js +33 -39
  14. package/build/components/dataviews-filters/search-widget.js.map +1 -1
  15. package/build/components/dataviews-filters/utils.js +25 -0
  16. package/build/components/dataviews-filters/utils.js.map +1 -0
  17. package/build/components/dataviews-item-actions/index.js +1 -1
  18. package/build/components/dataviews-item-actions/index.js.map +1 -1
  19. package/build/components/dataviews-layout/index.js +7 -2
  20. package/build/components/dataviews-layout/index.js.map +1 -1
  21. package/build/components/dataviews-pagination/index.js +4 -3
  22. package/build/components/dataviews-pagination/index.js.map +1 -1
  23. package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
  24. package/build/components/dataviews-view-config/index.js +10 -19
  25. package/build/components/dataviews-view-config/index.js.map +1 -1
  26. package/build/constants.js +83 -2
  27. package/build/constants.js.map +1 -1
  28. package/build/dataform-controls/boolean.js +42 -0
  29. package/build/dataform-controls/boolean.js.map +1 -0
  30. package/build/dataform-controls/checkbox.js +44 -0
  31. package/build/dataform-controls/checkbox.js.map +1 -0
  32. package/build/dataform-controls/datetime.js +96 -2
  33. package/build/dataform-controls/datetime.js.map +1 -1
  34. package/build/dataform-controls/email.js +48 -0
  35. package/build/dataform-controls/email.js.map +1 -0
  36. package/build/dataform-controls/index.js +9 -1
  37. package/build/dataform-controls/index.js.map +1 -1
  38. package/build/dataform-controls/integer.js +49 -1
  39. package/build/dataform-controls/integer.js.map +1 -1
  40. package/build/dataform-controls/select.js +1 -0
  41. package/build/dataform-controls/select.js.map +1 -1
  42. package/build/dataform-controls/text.js +3 -1
  43. package/build/dataform-controls/text.js.map +1 -1
  44. package/build/dataform-controls/toggle-group.js +52 -0
  45. package/build/dataform-controls/toggle-group.js.map +1 -0
  46. package/build/dataforms-layouts/data-form-layout.js +1 -1
  47. package/build/dataforms-layouts/data-form-layout.js.map +1 -1
  48. package/build/dataforms-layouts/panel/index.js +14 -5
  49. package/build/dataforms-layouts/panel/index.js.map +1 -1
  50. package/build/dataforms-layouts/regular/index.js +23 -4
  51. package/build/dataforms-layouts/regular/index.js.map +1 -1
  52. package/build/dataviews-layouts/grid/index.js +31 -25
  53. package/build/dataviews-layouts/grid/index.js.map +1 -1
  54. package/build/dataviews-layouts/list/index.js +11 -6
  55. package/build/dataviews-layouts/list/index.js.map +1 -1
  56. package/build/dataviews-layouts/table/column-header-menu.js +9 -7
  57. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  58. package/build/dataviews-layouts/table/column-primary.js +18 -13
  59. package/build/dataviews-layouts/table/column-primary.js.map +1 -1
  60. package/build/dataviews-layouts/table/index.js +46 -14
  61. package/build/dataviews-layouts/table/index.js.map +1 -1
  62. package/build/dataviews-layouts/table/use-is-horizontal-scroll-end.js +65 -0
  63. package/build/dataviews-layouts/table/use-is-horizontal-scroll-end.js.map +1 -0
  64. package/build/dataviews-layouts/utils/item-click-wrapper.js +77 -0
  65. package/build/dataviews-layouts/utils/item-click-wrapper.js.map +1 -0
  66. package/build/field-types/array.js +62 -0
  67. package/build/field-types/array.js.map +1 -0
  68. package/build/field-types/boolean.js +71 -0
  69. package/build/field-types/boolean.js.map +1 -0
  70. package/build/field-types/datetime.js +19 -1
  71. package/build/field-types/datetime.js.map +1 -1
  72. package/build/field-types/email.js +60 -0
  73. package/build/field-types/email.js.map +1 -0
  74. package/build/field-types/index.js +38 -1
  75. package/build/field-types/index.js.map +1 -1
  76. package/build/field-types/integer.js +23 -1
  77. package/build/field-types/integer.js.map +1 -1
  78. package/build/field-types/media.js +31 -0
  79. package/build/field-types/media.js.map +1 -0
  80. package/build/field-types/text.js +23 -1
  81. package/build/field-types/text.js.map +1 -1
  82. package/build/filter-and-sort-data-view.js +152 -1
  83. package/build/filter-and-sort-data-view.js.map +1 -1
  84. package/build/normalize-fields.js +72 -11
  85. package/build/normalize-fields.js.map +1 -1
  86. package/build/types.js.map +1 -1
  87. package/build/utils.js +11 -19
  88. package/build/utils.js.map +1 -1
  89. package/build-module/components/dataviews/index.js +74 -40
  90. package/build-module/components/dataviews/index.js.map +1 -1
  91. package/build-module/components/dataviews-context/index.js +16 -2
  92. package/build-module/components/dataviews-context/index.js.map +1 -1
  93. package/build-module/components/dataviews-filters/filter.js +309 -0
  94. package/build-module/components/dataviews-filters/filter.js.map +1 -0
  95. package/build-module/components/dataviews-filters/index.js +22 -21
  96. package/build-module/components/dataviews-filters/index.js.map +1 -1
  97. package/build-module/components/dataviews-filters/input-widget.js +69 -0
  98. package/build-module/components/dataviews-filters/input-widget.js.map +1 -0
  99. package/build-module/components/dataviews-filters/search-widget.js +31 -37
  100. package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
  101. package/build-module/components/dataviews-filters/utils.js +18 -0
  102. package/build-module/components/dataviews-filters/utils.js.map +1 -0
  103. package/build-module/components/dataviews-item-actions/index.js +1 -1
  104. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  105. package/build-module/components/dataviews-layout/index.js +7 -2
  106. package/build-module/components/dataviews-layout/index.js.map +1 -1
  107. package/build-module/components/dataviews-pagination/index.js +4 -4
  108. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  109. package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
  110. package/build-module/components/dataviews-view-config/index.js +9 -20
  111. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  112. package/build-module/constants.js +82 -1
  113. package/build-module/constants.js.map +1 -1
  114. package/build-module/dataform-controls/boolean.js +35 -0
  115. package/build-module/dataform-controls/boolean.js.map +1 -0
  116. package/build-module/dataform-controls/checkbox.js +37 -0
  117. package/build-module/dataform-controls/checkbox.js.map +1 -0
  118. package/build-module/dataform-controls/datetime.js +98 -3
  119. package/build-module/dataform-controls/datetime.js.map +1 -1
  120. package/build-module/dataform-controls/email.js +41 -0
  121. package/build-module/dataform-controls/email.js.map +1 -0
  122. package/build-module/dataform-controls/index.js +9 -1
  123. package/build-module/dataform-controls/index.js.map +1 -1
  124. package/build-module/dataform-controls/integer.js +51 -3
  125. package/build-module/dataform-controls/integer.js.map +1 -1
  126. package/build-module/dataform-controls/select.js +1 -0
  127. package/build-module/dataform-controls/select.js.map +1 -1
  128. package/build-module/dataform-controls/text.js +3 -1
  129. package/build-module/dataform-controls/text.js.map +1 -1
  130. package/build-module/dataform-controls/toggle-group.js +45 -0
  131. package/build-module/dataform-controls/toggle-group.js.map +1 -0
  132. package/build-module/dataforms-layouts/data-form-layout.js +1 -1
  133. package/build-module/dataforms-layouts/data-form-layout.js.map +1 -1
  134. package/build-module/dataforms-layouts/panel/index.js +14 -5
  135. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  136. package/build-module/dataforms-layouts/regular/index.js +23 -4
  137. package/build-module/dataforms-layouts/regular/index.js.map +1 -1
  138. package/build-module/dataviews-layouts/grid/index.js +31 -26
  139. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  140. package/build-module/dataviews-layouts/list/index.js +11 -6
  141. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  142. package/build-module/dataviews-layouts/table/column-header-menu.js +9 -7
  143. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  144. package/build-module/dataviews-layouts/table/column-primary.js +18 -12
  145. package/build-module/dataviews-layouts/table/column-primary.js.map +1 -1
  146. package/build-module/dataviews-layouts/table/index.js +47 -16
  147. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  148. package/build-module/dataviews-layouts/table/use-is-horizontal-scroll-end.js +58 -0
  149. package/build-module/dataviews-layouts/table/use-is-horizontal-scroll-end.js.map +1 -0
  150. package/build-module/dataviews-layouts/utils/item-click-wrapper.js +71 -0
  151. package/build-module/dataviews-layouts/utils/item-click-wrapper.js.map +1 -0
  152. package/build-module/field-types/array.js +57 -0
  153. package/build-module/field-types/array.js.map +1 -0
  154. package/build-module/field-types/boolean.js +65 -0
  155. package/build-module/field-types/boolean.js.map +1 -0
  156. package/build-module/field-types/datetime.js +19 -1
  157. package/build-module/field-types/datetime.js.map +1 -1
  158. package/build-module/field-types/email.js +54 -0
  159. package/build-module/field-types/email.js.map +1 -0
  160. package/build-module/field-types/index.js +38 -1
  161. package/build-module/field-types/index.js.map +1 -1
  162. package/build-module/field-types/integer.js +23 -1
  163. package/build-module/field-types/integer.js.map +1 -1
  164. package/build-module/field-types/media.js +25 -0
  165. package/build-module/field-types/media.js.map +1 -0
  166. package/build-module/field-types/text.js +23 -1
  167. package/build-module/field-types/text.js.map +1 -1
  168. package/build-module/filter-and-sort-data-view.js +153 -2
  169. package/build-module/filter-and-sort-data-view.js.map +1 -1
  170. package/build-module/normalize-fields.js +72 -11
  171. package/build-module/normalize-fields.js.map +1 -1
  172. package/build-module/types.js.map +1 -1
  173. package/build-module/utils.js +10 -17
  174. package/build-module/utils.js.map +1 -1
  175. package/build-style/style-rtl.css +307 -13
  176. package/build-style/style.css +307 -13
  177. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  178. package/build-types/components/dataviews/index.d.ts +24 -3
  179. package/build-types/components/dataviews/index.d.ts.map +1 -1
  180. package/build-types/components/dataviews/stories/fixtures.d.ts +9 -1
  181. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  182. package/build-types/components/dataviews/stories/index.story.d.ts +22 -4
  183. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  184. package/build-types/components/dataviews-context/index.d.ts +14 -1
  185. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  186. package/build-types/components/dataviews-filters/filter.d.ts +15 -0
  187. package/build-types/components/dataviews-filters/filter.d.ts.map +1 -0
  188. package/build-types/components/dataviews-filters/index.d.ts +3 -8
  189. package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
  190. package/build-types/components/dataviews-filters/input-widget.d.ts +13 -0
  191. package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -0
  192. package/build-types/components/dataviews-filters/search-widget.d.ts +4 -5
  193. package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
  194. package/build-types/components/dataviews-filters/utils.d.ts +6 -0
  195. package/build-types/components/dataviews-filters/utils.d.ts.map +1 -0
  196. package/build-types/components/dataviews-layout/index.d.ts +5 -1
  197. package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
  198. package/build-types/components/dataviews-pagination/index.d.ts +1 -1
  199. package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
  200. package/build-types/components/dataviews-selection-checkbox/index.d.ts +2 -2
  201. package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
  202. package/build-types/components/dataviews-view-config/index.d.ts +3 -4
  203. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  204. package/build-types/components/stories/index.story.d.ts +59 -0
  205. package/build-types/components/stories/index.story.d.ts.map +1 -0
  206. package/build-types/constants.d.ts +20 -3
  207. package/build-types/constants.d.ts.map +1 -1
  208. package/build-types/dataform-controls/boolean.d.ts +6 -0
  209. package/build-types/dataform-controls/boolean.d.ts.map +1 -0
  210. package/build-types/dataform-controls/checkbox.d.ts +6 -0
  211. package/build-types/dataform-controls/checkbox.d.ts.map +1 -0
  212. package/build-types/dataform-controls/datetime.d.ts +1 -1
  213. package/build-types/dataform-controls/datetime.d.ts.map +1 -1
  214. package/build-types/dataform-controls/email.d.ts +6 -0
  215. package/build-types/dataform-controls/email.d.ts.map +1 -0
  216. package/build-types/dataform-controls/index.d.ts +1 -1
  217. package/build-types/dataform-controls/index.d.ts.map +1 -1
  218. package/build-types/dataform-controls/integer.d.ts +1 -4
  219. package/build-types/dataform-controls/integer.d.ts.map +1 -1
  220. package/build-types/dataform-controls/select.d.ts.map +1 -1
  221. package/build-types/dataform-controls/text.d.ts.map +1 -1
  222. package/build-types/dataform-controls/toggle-group.d.ts +6 -0
  223. package/build-types/dataform-controls/toggle-group.d.ts.map +1 -0
  224. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  225. package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
  226. package/build-types/dataviews-layouts/grid/index.d.ts +2 -1
  227. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  228. package/build-types/dataviews-layouts/index.d.ts +3 -3
  229. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  230. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  231. package/build-types/dataviews-layouts/table/column-primary.d.ts +8 -1
  232. package/build-types/dataviews-layouts/table/column-primary.d.ts.map +1 -1
  233. package/build-types/dataviews-layouts/table/index.d.ts +1 -1
  234. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  235. package/build-types/dataviews-layouts/table/use-is-horizontal-scroll-end.d.ts +19 -0
  236. package/build-types/dataviews-layouts/table/use-is-horizontal-scroll-end.d.ts.map +1 -0
  237. package/build-types/dataviews-layouts/utils/item-click-wrapper.d.ts +15 -0
  238. package/build-types/dataviews-layouts/utils/item-click-wrapper.d.ts.map +1 -0
  239. package/build-types/field-types/array.d.ts +7 -0
  240. package/build-types/field-types/array.d.ts.map +1 -0
  241. package/build-types/field-types/boolean.d.ts +19 -0
  242. package/build-types/field-types/boolean.d.ts.map +1 -0
  243. package/build-types/field-types/datetime.d.ts +7 -1
  244. package/build-types/field-types/datetime.d.ts.map +1 -1
  245. package/build-types/field-types/email.d.ts +19 -0
  246. package/build-types/field-types/email.d.ts.map +1 -0
  247. package/build-types/field-types/index.d.ts +2 -10
  248. package/build-types/field-types/index.d.ts.map +1 -1
  249. package/build-types/field-types/integer.d.ts +7 -1
  250. package/build-types/field-types/integer.d.ts.map +1 -1
  251. package/build-types/field-types/media.d.ts +16 -0
  252. package/build-types/field-types/media.d.ts.map +1 -0
  253. package/build-types/field-types/text.d.ts +7 -1
  254. package/build-types/field-types/text.d.ts.map +1 -1
  255. package/build-types/filter-and-sort-data-view.d.ts.map +1 -1
  256. package/build-types/normalize-fields.d.ts.map +1 -1
  257. package/build-types/types.d.ts +70 -8
  258. package/build-types/types.d.ts.map +1 -1
  259. package/build-types/utils.d.ts +5 -2
  260. package/build-types/utils.d.ts.map +1 -1
  261. package/build-wp/index.js +2545 -994
  262. package/package.json +18 -12
  263. package/src/components/dataform/stories/index.story.tsx +41 -20
  264. package/src/components/dataviews/index.tsx +108 -43
  265. package/src/components/dataviews/stories/fixtures.tsx +58 -13
  266. package/src/components/dataviews/stories/index.story.tsx +228 -7
  267. package/src/components/dataviews/stories/style.css +24 -3
  268. package/src/components/dataviews/style.scss +27 -0
  269. package/src/components/dataviews-context/index.ts +30 -2
  270. package/src/components/dataviews-filters/filter.tsx +603 -0
  271. package/src/components/dataviews-filters/index.tsx +23 -29
  272. package/src/components/dataviews-filters/input-widget.tsx +91 -0
  273. package/src/components/dataviews-filters/search-widget.tsx +51 -48
  274. package/src/components/dataviews-filters/style.scss +117 -14
  275. package/src/components/dataviews-filters/utils.ts +25 -0
  276. package/src/components/dataviews-item-actions/index.tsx +1 -1
  277. package/src/components/dataviews-layout/index.tsx +8 -1
  278. package/src/components/dataviews-pagination/index.tsx +4 -4
  279. package/src/components/dataviews-selection-checkbox/index.tsx +2 -2
  280. package/src/components/dataviews-view-config/index.tsx +10 -18
  281. package/src/components/stories/index.story.tsx +351 -0
  282. package/src/constants.ts +116 -1
  283. package/src/dataform-controls/boolean.tsx +30 -0
  284. package/src/dataform-controls/checkbox.tsx +31 -0
  285. package/src/dataform-controls/datetime.tsx +106 -2
  286. package/src/dataform-controls/email.tsx +42 -0
  287. package/src/dataform-controls/index.tsx +8 -0
  288. package/src/dataform-controls/integer.tsx +75 -1
  289. package/src/dataform-controls/select.tsx +1 -0
  290. package/src/dataform-controls/style.scss +5 -0
  291. package/src/dataform-controls/text.tsx +2 -1
  292. package/src/dataform-controls/toggle-group.tsx +59 -0
  293. package/src/dataforms-layouts/data-form-layout.tsx +1 -1
  294. package/src/dataforms-layouts/panel/index.tsx +19 -7
  295. package/src/dataforms-layouts/panel/style.scss +8 -1
  296. package/src/dataforms-layouts/regular/index.tsx +50 -17
  297. package/src/dataforms-layouts/regular/style.scss +4 -1
  298. package/src/dataviews-layouts/grid/index.tsx +47 -26
  299. package/src/dataviews-layouts/list/index.tsx +12 -5
  300. package/src/dataviews-layouts/table/column-header-menu.tsx +10 -8
  301. package/src/dataviews-layouts/table/column-primary.tsx +26 -13
  302. package/src/dataviews-layouts/table/index.tsx +74 -10
  303. package/src/dataviews-layouts/table/style.scss +37 -1
  304. package/src/dataviews-layouts/table/use-is-horizontal-scroll-end.ts +82 -0
  305. package/src/dataviews-layouts/utils/item-click-wrapper.tsx +93 -0
  306. package/src/field-types/array.tsx +75 -0
  307. package/src/field-types/boolean.tsx +66 -0
  308. package/src/field-types/datetime.tsx +46 -2
  309. package/src/field-types/email.tsx +79 -0
  310. package/src/field-types/index.tsx +45 -3
  311. package/src/field-types/integer.tsx +53 -2
  312. package/src/field-types/media.tsx +28 -0
  313. package/src/field-types/text.tsx +41 -2
  314. package/src/filter-and-sort-data-view.ts +243 -1
  315. package/src/normalize-fields.ts +116 -13
  316. package/src/test/dataviews.tsx +20 -2
  317. package/src/test/filter-and-sort-data-view.js +507 -0
  318. package/src/test/normalize-fields.ts +155 -0
  319. package/src/types.ts +106 -9
  320. package/src/utils.ts +10 -33
  321. package/tsconfig.json +2 -0
  322. package/tsconfig.tsbuildinfo +1 -1
  323. package/build/components/dataviews-filters/filter-summary.js.map +0 -1
  324. package/build/dataviews-layouts/utils/get-clickable-item-props.js +0 -36
  325. package/build/dataviews-layouts/utils/get-clickable-item-props.js.map +0 -1
  326. package/build-module/components/dataviews-filters/filter-summary.js +0 -218
  327. package/build-module/components/dataviews-filters/filter-summary.js.map +0 -1
  328. package/build-module/dataviews-layouts/utils/get-clickable-item-props.js +0 -30
  329. package/build-module/dataviews-layouts/utils/get-clickable-item-props.js.map +0 -1
  330. package/build-types/components/dataviews-filters/filter-summary.d.ts +0 -14
  331. package/build-types/components/dataviews-filters/filter-summary.d.ts.map +0 -1
  332. package/build-types/dataviews-layouts/utils/get-clickable-item-props.d.ts +0 -19
  333. package/build-types/dataviews-layouts/utils/get-clickable-item-props.d.ts.map +0 -1
  334. package/src/components/dataviews-filters/filter-summary.tsx +0 -338
  335. package/src/dataviews-layouts/utils/get-clickable-item-props.ts +0 -39
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/dataviews",
3
- "version": "4.22.0",
3
+ "version": "5.0.1-next.719a03cbe.0",
4
4
  "description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -46,20 +46,26 @@
46
46
  "dependencies": {
47
47
  "@ariakit/react": "^0.4.15",
48
48
  "@babel/runtime": "7.25.7",
49
- "@wordpress/components": "^29.12.0",
50
- "@wordpress/compose": "^7.26.0",
51
- "@wordpress/data": "^10.26.0",
52
- "@wordpress/element": "^6.26.0",
53
- "@wordpress/i18n": "^5.26.0",
54
- "@wordpress/icons": "^10.26.0",
55
- "@wordpress/primitives": "^4.26.0",
56
- "@wordpress/private-apis": "^1.26.0",
57
- "@wordpress/warning": "^3.26.0",
49
+ "@wordpress/base-styles": "^6.2.1-next.719a03cbe.0",
50
+ "@wordpress/components": "^29.13.1-next.719a03cbe.0",
51
+ "@wordpress/compose": "^7.26.1-next.719a03cbe.0",
52
+ "@wordpress/data": "^10.26.1-next.719a03cbe.0",
53
+ "@wordpress/date": "^5.26.1-next.719a03cbe.0",
54
+ "@wordpress/element": "^6.26.1-next.719a03cbe.0",
55
+ "@wordpress/i18n": "^6.0.1-next.719a03cbe.0",
56
+ "@wordpress/icons": "^10.26.2-next.719a03cbe.0",
57
+ "@wordpress/primitives": "^4.26.1-next.719a03cbe.0",
58
+ "@wordpress/private-apis": "^1.26.1-next.719a03cbe.0",
59
+ "@wordpress/url": "^4.26.1-next.719a03cbe.0",
60
+ "@wordpress/warning": "^3.26.1-next.719a03cbe.0",
58
61
  "clsx": "^2.1.1",
62
+ "date-fns": "^4.1.0",
63
+ "fast-deep-equal": "^3.1.3",
59
64
  "remove-accents": "^0.5.0"
60
65
  },
61
66
  "peerDependencies": {
62
- "react": "^18.0.0"
67
+ "react": "^18.0.0",
68
+ "react-dom": "^18.0.0"
63
69
  },
64
70
  "publishConfig": {
65
71
  "access": "public"
@@ -67,5 +73,5 @@
67
73
  "scripts": {
68
74
  "build:wp": "node build"
69
75
  },
70
- "gitHead": "35e26942820d8237771af0c58e45b4303f0497f1"
76
+ "gitHead": "5e146e949c2765411a8310bcc2641a88d036a6d9"
71
77
  }
@@ -2,7 +2,6 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useMemo, useState } from '@wordpress/element';
5
- import { ToggleControl } from '@wordpress/components';
6
5
 
7
6
  /**
8
7
  * Internal dependencies
@@ -19,6 +18,8 @@ type SamplePost = {
19
18
  date: string;
20
19
  birthdate: string;
21
20
  password?: string;
21
+ filesize?: number;
22
+ dimensions?: string;
22
23
  };
23
24
 
24
25
  const meta = {
@@ -89,12 +90,18 @@ const fields = [
89
90
  id: 'status',
90
91
  label: 'Status',
91
92
  type: 'text' as const,
93
+ Edit: 'toggleGroup' as const,
92
94
  elements: [
93
95
  { value: 'draft', label: 'Draft' },
94
96
  { value: 'published', label: 'Published' },
95
97
  { value: 'private', label: 'Private' },
96
98
  ],
97
99
  },
100
+ {
101
+ id: 'email',
102
+ label: 'Email',
103
+ type: 'email' as const,
104
+ },
98
105
  {
99
106
  id: 'password',
100
107
  label: 'Password',
@@ -106,20 +113,25 @@ const fields = [
106
113
  {
107
114
  id: 'sticky',
108
115
  label: 'Sticky',
109
- type: 'integer',
110
- Edit: ( { field, onChange, data, hideLabelFromVision } ) => {
111
- const { id, getValue } = field;
112
- return (
113
- <ToggleControl
114
- __nextHasNoMarginBottom
115
- label={ hideLabelFromVision ? '' : field.label }
116
- checked={ getValue( { item: data } ) }
117
- onChange={ () =>
118
- onChange( { [ id ]: ! getValue( { item: data } ) } )
119
- }
120
- />
121
- );
122
- },
116
+ type: 'boolean',
117
+ },
118
+ {
119
+ id: 'can_comment',
120
+ label: 'Allow people to leave a comment',
121
+ type: 'boolean' as const,
122
+ Edit: 'checkbox',
123
+ },
124
+ {
125
+ id: 'filesize',
126
+ label: 'File Size',
127
+ type: 'integer' as const,
128
+ readOnly: true,
129
+ },
130
+ {
131
+ id: 'dimensions',
132
+ label: 'Dimensions',
133
+ type: 'text' as const,
134
+ readOnly: true,
123
135
  },
124
136
  ] as Field< SamplePost >[];
125
137
 
@@ -136,9 +148,13 @@ export const Default = ( {
136
148
  author: 1,
137
149
  status: 'draft',
138
150
  reviewer: 'fulano',
151
+ email: 'hello@wordpress.org',
139
152
  date: '2021-01-01T12:00:00',
140
153
  birthdate: '1950-02-23T12:00:00',
141
154
  sticky: false,
155
+ can_comment: false,
156
+ filesize: 1024,
157
+ dimensions: '1920x1080',
142
158
  } );
143
159
 
144
160
  const form = useMemo(
@@ -148,16 +164,17 @@ export const Default = ( {
148
164
  fields: [
149
165
  'title',
150
166
  'order',
151
- {
152
- id: 'sticky',
153
- layout: 'regular',
154
- labelPosition: 'side',
155
- },
167
+ 'sticky',
156
168
  'author',
169
+ 'status',
157
170
  'reviewer',
171
+ 'email',
158
172
  'password',
159
173
  'date',
160
174
  'birthdate',
175
+ 'can_comment',
176
+ 'filesize',
177
+ 'dimensions',
161
178
  ],
162
179
  } ),
163
180
  [ type, labelPosition ]
@@ -193,6 +210,8 @@ const CombinedFieldsComponent = ( {
193
210
  reviewer: 'fulano',
194
211
  date: '2021-01-01T12:00:00',
195
212
  birthdate: '1950-02-23T12:00:00',
213
+ filesize: 1024,
214
+ dimensions: '1920x1080',
196
215
  } );
197
216
 
198
217
  const form = useMemo(
@@ -208,6 +227,8 @@ const CombinedFieldsComponent = ( {
208
227
  },
209
228
  'order',
210
229
  'author',
230
+ 'filesize',
231
+ 'dimensions',
211
232
  ],
212
233
  } ),
213
234
  [ type, labelPosition ]
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { ReactNode } from 'react';
4
+ import type { ReactNode, ComponentProps, ReactElement } from 'react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __experimentalHStack as HStack } from '@wordpress/components';
10
- import { useMemo, useState } from '@wordpress/element';
11
- import { useResizeObserver } from '@wordpress/compose';
10
+ import { useContext, useMemo, useRef, useState } from '@wordpress/element';
11
+ import { useMergeRefs, useResizeObserver } from '@wordpress/compose';
12
12
 
13
13
  /**
14
14
  * Internal dependencies
@@ -22,11 +22,15 @@ import {
22
22
  import DataViewsLayout from '../dataviews-layout';
23
23
  import DataViewsFooter from '../dataviews-footer';
24
24
  import DataViewsSearch from '../dataviews-search';
25
- import DataViewsViewConfig from '../dataviews-view-config';
25
+ import { BulkActionsFooter } from '../dataviews-bulk-actions';
26
+ import { DataViewsPagination } from '../dataviews-pagination';
27
+ import DataViewsViewConfig, {
28
+ DataviewsViewConfigDropdown,
29
+ ViewTypeMenu,
30
+ } from '../dataviews-view-config';
26
31
  import { normalizeFields } from '../../normalize-fields';
27
32
  import type { Action, Field, View, SupportedLayouts } from '../../types';
28
33
  import type { SelectionOrUpdater } from '../../private-types';
29
-
30
34
  type ItemWithId = { id: string };
31
35
 
32
36
  type DataViewsProps< Item > = {
@@ -46,9 +50,16 @@ type DataViewsProps< Item > = {
46
50
  selection?: string[];
47
51
  onChangeSelection?: ( items: string[] ) => void;
48
52
  onClickItem?: ( item: Item ) => void;
53
+ renderItemLink?: (
54
+ props: {
55
+ item: Item;
56
+ } & ComponentProps< 'a' >
57
+ ) => ReactElement;
49
58
  isItemClickable?: ( item: Item ) => boolean;
50
59
  header?: ReactNode;
51
60
  getItemLevel?: ( item: Item ) => number;
61
+ children?: ReactNode;
62
+ perPageSizes?: [ number, number, number, number ];
52
63
  } & ( Item extends ItemWithId
53
64
  ? { getItemId?: ( item: Item ) => string }
54
65
  : { getItemId: ( item: Item ) => string } );
@@ -57,7 +68,52 @@ const defaultGetItemId = ( item: ItemWithId ) => item.id;
57
68
  const defaultIsItemClickable = () => true;
58
69
  const EMPTY_ARRAY: any[] = [];
59
70
 
60
- export default function DataViews< Item >( {
71
+ type DefaultUIProps = Pick<
72
+ DataViewsProps< any >,
73
+ 'header' | 'search' | 'searchLabel'
74
+ >;
75
+
76
+ function DefaultUI( {
77
+ header,
78
+ search = true,
79
+ searchLabel = undefined,
80
+ }: DefaultUIProps ) {
81
+ const { isShowingFilter } = useContext( DataViewsContext );
82
+ return (
83
+ <>
84
+ <HStack
85
+ alignment="top"
86
+ justify="space-between"
87
+ className="dataviews__view-actions"
88
+ spacing={ 1 }
89
+ >
90
+ <HStack
91
+ justify="start"
92
+ expanded={ false }
93
+ className="dataviews__search"
94
+ >
95
+ { search && <DataViewsSearch label={ searchLabel } /> }
96
+ <FiltersToggle />
97
+ </HStack>
98
+ <HStack
99
+ spacing={ 1 }
100
+ expanded={ false }
101
+ style={ { flexShrink: 0 } }
102
+ >
103
+ <DataViewsViewConfig />
104
+ { header }
105
+ </HStack>
106
+ </HStack>
107
+ { isShowingFilter && (
108
+ <DataViewsFilters className="dataviews-filters__container" />
109
+ ) }
110
+ <DataViewsLayout />
111
+ <DataViewsFooter />
112
+ </>
113
+ );
114
+ }
115
+
116
+ function DataViews< Item >( {
61
117
  view,
62
118
  onChangeView,
63
119
  fields,
@@ -73,11 +129,15 @@ export default function DataViews< Item >( {
73
129
  selection: selectionProperty,
74
130
  onChangeSelection,
75
131
  onClickItem,
132
+ renderItemLink,
76
133
  isItemClickable = defaultIsItemClickable,
77
134
  header,
135
+ children,
136
+ perPageSizes,
78
137
  }: DataViewsProps< Item > ) {
138
+ const containerRef = useRef< HTMLDivElement | null >( null );
79
139
  const [ containerWidth, setContainerWidth ] = useState( 0 );
80
- const containerRef = useResizeObserver(
140
+ const resizeObserverRef = useResizeObserver(
81
141
  ( resizeObserverEntries: any ) => {
82
142
  setContainerWidth(
83
143
  resizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize
@@ -130,46 +190,51 @@ export default function DataViews< Item >( {
130
190
  getItemLevel,
131
191
  isItemClickable,
132
192
  onClickItem,
193
+ renderItemLink,
133
194
  containerWidth,
195
+ containerRef,
196
+ defaultLayouts,
197
+ filters,
198
+ isShowingFilter,
199
+ setIsShowingFilter,
200
+ perPageSizes,
134
201
  } }
135
202
  >
136
- <div className="dataviews-wrapper" ref={ containerRef }>
137
- <HStack
138
- alignment="top"
139
- justify="space-between"
140
- className="dataviews__view-actions"
141
- spacing={ 1 }
142
- >
143
- <HStack
144
- justify="start"
145
- expanded={ false }
146
- className="dataviews__search"
147
- >
148
- { search && <DataViewsSearch label={ searchLabel } /> }
149
- <FiltersToggle
150
- filters={ filters }
151
- view={ view }
152
- onChangeView={ onChangeView }
153
- setOpenedFilter={ setOpenedFilter }
154
- setIsShowingFilter={ setIsShowingFilter }
155
- isShowingFilter={ isShowingFilter }
156
- />
157
- </HStack>
158
- <HStack
159
- spacing={ 1 }
160
- expanded={ false }
161
- style={ { flexShrink: 0 } }
162
- >
163
- <DataViewsViewConfig
164
- defaultLayouts={ defaultLayouts }
165
- />
166
- { header }
167
- </HStack>
168
- </HStack>
169
- { isShowingFilter && <DataViewsFilters /> }
170
- <DataViewsLayout />
171
- <DataViewsFooter />
203
+ <div
204
+ className="dataviews-wrapper"
205
+ ref={ useMergeRefs( [ containerRef, resizeObserverRef ] ) }
206
+ >
207
+ { children ?? (
208
+ <DefaultUI
209
+ header={ header }
210
+ search={ search }
211
+ searchLabel={ searchLabel }
212
+ />
213
+ ) }
172
214
  </div>
173
215
  </DataViewsContext.Provider>
174
216
  );
175
217
  }
218
+
219
+ // Populate the DataViews sub components
220
+ const DataViewsSubComponents = DataViews as typeof DataViews & {
221
+ BulkActionToolbar: typeof BulkActionsFooter;
222
+ Filters: typeof DataViewsFilters;
223
+ FiltersToggle: typeof FiltersToggle;
224
+ Layout: typeof DataViewsLayout;
225
+ LayoutSwitcher: typeof ViewTypeMenu;
226
+ Pagination: typeof DataViewsPagination;
227
+ Search: typeof DataViewsSearch;
228
+ ViewConfig: typeof DataviewsViewConfigDropdown;
229
+ };
230
+
231
+ DataViewsSubComponents.BulkActionToolbar = BulkActionsFooter;
232
+ DataViewsSubComponents.Filters = DataViewsFilters;
233
+ DataViewsSubComponents.FiltersToggle = FiltersToggle;
234
+ DataViewsSubComponents.Layout = DataViewsLayout;
235
+ DataViewsSubComponents.LayoutSwitcher = ViewTypeMenu;
236
+ DataViewsSubComponents.Pagination = DataViewsPagination;
237
+ DataViewsSubComponents.Search = DataViewsSearch;
238
+ DataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown;
239
+
240
+ export default DataViewsSubComponents;
@@ -29,9 +29,11 @@ export type SpaceObject = {
29
29
  description: string;
30
30
  image: string;
31
31
  type: string;
32
+ isPlanet: boolean;
32
33
  categories: string[];
33
34
  satellites: number;
34
35
  date: string;
36
+ email: string;
35
37
  };
36
38
 
37
39
  export const data: SpaceObject[] = [
@@ -41,9 +43,11 @@ export const data: SpaceObject[] = [
41
43
  description: 'Apollo description',
42
44
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
43
45
  type: 'Not a planet',
46
+ isPlanet: false,
44
47
  categories: [ 'Space', 'NASA' ],
45
48
  satellites: 0,
46
49
  date: '2021-01-01T00:00:00Z',
50
+ email: 'apollo@example.com',
47
51
  },
48
52
  {
49
53
  id: 2,
@@ -51,9 +55,11 @@ export const data: SpaceObject[] = [
51
55
  description: 'Space description',
52
56
  image: 'https://live.staticflickr.com/5678/21911065441_92e2d44708_b.jpg',
53
57
  type: 'Not a planet',
58
+ isPlanet: false,
54
59
  categories: [ 'Space' ],
55
60
  satellites: 0,
56
61
  date: '2019-01-02T00:00:00Z',
62
+ email: 'space@example.com',
57
63
  },
58
64
  {
59
65
  id: 3,
@@ -61,9 +67,11 @@ export const data: SpaceObject[] = [
61
67
  description: 'NASA photo',
62
68
  image: 'https://live.staticflickr.com/742/21712365770_8f70a2c91e_b.jpg',
63
69
  type: 'Not a planet',
70
+ isPlanet: false,
64
71
  categories: [ 'NASA' ],
65
72
  satellites: 0,
66
73
  date: '2025-01-03T00:00:00Z',
74
+ email: 'nasa@example.com',
67
75
  },
68
76
  {
69
77
  id: 4,
@@ -71,9 +79,11 @@ export const data: SpaceObject[] = [
71
79
  description: 'Neptune description',
72
80
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
73
81
  type: 'Ice giant',
82
+ isPlanet: true,
74
83
  categories: [ 'Space', 'Planet', 'Solar system' ],
75
84
  satellites: 14,
76
85
  date: '2020-01-01T00:00:00Z',
86
+ email: 'neptune@example.com',
77
87
  },
78
88
  {
79
89
  id: 5,
@@ -81,9 +91,11 @@ export const data: SpaceObject[] = [
81
91
  description: 'Mercury description',
82
92
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
83
93
  type: 'Terrestrial',
94
+ isPlanet: true,
84
95
  categories: [ 'Space', 'Planet', 'Solar system' ],
85
96
  satellites: 0,
86
97
  date: '2020-01-02T01:00:00Z',
98
+ email: 'mercury@example.com',
87
99
  },
88
100
  {
89
101
  id: 6,
@@ -91,9 +103,11 @@ export const data: SpaceObject[] = [
91
103
  description: 'La planète Vénus',
92
104
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
93
105
  type: 'Terrestrial',
106
+ isPlanet: true,
94
107
  categories: [ 'Space', 'Planet', 'Solar system' ],
95
108
  satellites: 0,
96
109
  date: '2020-01-02T00:00:00Z',
110
+ email: 'venus@example.com',
97
111
  },
98
112
  {
99
113
  id: 7,
@@ -101,9 +115,11 @@ export const data: SpaceObject[] = [
101
115
  description: 'Earth description',
102
116
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
103
117
  type: 'Terrestrial',
118
+ isPlanet: true,
104
119
  categories: [ 'Space', 'Planet', 'Solar system' ],
105
120
  satellites: 1,
106
121
  date: '2023-01-03T00:00:00Z',
122
+ email: 'earth@example.com',
107
123
  },
108
124
  {
109
125
  id: 8,
@@ -111,9 +127,11 @@ export const data: SpaceObject[] = [
111
127
  description: 'Mars description',
112
128
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
113
129
  type: 'Terrestrial',
130
+ isPlanet: true,
114
131
  categories: [ 'Space', 'Planet', 'Solar system' ],
115
132
  satellites: 2,
116
133
  date: '2020-01-01T00:00:00Z',
134
+ email: 'mars@example.com',
117
135
  },
118
136
  {
119
137
  id: 9,
@@ -121,9 +139,11 @@ export const data: SpaceObject[] = [
121
139
  description: 'Jupiter description',
122
140
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
123
141
  type: 'Gas giant',
142
+ isPlanet: true,
124
143
  categories: [ 'Space', 'Planet', 'Solar system' ],
125
144
  satellites: 95,
126
145
  date: '2017-01-01T00:01:00Z',
146
+ email: 'jupiter@example.com',
127
147
  },
128
148
  {
129
149
  id: 10,
@@ -131,9 +151,11 @@ export const data: SpaceObject[] = [
131
151
  description: 'Saturn description',
132
152
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
133
153
  type: 'Gas giant',
154
+ isPlanet: true,
134
155
  categories: [ 'Space', 'Planet', 'Solar system' ],
135
156
  satellites: 146,
136
157
  date: '2020-02-01T00:02:00Z',
158
+ email: 'saturn@example.com',
137
159
  },
138
160
  {
139
161
  id: 11,
@@ -141,9 +163,11 @@ export const data: SpaceObject[] = [
141
163
  description: 'Uranus description',
142
164
  image: 'https://live.staticflickr.com/5725/21726228300_51333bd62c_b.jpg',
143
165
  type: 'Ice giant',
166
+ isPlanet: true,
144
167
  categories: [ 'Space', 'Ice giant', 'Solar system' ],
145
168
  satellites: 28,
146
169
  date: '2020-03-01T00:00:00Z',
170
+ email: 'uranus@example.com',
147
171
  },
148
172
  ];
149
173
 
@@ -562,7 +586,7 @@ export const themeFields: Field< Theme >[] = [
562
586
  {
563
587
  id: 'tags',
564
588
  label: 'Tags',
565
- render: ( { item } ) => item.tags.join( ', ' ),
589
+ type: 'array',
566
590
  },
567
591
  ];
568
592
 
@@ -571,7 +595,13 @@ export const DEFAULT_VIEW = {
571
595
  search: '',
572
596
  page: 1,
573
597
  perPage: 10,
574
- layout: {},
598
+ layout: {
599
+ styles: {
600
+ satellites: {
601
+ align: 'end' as const,
602
+ },
603
+ },
604
+ },
575
605
  filters: [],
576
606
  };
577
607
 
@@ -583,6 +613,7 @@ export const actions: Action< SpaceObject >[] = [
583
613
  icon: trash,
584
614
  hideModalHeader: true,
585
615
  modalFocusOnMount: 'firstContentElement',
616
+ supportsBulk: true,
586
617
  RenderModal: ( { items, closeModal } ) => {
587
618
  return (
588
619
  <VStack spacing="5">
@@ -620,6 +651,7 @@ export const fields: Field< SpaceObject >[] = [
620
651
  {
621
652
  label: 'Image',
622
653
  id: 'image',
654
+ type: 'media',
623
655
  header: (
624
656
  <HStack spacing={ 1 } justify="start">
625
657
  <Icon icon={ image } />
@@ -631,13 +663,16 @@ export const fields: Field< SpaceObject >[] = [
631
663
  <img src={ item.image } alt="" style={ { width: '100%' } } />
632
664
  );
633
665
  },
634
- enableSorting: false,
635
666
  },
636
667
  {
637
668
  label: 'Title',
638
669
  id: 'title',
670
+ type: 'text',
639
671
  enableHiding: false,
640
672
  enableGlobalSearch: true,
673
+ filterBy: {
674
+ operators: [ 'contains', 'notContains', 'startsWith' ],
675
+ },
641
676
  },
642
677
  {
643
678
  id: 'date',
@@ -654,6 +689,18 @@ export const fields: Field< SpaceObject >[] = [
654
689
  { value: 'Terrestrial', label: 'Terrestrial' },
655
690
  { value: 'Gas giant', label: 'Gas giant' },
656
691
  ],
692
+ filterBy: {
693
+ operators: [ 'is', 'isNot' ],
694
+ },
695
+ },
696
+ {
697
+ id: 'isPlanet',
698
+ label: 'Is Planet',
699
+ type: 'boolean',
700
+ elements: [
701
+ { value: true, label: 'True' },
702
+ { value: false, label: 'False' },
703
+ ],
657
704
  },
658
705
  {
659
706
  label: 'Satellites',
@@ -664,8 +711,15 @@ export const fields: Field< SpaceObject >[] = [
664
711
  {
665
712
  label: 'Description',
666
713
  id: 'description',
714
+ type: 'text',
667
715
  enableSorting: false,
668
716
  enableGlobalSearch: true,
717
+ filterBy: false,
718
+ },
719
+ {
720
+ label: 'Email',
721
+ id: 'email',
722
+ type: 'email',
669
723
  },
670
724
  {
671
725
  label: 'Categories',
@@ -683,15 +737,6 @@ export const fields: Field< SpaceObject >[] = [
683
737
  { value: 'Solar system', label: 'Solar system' },
684
738
  { value: 'Ice giant', label: 'Ice giant' },
685
739
  ],
686
- filterBy: {
687
- operators: [ 'isAny', 'isNone', 'isAll', 'isNotAll' ],
688
- },
689
- getValue: ( { item } ) => {
690
- return item.categories;
691
- },
692
- render: ( { item } ) => {
693
- return item.categories.join( ',' );
694
- },
695
- enableSorting: false,
740
+ type: 'array',
696
741
  },
697
742
  ];