Skip to content

Commit d6f38a0

Browse files
authored
fix(chat): keep mention searches open and align resource menus (#8507)
* fix(chat): keep mention searches open and align resource menus * fix(chat): preserve mention selection and nested menu sizing * fix(chat): reset replaced queries and bound workspace previews
1 parent 06139c5 commit d6f38a0

4 files changed

Lines changed: 312 additions & 76 deletions

File tree

‎apps/sim/app/workspace/[workspaceId]/home/components/mothership-view/components/add-resource-dropdown/add-resource-dropdown.tsx‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ interface ResourceFolderTreeItemsProps {
8282
*/
8383
folderType?: MothershipResourceType
8484
onSelect: (resource: MothershipResource) => void
85+
subContentClassName?: string
8586
}
8687

8788
/** Renders a {@link buildResourceFolderTree} result as nested dropdown submenus. */
@@ -90,6 +91,7 @@ export function ResourceFolderTreeItems({
9091
type,
9192
folderType,
9293
onSelect,
94+
subContentClassName,
9395
}: ResourceFolderTreeItemsProps) {
9496
const config = getResourceConfig(type)
9597
return (
@@ -108,7 +110,7 @@ export function ResourceFolderTreeItems({
108110
<Folder className='size-[14px]' />
109111
<DropdownMenuItemLabel label={node.name} />
110112
</DropdownMenuSubTrigger>
111-
<DropdownMenuSubContent>
113+
<DropdownMenuSubContent className={subContentClassName}>
112114
{folderType && (
113115
<DropdownMenuItem
114116
onClick={() => onSelect({ type: folderType, id: node.id, title: node.name })}
@@ -122,6 +124,7 @@ export function ResourceFolderTreeItems({
122124
type={type}
123125
folderType={folderType}
124126
onSelect={onSelect}
127+
subContentClassName={subContentClassName}
125128
/>
126129
</DropdownMenuSubContent>
127130
</DropdownMenuSub>
@@ -275,6 +278,7 @@ export function ResourceMenuSections({
275278
type={section.type}
276279
folderType={section.folderType}
277280
onSelect={onSelect}
281+
subContentClassName={subContentClassName}
278282
/>
279283
) : (
280284
items.map((item) => (
@@ -401,6 +405,7 @@ interface WorkspaceResourceMenuContentProps {
401405
/** Offers every folder as an attachable entry, as chat does. */
402406
selectFolders?: boolean
403407
onSelect: (resource: MothershipResource) => void
408+
subContentClassName?: string
404409
}
405410

406411
function WorkspaceResourceMenuContent({
@@ -410,6 +415,7 @@ function WorkspaceResourceMenuContent({
410415
searchable = true,
411416
selectFolders,
412417
onSelect,
418+
subContentClassName,
413419
}: WorkspaceResourceMenuContentProps) {
414420
const { groups, structureFolders, isHydrating } = useAvailableResources(workspaceId, {
415421
enabled,
@@ -425,7 +431,12 @@ function WorkspaceResourceMenuContent({
425431
/** Lists fill in as they load, so a trailing row keeps a loading workspace from reading as empty. */
426432
const menu = (
427433
<>
428-
<ResourceMenuSections sections={sections} groups={groups} onSelect={select} />
434+
<ResourceMenuSections
435+
sections={sections}
436+
groups={groups}
437+
onSelect={select}
438+
subContentClassName={subContentClassName}
439+
/>
429440
{isHydrating && <DropdownMenuItem disabled>Loading resources</DropdownMenuItem>}
430441
</>
431442
)
@@ -449,6 +460,7 @@ interface WorkspaceResourceSubmenuProps {
449460
* offers its folder, for pickers that can attach a whole workspace.
450461
*/
451462
onSelectWorkspace?: (workspace: Pick<Workspace, 'id' | 'name'>) => void
463+
subContentClassName?: string
452464
}
453465

454466
/**
@@ -461,6 +473,7 @@ export function WorkspaceResourceSubmenu({
461473
selectFolders,
462474
onSelect,
463475
onSelectWorkspace,
476+
subContentClassName,
464477
}: WorkspaceResourceSubmenuProps) {
465478
const [open, setOpen] = useState(false)
466479
const icon = (
@@ -472,7 +485,9 @@ export function WorkspaceResourceSubmenu({
472485
{icon}
473486
<DropdownMenuItemLabel label={workspace.name} />
474487
</DropdownMenuSubTrigger>
475-
<DropdownMenuSubContent className='flex w-[320px] flex-col overflow-hidden'>
488+
<DropdownMenuSubContent
489+
className={cn('flex w-[320px] flex-col overflow-hidden', subContentClassName)}
490+
>
476491
{onSelectWorkspace && (
477492
<DropdownMenuItem onClick={() => onSelectWorkspace(workspace)}>
478493
{icon}
@@ -486,6 +501,7 @@ export function WorkspaceResourceSubmenu({
486501
searchable={false}
487502
selectFolders={selectFolders}
488503
onSelect={onSelect}
504+
subContentClassName={subContentClassName}
489505
/>
490506
</DropdownMenuSubContent>
491507
</DropdownMenuSub>

0 commit comments

Comments
 (0)