@wordpress/dataviews 6.0.0 → 7.0.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 (194) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/README.md +42 -14
  3. package/build/components/dataviews/index.js +38 -6
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-context/index.js +4 -1
  6. package/build/components/dataviews-context/index.js.map +1 -1
  7. package/build/components/dataviews-item-actions/index.js +1 -10
  8. package/build/components/dataviews-item-actions/index.js.map +1 -1
  9. package/build/components/dataviews-pagination/index.js +1 -1
  10. package/build/components/dataviews-pagination/index.js.map +1 -1
  11. package/build/components/dataviews-view-config/index.js +8 -5
  12. package/build/components/dataviews-view-config/index.js.map +1 -1
  13. package/build/components/dataviews-view-config/infinite-scroll-toggle.js +47 -0
  14. package/build/components/dataviews-view-config/infinite-scroll-toggle.js.map +1 -0
  15. package/build/dataform-controls/array.js +70 -0
  16. package/build/dataform-controls/array.js.map +1 -0
  17. package/build/dataform-controls/boolean.js +15 -7
  18. package/build/dataform-controls/boolean.js.map +1 -1
  19. package/build/dataform-controls/email.js +14 -7
  20. package/build/dataform-controls/email.js.map +1 -1
  21. package/build/dataform-controls/index.js +3 -1
  22. package/build/dataform-controls/index.js.map +1 -1
  23. package/build/dataform-controls/integer.js +14 -7
  24. package/build/dataform-controls/integer.js.map +1 -1
  25. package/build/dataform-controls/text.js +14 -7
  26. package/build/dataform-controls/text.js.map +1 -1
  27. package/build/dataforms-layouts/card/index.js +137 -0
  28. package/build/dataforms-layouts/card/index.js.map +1 -0
  29. package/build/dataforms-layouts/data-form-layout.js +2 -2
  30. package/build/dataforms-layouts/data-form-layout.js.map +1 -1
  31. package/build/dataforms-layouts/index.js +4 -0
  32. package/build/dataforms-layouts/index.js.map +1 -1
  33. package/build/dataforms-layouts/panel/dropdown.js +124 -0
  34. package/build/dataforms-layouts/panel/dropdown.js.map +1 -0
  35. package/build/dataforms-layouts/panel/index.js +34 -149
  36. package/build/dataforms-layouts/panel/index.js.map +1 -1
  37. package/build/dataforms-layouts/panel/modal.js +125 -0
  38. package/build/dataforms-layouts/panel/modal.js.map +1 -0
  39. package/build/dataforms-layouts/regular/index.js +10 -21
  40. package/build/dataforms-layouts/regular/index.js.map +1 -1
  41. package/build/dataviews-layouts/grid/index.js +24 -7
  42. package/build/dataviews-layouts/grid/index.js.map +1 -1
  43. package/build/dataviews-layouts/grid/preview-size-picker.js +11 -11
  44. package/build/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
  45. package/build/dataviews-layouts/list/index.js +45 -27
  46. package/build/dataviews-layouts/list/index.js.map +1 -1
  47. package/build/dataviews-layouts/table/column-header-menu.js +3 -0
  48. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  49. package/build/dataviews-layouts/table/index.js +23 -8
  50. package/build/dataviews-layouts/table/index.js.map +1 -1
  51. package/build/field-types/array.js +2 -2
  52. package/build/field-types/array.js.map +1 -1
  53. package/build/normalize-form-fields.js +52 -13
  54. package/build/normalize-form-fields.js.map +1 -1
  55. package/build/types.js.map +1 -1
  56. package/build-module/components/dataviews/index.js +40 -8
  57. package/build-module/components/dataviews/index.js.map +1 -1
  58. package/build-module/components/dataviews-context/index.js +4 -1
  59. package/build-module/components/dataviews-context/index.js.map +1 -1
  60. package/build-module/components/dataviews-item-actions/index.js +1 -10
  61. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  62. package/build-module/components/dataviews-pagination/index.js +1 -1
  63. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  64. package/build-module/components/dataviews-view-config/index.js +8 -5
  65. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  66. package/build-module/components/dataviews-view-config/infinite-scroll-toggle.js +39 -0
  67. package/build-module/components/dataviews-view-config/infinite-scroll-toggle.js.map +1 -0
  68. package/build-module/dataform-controls/array.js +63 -0
  69. package/build-module/dataform-controls/array.js.map +1 -0
  70. package/build-module/dataform-controls/boolean.js +15 -7
  71. package/build-module/dataform-controls/boolean.js.map +1 -1
  72. package/build-module/dataform-controls/email.js +15 -8
  73. package/build-module/dataform-controls/email.js.map +1 -1
  74. package/build-module/dataform-controls/index.js +3 -1
  75. package/build-module/dataform-controls/index.js.map +1 -1
  76. package/build-module/dataform-controls/integer.js +15 -8
  77. package/build-module/dataform-controls/integer.js.map +1 -1
  78. package/build-module/dataform-controls/text.js +15 -8
  79. package/build-module/dataform-controls/text.js.map +1 -1
  80. package/build-module/dataforms-layouts/card/index.js +128 -0
  81. package/build-module/dataforms-layouts/card/index.js.map +1 -0
  82. package/build-module/dataforms-layouts/data-form-layout.js +2 -2
  83. package/build-module/dataforms-layouts/data-form-layout.js.map +1 -1
  84. package/build-module/dataforms-layouts/index.js +4 -0
  85. package/build-module/dataforms-layouts/index.js.map +1 -1
  86. package/build-module/dataforms-layouts/panel/dropdown.js +118 -0
  87. package/build-module/dataforms-layouts/panel/dropdown.js.map +1 -0
  88. package/build-module/dataforms-layouts/panel/index.js +37 -152
  89. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  90. package/build-module/dataforms-layouts/panel/modal.js +119 -0
  91. package/build-module/dataforms-layouts/panel/modal.js.map +1 -0
  92. package/build-module/dataforms-layouts/regular/index.js +10 -21
  93. package/build-module/dataforms-layouts/regular/index.js.map +1 -1
  94. package/build-module/dataviews-layouts/grid/index.js +25 -8
  95. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  96. package/build-module/dataviews-layouts/grid/preview-size-picker.js +11 -11
  97. package/build-module/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
  98. package/build-module/dataviews-layouts/list/index.js +47 -29
  99. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  100. package/build-module/dataviews-layouts/table/column-header-menu.js +3 -0
  101. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  102. package/build-module/dataviews-layouts/table/index.js +23 -8
  103. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  104. package/build-module/field-types/array.js +2 -2
  105. package/build-module/field-types/array.js.map +1 -1
  106. package/build-module/normalize-form-fields.js +50 -13
  107. package/build-module/normalize-form-fields.js.map +1 -1
  108. package/build-module/types.js.map +1 -1
  109. package/build-style/style-rtl.css +53 -16
  110. package/build-style/style.css +53 -16
  111. package/build-types/components/dataform/stories/index.story.d.ts +41 -17
  112. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  113. package/build-types/components/dataviews/index.d.ts +5 -2
  114. package/build-types/components/dataviews/index.d.ts.map +1 -1
  115. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  116. package/build-types/components/dataviews/stories/index.story.d.ts +2 -1
  117. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  118. package/build-types/components/dataviews-context/index.d.ts +4 -1
  119. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  120. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  121. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  122. package/build-types/components/dataviews-view-config/infinite-scroll-toggle.d.ts +2 -0
  123. package/build-types/components/dataviews-view-config/infinite-scroll-toggle.d.ts.map +1 -0
  124. package/build-types/dataform-controls/array.d.ts +6 -0
  125. package/build-types/dataform-controls/array.d.ts.map +1 -0
  126. package/build-types/dataform-controls/boolean.d.ts.map +1 -1
  127. package/build-types/dataform-controls/email.d.ts.map +1 -1
  128. package/build-types/dataform-controls/index.d.ts.map +1 -1
  129. package/build-types/dataform-controls/integer.d.ts.map +1 -1
  130. package/build-types/dataform-controls/text.d.ts.map +1 -1
  131. package/build-types/dataforms-layouts/card/index.d.ts +13 -0
  132. package/build-types/dataforms-layouts/card/index.d.ts.map +1 -0
  133. package/build-types/dataforms-layouts/index.d.ts.map +1 -1
  134. package/build-types/dataforms-layouts/panel/dropdown.d.ts +14 -0
  135. package/build-types/dataforms-layouts/panel/dropdown.d.ts.map +1 -0
  136. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  137. package/build-types/dataforms-layouts/panel/modal.d.ts +13 -0
  138. package/build-types/dataforms-layouts/panel/modal.d.ts.map +1 -0
  139. package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
  140. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  141. package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts +1 -1
  142. package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts.map +1 -1
  143. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  144. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  145. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  146. package/build-types/field-types/boolean.d.ts +1 -1
  147. package/build-types/normalize-form-fields.d.ts +10 -3
  148. package/build-types/normalize-form-fields.d.ts.map +1 -1
  149. package/build-types/test/normalize-form-fields.d.ts +2 -0
  150. package/build-types/test/normalize-form-fields.d.ts.map +1 -0
  151. package/build-types/types.d.ts +54 -6
  152. package/build-types/types.d.ts.map +1 -1
  153. package/build-wp/index.js +3062 -1147
  154. package/package.json +15 -15
  155. package/src/components/dataform/stories/index.story.tsx +478 -91
  156. package/src/components/dataviews/index.tsx +50 -14
  157. package/src/components/dataviews/stories/fixtures.tsx +98 -7
  158. package/src/components/dataviews/stories/index.story.tsx +137 -4
  159. package/src/components/dataviews/style.scss +4 -0
  160. package/src/components/dataviews-context/index.ts +6 -2
  161. package/src/components/dataviews-item-actions/index.tsx +7 -16
  162. package/src/components/dataviews-pagination/index.tsx +1 -1
  163. package/src/components/dataviews-view-config/index.tsx +13 -5
  164. package/src/components/dataviews-view-config/infinite-scroll-toggle.tsx +39 -0
  165. package/src/dataform-controls/array.tsx +85 -0
  166. package/src/dataform-controls/boolean.tsx +24 -10
  167. package/src/dataform-controls/email.tsx +24 -11
  168. package/src/dataform-controls/index.tsx +3 -1
  169. package/src/dataform-controls/integer.tsx +27 -13
  170. package/src/dataform-controls/text.tsx +24 -11
  171. package/src/dataforms-layouts/card/index.tsx +154 -0
  172. package/src/dataforms-layouts/card/style.scss +3 -0
  173. package/src/dataforms-layouts/data-form-layout.tsx +2 -2
  174. package/src/dataforms-layouts/index.tsx +5 -0
  175. package/src/dataforms-layouts/panel/dropdown.tsx +160 -0
  176. package/src/dataforms-layouts/panel/index.tsx +49 -189
  177. package/src/dataforms-layouts/panel/modal.tsx +165 -0
  178. package/src/dataforms-layouts/panel/style.scss +4 -0
  179. package/src/dataforms-layouts/regular/index.tsx +20 -23
  180. package/src/dataviews-layouts/grid/index.tsx +32 -5
  181. package/src/dataviews-layouts/grid/preview-size-picker.tsx +15 -13
  182. package/src/dataviews-layouts/grid/style.scss +3 -1
  183. package/src/dataviews-layouts/list/index.tsx +65 -31
  184. package/src/dataviews-layouts/list/style.scss +7 -3
  185. package/src/dataviews-layouts/table/column-header-menu.tsx +4 -0
  186. package/src/dataviews-layouts/table/index.tsx +27 -1
  187. package/src/field-types/array.tsx +1 -1
  188. package/src/normalize-form-fields.ts +63 -17
  189. package/src/test/dataform.tsx +181 -3
  190. package/src/test/dataviews.tsx +38 -0
  191. package/src/test/filter-and-sort-data-view.js +123 -64
  192. package/src/test/normalize-form-fields.ts +247 -0
  193. package/src/types.ts +72 -6
  194. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useContext","useMemo","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalSpacer","Spacer","DataFormContext","DataFormLayout","isCombinedField","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Header","title","className","spacing","children","alignment","level","size","FormRegularField","data","field","onChange","hideLabelFromVision","_field$labelPosition","fields","form","map","child","id","type","label","labelPosition","fieldDefinition","find","fieldDef","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 { Form, FieldLayoutProps } from '../../types';\nimport DataFormContext from '../../components/dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { isCombinedField } from '../is-combined-field';\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 = useMemo( () => {\n\t\tif ( isCombinedField( field ) ) {\n\t\t\treturn {\n\t\t\t\tfields: field.children.map( ( child ) => {\n\t\t\t\t\tif ( typeof child === 'string' ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: child,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn child;\n\t\t\t\t} ),\n\t\t\t\ttype: 'regular' as const,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttype: 'regular' as const,\n\t\t\tfields: [],\n\t\t};\n\t}, [ field ] );\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 as 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 labelPosition = field.labelPosition ?? 'top';\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","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":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,UAAU,EAAEC,OAAO,QAAQ,oBAAoB;AACxD,SACCC,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,EAC9BC,qBAAqB,IAAIC,OAAO,EAChCC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;;AAE9B;AACA;AACA;;AAMA,OAAOC,eAAe,MAAM,mCAAmC;AAC/D,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,cAAc,EAAEC,eAAe,QAAQ,6BAA6B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAE9E,SAASC,MAAMA,CAAE;EAAEC;AAAyB,CAAC,EAAG;EAC/C,oBACCN,IAAA,CAACX,MAAM;IAACkB,SAAS,EAAC,mCAAmC;IAACC,OAAO,EAAG,CAAG;IAAAC,QAAA,eAClEP,KAAA,CAACf,MAAM;MAACuB,SAAS,EAAC,QAAQ;MAAAD,QAAA,gBACzBT,IAAA,CAACT,OAAO;QAACoB,KAAK,EAAG,CAAG;QAACC,IAAI,EAAG,EAAI;QAAAH,QAAA,EAC7BH;MAAK,CACC,CAAC,eACVN,IAAA,CAACP,MAAM,IAAE,CAAC;IAAA,CACH;EAAC,CACF,CAAC;AAEX;AAEA,eAAe,SAASoB,gBAAgBA,CAAU;EACjDC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AACyB,CAAC,EAAG;EAC7B,MAAM;IAAEC;EAAO,CAAC,GAAGlC,UAAU,CAAEU,eAAgB,CAAC;EAEhD,MAAMyB,IAAU,GAAGlC,OAAO,CACzB,OAAc;IACbmC,MAAM,EAAEvB,cAAc;IACtBqB,MAAM,EAAEtB,eAAe,CAAEmB,KAAM,CAAC,GAAGA,KAAK,CAACN,QAAQ,GAAG;EACrD,CAAC,CAAE,EACH,CAAEM,KAAK,CACR,CAAC;EAED,IAAKnB,eAAe,CAAEmB,KAAM,CAAC,EAAG;IAC/B,oBACCb,KAAA,CAAAE,SAAA;MAAAK,QAAA,GACG,CAAEQ,mBAAmB,IAAIF,KAAK,CAACM,KAAK,iBACrCrB,IAAA,CAACK,MAAM;QAACC,KAAK,EAAGS,KAAK,CAACM;MAAO,CAAE,CAC/B,eACDrB,IAAA,CAACL,cAAc;QACdmB,IAAI,EAAGA,IAAM;QACbK,IAAI,EAAGA,IAAM;QACbH,QAAQ,EAAGA;MAAU,CACrB,CAAC;IAAA,CACD,CAAC;EAEL;EAEA,MAAMI,MAA+B,GAAGtB,eAAe,CAAE;IACxD,GAAGiB,KAAK,CAACK,MAAM;IACfE,IAAI,EAAE;EACP,CAAE,CAA4B;EAE9B,MAAMC,aAAa,GAAGH,MAAM,CAACG,aAAa;EAC1C,MAAMC,eAAe,GAAGN,MAAM,CAACO,IAAI,CAChCC,QAAQ,IAAMA,QAAQ,CAACC,EAAE,KAAKZ,KAAK,CAACY,EACvC,CAAC;EAED,IAAK,CAAEH,eAAe,IAAI,CAAEA,eAAe,CAACI,IAAI,EAAG;IAClD,OAAO,IAAI;EACZ;EACA,IAAKL,aAAa,KAAK,MAAM,EAAG;IAC/B,oBACCrB,KAAA,CAACf,MAAM;MAACoB,SAAS,EAAC,kCAAkC;MAAAE,QAAA,gBACnDT,IAAA;QACCO,SAAS,EAAGxB,IAAI,CACf,wCAAwC,EACxC,0DAA2DwC,aAAa,EACzE,CAAG;QAAAd,QAAA,EAEDe,eAAe,CAACH;MAAK,CACnB,CAAC,eACNrB,IAAA;QAAKO,SAAS,EAAC,0CAA0C;QAAAE,QAAA,EACtDe,eAAe,CAACK,QAAQ,KAAK,IAAI,gBAClC7B,IAAA,CAACwB,eAAe,CAACM,MAAM;UACtBC,IAAI,EAAGjB,IAAM;UACbC,KAAK,EAAGS;QAAiB,CACzB,CAAC,gBAEFxB,IAAA,CAACwB,eAAe,CAACI,IAAI;UAEpBd,IAAI,EAAGA,IAAM;UACbC,KAAK,EAAGS,eAAiB;UACzBR,QAAQ,EAAGA,QAAU;UACrBC,mBAAmB;QAAA,GAJbO,eAAe,CAACG,EAKtB;MACD,CACG,CAAC;IAAA,CACC,CAAC;EAEX;EAEA,oBACC3B,IAAA;IAAKO,SAAS,EAAC,kCAAkC;IAAAE,QAAA,EAC9Ce,eAAe,CAACK,QAAQ,KAAK,IAAI,gBAClC3B,KAAA,CAAAE,SAAA;MAAAK,QAAA,GACG,CAAEQ,mBAAmB,IAAIM,aAAa,KAAK,MAAM,iBAClDvB,IAAA;QAAKO,SAAS,EAAC,wCAAwC;QAAAE,QAAA,EACpDe,eAAe,CAACH;MAAK,CACnB,CACL,eACDrB,IAAA;QAAKO,SAAS,EAAC,0CAA0C;QAAAE,QAAA,eACxDT,IAAA,CAACwB,eAAe,CAACM,MAAM;UACtBC,IAAI,EAAGjB,IAAM;UACbC,KAAK,EAAGS;QAAiB,CACzB;MAAC,CACE,CAAC;IAAA,CACL,CAAC,gBAEHxB,IAAA,CAACwB,eAAe,CAACI,IAAI;MACpBd,IAAI,EAAGA,IAAM;MACbC,KAAK,EAAGS,eAAiB;MACzBR,QAAQ,EAAGA,QAAU;MACrBC,mBAAmB,EAClBM,aAAa,KAAK,MAAM,GAAG,IAAI,GAAGN;IAClC,CACD;EACD,CACG,CAAC;AAER","ignoreList":[]}
@@ -5,7 +5,7 @@ import clsx from 'clsx';
5
5
  /**
6
6
  * WordPress dependencies
7
7
  */
8
- import { __experimentalHStack as HStack, __experimentalVStack as VStack, Spinner, Flex, FlexItem, privateApis as componentsPrivateApis } from '@wordpress/components';
8
+ import { __experimentalHStack as HStack, __experimentalVStack as VStack, Spinner, Flex, FlexItem, Tooltip, privateApis as componentsPrivateApis } from '@wordpress/components';
9
9
  import { __, sprintf } from '@wordpress/i18n';
10
10
  import { useInstanceId } from '@wordpress/compose';
11
11
  import { isAppleOS } from '@wordpress/keycodes';
@@ -40,12 +40,14 @@ function GridItem({
40
40
  regularFields,
41
41
  badgeFields,
42
42
  hasBulkActions,
43
- config
43
+ config,
44
+ posinset
44
45
  }) {
45
46
  const {
46
47
  showTitle = true,
47
48
  showMedia = true,
48
- showDescription = true
49
+ showDescription = true,
50
+ infiniteScrollEnabled
49
51
  } = view;
50
52
  const hasBulkAction = useHasAPossibleBulkAction(actions, item);
51
53
  const id = getItemId(item);
@@ -76,6 +78,9 @@ function GridItem({
76
78
  };
77
79
  }
78
80
  }
81
+ const {
82
+ paginationInfo
83
+ } = useContext(DataViewsContext);
79
84
  return /*#__PURE__*/_jsxs(VStack, {
80
85
  spacing: 0,
81
86
  className: clsx('dataviews-view-grid__card', {
@@ -91,6 +96,9 @@ function GridItem({
91
96
  onChangeSelection(selection.includes(id) ? selection.filter(itemId => id !== itemId) : [...selection, id]);
92
97
  }
93
98
  },
99
+ role: infiniteScrollEnabled ? 'article' : undefined,
100
+ "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : undefined,
101
+ "aria-posinset": posinset,
94
102
  children: [showMedia && renderedMediaField && /*#__PURE__*/_jsx(ItemClickWrapper, {
95
103
  item: item,
96
104
  isItemClickable: isItemClickable,
@@ -156,9 +164,12 @@ function GridItem({
156
164
  },
157
165
  direction: "row",
158
166
  children: /*#__PURE__*/_jsxs(_Fragment, {
159
- children: [/*#__PURE__*/_jsx(FlexItem, {
160
- className: "dataviews-view-grid__field-name",
161
- children: field.header
167
+ children: [/*#__PURE__*/_jsx(Tooltip, {
168
+ text: field.label,
169
+ children: /*#__PURE__*/_jsx(FlexItem, {
170
+ className: "dataviews-view-grid__field-name",
171
+ children: field.header
172
+ })
162
173
  }), /*#__PURE__*/_jsx(FlexItem, {
163
174
  className: "dataviews-view-grid__field-value",
164
175
  style: {
@@ -239,6 +250,7 @@ function ViewGrid({
239
250
  groups.get(groupName)?.push(item);
240
251
  return groups;
241
252
  }, new Map()) : null;
253
+ const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
242
254
  return /*#__PURE__*/_jsxs(_Fragment, {
243
255
  children: [
244
256
  // Render multiple groups.
@@ -291,7 +303,8 @@ function ViewGrid({
291
303
  },
292
304
  "aria-busy": isLoading,
293
305
  ref: resizeObserverRef,
294
- children: data.map(item => {
306
+ role: isInfiniteScroll ? 'feed' : undefined,
307
+ children: data.map((item, index) => {
295
308
  return /*#__PURE__*/_jsx(GridItem, {
296
309
  view: view,
297
310
  selection: selection,
@@ -310,7 +323,8 @@ function ViewGrid({
310
323
  hasBulkActions: hasBulkActions,
311
324
  config: {
312
325
  sizes: size
313
- }
326
+ },
327
+ posinset: isInfiniteScroll ? index + 1 : undefined
314
328
  }, getItemId(item));
315
329
  })
316
330
  }),
@@ -323,6 +337,9 @@ function ViewGrid({
323
337
  children: /*#__PURE__*/_jsx("p", {
324
338
  children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : empty
325
339
  })
340
+ }), hasData && isLoading && /*#__PURE__*/_jsx("p", {
341
+ className: "dataviews-loading-more",
342
+ children: /*#__PURE__*/_jsx(Spinner, {})
326
343
  })]
327
344
  });
328
345
  }
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","privateApis","componentsPrivateApis","__","sprintf","useInstanceId","isAppleOS","useContext","unlock","ItemActions","DataViewsSelectionCheckbox","DataViewsContext","useHasAPossibleBulkAction","useSomeItemHasAPossibleBulkAction","ItemClickWrapper","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Badge","GridItem","view","selection","onChangeSelection","onClickItem","isItemClickable","renderItemLink","getItemId","item","actions","mediaField","titleField","descriptionField","regularFields","badgeFields","hasBulkActions","config","showTitle","showMedia","showDescription","hasBulkAction","id","instanceId","isSelected","includes","renderedMediaField","render","field","renderedTitleField","mediaA11yProps","titleA11yProps","spacing","className","onClickCapture","event","metaKey","ctrlKey","stopPropagation","preventDefault","filter","itemId","children","disabled","justify","length","isCompact","wrap","alignment","map","gap","expanded","style","height","direction","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","Array","from","entries","groupItems","label","gridTemplateColumns","ref","sizes"],"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\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n\tViewGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nconst { Badge } = unlock( componentsPrivateApis );\n\ninterface GridItemProps< Item > {\n\tview: ViewGridType;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\thasBulkActions: boolean;\n\tconfig: {\n\t\tsizes: string;\n\t};\n}\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}: GridItemProps< Item > ) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst instanceId = useInstanceId( GridItem );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tlet mediaA11yProps;\n\tlet titleA11yProps;\n\tif ( isItemClickable( item ) && onClickItem ) {\n\t\tif ( renderedTitleField ) {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t\ttitleA11yProps = {\n\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t} else {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t};\n\t\t}\n\t}\n\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>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__media\"\n\t\t\t\t\t{ ...mediaA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t{ hasBulkActions && showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t>\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\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\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<VStack key={ groupName } spacing={ 2 }>\n\t\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-grid__group-header\">\n\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t'dataviews-view-grid',\n\t\t\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( 'dataviews-view-grid', className ) }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item ) => {\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/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<p>{ isLoading ? <Spinner /> : empty }</p>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t</>\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","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Badge","GridItem","view","selection","onChangeSelection","onClickItem","isItemClickable","renderItemLink","getItemId","item","actions","mediaField","titleField","descriptionField","regularFields","badgeFields","hasBulkActions","config","posinset","showTitle","showMedia","showDescription","infiniteScrollEnabled","hasBulkAction","id","instanceId","isSelected","includes","renderedMediaField","render","field","renderedTitleField","mediaA11yProps","titleA11yProps","paginationInfo","spacing","className","onClickCapture","event","metaKey","ctrlKey","stopPropagation","preventDefault","filter","itemId","role","undefined","totalItems","children","disabled","justify","length","isCompact","wrap","alignment","map","gap","expanded","style","height","direction","text","label","header","maxHeight","ViewGrid","data","fields","isLoading","empty","_view$fields","resizeObserverRef","find","otherFields","reduce","accumulator","fieldId","f","key","layout","push","hasData","usedPreviewSize","previewSize","size","groupField","groupByField","dataByGroup","groups","groupName","getValue","has","set","get","Map","isInfiniteScroll","Array","from","entries","groupItems","gridTemplateColumns","ref","sizes","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tTooltip,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n\tViewGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nconst { Badge } = unlock( componentsPrivateApis );\n\ninterface GridItemProps< Item > {\n\tview: ViewGridType;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\thasBulkActions: boolean;\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\titem,\n\tactions,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\thasBulkActions,\n\tconfig,\n\tposinset,\n}: GridItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst instanceId = useInstanceId( GridItem );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tlet mediaA11yProps;\n\tlet titleA11yProps;\n\tif ( isItemClickable( item ) && onClickItem ) {\n\t\tif ( renderedTitleField ) {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t\ttitleA11yProps = {\n\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t} else {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t};\n\t\t}\n\t}\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 0 }\n\t\t\tkey={ id }\n\t\t\tclassName={ clsx( 'dataviews-view-grid__card', {\n\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t} ) }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tif ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\taria-posinset={ posinset }\n\t\t>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__media\"\n\t\t\t\t\t{ ...mediaA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t{ hasBulkActions && showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t>\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip text={ field.label }>\n\t\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</VStack>\n\t);\n}\n\nfunction ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewGridProps< Item > ) {\n\tconst { resizeObserverRef } = useContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst usedPreviewSize = view.layout?.previewSize;\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( f ) => f.id === view.groupByField )\n\t\t: null;\n\n\t// Group data by groupByField if specified\n\tconst dataByGroup = groupField\n\t\t? data.reduce( ( groups: Map< string, typeof data >, item ) => {\n\t\t\t\tconst groupName = groupField.getValue( { item } );\n\t\t\t\tif ( ! groups.has( groupName ) ) {\n\t\t\t\t\tgroups.set( groupName, [] );\n\t\t\t\t}\n\t\t\t\tgroups.get( groupName )?.push( item );\n\t\t\t\treturn groups;\n\t\t }, new Map< string, typeof data >() )\n\t\t: null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<VStack key={ groupName } spacing={ 2 }>\n\t\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-grid__group-header\">\n\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t'dataviews-view-grid',\n\t\t\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisItemClickable\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderItemLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasBulkActions\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( 'dataviews-view-grid', className ) }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\trole={ isInfiniteScroll ? 'feed' : undefined }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll ? index + 1 : undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<p>{ isLoading ? <Spinner /> : empty }</p>\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewGrid;\n"],"mappings":"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","ignoreList":[]}
@@ -11,6 +11,12 @@ import { useContext } from '@wordpress/element';
11
11
  import DataViewsContext from '../../components/dataviews-context';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  const imageSizes = [{
14
+ value: 120,
15
+ breakpoint: 1
16
+ }, {
17
+ value: 170,
18
+ breakpoint: 1
19
+ }, {
14
20
  value: 230,
15
21
  breakpoint: 1
16
22
  }, {
@@ -24,25 +30,19 @@ const imageSizes = [{
24
30
  breakpoint: 588 // at minimum image width, 2 images display at this container size
25
31
  }];
26
32
  export default function PreviewSizePicker() {
33
+ var _view$layout$previewS, _breakValues$map$filt;
27
34
  const context = useContext(DataViewsContext);
28
35
  const view = context.view;
29
- if (context.containerWidth < 588) {
30
- return null;
31
- }
32
36
  const breakValues = imageSizes.filter(size => {
33
37
  return context.containerWidth >= size.breakpoint;
34
38
  });
35
-
39
+ const layoutPreviewSize = (_view$layout$previewS = view.layout?.previewSize) !== null && _view$layout$previewS !== void 0 ? _view$layout$previewS : 230; // Default to the third smallest size if no preview size is set.
36
40
  // If the container has resized and the set preview size is no longer available,
37
- // we reset it to the next smallest size.
38
- const previewSizeToUse = view.layout?.previewSize ? breakValues.map((size, index) => ({
41
+ // we reset it to the next smallest size, or the smallest available size.
42
+ const previewSizeToUse = (_breakValues$map$filt = breakValues.map((size, index) => ({
39
43
  ...size,
40
44
  index
41
- })).filter(size => {
42
- var _view$layout$previewS;
43
- return size.value <= ((_view$layout$previewS = view.layout?.previewSize) !== null && _view$layout$previewS !== void 0 ? _view$layout$previewS : 0);
44
- } // We know the view.layout?.previewSize exists at this point but the linter doesn't seem to.
45
- ).sort((a, b) => b.value - a.value)[0].index : 0;
45
+ })).filter(size => size.value <= layoutPreviewSize).sort((a, b) => b.value - a.value)[0]?.index) !== null && _breakValues$map$filt !== void 0 ? _breakValues$map$filt : 0;
46
46
  const marks = breakValues.map((size, index) => {
47
47
  return {
48
48
  value: index
@@ -1 +1 @@
1
- {"version":3,"names":["RangeControl","__","useContext","DataViewsContext","jsx","_jsx","imageSizes","value","breakpoint","PreviewSizePicker","context","view","containerWidth","breakValues","filter","size","previewSizeToUse","layout","previewSize","map","index","_view$layout$previewS","sort","a","b","marks","__nextHasNoMarginBottom","__next40pxDefaultSize","showTooltip","label","min","max","length","withInputField","onChange","onChangeView","step"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/preview-size-picker.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RangeControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../components/dataviews-context';\nimport type { ViewGrid } from '../../types';\n\nconst imageSizes = [\n\t{\n\t\tvalue: 230,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 290,\n\t\tbreakpoint: 1112, // at minimum image width, 4 images display at this container size\n\t},\n\t{\n\t\tvalue: 350,\n\t\tbreakpoint: 1636, // at minimum image width, 6 images display at this container size\n\t},\n\t{\n\t\tvalue: 430,\n\t\tbreakpoint: 588, // at minimum image width, 2 images display at this container size\n\t},\n];\n\nexport default function PreviewSizePicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\n\tif ( context.containerWidth < 588 ) {\n\t\treturn null;\n\t}\n\n\tconst breakValues = imageSizes.filter( ( size ) => {\n\t\treturn context.containerWidth >= size.breakpoint;\n\t} );\n\n\t// If the container has resized and the set preview size is no longer available,\n\t// we reset it to the next smallest size.\n\tconst previewSizeToUse = view.layout?.previewSize\n\t\t? breakValues\n\t\t\t\t.map( ( size, index ) => ( { ...size, index } ) )\n\t\t\t\t.filter(\n\t\t\t\t\t( size ) => size.value <= ( view.layout?.previewSize ?? 0 ) // We know the view.layout?.previewSize exists at this point but the linter doesn't seem to.\n\t\t\t\t)\n\t\t\t\t.sort( ( a, b ) => b.value - a.value )[ 0 ].index\n\t\t: 0;\n\n\tconst marks = breakValues.map( ( size, index ) => {\n\t\treturn {\n\t\t\tvalue: index,\n\t\t};\n\t} );\n\n\treturn (\n\t\t<RangeControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tshowTooltip={ false }\n\t\t\tlabel={ __( 'Preview size' ) }\n\t\t\tvalue={ previewSizeToUse }\n\t\t\tmin={ 0 }\n\t\t\tmax={ breakValues.length - 1 }\n\t\t\twithInputField={ false }\n\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tpreviewSize: breakValues[ value ].value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tstep={ 1 }\n\t\t\tmarks={ marks }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,uBAAuB;AACpD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,gBAAgB,MAAM,oCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlE,MAAMC,UAAU,GAAG,CAClB;EACCC,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE;AACb,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,IAAI,CAAE;AACnB,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,IAAI,CAAE;AACnB,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,GAAG,CAAE;AAClB,CAAC,CACD;AAED,eAAe,SAASC,iBAAiBA,CAAA,EAAG;EAC3C,MAAMC,OAAO,GAAGR,UAAU,CAAEC,gBAAiB,CAAC;EAC9C,MAAMQ,IAAI,GAAGD,OAAO,CAACC,IAAgB;EAErC,IAAKD,OAAO,CAACE,cAAc,GAAG,GAAG,EAAG;IACnC,OAAO,IAAI;EACZ;EAEA,MAAMC,WAAW,GAAGP,UAAU,CAACQ,MAAM,CAAIC,IAAI,IAAM;IAClD,OAAOL,OAAO,CAACE,cAAc,IAAIG,IAAI,CAACP,UAAU;EACjD,CAAE,CAAC;;EAEH;EACA;EACA,MAAMQ,gBAAgB,GAAGL,IAAI,CAACM,MAAM,EAAEC,WAAW,GAC9CL,WAAW,CACVM,GAAG,CAAE,CAAEJ,IAAI,EAAEK,KAAK,MAAQ;IAAE,GAAGL,IAAI;IAAEK;EAAM,CAAC,CAAG,CAAC,CAChDN,MAAM,CACJC,IAAI;IAAA,IAAAM,qBAAA;IAAA,OAAMN,IAAI,CAACR,KAAK,MAAAc,qBAAA,GAAMV,IAAI,CAACM,MAAM,EAAEC,WAAW,cAAAG,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAE;EAAA,EAAC;EAC7D,CAAC,CACAC,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMA,CAAC,CAACjB,KAAK,GAAGgB,CAAC,CAAChB,KAAM,CAAC,CAAE,CAAC,CAAE,CAACa,KAAK,GACjD,CAAC;EAEJ,MAAMK,KAAK,GAAGZ,WAAW,CAACM,GAAG,CAAE,CAAEJ,IAAI,EAAEK,KAAK,KAAM;IACjD,OAAO;MACNb,KAAK,EAAEa;IACR,CAAC;EACF,CAAE,CAAC;EAEH,oBACCf,IAAA,CAACL,YAAY;IACZ0B,uBAAuB;IACvBC,qBAAqB;IACrBC,WAAW,EAAG,KAAO;IACrBC,KAAK,EAAG5B,EAAE,CAAE,cAAe,CAAG;IAC9BM,KAAK,EAAGS,gBAAkB;IAC1Bc,GAAG,EAAG,CAAG;IACTC,GAAG,EAAGlB,WAAW,CAACmB,MAAM,GAAG,CAAG;IAC9BC,cAAc,EAAG,KAAO;IACxBC,QAAQ,EAAGA,CAAE3B,KAAK,GAAG,CAAC,KAAM;MAC3BG,OAAO,CAACyB,YAAY,CAAE;QACrB,GAAGxB,IAAI;QACPM,MAAM,EAAE;UACP,GAAGN,IAAI,CAACM,MAAM;UACdC,WAAW,EAAEL,WAAW,CAAEN,KAAK,CAAE,CAACA;QACnC;MACD,CAAE,CAAC;IACJ,CAAG;IACH6B,IAAI,EAAG,CAAG;IACVX,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["RangeControl","__","useContext","DataViewsContext","jsx","_jsx","imageSizes","value","breakpoint","PreviewSizePicker","_view$layout$previewS","_breakValues$map$filt","context","view","breakValues","filter","size","containerWidth","layoutPreviewSize","layout","previewSize","previewSizeToUse","map","index","sort","a","b","marks","__nextHasNoMarginBottom","__next40pxDefaultSize","showTooltip","label","min","max","length","withInputField","onChange","onChangeView","step"],"sources":["@wordpress/dataviews/src/dataviews-layouts/grid/preview-size-picker.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RangeControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../components/dataviews-context';\nimport type { ViewGrid } from '../../types';\n\nconst imageSizes = [\n\t{\n\t\tvalue: 120,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 170,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 230,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 290,\n\t\tbreakpoint: 1112, // at minimum image width, 4 images display at this container size\n\t},\n\t{\n\t\tvalue: 350,\n\t\tbreakpoint: 1636, // at minimum image width, 6 images display at this container size\n\t},\n\t{\n\t\tvalue: 430,\n\t\tbreakpoint: 588, // at minimum image width, 2 images display at this container size\n\t},\n];\n\nexport default function PreviewSizePicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\n\tconst breakValues = imageSizes.filter( ( size ) => {\n\t\treturn context.containerWidth >= size.breakpoint;\n\t} );\n\n\tconst layoutPreviewSize = view.layout?.previewSize ?? 230; // Default to the third smallest size if no preview size is set.\n\t// If the container has resized and the set preview size is no longer available,\n\t// we reset it to the next smallest size, or the smallest available size.\n\tconst previewSizeToUse =\n\t\tbreakValues\n\t\t\t.map( ( size, index ) => ( { ...size, index } ) )\n\t\t\t.filter( ( size ) => size.value <= layoutPreviewSize )\n\t\t\t.sort( ( a, b ) => b.value - a.value )[ 0 ]?.index ?? 0;\n\n\tconst marks = breakValues.map( ( size, index ) => {\n\t\treturn {\n\t\t\tvalue: index,\n\t\t};\n\t} );\n\n\treturn (\n\t\t<RangeControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tshowTooltip={ false }\n\t\t\tlabel={ __( 'Preview size' ) }\n\t\t\tvalue={ previewSizeToUse }\n\t\t\tmin={ 0 }\n\t\t\tmax={ breakValues.length - 1 }\n\t\t\twithInputField={ false }\n\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tpreviewSize: breakValues[ value ].value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tstep={ 1 }\n\t\t\tmarks={ marks }\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,uBAAuB;AACpD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,gBAAgB,MAAM,oCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlE,MAAMC,UAAU,GAAG,CAClB;EACCC,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE;AACb,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE;AACb,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE;AACb,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,IAAI,CAAE;AACnB,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,IAAI,CAAE;AACnB,CAAC,EACD;EACCD,KAAK,EAAE,GAAG;EACVC,UAAU,EAAE,GAAG,CAAE;AAClB,CAAC,CACD;AAED,eAAe,SAASC,iBAAiBA,CAAA,EAAG;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EAC3C,MAAMC,OAAO,GAAGV,UAAU,CAAEC,gBAAiB,CAAC;EAC9C,MAAMU,IAAI,GAAGD,OAAO,CAACC,IAAgB;EAErC,MAAMC,WAAW,GAAGR,UAAU,CAACS,MAAM,CAAIC,IAAI,IAAM;IAClD,OAAOJ,OAAO,CAACK,cAAc,IAAID,IAAI,CAACR,UAAU;EACjD,CAAE,CAAC;EAEH,MAAMU,iBAAiB,IAAAR,qBAAA,GAAGG,IAAI,CAACM,MAAM,EAAEC,WAAW,cAAAV,qBAAA,cAAAA,qBAAA,GAAI,GAAG,CAAC,CAAC;EAC3D;EACA;EACA,MAAMW,gBAAgB,IAAAV,qBAAA,GACrBG,WAAW,CACTQ,GAAG,CAAE,CAAEN,IAAI,EAAEO,KAAK,MAAQ;IAAE,GAAGP,IAAI;IAAEO;EAAM,CAAC,CAAG,CAAC,CAChDR,MAAM,CAAIC,IAAI,IAAMA,IAAI,CAACT,KAAK,IAAIW,iBAAkB,CAAC,CACrDM,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMA,CAAC,CAACnB,KAAK,GAAGkB,CAAC,CAAClB,KAAM,CAAC,CAAE,CAAC,CAAE,EAAEgB,KAAK,cAAAZ,qBAAA,cAAAA,qBAAA,GAAI,CAAC;EAEzD,MAAMgB,KAAK,GAAGb,WAAW,CAACQ,GAAG,CAAE,CAAEN,IAAI,EAAEO,KAAK,KAAM;IACjD,OAAO;MACNhB,KAAK,EAAEgB;IACR,CAAC;EACF,CAAE,CAAC;EAEH,oBACClB,IAAA,CAACL,YAAY;IACZ4B,uBAAuB;IACvBC,qBAAqB;IACrBC,WAAW,EAAG,KAAO;IACrBC,KAAK,EAAG9B,EAAE,CAAE,cAAe,CAAG;IAC9BM,KAAK,EAAGc,gBAAkB;IAC1BW,GAAG,EAAG,CAAG;IACTC,GAAG,EAAGnB,WAAW,CAACoB,MAAM,GAAG,CAAG;IAC9BC,cAAc,EAAG,KAAO;IACxBC,QAAQ,EAAGA,CAAE7B,KAAK,GAAG,CAAC,KAAM;MAC3BK,OAAO,CAACyB,YAAY,CAAE;QACrB,GAAGxB,IAAI;QACPM,MAAM,EAAE;UACP,GAAGN,IAAI,CAACM,MAAM;UACdC,WAAW,EAAEN,WAAW,CAAEP,KAAK,CAAE,CAACA;QACnC;MACD,CAAE,CAAC;IACJ,CAAG;IACH+B,IAAI,EAAG,CAAG;IACVX,KAAK,EAAGA;EAAO,CACf,CAAC;AAEJ","ignoreList":[]}
@@ -8,7 +8,7 @@ import clsx from 'clsx';
8
8
  */
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
- import { useCallback, useEffect, useMemo, useRef, useState } from '@wordpress/element';
11
+ import { useCallback, useEffect, useMemo, useRef, useState, useContext } from '@wordpress/element';
12
12
  import { __ } from '@wordpress/i18n';
13
13
  import { moreVertical } from '@wordpress/icons';
14
14
  import { useRegistry } from '@wordpress/data';
@@ -18,7 +18,8 @@ import { useRegistry } from '@wordpress/data';
18
18
  */
19
19
  import { unlock } from '../../lock-unlock';
20
20
  import { ActionsMenuGroup, ActionModal } from '../../components/dataviews-item-actions';
21
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
21
+ import DataViewsContext from '../../components/dataviews-context';
22
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
22
23
  const {
23
24
  Menu
24
25
  } = unlock(componentsPrivateApis);
@@ -90,12 +91,14 @@ function ListItem({
90
91
  descriptionField,
91
92
  onSelect,
92
93
  otherFields,
93
- onDropdownTriggerKeyDown
94
+ onDropdownTriggerKeyDown,
95
+ posinset
94
96
  }) {
95
97
  const {
96
98
  showTitle = true,
97
99
  showMedia = true,
98
- showDescription = true
100
+ showDescription = true,
101
+ infiniteScrollEnabled
99
102
  } = view;
100
103
  const itemRef = useRef(null);
101
104
  const labelId = `${idPrefix}-label`;
@@ -109,6 +112,9 @@ function ListItem({
109
112
  const isHover = type === 'mouseenter';
110
113
  setIsHovered(isHover);
111
114
  };
115
+ const {
116
+ paginationInfo
117
+ } = useContext(DataViewsContext);
112
118
  useEffect(() => {
113
119
  if (isSelected) {
114
120
  itemRef.current?.scrollIntoView({
@@ -186,8 +192,14 @@ function ListItem({
186
192
  });
187
193
  return /*#__PURE__*/_jsx(Composite.Row, {
188
194
  ref: itemRef,
189
- render: /*#__PURE__*/_jsx("div", {}),
190
- role: "row",
195
+ render:
196
+ /*#__PURE__*/
197
+ /* aria-posinset breaks Composite.Row if passed to it directly. */
198
+ _jsx("div", {
199
+ "aria-posinset": posinset,
200
+ "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : undefined
201
+ }),
202
+ role: infiniteScrollEnabled ? 'article' : 'row',
191
203
  className: clsx({
192
204
  'is-selected': isSelected,
193
205
  'is-hovered': isHovered
@@ -344,29 +356,35 @@ export default function ViewList(props) {
344
356
  })
345
357
  });
346
358
  }
347
- return /*#__PURE__*/_jsx(Composite, {
348
- id: baseId,
349
- render: /*#__PURE__*/_jsx("div", {}),
350
- className: clsx('dataviews-view-list', className),
351
- role: "grid",
352
- activeId: activeCompositeId,
353
- setActiveId: setActiveCompositeId,
354
- children: data.map(item => {
355
- const id = generateCompositeItemIdPrefix(item);
356
- return /*#__PURE__*/_jsx(ListItem, {
357
- view: view,
358
- idPrefix: id,
359
- actions: actions,
360
- item: item,
361
- isSelected: item === selectedItem,
362
- onSelect: onSelect,
363
- mediaField: mediaField,
364
- titleField: titleField,
365
- descriptionField: descriptionField,
366
- otherFields: otherFields,
367
- onDropdownTriggerKeyDown: onDropdownTriggerKeyDown
368
- }, id);
369
- })
359
+ return /*#__PURE__*/_jsxs(_Fragment, {
360
+ children: [/*#__PURE__*/_jsx(Composite, {
361
+ id: baseId,
362
+ render: /*#__PURE__*/_jsx("div", {}),
363
+ className: clsx('dataviews-view-list', className),
364
+ role: view.infiniteScrollEnabled ? 'feed' : 'grid',
365
+ activeId: activeCompositeId,
366
+ setActiveId: setActiveCompositeId,
367
+ children: data.map((item, index) => {
368
+ const id = generateCompositeItemIdPrefix(item);
369
+ return /*#__PURE__*/_jsx(ListItem, {
370
+ view: view,
371
+ idPrefix: id,
372
+ actions: actions,
373
+ item: item,
374
+ isSelected: item === selectedItem,
375
+ onSelect: onSelect,
376
+ mediaField: mediaField,
377
+ titleField: titleField,
378
+ descriptionField: descriptionField,
379
+ otherFields: otherFields,
380
+ onDropdownTriggerKeyDown: onDropdownTriggerKeyDown,
381
+ posinset: view.infiniteScrollEnabled ? index + 1 : undefined
382
+ }, id);
383
+ })
384
+ }), hasData && isLoading && /*#__PURE__*/_jsx("p", {
385
+ className: "dataviews-loading-more",
386
+ children: /*#__PURE__*/_jsx(Spinner, {})
387
+ })]
370
388
  });
371
389
  }
372
390
  //# sourceMappingURL=index.js.map