Skip to content
Snippets Groups Projects
Commit e5d0a9a7 authored by Dennis Collaris's avatar Dennis Collaris Committed by Leonardo Christino
Browse files

feat: implement context menu for logic pills

parent 18de8dca
No related branches found
No related tags found
1 merge request!272feat: implement context menu for logic pills
Pipeline #140175 passed
...@@ -6,8 +6,9 @@ import { GeneralDescription, InputNode, InputNodeTypeTypes } from '../../../mode ...@@ -6,8 +6,9 @@ import { GeneralDescription, InputNode, InputNodeTypeTypes } from '../../../mode
import { styleHandleMap } from '../../utils'; import { styleHandleMap } from '../../utils';
import { setQuerybuilderGraphology, toQuerybuilderGraphology } from '@graphpolaris/shared/lib/data-access/store/querybuilderSlice'; import { setQuerybuilderGraphology, toQuerybuilderGraphology } from '@graphpolaris/shared/lib/data-access/store/querybuilderSlice';
import { LogicInput } from './LogicInput'; import { LogicInput } from './LogicInput';
import { Button, DropdownTrigger, Input, LogicPill } from '@graphpolaris/shared/lib/components'; import { Button, Input, LogicPill } from '@graphpolaris/shared/lib/components';
import { QueryBuilderDispatcherContext } from '../../../panel/QueryBuilderDispatcher'; import { QueryBuilderDispatcherContext } from '../../../panel/QueryBuilderDispatcher';
import { DropdownTrigger, DropdownContainer, DropdownItemContainer, DropdownItem } from '@graphpolaris/shared/lib/components/dropdowns';
export function QueryLogicPill(node: SchemaReactflowLogicNode) { export function QueryLogicPill(node: SchemaReactflowLogicNode) {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
...@@ -28,6 +29,7 @@ export function QueryLogicPill(node: SchemaReactflowLogicNode) { ...@@ -28,6 +29,7 @@ export function QueryLogicPill(node: SchemaReactflowLogicNode) {
[node.id], [node.id],
); );
const [localInputCache, setLocalInputCache] = useState<Record<string, InputNodeTypeTypes>>({ ...graphologyNodeAttributes?.inputs }); const [localInputCache, setLocalInputCache] = useState<Record<string, InputNodeTypeTypes>>({ ...graphologyNodeAttributes?.inputs });
const [openDropdown, setOpenDropdown] = useState(false);
if (!data.id) throw new Error('LogicPill: data.id is undefined'); if (!data.id) throw new Error('LogicPill: data.id is undefined');
const defaultHandleData = { const defaultHandleData = {
...@@ -49,6 +51,11 @@ export function QueryLogicPill(node: SchemaReactflowLogicNode) { ...@@ -49,6 +51,11 @@ export function QueryLogicPill(node: SchemaReactflowLogicNode) {
} }
}; };
function removeNode() {
graphologyGraph.dropNode(node.id);
dispatch(setQuerybuilderGraphology(graphologyGraph));
}
useEffect(() => { useEffect(() => {
if (inputReference?.current) inputReference.current.focus(); if (inputReference?.current) inputReference.current.focus();
}, [node.id]); }, [node.id]);
...@@ -61,7 +68,27 @@ export function QueryLogicPill(node: SchemaReactflowLogicNode) { ...@@ -61,7 +68,27 @@ export function QueryLogicPill(node: SchemaReactflowLogicNode) {
return ( return (
<LogicPill <LogicPill
title={connectionsToLeft[0]?.attributes?.sourceHandleData.attributeName} title={
<div className="flex flex-row justify-between items-center">
<span>{connectionsToLeft[0]?.attributes?.sourceHandleData.attributeName}</span>
<DropdownContainer>
<DropdownTrigger size="md">
<Button
variantType="secondary"
variant="ghost"
size="2xs"
iconComponent={openDropdown ? 'icon-[ic--baseline-arrow-drop-up]' : 'icon-[ic--baseline-arrow-drop-down]'}
className={openDropdown ? 'border-secondary-200' : ''}
/>
</DropdownTrigger>
<DropdownItemContainer>
<DropdownItem value="Remove" className="text-danger" onClick={(e) => removeNode()} />
</DropdownItemContainer>
</DropdownContainer>
</div>
}
handleLeft={ handleLeft={
<Handle <Handle
className={'!rounded-none !bg-transparent !w-full !h-full !border-0 !right-0 !left-0'} className={'!rounded-none !bg-transparent !w-full !h-full !border-0 !right-0 !left-0'}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment