Skip to content
Snippets Groups Projects

#3526314: Clicking an item in the library should NOT insert it into the page

Files
5
+ 78
0
import SidebarNode from '@/components/sidePanel/SidebarNode';
import type React from 'react';
import UnifiedMenu from '@/components/UnifiedMenu';
import { ContextMenu } from '@radix-ui/themes';
import { useAppDispatch, useAppSelector } from '@/app/hooks';
import type { XBComponent } from '@/types/Component';
import { handleInsertToCanvas } from '@/utils/insert-handlers';
import { selectLayout } from '@/features/layout/layoutModelSlice';
import { useParams } from 'react-router';
import { DEFAULT_REGION } from '@/features/ui/uiSlice';
const ComponentNode: React.FC<{
component: XBComponent;
onMenuOpenChange: (open: boolean) => void;
disabled: boolean;
variant: 'component' | 'dynamicComponent';
setSelectedComponent?: (uuid: string, layout: any) => void;
}> = (props) => {
const {
component,
onMenuOpenChange,
disabled,
variant,
setSelectedComponent,
} = props;
const dispatch = useAppDispatch();
const layout = useAppSelector(selectLayout);
const {
componentId: selectedComponent,
regionId: focusedRegion = DEFAULT_REGION,
} = useParams();
const handleAddToCanvas = () => {
handleInsertToCanvas({
type: variant,
item: component,
layout,
selectedComponent,
focusedRegion,
dispatch,
setSelectedComponent,
});
};
const menuItems = (
<UnifiedMenu.Item onClick={handleAddToCanvas}>
Add to Canvas
</UnifiedMenu.Item>
);
return (
<ContextMenu.Root onOpenChange={onMenuOpenChange}>
<ContextMenu.Trigger>
<SidebarNode
title={component.name}
variant={variant}
disabled={disabled}
dropdownMenuContent={
<UnifiedMenu.Content menuType="dropdown">
{menuItems}
</UnifiedMenu.Content>
}
onMenuOpenChange={onMenuOpenChange}
/>
</ContextMenu.Trigger>
<UnifiedMenu.Content
onClick={(e) => e.stopPropagation()}
menuType="context"
align="start"
side="right"
>
{menuItems}
</UnifiedMenu.Content>
</ContextMenu.Root>
);
};
export default ComponentNode;
Loading