Repository navigation
Conversation
Add ConversationList and ConversationHeader, the Assistant panel's conversation browsing UI, buildable and reviewable without a server. ConversationList takes conversation data and the selection state as props, shows the list grouped into a "Today" section (with a relative time) and an "Earlier" section, search with a distinct empty-search message, and a delete request per conversation. ConversationHeader shows the inner header for the selected conversation. Both report every action (new conversation, selection, delete request, search term change) through callbacks; actual deletion and its confirmation step stay with panel assembly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Thanks, the components and stories look good and follow the existing patterns. Two small changes before merging:
- Untitled conversations: the server stores
nullwhen the create request has no title, which leaves the row button without a name and labels the delete button "Delete undefined" (ConversationList.tsx:59,92,ConversationHeader.tsx). A shared fallback such as "Untitled conversation" for the visible title and both labels would fix it. - ID coverage in tests: the select and delete tests only click the first row, so they still pass if every row sends
'a'(ConversationList.spec.tsx:123,139). Clicking the second row and expecting'b'would cover the ID the issue asks for.
Optional, not blocking:
- A story with
selectedIdset would let reviewers see the selected row. - If the panel passes an already-filtered list, an empty result during a search shows "No conversations yet."; keying the message on
searchingwould avoid it. - The read-only marker and the relative time have no tests yet.
- Other components put
import * as styleslast.
|
@xhaktm00 #5561 is on On |
|
Correction on item 1: the server doesn't store |
What is this PR for?
Add
ConversationListandConversationHeader, the Assistant panel's conversation browsing UI, reviewable in Storybook without a server.Components
ConversationListConversationHeaderBeyond the acceptance criteria
canSendMessage === false) show a lock and no delete buttonTitle handling
titleas is with no fallback for an untitled conversationAssistantConversationRestApi#create)What type of PR is it?
Feature
Todos
ConversationListwith search, distinct empty states, "Today"/"Earlier" sections, and delete requestsConversationHeaderfor the selected conversationWhat is the Jira issue?
ZEPPELIN-6747
How should this be tested?
Run from
zeppelin-web-angular/projects/zeppelin-react/:npm ci npm test npm run typecheck npm run lint npm run build:storybook npm run storybooknpm testruns 22 files and 150 tests, 20 of them new. In Storybook, checkAssistant/ConversationList(Empty, Search, SelectAndDelete, TodayAndEarlier) andAssistant/ConversationHeader(Current, NoSelection, ReadOnly) in both the light and dark themes.Screenshots (if appropriate)
N/A
Questions: