Skip to content

Commit ef4bec2

Browse files
authored
improvement(context-menu): added awareness for chat and variables being open, fixed select calculation to match height calculation for selecting multiple blocks (#2715)
1 parent 2bd27f9 commit ef4bec2

File tree

4 files changed

+29
-15
lines changed

4 files changed

+29
-15
lines changed

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/context-menu/pane-context-menu.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ export function PaneContextMenu({
2424
onAddBlock,
2525
onAutoLayout,
2626
onOpenLogs,
27-
onOpenVariables,
28-
onOpenChat,
27+
onToggleVariables,
28+
onToggleChat,
2929
onInvite,
30+
isVariablesOpen = false,
31+
isChatOpen = false,
3032
hasClipboard = false,
3133
disableEdit = false,
3234
disableAdmin = false,
@@ -125,19 +127,19 @@ export function PaneContextMenu({
125127
</PopoverItem>
126128
<PopoverItem
127129
onClick={() => {
128-
onOpenVariables()
130+
onToggleVariables()
129131
onClose()
130132
}}
131133
>
132-
Variables
134+
{isVariablesOpen ? 'Close Variables' : 'Open Variables'}
133135
</PopoverItem>
134136
<PopoverItem
135137
onClick={() => {
136-
onOpenChat()
138+
onToggleChat()
137139
onClose()
138140
}}
139141
>
140-
Open Chat
142+
{isChatOpen ? 'Close Chat' : 'Open Chat'}
141143
</PopoverItem>
142144

143145
{/* Admin action */}

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/context-menu/types.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,13 @@ export interface PaneContextMenuProps {
7777
onAddBlock: () => void
7878
onAutoLayout: () => void
7979
onOpenLogs: () => void
80-
onOpenVariables: () => void
81-
onOpenChat: () => void
80+
onToggleVariables: () => void
81+
onToggleChat: () => void
8282
onInvite: () => void
83+
/** Whether the variables panel is currently open */
84+
isVariablesOpen?: boolean
85+
/** Whether the chat panel is currently open */
86+
isChatOpen?: boolean
8387
/** Whether clipboard has content for pasting */
8488
hasClipboard?: boolean
8589
/** Whether edit actions are disabled (no permission) */

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/workflow-block/workflow-block.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ export const WorkflowBlock = memo(function WorkflowBlock({
911911
type,
912912
config.category,
913913
displayTriggerMode,
914-
subBlockRows.length,
914+
subBlockRows.reduce((acc, row) => acc + row.length, 0),
915915
conditionRows.length,
916916
routerRows.length,
917917
horizontalHandles,

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,10 @@ const WorkflowContent = React.memo(() => {
269269

270270
const snapToGridSize = useGeneralStore((state) => state.snapToGridSize)
271271
const snapToGrid = snapToGridSize > 0
272+
273+
// Panel open states for context menu
274+
const isVariablesOpen = useVariablesStore((state) => state.isOpen)
275+
const isChatOpen = useChatStore((state) => state.isChatOpen)
272276
const snapGrid: [number, number] = useMemo(
273277
() => [snapToGridSize, snapToGridSize],
274278
[snapToGridSize]
@@ -766,12 +770,14 @@ const WorkflowContent = React.memo(() => {
766770
router.push(`/workspace/${workspaceId}/logs?workflowIds=${workflowIdParam}`)
767771
}, [router, workspaceId, workflowIdParam])
768772

769-
const handleContextOpenVariables = useCallback(() => {
770-
useVariablesStore.getState().setIsOpen(true)
773+
const handleContextToggleVariables = useCallback(() => {
774+
const { isOpen, setIsOpen } = useVariablesStore.getState()
775+
setIsOpen(!isOpen)
771776
}, [])
772777

773-
const handleContextOpenChat = useCallback(() => {
774-
useChatStore.getState().setIsChatOpen(true)
778+
const handleContextToggleChat = useCallback(() => {
779+
const { isChatOpen, setIsChatOpen } = useChatStore.getState()
780+
setIsChatOpen(!isChatOpen)
775781
}, [])
776782

777783
const handleContextInvite = useCallback(() => {
@@ -2864,9 +2870,11 @@ const WorkflowContent = React.memo(() => {
28642870
onAddBlock={handleContextAddBlock}
28652871
onAutoLayout={handleAutoLayout}
28662872
onOpenLogs={handleContextOpenLogs}
2867-
onOpenVariables={handleContextOpenVariables}
2868-
onOpenChat={handleContextOpenChat}
2873+
onToggleVariables={handleContextToggleVariables}
2874+
onToggleChat={handleContextToggleChat}
28692875
onInvite={handleContextInvite}
2876+
isVariablesOpen={isVariablesOpen}
2877+
isChatOpen={isChatOpen}
28702878
hasClipboard={hasClipboard()}
28712879
disableEdit={!effectivePermissions.canEdit}
28722880
disableAdmin={!effectivePermissions.canAdmin}

0 commit comments

Comments
 (0)