@wordpress/dataviews 9.0.1-next.6870dfe5b.0 → 9.0.1-next.a730c9c8c.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 (255) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/README.md +107 -12
  3. package/build/components/dataviews-filters/input-widget.js +48 -4
  4. package/build/components/dataviews-filters/input-widget.js.map +1 -1
  5. package/build/components/dataviews-layout/index.js +3 -1
  6. package/build/components/dataviews-layout/index.js.map +1 -1
  7. package/build/dataform-controls/array.js +9 -7
  8. package/build/dataform-controls/array.js.map +1 -1
  9. package/build/dataform-controls/checkbox.js +31 -20
  10. package/build/dataform-controls/checkbox.js.map +1 -1
  11. package/build/dataform-controls/color.js +29 -24
  12. package/build/dataform-controls/color.js.map +1 -1
  13. package/build/dataform-controls/date.js +32 -24
  14. package/build/dataform-controls/date.js.map +1 -1
  15. package/build/dataform-controls/datetime.js +133 -19
  16. package/build/dataform-controls/datetime.js.map +1 -1
  17. package/build/dataform-controls/email.js +9 -3
  18. package/build/dataform-controls/email.js.map +1 -1
  19. package/build/dataform-controls/index.js +27 -0
  20. package/build/dataform-controls/index.js.map +1 -1
  21. package/build/dataform-controls/integer.js +47 -34
  22. package/build/dataform-controls/integer.js.map +1 -1
  23. package/build/dataform-controls/password.js +47 -0
  24. package/build/dataform-controls/password.js.map +1 -0
  25. package/build/dataform-controls/radio.js +42 -9
  26. package/build/dataform-controls/radio.js.map +1 -1
  27. package/build/dataform-controls/relative-date-control.js +6 -10
  28. package/build/dataform-controls/relative-date-control.js.map +1 -1
  29. package/build/dataform-controls/select.js +41 -10
  30. package/build/dataform-controls/select.js.map +1 -1
  31. package/build/dataform-controls/telephone.js +9 -3
  32. package/build/dataform-controls/telephone.js.map +1 -1
  33. package/build/dataform-controls/text.js +16 -4
  34. package/build/dataform-controls/text.js.map +1 -1
  35. package/build/dataform-controls/textarea.js +81 -0
  36. package/build/dataform-controls/textarea.js.map +1 -0
  37. package/build/dataform-controls/toggle-group.js +36 -6
  38. package/build/dataform-controls/toggle-group.js.map +1 -1
  39. package/build/dataform-controls/toggle.js +33 -22
  40. package/build/dataform-controls/toggle.js.map +1 -1
  41. package/build/dataform-controls/url.js +9 -3
  42. package/build/dataform-controls/url.js.map +1 -1
  43. package/build/dataform-controls/utils/{validated-text.js → validated-input.js} +36 -29
  44. package/build/dataform-controls/utils/validated-input.js.map +1 -0
  45. package/build/dataforms-layouts/panel/dropdown.js +10 -14
  46. package/build/dataforms-layouts/panel/dropdown.js.map +1 -1
  47. package/build/dataforms-layouts/panel/index.js +24 -11
  48. package/build/dataforms-layouts/panel/index.js.map +1 -1
  49. package/build/dataforms-layouts/panel/modal.js +22 -27
  50. package/build/dataforms-layouts/panel/modal.js.map +1 -1
  51. package/build/dataforms-layouts/panel/summary-button.js +67 -0
  52. package/build/dataforms-layouts/panel/summary-button.js.map +1 -0
  53. package/build/dataforms-layouts/regular/index.js +7 -9
  54. package/build/dataforms-layouts/regular/index.js.map +1 -1
  55. package/build/dataviews-layouts/grid/index.js +5 -15
  56. package/build/dataviews-layouts/grid/index.js.map +1 -1
  57. package/build/dataviews-layouts/list/index.js +47 -2
  58. package/build/dataviews-layouts/list/index.js.map +1 -1
  59. package/build/dataviews-layouts/picker-grid/index.js +5 -15
  60. package/build/dataviews-layouts/picker-grid/index.js.map +1 -1
  61. package/build/dataviews-layouts/table/index.js +5 -17
  62. package/build/dataviews-layouts/table/index.js.map +1 -1
  63. package/build/dataviews-layouts/utils/get-data-by-group.js +23 -0
  64. package/build/dataviews-layouts/utils/get-data-by-group.js.map +1 -0
  65. package/build/field-types/index.js +4 -0
  66. package/build/field-types/index.js.map +1 -1
  67. package/build/field-types/password.js +51 -0
  68. package/build/field-types/password.js.map +1 -0
  69. package/build/normalize-fields.js +17 -0
  70. package/build/normalize-fields.js.map +1 -1
  71. package/build/types.js.map +1 -1
  72. package/build/validation.js +1 -1
  73. package/build/validation.js.map +1 -1
  74. package/build-module/components/dataviews-filters/input-widget.js +48 -4
  75. package/build-module/components/dataviews-filters/input-widget.js.map +1 -1
  76. package/build-module/components/dataviews-layout/index.js +3 -1
  77. package/build-module/components/dataviews-layout/index.js.map +1 -1
  78. package/build-module/dataform-controls/array.js +9 -7
  79. package/build-module/dataform-controls/array.js.map +1 -1
  80. package/build-module/dataform-controls/checkbox.js +31 -21
  81. package/build-module/dataform-controls/checkbox.js.map +1 -1
  82. package/build-module/dataform-controls/color.js +28 -24
  83. package/build-module/dataform-controls/color.js.map +1 -1
  84. package/build-module/dataform-controls/date.js +32 -24
  85. package/build-module/dataform-controls/date.js.map +1 -1
  86. package/build-module/dataform-controls/datetime.js +135 -21
  87. package/build-module/dataform-controls/datetime.js.map +1 -1
  88. package/build-module/dataform-controls/email.js +8 -2
  89. package/build-module/dataform-controls/email.js.map +1 -1
  90. package/build-module/dataform-controls/index.js +27 -0
  91. package/build-module/dataform-controls/index.js.map +1 -1
  92. package/build-module/dataform-controls/integer.js +46 -34
  93. package/build-module/dataform-controls/integer.js.map +1 -1
  94. package/build-module/dataform-controls/password.js +38 -0
  95. package/build-module/dataform-controls/password.js.map +1 -0
  96. package/build-module/dataform-controls/radio.js +44 -11
  97. package/build-module/dataform-controls/radio.js.map +1 -1
  98. package/build-module/dataform-controls/relative-date-control.js +6 -10
  99. package/build-module/dataform-controls/relative-date-control.js.map +1 -1
  100. package/build-module/dataform-controls/select.js +43 -12
  101. package/build-module/dataform-controls/select.js.map +1 -1
  102. package/build-module/dataform-controls/telephone.js +8 -2
  103. package/build-module/dataform-controls/telephone.js.map +1 -1
  104. package/build-module/dataform-controls/text.js +15 -3
  105. package/build-module/dataform-controls/text.js.map +1 -1
  106. package/build-module/dataform-controls/textarea.js +74 -0
  107. package/build-module/dataform-controls/textarea.js.map +1 -0
  108. package/build-module/dataform-controls/toggle-group.js +38 -8
  109. package/build-module/dataform-controls/toggle-group.js.map +1 -1
  110. package/build-module/dataform-controls/toggle.js +33 -23
  111. package/build-module/dataform-controls/toggle.js.map +1 -1
  112. package/build-module/dataform-controls/url.js +8 -2
  113. package/build-module/dataform-controls/url.js.map +1 -1
  114. package/build-module/dataform-controls/utils/validated-input.js +76 -0
  115. package/build-module/dataform-controls/utils/validated-input.js.map +1 -0
  116. package/build-module/dataforms-layouts/panel/dropdown.js +10 -15
  117. package/build-module/dataforms-layouts/panel/dropdown.js.map +1 -1
  118. package/build-module/dataforms-layouts/panel/index.js +24 -11
  119. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  120. package/build-module/dataforms-layouts/panel/modal.js +22 -28
  121. package/build-module/dataforms-layouts/panel/modal.js.map +1 -1
  122. package/build-module/dataforms-layouts/panel/summary-button.js +60 -0
  123. package/build-module/dataforms-layouts/panel/summary-button.js.map +1 -0
  124. package/build-module/dataforms-layouts/regular/index.js +8 -10
  125. package/build-module/dataforms-layouts/regular/index.js.map +1 -1
  126. package/build-module/dataviews-layouts/grid/index.js +6 -16
  127. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  128. package/build-module/dataviews-layouts/list/index.js +48 -3
  129. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  130. package/build-module/dataviews-layouts/picker-grid/index.js +6 -16
  131. package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -1
  132. package/build-module/dataviews-layouts/table/index.js +5 -17
  133. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  134. package/build-module/dataviews-layouts/utils/get-data-by-group.js +17 -0
  135. package/build-module/dataviews-layouts/utils/get-data-by-group.js.map +1 -0
  136. package/build-module/field-types/index.js +4 -0
  137. package/build-module/field-types/index.js.map +1 -1
  138. package/build-module/field-types/password.js +46 -0
  139. package/build-module/field-types/password.js.map +1 -0
  140. package/build-module/normalize-fields.js +15 -0
  141. package/build-module/normalize-fields.js.map +1 -1
  142. package/build-module/types.js.map +1 -1
  143. package/build-module/validation.js +1 -1
  144. package/build-module/validation.js.map +1 -1
  145. package/build-style/style-rtl.css +9 -6
  146. package/build-style/style.css +9 -6
  147. package/build-types/components/dataform/stories/index.story.d.ts +3 -14
  148. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  149. package/build-types/components/dataviews/stories/fixtures.d.ts +4 -2
  150. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  151. package/build-types/components/dataviews-filters/input-widget.d.ts.map +1 -1
  152. package/build-types/dataform-controls/array.d.ts.map +1 -1
  153. package/build-types/dataform-controls/checkbox.d.ts.map +1 -1
  154. package/build-types/dataform-controls/color.d.ts.map +1 -1
  155. package/build-types/dataform-controls/date.d.ts.map +1 -1
  156. package/build-types/dataform-controls/datetime.d.ts.map +1 -1
  157. package/build-types/dataform-controls/email.d.ts.map +1 -1
  158. package/build-types/dataform-controls/index.d.ts +1 -1
  159. package/build-types/dataform-controls/index.d.ts.map +1 -1
  160. package/build-types/dataform-controls/integer.d.ts.map +1 -1
  161. package/build-types/dataform-controls/password.d.ts +3 -0
  162. package/build-types/dataform-controls/password.d.ts.map +1 -0
  163. package/build-types/dataform-controls/radio.d.ts.map +1 -1
  164. package/build-types/dataform-controls/relative-date-control.d.ts +6 -5
  165. package/build-types/dataform-controls/relative-date-control.d.ts.map +1 -1
  166. package/build-types/dataform-controls/select.d.ts.map +1 -1
  167. package/build-types/dataform-controls/telephone.d.ts.map +1 -1
  168. package/build-types/dataform-controls/text.d.ts +1 -1
  169. package/build-types/dataform-controls/text.d.ts.map +1 -1
  170. package/build-types/dataform-controls/textarea.d.ts +6 -0
  171. package/build-types/dataform-controls/textarea.d.ts.map +1 -0
  172. package/build-types/dataform-controls/toggle-group.d.ts.map +1 -1
  173. package/build-types/dataform-controls/toggle.d.ts.map +1 -1
  174. package/build-types/dataform-controls/url.d.ts.map +1 -1
  175. package/build-types/dataform-controls/utils/validated-input.d.ts +20 -0
  176. package/build-types/dataform-controls/utils/validated-input.d.ts.map +1 -0
  177. package/build-types/dataforms-layouts/panel/dropdown.d.ts +2 -1
  178. package/build-types/dataforms-layouts/panel/dropdown.d.ts.map +1 -1
  179. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  180. package/build-types/dataforms-layouts/panel/modal.d.ts +2 -1
  181. package/build-types/dataforms-layouts/panel/modal.d.ts.map +1 -1
  182. package/build-types/dataforms-layouts/panel/summary-button.d.ts +15 -0
  183. package/build-types/dataforms-layouts/panel/summary-button.d.ts.map +1 -0
  184. package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
  185. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  186. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  187. package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -1
  188. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  189. package/build-types/dataviews-layouts/utils/get-data-by-group.d.ts +6 -0
  190. package/build-types/dataviews-layouts/utils/get-data-by-group.d.ts.map +1 -0
  191. package/build-types/field-types/index.d.ts.map +1 -1
  192. package/build-types/field-types/password.d.ts +17 -0
  193. package/build-types/field-types/password.d.ts.map +1 -0
  194. package/build-types/field-types/stories/index.story.d.ts +5 -1
  195. package/build-types/field-types/stories/index.story.d.ts.map +1 -1
  196. package/build-types/normalize-fields.d.ts +3 -0
  197. package/build-types/normalize-fields.d.ts.map +1 -1
  198. package/build-types/types.d.ts +67 -4
  199. package/build-types/types.d.ts.map +1 -1
  200. package/build-types/validation.d.ts.map +1 -1
  201. package/build-wp/index.js +1670 -1350
  202. package/package.json +16 -15
  203. package/src/components/dataform/stories/index.story.tsx +489 -17
  204. package/src/components/dataviews/stories/fixtures.tsx +99 -41
  205. package/src/components/dataviews/stories/index.story.tsx +2 -2
  206. package/src/components/dataviews-filters/input-widget.tsx +44 -5
  207. package/src/components/dataviews-layout/index.tsx +1 -1
  208. package/src/components/dataviews-picker/stories/index.story.tsx +1 -1
  209. package/src/dataform-controls/array.tsx +4 -6
  210. package/src/dataform-controls/checkbox.tsx +41 -24
  211. package/src/dataform-controls/color.tsx +33 -24
  212. package/src/dataform-controls/date.tsx +47 -21
  213. package/src/dataform-controls/datetime.tsx +171 -23
  214. package/src/dataform-controls/email.tsx +10 -2
  215. package/src/dataform-controls/index.tsx +30 -0
  216. package/src/dataform-controls/integer.tsx +82 -49
  217. package/src/dataform-controls/password.tsx +50 -0
  218. package/src/dataform-controls/radio.tsx +53 -11
  219. package/src/dataform-controls/relative-date-control.tsx +11 -10
  220. package/src/dataform-controls/select.tsx +53 -10
  221. package/src/dataform-controls/telephone.tsx +10 -2
  222. package/src/dataform-controls/text.tsx +19 -2
  223. package/src/dataform-controls/textarea.tsx +85 -0
  224. package/src/dataform-controls/toggle-group.tsx +50 -10
  225. package/src/dataform-controls/toggle.tsx +41 -24
  226. package/src/dataform-controls/url.tsx +10 -2
  227. package/src/dataform-controls/utils/validated-input.tsx +109 -0
  228. package/src/dataforms-layouts/panel/dropdown.tsx +12 -23
  229. package/src/dataforms-layouts/panel/index.tsx +39 -16
  230. package/src/dataforms-layouts/panel/modal.tsx +24 -30
  231. package/src/dataforms-layouts/panel/summary-button.tsx +92 -0
  232. package/src/dataforms-layouts/regular/index.tsx +9 -7
  233. package/src/dataforms-layouts/regular/style.scss +0 -6
  234. package/src/dataviews-layouts/grid/index.tsx +9 -14
  235. package/src/dataviews-layouts/grid/style.scss +1 -0
  236. package/src/dataviews-layouts/list/index.tsx +74 -2
  237. package/src/dataviews-layouts/list/style.scss +8 -0
  238. package/src/dataviews-layouts/picker-grid/index.tsx +9 -13
  239. package/src/dataviews-layouts/table/index.tsx +10 -14
  240. package/src/dataviews-layouts/utils/get-data-by-group.ts +18 -0
  241. package/src/field-types/index.tsx +5 -0
  242. package/src/field-types/password.tsx +46 -0
  243. package/src/field-types/stories/index.story.tsx +138 -1
  244. package/src/normalize-fields.ts +18 -0
  245. package/src/test/filter-and-sort-data-view.js +148 -138
  246. package/src/test/normalize-fields.ts +114 -0
  247. package/src/types.ts +74 -3
  248. package/src/validation.ts +2 -0
  249. package/tsconfig.tsbuildinfo +1 -1
  250. package/build/dataform-controls/utils/validated-text.js.map +0 -1
  251. package/build-module/dataform-controls/utils/validated-text.js +0 -70
  252. package/build-module/dataform-controls/utils/validated-text.js.map +0 -1
  253. package/build-types/dataform-controls/utils/validated-text.d.ts +0 -16
  254. package/build-types/dataform-controls/utils/validated-text.d.ts.map +0 -1
  255. package/src/dataform-controls/utils/validated-text.tsx +0 -96
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useContext","useMemo","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalSpacer","Spacer","DataFormContext","DataFormLayout","isCombinedField","DEFAULT_LAYOUT","normalizeLayout","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Header","title","className","spacing","children","alignment","level","size","FormRegularField","data","field","onChange","hideLabelFromVision","fields","form","layout","label","type","labelPosition","fieldDefinition","find","fieldDef","id","Edit","readOnly","render","item"],"sources":["@wordpress/dataviews/src/dataforms-layouts/regular/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tForm,\n\tFieldLayoutProps,\n\tNormalizedRegularLayout,\n} from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\nimport { DEFAULT_LAYOUT, normalizeLayout } from '../../normalize-form-fields';\n\nfunction Header( { title }: { title: string } ) {\n\treturn (\n\t\t<VStack className=\"dataforms-layouts-regular__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\nexport default function FormRegularField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\n\tconst form: Form = useMemo(\n\t\t(): Form => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: isCombinedField( field ) ? field.children : [],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tif ( isCombinedField( field ) ) {\n\t\treturn (\n\t\t\t<>\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<DataFormLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst layout: NormalizedRegularLayout = normalizeLayout( {\n\t\t...field.layout,\n\t\ttype: 'regular',\n\t} ) as NormalizedRegularLayout;\n\n\tconst labelPosition = layout.labelPosition;\n\tconst fieldDefinition = fields.find(\n\t\t( fieldDef ) => fieldDef.id === field.id\n\t);\n\n\tif ( ! fieldDefinition || ! fieldDefinition.Edit ) {\n\t\treturn null;\n\t}\n\tif ( labelPosition === 'side' ) {\n\t\treturn (\n\t\t\t<HStack className=\"dataforms-layouts-regular__field\">\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'dataforms-layouts-regular__field-label',\n\t\t\t\t\t\t`dataforms-layouts-regular__field-label--label-position-${ labelPosition }`\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"dataforms-layouts-regular__field-control\">\n\t\t\t\t\t{ fieldDefinition.readOnly === true ? (\n\t\t\t\t\t\t<fieldDefinition.render\n\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<fieldDefinition.Edit\n\t\t\t\t\t\t\tkey={ fieldDefinition.id }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</HStack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"dataforms-layouts-regular__field\">\n\t\t\t{ fieldDefinition.readOnly === true ? (\n\t\t\t\t<>\n\t\t\t\t\t{ ! hideLabelFromVision && labelPosition !== 'none' && (\n\t\t\t\t\t\t<div className=\"dataforms-layouts-regular__field-label\">\n\t\t\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<div className=\"dataforms-layouts-regular__field-control\">\n\t\t\t\t\t\t<fieldDefinition.render\n\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\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\t<fieldDefinition.Edit\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\thideLabelFromVision={\n\t\t\t\t\t\tlabelPosition === 'none' ? true : hideLabelFromVision\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useContext","useMemo","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalSpacer","Spacer","BaseControl","DataFormContext","DataFormLayout","isCombinedField","DEFAULT_LAYOUT","normalizeLayout","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Header","title","className","spacing","children","alignment","level","size","FormRegularField","data","field","onChange","hideLabelFromVision","fields","form","layout","label","type","labelPosition","fieldDefinition","find","fieldDef","id","Edit","readOnly","render","item","VisualLabel"],"sources":["@wordpress/dataviews/src/dataforms-layouts/regular/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n\tBaseControl,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tForm,\n\tFieldLayoutProps,\n\tNormalizedRegularLayout,\n} from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\nimport { DEFAULT_LAYOUT, normalizeLayout } from '../../normalize-form-fields';\n\nfunction Header( { title }: { title: string } ) {\n\treturn (\n\t\t<VStack className=\"dataforms-layouts-regular__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\nexport default function FormRegularField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\n\tconst form: Form = useMemo(\n\t\t(): Form => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: isCombinedField( field ) ? field.children : [],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tif ( isCombinedField( field ) ) {\n\t\treturn (\n\t\t\t<>\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<DataFormLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst layout: NormalizedRegularLayout = normalizeLayout( {\n\t\t...field.layout,\n\t\ttype: 'regular',\n\t} ) as NormalizedRegularLayout;\n\n\tconst labelPosition = layout.labelPosition;\n\tconst fieldDefinition = fields.find(\n\t\t( fieldDef ) => fieldDef.id === field.id\n\t);\n\n\tif ( ! fieldDefinition || ! fieldDefinition.Edit ) {\n\t\treturn null;\n\t}\n\n\tif ( labelPosition === 'side' ) {\n\t\treturn (\n\t\t\t<HStack className=\"dataforms-layouts-regular__field\">\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'dataforms-layouts-regular__field-label',\n\t\t\t\t\t\t`dataforms-layouts-regular__field-label--label-position-${ labelPosition }`\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"dataforms-layouts-regular__field-control\">\n\t\t\t\t\t{ fieldDefinition.readOnly === true ? (\n\t\t\t\t\t\t<fieldDefinition.render\n\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<fieldDefinition.Edit\n\t\t\t\t\t\t\tkey={ fieldDefinition.id }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</HStack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"dataforms-layouts-regular__field\">\n\t\t\t{ fieldDefinition.readOnly === true ? (\n\t\t\t\t<>\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ! hideLabelFromVision && labelPosition !== 'none' && (\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<fieldDefinition.render\n\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<fieldDefinition.Edit\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\thideLabelFromVision={\n\t\t\t\t\t\tlabelPosition === 'none' ? true : hideLabelFromVision\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -21,10 +21,11 @@ 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
23
  import { GridItems } from '../utils/grid-items';
24
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
25
24
  const {
26
25
  Badge
27
26
  } = unlock(componentsPrivateApis);
27
+ import getDataByGroup from '../utils/get-data-by-group';
28
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
28
29
  function GridItem({
29
30
  view,
30
31
  selection,
@@ -247,18 +248,7 @@ function ViewGrid({
247
248
  */
248
249
  const size = '900px';
249
250
  const groupField = view.groupByField ? fields.find(f => f.id === view.groupByField) : null;
250
-
251
- // Group data by groupByField if specified
252
- const dataByGroup = groupField ? data.reduce((groups, item) => {
253
- const groupName = groupField.getValue({
254
- item
255
- });
256
- if (!groups.has(groupName)) {
257
- groups.set(groupName, []);
258
- }
259
- groups.get(groupName)?.push(item);
260
- return groups;
261
- }, new Map()) : null;
251
+ const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
262
252
  const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
263
253
  return /*#__PURE__*/_jsxs(_Fragment, {
264
254
  children: [
@@ -339,9 +329,9 @@ function ViewGrid({
339
329
  'dataviews-loading': isLoading,
340
330
  'dataviews-no-results': !isLoading
341
331
  }),
342
- children: /*#__PURE__*/_jsx("p", {
343
- children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : empty
344
- })
332
+ children: isLoading ? /*#__PURE__*/_jsx("p", {
333
+ children: /*#__PURE__*/_jsx(Spinner, {})
334
+ }) : empty
345
335
  }), hasData && isLoading && /*#__PURE__*/_jsx("p", {
346
336
  className: "dataviews-loading-more",
347
337
  children: /*#__PURE__*/_jsx(Spinner, {})
@@ -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","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":[]}
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","Badge","getDataByGroup","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","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","isInfiniteScroll","Array","from","entries","groupName","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 );\nimport getDataByGroup from '../utils/get-data-by-group';\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\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\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{ isLoading ? (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tempty\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{ 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":[]}
@@ -9,7 +9,7 @@ import clsx from 'clsx';
9
9
  import { useInstanceId, usePrevious } from '@wordpress/compose';
10
10
  import { __experimentalHStack as HStack, __experimentalVStack as VStack, Button, privateApis as componentsPrivateApis, Spinner, VisuallyHidden, Composite } from '@wordpress/components';
11
11
  import { useCallback, useEffect, useMemo, useRef, useState, useContext } from '@wordpress/element';
12
- import { __ } from '@wordpress/i18n';
12
+ import { __, sprintf } from '@wordpress/i18n';
13
13
  import { moreVertical } from '@wordpress/icons';
14
14
  import { useRegistry } from '@wordpress/data';
15
15
 
@@ -19,6 +19,7 @@ import { useRegistry } from '@wordpress/data';
19
19
  import { unlock } from '../../lock-unlock';
20
20
  import { ActionsMenuGroup, ActionModal } from '../../components/dataviews-item-actions';
21
21
  import DataViewsContext from '../../components/dataviews-context';
22
+ import getDataByGroup from '../utils/get-data-by-group';
22
23
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
23
24
  const {
24
25
  Menu
@@ -351,11 +352,55 @@ export default function ViewList(props) {
351
352
  'dataviews-loading': isLoading,
352
353
  'dataviews-no-results': !hasData && !isLoading
353
354
  }),
354
- children: !hasData && /*#__PURE__*/_jsx("p", {
355
- children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : empty
355
+ children: !hasData && (isLoading ? /*#__PURE__*/_jsx("p", {
356
+ children: /*#__PURE__*/_jsx(Spinner, {})
357
+ }) : empty)
358
+ });
359
+ }
360
+ const groupField = view.groupByField ? fields.find(field => field.id === view.groupByField) : null;
361
+ const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
362
+
363
+ // Render data grouped by field
364
+ if (hasData && groupField && dataByGroup) {
365
+ return /*#__PURE__*/_jsx(Composite, {
366
+ id: `${baseId}`,
367
+ render: /*#__PURE__*/_jsx("div", {}),
368
+ className: "dataviews-view-list__group",
369
+ role: "grid",
370
+ activeId: activeCompositeId,
371
+ setActiveId: setActiveCompositeId,
372
+ children: /*#__PURE__*/_jsx(VStack, {
373
+ spacing: 4,
374
+ className: clsx('dataviews-view-list', className),
375
+ children: Array.from(dataByGroup.entries()).map(([groupName, groupItems]) => /*#__PURE__*/_jsxs(VStack, {
376
+ spacing: 2,
377
+ children: [/*#__PURE__*/_jsx("h3", {
378
+ className: "dataviews-view-list__group-header",
379
+ children: sprintf(
380
+ // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
381
+ __('%1$s: %2$s'), groupField.label, groupName)
382
+ }), groupItems.map(item => {
383
+ const id = generateCompositeItemIdPrefix(item);
384
+ return /*#__PURE__*/_jsx(ListItem, {
385
+ view: view,
386
+ idPrefix: id,
387
+ actions: actions,
388
+ item: item,
389
+ isSelected: item === selectedItem,
390
+ onSelect: onSelect,
391
+ mediaField: mediaField,
392
+ titleField: titleField,
393
+ descriptionField: descriptionField,
394
+ otherFields: otherFields,
395
+ onDropdownTriggerKeyDown: onDropdownTriggerKeyDown
396
+ }, id);
397
+ })]
398
+ }, groupName))
356
399
  })
357
400
  });
358
401
  }
402
+
403
+ // Render ungrouped data
359
404
  return /*#__PURE__*/_jsxs(_Fragment, {
360
405
  children: [/*#__PURE__*/_jsx(Composite, {
361
406
  id: baseId,
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useInstanceId","usePrevious","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","Composite","useCallback","useEffect","useMemo","useRef","useState","useContext","__","moreVertical","useRegistry","unlock","ActionsMenuGroup","ActionModal","DataViewsContext","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Menu","generateItemWrapperCompositeId","idPrefix","generatePrimaryActionCompositeId","primaryActionId","generateDropdownTriggerCompositeId","PrimaryActionGridCell","primaryAction","item","registry","isModalOpen","setIsModalOpen","compositeItemId","id","label","role","children","Item","render","disabled","accessibleWhenDisabled","icon","isDestructive","size","onClick","action","items","closeModal","callback","ListItem","view","actions","isSelected","titleField","mediaField","descriptionField","onSelect","otherFields","onDropdownTriggerKeyDown","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","itemRef","labelId","descriptionId","isHovered","setIsHovered","activeModalAction","setActiveModalAction","handleHover","type","isHover","paginationInfo","current","scrollIntoView","behavior","block","inline","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","hasOnlyOnePrimaryAction","length","renderedMediaField","className","field","config","sizes","renderedTitleField","usedActions","spacing","placement","TriggerButton","onKeyDown","Popover","Row","ref","totalItems","undefined","onMouseEnter","onMouseLeave","justify","alignment","map","as","isDefined","ViewList","props","_view$fields","data","fields","getItemId","isLoading","onChangeSelection","selection","empty","baseId","selectedItem","findLast","includes","find","fieldId","f","generateCompositeItemIdPrefix","isActiveCompositeItem","idToCheck","startsWith","activeCompositeId","setActiveCompositeId","activeItemIndex","findIndex","previousActiveItemIndex","isActiveIdInList","selectCompositeItem","targetIndex","generateCompositeId","clampedIndex","Math","min","max","itemIdPrefix","targetCompositeItemId","document","getElementById","focus","wasActiveIdInList","event","key","preventDefault","hasData","activeId","setActiveId","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/list/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n\tComposite,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseContext,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tActionsMenuGroup,\n\tActionModal,\n} from '../../components/dataviews-item-actions';\nimport DataViewsContext from '../../components/dataviews-context';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewList as ViewListType,\n\tViewListProps,\n\tActionModal as ActionModalType,\n} from '../../types';\n\ninterface ListViewItemProps< Item > {\n\tview: ViewListType;\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\totherFields: NormalizedField< Item >[];\n\tonDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;\n\tposinset?: number;\n}\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction generateItemWrapperCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-item-wrapper`;\n}\nfunction generatePrimaryActionCompositeId(\n\tidPrefix: string,\n\tprimaryActionId: string\n) {\n\treturn `${ idPrefix }-primary-action-${ primaryActionId }`;\n}\nfunction generateDropdownTriggerCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-dropdown`;\n}\n\nfunction PrimaryActionGridCell< Item >( {\n\tidPrefix,\n\tprimaryAction,\n\titem,\n}: {\n\tidPrefix: string;\n\tprimaryAction: Action< Item >;\n\titem: Item;\n} ) {\n\tconst registry = useRegistry();\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst compositeItemId = generatePrimaryActionCompositeId(\n\t\tidPrefix,\n\t\tprimaryAction.id\n\t);\n\n\tconst label =\n\t\ttypeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] );\n\n\treturn 'RenderModal' in primaryAction ? (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t) : (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tprimaryAction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction ListItem< Item >( {\n\tview,\n\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonSelect,\n\totherFields,\n\tonDropdownTriggerKeyDown,\n\tposinset,\n}: ListViewItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst registry = useRegistry();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\tconst handleHover: React.MouseEventHandler = ( { type } ) => {\n\t\tconst isHover = type === 'mouseenter';\n\t\tsetIsHovered( isHover );\n\t};\n\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;\n\n\tconst renderedMediaField =\n\t\tshowMedia && mediaField?.render ? (\n\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t<mediaField.render\n\t\t\t\t\titem={ item }\n\t\t\t\t\tfield={ mediaField }\n\t\t\t\t\tconfig={ { sizes: '52px' } }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t) : null;\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tconst usedActions = eligibleActions?.length > 0 && (\n\t\t<HStack spacing={ 3 } className=\"dataviews-view-list__item-actions\">\n\t\t\t{ primaryAction && (\n\t\t\t\t<PrimaryActionGridCell\n\t\t\t\t\tidPrefix={ idPrefix }\n\t\t\t\t\tprimaryAction={ primaryAction }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasOnlyOnePrimaryAction && (\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t</Menu>\n\t\t\t\t\t{ !! activeModalAction && (\n\t\t\t\t\t\t<ActionModal\n\t\t\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</HStack>\n\t);\n\n\treturn (\n\t\t<Composite.Row\n\t\t\tref={ itemRef }\n\t\t\trender={\n\t\t\t\t/* aria-posinset breaks Composite.Row if passed to it directly. */\n\t\t\t\t<div\n\t\t\t\t\taria-posinset={ posinset }\n\t\t\t\t\taria-setsize={\n\t\t\t\t\t\tinfiniteScrollEnabled\n\t\t\t\t\t\t\t? paginationInfo.totalItems\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t\trole={ infiniteScrollEnabled ? 'article' : 'row' }\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleHover }\n\t\t\tonMouseLeave={ handleHover }\n\t\t>\n\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\" spacing={ 0 }>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tid={ generateItemWrapperCompositeId( idPrefix ) }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<HStack spacing={ 3 } justify=\"start\" alignment=\"flex-start\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack spacing={ 0 }>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"dataviews-title-field\"\n\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ usedActions }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__field\">\n\t\t\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tfield={ descriptionField }\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\t<div\n\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</VStack>\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t</Composite.Row>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t\tclassName,\n\t\tempty,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst generateCompositeItemIdPrefix = useCallback(\n\t\t( item: Item ) => `${ baseId }-${ getItemId( item ) }`,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst isActiveCompositeItem = useCallback(\n\t\t( item: Item, idToCheck: string ) => {\n\t\t\t// All composite items use the same prefix in their IDs.\n\t\t\treturn idToCheck.startsWith(\n\t\t\t\tgenerateCompositeItemIdPrefix( item )\n\t\t\t);\n\t\t},\n\t\t[ generateCompositeItemIdPrefix ]\n\t);\n\n\t// Controlled state for the active composite item.\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>( undefined );\n\n\t// Update the active composite item when the selected item changes.\n\tuseEffect( () => {\n\t\tif ( selectedItem ) {\n\t\t\tsetActiveCompositeId(\n\t\t\t\tgenerateItemWrapperCompositeId(\n\t\t\t\t\tgenerateCompositeItemIdPrefix( selectedItem )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selectedItem, generateCompositeItemIdPrefix ] );\n\n\tconst activeItemIndex = data.findIndex( ( item ) =>\n\t\tisActiveCompositeItem( item, activeCompositeId ?? '' )\n\t);\n\tconst previousActiveItemIndex = usePrevious( activeItemIndex );\n\tconst isActiveIdInList = activeItemIndex !== -1;\n\n\tconst selectCompositeItem = useCallback(\n\t\t(\n\t\t\ttargetIndex: number,\n\t\t\t// Allows invokers to specify a custom function to generate the\n\t\t\t// target composite item ID\n\t\t\tgenerateCompositeId: ( idPrefix: string ) => string\n\t\t) => {\n\t\t\t// Clamping between 0 and data.length - 1 to avoid out of bounds.\n\t\t\tconst clampedIndex = Math.min(\n\t\t\t\tdata.length - 1,\n\t\t\t\tMath.max( 0, targetIndex )\n\t\t\t);\n\t\t\tif ( ! data[ clampedIndex ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst itemIdPrefix = generateCompositeItemIdPrefix(\n\t\t\t\tdata[ clampedIndex ]\n\t\t\t);\n\t\t\tconst targetCompositeItemId = generateCompositeId( itemIdPrefix );\n\n\t\t\tsetActiveCompositeId( targetCompositeItemId );\n\t\t\tdocument.getElementById( targetCompositeItemId )?.focus();\n\t\t},\n\t\t[ data, generateCompositeItemIdPrefix ]\n\t);\n\n\t// Select a new active composite item when the current active item\n\t// is removed from the list.\n\tuseEffect( () => {\n\t\tconst wasActiveIdInList =\n\t\t\tpreviousActiveItemIndex !== undefined &&\n\t\t\tpreviousActiveItemIndex !== -1;\n\t\tif ( ! isActiveIdInList && wasActiveIdInList ) {\n\t\t\t// By picking `previousActiveItemIndex` as the next item index, we are\n\t\t\t// basically picking the item that would have been after the deleted one.\n\t\t\t// If the previously active (and removed) item was the last of the list,\n\t\t\t// we will select the item before it — which is the new last item.\n\t\t\tselectCompositeItem(\n\t\t\t\tpreviousActiveItemIndex,\n\t\t\t\tgenerateItemWrapperCompositeId\n\t\t\t);\n\t\t}\n\t}, [ isActiveIdInList, selectCompositeItem, previousActiveItemIndex ] );\n\n\t// Prevent the default behavior (open dropdown menu) and instead select the\n\t// dropdown menu trigger on the previous/next row.\n\t// https://github.com/ariakit/ariakit/issues/3768\n\tconst onDropdownTriggerKeyDown = useCallback(\n\t\t( event: React.KeyboardEvent< HTMLButtonElement > ) => {\n\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the next row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex + 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the previous row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex - 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectCompositeItem, activeItemIndex ]\n\t);\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && <p>{ isLoading ? <Spinner /> : empty }</p> }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Composite\n\t\t\t\tid={ baseId }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName={ clsx( 'dataviews-view-list', className ) }\n\t\t\t\trole={ view.infiniteScrollEnabled ? 'feed' : 'grid' }\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\tconst id = generateCompositeItemIdPrefix( item );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\tview.infiniteScrollEnabled\n\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Composite>\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useInstanceId","usePrevious","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","Composite","useCallback","useEffect","useMemo","useRef","useState","useContext","__","sprintf","moreVertical","useRegistry","unlock","ActionsMenuGroup","ActionModal","DataViewsContext","getDataByGroup","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Menu","generateItemWrapperCompositeId","idPrefix","generatePrimaryActionCompositeId","primaryActionId","generateDropdownTriggerCompositeId","PrimaryActionGridCell","primaryAction","item","registry","isModalOpen","setIsModalOpen","compositeItemId","id","label","role","children","Item","render","disabled","accessibleWhenDisabled","icon","isDestructive","size","onClick","action","items","closeModal","callback","ListItem","view","actions","isSelected","titleField","mediaField","descriptionField","onSelect","otherFields","onDropdownTriggerKeyDown","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","itemRef","labelId","descriptionId","isHovered","setIsHovered","activeModalAction","setActiveModalAction","handleHover","type","isHover","paginationInfo","current","scrollIntoView","behavior","block","inline","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","hasOnlyOnePrimaryAction","length","renderedMediaField","className","field","config","sizes","renderedTitleField","usedActions","spacing","placement","TriggerButton","onKeyDown","Popover","Row","ref","totalItems","undefined","onMouseEnter","onMouseLeave","justify","alignment","map","as","isDefined","ViewList","props","_view$fields","data","fields","getItemId","isLoading","onChangeSelection","selection","empty","baseId","selectedItem","findLast","includes","find","fieldId","f","generateCompositeItemIdPrefix","isActiveCompositeItem","idToCheck","startsWith","activeCompositeId","setActiveCompositeId","activeItemIndex","findIndex","previousActiveItemIndex","isActiveIdInList","selectCompositeItem","targetIndex","generateCompositeId","clampedIndex","Math","min","max","itemIdPrefix","targetCompositeItemId","document","getElementById","focus","wasActiveIdInList","event","key","preventDefault","hasData","groupField","groupByField","dataByGroup","activeId","setActiveId","Array","from","entries","groupName","groupItems","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/list/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n\tComposite,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseContext,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tActionsMenuGroup,\n\tActionModal,\n} from '../../components/dataviews-item-actions';\nimport DataViewsContext from '../../components/dataviews-context';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewList as ViewListType,\n\tViewListProps,\n\tActionModal as ActionModalType,\n} from '../../types';\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface ListViewItemProps< Item > {\n\tview: ViewListType;\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\totherFields: NormalizedField< Item >[];\n\tonDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;\n\tposinset?: number;\n}\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction generateItemWrapperCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-item-wrapper`;\n}\nfunction generatePrimaryActionCompositeId(\n\tidPrefix: string,\n\tprimaryActionId: string\n) {\n\treturn `${ idPrefix }-primary-action-${ primaryActionId }`;\n}\nfunction generateDropdownTriggerCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-dropdown`;\n}\n\nfunction PrimaryActionGridCell< Item >( {\n\tidPrefix,\n\tprimaryAction,\n\titem,\n}: {\n\tidPrefix: string;\n\tprimaryAction: Action< Item >;\n\titem: Item;\n} ) {\n\tconst registry = useRegistry();\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst compositeItemId = generatePrimaryActionCompositeId(\n\t\tidPrefix,\n\t\tprimaryAction.id\n\t);\n\n\tconst label =\n\t\ttypeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] );\n\n\treturn 'RenderModal' in primaryAction ? (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t) : (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\tisDestructive={ primaryAction.isDestructive }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tprimaryAction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction ListItem< Item >( {\n\tview,\n\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonSelect,\n\totherFields,\n\tonDropdownTriggerKeyDown,\n\tposinset,\n}: ListViewItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst registry = useRegistry();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\tconst handleHover: React.MouseEventHandler = ( { type } ) => {\n\t\tconst isHover = type === 'mouseenter';\n\t\tsetIsHovered( isHover );\n\t};\n\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;\n\n\tconst renderedMediaField =\n\t\tshowMedia && mediaField?.render ? (\n\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t<mediaField.render\n\t\t\t\t\titem={ item }\n\t\t\t\t\tfield={ mediaField }\n\t\t\t\t\tconfig={ { sizes: '52px' } }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t) : null;\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tconst usedActions = eligibleActions?.length > 0 && (\n\t\t<HStack spacing={ 3 } className=\"dataviews-view-list__item-actions\">\n\t\t\t{ primaryAction && (\n\t\t\t\t<PrimaryActionGridCell\n\t\t\t\t\tidPrefix={ idPrefix }\n\t\t\t\t\tprimaryAction={ primaryAction }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasOnlyOnePrimaryAction && (\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t</Menu>\n\t\t\t\t\t{ !! activeModalAction && (\n\t\t\t\t\t\t<ActionModal\n\t\t\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</HStack>\n\t);\n\n\treturn (\n\t\t<Composite.Row\n\t\t\tref={ itemRef }\n\t\t\trender={\n\t\t\t\t/* aria-posinset breaks Composite.Row if passed to it directly. */\n\t\t\t\t<div\n\t\t\t\t\taria-posinset={ posinset }\n\t\t\t\t\taria-setsize={\n\t\t\t\t\t\tinfiniteScrollEnabled\n\t\t\t\t\t\t\t? paginationInfo.totalItems\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t\trole={ infiniteScrollEnabled ? 'article' : 'row' }\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleHover }\n\t\t\tonMouseLeave={ handleHover }\n\t\t>\n\t\t\t<HStack className=\"dataviews-view-list__item-wrapper\" spacing={ 0 }>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tid={ generateItemWrapperCompositeId( idPrefix ) }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<HStack spacing={ 3 } justify=\"start\" alignment=\"flex-start\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack spacing={ 0 }>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"dataviews-title-field\"\n\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ usedActions }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__field\">\n\t\t\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tfield={ descriptionField }\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\t<div\n\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</VStack>\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t</Composite.Row>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t\tclassName,\n\t\tempty,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst generateCompositeItemIdPrefix = useCallback(\n\t\t( item: Item ) => `${ baseId }-${ getItemId( item ) }`,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst isActiveCompositeItem = useCallback(\n\t\t( item: Item, idToCheck: string ) => {\n\t\t\t// All composite items use the same prefix in their IDs.\n\t\t\treturn idToCheck.startsWith(\n\t\t\t\tgenerateCompositeItemIdPrefix( item )\n\t\t\t);\n\t\t},\n\t\t[ generateCompositeItemIdPrefix ]\n\t);\n\n\t// Controlled state for the active composite item.\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>( undefined );\n\n\t// Update the active composite item when the selected item changes.\n\tuseEffect( () => {\n\t\tif ( selectedItem ) {\n\t\t\tsetActiveCompositeId(\n\t\t\t\tgenerateItemWrapperCompositeId(\n\t\t\t\t\tgenerateCompositeItemIdPrefix( selectedItem )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selectedItem, generateCompositeItemIdPrefix ] );\n\n\tconst activeItemIndex = data.findIndex( ( item ) =>\n\t\tisActiveCompositeItem( item, activeCompositeId ?? '' )\n\t);\n\tconst previousActiveItemIndex = usePrevious( activeItemIndex );\n\tconst isActiveIdInList = activeItemIndex !== -1;\n\n\tconst selectCompositeItem = useCallback(\n\t\t(\n\t\t\ttargetIndex: number,\n\t\t\t// Allows invokers to specify a custom function to generate the\n\t\t\t// target composite item ID\n\t\t\tgenerateCompositeId: ( idPrefix: string ) => string\n\t\t) => {\n\t\t\t// Clamping between 0 and data.length - 1 to avoid out of bounds.\n\t\t\tconst clampedIndex = Math.min(\n\t\t\t\tdata.length - 1,\n\t\t\t\tMath.max( 0, targetIndex )\n\t\t\t);\n\t\t\tif ( ! data[ clampedIndex ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst itemIdPrefix = generateCompositeItemIdPrefix(\n\t\t\t\tdata[ clampedIndex ]\n\t\t\t);\n\t\t\tconst targetCompositeItemId = generateCompositeId( itemIdPrefix );\n\n\t\t\tsetActiveCompositeId( targetCompositeItemId );\n\t\t\tdocument.getElementById( targetCompositeItemId )?.focus();\n\t\t},\n\t\t[ data, generateCompositeItemIdPrefix ]\n\t);\n\n\t// Select a new active composite item when the current active item\n\t// is removed from the list.\n\tuseEffect( () => {\n\t\tconst wasActiveIdInList =\n\t\t\tpreviousActiveItemIndex !== undefined &&\n\t\t\tpreviousActiveItemIndex !== -1;\n\t\tif ( ! isActiveIdInList && wasActiveIdInList ) {\n\t\t\t// By picking `previousActiveItemIndex` as the next item index, we are\n\t\t\t// basically picking the item that would have been after the deleted one.\n\t\t\t// If the previously active (and removed) item was the last of the list,\n\t\t\t// we will select the item before it — which is the new last item.\n\t\t\tselectCompositeItem(\n\t\t\t\tpreviousActiveItemIndex,\n\t\t\t\tgenerateItemWrapperCompositeId\n\t\t\t);\n\t\t}\n\t}, [ isActiveIdInList, selectCompositeItem, previousActiveItemIndex ] );\n\n\t// Prevent the default behavior (open dropdown menu) and instead select the\n\t// dropdown menu trigger on the previous/next row.\n\t// https://github.com/ariakit/ariakit/issues/3768\n\tconst onDropdownTriggerKeyDown = useCallback(\n\t\t( event: React.KeyboardEvent< HTMLButtonElement > ) => {\n\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the next row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex + 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the previous row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex - 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectCompositeItem, activeItemIndex ]\n\t);\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( field ) => field.id === view.groupByField )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\t// Render data grouped by field\n\tif ( hasData && groupField && dataByGroup ) {\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\tid={ `${ baseId }` }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName=\"dataviews-view-list__group\"\n\t\t\t\trole=\"grid\"\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t<VStack\n\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-list', className ) }\n\t\t\t\t>\n\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<VStack key={ groupName } spacing={ 2 }>\n\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-list__group-header\">\n\t\t\t\t\t\t\t\t\t{ sprintf(\n\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__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tconst id =\n\t\t\t\t\t\t\t\t\t\tgenerateCompositeItemIdPrefix( item );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t)\n\t\t\t\t\t) }\n\t\t\t\t</VStack>\n\t\t\t</Composite>\n\t\t);\n\t}\n\n\t// Render ungrouped data\n\treturn (\n\t\t<>\n\t\t\t<Composite\n\t\t\t\tid={ baseId }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName={ clsx( 'dataviews-view-list', className ) }\n\t\t\t\trole={ view.infiniteScrollEnabled ? 'feed' : 'grid' }\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\tconst id = generateCompositeItemIdPrefix( item );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\tview.infiniteScrollEnabled\n\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Composite>\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"],"mappings":"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","ignoreList":[]}
@@ -18,10 +18,11 @@ import DataViewsSelectionCheckbox from '../../components/dataviews-selection-che
18
18
  import DataViewsContext from '../../components/dataviews-context';
19
19
  import { useIsMultiselectPicker } from '../../components/dataviews-picker/footer';
20
20
  import { GridItems } from '../utils/grid-items';
21
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
21
  const {
23
22
  Badge
24
23
  } = unlock(componentsPrivateApis);
24
+ import getDataByGroup from '../utils/get-data-by-group';
25
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
25
26
  function GridItem({
26
27
  view,
27
28
  multiselect,
@@ -221,18 +222,7 @@ function ViewPickerGrid({
221
222
  */
222
223
  const size = '900px';
223
224
  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;
225
+ const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
236
226
  const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
237
227
  const currentPage = (_view$page = view?.page) !== null && _view$page !== void 0 ? _view$page : 1;
238
228
  const perPage = (_view$perPage = view?.perPage) !== null && _view$perPage !== void 0 ? _view$perPage : 0;
@@ -335,9 +325,9 @@ function ViewPickerGrid({
335
325
  'dataviews-loading': isLoading,
336
326
  'dataviews-no-results': !isLoading
337
327
  }),
338
- children: /*#__PURE__*/_jsx("p", {
339
- children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : empty
340
- })
328
+ children: isLoading ? /*#__PURE__*/_jsx("p", {
329
+ children: /*#__PURE__*/_jsx(Spinner, {})
330
+ }) : empty
341
331
  }), hasData && isLoading && /*#__PURE__*/_jsx("p", {
342
332
  className: "dataviews-loading-more",
343
333
  children: /*#__PURE__*/_jsx(Spinner, {})