@seed-ship/mcp-ui-solid 6.3.1 → 6.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/dist/components/GraphRenderer.cjs +30 -24
- package/dist/components/GraphRenderer.cjs.map +1 -1
- package/dist/components/GraphRenderer.d.ts.map +1 -1
- package/dist/components/GraphRenderer.js +30 -24
- package/dist/components/GraphRenderer.js.map +1 -1
- package/dist/components/PortalDropdownMenu.cjs +82 -0
- package/dist/components/PortalDropdownMenu.cjs.map +1 -0
- package/dist/components/PortalDropdownMenu.d.ts +56 -0
- package/dist/components/PortalDropdownMenu.d.ts.map +1 -0
- package/dist/components/PortalDropdownMenu.js +82 -0
- package/dist/components/PortalDropdownMenu.js.map +1 -0
- package/dist/components/UIResourceRenderer.cjs +260 -256
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +260 -256
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components.cjs +2 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.cts +2 -0
- package/dist/components.d.ts +2 -0
- package/dist/components.js +2 -0
- package/dist/components.js.map +1 -1
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/GraphRenderer.tsx +29 -20
- package/src/components/PortalDropdownMenu.test.tsx +113 -0
- package/src/components/PortalDropdownMenu.tsx +130 -0
- package/src/components/UIResourceRenderer.tsx +22 -13
- package/src/components/index.ts +4 -0
- package/src/index.ts +2 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -55,5 +55,7 @@ export { RenderContext, RenderProvider, useRenderContext } from './RenderContext
|
|
|
55
55
|
export type { RenderContextValue, RenderComponentFn } from './RenderContext';
|
|
56
56
|
export { ElicitationForm } from './ElicitationForm';
|
|
57
57
|
export type { ElicitationFormProps } from './ElicitationForm';
|
|
58
|
+
export { PortalDropdownMenu } from './PortalDropdownMenu';
|
|
59
|
+
export type { PortalDropdownMenuProps } from './PortalDropdownMenu';
|
|
58
60
|
export { UIResourceRenderer as default } from './UIResourceRenderer';
|
|
59
61
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
|
package/dist/components.cjs
CHANGED
|
@@ -26,6 +26,7 @@ const VerifiedText = require("./components/VerifiedText.cjs");
|
|
|
26
26
|
const DataPreviewSection = require("./components/DataPreviewSection.cjs");
|
|
27
27
|
const RenderContext = require("./components/RenderContext.cjs");
|
|
28
28
|
const ElicitationForm = require("./components/ElicitationForm.cjs");
|
|
29
|
+
const PortalDropdownMenu = require("./components/PortalDropdownMenu.cjs");
|
|
29
30
|
exports.UIResourceRenderer = UIResourceRenderer.UIResourceRenderer;
|
|
30
31
|
exports.default = UIResourceRenderer.UIResourceRenderer;
|
|
31
32
|
exports.StreamingUIRenderer = StreamingUIRenderer.StreamingUIRenderer;
|
|
@@ -59,4 +60,5 @@ exports.RenderContext = RenderContext.RenderContext;
|
|
|
59
60
|
exports.RenderProvider = RenderContext.RenderProvider;
|
|
60
61
|
exports.useRenderContext = RenderContext.useRenderContext;
|
|
61
62
|
exports.ElicitationForm = ElicitationForm.ElicitationForm;
|
|
63
|
+
exports.PortalDropdownMenu = PortalDropdownMenu.PortalDropdownMenu;
|
|
62
64
|
//# sourceMappingURL=components.cjs.map
|
package/dist/components.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"components.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/components.d.cts
CHANGED
|
@@ -55,5 +55,7 @@ export { RenderContext, RenderProvider, useRenderContext } from './RenderContext
|
|
|
55
55
|
export type { RenderContextValue, RenderComponentFn } from './RenderContext';
|
|
56
56
|
export { ElicitationForm } from './ElicitationForm';
|
|
57
57
|
export type { ElicitationFormProps } from './ElicitationForm';
|
|
58
|
+
export { PortalDropdownMenu } from './PortalDropdownMenu';
|
|
59
|
+
export type { PortalDropdownMenuProps } from './PortalDropdownMenu';
|
|
58
60
|
export { UIResourceRenderer as default } from './UIResourceRenderer';
|
|
59
61
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/components.d.ts
CHANGED
|
@@ -55,5 +55,7 @@ export { RenderContext, RenderProvider, useRenderContext } from './RenderContext
|
|
|
55
55
|
export type { RenderContextValue, RenderComponentFn } from './RenderContext';
|
|
56
56
|
export { ElicitationForm } from './ElicitationForm';
|
|
57
57
|
export type { ElicitationFormProps } from './ElicitationForm';
|
|
58
|
+
export { PortalDropdownMenu } from './PortalDropdownMenu';
|
|
59
|
+
export type { PortalDropdownMenuProps } from './PortalDropdownMenu';
|
|
58
60
|
export { UIResourceRenderer as default } from './UIResourceRenderer';
|
|
59
61
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/components.js
CHANGED
|
@@ -24,6 +24,7 @@ import { VerifiedText } from "./components/VerifiedText.js";
|
|
|
24
24
|
import { DataPreviewSection } from "./components/DataPreviewSection.js";
|
|
25
25
|
import { RenderContext, RenderProvider, useRenderContext } from "./components/RenderContext.js";
|
|
26
26
|
import { ElicitationForm } from "./components/ElicitationForm.js";
|
|
27
|
+
import { PortalDropdownMenu } from "./components/PortalDropdownMenu.js";
|
|
27
28
|
export {
|
|
28
29
|
ActionGroupRenderer,
|
|
29
30
|
ActionRenderer,
|
|
@@ -46,6 +47,7 @@ export {
|
|
|
46
47
|
LightboxOverlay,
|
|
47
48
|
MapRenderer,
|
|
48
49
|
ModalRenderer,
|
|
50
|
+
PortalDropdownMenu,
|
|
49
51
|
RenderContext,
|
|
50
52
|
RenderProvider,
|
|
51
53
|
SplitStepper,
|
package/dist/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.cjs
CHANGED
|
@@ -24,6 +24,7 @@ const BriefingDiff = require("./components/BriefingDiff.cjs");
|
|
|
24
24
|
const VerifiedText = require("./components/VerifiedText.cjs");
|
|
25
25
|
const DataPreviewSection = require("./components/DataPreviewSection.cjs");
|
|
26
26
|
const ElicitationForm = require("./components/ElicitationForm.cjs");
|
|
27
|
+
const PortalDropdownMenu = require("./components/PortalDropdownMenu.cjs");
|
|
27
28
|
const DraggableGridItem = require("./components/DraggableGridItem.cjs");
|
|
28
29
|
const ResizeHandle = require("./components/ResizeHandle.cjs");
|
|
29
30
|
const EditableUIResourceRenderer = require("./components/EditableUIResourceRenderer.cjs");
|
|
@@ -76,6 +77,7 @@ exports.BriefingDiff = BriefingDiff.BriefingDiff;
|
|
|
76
77
|
exports.VerifiedText = VerifiedText.VerifiedText;
|
|
77
78
|
exports.DataPreviewSection = DataPreviewSection.DataPreviewSection;
|
|
78
79
|
exports.ElicitationForm = ElicitationForm.ElicitationForm;
|
|
80
|
+
exports.PortalDropdownMenu = PortalDropdownMenu.PortalDropdownMenu;
|
|
79
81
|
exports.DraggableGridItem = DraggableGridItem.DraggableGridItem;
|
|
80
82
|
exports.ResizeHandle = ResizeHandle.ResizeHandle;
|
|
81
83
|
exports.EditableUIResourceRenderer = EditableUIResourceRenderer.EditableUIResourceRenderer;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.cts
CHANGED
|
@@ -38,6 +38,7 @@ export type { FeedbackInlineProps, FeedbackInlineContext } from './components/Fe
|
|
|
38
38
|
export { ChatBusProvider, useChatBus } from './hooks/useChatBus';
|
|
39
39
|
export { ChatPrompt } from './components/ChatPrompt';
|
|
40
40
|
export { ElicitationForm } from './components/ElicitationForm';
|
|
41
|
+
export { PortalDropdownMenu } from './components/PortalDropdownMenu';
|
|
41
42
|
export { ScratchpadPanel } from './components/ScratchpadPanel';
|
|
42
43
|
export { dispatchScratchpad, useScratchpadState, createScratchpadStore, ScratchpadStoreContext, ScratchpadStoreProvider, } from './stores/scratchpad-store';
|
|
43
44
|
export type { ScratchpadStoreHandle } from './stores/scratchpad-store';
|
|
@@ -71,6 +72,7 @@ export type { ExpandableWrapperProps } from './components/ExpandableWrapper';
|
|
|
71
72
|
export type { ComponentToolbarProps, ToolbarAction, ToolbarIcon } from './components/ComponentToolbar';
|
|
72
73
|
export type { ChatPromptProps } from './components/ChatPrompt';
|
|
73
74
|
export type { ElicitationFormProps } from './components/ElicitationForm';
|
|
75
|
+
export type { PortalDropdownMenuProps } from './components/PortalDropdownMenu';
|
|
74
76
|
export type { ScratchpadPanelProps } from './components/ScratchpadPanel';
|
|
75
77
|
export type { VerifiedTextProps } from './components/VerifiedText';
|
|
76
78
|
export type { DataPreviewSectionProps } from './components/DataPreviewSection';
|
package/dist/index.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export type { FeedbackInlineProps, FeedbackInlineContext } from './components/Fe
|
|
|
38
38
|
export { ChatBusProvider, useChatBus } from './hooks/useChatBus';
|
|
39
39
|
export { ChatPrompt } from './components/ChatPrompt';
|
|
40
40
|
export { ElicitationForm } from './components/ElicitationForm';
|
|
41
|
+
export { PortalDropdownMenu } from './components/PortalDropdownMenu';
|
|
41
42
|
export { ScratchpadPanel } from './components/ScratchpadPanel';
|
|
42
43
|
export { dispatchScratchpad, useScratchpadState, createScratchpadStore, ScratchpadStoreContext, ScratchpadStoreProvider, } from './stores/scratchpad-store';
|
|
43
44
|
export type { ScratchpadStoreHandle } from './stores/scratchpad-store';
|
|
@@ -71,6 +72,7 @@ export type { ExpandableWrapperProps } from './components/ExpandableWrapper';
|
|
|
71
72
|
export type { ComponentToolbarProps, ToolbarAction, ToolbarIcon } from './components/ComponentToolbar';
|
|
72
73
|
export type { ChatPromptProps } from './components/ChatPrompt';
|
|
73
74
|
export type { ElicitationFormProps } from './components/ElicitationForm';
|
|
75
|
+
export type { PortalDropdownMenuProps } from './components/PortalDropdownMenu';
|
|
74
76
|
export type { ScratchpadPanelProps } from './components/ScratchpadPanel';
|
|
75
77
|
export type { VerifiedTextProps } from './components/VerifiedText';
|
|
76
78
|
export type { DataPreviewSectionProps } from './components/DataPreviewSection';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,7 @@ import { BriefingDiff } from "./components/BriefingDiff.js";
|
|
|
22
22
|
import { VerifiedText } from "./components/VerifiedText.js";
|
|
23
23
|
import { DataPreviewSection } from "./components/DataPreviewSection.js";
|
|
24
24
|
import { ElicitationForm } from "./components/ElicitationForm.js";
|
|
25
|
+
import { PortalDropdownMenu } from "./components/PortalDropdownMenu.js";
|
|
25
26
|
import { DraggableGridItem } from "./components/DraggableGridItem.js";
|
|
26
27
|
import { ResizeHandle } from "./components/ResizeHandle.js";
|
|
27
28
|
import { EditableUIResourceRenderer } from "./components/EditableUIResourceRenderer.js";
|
|
@@ -89,6 +90,7 @@ export {
|
|
|
89
90
|
MCPUITelemetryContext,
|
|
90
91
|
MCPUITelemetryProvider,
|
|
91
92
|
PERF_PREFIX,
|
|
93
|
+
PortalDropdownMenu,
|
|
92
94
|
PromptReplacedError,
|
|
93
95
|
ResizeHandle,
|
|
94
96
|
ScratchpadPanel,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -22,6 +22,7 @@ import { Component, createSignal, onCleanup, onMount, Show, For } from 'solid-js
|
|
|
22
22
|
import type { UIComponent } from '../types'
|
|
23
23
|
import type { GraphComponentParams, GraphLayout, GraphNode, GraphEdge } from '@seed-ship/mcp-ui-spec'
|
|
24
24
|
import { ExpandableWrapper, useExpanded } from './ExpandableWrapper'
|
|
25
|
+
import { PortalDropdownMenu } from './PortalDropdownMenu'
|
|
25
26
|
|
|
26
27
|
// Module-scoped lazy import promise — first call triggers the dynamic
|
|
27
28
|
// import, subsequent calls reuse the resolved module.
|
|
@@ -153,6 +154,8 @@ export const GraphRenderer: Component<GraphRendererProps> = (props) => {
|
|
|
153
154
|
const [error, setError] = createSignal<string | undefined>()
|
|
154
155
|
const [exportMenuOpen, setExportMenuOpen] = createSignal(false)
|
|
155
156
|
let containerRef: HTMLDivElement | undefined
|
|
157
|
+
// v6.4.0 — trigger ref consumed by <PortalDropdownMenu> for positioning
|
|
158
|
+
let exportTriggerRef: HTMLButtonElement | undefined
|
|
156
159
|
// Loosely typed because G6 is a peer-optional — we don't pull its
|
|
157
160
|
// types into the bundle just to type a transient local handle.
|
|
158
161
|
let graphInstance: any | undefined
|
|
@@ -281,35 +284,41 @@ export const GraphRenderer: Component<GraphRendererProps> = (props) => {
|
|
|
281
284
|
{/* Export menu — top-right, mirrors TableRenderer's pattern */}
|
|
282
285
|
<div class="absolute right-2 top-2 z-10">
|
|
283
286
|
<button
|
|
287
|
+
ref={exportTriggerRef}
|
|
284
288
|
type="button"
|
|
285
289
|
onClick={() => setExportMenuOpen((v) => !v)}
|
|
286
290
|
class="px-2 py-1 text-xs bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded shadow-sm hover:bg-gray-50 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"
|
|
287
291
|
title="Export graph"
|
|
288
292
|
aria-label="Export graph"
|
|
293
|
+
aria-haspopup="menu"
|
|
289
294
|
aria-expanded={exportMenuOpen()}
|
|
290
295
|
>
|
|
291
296
|
Export ▾
|
|
292
297
|
</button>
|
|
293
|
-
<
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
298
|
+
<PortalDropdownMenu
|
|
299
|
+
open={exportMenuOpen()}
|
|
300
|
+
onClose={() => setExportMenuOpen(false)}
|
|
301
|
+
trigger={exportTriggerRef}
|
|
302
|
+
width={176}
|
|
303
|
+
class="text-xs"
|
|
304
|
+
>
|
|
305
|
+
<For each={[
|
|
306
|
+
{ label: 'Download PNG', onClick: handleExportPNG, hint: 'visual snapshot' },
|
|
307
|
+
{ label: 'Download Mermaid', onClick: handleExportMermaid, hint: 'markdown / GitHub' },
|
|
308
|
+
{ label: 'Download JSON', onClick: handleExportJSON, hint: 'raw data' },
|
|
309
|
+
]}>
|
|
310
|
+
{(item) => (
|
|
311
|
+
<button
|
|
312
|
+
type="button"
|
|
313
|
+
onClick={item.onClick}
|
|
314
|
+
class="w-full text-left px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300 border-b border-gray-100 dark:border-gray-700 last:border-b-0"
|
|
315
|
+
>
|
|
316
|
+
<div class="font-medium">{item.label}</div>
|
|
317
|
+
<div class="text-[10px] text-gray-500 dark:text-gray-400">{item.hint}</div>
|
|
318
|
+
</button>
|
|
319
|
+
)}
|
|
320
|
+
</For>
|
|
321
|
+
</PortalDropdownMenu>
|
|
313
322
|
</div>
|
|
314
323
|
|
|
315
324
|
<div
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v6.4.0 — Portal-mounted dropdown for table + graph Export menus.
|
|
3
|
+
*
|
|
4
|
+
* Coverage targets :
|
|
5
|
+
* 1. Menu mounts via <Portal> on document.body (not in trigger's parent)
|
|
6
|
+
* 2. Menu position is computed from the trigger's getBoundingClientRect
|
|
7
|
+
* 3. Click outside the menu closes it
|
|
8
|
+
* 4. Escape key closes it
|
|
9
|
+
* 5. Click on the trigger itself does not close (parent owns toggle)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { describe, it, expect, beforeEach, vi } from 'vitest'
|
|
13
|
+
import { render, fireEvent, cleanup } from '@solidjs/testing-library'
|
|
14
|
+
import { createSignal } from 'solid-js'
|
|
15
|
+
import { PortalDropdownMenu } from './PortalDropdownMenu'
|
|
16
|
+
|
|
17
|
+
describe('PortalDropdownMenu (v6.4.0)', () => {
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
cleanup()
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
function harness(initiallyOpen = true) {
|
|
23
|
+
const [open, setOpen] = createSignal(initiallyOpen)
|
|
24
|
+
let triggerRef: HTMLButtonElement | undefined
|
|
25
|
+
const result = render(() => (
|
|
26
|
+
<div id="harness-root">
|
|
27
|
+
<button ref={triggerRef} onClick={() => setOpen((v) => !v)}>
|
|
28
|
+
Open
|
|
29
|
+
</button>
|
|
30
|
+
<PortalDropdownMenu
|
|
31
|
+
open={open()}
|
|
32
|
+
onClose={() => setOpen(false)}
|
|
33
|
+
trigger={triggerRef}
|
|
34
|
+
width={144}
|
|
35
|
+
>
|
|
36
|
+
<button data-testid="menu-item">Item 1</button>
|
|
37
|
+
</PortalDropdownMenu>
|
|
38
|
+
</div>
|
|
39
|
+
))
|
|
40
|
+
return { ...result, getOpen: open, setOpen, getTrigger: () => triggerRef }
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
it('mounts the menu on document.body, NOT inside the trigger parent', () => {
|
|
44
|
+
const { container } = harness(true)
|
|
45
|
+
// Menu should NOT be inside the harness root (it's portaled to body)
|
|
46
|
+
const harnessRoot = container.querySelector('#harness-root')
|
|
47
|
+
expect(harnessRoot).toBeTruthy()
|
|
48
|
+
expect(harnessRoot!.querySelector('[data-testid="menu-item"]')).toBeNull()
|
|
49
|
+
// But it IS in document.body
|
|
50
|
+
const menuItem = document.body.querySelector('[data-testid="menu-item"]')
|
|
51
|
+
expect(menuItem).toBeTruthy()
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('does not render the menu when open=false', () => {
|
|
55
|
+
harness(false)
|
|
56
|
+
expect(document.body.querySelector('[data-testid="menu-item"]')).toBeNull()
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
it('positions the menu using the trigger getBoundingClientRect (right-aligned, 4px below)', () => {
|
|
60
|
+
// Stub the trigger rect so we get deterministic coords in jsdom
|
|
61
|
+
const fakeRect = {
|
|
62
|
+
top: 100, bottom: 130, left: 200, right: 350,
|
|
63
|
+
width: 150, height: 30, x: 200, y: 100, toJSON: () => ({}),
|
|
64
|
+
} as DOMRect
|
|
65
|
+
// Patch getBoundingClientRect on HTMLElement.prototype just for this test
|
|
66
|
+
const orig = HTMLElement.prototype.getBoundingClientRect
|
|
67
|
+
HTMLElement.prototype.getBoundingClientRect = vi.fn(() => fakeRect)
|
|
68
|
+
try {
|
|
69
|
+
harness(true)
|
|
70
|
+
const menu = document.body.querySelector('[role="menu"]') as HTMLElement
|
|
71
|
+
expect(menu).toBeTruthy()
|
|
72
|
+
// Position: top = bottom + 4 = 134, left = right - width = 350 - 144 = 206
|
|
73
|
+
expect(menu.style.top).toBe('134px')
|
|
74
|
+
expect(menu.style.left).toBe('206px')
|
|
75
|
+
expect(menu.style.position).toBe('fixed')
|
|
76
|
+
} finally {
|
|
77
|
+
HTMLElement.prototype.getBoundingClientRect = orig
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
it('closes on outside click (mousedown on document.body outside menu)', () => {
|
|
82
|
+
const { getOpen } = harness(true)
|
|
83
|
+
expect(getOpen()).toBe(true)
|
|
84
|
+
// Click on a brand-new element appended to body, outside the menu
|
|
85
|
+
const stranger = document.createElement('div')
|
|
86
|
+
document.body.appendChild(stranger)
|
|
87
|
+
fireEvent.mouseDown(stranger)
|
|
88
|
+
expect(getOpen()).toBe(false)
|
|
89
|
+
document.body.removeChild(stranger)
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
it('closes on Escape', () => {
|
|
93
|
+
const { getOpen } = harness(true)
|
|
94
|
+
expect(getOpen()).toBe(true)
|
|
95
|
+
fireEvent.keyDown(document, { key: 'Escape' })
|
|
96
|
+
expect(getOpen()).toBe(false)
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
it('does not close when mousedown lands on the trigger (parent owns toggle)', () => {
|
|
100
|
+
const { getOpen, getTrigger } = harness(true)
|
|
101
|
+
expect(getOpen()).toBe(true)
|
|
102
|
+
fireEvent.mouseDown(getTrigger()!)
|
|
103
|
+
// Menu should still be open — trigger toggle is parent's responsibility
|
|
104
|
+
expect(getOpen()).toBe(true)
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
it('does not close when mousedown lands inside the menu', () => {
|
|
108
|
+
const { getOpen } = harness(true)
|
|
109
|
+
const item = document.body.querySelector('[data-testid="menu-item"]') as HTMLElement
|
|
110
|
+
fireEvent.mouseDown(item)
|
|
111
|
+
expect(getOpen()).toBe(true)
|
|
112
|
+
})
|
|
113
|
+
})
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PortalDropdownMenu (v6.4.0) — generic dropdown that mounts via
|
|
3
|
+
* `<Portal>` on `document.body` instead of an in-tree `position: absolute`
|
|
4
|
+
* sibling. Eliminates two pain points around the legacy in-tree pattern :
|
|
5
|
+
*
|
|
6
|
+
* 1. **`overflow: hidden` clipping** — when the trigger lives inside a
|
|
7
|
+
* chat bubble or a card with `overflow: hidden`, an absolutely
|
|
8
|
+
* positioned menu sibling gets clipped at the ancestor's boundary.
|
|
9
|
+
* Mounting on `document.body` escapes the clip stack entirely.
|
|
10
|
+
* 2. **`z-index` wars** — chat surfaces stack composer / message rails
|
|
11
|
+
* above the message list, and ancestor `z-index` creates a new
|
|
12
|
+
* stacking context that captures the in-tree menu. A portal is a
|
|
13
|
+
* sibling of the document, so a single `z-index: 9999` wins.
|
|
14
|
+
*
|
|
15
|
+
* The menu is positioned with `position: fixed` from the trigger's
|
|
16
|
+
* `getBoundingClientRect()`. We re-measure on `scroll` (capture phase, so
|
|
17
|
+
* nested scrollables also fire) and `resize` to keep the menu pinned
|
|
18
|
+
* while the user interacts with surrounding chrome.
|
|
19
|
+
*
|
|
20
|
+
* Close affordances : click outside, Escape, programmatic via `onClose`.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { Component, JSX, Show, createSignal, createEffect, onCleanup } from 'solid-js'
|
|
24
|
+
import { Portal } from 'solid-js/web'
|
|
25
|
+
|
|
26
|
+
export interface PortalDropdownMenuProps {
|
|
27
|
+
/**
|
|
28
|
+
* Whether the menu is currently open. Controlled by the parent.
|
|
29
|
+
*/
|
|
30
|
+
open: boolean
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Called when the menu wants to close (outside click / Escape / item
|
|
34
|
+
* click — it's the parent's job to actually flip `open` to false).
|
|
35
|
+
*/
|
|
36
|
+
onClose: () => void
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Trigger element used as the positioning anchor. The menu's right
|
|
40
|
+
* edge is aligned to the trigger's right edge, top to its bottom + 4px.
|
|
41
|
+
*/
|
|
42
|
+
trigger: HTMLElement | undefined
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Menu width in pixels. Used to compute the left coordinate so the menu's
|
|
46
|
+
* right edge aligns with the trigger's right edge. Default : `144` (the
|
|
47
|
+
* legacy table menu width — `w-36`).
|
|
48
|
+
*/
|
|
49
|
+
width?: number
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Menu content. Wrapped in the rounded / shadowed container — keep
|
|
53
|
+
* children minimal (just the items).
|
|
54
|
+
*/
|
|
55
|
+
children: JSX.Element
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Optional additional class names for the menu container, appended after
|
|
59
|
+
* the default Tailwind classes. Useful to override width or padding.
|
|
60
|
+
*/
|
|
61
|
+
class?: string
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export const PortalDropdownMenu: Component<PortalDropdownMenuProps> = (props) => {
|
|
65
|
+
const [position, setPosition] = createSignal({ top: 0, left: 0 })
|
|
66
|
+
let menuRef: HTMLDivElement | undefined
|
|
67
|
+
|
|
68
|
+
const updatePosition = () => {
|
|
69
|
+
const t = props.trigger
|
|
70
|
+
if (!t) return
|
|
71
|
+
const rect = t.getBoundingClientRect()
|
|
72
|
+
const w = props.width ?? 144
|
|
73
|
+
setPosition({
|
|
74
|
+
top: rect.bottom + 4,
|
|
75
|
+
left: rect.right - w,
|
|
76
|
+
})
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Measure once when the menu opens, then react to viewport changes.
|
|
80
|
+
createEffect(() => {
|
|
81
|
+
if (!props.open) return
|
|
82
|
+
updatePosition()
|
|
83
|
+
|
|
84
|
+
const onDown = (e: MouseEvent) => {
|
|
85
|
+
const target = e.target as Node
|
|
86
|
+
if (menuRef?.contains(target) || props.trigger?.contains(target)) return
|
|
87
|
+
props.onClose()
|
|
88
|
+
}
|
|
89
|
+
const onKey = (e: KeyboardEvent) => {
|
|
90
|
+
if (e.key === 'Escape') props.onClose()
|
|
91
|
+
}
|
|
92
|
+
const onScrollOrResize = () => updatePosition()
|
|
93
|
+
|
|
94
|
+
document.addEventListener('mousedown', onDown)
|
|
95
|
+
document.addEventListener('keydown', onKey)
|
|
96
|
+
// Capture phase so scrolls inside nested containers (e.g. chat virtual
|
|
97
|
+
// list) also re-position the menu. `passive: true` because we never
|
|
98
|
+
// preventDefault here.
|
|
99
|
+
window.addEventListener('scroll', onScrollOrResize, { capture: true, passive: true })
|
|
100
|
+
window.addEventListener('resize', onScrollOrResize)
|
|
101
|
+
|
|
102
|
+
onCleanup(() => {
|
|
103
|
+
document.removeEventListener('mousedown', onDown)
|
|
104
|
+
document.removeEventListener('keydown', onKey)
|
|
105
|
+
window.removeEventListener('scroll', onScrollOrResize, { capture: true })
|
|
106
|
+
window.removeEventListener('resize', onScrollOrResize)
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
return (
|
|
111
|
+
<Show when={props.open}>
|
|
112
|
+
<Portal>
|
|
113
|
+
<div
|
|
114
|
+
ref={menuRef}
|
|
115
|
+
role="menu"
|
|
116
|
+
style={{
|
|
117
|
+
position: 'fixed',
|
|
118
|
+
top: `${position().top}px`,
|
|
119
|
+
left: `${position().left}px`,
|
|
120
|
+
'z-index': 9999,
|
|
121
|
+
width: `${props.width ?? 144}px`,
|
|
122
|
+
}}
|
|
123
|
+
class={`bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg py-1 text-sm ${props.class ?? ''}`}
|
|
124
|
+
>
|
|
125
|
+
{props.children}
|
|
126
|
+
</div>
|
|
127
|
+
</Portal>
|
|
128
|
+
</Show>
|
|
129
|
+
)
|
|
130
|
+
}
|
|
@@ -41,6 +41,7 @@ import { CodeBlockRenderer } from './CodeBlockRenderer'
|
|
|
41
41
|
import { MapRenderer } from './MapRenderer'
|
|
42
42
|
import { GraphRenderer } from './GraphRenderer'
|
|
43
43
|
import { ExpandableWrapper, useExpanded } from './ExpandableWrapper'
|
|
44
|
+
import { PortalDropdownMenu } from './PortalDropdownMenu'
|
|
44
45
|
import { RenderProvider } from './RenderContext'
|
|
45
46
|
import { useAction } from '../hooks/useAction'
|
|
46
47
|
import { marked } from 'marked'
|
|
@@ -755,6 +756,8 @@ function TableRenderer(props: {
|
|
|
755
756
|
|
|
756
757
|
// Export dropdown state
|
|
757
758
|
const [showExportMenu, setShowExportMenu] = createSignal(false)
|
|
759
|
+
// v6.4.0 — trigger ref consumed by <PortalDropdownMenu> for positioning
|
|
760
|
+
let exportTriggerRef: HTMLButtonElement | undefined
|
|
758
761
|
|
|
759
762
|
const handleExport = (format: string) => {
|
|
760
763
|
setShowExportMenu(false)
|
|
@@ -841,28 +844,34 @@ function TableRenderer(props: {
|
|
|
841
844
|
<Show when={exportable} fallback={<CopyButton getText={getTableCSV} title="Copy table (CSV)" position="top-right" />}>
|
|
842
845
|
<div class="absolute right-10 top-2 z-10">
|
|
843
846
|
<button
|
|
847
|
+
ref={exportTriggerRef}
|
|
844
848
|
onClick={() => setShowExportMenu(!showExportMenu())}
|
|
845
849
|
class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"
|
|
846
850
|
title="Export table"
|
|
847
851
|
aria-label="Export table"
|
|
852
|
+
aria-haspopup="menu"
|
|
853
|
+
aria-expanded={showExportMenu()}
|
|
848
854
|
>
|
|
849
855
|
<svg class="w-3 h-3 text-gray-500 dark:text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
850
856
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
|
851
857
|
</svg>
|
|
852
858
|
</button>
|
|
853
|
-
<
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
</
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
</
|
|
864
|
-
</
|
|
865
|
-
|
|
859
|
+
<PortalDropdownMenu
|
|
860
|
+
open={showExportMenu()}
|
|
861
|
+
onClose={() => setShowExportMenu(false)}
|
|
862
|
+
trigger={exportTriggerRef}
|
|
863
|
+
width={144}
|
|
864
|
+
>
|
|
865
|
+
<Show when={(exportFormats as string[]).includes('tsv')}>
|
|
866
|
+
<button onClick={() => handleExport('tsv')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV</button>
|
|
867
|
+
</Show>
|
|
868
|
+
<Show when={(exportFormats as string[]).includes('csv')}>
|
|
869
|
+
<button onClick={() => handleExport('csv')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV</button>
|
|
870
|
+
</Show>
|
|
871
|
+
<Show when={(exportFormats as string[]).includes('json')}>
|
|
872
|
+
<button onClick={() => handleExport('json')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON</button>
|
|
873
|
+
</Show>
|
|
874
|
+
</PortalDropdownMenu>
|
|
866
875
|
</div>
|
|
867
876
|
</Show>
|
|
868
877
|
<div class={`p-4 ${isExpanded() ? 'flex-1 min-h-0 flex flex-col' : ''}`}>
|
package/src/components/index.ts
CHANGED
|
@@ -92,5 +92,9 @@ export type { RenderContextValue, RenderComponentFn } from './RenderContext'
|
|
|
92
92
|
export { ElicitationForm } from './ElicitationForm'
|
|
93
93
|
export type { ElicitationFormProps } from './ElicitationForm'
|
|
94
94
|
|
|
95
|
+
// v6.4.0 — Portal-mounted dropdown (used by table + graph Export menus)
|
|
96
|
+
export { PortalDropdownMenu } from './PortalDropdownMenu'
|
|
97
|
+
export type { PortalDropdownMenuProps } from './PortalDropdownMenu'
|
|
98
|
+
|
|
95
99
|
// Default exports for lazy loading compatibility
|
|
96
100
|
export { UIResourceRenderer as default } from './UIResourceRenderer'
|
package/src/index.ts
CHANGED
|
@@ -44,6 +44,7 @@ export type { FeedbackInlineProps, FeedbackInlineContext } from './components/Fe
|
|
|
44
44
|
export { ChatBusProvider, useChatBus } from './hooks/useChatBus'
|
|
45
45
|
export { ChatPrompt } from './components/ChatPrompt'
|
|
46
46
|
export { ElicitationForm } from './components/ElicitationForm'
|
|
47
|
+
export { PortalDropdownMenu } from './components/PortalDropdownMenu'
|
|
47
48
|
export { ScratchpadPanel } from './components/ScratchpadPanel'
|
|
48
49
|
export {
|
|
49
50
|
dispatchScratchpad,
|
|
@@ -126,6 +127,7 @@ export type { ExpandableWrapperProps } from './components/ExpandableWrapper'
|
|
|
126
127
|
export type { ComponentToolbarProps, ToolbarAction, ToolbarIcon } from './components/ComponentToolbar'
|
|
127
128
|
export type { ChatPromptProps } from './components/ChatPrompt'
|
|
128
129
|
export type { ElicitationFormProps } from './components/ElicitationForm'
|
|
130
|
+
export type { PortalDropdownMenuProps } from './components/PortalDropdownMenu'
|
|
129
131
|
export type { ScratchpadPanelProps } from './components/ScratchpadPanel'
|
|
130
132
|
export type { VerifiedTextProps } from './components/VerifiedText'
|
|
131
133
|
export type { DataPreviewSectionProps } from './components/DataPreviewSection'
|