@wordpress/dataviews 8.0.1-next.e256d081a.0 → 9.0.1-next.6870dfe5b.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 (269) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/README.md +96 -1
  3. package/build/components/dataform-context/index.js +1 -0
  4. package/build/components/dataform-context/index.js.map +1 -1
  5. package/build/components/dataviews/index.js +11 -1
  6. package/build/components/dataviews/index.js.map +1 -1
  7. package/build/components/dataviews-context/index.js +1 -0
  8. package/build/components/dataviews-context/index.js.map +1 -1
  9. package/build/components/dataviews-layout/index.js +2 -1
  10. package/build/components/dataviews-layout/index.js.map +1 -1
  11. package/build/components/dataviews-picker/footer.js +145 -0
  12. package/build/components/dataviews-picker/footer.js.map +1 -0
  13. package/build/components/dataviews-picker/index.js +201 -0
  14. package/build/components/dataviews-picker/index.js.map +1 -0
  15. package/build/components/dataviews-selection-checkbox/index.js +4 -2
  16. package/build/components/dataviews-selection-checkbox/index.js.map +1 -1
  17. package/build/components/dataviews-view-config/index.js +1 -0
  18. package/build/components/dataviews-view-config/index.js.map +1 -1
  19. package/build/constants.js +4 -1
  20. package/build/constants.js.map +1 -1
  21. package/build/dataform-controls/checkbox.js +23 -2
  22. package/build/dataform-controls/checkbox.js.map +1 -1
  23. package/build/dataform-controls/color.js +128 -0
  24. package/build/dataform-controls/color.js.map +1 -0
  25. package/build/dataform-controls/email.js +10 -45
  26. package/build/dataform-controls/email.js.map +1 -1
  27. package/build/dataform-controls/index.js +8 -2
  28. package/build/dataform-controls/index.js.map +1 -1
  29. package/build/dataform-controls/telephone.js +34 -0
  30. package/build/dataform-controls/telephone.js.map +1 -0
  31. package/build/dataform-controls/text.js +7 -48
  32. package/build/dataform-controls/text.js.map +1 -1
  33. package/build/dataform-controls/{boolean.js → toggle.js} +6 -4
  34. package/build/dataform-controls/toggle.js.map +1 -0
  35. package/build/dataform-controls/url.js +34 -0
  36. package/build/dataform-controls/url.js.map +1 -0
  37. package/build/dataform-controls/utils/validated-text.js +76 -0
  38. package/build/dataform-controls/utils/validated-text.js.map +1 -0
  39. package/build/dataforms-layouts/card/index.js +6 -7
  40. package/build/dataforms-layouts/card/index.js.map +1 -1
  41. package/build/dataforms-layouts/data-form-layout.js +16 -4
  42. package/build/dataforms-layouts/data-form-layout.js.map +1 -1
  43. package/build/dataforms-layouts/index.js +31 -1
  44. package/build/dataforms-layouts/index.js.map +1 -1
  45. package/build/dataforms-layouts/row/index.js +113 -0
  46. package/build/dataforms-layouts/row/index.js.map +1 -0
  47. package/build/dataviews-layouts/grid/index.js +16 -11
  48. package/build/dataviews-layouts/grid/index.js.map +1 -1
  49. package/build/dataviews-layouts/index.js +9 -1
  50. package/build/dataviews-layouts/index.js.map +1 -1
  51. package/build/dataviews-layouts/picker-grid/index.js +357 -0
  52. package/build/dataviews-layouts/picker-grid/index.js.map +1 -0
  53. package/build/dataviews-layouts/utils/grid-items.js +37 -0
  54. package/build/dataviews-layouts/utils/grid-items.js.map +1 -0
  55. package/build/dataviews-layouts/utils/preview-size-picker.js +81 -0
  56. package/build/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
  57. package/build/field-types/boolean.js +1 -1
  58. package/build/field-types/boolean.js.map +1 -1
  59. package/build/field-types/color.js +113 -0
  60. package/build/field-types/color.js.map +1 -0
  61. package/build/field-types/index.js +12 -0
  62. package/build/field-types/index.js.map +1 -1
  63. package/build/field-types/telephone.js +57 -0
  64. package/build/field-types/telephone.js.map +1 -0
  65. package/build/field-types/url.js +57 -0
  66. package/build/field-types/url.js.map +1 -0
  67. package/build/normalize-form-fields.js +6 -0
  68. package/build/normalize-form-fields.js.map +1 -1
  69. package/build/types.js.map +1 -1
  70. package/build/validation.js +1 -1
  71. package/build/validation.js.map +1 -1
  72. package/build-module/components/dataform-context/index.js +1 -0
  73. package/build-module/components/dataform-context/index.js.map +1 -1
  74. package/build-module/components/dataviews/index.js +11 -1
  75. package/build-module/components/dataviews/index.js.map +1 -1
  76. package/build-module/components/dataviews-context/index.js +1 -0
  77. package/build-module/components/dataviews-context/index.js.map +1 -1
  78. package/build-module/components/dataviews-layout/index.js +2 -1
  79. package/build-module/components/dataviews-layout/index.js.map +1 -1
  80. package/build-module/components/dataviews-picker/footer.js +136 -0
  81. package/build-module/components/dataviews-picker/footer.js.map +1 -0
  82. package/build-module/components/dataviews-picker/index.js +191 -0
  83. package/build-module/components/dataviews-picker/index.js.map +1 -0
  84. package/build-module/components/dataviews-selection-checkbox/index.js +4 -2
  85. package/build-module/components/dataviews-selection-checkbox/index.js.map +1 -1
  86. package/build-module/components/dataviews-view-config/index.js +1 -0
  87. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  88. package/build-module/constants.js +3 -0
  89. package/build-module/constants.js.map +1 -1
  90. package/build-module/dataform-controls/checkbox.js +25 -3
  91. package/build-module/dataform-controls/checkbox.js.map +1 -1
  92. package/build-module/dataform-controls/color.js +122 -0
  93. package/build-module/dataform-controls/color.js.map +1 -0
  94. package/build-module/dataform-controls/email.js +9 -45
  95. package/build-module/dataform-controls/email.js.map +1 -1
  96. package/build-module/dataform-controls/index.js +8 -2
  97. package/build-module/dataform-controls/index.js.map +1 -1
  98. package/build-module/dataform-controls/telephone.js +27 -0
  99. package/build-module/dataform-controls/telephone.js.map +1 -0
  100. package/build-module/dataform-controls/text.js +6 -48
  101. package/build-module/dataform-controls/text.js.map +1 -1
  102. package/build-module/dataform-controls/{boolean.js → toggle.js} +5 -3
  103. package/build-module/dataform-controls/toggle.js.map +1 -0
  104. package/build-module/dataform-controls/url.js +27 -0
  105. package/build-module/dataform-controls/url.js.map +1 -0
  106. package/build-module/dataform-controls/utils/validated-text.js +70 -0
  107. package/build-module/dataform-controls/utils/validated-text.js.map +1 -0
  108. package/build-module/dataforms-layouts/card/index.js +6 -7
  109. package/build-module/dataforms-layouts/card/index.js.map +1 -1
  110. package/build-module/dataforms-layouts/data-form-layout.js +14 -4
  111. package/build-module/dataforms-layouts/data-form-layout.js.map +1 -1
  112. package/build-module/dataforms-layouts/index.js +32 -1
  113. package/build-module/dataforms-layouts/index.js.map +1 -1
  114. package/build-module/dataforms-layouts/row/index.js +106 -0
  115. package/build-module/dataforms-layouts/row/index.js.map +1 -0
  116. package/build-module/dataviews-layouts/grid/index.js +16 -11
  117. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  118. package/build-module/dataviews-layouts/index.js +10 -2
  119. package/build-module/dataviews-layouts/index.js.map +1 -1
  120. package/build-module/dataviews-layouts/picker-grid/index.js +348 -0
  121. package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -0
  122. package/build-module/dataviews-layouts/utils/grid-items.js +29 -0
  123. package/build-module/dataviews-layouts/utils/grid-items.js.map +1 -0
  124. package/build-module/dataviews-layouts/utils/preview-size-picker.js +73 -0
  125. package/build-module/dataviews-layouts/utils/preview-size-picker.js.map +1 -0
  126. package/build-module/field-types/boolean.js +1 -1
  127. package/build-module/field-types/boolean.js.map +1 -1
  128. package/build-module/field-types/color.js +107 -0
  129. package/build-module/field-types/color.js.map +1 -0
  130. package/build-module/field-types/index.js +12 -0
  131. package/build-module/field-types/index.js.map +1 -1
  132. package/build-module/field-types/telephone.js +51 -0
  133. package/build-module/field-types/telephone.js.map +1 -0
  134. package/build-module/field-types/url.js +51 -0
  135. package/build-module/field-types/url.js.map +1 -0
  136. package/build-module/normalize-form-fields.js +6 -0
  137. package/build-module/normalize-form-fields.js.map +1 -1
  138. package/build-module/types.js.map +1 -1
  139. package/build-module/validation.js +1 -1
  140. package/build-module/validation.js.map +1 -1
  141. package/build-style/style-rtl.css +252 -12
  142. package/build-style/style.css +252 -12
  143. package/build-types/components/dataform/stories/index.story.d.ts +19 -4
  144. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  145. package/build-types/components/dataform-context/index.d.ts.map +1 -1
  146. package/build-types/components/dataviews/index.d.ts +1 -1
  147. package/build-types/components/dataviews/index.d.ts.map +1 -1
  148. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  149. package/build-types/components/dataviews-context/index.d.ts +1 -0
  150. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  151. package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
  152. package/build-types/components/dataviews-picker/footer.d.ts +4 -0
  153. package/build-types/components/dataviews-picker/footer.d.ts.map +1 -0
  154. package/build-types/components/dataviews-picker/index.d.ts +55 -0
  155. package/build-types/components/dataviews-picker/index.d.ts.map +1 -0
  156. package/build-types/components/dataviews-picker/stories/index.story.d.ts +42 -0
  157. package/build-types/components/dataviews-picker/stories/index.story.d.ts.map +1 -0
  158. package/build-types/components/dataviews-selection-checkbox/index.d.ts +2 -1
  159. package/build-types/components/dataviews-selection-checkbox/index.d.ts.map +1 -1
  160. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  161. package/build-types/constants.d.ts +1 -0
  162. package/build-types/constants.d.ts.map +1 -1
  163. package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
  164. package/build-types/dataform-controls/color.d.ts +6 -0
  165. package/build-types/dataform-controls/color.d.ts.map +1 -0
  166. package/build-types/dataform-controls/email.d.ts.map +1 -1
  167. package/build-types/dataform-controls/index.d.ts.map +1 -1
  168. package/build-types/dataform-controls/telephone.d.ts +6 -0
  169. package/build-types/dataform-controls/telephone.d.ts.map +1 -0
  170. package/build-types/dataform-controls/text.d.ts.map +1 -1
  171. package/build-types/dataform-controls/toggle.d.ts +6 -0
  172. package/build-types/dataform-controls/toggle.d.ts.map +1 -0
  173. package/build-types/dataform-controls/url.d.ts +6 -0
  174. package/build-types/dataform-controls/url.d.ts.map +1 -0
  175. package/build-types/dataform-controls/utils/validated-text.d.ts +16 -0
  176. package/build-types/dataform-controls/utils/validated-text.d.ts.map +1 -0
  177. package/build-types/dataforms-layouts/card/index.d.ts +0 -3
  178. package/build-types/dataforms-layouts/card/index.d.ts.map +1 -1
  179. package/build-types/dataforms-layouts/data-form-layout.d.ts +4 -1
  180. package/build-types/dataforms-layouts/data-form-layout.d.ts.map +1 -1
  181. package/build-types/dataforms-layouts/index.d.ts +10 -0
  182. package/build-types/dataforms-layouts/index.d.ts.map +1 -1
  183. package/build-types/dataforms-layouts/row/index.d.ts +6 -0
  184. package/build-types/dataforms-layouts/row/index.d.ts.map +1 -0
  185. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  186. package/build-types/dataviews-layouts/index.d.ts +12 -1
  187. package/build-types/dataviews-layouts/index.d.ts.map +1 -1
  188. package/build-types/dataviews-layouts/picker-grid/index.d.ts +4 -0
  189. package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -0
  190. package/build-types/dataviews-layouts/utils/grid-items.d.ts +5 -0
  191. package/build-types/dataviews-layouts/utils/grid-items.d.ts.map +1 -0
  192. package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts +2 -0
  193. package/build-types/dataviews-layouts/utils/preview-size-picker.d.ts.map +1 -0
  194. package/build-types/field-types/color.d.ts +20 -0
  195. package/build-types/field-types/color.d.ts.map +1 -0
  196. package/build-types/field-types/index.d.ts.map +1 -1
  197. package/build-types/field-types/stories/index.story.d.ts +81 -0
  198. package/build-types/field-types/stories/index.story.d.ts.map +1 -0
  199. package/build-types/field-types/telephone.d.ts +20 -0
  200. package/build-types/field-types/telephone.d.ts.map +1 -0
  201. package/build-types/field-types/url.d.ts +20 -0
  202. package/build-types/field-types/url.d.ts.map +1 -0
  203. package/build-types/normalize-form-fields.d.ts.map +1 -1
  204. package/build-types/test/dataviews-picker.d.ts +2 -0
  205. package/build-types/test/dataviews-picker.d.ts.map +1 -0
  206. package/build-types/types.d.ts +36 -5
  207. package/build-types/types.d.ts.map +1 -1
  208. package/build-types/validation.d.ts.map +1 -1
  209. package/build-wp/index.js +5061 -4013
  210. package/package.json +16 -15
  211. package/src/components/dataform/stories/index.story.tsx +333 -11
  212. package/src/components/dataform-context/index.tsx +1 -0
  213. package/src/components/dataviews/index.tsx +25 -1
  214. package/src/components/dataviews/stories/fixtures.tsx +1 -1
  215. package/src/components/dataviews/stories/index.story.tsx +14 -0
  216. package/src/components/dataviews/style.scss +4 -2
  217. package/src/components/dataviews-context/index.ts +3 -0
  218. package/src/components/dataviews-layout/index.tsx +4 -2
  219. package/src/components/dataviews-picker/footer.tsx +207 -0
  220. package/src/components/dataviews-picker/index.tsx +284 -0
  221. package/src/components/dataviews-picker/stories/index.story.tsx +251 -0
  222. package/src/components/dataviews-picker/style.scss +10 -0
  223. package/src/components/dataviews-selection-checkbox/index.tsx +3 -0
  224. package/src/components/dataviews-view-config/index.tsx +1 -0
  225. package/src/constants.ts +3 -0
  226. package/src/dataform-controls/checkbox.tsx +33 -3
  227. package/src/dataform-controls/color.tsx +139 -0
  228. package/src/dataform-controls/email.tsx +10 -52
  229. package/src/dataform-controls/index.tsx +8 -2
  230. package/src/dataform-controls/telephone.tsx +30 -0
  231. package/src/dataform-controls/text.tsx +2 -57
  232. package/src/dataform-controls/{boolean.tsx → toggle.tsx} +3 -2
  233. package/src/dataform-controls/url.tsx +30 -0
  234. package/src/dataform-controls/utils/validated-text.tsx +96 -0
  235. package/src/dataforms-layouts/card/index.tsx +5 -4
  236. package/src/dataforms-layouts/card/style.scss +7 -0
  237. package/src/dataforms-layouts/data-form-layout.tsx +15 -3
  238. package/src/dataforms-layouts/index.tsx +35 -0
  239. package/src/dataforms-layouts/row/index.tsx +115 -0
  240. package/src/dataforms-layouts/row/style.scss +3 -0
  241. package/src/dataviews-layouts/grid/index.tsx +38 -33
  242. package/src/dataviews-layouts/grid/style.scss +42 -20
  243. package/src/dataviews-layouts/index.ts +16 -2
  244. package/src/dataviews-layouts/picker-grid/index.tsx +490 -0
  245. package/src/dataviews-layouts/picker-grid/style.scss +171 -0
  246. package/src/dataviews-layouts/utils/grid-items.scss +21 -0
  247. package/src/dataviews-layouts/utils/grid-items.tsx +35 -0
  248. package/src/dataviews-layouts/utils/preview-size-picker.tsx +87 -0
  249. package/src/field-types/boolean.tsx +1 -1
  250. package/src/field-types/color.tsx +115 -0
  251. package/src/field-types/index.tsx +15 -0
  252. package/src/field-types/stories/index.story.tsx +719 -0
  253. package/src/field-types/telephone.tsx +71 -0
  254. package/src/field-types/url.tsx +71 -0
  255. package/src/normalize-form-fields.ts +6 -0
  256. package/src/style.scss +4 -0
  257. package/src/test/dataform.tsx +2 -2
  258. package/src/test/dataviews-picker.tsx +478 -0
  259. package/src/test/dataviews.tsx +86 -0
  260. package/src/types.ts +56 -4
  261. package/src/validation.ts +3 -0
  262. package/tsconfig.tsbuildinfo +1 -1
  263. package/build/dataform-controls/boolean.js.map +0 -1
  264. package/build-module/dataform-controls/boolean.js.map +0 -1
  265. package/build-types/components/stories/index.story.d.ts +0 -63
  266. package/build-types/components/stories/index.story.d.ts.map +0 -1
  267. package/build-types/dataform-controls/boolean.d.ts +0 -6
  268. package/build-types/dataform-controls/boolean.d.ts.map +0 -1
  269. package/src/components/stories/index.story.tsx +0 -372
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__experimentalHStack","HStack","__experimentalSpacer","Spacer","__experimentalVStack","VStack","__experimentalHeading","Heading","useContext","DataFormContext","DataFormLayout","isCombinedField","normalizeLayout","getFormFieldLayout","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Header","title","className","spacing","children","alignment","level","size","EMPTY_WRAPPER","FormRowField","data","field","onChange","hideLabelFromVision","fields","layout","type","form","map","child","id","label","as","FieldLayout","nestedField","fieldDefinition","find","f","Edit","RegularLayout","component"],"sources":["@wordpress/dataviews/src/dataforms-layouts/row/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalSpacer as Spacer,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n} from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { FieldLayoutProps, Form, NormalizedRowLayout } from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\nimport { normalizeLayout } from '../../normalize-form-fields';\nimport { getFormFieldLayout } from '..';\n\nfunction Header( { title }: { title: string } ) {\n\treturn (\n\t\t<VStack className=\"dataforms-layouts-row__header\" spacing={ 4 }>\n\t\t\t<HStack alignment=\"center\">\n\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t<Spacer />\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nconst EMPTY_WRAPPER = ( { children }: { children: React.ReactNode } ) => (\n\t<>{ children }</>\n);\n\nexport default function FormRowField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\n\tconst layout = normalizeLayout( {\n\t\t...field.layout,\n\t\ttype: 'row',\n\t} ) as NormalizedRowLayout;\n\n\tif ( isCombinedField( field ) ) {\n\t\tconst form: Form = {\n\t\t\tfields: field.children.map( ( child ) => {\n\t\t\t\tif ( typeof child === 'string' ) {\n\t\t\t\t\treturn { id: child };\n\t\t\t\t}\n\t\t\t\treturn child;\n\t\t\t} ),\n\t\t};\n\n\t\treturn (\n\t\t\t<div className=\"dataforms-layouts-row__field\">\n\t\t\t\t{ ! hideLabelFromVision && field.label && (\n\t\t\t\t\t<Header title={ field.label } />\n\t\t\t\t) }\n\t\t\t\t<HStack alignment={ layout.alignment } spacing={ 4 }>\n\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tas={ EMPTY_WRAPPER }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( FieldLayout, nestedField ) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={ nestedField.id }\n\t\t\t\t\t\t\t\tclassName=\"dataforms-layouts-row__field-control\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tfield={ nestedField }\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DataFormLayout>\n\t\t\t\t</HStack>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst fieldDefinition = fields.find( ( f ) => f.id === field.id );\n\n\tif ( ! fieldDefinition || ! fieldDefinition.Edit ) {\n\t\treturn null;\n\t}\n\n\tconst RegularLayout = getFormFieldLayout( 'regular' )?.component;\n\tif ( ! RegularLayout ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"dataforms-layouts-row__field-control\">\n\t\t\t\t<RegularLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -20,6 +20,7 @@ import DataViewsSelectionCheckbox from '../../components/dataviews-selection-che
20
20
  import DataViewsContext from '../../components/dataviews-context';
21
21
  import { useHasAPossibleBulkAction, useSomeItemHasAPossibleBulkAction } from '../../components/dataviews-bulk-actions';
22
22
  import { ItemClickWrapper } from '../utils/item-click-wrapper';
23
+ import { GridItems } from '../utils/grid-items';
23
24
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
24
25
  const {
25
26
  Badge
@@ -62,6 +63,7 @@ function GridItem({
62
63
  item: item,
63
64
  field: titleField
64
65
  }) : null;
66
+ const shouldRenderMedia = showMedia && renderedMediaField;
65
67
  let mediaA11yProps;
66
68
  let titleA11yProps;
67
69
  if (isItemClickable(item) && onClickItem) {
@@ -99,7 +101,7 @@ function GridItem({
99
101
  role: infiniteScrollEnabled ? 'article' : undefined,
100
102
  "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : undefined,
101
103
  "aria-posinset": posinset,
102
- children: [showMedia && renderedMediaField && /*#__PURE__*/_jsx(ItemClickWrapper, {
104
+ children: [shouldRenderMedia && /*#__PURE__*/_jsx(ItemClickWrapper, {
103
105
  item: item,
104
106
  isItemClickable: isItemClickable,
105
107
  onClickItem: onClickItem,
@@ -107,14 +109,21 @@ function GridItem({
107
109
  className: "dataviews-view-grid__media",
108
110
  ...mediaA11yProps,
109
111
  children: renderedMediaField
110
- }), hasBulkActions && showMedia && renderedMediaField && /*#__PURE__*/_jsx(DataViewsSelectionCheckbox, {
112
+ }), hasBulkActions && shouldRenderMedia && /*#__PURE__*/_jsx(DataViewsSelectionCheckbox, {
111
113
  item: item,
112
114
  selection: selection,
113
115
  onChangeSelection: onChangeSelection,
114
116
  getItemId: getItemId,
115
117
  titleField: titleField,
116
118
  disabled: !hasBulkAction
117
- }), /*#__PURE__*/_jsxs(HStack, {
119
+ }), !showTitle && shouldRenderMedia && !!actions?.length && /*#__PURE__*/_jsx("div", {
120
+ className: "dataviews-view-grid__media-actions",
121
+ children: /*#__PURE__*/_jsx(ItemActions, {
122
+ item: item,
123
+ actions: actions,
124
+ isCompact: true
125
+ })
126
+ }), showTitle && /*#__PURE__*/_jsxs(HStack, {
118
127
  justify: "space-between",
119
128
  className: "dataviews-view-grid__title-actions",
120
129
  children: [/*#__PURE__*/_jsx(ItemClickWrapper, {
@@ -263,11 +272,9 @@ function ViewGrid({
263
272
  children: sprintf(
264
273
  // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
265
274
  __('%1$s: %2$s'), groupField.label, groupName)
266
- }), /*#__PURE__*/_jsx("div", {
275
+ }), /*#__PURE__*/_jsx(GridItems, {
267
276
  className: clsx('dataviews-view-grid', className),
268
- style: {
269
- gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))`
270
- },
277
+ previewSize: usedPreviewSize,
271
278
  "aria-busy": isLoading,
272
279
  ref: resizeObserverRef,
273
280
  children: groupItems.map(item => {
@@ -296,11 +303,9 @@ function ViewGrid({
296
303
  }, groupName))
297
304
  }),
298
305
  // Render a single grid with all data.
299
- hasData && !dataByGroup && /*#__PURE__*/_jsx("div", {
306
+ hasData && !dataByGroup && /*#__PURE__*/_jsx(GridItems, {
300
307
  className: clsx('dataviews-view-grid', className),
301
- style: {
302
- gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))`
303
- },
308
+ previewSize: usedPreviewSize,
304
309
  "aria-busy": isLoading,
305
310
  ref: resizeObserverRef,
306
311
  role: isInfiniteScroll ? 'feed' : undefined,
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","Tooltip","privateApis","componentsPrivateApis","__","sprintf","useInstanceId","isAppleOS","useContext","unlock","ItemActions","DataViewsSelectionCheckbox","DataViewsContext","useHasAPossibleBulkAction","useSomeItemHasAPossibleBulkAction","ItemClickWrapper","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Badge","GridItem","view","selection","onChangeSelection","onClickItem","isItemClickable","renderItemLink","getItemId","item","actions","mediaField","titleField","descriptionField","regularFields","badgeFields","hasBulkActions","config","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","hasBulkAction","id","instanceId","isSelected","includes","renderedMediaField","render","field","renderedTitleField","mediaA11yProps","titleA11yProps","paginationInfo","spacing","className","onClickCapture","event","metaKey","ctrlKey","stopPropagation","preventDefault","filter","itemId","role","undefined","totalItems","children","disabled","justify","length","isCompact","wrap","alignment","map","gap","expanded","style","height","direction","text","label","header","maxHeight","ViewGrid","data","fields","isLoading","empty","_view$fields","resizeObserverRef","find","otherFields","reduce","accumulator","fieldId","f","key","layout","push","hasData","usedPreviewSize","previewSize","size","groupField","groupByField","dataByGroup","groups","groupName","getValue","has","set","get","Map","isInfiniteScroll","Array","from","entries","groupItems","gridTemplateColumns","ref","sizes","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tTooltip,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n\tViewGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nconst { Badge } = unlock( componentsPrivateApis );\n\ninterface GridItemProps< Item > {\n\tview: ViewGridType;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\thasBulkActions: boolean;\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\thasBulkActions,\n\tconfig,\n\tposinset,\n}: GridItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst instanceId = useInstanceId( GridItem );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tlet mediaA11yProps;\n\tlet titleA11yProps;\n\tif ( isItemClickable( item ) && onClickItem ) {\n\t\tif ( renderedTitleField ) {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t\ttitleA11yProps = {\n\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t} else {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t};\n\t\t}\n\t}\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 0 }\n\t\t\tkey={ id }\n\t\t\tclassName={ clsx( 'dataviews-view-grid__card', {\n\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t} ) }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tif ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\taria-posinset={ posinset }\n\t\t>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__media\"\n\t\t\t\t\t{ ...mediaA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t{ hasBulkActions && showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t>\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip text={ field.label }>\n\t\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</VStack>\n\t);\n}\n\nfunction ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewGridProps< Item > ) {\n\tconst { resizeObserverRef } = useContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst usedPreviewSize = view.layout?.previewSize;\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( f ) => f.id === view.groupByField )\n\t\t: null;\n\n\t// Group data by groupByField if specified\n\tconst dataByGroup = groupField\n\t\t? data.reduce( ( groups: Map< string, typeof data >, item ) => {\n\t\t\t\tconst groupName = groupField.getValue( { item } );\n\t\t\t\tif ( ! groups.has( groupName ) ) {\n\t\t\t\t\tgroups.set( groupName, [] );\n\t\t\t\t}\n\t\t\t\tgroups.get( groupName )?.push( item );\n\t\t\t\treturn groups;\n\t\t }, new Map< string, typeof data >() )\n\t\t: null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<VStack key={ groupName } spacing={ 2 }>\n\t\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-grid__group-header\">\n\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t'dataviews-view-grid',\n\t\t\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( 'dataviews-view-grid', className ) }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\trole={ isInfiniteScroll ? 'feed' : undefined }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll ? index + 1 : undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<p>{ isLoading ? <Spinner /> : empty }</p>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewGrid;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","Tooltip","privateApis","componentsPrivateApis","__","sprintf","useInstanceId","isAppleOS","useContext","unlock","ItemActions","DataViewsSelectionCheckbox","DataViewsContext","useHasAPossibleBulkAction","useSomeItemHasAPossibleBulkAction","ItemClickWrapper","GridItems","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Badge","GridItem","view","selection","onChangeSelection","onClickItem","isItemClickable","renderItemLink","getItemId","item","actions","mediaField","titleField","descriptionField","regularFields","badgeFields","hasBulkActions","config","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","hasBulkAction","id","instanceId","isSelected","includes","renderedMediaField","render","field","renderedTitleField","shouldRenderMedia","mediaA11yProps","titleA11yProps","paginationInfo","spacing","className","onClickCapture","event","metaKey","ctrlKey","stopPropagation","preventDefault","filter","itemId","role","undefined","totalItems","children","disabled","length","isCompact","justify","wrap","alignment","map","gap","expanded","style","height","direction","text","label","header","maxHeight","ViewGrid","data","fields","isLoading","empty","_view$fields","resizeObserverRef","find","otherFields","reduce","accumulator","fieldId","f","key","layout","push","hasData","usedPreviewSize","previewSize","size","groupField","groupByField","dataByGroup","groups","groupName","getValue","has","set","get","Map","isInfiniteScroll","Array","from","entries","groupItems","ref","sizes","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tTooltip,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n\tViewGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nimport { GridItems } from '../utils/grid-items';\nconst { Badge } = unlock( componentsPrivateApis );\n\ninterface GridItemProps< Item > {\n\tview: ViewGridType;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\thasBulkActions: boolean;\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\thasBulkActions,\n\tconfig,\n\tposinset,\n}: GridItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst instanceId = useInstanceId( GridItem );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\tconst shouldRenderMedia = showMedia && renderedMediaField;\n\n\tlet mediaA11yProps;\n\tlet titleA11yProps;\n\tif ( isItemClickable( item ) && onClickItem ) {\n\t\tif ( renderedTitleField ) {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t\ttitleA11yProps = {\n\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t} else {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t};\n\t\t}\n\t}\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 0 }\n\t\t\tkey={ id }\n\t\t\tclassName={ clsx( 'dataviews-view-grid__card', {\n\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t} ) }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tif ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\taria-posinset={ posinset }\n\t\t>\n\t\t\t{ shouldRenderMedia && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__media\"\n\t\t\t\t\t{ ...mediaA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t{ hasBulkActions && shouldRenderMedia && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showTitle && shouldRenderMedia && !! actions?.length && (\n\t\t\t\t<div className=\"dataviews-view-grid__media-actions\">\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showTitle && (\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t\t>\n\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tisCompact\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip text={ field.label }>\n\t\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</VStack>\n\t);\n}\n\nfunction ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewGridProps< Item > ) {\n\tconst { resizeObserverRef } = useContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst usedPreviewSize = view.layout?.previewSize;\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( f ) => f.id === view.groupByField )\n\t\t: null;\n\n\t// Group data by groupByField if specified\n\tconst dataByGroup = groupField\n\t\t? data.reduce( ( groups: Map< string, typeof data >, item ) => {\n\t\t\t\tconst groupName = groupField.getValue( { item } );\n\t\t\t\tif ( ! groups.has( groupName ) ) {\n\t\t\t\t\tgroups.set( groupName, [] );\n\t\t\t\t}\n\t\t\t\tgroups.get( groupName )?.push( item );\n\t\t\t\treturn groups;\n\t\t }, new Map< string, typeof data >() )\n\t\t: null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<VStack key={ groupName } spacing={ 2 }>\n\t\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-grid__group-header\">\n\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t'dataviews-view-grid',\n\t\t\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</GridItems>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<GridItems\n\t\t\t\t\t\tclassName={ clsx( 'dataviews-view-grid', className ) }\n\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\trole={ isInfiniteScroll ? 'feed' : undefined }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll ? index + 1 : undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</GridItems>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<p>{ isLoading ? <Spinner /> : empty }</p>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewGrid;\n"],"mappings":"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","ignoreList":[]}
@@ -10,8 +10,9 @@ import { blockTable, category, formatListBullets, formatListBulletsRTL } from '@
10
10
  import ViewTable from './table';
11
11
  import ViewGrid from './grid';
12
12
  import ViewList from './list';
13
- import { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';
14
- import PreviewSizePicker from './grid/preview-size-picker';
13
+ import ViewPickerGrid from './picker-grid';
14
+ import { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE, LAYOUT_PICKER_GRID } from '../constants';
15
+ import PreviewSizePicker from './utils/preview-size-picker';
15
16
  import DensityPicker from './table/density-picker';
16
17
  export const VIEW_LAYOUTS = [{
17
18
  type: LAYOUT_TABLE,
@@ -30,5 +31,12 @@ export const VIEW_LAYOUTS = [{
30
31
  label: __('List'),
31
32
  component: ViewList,
32
33
  icon: isRTL() ? formatListBulletsRTL : formatListBullets
34
+ }, {
35
+ type: LAYOUT_PICKER_GRID,
36
+ label: __('Grid'),
37
+ component: ViewPickerGrid,
38
+ icon: category,
39
+ viewConfigOptions: PreviewSizePicker,
40
+ isPicker: true
33
41
  }];
34
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","LAYOUT_GRID","LAYOUT_LIST","LAYOUT_TABLE","PreviewSizePicker","DensityPicker","VIEW_LAYOUTS","type","label","component","icon","viewConfigOptions"],"sources":["@wordpress/dataviews/src/dataviews-layouts/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';\nimport PreviewSizePicker from './grid/preview-size-picker';\nimport DensityPicker from './table/density-picker';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,SAAS;AAC/B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,SAASC,WAAW,EAAEC,WAAW,EAAEC,YAAY,QAAQ,cAAc;AACrE,OAAOC,iBAAiB,MAAM,4BAA4B;AAC1D,OAAOC,aAAa,MAAM,wBAAwB;AAElD,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEJ,YAAY;EAClBK,KAAK,EAAEhB,EAAE,CAAE,OAAQ,CAAC;EACpBiB,SAAS,EAAEX,SAAS;EACpBY,IAAI,EAAEhB,UAAU;EAChBiB,iBAAiB,EAAEN;AACpB,CAAC,EACD;EACCE,IAAI,EAAEN,WAAW;EACjBO,KAAK,EAAEhB,EAAE,CAAE,MAAO,CAAC;EACnBiB,SAAS,EAAEV,QAAQ;EACnBW,IAAI,EAAEf,QAAQ;EACdgB,iBAAiB,EAAEP;AACpB,CAAC,EACD;EACCG,IAAI,EAAEL,WAAW;EACjBM,KAAK,EAAEhB,EAAE,CAAE,MAAO,CAAC;EACnBiB,SAAS,EAAET,QAAQ;EACnBU,IAAI,EAAEjB,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,CACD","ignoreList":[]}
1
+ {"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","ViewPickerGrid","LAYOUT_GRID","LAYOUT_LIST","LAYOUT_TABLE","LAYOUT_PICKER_GRID","PreviewSizePicker","DensityPicker","VIEW_LAYOUTS","type","label","component","icon","viewConfigOptions","isPicker"],"sources":["@wordpress/dataviews/src/dataviews-layouts/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport ViewPickerGrid from './picker-grid';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_PICKER_GRID,\n} from '../constants';\nimport PreviewSizePicker from './utils/preview-size-picker';\nimport DensityPicker from './table/density-picker';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewPickerGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t\tisPicker: true,\n\t},\n];\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,SAAS;AAC/B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,OAAOC,cAAc,MAAM,eAAe;AAC1C,SACCC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,kBAAkB,QACZ,cAAc;AACrB,OAAOC,iBAAiB,MAAM,6BAA6B;AAC3D,OAAOC,aAAa,MAAM,wBAAwB;AAElD,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEL,YAAY;EAClBM,KAAK,EAAElB,EAAE,CAAE,OAAQ,CAAC;EACpBmB,SAAS,EAAEb,SAAS;EACpBc,IAAI,EAAElB,UAAU;EAChBmB,iBAAiB,EAAEN;AACpB,CAAC,EACD;EACCE,IAAI,EAAEP,WAAW;EACjBQ,KAAK,EAAElB,EAAE,CAAE,MAAO,CAAC;EACnBmB,SAAS,EAAEZ,QAAQ;EACnBa,IAAI,EAAEjB,QAAQ;EACdkB,iBAAiB,EAAEP;AACpB,CAAC,EACD;EACCG,IAAI,EAAEN,WAAW;EACjBO,KAAK,EAAElB,EAAE,CAAE,MAAO,CAAC;EACnBmB,SAAS,EAAEX,QAAQ;EACnBY,IAAI,EAAEnB,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,EACD;EACCa,IAAI,EAAEJ,kBAAkB;EACxBK,KAAK,EAAElB,EAAE,CAAE,MAAO,CAAC;EACnBmB,SAAS,EAAEV,cAAc;EACzBW,IAAI,EAAEjB,QAAQ;EACdkB,iBAAiB,EAAEP,iBAAiB;EACpCQ,QAAQ,EAAE;AACX,CAAC,CACD","ignoreList":[]}
@@ -0,0 +1,348 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+ /**
6
+ * WordPress dependencies
7
+ */
8
+ import { __experimentalHStack as HStack, __experimentalVStack as VStack, Spinner, Flex, FlexItem, privateApis as componentsPrivateApis, Composite } from '@wordpress/components';
9
+ import { __, sprintf } from '@wordpress/i18n';
10
+ import { useInstanceId } from '@wordpress/compose';
11
+ import { useContext } from '@wordpress/element';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { unlock } from '../../lock-unlock';
17
+ import DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';
18
+ import DataViewsContext from '../../components/dataviews-context';
19
+ import { useIsMultiselectPicker } from '../../components/dataviews-picker/footer';
20
+ import { GridItems } from '../utils/grid-items';
21
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
+ const {
23
+ Badge
24
+ } = unlock(componentsPrivateApis);
25
+ function GridItem({
26
+ view,
27
+ multiselect,
28
+ selection,
29
+ onChangeSelection,
30
+ getItemId,
31
+ item,
32
+ mediaField,
33
+ titleField,
34
+ descriptionField,
35
+ regularFields,
36
+ badgeFields,
37
+ config,
38
+ posinset,
39
+ setsize
40
+ }) {
41
+ const {
42
+ showTitle = true,
43
+ showMedia = true,
44
+ showDescription = true
45
+ } = view;
46
+ const id = getItemId(item);
47
+ const isSelected = selection.includes(id);
48
+ const renderedMediaField = mediaField?.render ? /*#__PURE__*/_jsx(mediaField.render, {
49
+ item: item,
50
+ field: mediaField,
51
+ config: config
52
+ }) : null;
53
+ const renderedTitleField = showTitle && titleField?.render ? /*#__PURE__*/_jsx(titleField.render, {
54
+ item: item,
55
+ field: titleField
56
+ }) : null;
57
+ return /*#__PURE__*/_jsxs(Composite.Item, {
58
+ render: ({
59
+ children,
60
+ ...props
61
+ }) => /*#__PURE__*/_jsx(VStack, {
62
+ spacing: 0,
63
+ children: children,
64
+ ...props
65
+ }),
66
+ role: "option",
67
+ "aria-posinset": posinset,
68
+ "aria-setsize": setsize,
69
+ className: clsx('dataviews-view-picker-grid__card', {
70
+ 'is-selected': isSelected
71
+ }),
72
+ "aria-selected": isSelected,
73
+ onClick: () => {
74
+ if (isSelected) {
75
+ onChangeSelection(selection.filter(itemId => id !== itemId));
76
+ } else {
77
+ const newSelection = multiselect ? [...selection, id] : [id];
78
+ onChangeSelection(newSelection);
79
+ }
80
+ },
81
+ children: [showMedia && renderedMediaField && /*#__PURE__*/_jsx("div", {
82
+ className: "dataviews-view-picker-grid__media",
83
+ children: renderedMediaField
84
+ }), showMedia && renderedMediaField && /*#__PURE__*/_jsx(DataViewsSelectionCheckbox, {
85
+ item: item,
86
+ selection: selection,
87
+ onChangeSelection: onChangeSelection,
88
+ getItemId: getItemId,
89
+ titleField: titleField,
90
+ disabled: false,
91
+ "aria-hidden": true,
92
+ tabIndex: -1
93
+ }), /*#__PURE__*/_jsx(HStack, {
94
+ justify: "space-between",
95
+ className: "dataviews-view-picker-grid__title-actions",
96
+ children: /*#__PURE__*/_jsx("div", {
97
+ className: "dataviews-view-picker-grid__title-field dataviews-title-field",
98
+ children: renderedTitleField
99
+ })
100
+ }), /*#__PURE__*/_jsxs(VStack, {
101
+ spacing: 1,
102
+ children: [showDescription && descriptionField?.render && /*#__PURE__*/_jsx(descriptionField.render, {
103
+ item: item,
104
+ field: descriptionField
105
+ }), !!badgeFields?.length && /*#__PURE__*/_jsx(HStack, {
106
+ className: "dataviews-view-picker-grid__badge-fields",
107
+ spacing: 2,
108
+ wrap: true,
109
+ alignment: "top",
110
+ justify: "flex-start",
111
+ children: badgeFields.map(field => {
112
+ return /*#__PURE__*/_jsx(Badge, {
113
+ className: "dataviews-view-picker-grid__field-value",
114
+ children: /*#__PURE__*/_jsx(field.render, {
115
+ item: item,
116
+ field: field
117
+ })
118
+ }, field.id);
119
+ })
120
+ }), !!regularFields?.length && /*#__PURE__*/_jsx(VStack, {
121
+ className: "dataviews-view-picker-grid__fields",
122
+ spacing: 1,
123
+ children: regularFields.map(field => {
124
+ return /*#__PURE__*/_jsx(Flex, {
125
+ className: "dataviews-view-picker-grid__field",
126
+ gap: 1,
127
+ justify: "flex-start",
128
+ expanded: true,
129
+ style: {
130
+ height: 'auto'
131
+ },
132
+ direction: "row",
133
+ children: /*#__PURE__*/_jsxs(_Fragment, {
134
+ children: [/*#__PURE__*/_jsx(FlexItem, {
135
+ className: "dataviews-view-picker-grid__field-name",
136
+ children: field.header
137
+ }), /*#__PURE__*/_jsx(FlexItem, {
138
+ className: "dataviews-view-picker-grid__field-value",
139
+ style: {
140
+ maxHeight: 'none'
141
+ },
142
+ children: /*#__PURE__*/_jsx(field.render, {
143
+ item: item,
144
+ field: field
145
+ })
146
+ })]
147
+ })
148
+ }, field.id);
149
+ })
150
+ })]
151
+ })]
152
+ }, id);
153
+ }
154
+ function GridGroup({
155
+ groupName,
156
+ groupField,
157
+ children
158
+ }) {
159
+ const headerId = useInstanceId(GridGroup, 'dataviews-view-picker-grid-group__header');
160
+ return /*#__PURE__*/_jsxs(VStack, {
161
+ spacing: 2,
162
+ role: "group",
163
+ "aria-labelledby": headerId,
164
+ children: [/*#__PURE__*/_jsx("h3", {
165
+ className: "dataviews-view-picker-grid-group__header",
166
+ id: headerId,
167
+ children: sprintf(
168
+ // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
169
+ __('%1$s: %2$s'), groupField.label, groupName)
170
+ }), children]
171
+ }, groupName);
172
+ }
173
+ function ViewPickerGrid({
174
+ actions,
175
+ data,
176
+ fields,
177
+ getItemId,
178
+ isLoading,
179
+ onChangeSelection,
180
+ selection,
181
+ view,
182
+ className,
183
+ empty
184
+ }) {
185
+ var _view$fields, _view$page, _view$perPage;
186
+ const {
187
+ resizeObserverRef,
188
+ paginationInfo,
189
+ itemListLabel
190
+ } = useContext(DataViewsContext);
191
+ const titleField = fields.find(field => field.id === view?.titleField);
192
+ const mediaField = fields.find(field => field.id === view?.mediaField);
193
+ const descriptionField = fields.find(field => field.id === view?.descriptionField);
194
+ const otherFields = (_view$fields = view.fields) !== null && _view$fields !== void 0 ? _view$fields : [];
195
+ const {
196
+ regularFields,
197
+ badgeFields
198
+ } = otherFields.reduce((accumulator, fieldId) => {
199
+ const field = fields.find(f => f.id === fieldId);
200
+ if (!field) {
201
+ return accumulator;
202
+ }
203
+ // If the field is a badge field, add it to the badgeFields array
204
+ // otherwise add it to the rest visibleFields array.
205
+ const key = view.layout?.badgeFields?.includes(fieldId) ? 'badgeFields' : 'regularFields';
206
+ accumulator[key].push(field);
207
+ return accumulator;
208
+ }, {
209
+ regularFields: [],
210
+ badgeFields: []
211
+ });
212
+ const hasData = !!data?.length;
213
+ const usedPreviewSize = view.layout?.previewSize;
214
+ const isMultiselect = useIsMultiselectPicker(actions);
215
+
216
+ /*
217
+ * This is the maximum width that an image can achieve in the grid. The reasoning is:
218
+ * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).
219
+ * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.
220
+ * So each image will never grow past 2*430px plus a little more to account for the gaps.
221
+ */
222
+ const size = '900px';
223
+ const groupField = view.groupByField ? fields.find(f => f.id === view.groupByField) : null;
224
+
225
+ // Group data by groupByField if specified
226
+ const dataByGroup = groupField ? data.reduce((groups, item) => {
227
+ const groupName = groupField.getValue({
228
+ item
229
+ });
230
+ if (!groups.has(groupName)) {
231
+ groups.set(groupName, []);
232
+ }
233
+ groups.get(groupName)?.push(item);
234
+ return groups;
235
+ }, new Map()) : null;
236
+ const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
237
+ const currentPage = (_view$page = view?.page) !== null && _view$page !== void 0 ? _view$page : 1;
238
+ const perPage = (_view$perPage = view?.perPage) !== null && _view$perPage !== void 0 ? _view$perPage : 0;
239
+ const setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;
240
+ return /*#__PURE__*/_jsxs(_Fragment, {
241
+ children: [
242
+ // Render multiple groups.
243
+ hasData && groupField && dataByGroup && /*#__PURE__*/_jsx(Composite, {
244
+ virtualFocus: true,
245
+ orientation: "horizontal",
246
+ role: "listbox",
247
+ "aria-multiselectable": isMultiselect,
248
+ className: clsx('dataviews-view-picker-grid', className),
249
+ "aria-label": itemListLabel,
250
+ render: ({
251
+ children,
252
+ ...props
253
+ }) => /*#__PURE__*/_jsx(VStack, {
254
+ spacing: 4,
255
+ children: children,
256
+ ...props
257
+ }),
258
+ children: Array.from(dataByGroup.entries()).map(([groupName, groupItems]) => /*#__PURE__*/_jsx(GridGroup, {
259
+ groupName: groupName,
260
+ groupField: groupField,
261
+ children: /*#__PURE__*/_jsx(GridItems, {
262
+ previewSize: usedPreviewSize,
263
+ style: {
264
+ gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))`
265
+ },
266
+ "aria-busy": isLoading,
267
+ ref: resizeObserverRef,
268
+ children: groupItems.map(item => {
269
+ const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1;
270
+ return /*#__PURE__*/_jsx(GridItem, {
271
+ view: view,
272
+ multiselect: isMultiselect,
273
+ selection: selection,
274
+ onChangeSelection: onChangeSelection,
275
+ getItemId: getItemId,
276
+ item: item,
277
+ mediaField: mediaField,
278
+ titleField: titleField,
279
+ descriptionField: descriptionField,
280
+ regularFields: regularFields,
281
+ badgeFields: badgeFields,
282
+ config: {
283
+ sizes: size
284
+ },
285
+ posinset: posInSet,
286
+ setsize: setSize
287
+ }, getItemId(item));
288
+ })
289
+ })
290
+ }, groupName))
291
+ }),
292
+ // Render a single grid with all data.
293
+ hasData && !dataByGroup && /*#__PURE__*/_jsx(Composite, {
294
+ render: /*#__PURE__*/_jsx(GridItems, {
295
+ className: clsx('dataviews-view-picker-grid', className),
296
+ previewSize: usedPreviewSize,
297
+ "aria-busy": isLoading,
298
+ ref: resizeObserverRef
299
+ }),
300
+ virtualFocus: true,
301
+ orientation: "horizontal",
302
+ role: "listbox",
303
+ "aria-multiselectable": isMultiselect,
304
+ "aria-label": itemListLabel,
305
+ children: data.map((item, index) => {
306
+ let posinset = isInfiniteScroll ? index + 1 : undefined;
307
+ if (!isInfiniteScroll) {
308
+ // When infinite scroll isn't active, take pagination into account
309
+ // when calculating the posinset.
310
+ posinset = (currentPage - 1) * perPage + index + 1;
311
+ }
312
+ return /*#__PURE__*/_jsx(GridItem, {
313
+ view: view,
314
+ multiselect: isMultiselect,
315
+ selection: selection,
316
+ onChangeSelection: onChangeSelection,
317
+ getItemId: getItemId,
318
+ item: item,
319
+ mediaField: mediaField,
320
+ titleField: titleField,
321
+ descriptionField: descriptionField,
322
+ regularFields: regularFields,
323
+ badgeFields: badgeFields,
324
+ config: {
325
+ sizes: size
326
+ },
327
+ posinset: posinset,
328
+ setsize: setSize
329
+ }, getItemId(item));
330
+ })
331
+ }),
332
+ // Render empty state.
333
+ !hasData && /*#__PURE__*/_jsx("div", {
334
+ className: clsx({
335
+ 'dataviews-loading': isLoading,
336
+ 'dataviews-no-results': !isLoading
337
+ }),
338
+ children: /*#__PURE__*/_jsx("p", {
339
+ children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : empty
340
+ })
341
+ }), hasData && isLoading && /*#__PURE__*/_jsx("p", {
342
+ className: "dataviews-loading-more",
343
+ children: /*#__PURE__*/_jsx(Spinner, {})
344
+ })]
345
+ });
346
+ }
347
+ export default ViewPickerGrid;
348
+ //# sourceMappingURL=index.js.map