@wordpress/dataviews 1.2.0 → 2.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 (150) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +33 -30
  3. package/build/add-filter.js +30 -22
  4. package/build/add-filter.js.map +1 -1
  5. package/build/bulk-actions-toolbar.js +74 -69
  6. package/build/bulk-actions-toolbar.js.map +1 -1
  7. package/build/bulk-actions.js +69 -56
  8. package/build/bulk-actions.js.map +1 -1
  9. package/build/constants.js +17 -10
  10. package/build/constants.js.map +1 -1
  11. package/build/dataviews.js +63 -56
  12. package/build/dataviews.js.map +1 -1
  13. package/build/filter-summary.js +105 -95
  14. package/build/filter-summary.js.map +1 -1
  15. package/build/filters.js +18 -17
  16. package/build/filters.js.map +1 -1
  17. package/build/index.js.map +1 -1
  18. package/build/item-actions.js +78 -65
  19. package/build/item-actions.js.map +1 -1
  20. package/build/layouts.js.map +1 -1
  21. package/build/pagination.js +60 -57
  22. package/build/pagination.js.map +1 -1
  23. package/build/reset-filters.js +9 -4
  24. package/build/reset-filters.js.map +1 -1
  25. package/build/search-widget.js +108 -89
  26. package/build/search-widget.js.map +1 -1
  27. package/build/search.js +13 -6
  28. package/build/search.js.map +1 -1
  29. package/build/single-selection-checkbox.js +2 -2
  30. package/build/single-selection-checkbox.js.map +1 -1
  31. package/build/types.js.map +1 -1
  32. package/build/utils.js +3 -15
  33. package/build/utils.js.map +1 -1
  34. package/build/view-actions.js +168 -120
  35. package/build/view-actions.js.map +1 -1
  36. package/build/view-grid.js +113 -99
  37. package/build/view-grid.js.map +1 -1
  38. package/build/view-list.js +153 -132
  39. package/build/view-list.js.map +1 -1
  40. package/build/view-table.js +220 -192
  41. package/build/view-table.js.map +1 -1
  42. package/build-module/add-filter.js +30 -22
  43. package/build-module/add-filter.js.map +1 -1
  44. package/build-module/bulk-actions-toolbar.js +76 -69
  45. package/build-module/bulk-actions-toolbar.js.map +1 -1
  46. package/build-module/bulk-actions.js +71 -56
  47. package/build-module/bulk-actions.js.map +1 -1
  48. package/build-module/constants.js +16 -9
  49. package/build-module/constants.js.map +1 -1
  50. package/build-module/dataviews.js +64 -56
  51. package/build-module/dataviews.js.map +1 -1
  52. package/build-module/filter-summary.js +106 -96
  53. package/build-module/filter-summary.js.map +1 -1
  54. package/build-module/filters.js +18 -17
  55. package/build-module/filters.js.map +1 -1
  56. package/build-module/index.js.map +1 -1
  57. package/build-module/item-actions.js +80 -65
  58. package/build-module/item-actions.js.map +1 -1
  59. package/build-module/layouts.js.map +1 -1
  60. package/build-module/pagination.js +61 -58
  61. package/build-module/pagination.js.map +1 -1
  62. package/build-module/reset-filters.js +9 -4
  63. package/build-module/reset-filters.js.map +1 -1
  64. package/build-module/search-widget.js +109 -89
  65. package/build-module/search-widget.js.map +1 -1
  66. package/build-module/search.js +13 -6
  67. package/build-module/search.js.map +1 -1
  68. package/build-module/single-selection-checkbox.js +2 -3
  69. package/build-module/single-selection-checkbox.js.map +1 -1
  70. package/build-module/types.js.map +1 -1
  71. package/build-module/utils.js +2 -13
  72. package/build-module/utils.js.map +1 -1
  73. package/build-module/view-actions.js +170 -121
  74. package/build-module/view-actions.js.map +1 -1
  75. package/build-module/view-grid.js +115 -99
  76. package/build-module/view-grid.js.map +1 -1
  77. package/build-module/view-list.js +154 -132
  78. package/build-module/view-list.js.map +1 -1
  79. package/build-module/view-table.js +223 -194
  80. package/build-module/view-table.js.map +1 -1
  81. package/build-style/style-rtl.css +109 -20
  82. package/build-style/style.css +109 -20
  83. package/build-types/add-filter.d.ts +9 -6
  84. package/build-types/add-filter.d.ts.map +1 -1
  85. package/build-types/bulk-actions-toolbar.d.ts +11 -7
  86. package/build-types/bulk-actions-toolbar.d.ts.map +1 -1
  87. package/build-types/bulk-actions.d.ts.map +1 -1
  88. package/build-types/constants.d.ts +19 -32
  89. package/build-types/constants.d.ts.map +1 -1
  90. package/build-types/dataviews.d.ts +21 -14
  91. package/build-types/dataviews.d.ts.map +1 -1
  92. package/build-types/filter-summary.d.ts +13 -5
  93. package/build-types/filter-summary.d.ts.map +1 -1
  94. package/build-types/filters.d.ts +11 -1
  95. package/build-types/filters.d.ts.map +1 -1
  96. package/build-types/index.d.ts +3 -3
  97. package/build-types/index.d.ts.map +1 -1
  98. package/build-types/item-actions.d.ts +5 -7
  99. package/build-types/item-actions.d.ts.map +1 -1
  100. package/build-types/layouts.d.ts +8 -4
  101. package/build-types/layouts.d.ts.map +1 -1
  102. package/build-types/reset-filters.d.ts +12 -5
  103. package/build-types/reset-filters.d.ts.map +1 -1
  104. package/build-types/search-widget.d.ts +9 -1
  105. package/build-types/search-widget.d.ts.map +1 -1
  106. package/build-types/search.d.ts +11 -1
  107. package/build-types/search.d.ts.map +1 -1
  108. package/build-types/types.d.ts +78 -10
  109. package/build-types/types.d.ts.map +1 -1
  110. package/build-types/utils.d.ts +2 -1
  111. package/build-types/utils.d.ts.map +1 -1
  112. package/build-types/view-actions.d.ts +10 -1
  113. package/build-types/view-actions.d.ts.map +1 -1
  114. package/build-types/view-grid.d.ts +1 -12
  115. package/build-types/view-grid.d.ts.map +1 -1
  116. package/build-types/view-list.d.ts +2 -14
  117. package/build-types/view-list.d.ts.map +1 -1
  118. package/build-types/view-table.d.ts +3 -12
  119. package/build-types/view-table.d.ts.map +1 -1
  120. package/package.json +11 -12
  121. package/src/{add-filter.js → add-filter.tsx} +17 -1
  122. package/src/{bulk-actions-toolbar.js → bulk-actions-toolbar.tsx} +68 -40
  123. package/src/bulk-actions.tsx +5 -1
  124. package/src/constants.ts +12 -5
  125. package/src/{dataviews.js → dataviews.tsx} +41 -12
  126. package/src/{filter-summary.js → filter-summary.tsx} +35 -6
  127. package/src/{filters.js → filters.tsx} +18 -6
  128. package/src/item-actions.tsx +20 -15
  129. package/src/pagination.tsx +1 -1
  130. package/src/{reset-filters.js → reset-filters.tsx} +17 -2
  131. package/src/{search-widget.js → search-widget.tsx} +27 -7
  132. package/src/{search.js → search.tsx} +22 -5
  133. package/src/style.scss +97 -23
  134. package/src/types.ts +105 -10
  135. package/src/{utils.js → utils.ts} +5 -13
  136. package/src/{view-actions.js → view-actions.tsx} +105 -49
  137. package/src/view-grid.tsx +4 -20
  138. package/src/view-list.tsx +12 -23
  139. package/src/{view-table.js → view-table.tsx} +91 -32
  140. package/tsconfig.json +0 -3
  141. package/tsconfig.tsbuildinfo +1 -1
  142. package/build/dropdown-menu-helper.js +0 -71
  143. package/build/dropdown-menu-helper.js.map +0 -1
  144. package/build-module/dropdown-menu-helper.js +0 -64
  145. package/build-module/dropdown-menu-helper.js.map +0 -1
  146. package/build-types/dropdown-menu-helper.d.ts +0 -6
  147. package/build-types/dropdown-menu-helper.d.ts.map +0 -1
  148. package/src/dropdown-menu-helper.js +0 -61
  149. /package/src/{index.js → index.ts} +0 -0
  150. /package/src/{layouts.js → layouts.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useInstanceId","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","useCallback","useEffect","useMemo","useRef","useState","__","moreVertical","unlock","ActionsDropdownMenuGroup","ActionModal","useCompositeStoreV2","useCompositeStore","CompositeV2","Composite","CompositeItemV2","CompositeItem","CompositeRowV2","CompositeRow","DropdownMenuV2","DropdownMenu","ListItem","actions","id","isSelected","item","mediaField","onSelect","primaryField","store","visibleFields","itemRef","labelId","descriptionId","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","current","scrollIntoView","behavior","block","inline","primaryAction","eligibleActions","_eligibleActions","filter","action","isEligible","_primaryActions","isPrimary","icon","isModalOpen","setIsModalOpen","createElement","ref","render","role","className","onMouseEnter","onMouseLeave","alignment","onClick","spacing","justify","map","field","key","as","header","length","style","flexShrink","width","label","isDestructive","size","items","closeModal","callback","trigger","disabled","onKeyDown","event","preventDefault","move","down","up","placement","ViewList","props","data","fields","getItemId","isLoading","onSelectionChange","selection","view","baseId","selectedItem","findLast","includes","find","layout","hiddenFields","getItemDomId","undefined","defaultActiveId","isActiveIdInList","state","some","activeId","hasData"],"sources":["@wordpress/dataviews/src/view-list.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n// Import CompositeStore type, which is not exported from @wordpress/components.\n// eslint-disable-next-line no-restricted-imports\nimport type { CompositeStore } from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type {\n\tAction,\n\tAnyItem,\n\tNormalizedField,\n\tViewList as ViewListType,\n} from './types';\n\nimport { ActionsDropdownMenuGroup, ActionModal } from './item-actions';\n\ninterface ListViewProps< Item extends AnyItem > {\n\tactions: Action< Item >[];\n\tdata: Item[];\n\tfields: NormalizedField< Item >[];\n\tgetItemId: ( item: Item ) => string;\n\tid: string;\n\tisLoading: boolean;\n\tonSelectionChange: ( selection: Item[] ) => void;\n\tselection: string[];\n\tview: ViewListType;\n}\n\ninterface ListViewItemProps< Item extends AnyItem > {\n\tactions: Action< Item >[];\n\tid?: string;\n\tisSelected: boolean;\n\titem: Item;\n\tmediaField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\tprimaryField?: NormalizedField< Item >;\n\tstore: CompositeStore;\n\tvisibleFields: NormalizedField< Item >[];\n}\n\nconst {\n\tuseCompositeStoreV2: useCompositeStore,\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tCompositeRowV2: CompositeRow,\n\tDropdownMenuV2: DropdownMenu,\n} = unlock( componentsPrivateApis );\n\nfunction ListItem< Item extends AnyItem >( {\n\tactions,\n\tid,\n\tisSelected,\n\titem,\n\tmediaField,\n\tonSelect,\n\tprimaryField,\n\tstore,\n\tvisibleFields,\n}: ListViewItemProps< Item > ) {\n\tconst itemRef = useRef< HTMLElement >( null );\n\tconst labelId = `${ id }-label`;\n\tconst descriptionId = `${ id }-description`;\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions?.[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\treturn (\n\t\t<CompositeRow\n\t\t\tref={ itemRef }\n\t\t\trender={ <li /> }\n\t\t\trole=\"row\"\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t>\n\t\t\t<HStack\n\t\t\t\tclassName=\"dataviews-view-list__item-wrapper\"\n\t\t\t\talignment=\"top\"\n\t\t\t>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\trender={ <div /> }\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t\t\t\t\t{ mediaField?.render( { item } ) || (\n\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-placeholder\"></div>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__primary-field\"\n\t\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.render( { item } ) }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\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</VStack>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</CompositeItem>\n\t\t\t\t</div>\n\t\t\t\t{ actions?.length > 0 && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item-actions\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tflexShrink: '0',\n\t\t\t\t\t\t\twidth: 'auto',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ primaryAction && 'RenderModal' in primaryAction && (\n\t\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryAction.label }\n\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( true )\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\t\t{ isModalOpen && (\n\t\t\t\t\t\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\t\t\t\t\tcloseModal={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false )\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</CompositeItem>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ primaryAction &&\n\t\t\t\t\t\t\t! ( 'RenderModal' in primaryAction ) && (\n\t\t\t\t\t\t\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryAction.label }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\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\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.callback( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem,\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</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={ ( event: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey: string;\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreventDefault: () => void;\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\tif (\n\t\t\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\t\t\t'ArrowDown'\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\t// Prevent the default behaviour (open dropdown menu) and go down.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.down()\n\t\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}\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key === 'ArrowUp'\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\t// Prevent the default behavior (open dropdown menu) and go up.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.up()\n\t\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}\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\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</CompositeRow>\n\t);\n}\n\nexport default function ViewList< Item extends AnyItem >(\n\tprops: ListViewProps< Item >\n) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonSelectionChange,\n\t\tselection,\n\t\tview,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( item.id )\n\t);\n\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.primaryField, view.layout.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst onSelect = useCallback(\n\t\t( item: Item ) => onSelectionChange( [ item ] ),\n\t\t[ onSelectionChange ]\n\t);\n\n\tconst getItemDomId = useCallback(\n\t\t( item?: Item ) =>\n\t\t\titem ? `${ baseId }-${ getItemId( item ) }` : undefined,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst store = useCompositeStore( {\n\t\tdefaultActiveId: getItemDomId( selectedItem ),\n\t} );\n\n\t// Manage focused item, when the active one is removed from the list.\n\tconst isActiveIdInList = store.useState(\n\t\t( state: { items: any[]; activeId: any } ) =>\n\t\t\tstate.items.some(\n\t\t\t\t( item: { id: any } ) => item.id === state.activeId\n\t\t\t)\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isActiveIdInList ) {\n\t\t\t// Prefer going down, except if there is no item below (last item), then go up (last item in list).\n\t\t\tif ( store.down() ) {\n\t\t\t\tstore.move( store.down() );\n\t\t\t} else if ( store.up() ) {\n\t\t\t\tstore.move( store.up() );\n\t\t\t}\n\t\t}\n\t}, [ isActiveIdInList ] );\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Composite\n\t\t\tid={ baseId }\n\t\t\trender={ <ul /> }\n\t\t\tclassName=\"dataviews-view-list\"\n\t\t\trole=\"grid\"\n\t\t\tstore={ store }\n\t\t>\n\t\t\t{ data.map( ( item ) => {\n\t\t\t\tconst id = getItemDomId( item );\n\t\t\t\treturn (\n\t\t\t\t\t<ListItem\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useInstanceId","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","privateApis","componentsPrivateApis","Spinner","VisuallyHidden","useCallback","useEffect","useMemo","useRef","useState","__","moreVertical","unlock","ActionsDropdownMenuGroup","ActionModal","jsx","_jsx","jsxs","_jsxs","useCompositeStoreV2","useCompositeStore","CompositeV2","Composite","CompositeItemV2","CompositeItem","CompositeRowV2","CompositeRow","DropdownMenuV2","DropdownMenu","ListItem","actions","id","isSelected","item","mediaField","onSelect","primaryField","store","visibleFields","itemRef","labelId","descriptionId","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","current","scrollIntoView","behavior","block","inline","primaryAction","eligibleActions","_eligibleActions","filter","action","isEligible","_primaryActions","isPrimary","icon","isModalOpen","setIsModalOpen","primaryActionLabel","label","ref","render","role","className","onMouseEnter","onMouseLeave","children","alignment","spacing","onClick","justify","map","field","as","header","length","style","flexShrink","width","isDestructive","size","items","closeModal","callback","trigger","disabled","onKeyDown","event","key","preventDefault","move","down","up","placement","ViewList","props","data","fields","getItemId","isLoading","onSelectionChange","selection","view","baseId","selectedItem","findLast","includes","find","layout","hiddenFields","getItemDomId","undefined","defaultActiveId","isActiveIdInList","state","some","activeId","hasData"],"sources":["@wordpress/dataviews/src/view-list.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n// Import CompositeStore type, which is not exported from @wordpress/components.\n// eslint-disable-next-line no-restricted-imports\nimport type { CompositeStore } from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport type { Action, AnyItem, NormalizedField, ViewListProps } from './types';\n\nimport { ActionsDropdownMenuGroup, ActionModal } from './item-actions';\n\ninterface ListViewItemProps< Item extends AnyItem > {\n\tactions: Action< Item >[];\n\tid?: string;\n\tisSelected: boolean;\n\titem: Item;\n\tmediaField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\tprimaryField?: NormalizedField< Item >;\n\tstore: CompositeStore;\n\tvisibleFields: NormalizedField< Item >[];\n}\n\nconst {\n\tuseCompositeStoreV2: useCompositeStore,\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tCompositeRowV2: CompositeRow,\n\tDropdownMenuV2: DropdownMenu,\n} = unlock( componentsPrivateApis );\n\nfunction ListItem< Item extends AnyItem >( {\n\tactions,\n\tid,\n\tisSelected,\n\titem,\n\tmediaField,\n\tonSelect,\n\tprimaryField,\n\tstore,\n\tvisibleFields,\n}: ListViewItemProps< Item > ) {\n\tconst itemRef = useRef< HTMLElement >( null );\n\tconst labelId = `${ id }-label`;\n\tconst descriptionId = `${ id }-description`;\n\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions?.[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst primaryActionLabel =\n\t\tprimaryAction &&\n\t\t( typeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] ) );\n\n\treturn (\n\t\t<CompositeRow\n\t\t\tref={ itemRef }\n\t\t\trender={ <li /> }\n\t\t\trole=\"row\"\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t>\n\t\t\t<HStack\n\t\t\t\tclassName=\"dataviews-view-list__item-wrapper\"\n\t\t\t\talignment=\"center\"\n\t\t\t\tspacing={ 0 }\n\t\t\t>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\trender={ <div /> }\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t\t\t\t\t{ mediaField?.render( { item } ) || (\n\t\t\t\t\t\t\t\t\t<div className=\"dataviews-view-list__media-placeholder\"></div>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__primary-field\"\n\t\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ primaryField?.render( { item } ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.render( { item } ) }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\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</VStack>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</CompositeItem>\n\t\t\t\t</div>\n\t\t\t\t{ actions?.length > 0 && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item-actions\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tflexShrink: '0',\n\t\t\t\t\t\t\twidth: 'auto',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ primaryAction && 'RenderModal' in primaryAction && (\n\t\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryActionLabel }\n\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( true )\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\t\t{ isModalOpen && (\n\t\t\t\t\t\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\t\t\t\t\tcloseModal={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false )\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</CompositeItem>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ primaryAction &&\n\t\t\t\t\t\t\t! ( 'RenderModal' in primaryAction ) && (\n\t\t\t\t\t\t\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ primaryActionLabel }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ primaryAction.icon }\n\t\t\t\t\t\t\t\t\t\t\t\tisDestructive={\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.isDestructive\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\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tprimaryAction.callback( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem,\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</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={ ( event: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey: string;\n\t\t\t\t\t\t\t\t\t\t\t\t\tpreventDefault: () => void;\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\tif (\n\t\t\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\t\t\t'ArrowDown'\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\t// Prevent the default behaviour (open dropdown menu) and go down.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.down()\n\t\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}\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.key === 'ArrowUp'\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\t// Prevent the default behavior (open dropdown menu) and go up.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.move(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstore.up()\n\t\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}\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\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</CompositeRow>\n\t);\n}\n\nexport default function ViewList< Item extends AnyItem >(\n\tprops: ViewListProps< Item >\n) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonSelectionChange,\n\t\tselection,\n\t\tview,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( item.id )\n\t);\n\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view.layout.mediaField\n\t);\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout.primaryField\n\t);\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.primaryField, view.layout.mediaField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\n\tconst onSelect = useCallback(\n\t\t( item: Item ) => onSelectionChange( [ item ] ),\n\t\t[ onSelectionChange ]\n\t);\n\n\tconst getItemDomId = useCallback(\n\t\t( item?: Item ) =>\n\t\t\titem ? `${ baseId }-${ getItemId( item ) }` : undefined,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst store = useCompositeStore( {\n\t\tdefaultActiveId: getItemDomId( selectedItem ),\n\t} );\n\n\t// Manage focused item, when the active one is removed from the list.\n\tconst isActiveIdInList = store.useState(\n\t\t( state: { items: any[]; activeId: any } ) =>\n\t\t\tstate.items.some(\n\t\t\t\t( item: { id: any } ) => item.id === state.activeId\n\t\t\t)\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isActiveIdInList ) {\n\t\t\t// Prefer going down, except if there is no item below (last item), then go up (last item in list).\n\t\t\tif ( store.down() ) {\n\t\t\t\tstore.move( store.down() );\n\t\t\t} else if ( store.up() ) {\n\t\t\t\tstore.move( store.up() );\n\t\t\t}\n\t\t}\n\t}, [ isActiveIdInList ] );\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData && (\n\t\t\t\t\t<p>{ isLoading ? <Spinner /> : __( 'No results' ) }</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Composite\n\t\t\tid={ baseId }\n\t\t\trender={ <ul /> }\n\t\t\tclassName=\"dataviews-view-list\"\n\t\t\trole=\"grid\"\n\t\t\tstore={ store }\n\t\t>\n\t\t\t{ data.map( ( item ) => {\n\t\t\t\tconst id = getItemDomId( item );\n\t\t\t\treturn (\n\t\t\t\t\t<ListItem\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\tprimaryField={ primaryField }\n\t\t\t\t\t\tstore={ store }\n\t\t\t\t\t\tvisibleFields={ visibleFields }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,7 @@
1
- import { createElement } from "react";
2
1
  /**
3
2
  * External dependencies
4
3
  */
5
4
  import clsx from 'clsx';
6
-
7
5
  /**
8
6
  * WordPress dependencies
9
7
  */
@@ -19,8 +17,11 @@ import SingleSelectionCheckbox from './single-selection-checkbox';
19
17
  import { unlock } from './lock-unlock';
20
18
  import ItemActions from './item-actions';
21
19
  import { sanitizeOperators } from './utils';
22
- import { SORTING_DIRECTIONS } from './constants';
20
+ import { SORTING_DIRECTIONS, sortArrows, sortLabels, sortValues } from './constants';
23
21
  import { useSomeItemHasAPossibleBulkAction, useHasAPossibleBulkAction } from './bulk-actions';
22
+ import { jsx as _jsx } from "react/jsx-runtime";
23
+ import { jsxs as _jsxs } from "react/jsx-runtime";
24
+ import { Fragment as _Fragment } from "react/jsx-runtime";
24
25
  const {
25
26
  DropdownMenuV2: DropdownMenu,
26
27
  DropdownMenuGroupV2: DropdownMenuGroup,
@@ -32,15 +33,11 @@ const {
32
33
  function WithDropDownMenuSeparators({
33
34
  children
34
35
  }) {
35
- return Children.toArray(children).filter(Boolean).map((child, i) => createElement(Fragment, {
36
- key: i
37
- }, i > 0 && createElement(DropdownMenuSeparator, null), child));
36
+ return Children.toArray(children).filter(Boolean).map((child, i) => /*#__PURE__*/_jsxs(Fragment, {
37
+ children: [i > 0 && /*#__PURE__*/_jsx(DropdownMenuSeparator, {}), child]
38
+ }, i));
38
39
  }
39
- const sortArrows = {
40
- asc: '↑',
41
- desc: '↓'
42
- };
43
- const HeaderMenu = forwardRef(function HeaderMenu({
40
+ const _HeaderMenu = forwardRef(function HeaderMenu({
44
41
  field,
45
42
  view,
46
43
  onChangeView,
@@ -59,72 +56,91 @@ const HeaderMenu = forwardRef(function HeaderMenu({
59
56
  if (!isSortable && !isHidable && !canAddFilter) {
60
57
  return field.header;
61
58
  }
62
- return createElement(DropdownMenu, {
59
+ return /*#__PURE__*/_jsx(DropdownMenu, {
63
60
  align: "start",
64
- trigger: createElement(Button, {
61
+ trigger: /*#__PURE__*/_jsxs(Button, {
65
62
  size: "compact",
66
63
  className: "dataviews-view-table-header-button",
67
64
  ref: ref,
68
- variant: "tertiary"
69
- }, field.header, isSorted && createElement("span", {
70
- "aria-hidden": "true"
71
- }, isSorted && sortArrows[view.sort.direction])),
65
+ variant: "tertiary",
66
+ children: [field.header, view.sort && isSorted && /*#__PURE__*/_jsx("span", {
67
+ "aria-hidden": "true",
68
+ children: sortArrows[view.sort.direction]
69
+ })]
70
+ }),
72
71
  style: {
73
72
  minWidth: '240px'
74
- }
75
- }, createElement(WithDropDownMenuSeparators, null, isSortable && createElement(DropdownMenuGroup, null, Object.entries(SORTING_DIRECTIONS).map(([direction, info]) => {
76
- const isChecked = isSorted && view.sort.direction === direction;
77
- const value = `${field.id}-${direction}`;
78
- return createElement(DropdownMenuRadioItem, {
79
- key: value
80
- // All sorting radio items share the same name, so that
81
- // selecting a sorting option automatically deselects the
82
- // previously selected one, even if it is displayed in
83
- // another submenu. The field and direction are passed via
84
- // the `value` prop.
85
- ,
86
- name: "view-table-sorting",
87
- value: value,
88
- checked: isChecked,
89
- onChange: () => {
90
- onChangeView({
91
- ...view,
92
- sort: {
93
- field: field.id,
94
- direction
95
- }
96
- });
97
- }
98
- }, createElement(DropdownMenuItemLabel, null, info.label));
99
- })), canAddFilter && createElement(DropdownMenuGroup, null, createElement(DropdownMenuItem, {
100
- prefix: createElement(Icon, {
101
- icon: funnel
102
- }),
103
- onClick: () => {
104
- setOpenedFilter(field.id);
105
- onChangeView({
106
- ...view,
107
- page: 1,
108
- filters: [...(view.filters || []), {
109
- field: field.id,
110
- value: undefined,
111
- operator: operators[0]
112
- }]
113
- });
114
- }
115
- }, createElement(DropdownMenuItemLabel, null, __('Add filter')))), isHidable && createElement(DropdownMenuItem, {
116
- prefix: createElement(Icon, {
117
- icon: unseen
118
- }),
119
- onClick: () => {
120
- onHide(field);
121
- onChangeView({
122
- ...view,
123
- hiddenFields: view.hiddenFields.concat(field.id)
124
- });
125
- }
126
- }, createElement(DropdownMenuItemLabel, null, __('Hide')))));
73
+ },
74
+ children: /*#__PURE__*/_jsxs(WithDropDownMenuSeparators, {
75
+ children: [isSortable && /*#__PURE__*/_jsx(DropdownMenuGroup, {
76
+ children: SORTING_DIRECTIONS.map(direction => {
77
+ const isChecked = view.sort && isSorted && view.sort.direction === direction;
78
+ const value = `${field.id}-${direction}`;
79
+ return /*#__PURE__*/_jsx(DropdownMenuRadioItem, {
80
+ // All sorting radio items share the same name, so that
81
+ // selecting a sorting option automatically deselects the
82
+ // previously selected one, even if it is displayed in
83
+ // another submenu. The field and direction are passed via
84
+ // the `value` prop.
85
+ name: "view-table-sorting",
86
+ value: value,
87
+ checked: isChecked,
88
+ onChange: () => {
89
+ onChangeView({
90
+ ...view,
91
+ sort: {
92
+ field: field.id,
93
+ direction
94
+ }
95
+ });
96
+ },
97
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
98
+ children: sortLabels[direction]
99
+ })
100
+ }, value);
101
+ })
102
+ }), canAddFilter && /*#__PURE__*/_jsx(DropdownMenuGroup, {
103
+ children: /*#__PURE__*/_jsx(DropdownMenuItem, {
104
+ prefix: /*#__PURE__*/_jsx(Icon, {
105
+ icon: funnel
106
+ }),
107
+ onClick: () => {
108
+ setOpenedFilter(field.id);
109
+ onChangeView({
110
+ ...view,
111
+ page: 1,
112
+ filters: [...(view.filters || []), {
113
+ field: field.id,
114
+ value: undefined,
115
+ operator: operators[0]
116
+ }]
117
+ });
118
+ },
119
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
120
+ children: __('Add filter')
121
+ })
122
+ })
123
+ }), isHidable && /*#__PURE__*/_jsx(DropdownMenuItem, {
124
+ prefix: /*#__PURE__*/_jsx(Icon, {
125
+ icon: unseen
126
+ }),
127
+ onClick: () => {
128
+ onHide(field);
129
+ onChangeView({
130
+ ...view,
131
+ hiddenFields: view.hiddenFields.concat(field.id)
132
+ });
133
+ },
134
+ children: /*#__PURE__*/_jsx(DropdownMenuItemLabel, {
135
+ children: __('Hide')
136
+ })
137
+ })]
138
+ })
139
+ });
127
140
  });
141
+
142
+ // @ts-expect-error Lift the `Item` type argument through the forwardRef.
143
+ const HeaderMenu = _HeaderMenu;
128
144
  function BulkSelectionCheckbox({
129
145
  selection,
130
146
  onSelectionChange,
@@ -133,15 +149,15 @@ function BulkSelectionCheckbox({
133
149
  }) {
134
150
  const selectableItems = useMemo(() => {
135
151
  return data.filter(item => {
136
- return actions.some(action => action.supportsBulk && action.isEligible(item));
152
+ return actions.some(action => action.supportsBulk && (!action.isEligible || action.isEligible(item)));
137
153
  });
138
154
  }, [data, actions]);
139
155
  const areAllSelected = selection.length === selectableItems.length;
140
- return createElement(CheckboxControl, {
156
+ return /*#__PURE__*/_jsx(CheckboxControl, {
141
157
  className: "dataviews-view-table-selection-checkbox",
142
158
  __nextHasNoMarginBottom: true,
143
159
  checked: areAllSelected,
144
- indeterminate: !areAllSelected && selection.length,
160
+ indeterminate: !areAllSelected && !!selection.length,
145
161
  onChange: () => {
146
162
  if (areAllSelected) {
147
163
  onSelectionChange([]);
@@ -178,7 +194,7 @@ function TableRow({
178
194
  // `onClick` and can be used to exclude touchscreen devices from certain
179
195
  // behaviours.
180
196
  const isTouchDevice = useRef(false);
181
- return createElement("tr", {
197
+ return /*#__PURE__*/_jsxs("tr", {
182
198
  className: clsx('dataviews-view-table__row', {
183
199
  'is-selected': hasPossibleBulkAction && isSelected,
184
200
  'is-hovered': isHovered,
@@ -190,7 +206,7 @@ function TableRow({
190
206
  isTouchDevice.current = true;
191
207
  },
192
208
  onClick: () => {
193
- if (!isTouchDevice.current && document.getSelection().type !== 'Range') {
209
+ if (!isTouchDevice.current && document.getSelection()?.type !== 'Range') {
194
210
  if (!isSelected) {
195
211
  onSelectionChange(data.filter(_item => {
196
212
  const itemId = getItemId?.(_item);
@@ -203,52 +219,56 @@ function TableRow({
203
219
  }));
204
220
  }
205
221
  }
206
- }
207
- }, hasBulkActions && createElement("td", {
208
- className: "dataviews-view-table__checkbox-column",
209
- style: {
210
- width: '1%'
211
- }
212
- }, createElement("div", {
213
- className: "dataviews-view-table__cell-content-wrapper"
214
- }, createElement(SingleSelectionCheckbox, {
215
- id: id,
216
- item: item,
217
- selection: selection,
218
- onSelectionChange: onSelectionChange,
219
- getItemId: getItemId,
220
- data: data,
221
- primaryField: primaryField,
222
- disabled: !hasPossibleBulkAction
223
- }))), visibleFields.map(field => createElement("td", {
224
- key: field.id,
225
- style: {
226
- width: field.width || undefined,
227
- minWidth: field.minWidth || undefined,
228
- maxWidth: field.maxWidth || undefined
229
- }
230
- }, createElement("div", {
231
- className: clsx('dataviews-view-table__cell-content-wrapper', {
232
- 'dataviews-view-table__primary-field': primaryField?.id === field.id
222
+ },
223
+ children: [hasBulkActions && /*#__PURE__*/_jsx("td", {
224
+ className: "dataviews-view-table__checkbox-column",
225
+ style: {
226
+ width: '1%'
227
+ },
228
+ children: /*#__PURE__*/_jsx("div", {
229
+ className: "dataviews-view-table__cell-content-wrapper",
230
+ children: /*#__PURE__*/_jsx(SingleSelectionCheckbox, {
231
+ item: item,
232
+ selection: selection,
233
+ onSelectionChange: onSelectionChange,
234
+ getItemId: getItemId,
235
+ data: data,
236
+ primaryField: primaryField,
237
+ disabled: !hasPossibleBulkAction
238
+ })
239
+ })
240
+ }), visibleFields.map(field => /*#__PURE__*/_jsx("td", {
241
+ style: {
242
+ width: field.width || undefined,
243
+ minWidth: field.minWidth || undefined,
244
+ maxWidth: field.maxWidth || undefined
245
+ },
246
+ children: /*#__PURE__*/_jsx("div", {
247
+ className: clsx('dataviews-view-table__cell-content-wrapper', {
248
+ 'dataviews-view-table__primary-field': primaryField?.id === field.id
249
+ }),
250
+ children: field.render({
251
+ item
252
+ })
253
+ })
254
+ }, field.id)), !!actions?.length &&
255
+ /*#__PURE__*/
256
+ // Disable reason: we are not making the element interactive,
257
+ // but preventing any click events from bubbling up to the
258
+ // table row. This allows us to add a click handler to the row
259
+ // itself (to toggle row selection) without erroneously
260
+ // intercepting click events from ItemActions.
261
+ /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
262
+ _jsx("td", {
263
+ className: "dataviews-view-table__actions-column",
264
+ onClick: e => e.stopPropagation(),
265
+ children: /*#__PURE__*/_jsx(ItemActions, {
266
+ item: item,
267
+ actions: actions
268
+ })
233
269
  })
234
- }, field.render({
235
- item
236
- })))), !!actions?.length &&
237
- // Disable reason: we are not making the element interactive,
238
- // but preventing any click events from bubbling up to the
239
- // table row. This allows us to add a click handler to the row
240
- // itself (to toggle row selection) without erroneously
241
- // intercepting click events from ItemActions.
242
-
243
- /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */
244
- createElement("td", {
245
- className: "dataviews-view-table__actions-column",
246
- onClick: e => e.stopPropagation()
247
- }, createElement(ItemActions, {
248
- item: item,
249
- actions: actions
250
- }))
251
- /* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */);
270
+ /* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */]
271
+ });
252
272
  }
253
273
  function ViewTable({
254
274
  actions,
@@ -279,89 +299,98 @@ function ViewTable({
279
299
  // Clearing out the focus directive is necessary to make sure
280
300
  // future renders don't cause unexpected focus jumps.
281
301
  headerMenuToFocusRef.current = nextHeaderMenuToFocus;
282
- setNextHeaderMenuToFocus();
302
+ setNextHeaderMenuToFocus(undefined);
283
303
  return;
284
304
  }
285
305
  const onHide = field => {
286
306
  const hidden = headerMenuRefs.current.get(field.id);
287
- const fallback = headerMenuRefs.current.get(hidden.fallback);
307
+ const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : undefined;
288
308
  setNextHeaderMenuToFocus(fallback?.node);
289
309
  };
290
310
  const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField].includes(field.id));
291
311
  const hasData = !!data?.length;
292
- const sortValues = {
293
- asc: 'ascending',
294
- desc: 'descending'
295
- };
296
312
  const primaryField = fields.find(field => field.id === view.layout.primaryField);
297
- return createElement(Fragment, null, createElement("table", {
298
- className: "dataviews-view-table",
299
- "aria-busy": isLoading,
300
- "aria-describedby": tableNoticeId
301
- }, createElement("thead", null, createElement("tr", {
302
- className: "dataviews-view-table__row"
303
- }, hasBulkActions && createElement("th", {
304
- className: "dataviews-view-table__checkbox-column",
305
- style: {
306
- width: '1%'
307
- },
308
- "data-field-id": "selection",
309
- scope: "col"
310
- }, createElement(BulkSelectionCheckbox, {
311
- selection: selection,
312
- onSelectionChange: onSelectionChange,
313
- data: data,
314
- actions: actions
315
- })), visibleFields.map((field, index) => createElement("th", {
316
- key: field.id,
317
- style: {
318
- width: field.width || undefined,
319
- minWidth: field.minWidth || undefined,
320
- maxWidth: field.maxWidth || undefined
321
- },
322
- "data-field-id": field.id,
323
- "aria-sort": view.sort?.field === field.id && sortValues[view.sort.direction],
324
- scope: "col"
325
- }, createElement(HeaderMenu, {
326
- ref: node => {
327
- if (node) {
328
- headerMenuRefs.current.set(field.id, {
329
- node,
330
- fallback: visibleFields[index > 0 ? index - 1 : 1]?.id
331
- });
332
- } else {
333
- headerMenuRefs.current.delete(field.id);
334
- }
335
- },
336
- field: field,
337
- view: view,
338
- onChangeView: onChangeView,
339
- onHide: onHide,
340
- setOpenedFilter: setOpenedFilter
341
- }))), !!actions?.length && createElement("th", {
342
- "data-field-id": "actions",
343
- className: "dataviews-view-table__actions-column"
344
- }, createElement("span", {
345
- className: "dataviews-view-table-header"
346
- }, __('Actions'))))), createElement("tbody", null, hasData && data.map((item, index) => createElement(TableRow, {
347
- key: getItemId(item),
348
- item: item,
349
- hasBulkActions: hasBulkActions,
350
- actions: actions,
351
- id: getItemId(item) || index,
352
- visibleFields: visibleFields,
353
- primaryField: primaryField,
354
- selection: selection,
355
- getItemId: getItemId,
356
- onSelectionChange: onSelectionChange,
357
- data: data
358
- })))), createElement("div", {
359
- className: clsx({
360
- 'dataviews-loading': isLoading,
361
- 'dataviews-no-results': !hasData && !isLoading
362
- }),
363
- id: tableNoticeId
364
- }, !hasData && createElement("p", null, isLoading ? createElement(Spinner, null) : __('No results'))));
313
+ return /*#__PURE__*/_jsxs(_Fragment, {
314
+ children: [/*#__PURE__*/_jsxs("table", {
315
+ className: "dataviews-view-table",
316
+ "aria-busy": isLoading,
317
+ "aria-describedby": tableNoticeId,
318
+ children: [/*#__PURE__*/_jsx("thead", {
319
+ children: /*#__PURE__*/_jsxs("tr", {
320
+ className: "dataviews-view-table__row",
321
+ children: [hasBulkActions && /*#__PURE__*/_jsx("th", {
322
+ className: "dataviews-view-table__checkbox-column",
323
+ style: {
324
+ width: '1%'
325
+ },
326
+ "data-field-id": "selection",
327
+ scope: "col",
328
+ children: /*#__PURE__*/_jsx(BulkSelectionCheckbox, {
329
+ selection: selection,
330
+ onSelectionChange: onSelectionChange,
331
+ data: data,
332
+ actions: actions
333
+ })
334
+ }), visibleFields.map((field, index) => /*#__PURE__*/_jsx("th", {
335
+ style: {
336
+ width: field.width || undefined,
337
+ minWidth: field.minWidth || undefined,
338
+ maxWidth: field.maxWidth || undefined
339
+ },
340
+ "data-field-id": field.id,
341
+ "aria-sort": view.sort?.field === field.id ? sortValues[view.sort.direction] : undefined,
342
+ scope: "col",
343
+ children: /*#__PURE__*/_jsx(HeaderMenu, {
344
+ ref: node => {
345
+ if (node) {
346
+ headerMenuRefs.current.set(field.id, {
347
+ node,
348
+ fallback: visibleFields[index > 0 ? index - 1 : 1]?.id
349
+ });
350
+ } else {
351
+ headerMenuRefs.current.delete(field.id);
352
+ }
353
+ },
354
+ field: field,
355
+ view: view,
356
+ onChangeView: onChangeView,
357
+ onHide: onHide,
358
+ setOpenedFilter: setOpenedFilter
359
+ })
360
+ }, field.id)), !!actions?.length && /*#__PURE__*/_jsx("th", {
361
+ "data-field-id": "actions",
362
+ className: "dataviews-view-table__actions-column",
363
+ children: /*#__PURE__*/_jsx("span", {
364
+ className: "dataviews-view-table-header",
365
+ children: __('Actions')
366
+ })
367
+ })]
368
+ })
369
+ }), /*#__PURE__*/_jsx("tbody", {
370
+ children: hasData && data.map((item, index) => /*#__PURE__*/_jsx(TableRow, {
371
+ item: item,
372
+ hasBulkActions: hasBulkActions,
373
+ actions: actions,
374
+ id: getItemId(item) || index.toString(),
375
+ visibleFields: visibleFields,
376
+ primaryField: primaryField,
377
+ selection: selection,
378
+ getItemId: getItemId,
379
+ onSelectionChange: onSelectionChange,
380
+ data: data
381
+ }, getItemId(item)))
382
+ })]
383
+ }), /*#__PURE__*/_jsx("div", {
384
+ className: clsx({
385
+ 'dataviews-loading': isLoading,
386
+ 'dataviews-no-results': !hasData && !isLoading
387
+ }),
388
+ id: tableNoticeId,
389
+ children: !hasData && /*#__PURE__*/_jsx("p", {
390
+ children: isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : __('No results')
391
+ })
392
+ })]
393
+ });
365
394
  }
366
395
  export default ViewTable;
367
396
  //# sourceMappingURL=view-table.js.map