mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-21 16:18:55 +00:00
Merge pull request #67298 from NousResearch/bb/salvage-66109-action-menu-tooltip
fix(desktop): restore tooltip-wrapped action-menu + dialog trigger clicks (supersedes #66109)
This commit is contained in:
commit
a5396765a2
4 changed files with 65 additions and 8 deletions
33
apps/desktop/src/app/overlays/panel.test.tsx
Normal file
33
apps/desktop/src/app/overlays/panel.test.tsx
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import { cleanup, fireEvent, render, screen } from '@testing-library/react'
|
||||
import { afterEach, beforeAll, describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import { PanelRowMenu } from './panel'
|
||||
|
||||
beforeAll(() => {
|
||||
Element.prototype.hasPointerCapture ??= () => false
|
||||
Element.prototype.releasePointerCapture ??= () => undefined
|
||||
Element.prototype.setPointerCapture ??= () => undefined
|
||||
HTMLElement.prototype.scrollIntoView ??= () => undefined
|
||||
})
|
||||
|
||||
describe('PanelRowMenu', () => {
|
||||
afterEach(() => {
|
||||
cleanup()
|
||||
})
|
||||
|
||||
it('opens its actions menu when the trigger has a tooltip', async () => {
|
||||
const onSelect = vi.fn()
|
||||
|
||||
render(<PanelRowMenu items={[{ label: 'Rename', onSelect }]} />)
|
||||
|
||||
const trigger = screen.getByRole('button', { name: 'Actions' })
|
||||
|
||||
fireEvent.pointerMove(trigger, { pointerType: 'mouse' })
|
||||
expect((await screen.findByRole('tooltip')).textContent).toContain('Actions')
|
||||
|
||||
fireEvent.pointerDown(trigger, { button: 0, ctrlKey: false, pointerType: 'mouse' })
|
||||
fireEvent.click(await screen.findByRole('menuitem', { name: 'Rename' }))
|
||||
|
||||
expect(onSelect).toHaveBeenCalledOnce()
|
||||
})
|
||||
})
|
||||
|
|
@ -217,8 +217,8 @@ export function PanelRowMenu({ items, label = 'Actions' }: { items: PanelMenuIte
|
|||
|
||||
return (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Tip label={label}>
|
||||
<Tip label={label}>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button
|
||||
aria-label={label}
|
||||
className="size-5 rounded-[4px] bg-transparent text-(--ui-text-tertiary) opacity-0 transition-colors duration-100 hover:bg-(--ui-control-active-background) hover:text-foreground focus-visible:opacity-100 focus-visible:ring-0 group-hover/row:opacity-100 data-[state=open]:bg-(--ui-control-active-background) data-[state=open]:text-foreground data-[state=open]:opacity-100 [&_svg]:size-3.5!"
|
||||
|
|
@ -227,8 +227,8 @@ export function PanelRowMenu({ items, label = 'Actions' }: { items: PanelMenuIte
|
|||
>
|
||||
<Codicon name="kebab-vertical" size="0.875rem" />
|
||||
</Button>
|
||||
</Tip>
|
||||
</DropdownMenuTrigger>
|
||||
</DropdownMenuTrigger>
|
||||
</Tip>
|
||||
<DropdownMenuContent align="end" className="w-40" sideOffset={6}>
|
||||
{items.map(item => (
|
||||
<DropdownMenuItem
|
||||
|
|
|
|||
24
apps/desktop/src/app/starmap/share-controls.test.tsx
Normal file
24
apps/desktop/src/app/starmap/share-controls.test.tsx
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import { cleanup, fireEvent, render, screen, within } from '@testing-library/react'
|
||||
import { afterEach, describe, expect, it } from 'vitest'
|
||||
|
||||
import { ShareControls } from './share-controls'
|
||||
|
||||
describe('ShareControls', () => {
|
||||
afterEach(() => {
|
||||
cleanup()
|
||||
})
|
||||
|
||||
it('opens its dialog when the trigger has a tooltip', async () => {
|
||||
render(<ShareControls shareCode="map-code" />)
|
||||
|
||||
const trigger = screen.getByRole('button', { name: 'Import / export map' })
|
||||
|
||||
fireEvent.pointerMove(trigger, { pointerType: 'mouse' })
|
||||
expect((await screen.findByRole('tooltip')).textContent).toContain('Import / export map')
|
||||
|
||||
fireEvent.click(trigger)
|
||||
|
||||
const dialog = await screen.findByRole('dialog')
|
||||
expect(within(dialog).getByRole('heading', { name: 'Import / export map' })).toBeTruthy()
|
||||
})
|
||||
})
|
||||
|
|
@ -76,8 +76,8 @@ export function ShareControls({ imported = false, onImport, onResetMap, shareCod
|
|||
}}
|
||||
open={open}
|
||||
>
|
||||
<DialogTrigger asChild>
|
||||
<Tip label={t.starmap.shareTitle}>
|
||||
<Tip label={t.starmap.shareTitle}>
|
||||
<DialogTrigger asChild>
|
||||
<Button
|
||||
aria-label={t.starmap.shareTitle}
|
||||
className="text-muted-foreground hover:text-foreground"
|
||||
|
|
@ -86,8 +86,8 @@ export function ShareControls({ imported = false, onImport, onResetMap, shareCod
|
|||
>
|
||||
<Upload className="size-3.5" />
|
||||
</Button>
|
||||
</Tip>
|
||||
</DialogTrigger>
|
||||
</DialogTrigger>
|
||||
</Tip>
|
||||
|
||||
<DialogContent className="max-w-md">
|
||||
<DialogHeader>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue