@agent-native/toolkit 0.14.0 → 0.14.1
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/dist/chat-history/ChatHistoryList.d.ts.map +1 -1
- package/dist/chat-history/ChatHistoryList.js +9 -28
- package/dist/chat-history/ChatHistoryList.js.map +1 -1
- package/dist/chat-history/ChatHistoryList.spec.js +46 -36
- package/dist/chat-history/ChatHistoryList.spec.js.map +1 -1
- package/dist/chat-history.css +5 -15
- package/package.json +1 -1
- package/src/chat-history/ChatHistoryList.spec.tsx +80 -48
- package/src/chat-history/ChatHistoryList.tsx +86 -93
- package/src/chat-history.css +5 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHistoryList.d.ts","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChatHistoryList.d.ts","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
2
3
|
import { IconDots, IconPencil, IconPinned, IconPinnedOff, IconSearch, IconTrash, } from "@tabler/icons-react";
|
|
3
|
-
import React, {
|
|
4
|
+
import React, { useMemo, useRef, useState } from "react";
|
|
4
5
|
import { cn } from "../utils.js";
|
|
5
6
|
const DEFAULT_LABELS = {
|
|
6
7
|
options: "Chat options",
|
|
@@ -49,31 +50,11 @@ const ChatHistoryRow = React.memo(function ChatHistoryRow({ item, active, onSele
|
|
|
49
50
|
const [draftTitle, setDraftTitle] = useState("");
|
|
50
51
|
const [menuOpen, setMenuOpen] = useState(false);
|
|
51
52
|
const renameInputRef = useRef(null);
|
|
52
|
-
const menuRef = useRef(null);
|
|
53
53
|
const hasMenu = Boolean(onTogglePin ||
|
|
54
54
|
onRename ||
|
|
55
55
|
onDelete ||
|
|
56
56
|
renderRowActions ||
|
|
57
57
|
renderAdditionalRowActions);
|
|
58
|
-
useEffect(() => {
|
|
59
|
-
if (!menuOpen)
|
|
60
|
-
return;
|
|
61
|
-
function handlePointerDown(event) {
|
|
62
|
-
if (menuRef.current && !menuRef.current.contains(event.target)) {
|
|
63
|
-
setMenuOpen(false);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function handleKeyDown(event) {
|
|
67
|
-
if (event.key === "Escape")
|
|
68
|
-
setMenuOpen(false);
|
|
69
|
-
}
|
|
70
|
-
document.addEventListener("pointerdown", handlePointerDown);
|
|
71
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
72
|
-
return () => {
|
|
73
|
-
document.removeEventListener("pointerdown", handlePointerDown);
|
|
74
|
-
document.removeEventListener("keydown", handleKeyDown);
|
|
75
|
-
};
|
|
76
|
-
}, [menuOpen]);
|
|
77
58
|
function startRename() {
|
|
78
59
|
setDraftTitle(item.titleText ?? "");
|
|
79
60
|
setIsRenaming(true);
|
|
@@ -110,12 +91,12 @@ const ChatHistoryRow = React.memo(function ChatHistoryRow({ item, active, onSele
|
|
|
110
91
|
return;
|
|
111
92
|
event.preventDefault();
|
|
112
93
|
setMenuOpen(true);
|
|
113
|
-
}, children: [isRenaming ? (_jsx("div", { className: "an-chat-history-row__rename", children: _jsx("input", { ref: renameInputRef, className: "an-chat-history-row__rename-input", value: draftTitle, maxLength: renameMaxLength, onChange: (event) => setDraftTitle(event.target.value), onKeyDown: handleRenameKeyDown, onBlur: commitRename, autoFocus: true, "aria-label": renameInputLabel }) })) : (_jsxs("button", { type: "button", className: "an-chat-history-row__button", onClick: () => !item.disabled && onSelect(item.id), onDoubleClick: () => !item.disabled && onOpen?.(item.id), disabled: item.disabled, children: [_jsxs("div", { className: "an-chat-history-row__topline", children: [_jsx("span", { className: "an-chat-history-row__title", children: item.title }), item.timestamp != null && (_jsx("span", { className: "an-chat-history-row__timestamp", children: item.timestamp }))] }), item.subtitle != null && (_jsx("div", { className: "an-chat-history-row__subtitle", children: item.subtitle })), item.detail != null && (_jsx("div", { className: "an-chat-history-row__detail", children: item.detail }))] })), !isRenaming && hasMenu && (_jsxs("div", { className: "an-chat-history-row__menu",
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
94
|
+
}, children: [isRenaming ? (_jsx("div", { className: "an-chat-history-row__rename", children: _jsx("input", { ref: renameInputRef, className: "an-chat-history-row__rename-input", value: draftTitle, maxLength: renameMaxLength, onChange: (event) => setDraftTitle(event.target.value), onKeyDown: handleRenameKeyDown, onBlur: commitRename, autoFocus: true, "aria-label": renameInputLabel }) })) : (_jsxs("button", { type: "button", className: "an-chat-history-row__button", onClick: () => !item.disabled && onSelect(item.id), onDoubleClick: () => !item.disabled && onOpen?.(item.id), disabled: item.disabled, children: [_jsxs("div", { className: "an-chat-history-row__topline", children: [_jsx("span", { className: "an-chat-history-row__title", children: item.title }), item.timestamp != null && (_jsx("span", { className: "an-chat-history-row__timestamp", children: item.timestamp }))] }), item.subtitle != null && (_jsx("div", { className: "an-chat-history-row__subtitle", children: item.subtitle })), item.detail != null && (_jsx("div", { className: "an-chat-history-row__detail", children: item.detail }))] })), !isRenaming && hasMenu && (_jsx(DropdownMenuPrimitive.Root, { open: menuOpen, onOpenChange: setMenuOpen, children: _jsxs("div", { className: "an-chat-history-row__menu", children: [_jsx(DropdownMenuPrimitive.Trigger, { asChild: true, children: _jsx("button", { type: "button", className: cn("an-chat-history-row__menu-trigger", item.pinned && "an-chat-history-row__menu-trigger--pinned"), "aria-label": optionsLabel, "aria-haspopup": "menu", "aria-expanded": menuOpen, children: item.pinned ? (_jsx(IconPinned, { size: 13, strokeWidth: 1.8 })) : (_jsx(IconDots, { size: 14, strokeWidth: 1.8 })) }) }), _jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { className: "an-chat-history-row__menu-content", align: "end", collisionPadding: 8, side: "bottom", sideOffset: 4, children: renderRowActions ? (renderRowActions(item)) : (_jsxs(_Fragment, { children: [onRename && (_jsxs("button", { type: "button", role: "menuitem", className: "an-chat-history-row__menu-item", onClick: startRename, children: [_jsx(IconPencil, { size: 13, strokeWidth: 1.8 }), _jsx("span", { children: labels.rename })] })), onTogglePin && (_jsxs("button", { type: "button", role: "menuitem", className: "an-chat-history-row__menu-item", onClick: () => {
|
|
95
|
+
setMenuOpen(false);
|
|
96
|
+
onTogglePin(item.id);
|
|
97
|
+
}, children: [item.pinned ? (_jsx(IconPinnedOff, { size: 13, strokeWidth: 1.8 })) : (_jsx(IconPinned, { size: 13, strokeWidth: 1.8 })), _jsx("span", { children: item.pinned ? labels.unpin : labels.pin })] })), renderAdditionalRowActions?.(item, () => setMenuOpen(false)), onDelete && (_jsxs("button", { type: "button", role: "menuitem", className: "an-chat-history-row__menu-item an-chat-history-row__menu-item--danger", onClick: () => {
|
|
98
|
+
setMenuOpen(false);
|
|
99
|
+
onDelete(item.id);
|
|
100
|
+
}, children: [_jsx(IconTrash, { size: 13, strokeWidth: 1.8 }), _jsx("span", { children: labels.delete })] }))] })) }) })] }) }))] }));
|
|
120
101
|
});
|
|
121
102
|
//# sourceMappingURL=ChatHistoryList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHistoryList.js","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"ChatHistoryList.js","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,19 @@ function typeIntoInput(input, value) {
|
|
|
20
20
|
input.dispatchEvent(new Event("input", { bubbles: true }));
|
|
21
21
|
input.dispatchEvent(new Event("change", { bubbles: true }));
|
|
22
22
|
}
|
|
23
|
+
async function openMenu(trigger) {
|
|
24
|
+
await act(async () => {
|
|
25
|
+
trigger.dispatchEvent(new PointerEvent("pointerdown", {
|
|
26
|
+
bubbles: true,
|
|
27
|
+
button: 0,
|
|
28
|
+
pointerType: "mouse",
|
|
29
|
+
}));
|
|
30
|
+
await Promise.resolve();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function getMenuItems() {
|
|
34
|
+
return Array.from(document.body.querySelectorAll(".an-chat-history-row__menu-item"));
|
|
35
|
+
}
|
|
23
36
|
describe("ChatHistoryList", () => {
|
|
24
37
|
let container;
|
|
25
38
|
let root;
|
|
@@ -140,7 +153,7 @@ describe("ChatHistoryList", () => {
|
|
|
140
153
|
});
|
|
141
154
|
expect(container.querySelector(".an-chat-history-row__menu")).toBeNull();
|
|
142
155
|
});
|
|
143
|
-
it("supports pin toggling via the row action menu", () => {
|
|
156
|
+
it("supports pin toggling via the row action menu", async () => {
|
|
144
157
|
const onTogglePin = vi.fn();
|
|
145
158
|
const items = [
|
|
146
159
|
item({ id: "thread-1", title: "First chat" }),
|
|
@@ -150,17 +163,26 @@ describe("ChatHistoryList", () => {
|
|
|
150
163
|
});
|
|
151
164
|
const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
|
|
152
165
|
expect(trigger).not.toBeNull();
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
});
|
|
156
|
-
const pinItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((el) => el.textContent?.includes("Pin to top"));
|
|
166
|
+
await openMenu(trigger);
|
|
167
|
+
const pinItem = getMenuItems().find((el) => el.textContent?.includes("Pin to top"));
|
|
157
168
|
expect(pinItem).toBeDefined();
|
|
158
169
|
act(() => {
|
|
159
170
|
pinItem.click();
|
|
160
171
|
});
|
|
161
172
|
expect(onTogglePin).toHaveBeenCalledWith("thread-1");
|
|
162
173
|
});
|
|
163
|
-
it("
|
|
174
|
+
it("ports rail row menus outside the scroll container", async () => {
|
|
175
|
+
act(() => {
|
|
176
|
+
root.render(_jsx(ChatHistoryList, { variant: "rail", items: [item({ id: "thread-1" })], onSelect: () => { }, onDelete: () => { } }));
|
|
177
|
+
});
|
|
178
|
+
const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
|
|
179
|
+
await openMenu(trigger);
|
|
180
|
+
const menu = document.body.querySelector(".an-chat-history-row__menu-content");
|
|
181
|
+
expect(menu).not.toBeNull();
|
|
182
|
+
expect(menu?.closest(".an-chat-history__list")).toBeNull();
|
|
183
|
+
expect(menu?.getAttribute("role")).toBe("menu");
|
|
184
|
+
});
|
|
185
|
+
it("uses custom labels for localized row actions", async () => {
|
|
164
186
|
const onTogglePin = vi.fn();
|
|
165
187
|
const onDelete = vi.fn();
|
|
166
188
|
const labels = {
|
|
@@ -179,23 +201,19 @@ describe("ChatHistoryList", () => {
|
|
|
179
201
|
render();
|
|
180
202
|
const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
|
|
181
203
|
expect(trigger?.getAttribute("aria-label")).toBe(labels.options);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
expect(
|
|
186
|
-
|
|
187
|
-
expect(container.textContent).toContain(labels.delete);
|
|
188
|
-
const archiveItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((element) => element.textContent?.includes(labels.delete));
|
|
204
|
+
await openMenu(trigger);
|
|
205
|
+
expect(document.body.textContent).toContain(labels.rename);
|
|
206
|
+
expect(document.body.textContent).toContain(labels.pin);
|
|
207
|
+
expect(document.body.textContent).toContain(labels.delete);
|
|
208
|
+
const archiveItem = getMenuItems().find((element) => element.textContent?.includes(labels.delete));
|
|
189
209
|
act(() => {
|
|
190
210
|
archiveItem.click();
|
|
191
211
|
});
|
|
192
212
|
expect(onDelete).toHaveBeenCalledWith("thread-1");
|
|
193
213
|
render();
|
|
194
214
|
const renameTrigger = container.querySelector(".an-chat-history-row__menu-trigger");
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
});
|
|
198
|
-
const renameItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((element) => element.textContent?.includes(labels.rename));
|
|
215
|
+
await openMenu(renameTrigger);
|
|
216
|
+
const renameItem = getMenuItems().find((element) => element.textContent?.includes(labels.rename));
|
|
199
217
|
act(() => {
|
|
200
218
|
renameItem.click();
|
|
201
219
|
});
|
|
@@ -204,12 +222,10 @@ describe("ChatHistoryList", () => {
|
|
|
204
222
|
?.getAttribute("aria-label")).toBe(labels.renameInput);
|
|
205
223
|
render(true);
|
|
206
224
|
const pinnedTrigger = container.querySelector(".an-chat-history-row__menu-trigger");
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
});
|
|
210
|
-
expect(container.textContent).toContain(labels.unpin);
|
|
225
|
+
await openMenu(pinnedTrigger);
|
|
226
|
+
expect(document.body.textContent).toContain(labels.unpin);
|
|
211
227
|
});
|
|
212
|
-
it("supports inline rename via the row action menu", () => {
|
|
228
|
+
it("supports inline rename via the row action menu", async () => {
|
|
213
229
|
const onRename = vi.fn();
|
|
214
230
|
const items = [
|
|
215
231
|
item({ id: "thread-1", title: "Old title", titleText: "Old title" }),
|
|
@@ -218,10 +234,8 @@ describe("ChatHistoryList", () => {
|
|
|
218
234
|
root.render(_jsx(ChatHistoryList, { items: items, onSelect: () => { }, onRename: onRename, renameMaxLength: 160 }));
|
|
219
235
|
});
|
|
220
236
|
const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
});
|
|
224
|
-
const renameItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((el) => el.textContent?.includes("Rename"));
|
|
237
|
+
await openMenu(trigger);
|
|
238
|
+
const renameItem = getMenuItems().find((el) => el.textContent?.includes("Rename"));
|
|
225
239
|
act(() => {
|
|
226
240
|
renameItem.click();
|
|
227
241
|
});
|
|
@@ -237,7 +251,7 @@ describe("ChatHistoryList", () => {
|
|
|
237
251
|
});
|
|
238
252
|
expect(onRename).toHaveBeenCalledWith("thread-1", "New title");
|
|
239
253
|
});
|
|
240
|
-
it("supports item-aware labels and app-specific actions", () => {
|
|
254
|
+
it("supports item-aware labels and app-specific actions", async () => {
|
|
241
255
|
const onShare = vi.fn();
|
|
242
256
|
const items = [
|
|
243
257
|
item({ id: "thread-1", title: "Campaign", titleText: "Campaign" }),
|
|
@@ -253,19 +267,15 @@ describe("ChatHistoryList", () => {
|
|
|
253
267
|
});
|
|
254
268
|
const trigger = container.querySelector(".an-chat-history-row__menu-trigger");
|
|
255
269
|
expect(trigger?.getAttribute("aria-label")).toBe("Options for Campaign");
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
});
|
|
259
|
-
const shareItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((element) => element.textContent === "Share");
|
|
270
|
+
await openMenu(trigger);
|
|
271
|
+
const shareItem = getMenuItems().find((element) => element.textContent === "Share");
|
|
260
272
|
act(() => {
|
|
261
273
|
shareItem.click();
|
|
262
274
|
});
|
|
263
275
|
expect(onShare).toHaveBeenCalledWith("thread-1");
|
|
264
|
-
expect(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
});
|
|
268
|
-
const renameItem = Array.from(container.querySelectorAll(".an-chat-history-row__menu-item")).find((element) => element.textContent === "Rename");
|
|
276
|
+
expect(document.body.querySelector(".an-chat-history-row__menu-content")).toBeNull();
|
|
277
|
+
await openMenu(trigger);
|
|
278
|
+
const renameItem = getMenuItems().find((element) => element.textContent === "Rename");
|
|
269
279
|
act(() => {
|
|
270
280
|
renameItem.click();
|
|
271
281
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHistoryList.spec.js","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.spec.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChatHistoryList.spec.js","sourceRoot":"","sources":["../../src/chat-history/ChatHistoryList.spec.tsx"],"names":[],"mappings":"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"}
|
package/dist/chat-history.css
CHANGED
|
@@ -293,22 +293,14 @@
|
|
|
293
293
|
transition: opacity 100ms ease;
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
-
.an-chat-history--rail
|
|
297
|
-
.an-chat-history-row--has-menu
|
|
298
|
-
.an-chat-history-row__timestamp {
|
|
299
|
-
display: inline-flex;
|
|
300
|
-
min-width: 24px;
|
|
301
|
-
justify-content: flex-end;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
296
|
.an-chat-history--rail
|
|
305
297
|
.an-chat-history-row--active
|
|
306
298
|
.an-chat-history-row__timestamp {
|
|
307
299
|
color: hsl(var(--accent-foreground));
|
|
308
300
|
}
|
|
309
301
|
|
|
310
|
-
/*
|
|
311
|
-
the title's available width or moves the rest of the rail. */
|
|
302
|
+
/* Hide trailing metadata while the absolute menu takes its place so hover
|
|
303
|
+
never changes the title's available width or moves the rest of the rail. */
|
|
312
304
|
.an-chat-history--rail
|
|
313
305
|
.an-chat-history-row--has-menu:hover
|
|
314
306
|
.an-chat-history-row__timestamp,
|
|
@@ -375,10 +367,11 @@
|
|
|
375
367
|
position: absolute;
|
|
376
368
|
top: 4px;
|
|
377
369
|
inset-inline-end: 4px;
|
|
370
|
+
z-index: 1;
|
|
378
371
|
}
|
|
379
372
|
|
|
380
373
|
.an-chat-history--rail .an-chat-history-row__menu {
|
|
381
|
-
inset-inline-end:
|
|
374
|
+
inset-inline-end: 8px;
|
|
382
375
|
}
|
|
383
376
|
|
|
384
377
|
.an-chat-history-row__menu-trigger {
|
|
@@ -428,10 +421,7 @@
|
|
|
428
421
|
}
|
|
429
422
|
|
|
430
423
|
.an-chat-history-row__menu-content {
|
|
431
|
-
|
|
432
|
-
top: calc(100% + 4px);
|
|
433
|
-
inset-inline-end: 0;
|
|
434
|
-
z-index: 30;
|
|
424
|
+
z-index: 290;
|
|
435
425
|
min-width: 160px;
|
|
436
426
|
padding: 4px;
|
|
437
427
|
border: 1px solid hsl(var(--border));
|
package/package.json
CHANGED
|
@@ -33,6 +33,27 @@ function typeIntoInput(input: HTMLInputElement, value: string) {
|
|
|
33
33
|
input.dispatchEvent(new Event("change", { bubbles: true }));
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
async function openMenu(trigger: HTMLButtonElement) {
|
|
37
|
+
await act(async () => {
|
|
38
|
+
trigger.dispatchEvent(
|
|
39
|
+
new PointerEvent("pointerdown", {
|
|
40
|
+
bubbles: true,
|
|
41
|
+
button: 0,
|
|
42
|
+
pointerType: "mouse",
|
|
43
|
+
}),
|
|
44
|
+
);
|
|
45
|
+
await Promise.resolve();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function getMenuItems() {
|
|
50
|
+
return Array.from(
|
|
51
|
+
document.body.querySelectorAll<HTMLElement>(
|
|
52
|
+
".an-chat-history-row__menu-item",
|
|
53
|
+
),
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
36
57
|
describe("ChatHistoryList", () => {
|
|
37
58
|
let container: HTMLDivElement;
|
|
38
59
|
let root: Root;
|
|
@@ -216,7 +237,7 @@ describe("ChatHistoryList", () => {
|
|
|
216
237
|
expect(container.querySelector(".an-chat-history-row__menu")).toBeNull();
|
|
217
238
|
});
|
|
218
239
|
|
|
219
|
-
it("supports pin toggling via the row action menu", () => {
|
|
240
|
+
it("supports pin toggling via the row action menu", async () => {
|
|
220
241
|
const onTogglePin = vi.fn();
|
|
221
242
|
const items: ChatHistoryItem[] = [
|
|
222
243
|
item({ id: "thread-1", title: "First chat" }),
|
|
@@ -235,13 +256,11 @@ describe("ChatHistoryList", () => {
|
|
|
235
256
|
".an-chat-history-row__menu-trigger",
|
|
236
257
|
);
|
|
237
258
|
expect(trigger).not.toBeNull();
|
|
238
|
-
|
|
239
|
-
trigger!.click();
|
|
240
|
-
});
|
|
259
|
+
await openMenu(trigger!);
|
|
241
260
|
|
|
242
|
-
const pinItem =
|
|
243
|
-
|
|
244
|
-
)
|
|
261
|
+
const pinItem = getMenuItems().find((el) =>
|
|
262
|
+
el.textContent?.includes("Pin to top"),
|
|
263
|
+
);
|
|
245
264
|
expect(pinItem).toBeDefined();
|
|
246
265
|
act(() => {
|
|
247
266
|
(pinItem as HTMLButtonElement).click();
|
|
@@ -249,7 +268,32 @@ describe("ChatHistoryList", () => {
|
|
|
249
268
|
expect(onTogglePin).toHaveBeenCalledWith("thread-1");
|
|
250
269
|
});
|
|
251
270
|
|
|
252
|
-
it("
|
|
271
|
+
it("ports rail row menus outside the scroll container", async () => {
|
|
272
|
+
act(() => {
|
|
273
|
+
root.render(
|
|
274
|
+
<ChatHistoryList
|
|
275
|
+
variant="rail"
|
|
276
|
+
items={[item({ id: "thread-1" })]}
|
|
277
|
+
onSelect={() => {}}
|
|
278
|
+
onDelete={() => {}}
|
|
279
|
+
/>,
|
|
280
|
+
);
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
const trigger = container.querySelector<HTMLButtonElement>(
|
|
284
|
+
".an-chat-history-row__menu-trigger",
|
|
285
|
+
);
|
|
286
|
+
await openMenu(trigger!);
|
|
287
|
+
|
|
288
|
+
const menu = document.body.querySelector<HTMLElement>(
|
|
289
|
+
".an-chat-history-row__menu-content",
|
|
290
|
+
);
|
|
291
|
+
expect(menu).not.toBeNull();
|
|
292
|
+
expect(menu?.closest(".an-chat-history__list")).toBeNull();
|
|
293
|
+
expect(menu?.getAttribute("role")).toBe("menu");
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
it("uses custom labels for localized row actions", async () => {
|
|
253
297
|
const onTogglePin = vi.fn();
|
|
254
298
|
const onDelete = vi.fn();
|
|
255
299
|
const labels = {
|
|
@@ -281,16 +325,14 @@ describe("ChatHistoryList", () => {
|
|
|
281
325
|
".an-chat-history-row__menu-trigger",
|
|
282
326
|
);
|
|
283
327
|
expect(trigger?.getAttribute("aria-label")).toBe(labels.options);
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
expect(
|
|
288
|
-
expect(container.textContent).toContain(labels.pin);
|
|
289
|
-
expect(container.textContent).toContain(labels.delete);
|
|
328
|
+
await openMenu(trigger!);
|
|
329
|
+
expect(document.body.textContent).toContain(labels.rename);
|
|
330
|
+
expect(document.body.textContent).toContain(labels.pin);
|
|
331
|
+
expect(document.body.textContent).toContain(labels.delete);
|
|
290
332
|
|
|
291
|
-
const archiveItem =
|
|
292
|
-
|
|
293
|
-
)
|
|
333
|
+
const archiveItem = getMenuItems().find((element) =>
|
|
334
|
+
element.textContent?.includes(labels.delete),
|
|
335
|
+
);
|
|
294
336
|
act(() => {
|
|
295
337
|
(archiveItem as HTMLButtonElement).click();
|
|
296
338
|
});
|
|
@@ -300,12 +342,10 @@ describe("ChatHistoryList", () => {
|
|
|
300
342
|
const renameTrigger = container.querySelector<HTMLButtonElement>(
|
|
301
343
|
".an-chat-history-row__menu-trigger",
|
|
302
344
|
);
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
container.querySelectorAll(".an-chat-history-row__menu-item"),
|
|
308
|
-
).find((element) => element.textContent?.includes(labels.rename));
|
|
345
|
+
await openMenu(renameTrigger!);
|
|
346
|
+
const renameItem = getMenuItems().find((element) =>
|
|
347
|
+
element.textContent?.includes(labels.rename),
|
|
348
|
+
);
|
|
309
349
|
act(() => {
|
|
310
350
|
(renameItem as HTMLButtonElement).click();
|
|
311
351
|
});
|
|
@@ -319,13 +359,11 @@ describe("ChatHistoryList", () => {
|
|
|
319
359
|
const pinnedTrigger = container.querySelector<HTMLButtonElement>(
|
|
320
360
|
".an-chat-history-row__menu-trigger",
|
|
321
361
|
);
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
});
|
|
325
|
-
expect(container.textContent).toContain(labels.unpin);
|
|
362
|
+
await openMenu(pinnedTrigger!);
|
|
363
|
+
expect(document.body.textContent).toContain(labels.unpin);
|
|
326
364
|
});
|
|
327
365
|
|
|
328
|
-
it("supports inline rename via the row action menu", () => {
|
|
366
|
+
it("supports inline rename via the row action menu", async () => {
|
|
329
367
|
const onRename = vi.fn();
|
|
330
368
|
const items: ChatHistoryItem[] = [
|
|
331
369
|
item({ id: "thread-1", title: "Old title", titleText: "Old title" }),
|
|
@@ -344,12 +382,10 @@ describe("ChatHistoryList", () => {
|
|
|
344
382
|
const trigger = container.querySelector<HTMLButtonElement>(
|
|
345
383
|
".an-chat-history-row__menu-trigger",
|
|
346
384
|
);
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
container.querySelectorAll(".an-chat-history-row__menu-item"),
|
|
352
|
-
).find((el) => el.textContent?.includes("Rename"));
|
|
385
|
+
await openMenu(trigger!);
|
|
386
|
+
const renameItem = getMenuItems().find((el) =>
|
|
387
|
+
el.textContent?.includes("Rename"),
|
|
388
|
+
);
|
|
353
389
|
act(() => {
|
|
354
390
|
(renameItem as HTMLButtonElement).click();
|
|
355
391
|
});
|
|
@@ -372,7 +408,7 @@ describe("ChatHistoryList", () => {
|
|
|
372
408
|
expect(onRename).toHaveBeenCalledWith("thread-1", "New title");
|
|
373
409
|
});
|
|
374
410
|
|
|
375
|
-
it("supports item-aware labels and app-specific actions", () => {
|
|
411
|
+
it("supports item-aware labels and app-specific actions", async () => {
|
|
376
412
|
const onShare = vi.fn();
|
|
377
413
|
const items: ChatHistoryItem[] = [
|
|
378
414
|
item({ id: "thread-1", title: "Campaign", titleText: "Campaign" }),
|
|
@@ -407,27 +443,23 @@ describe("ChatHistoryList", () => {
|
|
|
407
443
|
".an-chat-history-row__menu-trigger",
|
|
408
444
|
);
|
|
409
445
|
expect(trigger?.getAttribute("aria-label")).toBe("Options for Campaign");
|
|
410
|
-
|
|
411
|
-
trigger!.click();
|
|
412
|
-
});
|
|
446
|
+
await openMenu(trigger!);
|
|
413
447
|
|
|
414
|
-
const shareItem =
|
|
415
|
-
|
|
416
|
-
)
|
|
448
|
+
const shareItem = getMenuItems().find(
|
|
449
|
+
(element) => element.textContent === "Share",
|
|
450
|
+
);
|
|
417
451
|
act(() => {
|
|
418
452
|
(shareItem as HTMLButtonElement).click();
|
|
419
453
|
});
|
|
420
454
|
expect(onShare).toHaveBeenCalledWith("thread-1");
|
|
421
455
|
expect(
|
|
422
|
-
|
|
456
|
+
document.body.querySelector(".an-chat-history-row__menu-content"),
|
|
423
457
|
).toBeNull();
|
|
424
458
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
container.querySelectorAll(".an-chat-history-row__menu-item"),
|
|
430
|
-
).find((element) => element.textContent === "Rename");
|
|
459
|
+
await openMenu(trigger!);
|
|
460
|
+
const renameItem = getMenuItems().find(
|
|
461
|
+
(element) => element.textContent === "Rename",
|
|
462
|
+
);
|
|
431
463
|
act(() => {
|
|
432
464
|
(renameItem as HTMLButtonElement).click();
|
|
433
465
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
1
2
|
import {
|
|
2
3
|
IconDots,
|
|
3
4
|
IconPencil,
|
|
@@ -6,7 +7,7 @@ import {
|
|
|
6
7
|
IconSearch,
|
|
7
8
|
IconTrash,
|
|
8
9
|
} from "@tabler/icons-react";
|
|
9
|
-
import React, {
|
|
10
|
+
import React, { useMemo, useRef, useState } from "react";
|
|
10
11
|
|
|
11
12
|
import { cn } from "../utils.js";
|
|
12
13
|
|
|
@@ -288,7 +289,6 @@ const ChatHistoryRow = React.memo(function ChatHistoryRow({
|
|
|
288
289
|
const [draftTitle, setDraftTitle] = useState("");
|
|
289
290
|
const [menuOpen, setMenuOpen] = useState(false);
|
|
290
291
|
const renameInputRef = useRef<HTMLInputElement | null>(null);
|
|
291
|
-
const menuRef = useRef<HTMLDivElement | null>(null);
|
|
292
292
|
|
|
293
293
|
const hasMenu = Boolean(
|
|
294
294
|
onTogglePin ||
|
|
@@ -298,24 +298,6 @@ const ChatHistoryRow = React.memo(function ChatHistoryRow({
|
|
|
298
298
|
renderAdditionalRowActions,
|
|
299
299
|
);
|
|
300
300
|
|
|
301
|
-
useEffect(() => {
|
|
302
|
-
if (!menuOpen) return;
|
|
303
|
-
function handlePointerDown(event: PointerEvent) {
|
|
304
|
-
if (menuRef.current && !menuRef.current.contains(event.target as Node)) {
|
|
305
|
-
setMenuOpen(false);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
function handleKeyDown(event: KeyboardEvent) {
|
|
309
|
-
if (event.key === "Escape") setMenuOpen(false);
|
|
310
|
-
}
|
|
311
|
-
document.addEventListener("pointerdown", handlePointerDown);
|
|
312
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
313
|
-
return () => {
|
|
314
|
-
document.removeEventListener("pointerdown", handlePointerDown);
|
|
315
|
-
document.removeEventListener("keydown", handleKeyDown);
|
|
316
|
-
};
|
|
317
|
-
}, [menuOpen]);
|
|
318
|
-
|
|
319
301
|
function startRename() {
|
|
320
302
|
setDraftTitle(item.titleText ?? "");
|
|
321
303
|
setIsRenaming(true);
|
|
@@ -409,79 +391,90 @@ const ChatHistoryRow = React.memo(function ChatHistoryRow({
|
|
|
409
391
|
)}
|
|
410
392
|
|
|
411
393
|
{!isRenaming && hasMenu && (
|
|
412
|
-
<
|
|
413
|
-
<
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
<
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
394
|
+
<DropdownMenuPrimitive.Root open={menuOpen} onOpenChange={setMenuOpen}>
|
|
395
|
+
<div className="an-chat-history-row__menu">
|
|
396
|
+
<DropdownMenuPrimitive.Trigger asChild>
|
|
397
|
+
<button
|
|
398
|
+
type="button"
|
|
399
|
+
className={cn(
|
|
400
|
+
"an-chat-history-row__menu-trigger",
|
|
401
|
+
item.pinned && "an-chat-history-row__menu-trigger--pinned",
|
|
402
|
+
)}
|
|
403
|
+
aria-label={optionsLabel}
|
|
404
|
+
aria-haspopup="menu"
|
|
405
|
+
aria-expanded={menuOpen}
|
|
406
|
+
>
|
|
407
|
+
{item.pinned ? (
|
|
408
|
+
<IconPinned size={13} strokeWidth={1.8} />
|
|
409
|
+
) : (
|
|
410
|
+
<IconDots size={14} strokeWidth={1.8} />
|
|
411
|
+
)}
|
|
412
|
+
</button>
|
|
413
|
+
</DropdownMenuPrimitive.Trigger>
|
|
414
|
+
<DropdownMenuPrimitive.Portal>
|
|
415
|
+
<DropdownMenuPrimitive.Content
|
|
416
|
+
className="an-chat-history-row__menu-content"
|
|
417
|
+
align="end"
|
|
418
|
+
collisionPadding={8}
|
|
419
|
+
side="bottom"
|
|
420
|
+
sideOffset={4}
|
|
421
|
+
>
|
|
422
|
+
{renderRowActions ? (
|
|
423
|
+
renderRowActions(item)
|
|
424
|
+
) : (
|
|
425
|
+
<>
|
|
426
|
+
{onRename && (
|
|
427
|
+
<button
|
|
428
|
+
type="button"
|
|
429
|
+
role="menuitem"
|
|
430
|
+
className="an-chat-history-row__menu-item"
|
|
431
|
+
onClick={startRename}
|
|
432
|
+
>
|
|
433
|
+
<IconPencil size={13} strokeWidth={1.8} />
|
|
434
|
+
<span>{labels.rename}</span>
|
|
435
|
+
</button>
|
|
436
|
+
)}
|
|
437
|
+
{onTogglePin && (
|
|
438
|
+
<button
|
|
439
|
+
type="button"
|
|
440
|
+
role="menuitem"
|
|
441
|
+
className="an-chat-history-row__menu-item"
|
|
442
|
+
onClick={() => {
|
|
443
|
+
setMenuOpen(false);
|
|
444
|
+
onTogglePin(item.id);
|
|
445
|
+
}}
|
|
446
|
+
>
|
|
447
|
+
{item.pinned ? (
|
|
448
|
+
<IconPinnedOff size={13} strokeWidth={1.8} />
|
|
449
|
+
) : (
|
|
450
|
+
<IconPinned size={13} strokeWidth={1.8} />
|
|
451
|
+
)}
|
|
452
|
+
<span>{item.pinned ? labels.unpin : labels.pin}</span>
|
|
453
|
+
</button>
|
|
454
|
+
)}
|
|
455
|
+
{renderAdditionalRowActions?.(item, () =>
|
|
456
|
+
setMenuOpen(false),
|
|
457
|
+
)}
|
|
458
|
+
{onDelete && (
|
|
459
|
+
<button
|
|
460
|
+
type="button"
|
|
461
|
+
role="menuitem"
|
|
462
|
+
className="an-chat-history-row__menu-item an-chat-history-row__menu-item--danger"
|
|
463
|
+
onClick={() => {
|
|
464
|
+
setMenuOpen(false);
|
|
465
|
+
onDelete(item.id);
|
|
466
|
+
}}
|
|
467
|
+
>
|
|
468
|
+
<IconTrash size={13} strokeWidth={1.8} />
|
|
469
|
+
<span>{labels.delete}</span>
|
|
470
|
+
</button>
|
|
471
|
+
)}
|
|
472
|
+
</>
|
|
473
|
+
)}
|
|
474
|
+
</DropdownMenuPrimitive.Content>
|
|
475
|
+
</DropdownMenuPrimitive.Portal>
|
|
476
|
+
</div>
|
|
477
|
+
</DropdownMenuPrimitive.Root>
|
|
485
478
|
)}
|
|
486
479
|
</div>
|
|
487
480
|
);
|
package/src/chat-history.css
CHANGED
|
@@ -293,22 +293,14 @@
|
|
|
293
293
|
transition: opacity 100ms ease;
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
-
.an-chat-history--rail
|
|
297
|
-
.an-chat-history-row--has-menu
|
|
298
|
-
.an-chat-history-row__timestamp {
|
|
299
|
-
display: inline-flex;
|
|
300
|
-
min-width: 24px;
|
|
301
|
-
justify-content: flex-end;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
296
|
.an-chat-history--rail
|
|
305
297
|
.an-chat-history-row--active
|
|
306
298
|
.an-chat-history-row__timestamp {
|
|
307
299
|
color: hsl(var(--accent-foreground));
|
|
308
300
|
}
|
|
309
301
|
|
|
310
|
-
/*
|
|
311
|
-
the title's available width or moves the rest of the rail. */
|
|
302
|
+
/* Hide trailing metadata while the absolute menu takes its place so hover
|
|
303
|
+
never changes the title's available width or moves the rest of the rail. */
|
|
312
304
|
.an-chat-history--rail
|
|
313
305
|
.an-chat-history-row--has-menu:hover
|
|
314
306
|
.an-chat-history-row__timestamp,
|
|
@@ -375,10 +367,11 @@
|
|
|
375
367
|
position: absolute;
|
|
376
368
|
top: 4px;
|
|
377
369
|
inset-inline-end: 4px;
|
|
370
|
+
z-index: 1;
|
|
378
371
|
}
|
|
379
372
|
|
|
380
373
|
.an-chat-history--rail .an-chat-history-row__menu {
|
|
381
|
-
inset-inline-end:
|
|
374
|
+
inset-inline-end: 8px;
|
|
382
375
|
}
|
|
383
376
|
|
|
384
377
|
.an-chat-history-row__menu-trigger {
|
|
@@ -428,10 +421,7 @@
|
|
|
428
421
|
}
|
|
429
422
|
|
|
430
423
|
.an-chat-history-row__menu-content {
|
|
431
|
-
|
|
432
|
-
top: calc(100% + 4px);
|
|
433
|
-
inset-inline-end: 0;
|
|
434
|
-
z-index: 30;
|
|
424
|
+
z-index: 290;
|
|
435
425
|
min-width: 160px;
|
|
436
426
|
padding: 4px;
|
|
437
427
|
border: 1px solid hsl(var(--border));
|