@wordpress/dataviews 16.0.0 → 17.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 (123) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/README.md +2 -2
  3. package/build/components/dataform-layouts/panel/dropdown.cjs +2 -2
  4. package/build/components/dataform-layouts/panel/dropdown.cjs.map +2 -2
  5. package/build/components/dataform-layouts/panel/modal.cjs +1 -1
  6. package/build/components/dataform-layouts/panel/modal.cjs.map +2 -2
  7. package/build/components/dataform-layouts/panel/summary-button.cjs +7 -6
  8. package/build/components/dataform-layouts/panel/summary-button.cjs.map +2 -2
  9. package/build/components/dataform-layouts/panel/utils/get-label-content.cjs.map +2 -2
  10. package/build/components/dataviews-filters/filter.cjs.map +2 -2
  11. package/build/components/dataviews-layouts/grid/composite-grid.cjs.map +2 -2
  12. package/build/components/dataviews-layouts/index.cjs +9 -0
  13. package/build/components/dataviews-layouts/index.cjs.map +3 -3
  14. package/build/components/dataviews-layouts/list/index.cjs.map +1 -1
  15. package/build/components/dataviews-layouts/picker-activity/index.cjs +304 -0
  16. package/build/components/dataviews-layouts/picker-activity/index.cjs.map +7 -0
  17. package/build/components/dataviews-layouts/table/column-primary.cjs +2 -2
  18. package/build/components/dataviews-layouts/table/column-primary.cjs.map +2 -2
  19. package/build/components/dataviews-pagination/index.cjs.map +1 -1
  20. package/build/components/dataviews-picker-footer/index.cjs +72 -33
  21. package/build/components/dataviews-picker-footer/index.cjs.map +2 -2
  22. package/build/components/dataviews-view-config/index.cjs +1 -0
  23. package/build/components/dataviews-view-config/index.cjs.map +2 -2
  24. package/build/constants.cjs +4 -1
  25. package/build/constants.cjs.map +2 -2
  26. package/build/dataviews-picker/index.cjs +2 -1
  27. package/build/dataviews-picker/index.cjs.map +2 -2
  28. package/build/field-types/password.cjs +1 -1
  29. package/build/field-types/password.cjs.map +2 -2
  30. package/build/hooks/use-form-validity.cjs +2 -2
  31. package/build/hooks/use-form-validity.cjs.map +2 -2
  32. package/build/types/dataviews.cjs.map +1 -1
  33. package/build-module/components/dataform-layouts/panel/dropdown.mjs +2 -2
  34. package/build-module/components/dataform-layouts/panel/dropdown.mjs.map +2 -2
  35. package/build-module/components/dataform-layouts/panel/modal.mjs +1 -1
  36. package/build-module/components/dataform-layouts/panel/modal.mjs.map +2 -2
  37. package/build-module/components/dataform-layouts/panel/summary-button.mjs +7 -6
  38. package/build-module/components/dataform-layouts/panel/summary-button.mjs.map +2 -2
  39. package/build-module/components/dataform-layouts/panel/utils/get-label-content.mjs.map +2 -2
  40. package/build-module/components/dataviews-filters/filter.mjs.map +2 -2
  41. package/build-module/components/dataviews-layouts/grid/composite-grid.mjs.map +2 -2
  42. package/build-module/components/dataviews-layouts/index.mjs +11 -1
  43. package/build-module/components/dataviews-layouts/index.mjs.map +2 -2
  44. package/build-module/components/dataviews-layouts/list/index.mjs.map +1 -1
  45. package/build-module/components/dataviews-layouts/picker-activity/index.mjs +273 -0
  46. package/build-module/components/dataviews-layouts/picker-activity/index.mjs.map +7 -0
  47. package/build-module/components/dataviews-layouts/table/column-primary.mjs +2 -2
  48. package/build-module/components/dataviews-layouts/table/column-primary.mjs.map +2 -2
  49. package/build-module/components/dataviews-pagination/index.mjs.map +1 -1
  50. package/build-module/components/dataviews-picker-footer/index.mjs +71 -33
  51. package/build-module/components/dataviews-picker-footer/index.mjs.map +2 -2
  52. package/build-module/components/dataviews-view-config/index.mjs +1 -0
  53. package/build-module/components/dataviews-view-config/index.mjs.map +2 -2
  54. package/build-module/constants.mjs +3 -1
  55. package/build-module/constants.mjs.map +2 -2
  56. package/build-module/dataviews-picker/index.mjs +6 -2
  57. package/build-module/dataviews-picker/index.mjs.map +2 -2
  58. package/build-module/field-types/password.mjs +1 -1
  59. package/build-module/field-types/password.mjs.map +2 -2
  60. package/build-module/hooks/use-form-validity.mjs +2 -2
  61. package/build-module/hooks/use-form-validity.mjs.map +2 -2
  62. package/build-style/style-rtl.css +372 -201
  63. package/build-style/style.css +372 -201
  64. package/build-types/components/dataform-layouts/panel/summary-button.d.ts +2 -2
  65. package/build-types/components/dataform-layouts/panel/summary-button.d.ts.map +1 -1
  66. package/build-types/components/dataform-layouts/panel/utils/get-label-content.d.ts.map +1 -1
  67. package/build-types/components/dataviews-filters/filter.d.ts.map +1 -1
  68. package/build-types/components/dataviews-layouts/grid/composite-grid.d.ts.map +1 -1
  69. package/build-types/components/dataviews-layouts/index.d.ts +8 -0
  70. package/build-types/components/dataviews-layouts/index.d.ts.map +1 -1
  71. package/build-types/components/dataviews-layouts/picker-activity/index.d.ts +3 -0
  72. package/build-types/components/dataviews-layouts/picker-activity/index.d.ts.map +1 -0
  73. package/build-types/components/dataviews-picker-footer/index.d.ts +3 -2
  74. package/build-types/components/dataviews-picker-footer/index.d.ts.map +1 -1
  75. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  76. package/build-types/constants.d.ts +1 -0
  77. package/build-types/constants.d.ts.map +1 -1
  78. package/build-types/dataform/stories/index.story.d.ts +1 -0
  79. package/build-types/dataform/stories/index.story.d.ts.map +1 -1
  80. package/build-types/dataviews/stories/index.story.d.ts.map +1 -1
  81. package/build-types/dataviews-picker/index.d.ts +3 -2
  82. package/build-types/dataviews-picker/index.d.ts.map +1 -1
  83. package/build-types/dataviews-picker/stories/index.story.d.ts.map +1 -1
  84. package/build-types/types/dataviews.d.ts +16 -2
  85. package/build-types/types/dataviews.d.ts.map +1 -1
  86. package/build-wp/index.js +1426 -1102
  87. package/package.json +31 -23
  88. package/src/components/dataform-controls/style.scss +1 -1
  89. package/src/components/dataform-layouts/card/style.scss +1 -1
  90. package/src/components/dataform-layouts/details/style.scss +1 -1
  91. package/src/components/dataform-layouts/panel/dropdown.tsx +1 -1
  92. package/src/components/dataform-layouts/panel/modal.tsx +1 -1
  93. package/src/components/dataform-layouts/panel/style.scss +18 -34
  94. package/src/components/dataform-layouts/panel/summary-button.tsx +17 -8
  95. package/src/components/dataform-layouts/panel/utils/get-label-content.tsx +0 -1
  96. package/src/components/dataform-layouts/regular/style.scss +4 -4
  97. package/src/components/dataviews-bulk-actions/style.scss +2 -2
  98. package/src/components/dataviews-filters/filter.tsx +0 -1
  99. package/src/components/dataviews-filters/style.scss +45 -46
  100. package/src/components/dataviews-layouts/activity/style.scss +19 -19
  101. package/src/components/dataviews-layouts/grid/composite-grid.tsx +0 -1
  102. package/src/components/dataviews-layouts/grid/style.scss +19 -13
  103. package/src/components/dataviews-layouts/index.ts +10 -0
  104. package/src/components/dataviews-layouts/list/style.scss +35 -27
  105. package/src/components/dataviews-layouts/picker-activity/index.tsx +359 -0
  106. package/src/components/dataviews-layouts/picker-activity/style.scss +227 -0
  107. package/src/components/dataviews-layouts/picker-grid/style.scss +18 -12
  108. package/src/components/dataviews-layouts/picker-table/style.scss +7 -5
  109. package/src/components/dataviews-layouts/table/style.scss +17 -17
  110. package/src/components/dataviews-picker-footer/index.tsx +94 -31
  111. package/src/components/dataviews-picker-footer/style.scss +1 -1
  112. package/src/components/dataviews-view-config/index.tsx +1 -0
  113. package/src/components/dataviews-view-config/style.scss +1 -1
  114. package/src/constants.ts +1 -0
  115. package/src/dataform/stories/content.story.tsx +1 -1
  116. package/src/dataform/stories/index.story.tsx +1 -0
  117. package/src/dataviews/stories/index.story.tsx +1 -0
  118. package/src/dataviews/style.scss +9 -9
  119. package/src/dataviews-picker/index.tsx +9 -3
  120. package/src/dataviews-picker/stories/index.story.tsx +6 -0
  121. package/src/dataviews-picker/test/dataviews-picker.tsx +5 -0
  122. package/src/style.scss +1 -0
  123. package/src/types/dataviews.ts +21 -1
package/CHANGELOG.md CHANGED
@@ -2,12 +2,57 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
- ## 16.0.0 (2026-06-04)
5
+ ## 17.0.0 (2026-06-24)
6
+
7
+ ### Breaking Changes
8
+
9
+ - `DataViewsPicker`: `DataViewsPicker.BulkActionToolbar` now renders only the bulk-selection info and action buttons, without pagination, matching `DataViews.BulkActionToolbar`. The full footer it previously rendered (including pagination) is now exposed as `DataViewsPicker.Footer`, matching `DataViews.Footer`. [#79180](https://github.com/WordPress/gutenberg/pull/79180)
10
+
11
+ ### Bug Fix
12
+
13
+ - DataForm panel layout: fix double-clicking a field row leaving the flyout stuck open. [#79348](https://github.com/WordPress/gutenberg/pull/79348)
14
+ - DataForm panel layout: use `overflow: clip` on field controls so focus rings of inner elements are no longer clipped. [#79275](https://github.com/WordPress/gutenberg/pull/79275)
15
+
16
+ ### Code Quality
17
+
18
+ - Move `@types/react` from `dependencies` to an optional peer dependency so consumers' React type version is used [#79095](https://github.com/WordPress/gutenberg/pull/79095).
19
+ - DataForm panel layout: remove button/dropdown-specific overrides from `.dataforms-layouts-panel__field-control`; those overrides are no longer needed. [#79275](https://github.com/WordPress/gutenberg/pull/79275)
20
+ - DataForm panel layout: align `label-side` gap with the regular layout by using `--wpds-dimension-gap-sm` (8px). [#79311](https://github.com/WordPress/gutenberg/pull/79311)
21
+
22
+ ### Documentation
23
+
24
+ - Fix `overriden` typo to `overridden` in README. ([#79331](https://github.com/WordPress/gutenberg/pull/79331))
25
+
26
+ ### Internal
27
+
28
+ - Adopt `--wpds-dimension-size-*` design tokens [#79093](https://github.com/WordPress/gutenberg/pull/79093).
29
+ - Migrate the remaining `var(--wpds-dimension-base)` usages off the removed primitive token [#79254](https://github.com/WordPress/gutenberg/pull/79254).
30
+
31
+ ## 16.0.1 (2026-06-16)
32
+
33
+ ## 16.0.0 (2026-06-10)
6
34
 
7
35
  ### Breaking Changes
8
36
 
9
37
  - Revert React back to v18 [#78940](https://github.com/WordPress/gutenberg/pull/78940).
10
38
 
39
+ ### Enhancements
40
+
41
+ - DataViewsPicker: Add a new `pickerActivity` layout that renders selectable items as a vertical activity timeline. [#78941](https://github.com/WordPress/gutenberg/pull/78941)
42
+
43
+ ### Code Quality
44
+
45
+ - Add missing `@types/react` dependency. [#78882](https://github.com/WordPress/gutenberg/pull/78882).
46
+
47
+ ### Documentation
48
+
49
+ - Include DataViews components in [WordPress Design System MCP Server](https://github.com/WordPress/gutenberg/tree/trunk/packages/design-system-mcp) documented components ([#78960](https://github.com/WordPress/gutenberg/pull/78960)).
50
+
51
+ ### Internal
52
+
53
+ - Update `@ariakit/react` to `0.4.29` ([#79055](https://github.com/WordPress/gutenberg/pull/79055)).
54
+ - Dependency updates ([#77954](https://github.com/WordPress/gutenberg/pull/77954)).
55
+
11
56
  ## 15.0.0 (2026-05-27)
12
57
 
13
58
  ### Breaking Changes
package/README.md CHANGED
@@ -1669,7 +1669,7 @@ When the field declares a type, it gets a default sort function:
1669
1669
  }
1670
1670
  ```
1671
1671
 
1672
- The default sorting can be overriden by providing a custom sort function. It takes the following arguments:
1672
+ The default sorting can be overridden by providing a custom sort function. It takes the following arguments:
1673
1673
 
1674
1674
  - `a`: the first item to compare
1675
1675
  - `b`: the second item to compare
@@ -1717,7 +1717,7 @@ Fields that define a type come with default validation for the type. For example
1717
1717
  }
1718
1718
  ```
1719
1719
 
1720
- The validation rules can be overriden by the field author. For example, to set the field as required, or to provide a custom validation so that only even numbers are valid:
1720
+ The validation rules can be overridden by the field author. For example, to set the field as required, or to provide a custom validation so that only even numbers are valid:
1721
1721
 
1722
1722
  ```js
1723
1723
  {
@@ -152,8 +152,8 @@ function PanelDropdown({
152
152
  validity,
153
153
  touched,
154
154
  disabled: fieldDefinition.readOnly === true,
155
- onClick: onToggle,
156
- "aria-expanded": isOpen
155
+ isOpen,
156
+ onClick: onToggle
157
157
  }
158
158
  ),
159
159
  renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DropdownContentWithValidation, { touched, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { ref: dialogRef, ...dialogProps, children: [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/dataform-layouts/panel/dropdown.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n\tDropdown,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useRef, useState } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\nimport { __experimentalUseDialog as useDialog } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldLayoutProps,\n\tNormalizedForm,\n\tFormValidity,\n} from '../../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport SummaryButton from './summary-button';\nimport useReportValidity from '../../../hooks/use-report-validity';\nimport useFieldFromFormField from './utils/use-field-from-form-field';\n\nfunction DropdownHeader( {\n\ttitle,\n\tonClose,\n}: {\n\ttitle?: string;\n\tonClose: () => void;\n} ) {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header\"\n\t\t\tgap=\"lg\"\n\t\t>\n\t\t\t<Stack direction=\"row\" gap=\"sm\" align=\"center\">\n\t\t\t\t{ title && (\n\t\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Heading>\n\t\t\t\t) }\n\t\t\t\t<Spacer style={ { flex: 1 } } />\n\t\t\t\t{ onClose && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nfunction DropdownContentWithValidation( {\n\ttouched,\n\tchildren,\n}: {\n\ttouched: boolean;\n\tchildren: React.ReactNode;\n} ) {\n\tconst ref = useRef< HTMLDivElement >( null );\n\tuseReportValidity( ref, touched );\n\treturn <div ref={ ref }>{ children }</div>;\n}\n\nfunction PanelDropdown< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst [ touched, setTouched ] = useState( false );\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\tconst [ dialogRef, dialogProps ] = useDialog( {\n\t\tfocusOnMount: 'firstInputElement',\n\t} );\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: !! field.children\n\t\t\t\t? field.children\n\t\t\t\t: // If not explicit children return the field id itself.\n\t\t\t\t [ { id: field.id, layout: DEFAULT_LAYOUT } ],\n\t\t} ),\n\t\t[ field ]\n\t);\n\tconst formValidity = useMemo( (): FormValidity => {\n\t\tif ( validity === undefined ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( !! field.children ) {\n\t\t\treturn validity?.children;\n\t\t}\n\n\t\treturn { [ field.id ]: validity };\n\t}, [ validity, field ] );\n\n\tconst { fieldDefinition, fieldLabel, summaryFields } =\n\t\tuseFieldFromFormField( field );\n\tif ( ! fieldDefinition ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={ setPopoverAnchor }\n\t\t\tclassName=\"dataforms-layouts-panel__field-dropdown-anchor\"\n\t\t>\n\t\t\t<Dropdown\n\t\t\t\tcontentClassName=\"dataforms-layouts-panel__field-dropdown\"\n\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\tfocusOnMount={ false }\n\t\t\t\tonToggle={ ( willOpen ) => {\n\t\t\t\t\tif ( ! willOpen ) {\n\t\t\t\t\t\tsetTouched( true );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t<SummaryButton\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\tfieldLabel={ fieldLabel }\n\t\t\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\t\t\tvalidity={ validity }\n\t\t\t\t\t\ttouched={ touched }\n\t\t\t\t\t\tdisabled={ fieldDefinition.readOnly === true }\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t<DropdownContentWithValidation touched={ touched }>\n\t\t\t\t\t\t<div ref={ dialogRef } { ...dialogProps }>\n\t\t\t\t\t\t\t<DropdownHeader\n\t\t\t\t\t\t\t\ttitle={ fieldLabel }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tvalidity={ formValidity }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ (\n\t\t\t\t\t\t\t\t\tFieldLayout,\n\t\t\t\t\t\t\t\t\tchildField,\n\t\t\t\t\t\t\t\t\tchildFieldValidity,\n\t\t\t\t\t\t\t\t\tmarkWhenOptional\n\t\t\t\t\t\t\t\t) => (\n\t\t\t\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\t\t\t\tkey={ childField.id }\n\t\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\t\tfield={ childField }\n\t\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\t\t\t\t\t( form?.fields ?? [] ).length < 2\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmarkWhenOptional={ markWhenOptional }\n\t\t\t\t\t\t\t\t\t\tvalidity={ childFieldValidity }\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</DataFormLayout>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</DropdownContentWithValidation>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default PanelDropdown;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n\tDropdown,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useRef, useState } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\nimport { __experimentalUseDialog as useDialog } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldLayoutProps,\n\tNormalizedForm,\n\tFormValidity,\n} from '../../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport SummaryButton from './summary-button';\nimport useReportValidity from '../../../hooks/use-report-validity';\nimport useFieldFromFormField from './utils/use-field-from-form-field';\n\nfunction DropdownHeader( {\n\ttitle,\n\tonClose,\n}: {\n\ttitle?: string;\n\tonClose: () => void;\n} ) {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header\"\n\t\t\tgap=\"lg\"\n\t\t>\n\t\t\t<Stack direction=\"row\" gap=\"sm\" align=\"center\">\n\t\t\t\t{ title && (\n\t\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Heading>\n\t\t\t\t) }\n\t\t\t\t<Spacer style={ { flex: 1 } } />\n\t\t\t\t{ onClose && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nfunction DropdownContentWithValidation( {\n\ttouched,\n\tchildren,\n}: {\n\ttouched: boolean;\n\tchildren: React.ReactNode;\n} ) {\n\tconst ref = useRef< HTMLDivElement >( null );\n\tuseReportValidity( ref, touched );\n\treturn <div ref={ ref }>{ children }</div>;\n}\n\nfunction PanelDropdown< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst [ touched, setTouched ] = useState( false );\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\tconst [ dialogRef, dialogProps ] = useDialog( {\n\t\tfocusOnMount: 'firstInputElement',\n\t} );\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: !! field.children\n\t\t\t\t? field.children\n\t\t\t\t: // If not explicit children return the field id itself.\n\t\t\t\t [ { id: field.id, layout: DEFAULT_LAYOUT } ],\n\t\t} ),\n\t\t[ field ]\n\t);\n\tconst formValidity = useMemo( (): FormValidity => {\n\t\tif ( validity === undefined ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( !! field.children ) {\n\t\t\treturn validity?.children;\n\t\t}\n\n\t\treturn { [ field.id ]: validity };\n\t}, [ validity, field ] );\n\n\tconst { fieldDefinition, fieldLabel, summaryFields } =\n\t\tuseFieldFromFormField( field );\n\tif ( ! fieldDefinition ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={ setPopoverAnchor }\n\t\t\tclassName=\"dataforms-layouts-panel__field-dropdown-anchor\"\n\t\t>\n\t\t\t<Dropdown\n\t\t\t\tcontentClassName=\"dataforms-layouts-panel__field-dropdown\"\n\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\tfocusOnMount={ false }\n\t\t\t\tonToggle={ ( willOpen ) => {\n\t\t\t\t\tif ( ! willOpen ) {\n\t\t\t\t\t\tsetTouched( true );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t<SummaryButton\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\tfieldLabel={ fieldLabel }\n\t\t\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\t\t\tvalidity={ validity }\n\t\t\t\t\t\ttouched={ touched }\n\t\t\t\t\t\tdisabled={ fieldDefinition.readOnly === true }\n\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t<DropdownContentWithValidation touched={ touched }>\n\t\t\t\t\t\t<div ref={ dialogRef } { ...dialogProps }>\n\t\t\t\t\t\t\t<DropdownHeader\n\t\t\t\t\t\t\t\ttitle={ fieldLabel }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tvalidity={ formValidity }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ (\n\t\t\t\t\t\t\t\t\tFieldLayout,\n\t\t\t\t\t\t\t\t\tchildField,\n\t\t\t\t\t\t\t\t\tchildFieldValidity,\n\t\t\t\t\t\t\t\t\tmarkWhenOptional\n\t\t\t\t\t\t\t\t) => (\n\t\t\t\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\t\t\t\tkey={ childField.id }\n\t\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\t\tfield={ childField }\n\t\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\t\t\t\t\t( form?.fields ?? [] ).length < 2\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmarkWhenOptional={ markWhenOptional }\n\t\t\t\t\t\t\t\t\t\tvalidity={ childFieldValidity }\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</DataFormLayout>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</DropdownContentWithValidation>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default PanelDropdown;\n"],
5
+ "mappings": "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",
6
6
  "names": ["Heading", "Spacer", "useReportValidity", "useDialog", "useFieldFromFormField", "SummaryButton"]
7
7
  }
@@ -193,7 +193,7 @@ function PanelModal({
193
193
  touched,
194
194
  disabled: fieldDefinition.readOnly === true,
195
195
  onClick: () => setIsOpen(true),
196
- "aria-expanded": isOpen
196
+ isOpen
197
197
  }
198
198
  ),
199
199
  isOpen && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/dataform-layouts/panel/modal.tsx"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalSpacer as Spacer,\n\tButton,\n\tModal,\n} from '@wordpress/components';\n\nimport { useContext, useMemo, useRef, useState } from '@wordpress/element';\nimport { useFocusOnMount, useMergeRefs } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tField,\n\tNormalizedForm,\n\tNormalizedFormField,\n\tNormalizedPanelLayout,\n\tPanelOpenAsModal,\n\tFieldLayoutProps,\n} from '../../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport SummaryButton from './summary-button';\nimport useFormValidity from '../../../hooks/use-form-validity';\nimport useReportValidity from '../../../hooks/use-report-validity';\nimport DataFormContext from '../../dataform-context';\nimport useFieldFromFormField from './utils/use-field-from-form-field';\n\nfunction ModalContent< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tfieldLabel,\n\tonClose,\n\ttouched,\n}: {\n\tdata: Item;\n\tfield: NormalizedFormField;\n\tonChange: ( data: Partial< Item > ) => void;\n\tonClose: () => void;\n\tfieldLabel: string;\n\ttouched: boolean;\n} ) {\n\tconst { openAs } = field.layout as NormalizedPanelLayout;\n\tconst { applyLabel, cancelLabel } = openAs as PanelOpenAsModal;\n\tconst { fields } = useContext( DataFormContext );\n\tconst [ changes, setChanges ] = useState< Partial< Item > >( {} );\n\tconst modalData = useMemo( () => {\n\t\treturn deepMerge( data, changes, {\n\t\t\tarrayMerge: ( target, source ) => source,\n\t\t} );\n\t}, [ data, changes ] );\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: !! field.children\n\t\t\t\t? field.children\n\t\t\t\t: // If not explicit children return the field id itself.\n\t\t\t\t [ { id: field.id, layout: DEFAULT_LAYOUT } ],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tconst fieldsAsFieldType: Field< Item >[] = fields.map( ( f ) => ( {\n\t\t...f,\n\t\tEdit: f.Edit === null ? undefined : f.Edit,\n\t\tisValid: {\n\t\t\trequired: f.isValid.required?.constraint,\n\t\t\telements: f.isValid.elements?.constraint,\n\t\t\tmin: f.isValid.min?.constraint,\n\t\t\tmax: f.isValid.max?.constraint,\n\t\t\tpattern: f.isValid.pattern?.constraint,\n\t\t\tminLength: f.isValid.minLength?.constraint,\n\t\t\tmaxLength: f.isValid.maxLength?.constraint,\n\t\t},\n\t} ) );\n\tconst { validity } = useFormValidity( modalData, fieldsAsFieldType, form );\n\n\tconst onApply = () => {\n\t\tonChange( changes );\n\t\tonClose();\n\t};\n\n\tconst handleOnChange = ( newValue: Partial< Item > ) => {\n\t\tsetChanges( ( prev ) =>\n\t\t\tdeepMerge( prev, newValue, {\n\t\t\t\tarrayMerge: ( target, source ) => source,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst focusOnMountRef = useFocusOnMount( 'firstInputElement' );\n\tconst contentRef = useRef< HTMLDivElement >( null );\n\tconst mergedRef = useMergeRefs( [ focusOnMountRef, contentRef ] );\n\n\t// When the modal is opened after being previously closed (touched),\n\t// trigger reportValidity to show field-level errors.\n\tuseReportValidity( contentRef, touched );\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"dataforms-layouts-panel__modal\"\n\t\t\tonRequestClose={ onClose }\n\t\t\tisFullScreen={ false }\n\t\t\ttitle={ fieldLabel }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t<div ref={ mergedRef }>\n\t\t\t\t<DataFormLayout\n\t\t\t\t\tdata={ modalData }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\tvalidity={ validity }\n\t\t\t\t>\n\t\t\t\t\t{ (\n\t\t\t\t\t\tFieldLayout,\n\t\t\t\t\t\tchildField,\n\t\t\t\t\t\tchildFieldValidity,\n\t\t\t\t\t\tmarkWhenOptional\n\t\t\t\t\t) => (\n\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\tkey={ childField.id }\n\t\t\t\t\t\t\tdata={ modalData }\n\t\t\t\t\t\t\tfield={ childField }\n\t\t\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\t\t\thideLabelFromVision={ form.fields.length < 2 }\n\t\t\t\t\t\t\tmarkWhenOptional={ markWhenOptional }\n\t\t\t\t\t\t\tvalidity={ childFieldValidity }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</DataFormLayout>\n\t\t\t</div>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataforms-layouts-panel__modal-footer\"\n\t\t\t\tgap=\"md\"\n\t\t\t>\n\t\t\t\t<Spacer style={ { flex: 1 } } />\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t>\n\t\t\t\t\t{ cancelLabel }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tonClick={ onApply }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t>\n\t\t\t\t\t{ applyLabel }\n\t\t\t\t</Button>\n\t\t\t</Stack>\n\t\t</Modal>\n\t);\n}\n\nfunction PanelModal< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst [ touched, setTouched ] = useState( false );\n\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst { fieldDefinition, fieldLabel, summaryFields } =\n\t\tuseFieldFromFormField( field );\n\tif ( ! fieldDefinition ) {\n\t\treturn null;\n\t}\n\n\tconst handleClose = () => {\n\t\tsetIsOpen( false );\n\t\tsetTouched( true );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SummaryButton\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tfieldLabel={ fieldLabel }\n\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\tvalidity={ validity }\n\t\t\t\ttouched={ touched }\n\t\t\t\tdisabled={ fieldDefinition.readOnly === true }\n\t\t\t\tonClick={ () => setIsOpen( true ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<ModalContent\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tfield={ field }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tfieldLabel={ fieldLabel ?? '' }\n\t\t\t\t\tonClose={ handleClose }\n\t\t\t\t\ttouched={ touched }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PanelModal;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalSpacer as Spacer,\n\tButton,\n\tModal,\n} from '@wordpress/components';\n\nimport { useContext, useMemo, useRef, useState } from '@wordpress/element';\nimport { useFocusOnMount, useMergeRefs } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tField,\n\tNormalizedForm,\n\tNormalizedFormField,\n\tNormalizedPanelLayout,\n\tPanelOpenAsModal,\n\tFieldLayoutProps,\n} from '../../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport SummaryButton from './summary-button';\nimport useFormValidity from '../../../hooks/use-form-validity';\nimport useReportValidity from '../../../hooks/use-report-validity';\nimport DataFormContext from '../../dataform-context';\nimport useFieldFromFormField from './utils/use-field-from-form-field';\n\nfunction ModalContent< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tfieldLabel,\n\tonClose,\n\ttouched,\n}: {\n\tdata: Item;\n\tfield: NormalizedFormField;\n\tonChange: ( data: Partial< Item > ) => void;\n\tonClose: () => void;\n\tfieldLabel: string;\n\ttouched: boolean;\n} ) {\n\tconst { openAs } = field.layout as NormalizedPanelLayout;\n\tconst { applyLabel, cancelLabel } = openAs as PanelOpenAsModal;\n\tconst { fields } = useContext( DataFormContext );\n\tconst [ changes, setChanges ] = useState< Partial< Item > >( {} );\n\tconst modalData = useMemo( () => {\n\t\treturn deepMerge( data, changes, {\n\t\t\tarrayMerge: ( target, source ) => source,\n\t\t} );\n\t}, [ data, changes ] );\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: !! field.children\n\t\t\t\t? field.children\n\t\t\t\t: // If not explicit children return the field id itself.\n\t\t\t\t [ { id: field.id, layout: DEFAULT_LAYOUT } ],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tconst fieldsAsFieldType: Field< Item >[] = fields.map( ( f ) => ( {\n\t\t...f,\n\t\tEdit: f.Edit === null ? undefined : f.Edit,\n\t\tisValid: {\n\t\t\trequired: f.isValid.required?.constraint,\n\t\t\telements: f.isValid.elements?.constraint,\n\t\t\tmin: f.isValid.min?.constraint,\n\t\t\tmax: f.isValid.max?.constraint,\n\t\t\tpattern: f.isValid.pattern?.constraint,\n\t\t\tminLength: f.isValid.minLength?.constraint,\n\t\t\tmaxLength: f.isValid.maxLength?.constraint,\n\t\t},\n\t} ) );\n\tconst { validity } = useFormValidity( modalData, fieldsAsFieldType, form );\n\n\tconst onApply = () => {\n\t\tonChange( changes );\n\t\tonClose();\n\t};\n\n\tconst handleOnChange = ( newValue: Partial< Item > ) => {\n\t\tsetChanges( ( prev ) =>\n\t\t\tdeepMerge( prev, newValue, {\n\t\t\t\tarrayMerge: ( target, source ) => source,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst focusOnMountRef = useFocusOnMount( 'firstInputElement' );\n\tconst contentRef = useRef< HTMLDivElement >( null );\n\tconst mergedRef = useMergeRefs( [ focusOnMountRef, contentRef ] );\n\n\t// When the modal is opened after being previously closed (touched),\n\t// trigger reportValidity to show field-level errors.\n\tuseReportValidity( contentRef, touched );\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"dataforms-layouts-panel__modal\"\n\t\t\tonRequestClose={ onClose }\n\t\t\tisFullScreen={ false }\n\t\t\ttitle={ fieldLabel }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t<div ref={ mergedRef }>\n\t\t\t\t<DataFormLayout\n\t\t\t\t\tdata={ modalData }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\tvalidity={ validity }\n\t\t\t\t>\n\t\t\t\t\t{ (\n\t\t\t\t\t\tFieldLayout,\n\t\t\t\t\t\tchildField,\n\t\t\t\t\t\tchildFieldValidity,\n\t\t\t\t\t\tmarkWhenOptional\n\t\t\t\t\t) => (\n\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\tkey={ childField.id }\n\t\t\t\t\t\t\tdata={ modalData }\n\t\t\t\t\t\t\tfield={ childField }\n\t\t\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\t\t\thideLabelFromVision={ form.fields.length < 2 }\n\t\t\t\t\t\t\tmarkWhenOptional={ markWhenOptional }\n\t\t\t\t\t\t\tvalidity={ childFieldValidity }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</DataFormLayout>\n\t\t\t</div>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataforms-layouts-panel__modal-footer\"\n\t\t\t\tgap=\"md\"\n\t\t\t>\n\t\t\t\t<Spacer style={ { flex: 1 } } />\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t>\n\t\t\t\t\t{ cancelLabel }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tonClick={ onApply }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t>\n\t\t\t\t\t{ applyLabel }\n\t\t\t\t</Button>\n\t\t\t</Stack>\n\t\t</Modal>\n\t);\n}\n\nfunction PanelModal< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst [ touched, setTouched ] = useState( false );\n\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst { fieldDefinition, fieldLabel, summaryFields } =\n\t\tuseFieldFromFormField( field );\n\tif ( ! fieldDefinition ) {\n\t\treturn null;\n\t}\n\n\tconst handleClose = () => {\n\t\tsetIsOpen( false );\n\t\tsetTouched( true );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SummaryButton\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tfieldLabel={ fieldLabel }\n\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\tvalidity={ validity }\n\t\t\t\ttouched={ touched }\n\t\t\t\tdisabled={ fieldDefinition.readOnly === true }\n\t\t\t\tonClick={ () => setIsOpen( true ) }\n\t\t\t\tisOpen={ isOpen }\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<ModalContent\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tfield={ field }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tfieldLabel={ fieldLabel ?? '' }\n\t\t\t\t\tonClose={ handleClose }\n\t\t\t\t\ttouched={ touched }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PanelModal;\n"],
5
+ "mappings": "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",
6
6
  "names": ["DataFormContext", "deepMerge", "useFormValidity", "useReportValidity", "Spacer", "useFieldFromFormField", "SummaryButton"]
7
7
  }
@@ -52,8 +52,8 @@ function SummaryButton({
52
52
  validity,
53
53
  touched,
54
54
  disabled,
55
- onClick,
56
- "aria-expanded": ariaExpanded
55
+ isOpen,
56
+ onClick
57
57
  }) {
58
58
  const { labelPosition, editVisibility } = field.layout;
59
59
  const errorMessage = (0, import_get_first_validation_error.default)(validity);
@@ -82,9 +82,9 @@ function SummaryButton({
82
82
  fieldLabel || ""
83
83
  );
84
84
  const rowRef = (0, import_element.useRef)(null);
85
- const handleRowClick = () => {
86
- const selection = rowRef.current?.ownerDocument.defaultView?.getSelection();
87
- if (selection && selection.toString().length > 0) {
85
+ const editButtonRef = (0, import_element.useRef)(null);
86
+ const handleRowClick = (event) => {
87
+ if (!isOpen && event.detail < 2 && !editButtonRef.current?.contains(event.target) && rowRef.current?.ownerDocument.defaultView?.getSelection()?.toString()) {
88
88
  return;
89
89
  }
90
90
  onClick();
@@ -164,11 +164,12 @@ function SummaryButton({
164
164
  !disabled && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
165
165
  import_components.Button,
166
166
  {
167
+ ref: editButtonRef,
167
168
  className: "dataforms-layouts-panel__field-trigger-icon",
168
169
  label: ariaLabel,
169
170
  icon: import_icons.pencil,
170
171
  size: "small",
171
- "aria-expanded": ariaExpanded,
172
+ "aria-expanded": isOpen,
172
173
  "aria-haspopup": "dialog",
173
174
  "aria-describedby": `${controlId}`
174
175
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/dataform-layouts/panel/summary-button.tsx"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Button, Icon as WCIcon } from '@wordpress/components';\nimport { sprintf, _x } from '@wordpress/i18n';\nimport { error as errorIcon, pencil } from '@wordpress/icons';\nimport { useInstanceId } from '@wordpress/compose';\n// eslint-disable-next-line @wordpress/use-recommended-components -- `Tooltip` is not yet on the recommended `@wordpress/ui` allow-list; landing as a migration step ahead of the wider rollout.\nimport { Tooltip } from '@wordpress/ui';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldValidity,\n\tNormalizedField,\n\tNormalizedFormField,\n\tNormalizedPanelLayout,\n} from '../../../types';\nimport getLabelClassName from './utils/get-label-classname';\nimport getLabelContent from './utils/get-label-content';\nimport getFirstValidationError from './utils/get-first-validation-error';\n\nexport default function SummaryButton< Item >( {\n\tdata,\n\tfield,\n\tfieldLabel,\n\tsummaryFields,\n\tvalidity,\n\ttouched,\n\tdisabled,\n\tonClick,\n\t'aria-expanded': ariaExpanded,\n}: {\n\tdata: Item;\n\tfield: NormalizedFormField;\n\tfieldLabel?: string;\n\tsummaryFields: NormalizedField< Item >[];\n\tvalidity?: FieldValidity;\n\ttouched: boolean;\n\tdisabled?: boolean;\n\tonClick: () => void;\n\t'aria-expanded'?: boolean;\n} ) {\n\tconst { labelPosition, editVisibility } =\n\t\tfield.layout as NormalizedPanelLayout;\n\tconst errorMessage = getFirstValidationError( validity );\n\tconst showError = touched && !! errorMessage;\n\tconst labelClassName = getLabelClassName( labelPosition, showError );\n\tconst labelContent = getLabelContent( showError, errorMessage, fieldLabel );\n\tconst className = clsx(\n\t\t'dataforms-layouts-panel__field-trigger',\n\t\t`dataforms-layouts-panel__field-trigger--label-${ labelPosition }`,\n\t\t{\n\t\t\t'is-disabled': disabled,\n\t\t\t'dataforms-layouts-panel__field-trigger--edit-always':\n\t\t\t\teditVisibility === 'always',\n\t\t}\n\t);\n\n\tconst controlId = useInstanceId(\n\t\tSummaryButton,\n\t\t'dataforms-layouts-panel__field-control'\n\t);\n\n\tconst ariaLabel = showError\n\t\t? sprintf(\n\t\t\t\t// translators: %s: Field name.\n\t\t\t\t_x( 'Edit %s (has errors)', 'field' ),\n\t\t\t\tfieldLabel || ''\n\t\t )\n\t\t: sprintf(\n\t\t\t\t// translators: %s: Field name.\n\t\t\t\t_x( 'Edit %s', 'field' ),\n\t\t\t\tfieldLabel || ''\n\t\t );\n\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handleRowClick = () => {\n\t\tconst selection =\n\t\t\trowRef.current?.ownerDocument.defaultView?.getSelection();\n\t\tif ( selection && selection.toString().length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tonClick();\n\t};\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent ) => {\n\t\tif (\n\t\t\tevent.target === event.currentTarget &&\n\t\t\t( event.key === 'Enter' || event.key === ' ' )\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tonClick();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={ rowRef }\n\t\t\tclassName={ className }\n\t\t\tonClick={ ! disabled ? handleRowClick : undefined }\n\t\t\tonKeyDown={ ! disabled ? handleKeyDown : undefined }\n\t\t>\n\t\t\t{ labelPosition !== 'none' && (\n\t\t\t\t<span className={ labelClassName }>{ labelContent }</span>\n\t\t\t) }\n\t\t\t{ labelPosition === 'none' && showError && (\n\t\t\t\t<Tooltip.Root>\n\t\t\t\t\t<Tooltip.Trigger\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-label-error-content\"\n\t\t\t\t\t\t\t\trole=\"img\"\n\t\t\t\t\t\t\t\taria-label={ errorMessage }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<WCIcon icon={ errorIcon } size={ 16 } />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<Tooltip.Popup>{ errorMessage }</Tooltip.Popup>\n\t\t\t\t</Tooltip.Root>\n\t\t\t) }\n\t\t\t<span\n\t\t\t\tid={ `${ controlId }` }\n\t\t\t\tclassName=\"dataforms-layouts-panel__field-control\"\n\t\t\t>\n\t\t\t\t{ summaryFields.length > 1 ? (\n\t\t\t\t\t<span\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\t\talignItems: 'flex-start',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\tgap: '2px',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ summaryFields.map( ( summaryField ) => (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tsummaryFields.map( ( summaryField ) => (\n\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) )\n\t\t\t\t) }\n\t\t\t</span>\n\t\t\t{ ! disabled && (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-trigger-icon\"\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\ticon={ pencil }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\taria-expanded={ ariaExpanded }\n\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\taria-describedby={ `${ controlId }` }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAKjB,wBAAuC;AACvC,kBAA4B;AAC5B,mBAA2C;AAC3C,qBAA8B;AAE9B,gBAAwB;AACxB,qBAAuB;AAWvB,iCAA8B;AAC9B,+BAA4B;AAC5B,wCAAoC;AAqFhC;AAnFW,SAAR,cAAwC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAClB,GAUI;AACH,QAAM,EAAE,eAAe,eAAe,IACrC,MAAM;AACP,QAAM,mBAAe,kCAAAA,SAAyB,QAAS;AACvD,QAAM,YAAY,WAAW,CAAC,CAAE;AAChC,QAAM,qBAAiB,2BAAAC,SAAmB,eAAe,SAAU;AACnE,QAAM,mBAAe,yBAAAC,SAAiB,WAAW,cAAc,UAAW;AAC1E,QAAM,gBAAY,YAAAC;AAAA,IACjB;AAAA,IACA,iDAAkD,aAAc;AAAA,IAChE;AAAA,MACC,eAAe;AAAA,MACf,uDACC,mBAAmB;AAAA,IACrB;AAAA,EACD;AAEA,QAAM,gBAAY;AAAA,IACjB;AAAA,IACA;AAAA,EACD;AAEA,QAAM,YAAY,gBACf;AAAA;AAAA,QAEA,gBAAI,wBAAwB,OAAQ;AAAA,IACpC,cAAc;AAAA,EACd,QACA;AAAA;AAAA,QAEA,gBAAI,WAAW,OAAQ;AAAA,IACvB,cAAc;AAAA,EACd;AAEH,QAAM,aAAS,uBAA0B,IAAK;AAE9C,QAAM,iBAAiB,MAAM;AAC5B,UAAM,YACL,OAAO,SAAS,cAAc,aAAa,aAAa;AACzD,QAAK,aAAa,UAAU,SAAS,EAAE,SAAS,GAAI;AACnD;AAAA,IACD;AACA,YAAQ;AAAA,EACT;AAEA,QAAM,gBAAgB,CAAE,UAAgC;AACvD,QACC,MAAM,WAAW,MAAM,kBACrB,MAAM,QAAQ,WAAW,MAAM,QAAQ,MACxC;AACD,YAAM,eAAe;AACrB,cAAQ;AAAA,IACT;AAAA,EACD;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,KAAM;AAAA,MACN;AAAA,MACA,SAAU,CAAE,WAAW,iBAAiB;AAAA,MACxC,WAAY,CAAE,WAAW,gBAAgB;AAAA,MAEvC;AAAA,0BAAkB,UACnB,4CAAC,UAAK,WAAY,gBAAmB,wBAAc;AAAA,QAElD,kBAAkB,UAAU,aAC7B,6CAAC,kBAAQ,MAAR,EACA;AAAA;AAAA,YAAC,kBAAQ;AAAA,YAAR;AAAA,cACA,QACC;AAAA,gBAAC;AAAA;AAAA,kBACA,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,cAAa;AAAA,kBAEb,sDAAC,kBAAAC,MAAA,EAAO,MAAO,aAAAC,OAAY,MAAO,IAAK;AAAA;AAAA,cACxC;AAAA;AAAA,UAEF;AAAA,UACA,4CAAC,kBAAQ,OAAR,EAAgB,wBAAc;AAAA,WAChC;AAAA,QAED;AAAA,UAAC;AAAA;AAAA,YACA,IAAK,GAAI,SAAU;AAAA,YACnB,WAAU;AAAA,YAER,wBAAc,SAAS,IACxB;AAAA,cAAC;AAAA;AAAA,gBACA,OAAQ;AAAA,kBACP,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,KAAK;AAAA,gBACN;AAAA,gBAEE,wBAAc,IAAK,CAAE,iBACtB;AAAA,kBAAC;AAAA;AAAA,oBAEA,OAAQ,EAAE,OAAO,OAAO;AAAA,oBAExB;AAAA,sBAAC,aAAa;AAAA,sBAAb;AAAA,wBACA,MAAO;AAAA,wBACP,OAAQ;AAAA;AAAA,oBACT;AAAA;AAAA,kBANM,aAAa;AAAA,gBAOpB,CACC;AAAA;AAAA,YACH,IAEA,cAAc,IAAK,CAAE,iBACpB;AAAA,cAAC,aAAa;AAAA,cAAb;AAAA,gBAEA,MAAO;AAAA,gBACP,OAAQ;AAAA;AAAA,cAFF,aAAa;AAAA,YAGpB,CACC;AAAA;AAAA,QAEJ;AAAA,QACE,CAAE,YACH;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,OAAQ;AAAA,YACR,MAAO;AAAA,YACP,MAAK;AAAA,YACL,iBAAgB;AAAA,YAChB,iBAAc;AAAA,YACd,oBAAmB,GAAI,SAAU;AAAA;AAAA,QAClC;AAAA;AAAA;AAAA,EAEF;AAEF;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Button, Icon as WCIcon } from '@wordpress/components';\nimport { sprintf, _x } from '@wordpress/i18n';\nimport { error as errorIcon, pencil } from '@wordpress/icons';\nimport { useInstanceId } from '@wordpress/compose';\nimport { Tooltip } from '@wordpress/ui';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldValidity,\n\tNormalizedField,\n\tNormalizedFormField,\n\tNormalizedPanelLayout,\n} from '../../../types';\nimport getLabelClassName from './utils/get-label-classname';\nimport getLabelContent from './utils/get-label-content';\nimport getFirstValidationError from './utils/get-first-validation-error';\n\nexport default function SummaryButton< Item >( {\n\tdata,\n\tfield,\n\tfieldLabel,\n\tsummaryFields,\n\tvalidity,\n\ttouched,\n\tdisabled,\n\tisOpen,\n\tonClick,\n}: {\n\tdata: Item;\n\tfield: NormalizedFormField;\n\tfieldLabel?: string;\n\tsummaryFields: NormalizedField< Item >[];\n\tvalidity?: FieldValidity;\n\ttouched: boolean;\n\tdisabled?: boolean;\n\tisOpen: boolean;\n\tonClick: () => void;\n} ) {\n\tconst { labelPosition, editVisibility } =\n\t\tfield.layout as NormalizedPanelLayout;\n\tconst errorMessage = getFirstValidationError( validity );\n\tconst showError = touched && !! errorMessage;\n\tconst labelClassName = getLabelClassName( labelPosition, showError );\n\tconst labelContent = getLabelContent( showError, errorMessage, fieldLabel );\n\tconst className = clsx(\n\t\t'dataforms-layouts-panel__field-trigger',\n\t\t`dataforms-layouts-panel__field-trigger--label-${ labelPosition }`,\n\t\t{\n\t\t\t'is-disabled': disabled,\n\t\t\t'dataforms-layouts-panel__field-trigger--edit-always':\n\t\t\t\teditVisibility === 'always',\n\t\t}\n\t);\n\n\tconst controlId = useInstanceId(\n\t\tSummaryButton,\n\t\t'dataforms-layouts-panel__field-control'\n\t);\n\n\tconst ariaLabel = showError\n\t\t? sprintf(\n\t\t\t\t// translators: %s: Field name.\n\t\t\t\t_x( 'Edit %s (has errors)', 'field' ),\n\t\t\t\tfieldLabel || ''\n\t\t )\n\t\t: sprintf(\n\t\t\t\t// translators: %s: Field name.\n\t\t\t\t_x( 'Edit %s', 'field' ),\n\t\t\t\tfieldLabel || ''\n\t\t );\n\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst editButtonRef = useRef< HTMLButtonElement >( null );\n\n\tconst handleRowClick = ( event: React.MouseEvent ) => {\n\t\t// Prevent a drag-to-select from opening the flyout — focus could move\n\t\t// in and lose the selection. Skip the guard for double-clicks (standard\n\t\t// button behavior), an already-open flyout, and the edit button.\n\t\tif (\n\t\t\t! isOpen &&\n\t\t\tevent.detail < 2 &&\n\t\t\t! editButtonRef.current?.contains( event.target as Node ) &&\n\t\t\trowRef.current?.ownerDocument.defaultView\n\t\t\t\t?.getSelection()\n\t\t\t\t?.toString()\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tonClick();\n\t};\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent ) => {\n\t\tif (\n\t\t\tevent.target === event.currentTarget &&\n\t\t\t( event.key === 'Enter' || event.key === ' ' )\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tonClick();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={ rowRef }\n\t\t\tclassName={ className }\n\t\t\tonClick={ ! disabled ? handleRowClick : undefined }\n\t\t\tonKeyDown={ ! disabled ? handleKeyDown : undefined }\n\t\t>\n\t\t\t{ labelPosition !== 'none' && (\n\t\t\t\t<span className={ labelClassName }>{ labelContent }</span>\n\t\t\t) }\n\t\t\t{ labelPosition === 'none' && showError && (\n\t\t\t\t<Tooltip.Root>\n\t\t\t\t\t<Tooltip.Trigger\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-label-error-content\"\n\t\t\t\t\t\t\t\trole=\"img\"\n\t\t\t\t\t\t\t\taria-label={ errorMessage }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<WCIcon icon={ errorIcon } size={ 16 } />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<Tooltip.Popup>{ errorMessage }</Tooltip.Popup>\n\t\t\t\t</Tooltip.Root>\n\t\t\t) }\n\t\t\t<span\n\t\t\t\tid={ `${ controlId }` }\n\t\t\t\tclassName=\"dataforms-layouts-panel__field-control\"\n\t\t\t>\n\t\t\t\t{ summaryFields.length > 1 ? (\n\t\t\t\t\t<span\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\t\talignItems: 'flex-start',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\tgap: '2px',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ summaryFields.map( ( summaryField ) => (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tsummaryFields.map( ( summaryField ) => (\n\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) )\n\t\t\t\t) }\n\t\t\t</span>\n\t\t\t{ ! disabled && (\n\t\t\t\t<Button\n\t\t\t\t\tref={ editButtonRef }\n\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-trigger-icon\"\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\ticon={ pencil }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\taria-describedby={ `${ controlId }` }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["getFirstValidationError", "getLabelClassName", "getLabelContent", "clsx", "WCIcon", "errorIcon"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/dataform-layouts/panel/utils/get-label-content.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Icon as WCIcon } from '@wordpress/components';\nimport { error as errorIcon } from '@wordpress/icons';\n// eslint-disable-next-line @wordpress/use-recommended-components -- `Tooltip` is not yet on the recommended `@wordpress/ui` allow-list; landing as a migration step ahead of the wider rollout.\nimport { Tooltip, VisuallyHidden } from '@wordpress/ui';\n\nfunction getLabelContent(\n\tshowError?: boolean,\n\terrorMessage?: string,\n\tfieldLabel?: string\n) {\n\treturn showError ? (\n\t\t<Tooltip.Root>\n\t\t\t<Tooltip.Trigger\n\t\t\t\trender={\n\t\t\t\t\t<span className=\"dataforms-layouts-panel__field-label-error-content\">\n\t\t\t\t\t\t<WCIcon icon={ errorIcon } size={ 16 } />\n\t\t\t\t\t\t<VisuallyHidden>{ errorMessage }: </VisuallyHidden>\n\t\t\t\t\t\t{ fieldLabel }\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Tooltip.Popup>{ errorMessage }</Tooltip.Popup>\n\t\t</Tooltip.Root>\n\t) : (\n\t\tfieldLabel\n\t);\n}\n\nexport default getLabelContent;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA+B;AAC/B,mBAAmC;AAEnC,gBAAwC;AAYlC;AAVN,SAAS,gBACR,WACA,cACA,YACC;AACD,SAAO,YACN,6CAAC,kBAAQ,MAAR,EACA;AAAA;AAAA,MAAC,kBAAQ;AAAA,MAAR;AAAA,QACA,QACC,6CAAC,UAAK,WAAU,sDACf;AAAA,sDAAC,kBAAAA,MAAA,EAAO,MAAO,aAAAC,OAAY,MAAO,IAAK;AAAA,UACvC,6CAAC,4BAAiB;AAAA;AAAA,YAAc;AAAA,aAAE;AAAA,UAChC;AAAA,WACH;AAAA;AAAA,IAEF;AAAA,IACA,4CAAC,kBAAQ,OAAR,EAAgB,wBAAc;AAAA,KAChC,IAEA;AAEF;AAEA,IAAO,4BAAQ;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Icon as WCIcon } from '@wordpress/components';\nimport { error as errorIcon } from '@wordpress/icons';\nimport { Tooltip, VisuallyHidden } from '@wordpress/ui';\n\nfunction getLabelContent(\n\tshowError?: boolean,\n\terrorMessage?: string,\n\tfieldLabel?: string\n) {\n\treturn showError ? (\n\t\t<Tooltip.Root>\n\t\t\t<Tooltip.Trigger\n\t\t\t\trender={\n\t\t\t\t\t<span className=\"dataforms-layouts-panel__field-label-error-content\">\n\t\t\t\t\t\t<WCIcon icon={ errorIcon } size={ 16 } />\n\t\t\t\t\t\t<VisuallyHidden>{ errorMessage }: </VisuallyHidden>\n\t\t\t\t\t\t{ fieldLabel }\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Tooltip.Popup>{ errorMessage }</Tooltip.Popup>\n\t\t</Tooltip.Root>\n\t) : (\n\t\tfieldLabel\n\t);\n}\n\nexport default getLabelContent;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA+B;AAC/B,mBAAmC;AACnC,gBAAwC;AAYlC;AAVN,SAAS,gBACR,WACA,cACA,YACC;AACD,SAAO,YACN,6CAAC,kBAAQ,MAAR,EACA;AAAA;AAAA,MAAC,kBAAQ;AAAA,MAAR;AAAA,QACA,QACC,6CAAC,UAAK,WAAU,sDACf;AAAA,sDAAC,kBAAAA,MAAA,EAAO,MAAO,aAAAC,OAAY,MAAO,IAAK;AAAA,UACvC,6CAAC,4BAAiB;AAAA;AAAA,YAAc;AAAA,aAAE;AAAA,UAChC;AAAA,WACH;AAAA;AAAA,IAEF;AAAA,IACA,4CAAC,kBAAQ,OAAR,EAAgB,wBAAc;AAAA,KAChC,IAEA;AAEF;AAEA,IAAO,4BAAQ;",
6
6
  "names": ["WCIcon", "errorIcon"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/dataviews-filters/filter.tsx"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { RefObject } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\tFlexItem,\n\tSelectControl,\n\tIcon as WCIcon,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useRef } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\n// eslint-disable-next-line @wordpress/use-recommended-components -- `Tooltip` is not yet on the recommended `@wordpress/ui` allow-list; landing as a migration step ahead of the wider rollout.\nimport { Stack, Tooltip } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport SearchWidget from './search-widget';\nimport InputWidget from './input-widget';\nimport { getOperatorByName } from '../../utils/operators';\nimport type {\n\tFilter,\n\tNormalizedField,\n\tNormalizedFilter,\n\tOperator,\n\tOption,\n\tView,\n} from '../../types';\nimport useElements from '../../hooks/use-elements';\n\nconst ENTER = 'Enter';\nconst SPACE = ' ';\n\ninterface FilterTextProps {\n\tactiveElements: Option[];\n\tfilterInView?: Filter;\n\tfilter: NormalizedFilter;\n}\n\ninterface OperatorSelectorProps {\n\tfilter: NormalizedFilter;\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n}\n\ninterface FilterProps extends OperatorSelectorProps {\n\taddFilterRef: RefObject< HTMLButtonElement | null >;\n\topenedFilter: string | null;\n\tfields: NormalizedField< any >[];\n}\n\nconst FilterText = ( {\n\tactiveElements,\n\tfilterInView,\n\tfilter,\n}: FilterTextProps ) => {\n\tif ( activeElements === undefined || activeElements.length === 0 ) {\n\t\treturn filter.name;\n\t}\n\n\tconst operator = getOperatorByName( filterInView?.operator );\n\tif ( operator !== undefined ) {\n\t\treturn operator.filterText( filter, activeElements );\n\t}\n\n\treturn sprintf(\n\t\t/* translators: 1: Filter name e.g.: \"Unknown status for Author\". */\n\t\t__( 'Unknown status for %1$s' ),\n\t\tfilter.name\n\t);\n};\n\nfunction OperatorSelector( {\n\tfilter,\n\tview,\n\tonChangeView,\n}: OperatorSelectorProps ) {\n\tconst operatorOptions = filter.operators?.map( ( operator ) => ( {\n\t\tvalue: operator,\n\t\tlabel: getOperatorByName( operator )?.label || operator,\n\t} ) );\n\tconst currentFilter = view.filters?.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst value = currentFilter?.operator || filter.operators[ 0 ];\n\treturn (\n\t\toperatorOptions.length > 1 && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tgap=\"sm\"\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tclassName=\"dataviews-filters__summary-operators-container\"\n\t\t\t\talign=\"center\"\n\t\t\t>\n\t\t\t\t<FlexItem className=\"dataviews-filters__summary-operators-filter-name\">\n\t\t\t\t\t{ filter.name }\n\t\t\t\t</FlexItem>\n\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"dataviews-filters__summary-operators-filter-select\"\n\t\t\t\t\tlabel={ __( 'Conditions' ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\toptions={ operatorOptions }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tconst newOperator = newValue as Operator;\n\t\t\t\t\t\tconst currentOperator = currentFilter?.operator;\n\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ).map(\n\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t_filter.field === filter.field\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentOpSelectionModel =\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOperatorByName(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t)?.selection;\n\t\t\t\t\t\t\t\t\t\t\t\tconst newOpSelectionModel =\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOperatorByName(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t)?.selection;\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst shouldResetValue =\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOpSelectionModel !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOpSelectionModel ||\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\t\tcurrentOpSelectionModel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOpSelectionModel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t].includes( 'custom' );\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: shouldResetValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: _filter.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\toperator: newOperator,\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\treturn _filter;\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 ]\n\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\toperator: newOperator,\n\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t ];\n\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\tfilters: newFilters,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n\nexport default function Filter( {\n\taddFilterRef,\n\topenedFilter,\n\tfields,\n\t...commonProps\n}: FilterProps ) {\n\tconst toggleRef = useRef< HTMLDivElement >( null );\n\tconst { filter, view, onChangeView } = commonProps;\n\tconst filterInView = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\n\tlet activeElements: Option[] = [];\n\tconst field = useMemo( () => {\n\t\tconst currentField = fields.find( ( f ) => f.id === filter.field );\n\t\tif ( currentField ) {\n\t\t\treturn {\n\t\t\t\t...currentField,\n\t\t\t\t// Configure getValue as if Item was a plain object.\n\t\t\t\t// See related input-widget.tsx\n\t\t\t\tgetValue: ( { item }: { item: any } ) =>\n\t\t\t\t\titem[ currentField.id ],\n\t\t\t};\n\t\t}\n\n\t\treturn currentField;\n\t}, [ fields, filter.field ] );\n\n\tconst { elements } = useElements( {\n\t\telements: filter.elements,\n\t\tgetElements: filter.getElements,\n\t} );\n\n\tif ( elements.length > 0 ) {\n\t\t// When there are elements, we favor those\n\t\tactiveElements = elements.filter( ( element ) => {\n\t\t\tif ( filter.singleSelection ) {\n\t\t\t\treturn element.value === filterInView?.value;\n\t\t\t}\n\t\t\treturn filterInView?.value?.includes( element.value );\n\t\t} );\n\t} else if ( Array.isArray( filterInView?.value ) ) {\n\t\t// or, filterInView.value can also be array\n\t\t// for the between operator, as in [ 1, 2 ]\n\t\tconst label = filterInView.value.map( ( v ) => {\n\t\t\tconst formattedValue = field?.getValueFormatted( {\n\t\t\t\titem: { [ field.id ]: v },\n\t\t\t\tfield,\n\t\t\t} );\n\t\t\treturn formattedValue || String( v );\n\t\t} );\n\n\t\tactiveElements = [\n\t\t\t{\n\t\t\t\tvalue: filterInView.value,\n\t\t\t\t// @ts-ignore\n\t\t\t\tlabel,\n\t\t\t},\n\t\t];\n\t} else if ( typeof filterInView?.value === 'object' ) {\n\t\t// or, it can also be object for the inThePast/over operators,\n\t\t// as in { value: '1', units: 'days' }\n\t\tactiveElements = [\n\t\t\t{ value: filterInView.value, label: filterInView.value },\n\t\t];\n\t} else if ( filterInView?.value !== undefined ) {\n\t\t// otherwise, filterInView.value is a single value\n\t\tconst label =\n\t\t\tfield !== undefined\n\t\t\t\t? field.getValueFormatted( {\n\t\t\t\t\t\titem: { [ field.id ]: filterInView.value },\n\t\t\t\t\t\tfield,\n\t\t\t\t } )\n\t\t\t\t: String( filterInView.value );\n\n\t\tactiveElements = [\n\t\t\t{\n\t\t\t\tvalue: filterInView.value,\n\t\t\t\tlabel,\n\t\t\t},\n\t\t];\n\t}\n\n\tconst isPrimary = filter.isPrimary;\n\tconst isLocked = filterInView?.isLocked;\n\tconst hasValues = ! isLocked && filterInView?.value !== undefined;\n\tconst canResetOrRemove = ! isLocked && ( ! isPrimary || hasValues );\n\t// TODO: revisit once `@wordpress/ui`'s `IconButton` is ready \u2014 it should\n\t// collapse the manual icon-only `<button>` + `aria-label` + Tooltip\n\t// composition below into a single primitive.\n\tconst resetOrRemoveLabel = isPrimary ? __( 'Reset' ) : __( 'Remove' );\n\treturn (\n\t\t<Dropdown\n\t\t\tdefaultOpen={ openedFilter === filter.field }\n\t\t\tcontentClassName=\"dataviews-filters__summary-popover\"\n\t\t\tpopoverProps={ { placement: 'bottom-start', role: 'dialog' } }\n\t\t\tonClose={ () => {\n\t\t\t\ttoggleRef.current?.focus();\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<div className=\"dataviews-filters__summary-chip-container\">\n\t\t\t\t\t<Tooltip.Root>\n\t\t\t\t\t\t<Tooltip.Trigger\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t'dataviews-filters__summary-chip',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t'has-reset': canResetOrRemove,\n\t\t\t\t\t\t\t\t\t\t\t'has-values': hasValues,\n\t\t\t\t\t\t\t\t\t\t\t'is-not-clickable': isLocked,\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\trole=\"button\"\n\t\t\t\t\t\t\t\t\ttabIndex={ isLocked ? -1 : 0 }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tif ( ! isLocked ) {\n\t\t\t\t\t\t\t\t\t\t\tonToggle();\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\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t! isLocked &&\n\t\t\t\t\t\t\t\t\t\t\t[ ENTER, SPACE ].includes(\n\t\t\t\t\t\t\t\t\t\t\t\tevent.key\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\t\tonToggle();\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\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\taria-disabled={ isLocked }\n\t\t\t\t\t\t\t\t\taria-pressed={ isOpen }\n\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FilterText\n\t\t\t\t\t\t\t\t\t\tactiveElements={ activeElements }\n\t\t\t\t\t\t\t\t\t\tfilterInView={ filterInView }\n\t\t\t\t\t\t\t\t\t\tfilter={ filter }\n\t\t\t\t\t\t\t\t\t/>\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/>\n\t\t\t\t\t\t<Tooltip.Popup>\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t/* translators: 1: Filter name. */\n\t\t\t\t\t\t\t\t__( 'Filter by: %1$s' ),\n\t\t\t\t\t\t\t\tfilter.name.toLowerCase()\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Tooltip.Popup>\n\t\t\t\t\t</Tooltip.Root>\n\t\t\t\t\t{ canResetOrRemove && (\n\t\t\t\t\t\t<Tooltip.Root>\n\t\t\t\t\t\t\t<Tooltip.Trigger\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<button\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-filters__summary-chip-remove',\n\t\t\t\t\t\t\t\t\t\t\t{ 'has-values': hasValues }\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\taria-label={ resetOrRemoveLabel }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tfilters: view.filters?.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t( _filter ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_filter.field !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter.field\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\t// If the filter is not primary and can be removed, it will be added\n\t\t\t\t\t\t\t\t\t\t\t// back to the available filters from `Add filter` component.\n\t\t\t\t\t\t\t\t\t\t\tif ( ! isPrimary ) {\n\t\t\t\t\t\t\t\t\t\t\t\taddFilterRef.current?.focus();\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t// If is primary, focus the toggle button.\n\t\t\t\t\t\t\t\t\t\t\t\ttoggleRef.current?.focus();\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\t\t<WCIcon icon={ closeSmall } />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Tooltip.Popup>\n\t\t\t\t\t\t\t\t{ resetOrRemoveLabel }\n\t\t\t\t\t\t\t</Tooltip.Popup>\n\t\t\t\t\t\t</Tooltip.Root>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\trenderContent={ () => {\n\t\t\t\treturn (\n\t\t\t\t\t<Stack direction=\"column\" justify=\"flex-start\">\n\t\t\t\t\t\t<OperatorSelector { ...commonProps } />\n\t\t\t\t\t\t{ commonProps.filter.hasElements ? (\n\t\t\t\t\t\t\t<SearchWidget\n\t\t\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\t\t\tfilter={ {\n\t\t\t\t\t\t\t\t\t...commonProps.filter,\n\t\t\t\t\t\t\t\t\telements,\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\t<InputWidget { ...commonProps } fields={ fields } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Stack>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { RefObject } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\tFlexItem,\n\tSelectControl,\n\tIcon as WCIcon,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useRef } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\nimport { Stack, Tooltip } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport SearchWidget from './search-widget';\nimport InputWidget from './input-widget';\nimport { getOperatorByName } from '../../utils/operators';\nimport type {\n\tFilter,\n\tNormalizedField,\n\tNormalizedFilter,\n\tOperator,\n\tOption,\n\tView,\n} from '../../types';\nimport useElements from '../../hooks/use-elements';\n\nconst ENTER = 'Enter';\nconst SPACE = ' ';\n\ninterface FilterTextProps {\n\tactiveElements: Option[];\n\tfilterInView?: Filter;\n\tfilter: NormalizedFilter;\n}\n\ninterface OperatorSelectorProps {\n\tfilter: NormalizedFilter;\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n}\n\ninterface FilterProps extends OperatorSelectorProps {\n\taddFilterRef: RefObject< HTMLButtonElement | null >;\n\topenedFilter: string | null;\n\tfields: NormalizedField< any >[];\n}\n\nconst FilterText = ( {\n\tactiveElements,\n\tfilterInView,\n\tfilter,\n}: FilterTextProps ) => {\n\tif ( activeElements === undefined || activeElements.length === 0 ) {\n\t\treturn filter.name;\n\t}\n\n\tconst operator = getOperatorByName( filterInView?.operator );\n\tif ( operator !== undefined ) {\n\t\treturn operator.filterText( filter, activeElements );\n\t}\n\n\treturn sprintf(\n\t\t/* translators: 1: Filter name e.g.: \"Unknown status for Author\". */\n\t\t__( 'Unknown status for %1$s' ),\n\t\tfilter.name\n\t);\n};\n\nfunction OperatorSelector( {\n\tfilter,\n\tview,\n\tonChangeView,\n}: OperatorSelectorProps ) {\n\tconst operatorOptions = filter.operators?.map( ( operator ) => ( {\n\t\tvalue: operator,\n\t\tlabel: getOperatorByName( operator )?.label || operator,\n\t} ) );\n\tconst currentFilter = view.filters?.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst value = currentFilter?.operator || filter.operators[ 0 ];\n\treturn (\n\t\toperatorOptions.length > 1 && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tgap=\"sm\"\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tclassName=\"dataviews-filters__summary-operators-container\"\n\t\t\t\talign=\"center\"\n\t\t\t>\n\t\t\t\t<FlexItem className=\"dataviews-filters__summary-operators-filter-name\">\n\t\t\t\t\t{ filter.name }\n\t\t\t\t</FlexItem>\n\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"dataviews-filters__summary-operators-filter-select\"\n\t\t\t\t\tlabel={ __( 'Conditions' ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\toptions={ operatorOptions }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tconst newOperator = newValue as Operator;\n\t\t\t\t\t\tconst currentOperator = currentFilter?.operator;\n\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ).map(\n\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t_filter.field === filter.field\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentOpSelectionModel =\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOperatorByName(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t)?.selection;\n\t\t\t\t\t\t\t\t\t\t\t\tconst newOpSelectionModel =\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOperatorByName(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t)?.selection;\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst shouldResetValue =\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOpSelectionModel !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOpSelectionModel ||\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\t\tcurrentOpSelectionModel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOpSelectionModel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t].includes( 'custom' );\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: shouldResetValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: _filter.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\toperator: newOperator,\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\treturn _filter;\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 ]\n\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\toperator: newOperator,\n\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t ];\n\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\tfilters: newFilters,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n\nexport default function Filter( {\n\taddFilterRef,\n\topenedFilter,\n\tfields,\n\t...commonProps\n}: FilterProps ) {\n\tconst toggleRef = useRef< HTMLDivElement >( null );\n\tconst { filter, view, onChangeView } = commonProps;\n\tconst filterInView = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\n\tlet activeElements: Option[] = [];\n\tconst field = useMemo( () => {\n\t\tconst currentField = fields.find( ( f ) => f.id === filter.field );\n\t\tif ( currentField ) {\n\t\t\treturn {\n\t\t\t\t...currentField,\n\t\t\t\t// Configure getValue as if Item was a plain object.\n\t\t\t\t// See related input-widget.tsx\n\t\t\t\tgetValue: ( { item }: { item: any } ) =>\n\t\t\t\t\titem[ currentField.id ],\n\t\t\t};\n\t\t}\n\n\t\treturn currentField;\n\t}, [ fields, filter.field ] );\n\n\tconst { elements } = useElements( {\n\t\telements: filter.elements,\n\t\tgetElements: filter.getElements,\n\t} );\n\n\tif ( elements.length > 0 ) {\n\t\t// When there are elements, we favor those\n\t\tactiveElements = elements.filter( ( element ) => {\n\t\t\tif ( filter.singleSelection ) {\n\t\t\t\treturn element.value === filterInView?.value;\n\t\t\t}\n\t\t\treturn filterInView?.value?.includes( element.value );\n\t\t} );\n\t} else if ( Array.isArray( filterInView?.value ) ) {\n\t\t// or, filterInView.value can also be array\n\t\t// for the between operator, as in [ 1, 2 ]\n\t\tconst label = filterInView.value.map( ( v ) => {\n\t\t\tconst formattedValue = field?.getValueFormatted( {\n\t\t\t\titem: { [ field.id ]: v },\n\t\t\t\tfield,\n\t\t\t} );\n\t\t\treturn formattedValue || String( v );\n\t\t} );\n\n\t\tactiveElements = [\n\t\t\t{\n\t\t\t\tvalue: filterInView.value,\n\t\t\t\t// @ts-ignore\n\t\t\t\tlabel,\n\t\t\t},\n\t\t];\n\t} else if ( typeof filterInView?.value === 'object' ) {\n\t\t// or, it can also be object for the inThePast/over operators,\n\t\t// as in { value: '1', units: 'days' }\n\t\tactiveElements = [\n\t\t\t{ value: filterInView.value, label: filterInView.value },\n\t\t];\n\t} else if ( filterInView?.value !== undefined ) {\n\t\t// otherwise, filterInView.value is a single value\n\t\tconst label =\n\t\t\tfield !== undefined\n\t\t\t\t? field.getValueFormatted( {\n\t\t\t\t\t\titem: { [ field.id ]: filterInView.value },\n\t\t\t\t\t\tfield,\n\t\t\t\t } )\n\t\t\t\t: String( filterInView.value );\n\n\t\tactiveElements = [\n\t\t\t{\n\t\t\t\tvalue: filterInView.value,\n\t\t\t\tlabel,\n\t\t\t},\n\t\t];\n\t}\n\n\tconst isPrimary = filter.isPrimary;\n\tconst isLocked = filterInView?.isLocked;\n\tconst hasValues = ! isLocked && filterInView?.value !== undefined;\n\tconst canResetOrRemove = ! isLocked && ( ! isPrimary || hasValues );\n\t// TODO: revisit once `@wordpress/ui`'s `IconButton` is ready — it should\n\t// collapse the manual icon-only `<button>` + `aria-label` + Tooltip\n\t// composition below into a single primitive.\n\tconst resetOrRemoveLabel = isPrimary ? __( 'Reset' ) : __( 'Remove' );\n\treturn (\n\t\t<Dropdown\n\t\t\tdefaultOpen={ openedFilter === filter.field }\n\t\t\tcontentClassName=\"dataviews-filters__summary-popover\"\n\t\t\tpopoverProps={ { placement: 'bottom-start', role: 'dialog' } }\n\t\t\tonClose={ () => {\n\t\t\t\ttoggleRef.current?.focus();\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<div className=\"dataviews-filters__summary-chip-container\">\n\t\t\t\t\t<Tooltip.Root>\n\t\t\t\t\t\t<Tooltip.Trigger\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t'dataviews-filters__summary-chip',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t'has-reset': canResetOrRemove,\n\t\t\t\t\t\t\t\t\t\t\t'has-values': hasValues,\n\t\t\t\t\t\t\t\t\t\t\t'is-not-clickable': isLocked,\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\trole=\"button\"\n\t\t\t\t\t\t\t\t\ttabIndex={ isLocked ? -1 : 0 }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tif ( ! isLocked ) {\n\t\t\t\t\t\t\t\t\t\t\tonToggle();\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\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t! isLocked &&\n\t\t\t\t\t\t\t\t\t\t\t[ ENTER, SPACE ].includes(\n\t\t\t\t\t\t\t\t\t\t\t\tevent.key\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\t\tonToggle();\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\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\taria-disabled={ isLocked }\n\t\t\t\t\t\t\t\t\taria-pressed={ isOpen }\n\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FilterText\n\t\t\t\t\t\t\t\t\t\tactiveElements={ activeElements }\n\t\t\t\t\t\t\t\t\t\tfilterInView={ filterInView }\n\t\t\t\t\t\t\t\t\t\tfilter={ filter }\n\t\t\t\t\t\t\t\t\t/>\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/>\n\t\t\t\t\t\t<Tooltip.Popup>\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t/* translators: 1: Filter name. */\n\t\t\t\t\t\t\t\t__( 'Filter by: %1$s' ),\n\t\t\t\t\t\t\t\tfilter.name.toLowerCase()\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Tooltip.Popup>\n\t\t\t\t\t</Tooltip.Root>\n\t\t\t\t\t{ canResetOrRemove && (\n\t\t\t\t\t\t<Tooltip.Root>\n\t\t\t\t\t\t\t<Tooltip.Trigger\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<button\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-filters__summary-chip-remove',\n\t\t\t\t\t\t\t\t\t\t\t{ 'has-values': hasValues }\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\taria-label={ resetOrRemoveLabel }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tfilters: view.filters?.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t( _filter ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_filter.field !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter.field\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\t// If the filter is not primary and can be removed, it will be added\n\t\t\t\t\t\t\t\t\t\t\t// back to the available filters from `Add filter` component.\n\t\t\t\t\t\t\t\t\t\t\tif ( ! isPrimary ) {\n\t\t\t\t\t\t\t\t\t\t\t\taddFilterRef.current?.focus();\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t// If is primary, focus the toggle button.\n\t\t\t\t\t\t\t\t\t\t\t\ttoggleRef.current?.focus();\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\t\t<WCIcon icon={ closeSmall } />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Tooltip.Popup>\n\t\t\t\t\t\t\t\t{ resetOrRemoveLabel }\n\t\t\t\t\t\t\t</Tooltip.Popup>\n\t\t\t\t\t\t</Tooltip.Root>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\trenderContent={ () => {\n\t\t\t\treturn (\n\t\t\t\t\t<Stack direction=\"column\" justify=\"flex-start\">\n\t\t\t\t\t\t<OperatorSelector { ...commonProps } />\n\t\t\t\t\t\t{ commonProps.filter.hasElements ? (\n\t\t\t\t\t\t\t<SearchWidget\n\t\t\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\t\t\tfilter={ {\n\t\t\t\t\t\t\t\t\t...commonProps.filter,\n\t\t\t\t\t\t\t\t\telements,\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\t<InputWidget { ...commonProps } fields={ fields } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Stack>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["useElements", "clsx", "WCIcon", "SearchWidget", "InputWidget"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/dataviews-layouts/grid/composite-grid.tsx"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement, HTMLAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tFlexItem,\n\tComposite,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\n// eslint-disable-next-line @wordpress/use-recommended-components -- `Tooltip` is not yet on the recommended `@wordpress/ui` allow-list; landing as a migration step ahead of the wider rollout.\nimport { Stack, Tooltip } from '@wordpress/ui';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport {\n\tuseCallback,\n\tuseContext,\n\tuseRef,\n\tforwardRef,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport ItemActions from '../../dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport DataViewsContext from '../../dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nconst { Badge: WCBadge } = unlock( componentsPrivateApis );\nimport { useGridColumns } from './preview-size-picker';\nimport { GridItems } from '../utils/grid-items';\nimport {\n\tuseIntersectionObserver,\n\tusePlaceholdersNeeded,\n} from '../utils/use-infinite-scroll';\n\nfunction chunk< T >( array: T[], size: number ): T[][] {\n\tconst chunks: T[][] = [];\n\tfor ( let i = 0, j = array.length; i < j; i += size ) {\n\t\tchunks.push( array.slice( i, i + size ) );\n\t}\n\treturn chunks;\n}\n\ninterface GridItemProps< Item > extends HTMLAttributes< HTMLDivElement > {\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\tsetsize?: number;\n}\n\nconst GridItem = forwardRef< HTMLDivElement, GridItemProps< any > >(\n\tfunction GridItem(\n\t\t{\n\t\t\tview,\n\t\t\tselection,\n\t\t\tonChangeSelection,\n\t\t\tonClickItem,\n\t\t\tisItemClickable,\n\t\t\trenderItemLink,\n\t\t\tgetItemId,\n\t\t\titem,\n\t\t\tactions,\n\t\t\tmediaField,\n\t\t\ttitleField,\n\t\t\tdescriptionField,\n\t\t\tregularFields,\n\t\t\tbadgeFields,\n\t\t\thasBulkActions,\n\t\t\tconfig,\n\t\t\tposinset,\n\t\t\tsetsize,\n\t\t\t...props\n\t\t},\n\t\tforwardedRef\n\t) {\n\t\tconst {\n\t\t\tshowTitle = true,\n\t\t\tshowMedia = true,\n\t\t\tshowDescription = true,\n\t\t} = view;\n\t\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\t\tconst id = getItemId( item );\n\t\tconst elementRef = useRef< HTMLDivElement | null >( null );\n\n\t\t// Merge refs callback\n\t\tconst setRefs = useCallback(\n\t\t\t( node: HTMLDivElement | null ) => {\n\t\t\t\telementRef.current = node;\n\t\t\t\tif ( typeof forwardedRef === 'function' ) {\n\t\t\t\t\tforwardedRef( node );\n\t\t\t\t} else if ( forwardedRef ) {\n\t\t\t\t\tforwardedRef.current = node;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[ forwardedRef ]\n\t\t);\n\t\tuseIntersectionObserver( elementRef, posinset );\n\t\tconst instanceId = useInstanceId( GridItem );\n\n\t\tconst isSelected = selection.includes( id );\n\n\t\tconst mediaPlaceholder = (\n\t\t\t<span className=\"dataviews-view-grid__media-placeholder\" />\n\t\t);\n\t\tconst rendersMediaField = showMedia && mediaField?.render;\n\t\tconst renderedMediaField = rendersMediaField ? (\n\t\t\t<mediaField.render\n\t\t\t\titem={ item }\n\t\t\t\tfield={ mediaField }\n\t\t\t\tconfig={ config }\n\t\t\t/>\n\t\t) : (\n\t\t\tmediaPlaceholder\n\t\t);\n\t\tconst renderedTitleField =\n\t\t\tshowTitle && titleField?.render ? (\n\t\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t\t) : null;\n\t\tlet mediaA11yProps;\n\t\tlet titleA11yProps;\n\t\tif ( isItemClickable( item ) && onClickItem ) {\n\t\t\tif ( renderedTitleField ) {\n\t\t\t\tmediaA11yProps = {\n\t\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t\t};\n\t\t\t\ttitleA11yProps = {\n\t\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tmediaA11yProps = {\n\t\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\t{ ...props }\n\t\t\t\tref={ setRefs }\n\t\t\t\taria-setsize={ setsize }\n\t\t\t\taria-posinset={ posinset }\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'dataviews-view-grid__row__gridcell',\n\t\t\t\t\t'dataviews-view-grid__card',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\t\tprops.onClickCapture?.( event );\n\t\t\t\t\tif ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\t\tisSelected\n\t\t\t\t\t\t\t\t? selection.filter(\n\t\t\t\t\t\t\t\t\t\t( itemId ) => id !== itemId\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: [ ...selection, id ]\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<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={ clsx( 'dataviews-view-grid__media', {\n\t\t\t\t\t\t'dataviews-view-grid__media--placeholder':\n\t\t\t\t\t\t\t! rendersMediaField,\n\t\t\t\t\t} ) }\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\t{ hasBulkActions && (\n\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t<div className=\"dataviews-view-grid__media-actions\">\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</div>\n\t\t\t\t) }\n\t\t\t\t{ showTitle && (\n\t\t\t\t\t<div className=\"dataviews-view-grid__title-actions\">\n\t\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\ttitleField?.getValueFormatted( {\n\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\tfield: titleField,\n\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\t\t{ renderedTitleField }\n\t\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<Stack direction=\"column\" gap=\"xs\">\n\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\t\talign=\"top\"\n\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<WCBadge\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\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>\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</WCBadge>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\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\t\t<Tooltip.Root>\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip.Trigger\n\t\t\t\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\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\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\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\t<Tooltip.Popup>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip.Popup>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip.Root>\n\t\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\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\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\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\t\titem={ item }\n\t\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\t/>\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t);\n\t}\n) as < Item >(\n\tprops: GridItemProps< Item > & {\n\t\tref?: React.ForwardedRef< HTMLDivElement >;\n\t}\n) => React.ReactNode;\ninterface CompositeGridProps< Item > {\n\tdata: Item[];\n\tisInfiniteScroll: boolean;\n\tclassName?: string;\n\tinert?: string;\n\tisLoading?: boolean;\n\tview: ViewGridType;\n\tfields: NormalizedField< Item >[];\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tgetItemId: ( item: Item ) => string;\n\tactions: Action< Item >[];\n}\n\nexport default function CompositeGrid< Item >( {\n\tdata,\n\tisInfiniteScroll,\n\tclassName,\n\tinert,\n\tisLoading,\n\tview,\n\tfields,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\tactions,\n}: CompositeGridProps< Item > ) {\n\tconst { paginationInfo, resizeObserverRef } =\n\t\tuseContext( DataViewsContext );\n\tconst gridColumns = useGridColumns();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\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\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\tconst totalRows = Math.ceil( data.length / gridColumns );\n\n\t// Calculate placeholders needed for infinite scroll\n\tconst placeholdersNeeded = usePlaceholdersNeeded(\n\t\tdata,\n\t\tisInfiniteScroll,\n\t\tgridColumns\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render infinite scroll layout (no rows, feed semantics)\n\t\t\t\tisInfiniteScroll && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-grid-infinite-scroll',\n\t\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t'compact',\n\t\t\t\t\t\t\t\t\t\t\t\t'comfortable',\n\t\t\t\t\t\t\t\t\t\t\t].includes( view.layout.density ),\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\tpreviewSize={ view.layout?.previewSize }\n\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\trole=\"feed\"\n\t\t\t\t\t\tfocusWrap\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinert={ inert }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ /* Render placeholders for unloaded items in first row */ }\n\t\t\t\t\t\t{ Array.from( { length: placeholdersNeeded } ).map(\n\t\t\t\t\t\t\t( _, index ) => (\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tkey={ `placeholder-${ index }` }\n\t\t\t\t\t\t\t\t\trender={ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"article\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__row__gridcell dataviews-view-grid__card dataviews-view-grid__placeholder\"\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\taria-hidden\n\t\t\t\t\t\t\t\t\ttabIndex={ -1 }\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{ data.map( ( item ) => {\n\t\t\t\t\t\t\tconst itemId = getItemId( item );\n\t\t\t\t\t\t\t// Use position from item for infinite scroll\n\t\t\t\t\t\t\tconst stablePosition = ( item as any ).position;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tkey={ itemId }\n\t\t\t\t\t\t\t\t\trender={ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\tid={ itemId }\n\t\t\t\t\t\t\t\t\t\t\trole=\"article\"\n\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\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\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\t\t\tposinset={ stablePosition }\n\t\t\t\t\t\t\t\t\t\t\tsetsize={\n\t\t\t\t\t\t\t\t\t\t\t\tpaginationInfo.totalItems\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\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} }\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</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render standard grid layout (with rows, grid semantics)\n\t\t\t\t! isInfiniteScroll && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trole=\"grid\"\n\t\t\t\t\t\tclassName={ clsx( 'dataviews-view-grid', className, {\n\t\t\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\tfocusWrap\n\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\taria-rowcount={ totalRows }\n\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinert={ inert }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ chunk( data, gridColumns ).map( ( row, i ) => (\n\t\t\t\t\t\t\t<Composite.Row\n\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\trole=\"row\"\n\t\t\t\t\t\t\t\t\t\taria-rowindex={ i + 1 }\n\t\t\t\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %d: The row number in the grid */\n\t\t\t\t\t\t\t\t\t\t\t__( 'Row %d' ),\n\t\t\t\t\t\t\t\t\t\t\ti + 1\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__row\"\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns: `repeat( ${ gridColumns }, minmax(0, 1fr) )`,\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\t\t{ row.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tconst itemId = getItemId( item );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\t\t\tkey={ itemId }\n\t\t\t\t\t\t\t\t\t\t\trender={ ( props ) => (\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\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\t\t\tid={ itemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"gridcell\"\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);\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</Composite.Row>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement, HTMLAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tFlexItem,\n\tComposite,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { Stack, Tooltip } from '@wordpress/ui';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport {\n\tuseCallback,\n\tuseContext,\n\tuseRef,\n\tforwardRef,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport ItemActions from '../../dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport DataViewsContext from '../../dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nconst { Badge: WCBadge } = unlock( componentsPrivateApis );\nimport { useGridColumns } from './preview-size-picker';\nimport { GridItems } from '../utils/grid-items';\nimport {\n\tuseIntersectionObserver,\n\tusePlaceholdersNeeded,\n} from '../utils/use-infinite-scroll';\n\nfunction chunk< T >( array: T[], size: number ): T[][] {\n\tconst chunks: T[][] = [];\n\tfor ( let i = 0, j = array.length; i < j; i += size ) {\n\t\tchunks.push( array.slice( i, i + size ) );\n\t}\n\treturn chunks;\n}\n\ninterface GridItemProps< Item > extends HTMLAttributes< HTMLDivElement > {\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\tsetsize?: number;\n}\n\nconst GridItem = forwardRef< HTMLDivElement, GridItemProps< any > >(\n\tfunction GridItem(\n\t\t{\n\t\t\tview,\n\t\t\tselection,\n\t\t\tonChangeSelection,\n\t\t\tonClickItem,\n\t\t\tisItemClickable,\n\t\t\trenderItemLink,\n\t\t\tgetItemId,\n\t\t\titem,\n\t\t\tactions,\n\t\t\tmediaField,\n\t\t\ttitleField,\n\t\t\tdescriptionField,\n\t\t\tregularFields,\n\t\t\tbadgeFields,\n\t\t\thasBulkActions,\n\t\t\tconfig,\n\t\t\tposinset,\n\t\t\tsetsize,\n\t\t\t...props\n\t\t},\n\t\tforwardedRef\n\t) {\n\t\tconst {\n\t\t\tshowTitle = true,\n\t\t\tshowMedia = true,\n\t\t\tshowDescription = true,\n\t\t} = view;\n\t\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\t\tconst id = getItemId( item );\n\t\tconst elementRef = useRef< HTMLDivElement | null >( null );\n\n\t\t// Merge refs callback\n\t\tconst setRefs = useCallback(\n\t\t\t( node: HTMLDivElement | null ) => {\n\t\t\t\telementRef.current = node;\n\t\t\t\tif ( typeof forwardedRef === 'function' ) {\n\t\t\t\t\tforwardedRef( node );\n\t\t\t\t} else if ( forwardedRef ) {\n\t\t\t\t\tforwardedRef.current = node;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[ forwardedRef ]\n\t\t);\n\t\tuseIntersectionObserver( elementRef, posinset );\n\t\tconst instanceId = useInstanceId( GridItem );\n\n\t\tconst isSelected = selection.includes( id );\n\n\t\tconst mediaPlaceholder = (\n\t\t\t<span className=\"dataviews-view-grid__media-placeholder\" />\n\t\t);\n\t\tconst rendersMediaField = showMedia && mediaField?.render;\n\t\tconst renderedMediaField = rendersMediaField ? (\n\t\t\t<mediaField.render\n\t\t\t\titem={ item }\n\t\t\t\tfield={ mediaField }\n\t\t\t\tconfig={ config }\n\t\t\t/>\n\t\t) : (\n\t\t\tmediaPlaceholder\n\t\t);\n\t\tconst renderedTitleField =\n\t\t\tshowTitle && titleField?.render ? (\n\t\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t\t) : null;\n\t\tlet mediaA11yProps;\n\t\tlet titleA11yProps;\n\t\tif ( isItemClickable( item ) && onClickItem ) {\n\t\t\tif ( renderedTitleField ) {\n\t\t\t\tmediaA11yProps = {\n\t\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t\t};\n\t\t\t\ttitleA11yProps = {\n\t\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tmediaA11yProps = {\n\t\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\t{ ...props }\n\t\t\t\tref={ setRefs }\n\t\t\t\taria-setsize={ setsize }\n\t\t\t\taria-posinset={ posinset }\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'dataviews-view-grid__row__gridcell',\n\t\t\t\t\t'dataviews-view-grid__card',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\t\tprops.onClickCapture?.( event );\n\t\t\t\t\tif ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\t\tisSelected\n\t\t\t\t\t\t\t\t? selection.filter(\n\t\t\t\t\t\t\t\t\t\t( itemId ) => id !== itemId\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: [ ...selection, id ]\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<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={ clsx( 'dataviews-view-grid__media', {\n\t\t\t\t\t\t'dataviews-view-grid__media--placeholder':\n\t\t\t\t\t\t\t! rendersMediaField,\n\t\t\t\t\t} ) }\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\t{ hasBulkActions && (\n\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t<div className=\"dataviews-view-grid__media-actions\">\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</div>\n\t\t\t\t) }\n\t\t\t\t{ showTitle && (\n\t\t\t\t\t<div className=\"dataviews-view-grid__title-actions\">\n\t\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\ttitleField?.getValueFormatted( {\n\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\tfield: titleField,\n\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\t\t{ renderedTitleField }\n\t\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<Stack direction=\"column\" gap=\"xs\">\n\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\t\talign=\"top\"\n\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<WCBadge\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\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>\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</WCBadge>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\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\t\t<Tooltip.Root>\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip.Trigger\n\t\t\t\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\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\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\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\t<Tooltip.Popup>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip.Popup>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip.Root>\n\t\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\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\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\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\t\titem={ item }\n\t\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\t/>\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t);\n\t}\n) as < Item >(\n\tprops: GridItemProps< Item > & {\n\t\tref?: React.ForwardedRef< HTMLDivElement >;\n\t}\n) => React.ReactNode;\ninterface CompositeGridProps< Item > {\n\tdata: Item[];\n\tisInfiniteScroll: boolean;\n\tclassName?: string;\n\tinert?: string;\n\tisLoading?: boolean;\n\tview: ViewGridType;\n\tfields: NormalizedField< Item >[];\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tgetItemId: ( item: Item ) => string;\n\tactions: Action< Item >[];\n}\n\nexport default function CompositeGrid< Item >( {\n\tdata,\n\tisInfiniteScroll,\n\tclassName,\n\tinert,\n\tisLoading,\n\tview,\n\tfields,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\tactions,\n}: CompositeGridProps< Item > ) {\n\tconst { paginationInfo, resizeObserverRef } =\n\t\tuseContext( DataViewsContext );\n\tconst gridColumns = useGridColumns();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\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\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\tconst totalRows = Math.ceil( data.length / gridColumns );\n\n\t// Calculate placeholders needed for infinite scroll\n\tconst placeholdersNeeded = usePlaceholdersNeeded(\n\t\tdata,\n\t\tisInfiniteScroll,\n\t\tgridColumns\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render infinite scroll layout (no rows, feed semantics)\n\t\t\t\tisInfiniteScroll && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-grid-infinite-scroll',\n\t\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t'compact',\n\t\t\t\t\t\t\t\t\t\t\t\t'comfortable',\n\t\t\t\t\t\t\t\t\t\t\t].includes( view.layout.density ),\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\tpreviewSize={ view.layout?.previewSize }\n\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\trole=\"feed\"\n\t\t\t\t\t\tfocusWrap\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinert={ inert }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ /* Render placeholders for unloaded items in first row */ }\n\t\t\t\t\t\t{ Array.from( { length: placeholdersNeeded } ).map(\n\t\t\t\t\t\t\t( _, index ) => (\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tkey={ `placeholder-${ index }` }\n\t\t\t\t\t\t\t\t\trender={ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"article\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__row__gridcell dataviews-view-grid__card dataviews-view-grid__placeholder\"\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\taria-hidden\n\t\t\t\t\t\t\t\t\ttabIndex={ -1 }\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{ data.map( ( item ) => {\n\t\t\t\t\t\t\tconst itemId = getItemId( item );\n\t\t\t\t\t\t\t// Use position from item for infinite scroll\n\t\t\t\t\t\t\tconst stablePosition = ( item as any ).position;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tkey={ itemId }\n\t\t\t\t\t\t\t\t\trender={ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\tid={ itemId }\n\t\t\t\t\t\t\t\t\t\t\trole=\"article\"\n\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\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\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\t\t\tposinset={ stablePosition }\n\t\t\t\t\t\t\t\t\t\t\tsetsize={\n\t\t\t\t\t\t\t\t\t\t\t\tpaginationInfo.totalItems\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\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} }\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</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render standard grid layout (with rows, grid semantics)\n\t\t\t\t! isInfiniteScroll && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trole=\"grid\"\n\t\t\t\t\t\tclassName={ clsx( 'dataviews-view-grid', className, {\n\t\t\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\tfocusWrap\n\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\taria-rowcount={ totalRows }\n\t\t\t\t\t\tref={ resizeObserverRef }\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinert={ inert }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ chunk( data, gridColumns ).map( ( row, i ) => (\n\t\t\t\t\t\t\t<Composite.Row\n\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\trole=\"row\"\n\t\t\t\t\t\t\t\t\t\taria-rowindex={ i + 1 }\n\t\t\t\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %d: The row number in the grid */\n\t\t\t\t\t\t\t\t\t\t\t__( 'Row %d' ),\n\t\t\t\t\t\t\t\t\t\t\ti + 1\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__row\"\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns: `repeat( ${ gridColumns }, minmax(0, 1fr) )`,\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\t\t{ row.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tconst itemId = getItemId( item );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\t\t\tkey={ itemId }\n\t\t\t\t\t\t\t\t\t\t\trender={ ( props ) => (\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\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\t\t\tid={ itemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"gridcell\"\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);\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</Composite.Row>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["componentsPrivateApis", "GridItem", "clsx", "DataViewsSelectionCheckbox", "ItemActions", "DataViewsContext"]
7
7
  }
@@ -41,6 +41,7 @@ var import_list = __toESM(require("./list/index.cjs"));
41
41
  var import_activity = __toESM(require("./activity/index.cjs"));
42
42
  var import_picker_grid = __toESM(require("./picker-grid/index.cjs"));
43
43
  var import_picker_table = __toESM(require("./picker-table/index.cjs"));
44
+ var import_picker_activity = __toESM(require("./picker-activity/index.cjs"));
44
45
  var import_constants = require("../../constants.cjs");
45
46
  var import_density_picker = __toESM(require("./utils/density-picker.cjs"));
46
47
  var import_grid_config_options = __toESM(require("./utils/grid-config-options.cjs"));
@@ -88,6 +89,14 @@ var VIEW_LAYOUTS = [
88
89
  icon: import_icons.blockTable,
89
90
  viewConfigOptions: import_density_picker.default,
90
91
  isPicker: true
92
+ },
93
+ {
94
+ type: import_constants.LAYOUT_PICKER_ACTIVITY,
95
+ label: (0, import_i18n.__)("Activity"),
96
+ component: import_picker_activity.default,
97
+ icon: import_icons.scheduled,
98
+ viewConfigOptions: import_density_picker.default,
99
+ isPicker: true
91
100
  }
92
101
  ];
93
102
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/dataviews-layouts/index.ts"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tscheduled,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport ViewActivity from './activity';\nimport ViewPickerGrid from './picker-grid';\nimport ViewPickerTable from './picker-table';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_ACTIVITY,\n\tLAYOUT_PICKER_GRID,\n\tLAYOUT_PICKER_TABLE,\n} from '../../constants';\nimport DensityPicker from './utils/density-picker';\nimport GridConfigOptions from './utils/grid-config-options';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: GridConfigOptions,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_ACTIVITY,\n\t\tlabel: __( 'Activity' ),\n\t\tcomponent: ViewActivity,\n\t\ticon: scheduled,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewPickerGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: GridConfigOptions,\n\t\tisPicker: true,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewPickerTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t\tisPicker: true,\n\t},\n];\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAC1B,mBAMO;AAKP,mBAAsB;AACtB,kBAAqB;AACrB,kBAAqB;AACrB,sBAAyB;AACzB,yBAA2B;AAC3B,0BAA4B;AAC5B,uBAOO;AACP,4BAA0B;AAC1B,iCAA8B;AAEvB,IAAM,eAAe;AAAA,EAC3B;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,OAAQ;AAAA,IACnB,WAAW,aAAAA;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,sBAAAC;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,MAAO;AAAA,IAClB,WAAW,YAAAC;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,2BAAAC;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,MAAO;AAAA,IAClB,WAAW,YAAAC;AAAA,IACX,UAAM,mBAAM,IAAI,oCAAuB;AAAA,IACvC,mBAAmB,sBAAAH;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,UAAW;AAAA,IACtB,WAAW,gBAAAI;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,sBAAAJ;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,MAAO;AAAA,IAClB,WAAW,mBAAAK;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,2BAAAH;AAAA,IACnB,UAAU;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,OAAQ;AAAA,IACnB,WAAW,oBAAAI;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,sBAAAN;AAAA,IACnB,UAAU;AAAA,EACX;AACD;",
6
- "names": ["ViewTable", "DensityPicker", "ViewGrid", "GridConfigOptions", "ViewList", "ViewActivity", "ViewPickerGrid", "ViewPickerTable"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tscheduled,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport ViewActivity from './activity';\nimport ViewPickerGrid from './picker-grid';\nimport ViewPickerTable from './picker-table';\nimport ViewPickerActivity from './picker-activity';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_ACTIVITY,\n\tLAYOUT_PICKER_GRID,\n\tLAYOUT_PICKER_TABLE,\n\tLAYOUT_PICKER_ACTIVITY,\n} from '../../constants';\nimport DensityPicker from './utils/density-picker';\nimport GridConfigOptions from './utils/grid-config-options';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: GridConfigOptions,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_ACTIVITY,\n\t\tlabel: __( 'Activity' ),\n\t\tcomponent: ViewActivity,\n\t\ticon: scheduled,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewPickerGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: GridConfigOptions,\n\t\tisPicker: true,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewPickerTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t\tisPicker: true,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_ACTIVITY,\n\t\tlabel: __( 'Activity' ),\n\t\tcomponent: ViewPickerActivity,\n\t\ticon: scheduled,\n\t\tviewConfigOptions: DensityPicker,\n\t\tisPicker: true,\n\t},\n];\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAC1B,mBAMO;AAKP,mBAAsB;AACtB,kBAAqB;AACrB,kBAAqB;AACrB,sBAAyB;AACzB,yBAA2B;AAC3B,0BAA4B;AAC5B,6BAA+B;AAC/B,uBAQO;AACP,4BAA0B;AAC1B,iCAA8B;AAEvB,IAAM,eAAe;AAAA,EAC3B;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,OAAQ;AAAA,IACnB,WAAW,aAAAA;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,sBAAAC;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,MAAO;AAAA,IAClB,WAAW,YAAAC;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,2BAAAC;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,MAAO;AAAA,IAClB,WAAW,YAAAC;AAAA,IACX,UAAM,mBAAM,IAAI,oCAAuB;AAAA,IACvC,mBAAmB,sBAAAH;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,UAAW;AAAA,IACtB,WAAW,gBAAAI;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,sBAAAJ;AAAA,EACpB;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,MAAO;AAAA,IAClB,WAAW,mBAAAK;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,2BAAAH;AAAA,IACnB,UAAU;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,OAAQ;AAAA,IACnB,WAAW,oBAAAI;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,sBAAAN;AAAA,IACnB,UAAU;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,gBAAI,UAAW;AAAA,IACtB,WAAW,uBAAAO;AAAA,IACX,MAAM;AAAA,IACN,mBAAmB,sBAAAP;AAAA,IACnB,UAAU;AAAA,EACX;AACD;",
6
+ "names": ["ViewTable", "DensityPicker", "ViewGrid", "GridConfigOptions", "ViewList", "ViewActivity", "ViewPickerGrid", "ViewPickerTable", "ViewPickerActivity"]
7
7
  }