diff --git a/packages/dataviews/src/components/dataviews-view-config/index.tsx b/packages/dataviews/src/components/dataviews-view-config/index.tsx index 48fdf6906b077..02e81b2b0913d 100644 --- a/packages/dataviews/src/components/dataviews-view-config/index.tsx +++ b/packages/dataviews/src/components/dataviews-view-config/index.tsx @@ -8,6 +8,7 @@ import type { ChangeEvent } from 'react'; */ import { Button, + __experimentalDropdownContentWrapper as DropdownContentWrapper, Dropdown, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, @@ -27,6 +28,7 @@ import { __, _x, sprintf } from '@wordpress/i18n'; import { memo, useContext, useMemo } from '@wordpress/element'; import { chevronDown, chevronUp, cog, seen, unseen } from '@wordpress/icons'; import warning from '@wordpress/warning'; +import { useInstanceId } from '@wordpress/compose'; /** * Internal dependencies @@ -55,6 +57,8 @@ interface ViewTypeMenuProps { defaultLayouts?: SupportedLayouts; } +const DATAVIEWS_CONFIG_POPOVER_PROPS = { placement: 'bottom-end', offset: 9 }; + function ViewTypeMenu( { defaultLayouts = { list: {}, grid: {}, table: {} }, }: ViewTypeMenuProps ) { @@ -510,7 +514,7 @@ function SettingsSection( { ); } -function DataviewsViewConfigContent( { +function DataviewsViewConfigDropdown( { density, setDensity, }: { @@ -518,25 +522,52 @@ function DataviewsViewConfigContent( { setDensity: React.Dispatch< React.SetStateAction< number > >; } ) { const { view } = useContext( DataViewsContext ); + const popoverId = useInstanceId( + _DataViewsViewConfig, + 'dataviews-view-config-dropdown' + ); + return ( - - - - - - - { view.type === LAYOUT_GRID && ( - { + return ( +