@wordpress/dataviews 4.10.0 → 4.11.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 (119) hide show
  1. package/CHANGELOG.md +19 -9
  2. package/LICENSE.md +1 -1
  3. package/README.md +309 -175
  4. package/build/components/dataviews/index.js +12 -1
  5. package/build/components/dataviews/index.js.map +1 -1
  6. package/build/components/dataviews-context/index.js +2 -1
  7. package/build/components/dataviews-context/index.js.map +1 -1
  8. package/build/components/dataviews-filters/add-filter.js +35 -30
  9. package/build/components/dataviews-filters/add-filter.js.map +1 -1
  10. package/build/components/dataviews-filters/index.js +3 -1
  11. package/build/components/dataviews-filters/index.js.map +1 -1
  12. package/build/components/dataviews-item-actions/index.js +24 -19
  13. package/build/components/dataviews-item-actions/index.js.map +1 -1
  14. package/build/components/dataviews-layout/index.js +2 -0
  15. package/build/components/dataviews-layout/index.js.map +1 -1
  16. package/build/components/dataviews-view-config/index.js +48 -43
  17. package/build/components/dataviews-view-config/index.js.map +1 -1
  18. package/build/dataviews-layouts/grid/index.js +12 -5
  19. package/build/dataviews-layouts/grid/index.js.map +1 -1
  20. package/build/dataviews-layouts/grid/preview-size-picker.js +22 -25
  21. package/build/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
  22. package/build/dataviews-layouts/list/index.js +27 -20
  23. package/build/dataviews-layouts/list/index.js.map +1 -1
  24. package/build/dataviews-layouts/table/column-header-menu.js +102 -99
  25. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  26. package/build/dataviews-layouts/table/column-primary.js +7 -3
  27. package/build/dataviews-layouts/table/column-primary.js.map +1 -1
  28. package/build/dataviews-layouts/table/index.js +4 -0
  29. package/build/dataviews-layouts/table/index.js.map +1 -1
  30. package/build/types.js.map +1 -1
  31. package/build-module/components/dataviews/index.js +12 -1
  32. package/build-module/components/dataviews/index.js.map +1 -1
  33. package/build-module/components/dataviews-context/index.js +2 -1
  34. package/build-module/components/dataviews-context/index.js.map +1 -1
  35. package/build-module/components/dataviews-filters/add-filter.js +36 -31
  36. package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
  37. package/build-module/components/dataviews-filters/index.js +3 -1
  38. package/build-module/components/dataviews-filters/index.js.map +1 -1
  39. package/build-module/components/dataviews-item-actions/index.js +24 -19
  40. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  41. package/build-module/components/dataviews-layout/index.js +2 -0
  42. package/build-module/components/dataviews-layout/index.js.map +1 -1
  43. package/build-module/components/dataviews-view-config/index.js +49 -44
  44. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  45. package/build-module/dataviews-layouts/grid/index.js +14 -7
  46. package/build-module/dataviews-layouts/grid/index.js.map +1 -1
  47. package/build-module/dataviews-layouts/grid/preview-size-picker.js +22 -25
  48. package/build-module/dataviews-layouts/grid/preview-size-picker.js.map +1 -1
  49. package/build-module/dataviews-layouts/list/index.js +27 -20
  50. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  51. package/build-module/dataviews-layouts/table/column-header-menu.js +102 -99
  52. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  53. package/build-module/dataviews-layouts/table/column-primary.js +7 -3
  54. package/build-module/dataviews-layouts/table/column-primary.js.map +1 -1
  55. package/build-module/dataviews-layouts/table/index.js +4 -0
  56. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  57. package/build-module/types.js.map +1 -1
  58. package/build-style/style-rtl.css +45 -55
  59. package/build-style/style.css +45 -55
  60. package/build-types/components/dataviews/index.d.ts +2 -1
  61. package/build-types/components/dataviews/index.d.ts.map +1 -1
  62. package/build-types/components/dataviews-context/index.d.ts +2 -0
  63. package/build-types/components/dataviews-context/index.d.ts.map +1 -1
  64. package/build-types/components/dataviews-filters/add-filter.d.ts +3 -2
  65. package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
  66. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  67. package/build-types/components/dataviews-layout/index.d.ts.map +1 -1
  68. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  69. package/build-types/dataviews-layouts/grid/index.d.ts.map +1 -1
  70. package/build-types/dataviews-layouts/grid/preview-size-picker.d.ts.map +1 -1
  71. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  72. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  73. package/build-types/dataviews-layouts/table/column-primary.d.ts +2 -1
  74. package/build-types/dataviews-layouts/table/column-primary.d.ts.map +1 -1
  75. package/build-types/dataviews-layouts/table/index.d.ts +1 -1
  76. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  77. package/build-types/test/dataform.d.ts +2 -0
  78. package/build-types/test/dataform.d.ts.map +1 -0
  79. package/build-types/test/dataviews.d.ts +2 -0
  80. package/build-types/test/dataviews.d.ts.map +1 -0
  81. package/build-types/test/normalize-fields.d.ts +2 -0
  82. package/build-types/test/normalize-fields.d.ts.map +1 -0
  83. package/build-types/test/validation.d.ts +2 -0
  84. package/build-types/test/validation.d.ts.map +1 -0
  85. package/build-types/types.d.ts +5 -0
  86. package/build-types/types.d.ts.map +1 -1
  87. package/build-wp/index.js +1209 -999
  88. package/package.json +13 -12
  89. package/src/components/dataviews/index.tsx +15 -1
  90. package/src/components/dataviews/style.scss +0 -1
  91. package/src/components/dataviews-context/index.ts +3 -0
  92. package/src/components/dataviews-filters/add-filter.tsx +43 -39
  93. package/src/components/dataviews-filters/index.tsx +1 -1
  94. package/src/components/dataviews-footer/style.scss +0 -3
  95. package/src/components/dataviews-item-actions/index.tsx +25 -27
  96. package/src/components/dataviews-layout/index.tsx +2 -0
  97. package/src/components/dataviews-view-config/index.tsx +52 -43
  98. package/src/components/dataviews-view-config/style.scss +0 -1
  99. package/src/dataviews-layouts/grid/index.tsx +17 -5
  100. package/src/dataviews-layouts/grid/preview-size-picker.tsx +25 -30
  101. package/src/dataviews-layouts/grid/style.scss +24 -33
  102. package/src/dataviews-layouts/list/index.tsx +35 -27
  103. package/src/dataviews-layouts/list/style.scss +5 -5
  104. package/src/dataviews-layouts/table/column-header-menu.tsx +152 -148
  105. package/src/dataviews-layouts/table/column-primary.tsx +7 -0
  106. package/src/dataviews-layouts/table/index.tsx +10 -0
  107. package/src/dataviews-layouts/table/style.scss +0 -1
  108. package/src/test/dataform.tsx +348 -0
  109. package/src/test/dataviews.tsx +380 -0
  110. package/src/types.ts +6 -0
  111. package/tsconfig.json +14 -4
  112. package/tsconfig.tsbuildinfo +1 -1
  113. package/build/components/form-field-visibility/index.js +0 -32
  114. package/build/components/form-field-visibility/index.js.map +0 -1
  115. package/build-module/components/form-field-visibility/index.js +0 -26
  116. package/build-module/components/form-field-visibility/index.js.map +0 -1
  117. package/build-types/components/form-field-visibility/index.d.ts +0 -11
  118. package/build-types/components/form-field-visibility/index.d.ts.map +0 -1
  119. package/src/components/form-field-visibility/index.tsx +0 -32
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_element","_dataviewsSelectionCheckbox","_dataviewsItemActions","_constants","_dataviewsBulkActions","_columnHeaderMenu","_columnPrimary","_jsxRuntime","TableColumnField","item","fields","column","field","find","f","id","jsx","className","children","render","TableRow","hasBulkActions","actions","view","titleField","mediaField","descriptionField","selection","getItemId","isItemClickable","onClickItem","onChangeSelection","_view$fields","hasPossibleBulkAction","useHasAPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","useState","showTitle","showMedia","showDescription","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","useRef","columns","hasPrimaryColumn","jsxs","clsx","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","style","width","default","disabled","undefined","map","_view$layout$styles$c","maxWidth","minWidth","layout","styles","length","e","stopPropagation","ViewTable","data","isLoading","onChangeView","setOpenedFilter","_view$fields2","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","useSomeItemHasAPossibleBulkAction","useEffect","focus","tableNoticeId","useId","onHide","hidden","get","fallback","node","hasData","headerMenuRef","index","set","delete","Fragment","density","scope","BulkSelectionCheckbox","ref","fieldId","canMove","_view$layout$styles$c2","sort","direction","sortValues","__","toString","Spinner","_default","exports"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Spinner } from '@wordpress/components';\nimport { useEffect, useId, useRef, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport { sortValues } from '../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n\tBulkSelectionCheckbox,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\nimport ColumnPrimary from './column-primary';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t<field.render { ...{ item } } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tisItemClickable,\n\tonClickItem,\n\tonChangeSelection,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDeviceRef = useRef( false );\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDeviceRef.current = true;\n\t\t\t} }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDeviceRef.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t<td>\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicits picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td key={ column } style={ { width, maxWidth, minWidth } }>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tonClickItem,\n\tisItemClickable,\n\tview,\n}: ViewTableProps< Item > ) {\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst tableNoticeId = useId();\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst hasData = !! data?.length;\n\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx( 'dataviews-view-table', {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t} ) }\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th scope=\"col\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\t\tcanMove={ false }\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</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicits picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ { width, maxWidth, minWidth } }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th className=\"dataviews-view-table__actions-column\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</tbody>\n\t\t\t</table>\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\tid={ tableNoticeId }\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\nexport default ViewTable;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_element","_dataviewsSelectionCheckbox","_dataviewsItemActions","_constants","_dataviewsBulkActions","_columnHeaderMenu","_columnPrimary","_jsxRuntime","TableColumnField","item","fields","column","field","find","f","id","jsx","className","children","render","TableRow","hasBulkActions","level","actions","view","titleField","mediaField","descriptionField","selection","getItemId","isItemClickable","onClickItem","onChangeSelection","_view$fields","hasPossibleBulkAction","useHasAPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","useState","showTitle","showMedia","showDescription","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","useRef","columns","hasPrimaryColumn","jsxs","clsx","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","style","width","default","disabled","undefined","map","_view$layout$styles$c","maxWidth","minWidth","layout","styles","length","e","stopPropagation","ViewTable","data","getItemLevel","isLoading","onChangeView","setOpenedFilter","_view$fields2","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","useSomeItemHasAPossibleBulkAction","useEffect","focus","tableNoticeId","useId","onHide","hidden","get","fallback","node","hasData","headerMenuRef","index","set","delete","Fragment","density","scope","BulkSelectionCheckbox","ref","fieldId","canMove","_view$layout$styles$c2","sort","direction","sortValues","__","showLevels","toString","Spinner","_default","exports"],"sources":["@wordpress/dataviews/src/dataviews-layouts/table/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Spinner } from '@wordpress/components';\nimport { useEffect, useId, useRef, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport { sortValues } from '../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n\tBulkSelectionCheckbox,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\nimport ColumnPrimary from './column-primary';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tlevel?: number;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t<field.render { ...{ item } } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tlevel,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tisItemClickable,\n\tonClickItem,\n\tonChangeSelection,\n}: TableRowProps< Item > ) {\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDeviceRef = useRef( false );\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDeviceRef.current = true;\n\t\t\t} }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t! isTouchDeviceRef.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t<td>\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicits picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td key={ column } style={ { width, maxWidth, minWidth } }>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName=\"dataviews-view-table__actions-column\"\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tonClickItem,\n\tisItemClickable,\n\tview,\n}: ViewTableProps< Item > ) {\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst tableNoticeId = useId();\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst hasData = !! data?.length;\n\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx( 'dataviews-view-table', {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t} ) }\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: '1%',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th scope=\"col\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\t\tcanMove={ false }\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</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicits picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ { width, maxWidth, minWidth } }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th className=\"dataviews-view-table__actions-column\">\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</tbody>\n\t\t\t</table>\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\tid={ tableNoticeId }\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\nexport default ViewTable;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["@wordpress/dataviews/src/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactElement, ComponentType } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { SetSelection } from './private-types';\n\nexport type SortDirection = 'asc' | 'desc';\n\n/**\n * Generic option type.\n */\nexport interface Option< Value extends any = any > {\n\tvalue: Value;\n\tlabel: string;\n\tdescription?: string;\n}\n\ninterface FilterByConfig {\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators?: Operator[];\n\n\t/**\n\t * Whether it is a primary filter.\n\t *\n\t * A primary filter is always visible and is not listed in the \"Add filter\" component,\n\t * except for the list layout where it behaves like a secondary filter.\n\t */\n\tisPrimary?: boolean;\n}\n\nexport type Operator =\n\t| 'is'\n\t| 'isNot'\n\t| 'isAny'\n\t| 'isNone'\n\t| 'isAll'\n\t| 'isNotAll';\n\nexport type FieldType = 'text' | 'integer' | 'datetime';\n\nexport type ValidationContext = {\n\telements?: Option[];\n};\n\n/**\n * An abstract interface for Field based on the field type.\n */\nexport type FieldTypeDefinition< Item > = {\n\t/**\n\t * Callback used to sort the field.\n\t */\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\n\t/**\n\t * Callback used to validate the field.\n\t */\n\tisValid: ( item: Item, context?: ValidationContext ) => boolean;\n\n\t/**\n\t * Callback used to render an edit control for the field or control name.\n\t */\n\tEdit: ComponentType< DataFormControlProps< Item > > | string;\n};\n\n/**\n * A dataview field for a specific property of a data type.\n */\nexport type Field< Item > = {\n\t/**\n\t * Type of the fields.\n\t */\n\ttype?: FieldType;\n\n\t/**\n\t * The unique identifier of the field.\n\t */\n\tid: string;\n\n\t/**\n\t * The label of the field. Defaults to the id.\n\t */\n\tlabel?: string;\n\n\t/**\n\t * The header of the field. Defaults to the label.\n\t * It allows the usage of a React Element to render the field labels.\n\t */\n\theader?: string | ReactElement;\n\n\t/**\n\t * A description of the field.\n\t */\n\tdescription?: string;\n\n\t/**\n\t * Placeholder for the field.\n\t */\n\tplaceholder?: string;\n\n\t/**\n\t * Callback used to render the field. Defaults to `field.getValue`.\n\t */\n\trender?: ComponentType< DataViewRenderFieldProps< Item > >;\n\n\t/**\n\t * Callback used to render an edit control for the field.\n\t */\n\tEdit?: ComponentType< DataFormControlProps< Item > > | string;\n\n\t/**\n\t * Callback used to sort the field.\n\t */\n\tsort?: ( a: Item, b: Item, direction: SortDirection ) => number;\n\n\t/**\n\t * Callback used to validate the field.\n\t */\n\tisValid?: ( item: Item, context?: ValidationContext ) => boolean;\n\n\t/**\n\t * Callback used to decide if a field should be displayed.\n\t */\n\tisVisible?: ( item: Item ) => boolean;\n\n\t/**\n\t * Whether the field is sortable.\n\t */\n\tenableSorting?: boolean;\n\n\t/**\n\t * Whether the field is searchable.\n\t */\n\tenableGlobalSearch?: boolean;\n\n\t/**\n\t * Whether the field is filterable.\n\t */\n\tenableHiding?: boolean;\n\n\t/**\n\t * The list of options to pick from when using the field as a filter.\n\t */\n\telements?: Option[];\n\n\t/**\n\t * Filter config for the field.\n\t */\n\tfilterBy?: FilterByConfig | undefined;\n\n\t/**\n\t * Callback used to retrieve the value of the field from the item.\n\t * Defaults to `item[ field.id ]`.\n\t */\n\tgetValue?: ( args: { item: Item } ) => any;\n};\n\nexport type NormalizedField< Item > = Field< Item > & {\n\tlabel: string;\n\theader: string | ReactElement;\n\tgetValue: ( args: { item: Item } ) => any;\n\trender: ComponentType< DataViewRenderFieldProps< Item > >;\n\tEdit: ComponentType< DataFormControlProps< Item > >;\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\tisValid: ( item: Item, context?: ValidationContext ) => boolean;\n\tenableHiding: boolean;\n\tenableSorting: boolean;\n};\n\n/**\n * A collection of dataview fields for a data type.\n */\nexport type Fields< Item > = Field< Item >[];\n\nexport type Data< Item > = Item[];\n\nexport type DataFormControlProps< Item > = {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: Record< string, any > ) => void;\n\thideLabelFromVision?: boolean;\n};\n\nexport type DataViewRenderFieldProps< Item > = {\n\titem: Item;\n};\n\n/**\n * The filters applied to the dataset.\n */\nexport interface Filter {\n\t/**\n\t * The field to filter by.\n\t */\n\tfield: string;\n\n\t/**\n\t * The operator to use.\n\t */\n\toperator: Operator;\n\n\t/**\n\t * The value to filter by.\n\t */\n\tvalue: any;\n}\n\nexport interface NormalizedFilter {\n\t/**\n\t * The field to filter by.\n\t */\n\tfield: string;\n\n\t/**\n\t * The field name.\n\t */\n\tname: string;\n\n\t/**\n\t * The list of options to pick from when using the field as a filter.\n\t */\n\telements: Option[];\n\n\t/**\n\t * Is a single selection filter.\n\t */\n\tsingleSelection: boolean;\n\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators: Operator[];\n\n\t/**\n\t * Whether the filter is visible.\n\t */\n\tisVisible: boolean;\n\n\t/**\n\t * Whether it is a primary filter.\n\t */\n\tisPrimary: boolean;\n}\n\ninterface ViewBase {\n\t/**\n\t * The layout of the view.\n\t */\n\ttype: string;\n\n\t/**\n\t * The global search term.\n\t */\n\tsearch?: string;\n\n\t/**\n\t * The filters to apply.\n\t */\n\tfilters?: Filter[];\n\n\t/**\n\t * The sorting configuration.\n\t */\n\tsort?: {\n\t\t/**\n\t\t * The field to sort by.\n\t\t */\n\t\tfield: string;\n\n\t\t/**\n\t\t * The direction to sort by.\n\t\t */\n\t\tdirection: SortDirection;\n\t};\n\n\t/**\n\t * The active page\n\t */\n\tpage?: number;\n\n\t/**\n\t * The number of items per page\n\t */\n\tperPage?: number;\n\n\t/**\n\t * The fields to render\n\t */\n\tfields?: string[];\n\n\t/**\n\t * Title field\n\t */\n\ttitleField?: string;\n\n\t/**\n\t * Media field\n\t */\n\tmediaField?: string;\n\n\t/**\n\t * Description field\n\t */\n\tdescriptionField?: string;\n\n\t/**\n\t * Whether to show the title\n\t */\n\tshowTitle?: boolean;\n\n\t/**\n\t * Whether to show the media\n\t */\n\tshowMedia?: boolean;\n\n\t/**\n\t * Whether to show the description\n\t */\n\tshowDescription?: boolean;\n}\n\nexport interface ColumnStyle {\n\t/**\n\t * The width of the field column.\n\t */\n\twidth?: string | number;\n\n\t/**\n\t * The minimum width of the field column.\n\t */\n\tmaxWidth?: string | number;\n\n\t/**\n\t * The maximum width of the field column.\n\t */\n\tminWidth?: string | number;\n}\n\nexport type Density = 'compact' | 'balanced' | 'comfortable';\n\nexport interface ViewTable extends ViewBase {\n\ttype: 'table';\n\n\tlayout?: {\n\t\t/**\n\t\t * The styles for the columns.\n\t\t */\n\t\tstyles?: Record< string, ColumnStyle >;\n\n\t\t/**\n\t\t * The density of the view.\n\t\t */\n\t\tdensity?: Density;\n\t};\n}\n\nexport interface ViewList extends ViewBase {\n\ttype: 'list';\n}\n\nexport interface ViewGrid extends ViewBase {\n\ttype: 'grid';\n\n\tlayout?: {\n\t\t/**\n\t\t * The fields to use as badge fields.\n\t\t */\n\t\tbadgeFields?: string[];\n\n\t\t/**\n\t\t * The preview size of the grid.\n\t\t */\n\t\tpreviewSize?: number;\n\t};\n}\n\nexport type View = ViewList | ViewGrid | ViewTable;\n\ninterface ActionBase< Item > {\n\t/**\n\t * The unique identifier of the action.\n\t */\n\tid: string;\n\n\t/**\n\t * The label of the action.\n\t * In case we want to adjust the label based on the selected items,\n\t * a function can be provided.\n\t */\n\tlabel: string | ( ( items: Item[] ) => string );\n\n\t/**\n\t * The icon of the action. (Either a string or an SVG element)\n\t * This should be IconType from the components package\n\t * but that import is breaking typescript build for the moment.\n\t */\n\ticon?: any;\n\n\t/**\n\t * Whether the action is disabled.\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Whether the action is destructive.\n\t */\n\tisDestructive?: boolean;\n\n\t/**\n\t * Whether the action is a primary action.\n\t */\n\tisPrimary?: boolean;\n\n\t/**\n\t * Whether the item passed as an argument supports the current action.\n\t */\n\tisEligible?: ( item: Item ) => boolean;\n\n\t/**\n\t * Whether the action can be used as a bulk action.\n\t */\n\tsupportsBulk?: boolean;\n\n\t/**\n\t * The context in which the action is visible.\n\t * This is only a \"meta\" information for now.\n\t */\n\tcontext?: 'list' | 'single';\n}\n\nexport interface RenderModalProps< Item > {\n\titems: Item[];\n\tcloseModal?: () => void;\n\tonActionPerformed?: ( items: Item[] ) => void;\n}\n\nexport interface ActionModal< Item > extends ActionBase< Item > {\n\t/**\n\t * Modal to render when the action is triggered.\n\t */\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionPerformed,\n\t}: RenderModalProps< Item > ) => ReactElement;\n\n\t/**\n\t * Whether to hide the modal header.\n\t */\n\thideModalHeader?: boolean;\n\n\t/**\n\t * The header of the modal.\n\t */\n\tmodalHeader?: string;\n}\n\nexport interface ActionButton< Item > extends ActionBase< Item > {\n\t/**\n\t * The callback to execute when the action is triggered.\n\t */\n\tcallback: (\n\t\titems: Item[],\n\t\tcontext: {\n\t\t\tregistry: any;\n\t\t\tonActionPerformed?: ( items: Item[] ) => void;\n\t\t}\n\t) => void;\n}\n\nexport type Action< Item > = ActionModal< Item > | ActionButton< Item >;\n\nexport interface ViewBaseProps< Item > {\n\tactions: Action< Item >[];\n\tdata: Item[];\n\tfields: NormalizedField< Item >[];\n\tgetItemId: ( item: Item ) => string;\n\tisLoading?: boolean;\n\tonChangeView: ( view: View ) => void;\n\tonChangeSelection: SetSelection;\n\tselection: string[];\n\tsetOpenedFilter: ( fieldId: string ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\tview: View;\n}\n\nexport interface ViewTableProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewTable;\n}\n\nexport interface ViewListProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewList;\n}\n\nexport interface ViewGridProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewGrid;\n}\n\nexport type ViewProps< Item > =\n\t| ViewTableProps< Item >\n\t| ViewGridProps< Item >\n\t| ViewListProps< Item >;\n\nexport interface SupportedLayouts {\n\tlist?: Omit< ViewList, 'type' >;\n\tgrid?: Omit< ViewGrid, 'type' >;\n\ttable?: Omit< ViewTable, 'type' >;\n}\n\nexport type SimpleFormField = {\n\tid: string;\n\tlayout?: 'regular' | 'panel';\n\tlabelPosition?: 'side' | 'top' | 'none';\n};\n\nexport type CombinedFormField = {\n\tid: string;\n\tlabel?: string;\n\tlayout?: 'regular' | 'panel';\n\tlabelPosition?: 'side' | 'top' | 'none';\n\tchildren: Array< FormField | string >;\n};\n\nexport type FormField = SimpleFormField | CombinedFormField;\n\n/**\n * The form configuration.\n */\nexport type Form = {\n\ttype?: 'regular' | 'panel';\n\tfields?: Array< FormField | string >;\n\tlabelPosition?: 'side' | 'top' | 'none';\n};\n\nexport interface DataFormProps< Item > {\n\tdata: Item;\n\tfields: Field< Item >[];\n\tform: Form;\n\tonChange: ( value: Record< string, any > ) => void;\n}\n\nexport interface FieldLayoutProps< Item > {\n\tdata: Item;\n\tfield: FormField;\n\tonChange: ( value: any ) => void;\n\thideLabelFromVision?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["@wordpress/dataviews/src/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactElement, ComponentType } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { SetSelection } from './private-types';\n\nexport type SortDirection = 'asc' | 'desc';\n\n/**\n * Generic option type.\n */\nexport interface Option< Value extends any = any > {\n\tvalue: Value;\n\tlabel: string;\n\tdescription?: string;\n}\n\ninterface FilterByConfig {\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators?: Operator[];\n\n\t/**\n\t * Whether it is a primary filter.\n\t *\n\t * A primary filter is always visible and is not listed in the \"Add filter\" component,\n\t * except for the list layout where it behaves like a secondary filter.\n\t */\n\tisPrimary?: boolean;\n}\n\nexport type Operator =\n\t| 'is'\n\t| 'isNot'\n\t| 'isAny'\n\t| 'isNone'\n\t| 'isAll'\n\t| 'isNotAll';\n\nexport type FieldType = 'text' | 'integer' | 'datetime';\n\nexport type ValidationContext = {\n\telements?: Option[];\n};\n\n/**\n * An abstract interface for Field based on the field type.\n */\nexport type FieldTypeDefinition< Item > = {\n\t/**\n\t * Callback used to sort the field.\n\t */\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\n\t/**\n\t * Callback used to validate the field.\n\t */\n\tisValid: ( item: Item, context?: ValidationContext ) => boolean;\n\n\t/**\n\t * Callback used to render an edit control for the field or control name.\n\t */\n\tEdit: ComponentType< DataFormControlProps< Item > > | string;\n};\n\n/**\n * A dataview field for a specific property of a data type.\n */\nexport type Field< Item > = {\n\t/**\n\t * Type of the fields.\n\t */\n\ttype?: FieldType;\n\n\t/**\n\t * The unique identifier of the field.\n\t */\n\tid: string;\n\n\t/**\n\t * The label of the field. Defaults to the id.\n\t */\n\tlabel?: string;\n\n\t/**\n\t * The header of the field. Defaults to the label.\n\t * It allows the usage of a React Element to render the field labels.\n\t */\n\theader?: string | ReactElement;\n\n\t/**\n\t * A description of the field.\n\t */\n\tdescription?: string;\n\n\t/**\n\t * Placeholder for the field.\n\t */\n\tplaceholder?: string;\n\n\t/**\n\t * Callback used to render the field. Defaults to `field.getValue`.\n\t */\n\trender?: ComponentType< DataViewRenderFieldProps< Item > >;\n\n\t/**\n\t * Callback used to render an edit control for the field.\n\t */\n\tEdit?: ComponentType< DataFormControlProps< Item > > | string;\n\n\t/**\n\t * Callback used to sort the field.\n\t */\n\tsort?: ( a: Item, b: Item, direction: SortDirection ) => number;\n\n\t/**\n\t * Callback used to validate the field.\n\t */\n\tisValid?: ( item: Item, context?: ValidationContext ) => boolean;\n\n\t/**\n\t * Callback used to decide if a field should be displayed.\n\t */\n\tisVisible?: ( item: Item ) => boolean;\n\n\t/**\n\t * Whether the field is sortable.\n\t */\n\tenableSorting?: boolean;\n\n\t/**\n\t * Whether the field is searchable.\n\t */\n\tenableGlobalSearch?: boolean;\n\n\t/**\n\t * Whether the field is filterable.\n\t */\n\tenableHiding?: boolean;\n\n\t/**\n\t * The list of options to pick from when using the field as a filter.\n\t */\n\telements?: Option[];\n\n\t/**\n\t * Filter config for the field.\n\t */\n\tfilterBy?: FilterByConfig | undefined;\n\n\t/**\n\t * Callback used to retrieve the value of the field from the item.\n\t * Defaults to `item[ field.id ]`.\n\t */\n\tgetValue?: ( args: { item: Item } ) => any;\n};\n\nexport type NormalizedField< Item > = Field< Item > & {\n\tlabel: string;\n\theader: string | ReactElement;\n\tgetValue: ( args: { item: Item } ) => any;\n\trender: ComponentType< DataViewRenderFieldProps< Item > >;\n\tEdit: ComponentType< DataFormControlProps< Item > >;\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\tisValid: ( item: Item, context?: ValidationContext ) => boolean;\n\tenableHiding: boolean;\n\tenableSorting: boolean;\n};\n\n/**\n * A collection of dataview fields for a data type.\n */\nexport type Fields< Item > = Field< Item >[];\n\nexport type Data< Item > = Item[];\n\nexport type DataFormControlProps< Item > = {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: Record< string, any > ) => void;\n\thideLabelFromVision?: boolean;\n};\n\nexport type DataViewRenderFieldProps< Item > = {\n\titem: Item;\n};\n\n/**\n * The filters applied to the dataset.\n */\nexport interface Filter {\n\t/**\n\t * The field to filter by.\n\t */\n\tfield: string;\n\n\t/**\n\t * The operator to use.\n\t */\n\toperator: Operator;\n\n\t/**\n\t * The value to filter by.\n\t */\n\tvalue: any;\n}\n\nexport interface NormalizedFilter {\n\t/**\n\t * The field to filter by.\n\t */\n\tfield: string;\n\n\t/**\n\t * The field name.\n\t */\n\tname: string;\n\n\t/**\n\t * The list of options to pick from when using the field as a filter.\n\t */\n\telements: Option[];\n\n\t/**\n\t * Is a single selection filter.\n\t */\n\tsingleSelection: boolean;\n\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators: Operator[];\n\n\t/**\n\t * Whether the filter is visible.\n\t */\n\tisVisible: boolean;\n\n\t/**\n\t * Whether it is a primary filter.\n\t */\n\tisPrimary: boolean;\n}\n\ninterface ViewBase {\n\t/**\n\t * The layout of the view.\n\t */\n\ttype: string;\n\n\t/**\n\t * The global search term.\n\t */\n\tsearch?: string;\n\n\t/**\n\t * The filters to apply.\n\t */\n\tfilters?: Filter[];\n\n\t/**\n\t * The sorting configuration.\n\t */\n\tsort?: {\n\t\t/**\n\t\t * The field to sort by.\n\t\t */\n\t\tfield: string;\n\n\t\t/**\n\t\t * The direction to sort by.\n\t\t */\n\t\tdirection: SortDirection;\n\t};\n\n\t/**\n\t * The active page\n\t */\n\tpage?: number;\n\n\t/**\n\t * The number of items per page\n\t */\n\tperPage?: number;\n\n\t/**\n\t * The fields to render\n\t */\n\tfields?: string[];\n\n\t/**\n\t * Title field\n\t */\n\ttitleField?: string;\n\n\t/**\n\t * Media field\n\t */\n\tmediaField?: string;\n\n\t/**\n\t * Description field\n\t */\n\tdescriptionField?: string;\n\n\t/**\n\t * Whether to show the title\n\t */\n\tshowTitle?: boolean;\n\n\t/**\n\t * Whether to show the media\n\t */\n\tshowMedia?: boolean;\n\n\t/**\n\t * Whether to show the description\n\t */\n\tshowDescription?: boolean;\n\n\t/**\n\t * Whether to show the hierarchical levels.\n\t */\n\tshowLevels?: boolean;\n}\n\nexport interface ColumnStyle {\n\t/**\n\t * The width of the field column.\n\t */\n\twidth?: string | number;\n\n\t/**\n\t * The minimum width of the field column.\n\t */\n\tmaxWidth?: string | number;\n\n\t/**\n\t * The maximum width of the field column.\n\t */\n\tminWidth?: string | number;\n}\n\nexport type Density = 'compact' | 'balanced' | 'comfortable';\n\nexport interface ViewTable extends ViewBase {\n\ttype: 'table';\n\n\tlayout?: {\n\t\t/**\n\t\t * The styles for the columns.\n\t\t */\n\t\tstyles?: Record< string, ColumnStyle >;\n\n\t\t/**\n\t\t * The density of the view.\n\t\t */\n\t\tdensity?: Density;\n\t};\n}\n\nexport interface ViewList extends ViewBase {\n\ttype: 'list';\n}\n\nexport interface ViewGrid extends ViewBase {\n\ttype: 'grid';\n\n\tlayout?: {\n\t\t/**\n\t\t * The fields to use as badge fields.\n\t\t */\n\t\tbadgeFields?: string[];\n\n\t\t/**\n\t\t * The preview size of the grid.\n\t\t */\n\t\tpreviewSize?: number;\n\t};\n}\n\nexport type View = ViewList | ViewGrid | ViewTable;\n\ninterface ActionBase< Item > {\n\t/**\n\t * The unique identifier of the action.\n\t */\n\tid: string;\n\n\t/**\n\t * The label of the action.\n\t * In case we want to adjust the label based on the selected items,\n\t * a function can be provided.\n\t */\n\tlabel: string | ( ( items: Item[] ) => string );\n\n\t/**\n\t * The icon of the action. (Either a string or an SVG element)\n\t * This should be IconType from the components package\n\t * but that import is breaking typescript build for the moment.\n\t */\n\ticon?: any;\n\n\t/**\n\t * Whether the action is disabled.\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Whether the action is destructive.\n\t */\n\tisDestructive?: boolean;\n\n\t/**\n\t * Whether the action is a primary action.\n\t */\n\tisPrimary?: boolean;\n\n\t/**\n\t * Whether the item passed as an argument supports the current action.\n\t */\n\tisEligible?: ( item: Item ) => boolean;\n\n\t/**\n\t * Whether the action can be used as a bulk action.\n\t */\n\tsupportsBulk?: boolean;\n\n\t/**\n\t * The context in which the action is visible.\n\t * This is only a \"meta\" information for now.\n\t */\n\tcontext?: 'list' | 'single';\n}\n\nexport interface RenderModalProps< Item > {\n\titems: Item[];\n\tcloseModal?: () => void;\n\tonActionPerformed?: ( items: Item[] ) => void;\n}\n\nexport interface ActionModal< Item > extends ActionBase< Item > {\n\t/**\n\t * Modal to render when the action is triggered.\n\t */\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionPerformed,\n\t}: RenderModalProps< Item > ) => ReactElement;\n\n\t/**\n\t * Whether to hide the modal header.\n\t */\n\thideModalHeader?: boolean;\n\n\t/**\n\t * The header of the modal.\n\t */\n\tmodalHeader?: string;\n}\n\nexport interface ActionButton< Item > extends ActionBase< Item > {\n\t/**\n\t * The callback to execute when the action is triggered.\n\t */\n\tcallback: (\n\t\titems: Item[],\n\t\tcontext: {\n\t\t\tregistry: any;\n\t\t\tonActionPerformed?: ( items: Item[] ) => void;\n\t\t}\n\t) => void;\n}\n\nexport type Action< Item > = ActionModal< Item > | ActionButton< Item >;\n\nexport interface ViewBaseProps< Item > {\n\tactions: Action< Item >[];\n\tdata: Item[];\n\tfields: NormalizedField< Item >[];\n\tgetItemId: ( item: Item ) => string;\n\tgetItemLevel?: ( item: Item ) => number;\n\tisLoading?: boolean;\n\tonChangeView: ( view: View ) => void;\n\tonChangeSelection: SetSelection;\n\tselection: string[];\n\tsetOpenedFilter: ( fieldId: string ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\tview: View;\n}\n\nexport interface ViewTableProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewTable;\n}\n\nexport interface ViewListProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewList;\n}\n\nexport interface ViewGridProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewGrid;\n}\n\nexport type ViewProps< Item > =\n\t| ViewTableProps< Item >\n\t| ViewGridProps< Item >\n\t| ViewListProps< Item >;\n\nexport interface SupportedLayouts {\n\tlist?: Omit< ViewList, 'type' >;\n\tgrid?: Omit< ViewGrid, 'type' >;\n\ttable?: Omit< ViewTable, 'type' >;\n}\n\nexport type SimpleFormField = {\n\tid: string;\n\tlayout?: 'regular' | 'panel';\n\tlabelPosition?: 'side' | 'top' | 'none';\n};\n\nexport type CombinedFormField = {\n\tid: string;\n\tlabel?: string;\n\tlayout?: 'regular' | 'panel';\n\tlabelPosition?: 'side' | 'top' | 'none';\n\tchildren: Array< FormField | string >;\n};\n\nexport type FormField = SimpleFormField | CombinedFormField;\n\n/**\n * The form configuration.\n */\nexport type Form = {\n\ttype?: 'regular' | 'panel';\n\tfields?: Array< FormField | string >;\n\tlabelPosition?: 'side' | 'top' | 'none';\n};\n\nexport interface DataFormProps< Item > {\n\tdata: Item;\n\tfields: Field< Item >[];\n\tform: Form;\n\tonChange: ( value: Record< string, any > ) => void;\n}\n\nexport interface FieldLayoutProps< Item > {\n\tdata: Item;\n\tfield: FormField;\n\tonChange: ( value: any ) => void;\n\thideLabelFromVision?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { __experimentalHStack as HStack } from '@wordpress/components';
10
10
  import { useMemo, useState } from '@wordpress/element';
11
+ import { useResizeObserver } from '@wordpress/compose';
11
12
 
12
13
  /**
13
14
  * Internal dependencies
@@ -32,6 +33,7 @@ export default function DataViews({
32
33
  actions = EMPTY_ARRAY,
33
34
  data,
34
35
  getItemId = defaultGetItemId,
36
+ getItemLevel,
35
37
  isLoading = false,
36
38
  paginationInfo,
37
39
  defaultLayouts,
@@ -41,6 +43,12 @@ export default function DataViews({
41
43
  isItemClickable = defaultIsItemClickable,
42
44
  header
43
45
  }) {
46
+ const [containerWidth, setContainerWidth] = useState(0);
47
+ const containerRef = useResizeObserver(resizeObserverEntries => {
48
+ setContainerWidth(resizeObserverEntries[0].borderBoxSize[0].inlineSize);
49
+ }, {
50
+ box: 'border-box'
51
+ });
44
52
  const [selectionState, setSelectionState] = useState([]);
45
53
  const isUncontrolled = selectionProperty === undefined || onChangeSelection === undefined;
46
54
  const selection = isUncontrolled ? selectionState : selectionProperty;
@@ -74,11 +82,14 @@ export default function DataViews({
74
82
  openedFilter,
75
83
  setOpenedFilter,
76
84
  getItemId,
85
+ getItemLevel,
77
86
  isItemClickable,
78
- onClickItem
87
+ onClickItem,
88
+ containerWidth
79
89
  },
80
90
  children: /*#__PURE__*/_jsxs("div", {
81
91
  className: "dataviews-wrapper",
92
+ ref: containerRef,
82
93
  children: [/*#__PURE__*/_jsxs(HStack, {
83
94
  alignment: "top",
84
95
  justify: "space-between",
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalHStack","HStack","useMemo","useState","DataViewsContext","default","DataViewsFilters","useFilters","FiltersToggle","DataViewsLayout","DataViewsFooter","DataViewsSearch","DataViewsViewConfig","normalizeFields","jsx","_jsx","jsxs","_jsxs","defaultGetItemId","item","id","defaultIsItemClickable","EMPTY_ARRAY","DataViews","view","onChangeView","fields","search","searchLabel","undefined","actions","data","getItemId","isLoading","paginationInfo","defaultLayouts","selection","selectionProperty","onChangeSelection","onClickItem","isItemClickable","header","selectionState","setSelectionState","isUncontrolled","openedFilter","setOpenedFilter","setSelectionWithChange","value","newValue","_fields","_selection","filter","some","filters","isShowingFilter","setIsShowingFilter","isPrimary","Provider","children","className","alignment","justify","spacing","expanded","label","style","flexShrink"],"sources":["@wordpress/dataviews/src/components/dataviews/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport {\n\tdefault as DataViewsFilters,\n\tuseFilters,\n\tFiltersToggle,\n} from '../dataviews-filters';\nimport DataViewsLayout from '../dataviews-layout';\nimport DataViewsFooter from '../dataviews-footer';\nimport DataViewsSearch from '../dataviews-search';\nimport DataViewsViewConfig from '../dataviews-view-config';\nimport { normalizeFields } from '../../normalize-fields';\nimport type { Action, Field, View, SupportedLayouts } from '../../types';\nimport type { SelectionOrUpdater } from '../../private-types';\n\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable?: ( item: Item ) => boolean;\n\theader?: ReactNode;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst defaultIsItemClickable = () => true;\nconst EMPTY_ARRAY: any[] = [];\n\nexport default function DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable = defaultIsItemClickable,\n\theader,\n}: DataViewsProps< Item > ) {\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst _selection = useMemo( () => {\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >( () =>\n\t\t( filters || [] ).some( ( filter ) => filter.isPrimary )\n\t);\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tisItemClickable,\n\t\t\t\tonClickItem,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\">\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews__view-actions\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t\t<FiltersToggle\n\t\t\t\t\t\t\tfilters={ filters }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\tsetIsShowingFilter={ setIsShowingFilter }\n\t\t\t\t\t\t\tisShowingFilter={ isShowingFilter }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tstyle={ { flexShrink: 0 } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DataViewsViewConfig\n\t\t\t\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ header }\n\t\t\t\t\t</HStack>\n\t\t\t\t</HStack>\n\t\t\t\t{ isShowingFilter && <DataViewsFilters /> }\n\t\t\t\t<DataViewsLayout />\n\t\t\t\t<DataViewsFooter />\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__experimentalHStack","HStack","useMemo","useState","useResizeObserver","DataViewsContext","default","DataViewsFilters","useFilters","FiltersToggle","DataViewsLayout","DataViewsFooter","DataViewsSearch","DataViewsViewConfig","normalizeFields","jsx","_jsx","jsxs","_jsxs","defaultGetItemId","item","id","defaultIsItemClickable","EMPTY_ARRAY","DataViews","view","onChangeView","fields","search","searchLabel","undefined","actions","data","getItemId","getItemLevel","isLoading","paginationInfo","defaultLayouts","selection","selectionProperty","onChangeSelection","onClickItem","isItemClickable","header","containerWidth","setContainerWidth","containerRef","resizeObserverEntries","borderBoxSize","inlineSize","box","selectionState","setSelectionState","isUncontrolled","openedFilter","setOpenedFilter","setSelectionWithChange","value","newValue","_fields","_selection","filter","some","filters","isShowingFilter","setIsShowingFilter","isPrimary","Provider","children","className","ref","alignment","justify","spacing","expanded","label","style","flexShrink"],"sources":["@wordpress/dataviews/src/components/dataviews/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState } from '@wordpress/element';\nimport { useResizeObserver } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport {\n\tdefault as DataViewsFilters,\n\tuseFilters,\n\tFiltersToggle,\n} from '../dataviews-filters';\nimport DataViewsLayout from '../dataviews-layout';\nimport DataViewsFooter from '../dataviews-footer';\nimport DataViewsSearch from '../dataviews-search';\nimport DataViewsViewConfig from '../dataviews-view-config';\nimport { normalizeFields } from '../../normalize-fields';\nimport type { Action, Field, View, SupportedLayouts } from '../../types';\nimport type { SelectionOrUpdater } from '../../private-types';\n\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable?: ( item: Item ) => boolean;\n\theader?: ReactNode;\n\tgetItemLevel?: ( item: Item ) => number;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst defaultIsItemClickable = () => true;\nconst EMPTY_ARRAY: any[] = [];\n\nexport default function DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable = defaultIsItemClickable,\n\theader,\n}: DataViewsProps< Item > ) {\n\tconst [ containerWidth, setContainerWidth ] = useState( 0 );\n\tconst containerRef = useResizeObserver(\n\t\t( resizeObserverEntries: any ) => {\n\t\t\tsetContainerWidth(\n\t\t\t\tresizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize\n\t\t\t);\n\t\t},\n\t\t{ box: 'border-box' }\n\t);\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst _selection = useMemo( () => {\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >( () =>\n\t\t( filters || [] ).some( ( filter ) => filter.isPrimary )\n\t);\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tgetItemLevel,\n\t\t\t\tisItemClickable,\n\t\t\t\tonClickItem,\n\t\t\t\tcontainerWidth,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\" ref={ containerRef }>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"top\"\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews__view-actions\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t\t<FiltersToggle\n\t\t\t\t\t\t\tfilters={ filters }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\tsetIsShowingFilter={ setIsShowingFilter }\n\t\t\t\t\t\t\tisShowingFilter={ isShowingFilter }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\tstyle={ { flexShrink: 0 } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DataViewsViewConfig\n\t\t\t\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ header }\n\t\t\t\t\t</HStack>\n\t\t\t\t</HStack>\n\t\t\t\t{ isShowingFilter && <DataViewsFilters /> }\n\t\t\t\t<DataViewsLayout />\n\t\t\t\t<DataViewsFooter />\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -24,7 +24,8 @@ const DataViewsContext = createContext({
24
24
  setOpenedFilter: () => {},
25
25
  openedFilter: null,
26
26
  getItemId: item => item.id,
27
- isItemClickable: () => true
27
+ isItemClickable: () => true,
28
+ containerWidth: 0
28
29
  });
29
30
  export default DataViewsContext;
30
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","LAYOUT_TABLE","DataViewsContext","view","type","onChangeView","fields","data","paginationInfo","totalItems","totalPages","selection","onChangeSelection","setOpenedFilter","openedFilter","getItemId","item","id","isItemClickable"],"sources":["@wordpress/dataviews/src/components/dataviews-context/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { View, Action, NormalizedField } from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { LAYOUT_TABLE } from '../../constants';\n\ntype DataViewsContextType< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< Item >[];\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\topenedFilter: string | null;\n\tsetOpenedFilter: ( openedFilter: string | null ) => void;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n};\n\nconst DataViewsContext = createContext< DataViewsContextType< any > >( {\n\tview: { type: LAYOUT_TABLE },\n\tonChangeView: () => {},\n\tfields: [],\n\tdata: [],\n\tpaginationInfo: {\n\t\ttotalItems: 0,\n\t\ttotalPages: 0,\n\t},\n\tselection: [],\n\tonChangeSelection: () => {},\n\tsetOpenedFilter: () => {},\n\topenedFilter: null,\n\tgetItemId: ( item ) => item.id,\n\tisItemClickable: () => true,\n} );\n\nexport default DataViewsContext;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,aAAa,QAAQ,oBAAoB;;AAElD;AACA;AACA;;AAGA,SAASC,YAAY,QAAQ,iBAAiB;AAsB9C,MAAMC,gBAAgB,GAAGF,aAAa,CAAiC;EACtEG,IAAI,EAAE;IAAEC,IAAI,EAAEH;EAAa,CAAC;EAC5BI,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;EACtBC,MAAM,EAAE,EAAE;EACVC,IAAI,EAAE,EAAE;EACRC,cAAc,EAAE;IACfC,UAAU,EAAE,CAAC;IACbC,UAAU,EAAE;EACb,CAAC;EACDC,SAAS,EAAE,EAAE;EACbC,iBAAiB,EAAEA,CAAA,KAAM,CAAC,CAAC;EAC3BC,eAAe,EAAEA,CAAA,KAAM,CAAC,CAAC;EACzBC,YAAY,EAAE,IAAI;EAClBC,SAAS,EAAIC,IAAI,IAAMA,IAAI,CAACC,EAAE;EAC9BC,eAAe,EAAEA,CAAA,KAAM;AACxB,CAAE,CAAC;AAEH,eAAehB,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["createContext","LAYOUT_TABLE","DataViewsContext","view","type","onChangeView","fields","data","paginationInfo","totalItems","totalPages","selection","onChangeSelection","setOpenedFilter","openedFilter","getItemId","item","id","isItemClickable","containerWidth"],"sources":["@wordpress/dataviews/src/components/dataviews-context/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { View, Action, NormalizedField } from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { LAYOUT_TABLE } from '../../constants';\n\ntype DataViewsContextType< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< Item >[];\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\topenedFilter: string | null;\n\tsetOpenedFilter: ( openedFilter: string | null ) => void;\n\tgetItemId: ( item: Item ) => string;\n\tgetItemLevel?: ( item: Item ) => number;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\tcontainerWidth: number;\n};\n\nconst DataViewsContext = createContext< DataViewsContextType< any > >( {\n\tview: { type: LAYOUT_TABLE },\n\tonChangeView: () => {},\n\tfields: [],\n\tdata: [],\n\tpaginationInfo: {\n\t\ttotalItems: 0,\n\t\ttotalPages: 0,\n\t},\n\tselection: [],\n\tonChangeSelection: () => {},\n\tsetOpenedFilter: () => {},\n\topenedFilter: null,\n\tgetItemId: ( item ) => item.id,\n\tisItemClickable: () => true,\n\tcontainerWidth: 0,\n} );\n\nexport default DataViewsContext;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,aAAa,QAAQ,oBAAoB;;AAElD;AACA;AACA;;AAGA,SAASC,YAAY,QAAQ,iBAAiB;AAwB9C,MAAMC,gBAAgB,GAAGF,aAAa,CAAiC;EACtEG,IAAI,EAAE;IAAEC,IAAI,EAAEH;EAAa,CAAC;EAC5BI,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;EACtBC,MAAM,EAAE,EAAE;EACVC,IAAI,EAAE,EAAE;EACRC,cAAc,EAAE;IACfC,UAAU,EAAE,CAAC;IACbC,UAAU,EAAE;EACb,CAAC;EACDC,SAAS,EAAE,EAAE;EACbC,iBAAiB,EAAEA,CAAA,KAAM,CAAC,CAAC;EAC3BC,eAAe,EAAEA,CAAA,KAAM,CAAC,CAAC;EACzBC,YAAY,EAAE,IAAI;EAClBC,SAAS,EAAIC,IAAI,IAAMA,IAAI,CAACC,EAAE;EAC9BC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,cAAc,EAAE;AACjB,CAAE,CAAC;AAEH,eAAejB,gBAAgB","ignoreList":[]}
@@ -14,7 +14,7 @@ import { forwardRef } from '@wordpress/element';
14
14
  * Internal dependencies
15
15
  */
16
16
  import { unlock } from '../../lock-unlock';
17
- import { jsx as _jsx } from "react/jsx-runtime";
17
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
18
  const {
19
19
  Menu
20
20
  } = unlock(componentsPrivateApis);
@@ -23,30 +23,33 @@ export function AddFilterMenu({
23
23
  view,
24
24
  onChangeView,
25
25
  setOpenedFilter,
26
- trigger
26
+ triggerProps
27
27
  }) {
28
28
  const inactiveFilters = filters.filter(filter => !filter.isVisible);
29
- return /*#__PURE__*/_jsx(Menu, {
30
- trigger: trigger,
31
- children: inactiveFilters.map(filter => {
32
- return /*#__PURE__*/_jsx(Menu.Item, {
33
- onClick: () => {
34
- setOpenedFilter(filter.field);
35
- onChangeView({
36
- ...view,
37
- page: 1,
38
- filters: [...(view.filters || []), {
39
- field: filter.field,
40
- value: undefined,
41
- operator: filter.operators[0]
42
- }]
43
- });
44
- },
45
- children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
46
- children: filter.name
47
- })
48
- }, filter.field);
49
- })
29
+ return /*#__PURE__*/_jsxs(Menu, {
30
+ children: [/*#__PURE__*/_jsx(Menu.TriggerButton, {
31
+ ...triggerProps
32
+ }), /*#__PURE__*/_jsx(Menu.Popover, {
33
+ children: inactiveFilters.map(filter => {
34
+ return /*#__PURE__*/_jsx(Menu.Item, {
35
+ onClick: () => {
36
+ setOpenedFilter(filter.field);
37
+ onChangeView({
38
+ ...view,
39
+ page: 1,
40
+ filters: [...(view.filters || []), {
41
+ field: filter.field,
42
+ value: undefined,
43
+ operator: filter.operators[0]
44
+ }]
45
+ });
46
+ },
47
+ children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
48
+ children: filter.name
49
+ })
50
+ }, filter.field);
51
+ })
52
+ })]
50
53
  });
51
54
  }
52
55
  function AddFilter({
@@ -62,15 +65,17 @@ function AddFilter({
62
65
  }
63
66
  const inactiveFilters = filters.filter(filter => !filter.isVisible);
64
67
  return /*#__PURE__*/_jsx(AddFilterMenu, {
65
- trigger: /*#__PURE__*/_jsx(Button, {
66
- accessibleWhenDisabled: true,
67
- size: "compact",
68
- className: "dataviews-filters-button",
69
- variant: "tertiary",
70
- disabled: !inactiveFilters.length,
71
- ref: ref,
68
+ triggerProps: {
69
+ render: /*#__PURE__*/_jsx(Button, {
70
+ accessibleWhenDisabled: true,
71
+ size: "compact",
72
+ className: "dataviews-filters-button",
73
+ variant: "tertiary",
74
+ disabled: !inactiveFilters.length,
75
+ ref: ref
76
+ }),
72
77
  children: __('Add filter')
73
- }),
78
+ },
74
79
  filters,
75
80
  view,
76
81
  onChangeView,
@@ -1 +1 @@
1
- {"version":3,"names":["privateApis","componentsPrivateApis","Button","__","forwardRef","unlock","jsx","_jsx","Menu","AddFilterMenu","filters","view","onChangeView","setOpenedFilter","trigger","inactiveFilters","filter","isVisible","children","map","Item","onClick","field","page","value","undefined","operator","operators","ItemLabel","name","AddFilter","ref","length","every","isPrimary","accessibleWhenDisabled","size","className","variant","disabled"],"sources":["@wordpress/dataviews/src/components/dataviews-filters/add-filter.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { Ref } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { NormalizedFilter, View } from '../../types';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface AddFilterProps {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsetOpenedFilter: ( filter: string | null ) => void;\n}\n\nexport function AddFilterMenu( {\n\tfilters,\n\tview,\n\tonChangeView,\n\tsetOpenedFilter,\n\ttrigger,\n}: AddFilterProps & {\n\ttrigger: React.ReactNode;\n} ) {\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<Menu trigger={ trigger }>\n\t\t\t{ inactiveFilters.map( ( filter ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetOpenedFilter( filter.field );\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\tfilters: [\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\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\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>\n\t\t\t\t\t\t<Menu.ItemLabel>{ filter.name }</Menu.ItemLabel>\n\t\t\t\t\t</Menu.Item>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Menu>\n\t);\n}\n\nfunction AddFilter(\n\t{ filters, view, onChangeView, setOpenedFilter }: AddFilterProps,\n\tref: Ref< HTMLButtonElement >\n) {\n\tif ( ! filters.length || filters.every( ( { isPrimary } ) => isPrimary ) ) {\n\t\treturn null;\n\t}\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<AddFilterMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tclassName=\"dataviews-filters-button\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tdisabled={ ! inactiveFilters.length }\n\t\t\t\t\tref={ ref }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\t{ ...{ filters, view, onChangeView, setOpenedFilter } }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( AddFilter );\n"],"mappings":";AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA,SACCA,WAAW,IAAIC,qBAAqB,EACpCC,MAAM,QACA,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG3C,MAAM;EAAEC;AAAK,CAAC,GAAGH,MAAM,CAAEJ,qBAAsB,CAAC;AAShD,OAAO,SAASQ,aAAaA,CAAE;EAC9BC,OAAO;EACPC,IAAI;EACJC,YAAY;EACZC,eAAe;EACfC;AAGD,CAAC,EAAG;EACH,MAAMC,eAAe,GAAGL,OAAO,CAACM,MAAM,CAAIA,MAAM,IAAM,CAAEA,MAAM,CAACC,SAAU,CAAC;EAC1E,oBACCV,IAAA,CAACC,IAAI;IAACM,OAAO,EAAGA,OAAS;IAAAI,QAAA,EACtBH,eAAe,CAACI,GAAG,CAAIH,MAAM,IAAM;MACpC,oBACCT,IAAA,CAACC,IAAI,CAACY,IAAI;QAETC,OAAO,EAAGA,CAAA,KAAM;UACfR,eAAe,CAAEG,MAAM,CAACM,KAAM,CAAC;UAC/BV,YAAY,CAAE;YACb,GAAGD,IAAI;YACPY,IAAI,EAAE,CAAC;YACPb,OAAO,EAAE,CACR,IAAKC,IAAI,CAACD,OAAO,IAAI,EAAE,CAAE,EACzB;cACCY,KAAK,EAAEN,MAAM,CAACM,KAAK;cACnBE,KAAK,EAAEC,SAAS;cAChBC,QAAQ,EAAEV,MAAM,CAACW,SAAS,CAAE,CAAC;YAC9B,CAAC;UAEH,CAAE,CAAC;QACJ,CAAG;QAAAT,QAAA,eAEHX,IAAA,CAACC,IAAI,CAACoB,SAAS;UAAAV,QAAA,EAAGF,MAAM,CAACa;QAAI,CAAkB;MAAC,GAjB1Cb,MAAM,CAACM,KAkBH,CAAC;IAEd,CAAE;EAAC,CACE,CAAC;AAET;AAEA,SAASQ,SAASA,CACjB;EAAEpB,OAAO;EAAEC,IAAI;EAAEC,YAAY;EAAEC;AAAgC,CAAC,EAChEkB,GAA6B,EAC5B;EACD,IAAK,CAAErB,OAAO,CAACsB,MAAM,IAAItB,OAAO,CAACuB,KAAK,CAAE,CAAE;IAAEC;EAAU,CAAC,KAAMA,SAAU,CAAC,EAAG;IAC1E,OAAO,IAAI;EACZ;EACA,MAAMnB,eAAe,GAAGL,OAAO,CAACM,MAAM,CAAIA,MAAM,IAAM,CAAEA,MAAM,CAACC,SAAU,CAAC;EAC1E,oBACCV,IAAA,CAACE,aAAa;IACbK,OAAO,eACNP,IAAA,CAACL,MAAM;MACNiC,sBAAsB;MACtBC,IAAI,EAAC,SAAS;MACdC,SAAS,EAAC,0BAA0B;MACpCC,OAAO,EAAC,UAAU;MAClBC,QAAQ,EAAG,CAAExB,eAAe,CAACiB,MAAQ;MACrCD,GAAG,EAAGA,GAAK;MAAAb,QAAA,EAETf,EAAE,CAAE,YAAa;IAAC,CACb,CACR;IACMO,OAAO;IAAEC,IAAI;IAAEC,YAAY;IAAEC;EAAe,CACnD,CAAC;AAEJ;AAEA,eAAeT,UAAU,CAAE0B,SAAU,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["privateApis","componentsPrivateApis","Button","__","forwardRef","unlock","jsx","_jsx","jsxs","_jsxs","Menu","AddFilterMenu","filters","view","onChangeView","setOpenedFilter","triggerProps","inactiveFilters","filter","isVisible","children","TriggerButton","Popover","map","Item","onClick","field","page","value","undefined","operator","operators","ItemLabel","name","AddFilter","ref","length","every","isPrimary","render","accessibleWhenDisabled","size","className","variant","disabled"],"sources":["@wordpress/dataviews/src/components/dataviews-filters/add-filter.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { Ref } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { NormalizedFilter, View } from '../../types';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface AddFilterProps {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsetOpenedFilter: ( filter: string | null ) => void;\n}\n\nexport function AddFilterMenu( {\n\tfilters,\n\tview,\n\tonChangeView,\n\tsetOpenedFilter,\n\ttriggerProps,\n}: AddFilterProps & {\n\ttriggerProps: React.ComponentProps< typeof Menu.TriggerButton >;\n} ) {\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton { ...triggerProps } />\n\t\t\t<Menu.Popover>\n\t\t\t\t{ inactiveFilters.map( ( filter ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( filter.field );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Menu.ItemLabel>{ filter.name }</Menu.ItemLabel>\n\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n}\n\nfunction AddFilter(\n\t{ filters, view, onChangeView, setOpenedFilter }: AddFilterProps,\n\tref: Ref< HTMLButtonElement >\n) {\n\tif ( ! filters.length || filters.every( ( { isPrimary } ) => isPrimary ) ) {\n\t\treturn null;\n\t}\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<AddFilterMenu\n\t\t\ttriggerProps={ {\n\t\t\t\trender: (\n\t\t\t\t\t<Button\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tclassName=\"dataviews-filters-button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tdisabled={ ! inactiveFilters.length }\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tchildren: __( 'Add filter' ),\n\t\t\t} }\n\t\t\t{ ...{ filters, view, onChangeView, setOpenedFilter } }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( AddFilter );\n"],"mappings":";AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA,SACCA,WAAW,IAAIC,qBAAqB,EACpCC,MAAM,QACA,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG3C,MAAM;EAAEC;AAAK,CAAC,GAAGL,MAAM,CAAEJ,qBAAsB,CAAC;AAShD,OAAO,SAASU,aAAaA,CAAE;EAC9BC,OAAO;EACPC,IAAI;EACJC,YAAY;EACZC,eAAe;EACfC;AAGD,CAAC,EAAG;EACH,MAAMC,eAAe,GAAGL,OAAO,CAACM,MAAM,CAAIA,MAAM,IAAM,CAAEA,MAAM,CAACC,SAAU,CAAC;EAC1E,oBACCV,KAAA,CAACC,IAAI;IAAAU,QAAA,gBACJb,IAAA,CAACG,IAAI,CAACW,aAAa;MAAA,GAAML;IAAY,CAAI,CAAC,eAC1CT,IAAA,CAACG,IAAI,CAACY,OAAO;MAAAF,QAAA,EACVH,eAAe,CAACM,GAAG,CAAIL,MAAM,IAAM;QACpC,oBACCX,IAAA,CAACG,IAAI,CAACc,IAAI;UAETC,OAAO,EAAGA,CAAA,KAAM;YACfV,eAAe,CAAEG,MAAM,CAACQ,KAAM,CAAC;YAC/BZ,YAAY,CAAE;cACb,GAAGD,IAAI;cACPc,IAAI,EAAE,CAAC;cACPf,OAAO,EAAE,CACR,IAAKC,IAAI,CAACD,OAAO,IAAI,EAAE,CAAE,EACzB;gBACCc,KAAK,EAAER,MAAM,CAACQ,KAAK;gBACnBE,KAAK,EAAEC,SAAS;gBAChBC,QAAQ,EAAEZ,MAAM,CAACa,SAAS,CAAE,CAAC;cAC9B,CAAC;YAEH,CAAE,CAAC;UACJ,CAAG;UAAAX,QAAA,eAEHb,IAAA,CAACG,IAAI,CAACsB,SAAS;YAAAZ,QAAA,EAAGF,MAAM,CAACe;UAAI,CAAkB;QAAC,GAjB1Cf,MAAM,CAACQ,KAkBH,CAAC;MAEd,CAAE;IAAC,CACU,CAAC;EAAA,CACV,CAAC;AAET;AAEA,SAASQ,SAASA,CACjB;EAAEtB,OAAO;EAAEC,IAAI;EAAEC,YAAY;EAAEC;AAAgC,CAAC,EAChEoB,GAA6B,EAC5B;EACD,IAAK,CAAEvB,OAAO,CAACwB,MAAM,IAAIxB,OAAO,CAACyB,KAAK,CAAE,CAAE;IAAEC;EAAU,CAAC,KAAMA,SAAU,CAAC,EAAG;IAC1E,OAAO,IAAI;EACZ;EACA,MAAMrB,eAAe,GAAGL,OAAO,CAACM,MAAM,CAAIA,MAAM,IAAM,CAAEA,MAAM,CAACC,SAAU,CAAC;EAC1E,oBACCZ,IAAA,CAACI,aAAa;IACbK,YAAY,EAAG;MACduB,MAAM,eACLhC,IAAA,CAACL,MAAM;QACNsC,sBAAsB;QACtBC,IAAI,EAAC,SAAS;QACdC,SAAS,EAAC,0BAA0B;QACpCC,OAAO,EAAC,UAAU;QAClBC,QAAQ,EAAG,CAAE3B,eAAe,CAACmB,MAAQ;QACrCD,GAAG,EAAGA;MAAK,CACX,CACD;MACDf,QAAQ,EAAEjB,EAAE,CAAE,YAAa;IAC5B,CAAG;IACIS,OAAO;IAAEC,IAAI;IAAEC,YAAY;IAAEC;EAAe,CACnD,CAAC;AAEJ;AAEA,eAAeX,UAAU,CAAE8B,SAAU,CAAC","ignoreList":[]}
@@ -101,7 +101,9 @@ export function FiltersToggle({
101
101
  view: view,
102
102
  onChangeView: onChangeViewWithFilterVisibility,
103
103
  setOpenedFilter: setOpenedFilter,
104
- trigger: buttonComponent
104
+ triggerProps: {
105
+ render: buttonComponent
106
+ }
105
107
  }) : /*#__PURE__*/_jsx(FilterVisibilityToggle, {
106
108
  buttonRef: buttonRef,
107
109
  filtersCount: view.filters?.length,
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useContext","useRef","useMemo","useCallback","useEffect","__experimentalHStack","HStack","Button","funnel","__","_x","FilterSummary","default","AddFilter","AddFilterMenu","ResetFilters","DataViewsContext","sanitizeOperators","ALL_OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","useFilters","fields","view","filters","forEach","field","elements","length","operators","isPrimary","filterBy","push","id","name","label","singleSelection","some","op","includes","isVisible","f","operator","sort","a","b","localeCompare","FiltersToggle","onChangeView","setOpenedFilter","isShowingFilter","setIsShowingFilter","buttonRef","onChangeViewWithFilterVisibility","_view","visibleFilters","filter","hasVisibleFilters","addFilterButtonProps","isPressed","toggleFiltersButtonProps","onClick","buttonComponent","ref","className","size","icon","children","trigger","FilterVisibilityToggle","filtersCount","current","focus","Filters","openedFilter","addFilterRef","addFilter","filterComponents","map","justify","style","width","wrap"],"sources":["@wordpress/dataviews/src/components/dataviews-filters/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tmemo,\n\tuseContext,\n\tuseRef,\n\tuseMemo,\n\tuseCallback,\n\tuseEffect,\n} from '@wordpress/element';\nimport { __experimentalHStack as HStack, Button } from '@wordpress/components';\nimport { funnel } from '@wordpress/icons';\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport FilterSummary from './filter-summary';\nimport { default as AddFilter, AddFilterMenu } from './add-filter';\nimport ResetFilters from './reset-filters';\nimport DataViewsContext from '../dataviews-context';\nimport { sanitizeOperators } from '../../utils';\nimport { ALL_OPERATORS, OPERATOR_IS, OPERATOR_IS_NOT } from '../../constants';\nimport type { NormalizedFilter, NormalizedField, View } from '../../types';\n\nexport function useFilters( fields: NormalizedField< any >[], view: View ) {\n\treturn useMemo( () => {\n\t\tconst filters: NormalizedFilter[] = [];\n\t\tfields.forEach( ( field ) => {\n\t\t\tif ( ! field.elements?.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst operators = sanitizeOperators( field );\n\t\t\tif ( operators.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isPrimary = !! field.filterBy?.isPrimary;\n\t\t\tfilters.push( {\n\t\t\t\tfield: field.id,\n\t\t\t\tname: field.label,\n\t\t\t\telements: field.elements,\n\t\t\t\tsingleSelection: operators.some( ( op ) =>\n\t\t\t\t\t[ OPERATOR_IS, OPERATOR_IS_NOT ].includes( op )\n\t\t\t\t),\n\t\t\t\toperators,\n\t\t\t\tisVisible:\n\t\t\t\t\tisPrimary ||\n\t\t\t\t\t!! view.filters?.some(\n\t\t\t\t\t\t( f ) =>\n\t\t\t\t\t\t\tf.field === field.id &&\n\t\t\t\t\t\t\tALL_OPERATORS.includes( f.operator )\n\t\t\t\t\t),\n\t\t\t\tisPrimary,\n\t\t\t} );\n\t\t} );\n\t\t// Sort filters by primary property. We need the primary filters to be first.\n\t\t// Then we sort by name.\n\t\tfilters.sort( ( a, b ) => {\n\t\t\tif ( a.isPrimary && ! b.isPrimary ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( ! a.isPrimary && b.isPrimary ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn a.name.localeCompare( b.name );\n\t\t} );\n\t\treturn filters;\n\t}, [ fields, view ] );\n}\n\nexport function FiltersToggle( {\n\tfilters,\n\tview,\n\tonChangeView,\n\tsetOpenedFilter,\n\tisShowingFilter,\n\tsetIsShowingFilter,\n}: {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsetOpenedFilter: ( filter: string | null ) => void;\n\tisShowingFilter: boolean;\n\tsetIsShowingFilter: React.Dispatch< React.SetStateAction< boolean > >;\n} ) {\n\tconst buttonRef = useRef< HTMLButtonElement >( null );\n\tconst onChangeViewWithFilterVisibility = useCallback(\n\t\t( _view: View ) => {\n\t\t\tonChangeView( _view );\n\t\t\tsetIsShowingFilter( true );\n\t\t},\n\t\t[ onChangeView, setIsShowingFilter ]\n\t);\n\tconst visibleFilters = filters.filter( ( filter ) => filter.isVisible );\n\n\tconst hasVisibleFilters = !! visibleFilters.length;\n\tif ( filters.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst addFilterButtonProps = {\n\t\tlabel: __( 'Add filter' ),\n\t\t'aria-expanded': false,\n\t\tisPressed: false,\n\t};\n\tconst toggleFiltersButtonProps = {\n\t\tlabel: _x( 'Filter', 'verb' ),\n\t\t'aria-expanded': isShowingFilter,\n\t\tisPressed: isShowingFilter,\n\t\tonClick: () => {\n\t\t\tif ( ! isShowingFilter ) {\n\t\t\t\tsetOpenedFilter( null );\n\t\t\t}\n\t\t\tsetIsShowingFilter( ! isShowingFilter );\n\t\t},\n\t};\n\tconst buttonComponent = (\n\t\t<Button\n\t\t\tref={ buttonRef }\n\t\t\tclassName=\"dataviews-filters__visibility-toggle\"\n\t\t\tsize=\"compact\"\n\t\t\ticon={ funnel }\n\t\t\t{ ...( hasVisibleFilters\n\t\t\t\t? toggleFiltersButtonProps\n\t\t\t\t: addFilterButtonProps ) }\n\t\t/>\n\t);\n\treturn (\n\t\t<div className=\"dataviews-filters__container-visibility-toggle\">\n\t\t\t{ ! hasVisibleFilters ? (\n\t\t\t\t<AddFilterMenu\n\t\t\t\t\tfilters={ filters }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeViewWithFilterVisibility }\n\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\ttrigger={ buttonComponent }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<FilterVisibilityToggle\n\t\t\t\t\tbuttonRef={ buttonRef }\n\t\t\t\t\tfiltersCount={ view.filters?.length }\n\t\t\t\t>\n\t\t\t\t\t{ buttonComponent }\n\t\t\t\t</FilterVisibilityToggle>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction FilterVisibilityToggle( {\n\tbuttonRef,\n\tfiltersCount,\n\tchildren,\n}: {\n\tbuttonRef: React.RefObject< HTMLButtonElement >;\n\tfiltersCount?: number;\n\tchildren: React.ReactNode;\n} ) {\n\t// Focus the `add filter` button when unmounts.\n\tuseEffect(\n\t\t() => () => {\n\t\t\tbuttonRef.current?.focus();\n\t\t},\n\t\t[ buttonRef ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ children }\n\t\t\t{ !! filtersCount && (\n\t\t\t\t<span className=\"dataviews-filters-toggle__count\">\n\t\t\t\t\t{ filtersCount }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction Filters() {\n\tconst { fields, view, onChangeView, openedFilter, setOpenedFilter } =\n\t\tuseContext( DataViewsContext );\n\tconst addFilterRef = useRef< HTMLButtonElement >( null );\n\tconst filters = useFilters( fields, view );\n\tconst addFilter = (\n\t\t<AddFilter\n\t\t\tkey=\"add-filter\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tref={ addFilterRef }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t/>\n\t);\n\tconst visibleFilters = filters.filter( ( filter ) => filter.isVisible );\n\tif ( visibleFilters.length === 0 ) {\n\t\treturn null;\n\t}\n\tconst filterComponents = [\n\t\t...visibleFilters.map( ( filter ) => {\n\t\t\treturn (\n\t\t\t\t<FilterSummary\n\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\tfilter={ filter }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\taddFilterRef={ addFilterRef }\n\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t/>\n\t\t\t);\n\t\t} ),\n\t\taddFilter,\n\t];\n\n\tfilterComponents.push(\n\t\t<ResetFilters\n\t\t\tkey=\"reset-filters\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t/>\n\t);\n\n\treturn (\n\t\t<HStack\n\t\t\tjustify=\"flex-start\"\n\t\t\tstyle={ { width: 'fit-content' } }\n\t\t\tclassName=\"dataviews-filters__container\"\n\t\t\twrap\n\t\t>\n\t\t\t{ filterComponents }\n\t\t</HStack>\n\t);\n}\n\nexport default memo( Filters );\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useContext","useRef","useMemo","useCallback","useEffect","__experimentalHStack","HStack","Button","funnel","__","_x","FilterSummary","default","AddFilter","AddFilterMenu","ResetFilters","DataViewsContext","sanitizeOperators","ALL_OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","useFilters","fields","view","filters","forEach","field","elements","length","operators","isPrimary","filterBy","push","id","name","label","singleSelection","some","op","includes","isVisible","f","operator","sort","a","b","localeCompare","FiltersToggle","onChangeView","setOpenedFilter","isShowingFilter","setIsShowingFilter","buttonRef","onChangeViewWithFilterVisibility","_view","visibleFilters","filter","hasVisibleFilters","addFilterButtonProps","isPressed","toggleFiltersButtonProps","onClick","buttonComponent","ref","className","size","icon","children","triggerProps","render","FilterVisibilityToggle","filtersCount","current","focus","Filters","openedFilter","addFilterRef","addFilter","filterComponents","map","justify","style","width","wrap"],"sources":["@wordpress/dataviews/src/components/dataviews-filters/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tmemo,\n\tuseContext,\n\tuseRef,\n\tuseMemo,\n\tuseCallback,\n\tuseEffect,\n} from '@wordpress/element';\nimport { __experimentalHStack as HStack, Button } from '@wordpress/components';\nimport { funnel } from '@wordpress/icons';\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport FilterSummary from './filter-summary';\nimport { default as AddFilter, AddFilterMenu } from './add-filter';\nimport ResetFilters from './reset-filters';\nimport DataViewsContext from '../dataviews-context';\nimport { sanitizeOperators } from '../../utils';\nimport { ALL_OPERATORS, OPERATOR_IS, OPERATOR_IS_NOT } from '../../constants';\nimport type { NormalizedFilter, NormalizedField, View } from '../../types';\n\nexport function useFilters( fields: NormalizedField< any >[], view: View ) {\n\treturn useMemo( () => {\n\t\tconst filters: NormalizedFilter[] = [];\n\t\tfields.forEach( ( field ) => {\n\t\t\tif ( ! field.elements?.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst operators = sanitizeOperators( field );\n\t\t\tif ( operators.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isPrimary = !! field.filterBy?.isPrimary;\n\t\t\tfilters.push( {\n\t\t\t\tfield: field.id,\n\t\t\t\tname: field.label,\n\t\t\t\telements: field.elements,\n\t\t\t\tsingleSelection: operators.some( ( op ) =>\n\t\t\t\t\t[ OPERATOR_IS, OPERATOR_IS_NOT ].includes( op )\n\t\t\t\t),\n\t\t\t\toperators,\n\t\t\t\tisVisible:\n\t\t\t\t\tisPrimary ||\n\t\t\t\t\t!! view.filters?.some(\n\t\t\t\t\t\t( f ) =>\n\t\t\t\t\t\t\tf.field === field.id &&\n\t\t\t\t\t\t\tALL_OPERATORS.includes( f.operator )\n\t\t\t\t\t),\n\t\t\t\tisPrimary,\n\t\t\t} );\n\t\t} );\n\t\t// Sort filters by primary property. We need the primary filters to be first.\n\t\t// Then we sort by name.\n\t\tfilters.sort( ( a, b ) => {\n\t\t\tif ( a.isPrimary && ! b.isPrimary ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( ! a.isPrimary && b.isPrimary ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn a.name.localeCompare( b.name );\n\t\t} );\n\t\treturn filters;\n\t}, [ fields, view ] );\n}\n\nexport function FiltersToggle( {\n\tfilters,\n\tview,\n\tonChangeView,\n\tsetOpenedFilter,\n\tisShowingFilter,\n\tsetIsShowingFilter,\n}: {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsetOpenedFilter: ( filter: string | null ) => void;\n\tisShowingFilter: boolean;\n\tsetIsShowingFilter: React.Dispatch< React.SetStateAction< boolean > >;\n} ) {\n\tconst buttonRef = useRef< HTMLButtonElement >( null );\n\tconst onChangeViewWithFilterVisibility = useCallback(\n\t\t( _view: View ) => {\n\t\t\tonChangeView( _view );\n\t\t\tsetIsShowingFilter( true );\n\t\t},\n\t\t[ onChangeView, setIsShowingFilter ]\n\t);\n\tconst visibleFilters = filters.filter( ( filter ) => filter.isVisible );\n\n\tconst hasVisibleFilters = !! visibleFilters.length;\n\tif ( filters.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst addFilterButtonProps = {\n\t\tlabel: __( 'Add filter' ),\n\t\t'aria-expanded': false,\n\t\tisPressed: false,\n\t};\n\tconst toggleFiltersButtonProps = {\n\t\tlabel: _x( 'Filter', 'verb' ),\n\t\t'aria-expanded': isShowingFilter,\n\t\tisPressed: isShowingFilter,\n\t\tonClick: () => {\n\t\t\tif ( ! isShowingFilter ) {\n\t\t\t\tsetOpenedFilter( null );\n\t\t\t}\n\t\t\tsetIsShowingFilter( ! isShowingFilter );\n\t\t},\n\t};\n\tconst buttonComponent = (\n\t\t<Button\n\t\t\tref={ buttonRef }\n\t\t\tclassName=\"dataviews-filters__visibility-toggle\"\n\t\t\tsize=\"compact\"\n\t\t\ticon={ funnel }\n\t\t\t{ ...( hasVisibleFilters\n\t\t\t\t? toggleFiltersButtonProps\n\t\t\t\t: addFilterButtonProps ) }\n\t\t/>\n\t);\n\treturn (\n\t\t<div className=\"dataviews-filters__container-visibility-toggle\">\n\t\t\t{ ! hasVisibleFilters ? (\n\t\t\t\t<AddFilterMenu\n\t\t\t\t\tfilters={ filters }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeViewWithFilterVisibility }\n\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\ttriggerProps={ { render: buttonComponent } }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<FilterVisibilityToggle\n\t\t\t\t\tbuttonRef={ buttonRef }\n\t\t\t\t\tfiltersCount={ view.filters?.length }\n\t\t\t\t>\n\t\t\t\t\t{ buttonComponent }\n\t\t\t\t</FilterVisibilityToggle>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction FilterVisibilityToggle( {\n\tbuttonRef,\n\tfiltersCount,\n\tchildren,\n}: {\n\tbuttonRef: React.RefObject< HTMLButtonElement >;\n\tfiltersCount?: number;\n\tchildren: React.ReactNode;\n} ) {\n\t// Focus the `add filter` button when unmounts.\n\tuseEffect(\n\t\t() => () => {\n\t\t\tbuttonRef.current?.focus();\n\t\t},\n\t\t[ buttonRef ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ children }\n\t\t\t{ !! filtersCount && (\n\t\t\t\t<span className=\"dataviews-filters-toggle__count\">\n\t\t\t\t\t{ filtersCount }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction Filters() {\n\tconst { fields, view, onChangeView, openedFilter, setOpenedFilter } =\n\t\tuseContext( DataViewsContext );\n\tconst addFilterRef = useRef< HTMLButtonElement >( null );\n\tconst filters = useFilters( fields, view );\n\tconst addFilter = (\n\t\t<AddFilter\n\t\t\tkey=\"add-filter\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tref={ addFilterRef }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t/>\n\t);\n\tconst visibleFilters = filters.filter( ( filter ) => filter.isVisible );\n\tif ( visibleFilters.length === 0 ) {\n\t\treturn null;\n\t}\n\tconst filterComponents = [\n\t\t...visibleFilters.map( ( filter ) => {\n\t\t\treturn (\n\t\t\t\t<FilterSummary\n\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\tfilter={ filter }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\taddFilterRef={ addFilterRef }\n\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t/>\n\t\t\t);\n\t\t} ),\n\t\taddFilter,\n\t];\n\n\tfilterComponents.push(\n\t\t<ResetFilters\n\t\t\tkey=\"reset-filters\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t/>\n\t);\n\n\treturn (\n\t\t<HStack\n\t\t\tjustify=\"flex-start\"\n\t\t\tstyle={ { width: 'fit-content' } }\n\t\t\tclassName=\"dataviews-filters__container\"\n\t\t\twrap\n\t\t>\n\t\t\t{ filterComponents }\n\t\t</HStack>\n\t);\n}\n\nexport default memo( Filters );\n"],"mappings":"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","ignoreList":[]}
@@ -30,6 +30,8 @@ function ButtonTrigger({
30
30
  return /*#__PURE__*/_jsx(Button, {
31
31
  label: label,
32
32
  icon: action.icon,
33
+ disabled: !!action.disabled,
34
+ accessibleWhenDisabled: true,
33
35
  isDestructive: action.isDestructive,
34
36
  size: "compact",
35
37
  onClick: onClick
@@ -42,6 +44,7 @@ function MenuItemTrigger({
42
44
  }) {
43
45
  const label = typeof action.label === 'string' ? action.label : action.label(items);
44
46
  return /*#__PURE__*/_jsx(Menu.Item, {
47
+ disabled: action.disabled,
45
48
  onClick: onClick,
46
49
  children: /*#__PURE__*/_jsx(Menu.ItemLabel, {
47
50
  children: label
@@ -89,9 +92,6 @@ export function ActionsMenuGroup({
89
92
  }, action.id))
90
93
  });
91
94
  }
92
- function hasOnlyOneActionAndIsPrimary(primaryActions, actions) {
93
- return primaryActions.length === 1 && actions.length === 1;
94
- }
95
95
  export default function ItemActions({
96
96
  item,
97
97
  actions,
@@ -119,7 +119,9 @@ export default function ItemActions({
119
119
  registry: registry
120
120
  });
121
121
  }
122
- if (hasOnlyOneActionAndIsPrimary(primaryActions, actions)) {
122
+
123
+ // If all actions are primary, there is no need to render the dropdown.
124
+ if (primaryActions.length === eligibleActions.length) {
123
125
  return /*#__PURE__*/_jsx(PrimaryActions, {
124
126
  item: item,
125
127
  actions: primaryActions,
@@ -153,22 +155,25 @@ function CompactItemActions({
153
155
  }) {
154
156
  const [activeModalAction, setActiveModalAction] = useState(null);
155
157
  return /*#__PURE__*/_jsxs(_Fragment, {
156
- children: [/*#__PURE__*/_jsx(Menu, {
157
- trigger: /*#__PURE__*/_jsx(Button, {
158
- size: isSmall ? 'small' : 'compact',
159
- icon: moreVertical,
160
- label: __('Actions'),
161
- accessibleWhenDisabled: true,
162
- disabled: !actions.length,
163
- className: "dataviews-all-actions-button"
164
- }),
158
+ children: [/*#__PURE__*/_jsxs(Menu, {
165
159
  placement: "bottom-end",
166
- children: /*#__PURE__*/_jsx(ActionsMenuGroup, {
167
- actions: actions,
168
- item: item,
169
- registry: registry,
170
- setActiveModalAction: setActiveModalAction
171
- })
160
+ children: [/*#__PURE__*/_jsx(Menu.TriggerButton, {
161
+ render: /*#__PURE__*/_jsx(Button, {
162
+ size: isSmall ? 'small' : 'compact',
163
+ icon: moreVertical,
164
+ label: __('Actions'),
165
+ accessibleWhenDisabled: true,
166
+ disabled: !actions.length,
167
+ className: "dataviews-all-actions-button"
168
+ })
169
+ }), /*#__PURE__*/_jsx(Menu.Popover, {
170
+ children: /*#__PURE__*/_jsx(ActionsMenuGroup, {
171
+ actions: actions,
172
+ item: item,
173
+ registry: registry,
174
+ setActiveModalAction: setActiveModalAction
175
+ })
176
+ })]
172
177
  }), !!activeModalAction && /*#__PURE__*/_jsx(ActionModal, {
173
178
  action: activeModalAction,
174
179
  items: [item],