@wordpress/dataviews 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +47 -7
  3. package/build/components/dataviews/index.js +3 -5
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-bulk-actions/index.js +145 -141
  6. package/build/components/dataviews-bulk-actions/index.js.map +1 -1
  7. package/build/components/dataviews-filters/add-filter.js +4 -6
  8. package/build/components/dataviews-filters/add-filter.js.map +1 -1
  9. package/build/components/dataviews-filters/search-widget.js +28 -18
  10. package/build/components/dataviews-filters/search-widget.js.map +1 -1
  11. package/build/components/dataviews-footer/index.js +45 -0
  12. package/build/components/dataviews-footer/index.js.map +1 -0
  13. package/build/components/dataviews-item-actions/index.js +5 -8
  14. package/build/components/dataviews-item-actions/index.js.map +1 -1
  15. package/build/components/dataviews-pagination/index.js +4 -4
  16. package/build/components/dataviews-pagination/index.js.map +1 -1
  17. package/build/components/dataviews-view-config/index.js +171 -32
  18. package/build/components/dataviews-view-config/index.js.map +1 -1
  19. package/build/dataforms-layouts/panel/index.js +4 -1
  20. package/build/dataforms-layouts/panel/index.js.map +1 -1
  21. package/build/dataviews-layouts/index.js +48 -2
  22. package/build/dataviews-layouts/index.js.map +1 -1
  23. package/build/dataviews-layouts/list/index.js +124 -84
  24. package/build/dataviews-layouts/list/index.js.map +1 -1
  25. package/build/dataviews-layouts/table/column-header-menu.js +52 -54
  26. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  27. package/build/dataviews-layouts/table/index.js +7 -35
  28. package/build/dataviews-layouts/table/index.js.map +1 -1
  29. package/build/normalize-fields.js +4 -2
  30. package/build/normalize-fields.js.map +1 -1
  31. package/build/types.js.map +1 -1
  32. package/build-module/components/dataviews/index.js +3 -5
  33. package/build-module/components/dataviews/index.js.map +1 -1
  34. package/build-module/components/dataviews-bulk-actions/index.js +145 -143
  35. package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
  36. package/build-module/components/dataviews-filters/add-filter.js +4 -6
  37. package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
  38. package/build-module/components/dataviews-filters/search-widget.js +28 -18
  39. package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
  40. package/build-module/components/dataviews-footer/index.js +38 -0
  41. package/build-module/components/dataviews-footer/index.js.map +1 -0
  42. package/build-module/components/dataviews-item-actions/index.js +5 -8
  43. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  44. package/build-module/components/dataviews-pagination/index.js +5 -5
  45. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  46. package/build-module/components/dataviews-view-config/index.js +177 -38
  47. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  48. package/build-module/dataforms-layouts/panel/index.js +4 -1
  49. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  50. package/build-module/dataviews-layouts/index.js +45 -1
  51. package/build-module/dataviews-layouts/index.js.map +1 -1
  52. package/build-module/dataviews-layouts/list/index.js +125 -83
  53. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  54. package/build-module/dataviews-layouts/table/column-header-menu.js +52 -54
  55. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  56. package/build-module/dataviews-layouts/table/index.js +9 -37
  57. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  58. package/build-module/normalize-fields.js +4 -2
  59. package/build-module/normalize-fields.js.map +1 -1
  60. package/build-module/types.js.map +1 -1
  61. package/build-style/style-rtl.css +79 -63
  62. package/build-style/style.css +79 -63
  63. package/build-types/components/dataviews/index.d.ts.map +1 -1
  64. package/build-types/components/dataviews/stories/fixtures.d.ts +27 -131
  65. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  66. package/build-types/components/dataviews/stories/index.story.d.ts +12 -53
  67. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  68. package/build-types/components/dataviews-bulk-actions/index.d.ts +11 -1
  69. package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
  70. package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
  71. package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
  72. package/build-types/components/dataviews-footer/index.d.ts +2 -0
  73. package/build-types/components/dataviews-footer/index.d.ts.map +1 -0
  74. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  75. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  76. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  77. package/build-types/dataviews-layouts/index.d.ts +4 -2
  78. package/build-types/dataviews-layouts/index.d.ts.map +1 -1
  79. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  80. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  81. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  82. package/build-types/normalize-fields.d.ts.map +1 -1
  83. package/build-types/types.d.ts +2 -0
  84. package/build-types/types.d.ts.map +1 -1
  85. package/package.json +11 -11
  86. package/src/components/dataviews/index.tsx +2 -6
  87. package/src/components/dataviews/stories/fixtures.tsx +690 -0
  88. package/src/components/dataviews/stories/index.story.tsx +164 -0
  89. package/src/components/dataviews/style.scss +2 -0
  90. package/src/components/dataviews-bulk-actions/index.tsx +264 -213
  91. package/src/components/dataviews-bulk-actions/style.scss +9 -4
  92. package/src/components/dataviews-filters/add-filter.tsx +7 -11
  93. package/src/components/dataviews-filters/search-widget.tsx +45 -17
  94. package/src/components/dataviews-filters/style.scss +12 -2
  95. package/src/components/dataviews-footer/index.tsx +50 -0
  96. package/src/components/dataviews-footer/style.scss +40 -0
  97. package/src/components/dataviews-item-actions/index.tsx +8 -14
  98. package/src/components/dataviews-pagination/index.tsx +5 -5
  99. package/src/components/dataviews-pagination/style.scss +0 -19
  100. package/src/components/dataviews-view-config/index.tsx +252 -53
  101. package/src/components/dataviews-view-config/style.scss +25 -0
  102. package/src/dataforms-layouts/panel/index.tsx +2 -0
  103. package/src/dataviews-layouts/grid/style.scss +1 -1
  104. package/src/dataviews-layouts/index.ts +63 -2
  105. package/src/dataviews-layouts/list/index.tsx +199 -127
  106. package/src/dataviews-layouts/list/style.scss +10 -4
  107. package/src/dataviews-layouts/table/column-header-menu.tsx +85 -87
  108. package/src/dataviews-layouts/table/index.tsx +8 -65
  109. package/src/dataviews-layouts/table/style.scss +0 -5
  110. package/src/normalize-fields.ts +2 -0
  111. package/src/style.scss +1 -1
  112. package/src/types.ts +2 -0
  113. package/tsconfig.tsbuildinfo +1 -1
  114. package/build/components/dataviews-bulk-actions-toolbar/index.js +0 -207
  115. package/build/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
  116. package/build-module/components/dataviews-bulk-actions-toolbar/index.js +0 -201
  117. package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
  118. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +0 -2
  119. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +0 -1
  120. package/src/components/dataviews/stories/fixtures.js +0 -250
  121. package/src/components/dataviews/stories/index.story.js +0 -71
  122. package/src/components/dataviews-bulk-actions-toolbar/index.tsx +0 -288
  123. package/src/components/dataviews-bulk-actions-toolbar/style.scss +0 -45
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__","CheckboxControl","Spinner","__experimentalHStack","HStack","__experimentalVStack","VStack","useEffect","useId","useRef","useState","useMemo","SingleSelectionCheckbox","ItemActions","sortValues","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","ColumnHeaderMenu","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","BulkSelectionCheckbox","selection","onChangeSelection","data","actions","getItemId","selectableItems","filter","item","some","action","supportsBulk","isEligible","selectedItems","includes","areAllSelected","length","className","__nextHasNoMarginBottom","checked","indeterminate","onChange","map","TableColumn","column","fields","view","props","field","find","f","id","TableColumnField","combinedField","layout","combinedFields","TableColumnCombined","primaryField","children","render","child","direction","spacing","TableRow","hasBulkActions","hasPossibleBulkAction","isSelected","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","isTouchDevice","columns","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","itemId","style","width","disabled","_view$layout$styles$c","maxWidth","minWidth","styles","e","stopPropagation","ViewTable","isLoading","onChangeView","setOpenedFilter","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","undefined","tableNoticeId","onHide","hidden","get","fallback","node","hasData","scope","index","_view$layout$styles$c2","sort","ref","set","delete","fieldId","toString"],"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 {\n\tCheckboxControl,\n\tSpinner,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport {\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n\tuseMemo,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SingleSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport ItemActions from '../../components/dataviews-item-actions';\nimport { sortValues } from '../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n} from '../../components/dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n\tCombinedField,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\n\ninterface BulkSelectionCheckboxProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\ninterface TableColumnFieldProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfield: NormalizedField< Item >;\n\titem: Item;\n}\n\ninterface TableColumnCombinedProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfields: NormalizedField< Item >[];\n\tfield: CombinedField;\n\titem: Item;\n\tview: ViewTableType;\n}\n\ninterface TableColumnProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfields: NormalizedField< Item >[];\n\titem: Item;\n\tcolumn: string;\n\tview: ViewTableType;\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\tprimaryField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n}\n\nfunction BulkSelectionCheckbox< Item >( {\n\tselection,\n\tonChangeSelection,\n\tdata,\n\tactions,\n\tgetItemId,\n}: BulkSelectionCheckboxProps< Item > ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) =>\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst selectedItems = data.filter(\n\t\t( item ) =>\n\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\tselectableItems.includes( item )\n\t);\n\tconst areAllSelected = selectedItems.length === selectableItems.length;\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\tonChangeSelection( [] );\n\t\t\t\t} else {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselectableItems.map( ( item ) => getItemId( item ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction TableColumn< Item >( {\n\tcolumn,\n\tfields,\n\tview,\n\t...props\n}: TableColumnProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\tif ( !! field ) {\n\t\treturn <TableColumnField { ...props } field={ field } />;\n\t}\n\tconst combinedField = view.layout?.combinedFields?.find(\n\t\t( f ) => f.id === column\n\t);\n\tif ( !! combinedField ) {\n\t\treturn (\n\t\t\t<TableColumnCombined\n\t\t\t\t{ ...props }\n\t\t\t\tfields={ fields }\n\t\t\t\tview={ view }\n\t\t\t\tfield={ combinedField }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nfunction TableColumnField< Item >( {\n\tprimaryField,\n\titem,\n\tfield,\n}: TableColumnFieldProps< Item > ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\tprimaryField?.id === field.id,\n\t\t\t} ) }\n\t\t>\n\t\t\t<field.render { ...{ item } } />\n\t\t</div>\n\t);\n}\n\nfunction TableColumnCombined< Item >( {\n\tfield,\n\t...props\n}: TableColumnCombinedProps< Item > ) {\n\tconst children = field.children.map( ( child ) => (\n\t\t<TableColumn key={ child } { ...props } column={ child } />\n\t) );\n\n\tif ( field.direction === 'horizontal' ) {\n\t\treturn <HStack spacing={ 3 }>{ children }</HStack>;\n\t}\n\treturn <VStack spacing={ 0 }>{ children }</VStack>;\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\tprimaryField,\n\tselection,\n\tgetItemId,\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\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 isTouchDevice = useRef( false );\n\tconst columns = view.fields || fields.map( ( f ) => f.id );\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\tisTouchDevice.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! isTouchDevice.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<SingleSelectionCheckbox\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\tprimaryField={ primaryField }\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{ 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<TableColumn\n\t\t\t\t\t\t\tprimaryField={ primaryField }\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\tview={ view }\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\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 columns = view.fields || fields.map( ( f ) => f.id );\n\tconst hasData = !! data?.length;\n\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName=\"dataviews-view-table\"\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{ 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?.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={ ( node ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( node ) {\n\t\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.set(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfallback:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumns[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex > 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.delete(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\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\tprimaryField={ primaryField }\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/>\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","__","Spinner","__experimentalHStack","HStack","__experimentalVStack","VStack","useEffect","useId","useRef","useState","SingleSelectionCheckbox","ItemActions","sortValues","useSomeItemHasAPossibleBulkAction","useHasAPossibleBulkAction","BulkSelectionCheckbox","ColumnHeaderMenu","getVisibleFieldIds","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TableColumn","column","fields","view","props","field","find","f","id","TableColumnField","combinedField","layout","combinedFields","TableColumnCombined","primaryField","item","className","children","render","map","child","direction","spacing","TableRow","hasBulkActions","actions","selection","getItemId","onChangeSelection","hasPossibleBulkAction","isSelected","includes","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","isTouchDeviceRef","columns","onMouseEnter","onMouseLeave","onTouchStart","current","onClick","document","getSelection","type","filter","itemId","style","width","disabled","_view$layout$styles$c","maxWidth","minWidth","styles","length","e","stopPropagation","ViewTable","data","isLoading","onChangeView","setOpenedFilter","headerMenuRefs","Map","headerMenuToFocusRef","nextHeaderMenuToFocus","setNextHeaderMenuToFocus","focus","undefined","tableNoticeId","onHide","hidden","get","fallback","node","hasData","scope","index","_view$layout$styles$c2","sort","ref","set","delete","fieldId","toString"],"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 {\n\tSpinner,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useEffect, useId, useRef, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SingleSelectionCheckbox 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\tCombinedField,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport ColumnHeaderMenu from './column-header-menu';\nimport { getVisibleFieldIds } from '../index';\n\ninterface TableColumnFieldProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfield: NormalizedField< Item >;\n\titem: Item;\n}\n\ninterface TableColumnCombinedProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfields: NormalizedField< Item >[];\n\tfield: CombinedField;\n\titem: Item;\n\tview: ViewTableType;\n}\n\ninterface TableColumnProps< Item > {\n\tprimaryField?: NormalizedField< Item >;\n\tfields: NormalizedField< Item >[];\n\titem: Item;\n\tcolumn: string;\n\tview: ViewTableType;\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\tprimaryField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n}\n\nfunction TableColumn< Item >( {\n\tcolumn,\n\tfields,\n\tview,\n\t...props\n}: TableColumnProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\tif ( !! field ) {\n\t\treturn <TableColumnField { ...props } field={ field } />;\n\t}\n\tconst combinedField = view.layout?.combinedFields?.find(\n\t\t( f ) => f.id === column\n\t);\n\tif ( !! combinedField ) {\n\t\treturn (\n\t\t\t<TableColumnCombined\n\t\t\t\t{ ...props }\n\t\t\t\tfields={ fields }\n\t\t\t\tview={ view }\n\t\t\t\tfield={ combinedField }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nfunction TableColumnField< Item >( {\n\tprimaryField,\n\titem,\n\tfield,\n}: TableColumnFieldProps< Item > ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t\t\t'dataviews-view-table__primary-field':\n\t\t\t\t\tprimaryField?.id === field.id,\n\t\t\t} ) }\n\t\t>\n\t\t\t<field.render { ...{ item } } />\n\t\t</div>\n\t);\n}\n\nfunction TableColumnCombined< Item >( {\n\tfield,\n\t...props\n}: TableColumnCombinedProps< Item > ) {\n\tconst children = field.children.map( ( child ) => (\n\t\t<TableColumn key={ child } { ...props } column={ child } />\n\t) );\n\n\tif ( field.direction === 'horizontal' ) {\n\t\treturn <HStack spacing={ 3 }>{ children }</HStack>;\n\t}\n\treturn <VStack spacing={ 0 }>{ children }</VStack>;\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\tprimaryField,\n\tselection,\n\tgetItemId,\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\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 = getVisibleFieldIds( view, fields );\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<SingleSelectionCheckbox\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\tprimaryField={ primaryField }\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{ 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<TableColumn\n\t\t\t\t\t\t\tprimaryField={ primaryField }\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\tview={ view }\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\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 columns = getVisibleFieldIds( view, fields );\n\tconst hasData = !! data?.length;\n\n\tconst primaryField = fields.find(\n\t\t( field ) => field.id === view.layout?.primaryField\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName=\"dataviews-view-table\"\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{ 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?.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={ ( node ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( node ) {\n\t\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.set(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfallback:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumns[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex > 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\theaderMenuRefs.current.delete(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\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\tprimaryField={ primaryField }\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/>\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":[]}
@@ -12,7 +12,7 @@ import { getControl } from './dataform-controls';
12
12
  */
13
13
  export function normalizeFields(fields) {
14
14
  return fields.map(field => {
15
- var _field$sort, _field$isValid;
15
+ var _field$sort, _field$isValid, _field$enableHiding, _field$enableSorting;
16
16
  const fieldTypeDefinition = getFieldTypeDefinition(field.type);
17
17
  const getValue = field.getValue || (({
18
18
  item
@@ -49,7 +49,9 @@ export function normalizeFields(fields) {
49
49
  render,
50
50
  sort,
51
51
  isValid,
52
- Edit
52
+ Edit,
53
+ enableHiding: (_field$enableHiding = field.enableHiding) !== null && _field$enableHiding !== void 0 ? _field$enableHiding : true,
54
+ enableSorting: (_field$enableSorting = field.enableSorting) !== null && _field$enableSorting !== void 0 ? _field$enableSorting : true
53
55
  };
54
56
  });
55
57
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getFieldTypeDefinition","getControl","normalizeFields","fields","map","field","_field$sort","_field$isValid","fieldTypeDefinition","type","getValue","item","id","sort","a","b","direction","isValid","context","Edit","renderFromElements","value","elements","find","element","label","render","header"],"sources":["@wordpress/dataviews/src/normalize-fields.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport getFieldTypeDefinition from './field-types';\nimport type { Field, NormalizedField } from './types';\nimport { getControl } from './dataform-controls';\n\n/**\n * Apply default values and normalize the fields config.\n *\n * @param fields Fields config.\n * @return Normalized fields config.\n */\nexport function normalizeFields< Item >(\n\tfields: Field< Item >[]\n): NormalizedField< Item >[] {\n\treturn fields.map( ( field ) => {\n\t\tconst fieldTypeDefinition = getFieldTypeDefinition( field.type );\n\n\t\tconst getValue =\n\t\t\tfield.getValue || ( ( { item } ) => ( item as any )[ field.id ] );\n\n\t\tconst sort =\n\t\t\tfield.sort ??\n\t\t\tfunction sort( a, b, direction ) {\n\t\t\t\treturn fieldTypeDefinition.sort(\n\t\t\t\t\tgetValue( { item: a } ),\n\t\t\t\t\tgetValue( { item: b } ),\n\t\t\t\t\tdirection\n\t\t\t\t);\n\t\t\t};\n\n\t\tconst isValid =\n\t\t\tfield.isValid ??\n\t\t\tfunction isValid( item, context ) {\n\t\t\t\treturn fieldTypeDefinition.isValid(\n\t\t\t\t\tgetValue( { item } ),\n\t\t\t\t\tcontext\n\t\t\t\t);\n\t\t\t};\n\n\t\tconst Edit = getControl( field, fieldTypeDefinition );\n\n\t\tconst renderFromElements = ( { item }: { item: Item } ) => {\n\t\t\tconst value = getValue( { item } );\n\t\t\treturn (\n\t\t\t\tfield?.elements?.find( ( element ) => element.value === value )\n\t\t\t\t\t?.label || getValue( { item } )\n\t\t\t);\n\t\t};\n\n\t\tconst render =\n\t\t\tfield.render || ( field.elements ? renderFromElements : getValue );\n\n\t\treturn {\n\t\t\t...field,\n\t\t\tlabel: field.label || field.id,\n\t\t\theader: field.header || field.label || field.id,\n\t\t\tgetValue,\n\t\t\trender,\n\t\t\tsort,\n\t\t\tisValid,\n\t\t\tEdit,\n\t\t};\n\t} );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,sBAAsB,MAAM,eAAe;AAElD,SAASC,UAAU,QAAQ,qBAAqB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAC9BC,MAAuB,EACK;EAC5B,OAAOA,MAAM,CAACC,GAAG,CAAIC,KAAK,IAAM;IAAA,IAAAC,WAAA,EAAAC,cAAA;IAC/B,MAAMC,mBAAmB,GAAGR,sBAAsB,CAAEK,KAAK,CAACI,IAAK,CAAC;IAEhE,MAAMC,QAAQ,GACbL,KAAK,CAACK,QAAQ,KAAM,CAAE;MAAEC;IAAK,CAAC,KAAQA,IAAI,CAAWN,KAAK,CAACO,EAAE,CAAE,CAAE;IAElE,MAAMC,IAAI,IAAAP,WAAA,GACTD,KAAK,CAACQ,IAAI,cAAAP,WAAA,cAAAA,WAAA,GACV,SAASO,IAAIA,CAAEC,CAAC,EAAEC,CAAC,EAAEC,SAAS,EAAG;MAChC,OAAOR,mBAAmB,CAACK,IAAI,CAC9BH,QAAQ,CAAE;QAAEC,IAAI,EAAEG;MAAE,CAAE,CAAC,EACvBJ,QAAQ,CAAE;QAAEC,IAAI,EAAEI;MAAE,CAAE,CAAC,EACvBC,SACD,CAAC;IACF,CAAC;IAEF,MAAMC,OAAO,IAAAV,cAAA,GACZF,KAAK,CAACY,OAAO,cAAAV,cAAA,cAAAA,cAAA,GACb,SAASU,OAAOA,CAAEN,IAAI,EAAEO,OAAO,EAAG;MACjC,OAAOV,mBAAmB,CAACS,OAAO,CACjCP,QAAQ,CAAE;QAAEC;MAAK,CAAE,CAAC,EACpBO,OACD,CAAC;IACF,CAAC;IAEF,MAAMC,IAAI,GAAGlB,UAAU,CAAEI,KAAK,EAAEG,mBAAoB,CAAC;IAErD,MAAMY,kBAAkB,GAAGA,CAAE;MAAET;IAAqB,CAAC,KAAM;MAC1D,MAAMU,KAAK,GAAGX,QAAQ,CAAE;QAAEC;MAAK,CAAE,CAAC;MAClC,OACCN,KAAK,EAAEiB,QAAQ,EAAEC,IAAI,CAAIC,OAAO,IAAMA,OAAO,CAACH,KAAK,KAAKA,KAAM,CAAC,EAC5DI,KAAK,IAAIf,QAAQ,CAAE;QAAEC;MAAK,CAAE,CAAC;IAElC,CAAC;IAED,MAAMe,MAAM,GACXrB,KAAK,CAACqB,MAAM,KAAMrB,KAAK,CAACiB,QAAQ,GAAGF,kBAAkB,GAAGV,QAAQ,CAAE;IAEnE,OAAO;MACN,GAAGL,KAAK;MACRoB,KAAK,EAAEpB,KAAK,CAACoB,KAAK,IAAIpB,KAAK,CAACO,EAAE;MAC9Be,MAAM,EAAEtB,KAAK,CAACsB,MAAM,IAAItB,KAAK,CAACoB,KAAK,IAAIpB,KAAK,CAACO,EAAE;MAC/CF,QAAQ;MACRgB,MAAM;MACNb,IAAI;MACJI,OAAO;MACPE;IACD,CAAC;EACF,CAAE,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["getFieldTypeDefinition","getControl","normalizeFields","fields","map","field","_field$sort","_field$isValid","_field$enableHiding","_field$enableSorting","fieldTypeDefinition","type","getValue","item","id","sort","a","b","direction","isValid","context","Edit","renderFromElements","value","elements","find","element","label","render","header","enableHiding","enableSorting"],"sources":["@wordpress/dataviews/src/normalize-fields.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport getFieldTypeDefinition from './field-types';\nimport type { Field, NormalizedField } from './types';\nimport { getControl } from './dataform-controls';\n\n/**\n * Apply default values and normalize the fields config.\n *\n * @param fields Fields config.\n * @return Normalized fields config.\n */\nexport function normalizeFields< Item >(\n\tfields: Field< Item >[]\n): NormalizedField< Item >[] {\n\treturn fields.map( ( field ) => {\n\t\tconst fieldTypeDefinition = getFieldTypeDefinition( field.type );\n\n\t\tconst getValue =\n\t\t\tfield.getValue || ( ( { item } ) => ( item as any )[ field.id ] );\n\n\t\tconst sort =\n\t\t\tfield.sort ??\n\t\t\tfunction sort( a, b, direction ) {\n\t\t\t\treturn fieldTypeDefinition.sort(\n\t\t\t\t\tgetValue( { item: a } ),\n\t\t\t\t\tgetValue( { item: b } ),\n\t\t\t\t\tdirection\n\t\t\t\t);\n\t\t\t};\n\n\t\tconst isValid =\n\t\t\tfield.isValid ??\n\t\t\tfunction isValid( item, context ) {\n\t\t\t\treturn fieldTypeDefinition.isValid(\n\t\t\t\t\tgetValue( { item } ),\n\t\t\t\t\tcontext\n\t\t\t\t);\n\t\t\t};\n\n\t\tconst Edit = getControl( field, fieldTypeDefinition );\n\n\t\tconst renderFromElements = ( { item }: { item: Item } ) => {\n\t\t\tconst value = getValue( { item } );\n\t\t\treturn (\n\t\t\t\tfield?.elements?.find( ( element ) => element.value === value )\n\t\t\t\t\t?.label || getValue( { item } )\n\t\t\t);\n\t\t};\n\n\t\tconst render =\n\t\t\tfield.render || ( field.elements ? renderFromElements : getValue );\n\n\t\treturn {\n\t\t\t...field,\n\t\t\tlabel: field.label || field.id,\n\t\t\theader: field.header || field.label || field.id,\n\t\t\tgetValue,\n\t\t\trender,\n\t\t\tsort,\n\t\t\tisValid,\n\t\t\tEdit,\n\t\t\tenableHiding: field.enableHiding ?? true,\n\t\t\tenableSorting: field.enableSorting ?? true,\n\t\t};\n\t} );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,sBAAsB,MAAM,eAAe;AAElD,SAASC,UAAU,QAAQ,qBAAqB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAC9BC,MAAuB,EACK;EAC5B,OAAOA,MAAM,CAACC,GAAG,CAAIC,KAAK,IAAM;IAAA,IAAAC,WAAA,EAAAC,cAAA,EAAAC,mBAAA,EAAAC,oBAAA;IAC/B,MAAMC,mBAAmB,GAAGV,sBAAsB,CAAEK,KAAK,CAACM,IAAK,CAAC;IAEhE,MAAMC,QAAQ,GACbP,KAAK,CAACO,QAAQ,KAAM,CAAE;MAAEC;IAAK,CAAC,KAAQA,IAAI,CAAWR,KAAK,CAACS,EAAE,CAAE,CAAE;IAElE,MAAMC,IAAI,IAAAT,WAAA,GACTD,KAAK,CAACU,IAAI,cAAAT,WAAA,cAAAA,WAAA,GACV,SAASS,IAAIA,CAAEC,CAAC,EAAEC,CAAC,EAAEC,SAAS,EAAG;MAChC,OAAOR,mBAAmB,CAACK,IAAI,CAC9BH,QAAQ,CAAE;QAAEC,IAAI,EAAEG;MAAE,CAAE,CAAC,EACvBJ,QAAQ,CAAE;QAAEC,IAAI,EAAEI;MAAE,CAAE,CAAC,EACvBC,SACD,CAAC;IACF,CAAC;IAEF,MAAMC,OAAO,IAAAZ,cAAA,GACZF,KAAK,CAACc,OAAO,cAAAZ,cAAA,cAAAA,cAAA,GACb,SAASY,OAAOA,CAAEN,IAAI,EAAEO,OAAO,EAAG;MACjC,OAAOV,mBAAmB,CAACS,OAAO,CACjCP,QAAQ,CAAE;QAAEC;MAAK,CAAE,CAAC,EACpBO,OACD,CAAC;IACF,CAAC;IAEF,MAAMC,IAAI,GAAGpB,UAAU,CAAEI,KAAK,EAAEK,mBAAoB,CAAC;IAErD,MAAMY,kBAAkB,GAAGA,CAAE;MAAET;IAAqB,CAAC,KAAM;MAC1D,MAAMU,KAAK,GAAGX,QAAQ,CAAE;QAAEC;MAAK,CAAE,CAAC;MAClC,OACCR,KAAK,EAAEmB,QAAQ,EAAEC,IAAI,CAAIC,OAAO,IAAMA,OAAO,CAACH,KAAK,KAAKA,KAAM,CAAC,EAC5DI,KAAK,IAAIf,QAAQ,CAAE;QAAEC;MAAK,CAAE,CAAC;IAElC,CAAC;IAED,MAAMe,MAAM,GACXvB,KAAK,CAACuB,MAAM,KAAMvB,KAAK,CAACmB,QAAQ,GAAGF,kBAAkB,GAAGV,QAAQ,CAAE;IAEnE,OAAO;MACN,GAAGP,KAAK;MACRsB,KAAK,EAAEtB,KAAK,CAACsB,KAAK,IAAItB,KAAK,CAACS,EAAE;MAC9Be,MAAM,EAAExB,KAAK,CAACwB,MAAM,IAAIxB,KAAK,CAACsB,KAAK,IAAItB,KAAK,CAACS,EAAE;MAC/CF,QAAQ;MACRgB,MAAM;MACNb,IAAI;MACJI,OAAO;MACPE,IAAI;MACJS,YAAY,GAAAtB,mBAAA,GAAEH,KAAK,CAACyB,YAAY,cAAAtB,mBAAA,cAAAA,mBAAA,GAAI,IAAI;MACxCuB,aAAa,GAAAtB,oBAAA,GAAEJ,KAAK,CAAC0B,aAAa,cAAAtB,oBAAA,cAAAA,oBAAA,GAAI;IACvC,CAAC;EACF,CAAE,CAAC;AACJ","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< { item: 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 * 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< { item: Item } >;\n\tEdit: ComponentType< DataFormControlProps< Item > >;\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\tisValid: ( item: Item, context?: ValidationContext ) => 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\n/**\n * The form configuration.\n */\nexport type Form = {\n\ttype?: 'regular' | 'panel';\n\tfields?: string[];\n};\n\nexport type DataFormControlProps< Item > = {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: Record< string, any > ) => void;\n\thideLabelFromVision?: boolean;\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\nexport interface CombinedField {\n\tid: string;\n\n\tlabel: string;\n\n\theader?: string | ReactElement;\n\n\t/**\n\t * The fields to use as columns.\n\t */\n\tchildren: string[];\n\n\t/**\n\t * The direction of the stack.\n\t */\n\tdirection: 'horizontal' | 'vertical';\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 interface ViewTable extends ViewBase {\n\ttype: 'table';\n\n\tlayout?: {\n\t\t/**\n\t\t * The field to use as the primary field.\n\t\t */\n\t\tprimaryField?: string;\n\n\t\t/**\n\t\t * The fields to use as columns.\n\t\t */\n\t\tcombinedFields?: CombinedField[];\n\n\t\t/**\n\t\t * The styles for the columns.\n\t\t */\n\t\tstyles?: Record< string, ColumnStyle >;\n\t};\n}\n\nexport interface ViewList extends ViewBase {\n\ttype: 'list';\n\n\tlayout?: {\n\t\t/**\n\t\t * The field to use as the primary field.\n\t\t */\n\t\tprimaryField?: string;\n\n\t\t/**\n\t\t * The field to use as the media field.\n\t\t */\n\t\tmediaField?: string;\n\t};\n}\n\nexport interface ViewGrid extends ViewBase {\n\ttype: 'grid';\n\n\tlayout?: {\n\t\t/**\n\t\t * The field to use as the primary field.\n\t\t */\n\t\tprimaryField?: string;\n\n\t\t/**\n\t\t * The field to use as the media field.\n\t\t */\n\t\tmediaField?: string;\n\n\t\t/**\n\t\t * The fields to use as columns.\n\t\t */\n\t\tcolumnFields?: string[];\n\n\t\t/**\n\t\t * The fields to use as badge fields.\n\t\t */\n\t\tbadgeFields?: string[];\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\tview: View;\n\tdensity: number;\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 interface DataFormProps< Item > {\n\tdata: Item;\n\tfields: Field< Item >[];\n\tform: Form;\n\tonChange: ( value: Record< string, any > ) => void;\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< { item: 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 * 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< { item: 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\n/**\n * The form configuration.\n */\nexport type Form = {\n\ttype?: 'regular' | 'panel';\n\tfields?: string[];\n};\n\nexport type DataFormControlProps< Item > = {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: Record< string, any > ) => void;\n\thideLabelFromVision?: boolean;\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\nexport interface CombinedField {\n\tid: string;\n\n\tlabel: string;\n\n\theader?: string | ReactElement;\n\n\t/**\n\t * The fields to use as columns.\n\t */\n\tchildren: string[];\n\n\t/**\n\t * The direction of the stack.\n\t */\n\tdirection: 'horizontal' | 'vertical';\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 interface ViewTable extends ViewBase {\n\ttype: 'table';\n\n\tlayout?: {\n\t\t/**\n\t\t * The field to use as the primary field.\n\t\t */\n\t\tprimaryField?: string;\n\n\t\t/**\n\t\t * The fields to use as columns.\n\t\t */\n\t\tcombinedFields?: CombinedField[];\n\n\t\t/**\n\t\t * The styles for the columns.\n\t\t */\n\t\tstyles?: Record< string, ColumnStyle >;\n\t};\n}\n\nexport interface ViewList extends ViewBase {\n\ttype: 'list';\n\n\tlayout?: {\n\t\t/**\n\t\t * The field to use as the primary field.\n\t\t */\n\t\tprimaryField?: string;\n\n\t\t/**\n\t\t * The field to use as the media field.\n\t\t */\n\t\tmediaField?: string;\n\t};\n}\n\nexport interface ViewGrid extends ViewBase {\n\ttype: 'grid';\n\n\tlayout?: {\n\t\t/**\n\t\t * The field to use as the primary field.\n\t\t */\n\t\tprimaryField?: string;\n\n\t\t/**\n\t\t * The field to use as the media field.\n\t\t */\n\t\tmediaField?: string;\n\n\t\t/**\n\t\t * The fields to use as columns.\n\t\t */\n\t\tcolumnFields?: string[];\n\n\t\t/**\n\t\t * The fields to use as badge fields.\n\t\t */\n\t\tbadgeFields?: string[];\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\tview: View;\n\tdensity: number;\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 interface DataFormProps< Item > {\n\tdata: Item;\n\tfields: Field< Item >[];\n\tform: Form;\n\tonChange: ( value: Record< string, any > ) => void;\n}\n"],"mappings":"","ignoreList":[]}
@@ -116,6 +116,8 @@
116
116
  container: dataviews-wrapper/inline-size;
117
117
  display: flex;
118
118
  flex-direction: column;
119
+ font-size: 13px;
120
+ line-height: 1.4;
119
121
  }
120
122
 
121
123
  .dataviews__view-actions,
@@ -217,53 +219,16 @@
217
219
  padding-left: 24px;
218
220
  }
219
221
  }
220
- .dataviews-bulk-actions__modal {
221
- z-index: 1000001;
222
- }
223
-
224
- .dataviews-bulk-actions__edit-button.components-button {
225
- flex-shrink: 0;
222
+ .dataviews-bulk-actions-footer__item-count {
223
+ color: #1e1e1e;
224
+ font-weight: 500;
225
+ font-size: 11px;
226
+ text-transform: uppercase;
226
227
  }
227
228
 
228
- .dataviews-bulk-actions-toolbar {
229
- position: sticky;
230
- display: flex;
231
- flex-direction: column;
232
- align-content: center;
233
- flex-wrap: wrap;
234
- width: -moz-fit-content;
235
- width: fit-content;
236
- margin-right: auto;
229
+ .dataviews-bulk-actions-footer__container {
237
230
  margin-left: auto;
238
- bottom: 24px;
239
- z-index: 2;
240
- }
241
- .dataviews-bulk-actions-toolbar .components-accessible-toolbar {
242
- border-color: #ddd;
243
- box-shadow: 0 0.7px 1px rgba(0, 0, 0, 0.1), 0 1.2px 1.7px -0.2px rgba(0, 0, 0, 0.1), 0 2.3px 3.3px -0.5px rgba(0, 0, 0, 0.1);
244
- }
245
- .dataviews-bulk-actions-toolbar .components-accessible-toolbar .components-toolbar-group {
246
- border-color: #e0e0e0;
247
- }
248
- .dataviews-bulk-actions-toolbar .components-accessible-toolbar .components-toolbar-group:last-child {
249
- border: 0;
250
- }
251
- .dataviews-bulk-actions-toolbar .dataviews-bulk-actions-toolbar__selection-count {
252
- display: flex;
253
- align-items: center;
254
- margin: 0 8px 0 8px;
255
- }
256
-
257
- .dataviews-bulk-actions-toolbar__wrapper {
258
- display: flex;
259
- flex-grow: 1;
260
- width: 100%;
261
- }
262
- .dataviews-bulk-actions-toolbar__wrapper .components-toolbar-group {
263
- align-items: center;
264
- }
265
- .dataviews-bulk-actions-toolbar__wrapper .components-button.is-busy {
266
- max-height: 36px;
231
+ min-height: 32px;
267
232
  }
268
233
 
269
234
  .dataviews-filters__button {
@@ -281,11 +246,17 @@
281
246
  opacity: 1;
282
247
  }
283
248
 
249
+ .dataviews-filters__summary-popover {
250
+ font-size: 13px;
251
+ line-height: 1.4;
252
+ }
284
253
  .dataviews-filters__summary-popover .components-popover__content {
285
254
  width: 230px;
286
- padding: 0;
287
255
  border-radius: 4px;
288
256
  }
257
+ .dataviews-filters__summary-popover.components-dropdown__content .components-popover__content {
258
+ padding: 0;
259
+ }
289
260
 
290
261
  .dataviews-filters__summary-operators-container {
291
262
  padding: 8px 8px 0;
@@ -316,6 +287,7 @@
316
287
  position: relative;
317
288
  display: flex;
318
289
  align-items: center;
290
+ box-sizing: border-box;
319
291
  }
320
292
  .dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-reset {
321
293
  padding-inline-end: 28px;
@@ -527,6 +499,7 @@
527
499
  font-size: 11px;
528
500
  outline: var(--wp-admin-border-width-focus) solid #fff;
529
501
  color: #fff;
502
+ box-sizing: border-box;
530
503
  }
531
504
 
532
505
  .dataviews-search {
@@ -534,7 +507,7 @@
534
507
  width: fit-content;
535
508
  }
536
509
 
537
- .dataviews-pagination {
510
+ .dataviews-footer {
538
511
  position: sticky;
539
512
  bottom: 0;
540
513
  right: 0;
@@ -543,14 +516,37 @@
543
516
  border-top: 1px solid #f0f0f0;
544
517
  flex-shrink: 0;
545
518
  transition: padding ease-out 0.1s;
519
+ z-index: 2;
546
520
  }
547
521
  @media (prefers-reduced-motion: reduce) {
548
- .dataviews-pagination {
522
+ .dataviews-footer {
549
523
  transition-duration: 0s;
550
524
  transition-delay: 0s;
551
525
  }
552
526
  }
553
527
 
528
+ /* stylelint-disable-next-line scss/at-rule-no-unknown -- '@container' not globally permitted */
529
+ @container (max-width: 430px) {
530
+ .dataviews-footer {
531
+ padding: 12px 24px;
532
+ }
533
+ }
534
+ /* stylelint-disable-next-line scss/at-rule-no-unknown -- '@container' not globally permitted */
535
+ @container (max-width: 560px) {
536
+ .dataviews-footer {
537
+ flex-direction: column !important;
538
+ }
539
+ .dataviews-footer .dataviews-bulk-actions-footer__container {
540
+ width: 100%;
541
+ }
542
+ .dataviews-footer .dataviews-bulk-actions-footer__item-count {
543
+ flex-grow: 1;
544
+ }
545
+ .dataviews-footer .dataviews-pagination {
546
+ width: 100%;
547
+ justify-content: space-between;
548
+ }
549
+ }
554
550
  .dataviews-pagination__page-select {
555
551
  font-size: 11px;
556
552
  font-weight: 500;
@@ -563,12 +559,6 @@
563
559
  }
564
560
  }
565
561
 
566
- /* stylelint-disable-next-line scss/at-rule-no-unknown -- '@container' not globally permitted */
567
- @container (max-width: 430px) {
568
- .dataviews-pagination {
569
- padding: 12px 24px;
570
- }
571
- }
572
562
  .dataviews-action-modal {
573
563
  z-index: 1000001;
574
564
  }
@@ -592,6 +582,8 @@
592
582
  /* stylelint-disable-next-line property-no-unknown -- the linter needs to be updated to accepted the container-type property */
593
583
  container-type: inline-size;
594
584
  padding: 16px;
585
+ font-size: 13px;
586
+ line-height: 1.4;
595
587
  }
596
588
 
597
589
  .dataviews-view-config__sort-direction .components-toggle-group-control-option-base {
@@ -619,6 +611,10 @@
619
611
  grid-column: span 4;
620
612
  }
621
613
 
614
+ .dataviews-settings-section:has(.dataviews-settings-section__content:empty) {
615
+ display: none;
616
+ }
617
+
622
618
  /* stylelint-disable-next-line scss/at-rule-no-unknown -- '@container' not globally permitted */
623
619
  @container (max-width: 500px) {
624
620
  .dataviews-settings-section.dataviews-settings-section {
@@ -631,6 +627,25 @@
631
627
  grid-column: span 2;
632
628
  }
633
629
  }
630
+ .dataviews-field-control__field {
631
+ height: 32px;
632
+ }
633
+
634
+ .dataviews-field-control__actions {
635
+ position: absolute;
636
+ top: -9999em;
637
+ }
638
+
639
+ .dataviews-field-control__actions.dataviews-field-control__actions {
640
+ gap: 4px;
641
+ }
642
+
643
+ .dataviews-field-control__field:hover .dataviews-field-control__actions,
644
+ .dataviews-field-control__field:focus-within .dataviews-field-control__actions {
645
+ position: unset;
646
+ top: unset;
647
+ }
648
+
634
649
  .dataviews-view-grid {
635
650
  margin-bottom: auto;
636
651
  grid-template-rows: max-content;
@@ -780,6 +795,10 @@
780
795
  top: 8px;
781
796
  }
782
797
 
798
+ ul.dataviews-view-list {
799
+ list-style-type: none;
800
+ }
801
+
783
802
  .dataviews-view-list {
784
803
  margin: 0 0 auto;
785
804
  }
@@ -833,12 +852,13 @@
833
852
  .dataviews-view-list li:not(.is-selected) .dataviews-view-list__primary-field {
834
853
  color: #1e1e1e;
835
854
  }
836
- .dataviews-view-list li:not(.is-selected):hover, .dataviews-view-list li:not(.is-selected):focus-within {
855
+ .dataviews-view-list li:not(.is-selected):hover, .dataviews-view-list li:not(.is-selected).is-hovered, .dataviews-view-list li:not(.is-selected):focus-within {
837
856
  color: var(--wp-admin-theme-color);
838
857
  background-color: #f8f8f8;
839
858
  }
840
859
  .dataviews-view-list li:not(.is-selected):hover .dataviews-view-list__primary-field,
841
- .dataviews-view-list li:not(.is-selected):hover .dataviews-view-list__fields, .dataviews-view-list li:not(.is-selected):focus-within .dataviews-view-list__primary-field,
860
+ .dataviews-view-list li:not(.is-selected):hover .dataviews-view-list__fields, .dataviews-view-list li:not(.is-selected).is-hovered .dataviews-view-list__primary-field,
861
+ .dataviews-view-list li:not(.is-selected).is-hovered .dataviews-view-list__fields, .dataviews-view-list li:not(.is-selected):focus-within .dataviews-view-list__primary-field,
842
862
  .dataviews-view-list li:not(.is-selected):focus-within .dataviews-view-list__fields {
843
863
  color: var(--wp-admin-theme-color);
844
864
  }
@@ -854,6 +874,7 @@
854
874
  color: var(--wp-admin-theme-color);
855
875
  }
856
876
  .dataviews-view-list .dataviews-view-list__item {
877
+ box-sizing: border-box;
857
878
  padding: 16px 24px;
858
879
  width: 100%;
859
880
  scroll-margin: 8px 0;
@@ -861,7 +882,7 @@
861
882
  .dataviews-view-list .dataviews-view-list__item:focus-visible::before {
862
883
  position: absolute;
863
884
  content: "";
864
- top: calc(var(--wp-admin-border-width-focus) + 1px);
885
+ top: var(--wp-admin-border-width-focus);
865
886
  left: var(--wp-admin-border-width-focus);
866
887
  bottom: var(--wp-admin-border-width-focus);
867
888
  right: var(--wp-admin-border-width-focus);
@@ -898,8 +919,8 @@
898
919
  border-radius: 4px;
899
920
  }
900
921
  .dataviews-view-list .dataviews-view-list__media-placeholder {
901
- min-width: 32px;
902
- height: 32px;
922
+ width: 52px;
923
+ height: 52px;
903
924
  background-color: #e0e0e0;
904
925
  }
905
926
  .dataviews-view-list .dataviews-view-list__field-wrapper {
@@ -938,11 +959,6 @@
938
959
  color: #757575;
939
960
  margin-bottom: auto;
940
961
  }
941
- .dataviews-view-table a {
942
- text-decoration: none;
943
- color: #1e1e1e;
944
- font-weight: 500;
945
- }
946
962
  .dataviews-view-table th {
947
963
  text-align: right;
948
964
  color: #1e1e1e;