Skip to content

Commit 00388ab

Browse files
committed
fix(mobile): keep searched fields visible with search controls
1 parent 8847c6d commit 00388ab

3 files changed

Lines changed: 273 additions & 239 deletions

File tree

‎apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/panel.tsx‎

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,9 @@ export const Panel = memo(function Panel() {
307307
}))
308308
)
309309

310+
const hasCanvasOverlay = isChatOpen || isVariablesOpen
310311
const isSearchOpen = useWorkflowSearchReplaceStore((state) => state.isOpen)
311-
const hasCanvasOverlay = isChatOpen || isVariablesOpen || isSearchOpen
312+
const isSearchingEditor = isSearchOpen && activeTab === 'editor'
312313

313314
const currentWorkflow = activeWorkflowId ? workflows[activeWorkflowId] : null
314315
const workflowLocked = isWorkflowEffectivelyLocked(currentWorkflow, folders)
@@ -769,8 +770,18 @@ export const Panel = memo(function Panel() {
769770
)}
770771
aria-label='Workflow panel'
771772
>
772-
<div className='flex h-full flex-col border-[var(--border)] border-l pt-3.5'>
773-
<div className='flex @min-[960px]/workflow:hidden shrink-0 items-center justify-between px-3 pb-2'>
773+
<div
774+
className={cn(
775+
'flex h-full flex-col border-[var(--border)] border-l pt-3.5',
776+
isSearchingEditor && '@max-[960px]/workflow:pt-0'
777+
)}
778+
>
779+
<div
780+
className={cn(
781+
'flex @min-[960px]/workflow:hidden shrink-0 items-center justify-between px-3 pb-2',
782+
isSearchingEditor && '@max-[960px]/workflow:hidden'
783+
)}
784+
>
774785
<span className='text-[var(--text-body)] text-sm'>Workflow</span>
775786
<Button
776787
variant='ghost'
@@ -783,7 +794,12 @@ export const Panel = memo(function Panel() {
783794
</Button>
784795
</div>
785796
{/* Header */}
786-
<div className='flex shrink-0 items-center justify-between px-2'>
797+
<div
798+
className={cn(
799+
'flex shrink-0 items-center justify-between px-2',
800+
isSearchingEditor && '@max-[960px]/workflow:hidden'
801+
)}
802+
>
787803
{/* More and Chat */}
788804
<div className='flex gap-1.5'>
789805
<DropdownMenu open={isMenuOpen} onOpenChange={setIsMenuOpen}>
@@ -908,7 +924,12 @@ export const Panel = memo(function Panel() {
908924
</div>
909925

910926
{/* Tabs */}
911-
<div className='flex shrink-0 items-center justify-between px-2 pt-3.5'>
927+
<div
928+
className={cn(
929+
'flex shrink-0 items-center justify-between px-2 pt-3.5',
930+
isSearchingEditor && '@max-[960px]/workflow:hidden'
931+
)}
932+
>
912933
<div className='flex gap-1'>
913934
{isCopilotTabAvailable && (
914935
<Button
@@ -952,7 +973,12 @@ export const Panel = memo(function Panel() {
952973
</div>
953974

954975
{/* Tab Content - Keep all tabs mounted but hidden to preserve state */}
955-
<div className='flex-1 overflow-hidden pt-3'>
976+
<div
977+
className={cn(
978+
'flex-1 overflow-hidden pt-3',
979+
isSearchingEditor && '@max-[960px]/workflow:pt-0'
980+
)}
981+
>
956982
{isCopilotTabAvailable && (
957983
<div
958984
className={

‎apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/search-replace/workflow-search-replace.tsx‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ import { useFolderMap } from '@/hooks/queries/folders'
4545
import { isWorkflowEffectivelyLocked } from '@/hooks/queries/utils/folder-tree'
4646
import { useWorkflowMap } from '@/hooks/queries/workflows'
4747
import { useCollaborativeWorkflow } from '@/hooks/use-collaborative-workflow'
48-
import { usePanelEditorSearchStore, usePanelEditorStore } from '@/stores/panel'
48+
import { useChatStore } from '@/stores/chat/store'
49+
import { usePanelEditorSearchStore, usePanelEditorStore, usePanelStore } from '@/stores/panel'
4950
import type { ActiveSearchTarget } from '@/stores/panel/editor/store'
51+
import { useVariablesModalStore } from '@/stores/variables/modal'
5052
import { useWorkflowSearchReplaceStore } from '@/stores/workflow-search-replace/store'
5153
import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
5254
import { useSubBlockStore } from '@/stores/workflows/subblock/store'
@@ -318,12 +320,17 @@ function WorkflowSearchReplacePanel({ focusRef }: WorkflowSearchReplacePanelProp
318320
setActiveMatchId(matchId)
319321
const match = hydratedMatches.find((candidate) => candidate.id === matchId)
320322
if (!match) return
323+
if (!isFloatingLayout()) {
324+
useChatStore.getState().setIsChatOpen(false)
325+
useVariablesModalStore.getState().setIsOpen(false)
326+
}
321327
usePanelEditorStore.getState().setCurrentBlockId(match.blockId)
328+
usePanelStore.getState().setIsMobilePanelOpen(true)
322329
usePanelEditorSearchStore.getState().setActiveSearchTarget({
323330
...createActiveSearchTarget(match, query),
324331
})
325332
},
326-
[hydratedMatches, query, setActiveMatchId]
333+
[hydratedMatches, isFloatingLayout, query, setActiveMatchId]
327334
)
328335

329336
const activeMatchIndex = hydratedMatches.findIndex((match) => match.id === activeMatchId)
@@ -559,7 +566,7 @@ function WorkflowSearchReplacePanel({ focusRef }: WorkflowSearchReplacePanelProp
559566
role='dialog'
560567
aria-label='Search and replace'
561568
ref={panelRef}
562-
className='fixed @max-[960px]/workflow:absolute @max-[960px]/workflow:inset-x-0! @max-[960px]/workflow:top-0! z-[var(--z-dropdown)] flex @max-[960px]/workflow:max-h-full @max-[960px]/workflow:min-h-0! @max-[960px]/workflow:w-auto! flex-col overflow-hidden @max-[960px]/workflow:overflow-y-auto @max-[960px]/workflow:rounded-none rounded-lg border border-[var(--border)] bg-[var(--surface-1)] px-2.5 pt-0.5 pb-2'
569+
className='fixed @max-[960px]/workflow:relative @max-[960px]/workflow:top-auto! @max-[960px]/workflow:left-auto! z-[var(--z-dropdown)] flex @max-[960px]/workflow:max-h-[50%] @max-[960px]/workflow:min-h-0! @max-[960px]/workflow:w-full! @max-[960px]/workflow:shrink-0 flex-col overflow-hidden @max-[960px]/workflow:overflow-y-auto @max-[960px]/workflow:rounded-none rounded-lg border border-[var(--border)] bg-[var(--surface-1)] px-2.5 pt-0.5 pb-2'
563570
style={{
564571
left: `${actualPosition.x}px`,
565572
top: `${actualPosition.y}px`,

0 commit comments

Comments
 (0)