feat(ui): restore context menu for entity list

This commit is contained in:
psychedelicious 2024-08-29 10:35:49 +10:00
parent bd5780de4d
commit fec61ce1ff

View File

@ -1,21 +1,37 @@
import { Divider, Flex } from '@invoke-ai/ui-library'; import { Box, ContextMenu, Divider, Flex, MenuList } from '@invoke-ai/ui-library';
import { useAppSelector } from 'app/store/storeHooks'; import { useAppSelector } from 'app/store/storeHooks';
import { CanvasAddEntityButtons } from 'features/controlLayers/components/CanvasAddEntityButtons'; import { CanvasAddEntityButtons } from 'features/controlLayers/components/CanvasAddEntityButtons';
import { CanvasEntityList } from 'features/controlLayers/components/CanvasEntityList/CanvasEntityList'; import { CanvasEntityList } from 'features/controlLayers/components/CanvasEntityList/CanvasEntityList';
import { EntityListActionBar } from 'features/controlLayers/components/CanvasEntityList/EntityListActionBar'; import { EntityListActionBar } from 'features/controlLayers/components/CanvasEntityList/EntityListActionBar';
import { CanvasEntityListMenuItems } from 'features/controlLayers/components/CanvasEntityList/EntityListActionBarAddLayerMenuItems';
import { CanvasManagerProviderGate } from 'features/controlLayers/contexts/CanvasManagerProviderGate'; import { CanvasManagerProviderGate } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
import { selectHasEntities } from 'features/controlLayers/store/selectors'; import { selectHasEntities } from 'features/controlLayers/store/selectors';
import { memo } from 'react'; import { memo, useCallback } from 'react';
export const CanvasPanelContent = memo(() => { export const CanvasPanelContent = memo(() => {
const hasEntities = useAppSelector(selectHasEntities); const hasEntities = useAppSelector(selectHasEntities);
const renderMenu = useCallback(
() => (
<MenuList>
<CanvasEntityListMenuItems />
</MenuList>
),
[]
);
return ( return (
<CanvasManagerProviderGate> <CanvasManagerProviderGate>
<Flex flexDir="column" gap={2} w="full" h="full"> <Flex flexDir="column" gap={2} w="full" h="full">
<EntityListActionBar /> <EntityListActionBar />
<Divider py={0} /> <Divider py={0} />
{!hasEntities && <CanvasAddEntityButtons />} <ContextMenu<HTMLDivElement> renderMenu={renderMenu} stopImmediatePropagation stopPropagation>
{hasEntities && <CanvasEntityList />} {(ref) => (
<Box ref={ref} w="full" h="full">
{!hasEntities && <CanvasAddEntityButtons />}
{hasEntities && <CanvasEntityList />}
</Box>
)}
</ContextMenu>
</Flex> </Flex>
</CanvasManagerProviderGate> </CanvasManagerProviderGate>
); );