|
29 | 29 | import com.vaadin.flow.component.dependency.CssImport; |
30 | 30 | import com.vaadin.flow.component.dependency.JsModule; |
31 | 31 | import com.vaadin.flow.component.dependency.NpmPackage; |
| 32 | +import com.vaadin.flow.component.grid.Grid; |
| 33 | +import com.vaadin.flow.component.grid.GridVariant; |
32 | 34 | import com.vaadin.flow.component.html.Span; |
33 | 35 | import com.vaadin.flow.component.icon.Icon; |
34 | 36 | import com.vaadin.flow.component.icon.VaadinIcon; |
|
39 | 41 | import com.vaadin.flow.component.orderedlayout.VerticalLayout; |
40 | 42 | import com.vaadin.flow.component.popover.Popover; |
41 | 43 | import com.vaadin.flow.component.react.ReactAdapterComponent; |
42 | | -import com.vaadin.flow.component.virtuallist.VirtualList; |
43 | 44 | import com.vaadin.flow.data.provider.DataProvider; |
44 | 45 | import com.vaadin.flow.data.renderer.ComponentRenderer; |
45 | 46 | import com.vaadin.flow.data.renderer.Renderer; |
46 | 47 | import com.vaadin.flow.function.SerializableSupplier; |
47 | 48 | import com.vaadin.flow.shared.Registration; |
48 | | - |
49 | 49 | import java.time.LocalDateTime; |
50 | 50 | import java.util.ArrayList; |
51 | 51 | import java.util.List; |
|
70 | 70 | public class ChatAssistant<T extends Message> extends ReactAdapterComponent implements ClickNotifier<ChatAssistant<T>> { |
71 | 71 |
|
72 | 72 | private static final String CHAT_HEADER_CLASS_NAME = "chat-header"; |
73 | | - private static final String PADDING_SMALL = "0.5em"; |
74 | 73 |
|
75 | 74 | private Component headerComponent; |
76 | 75 | private VerticalLayout container; |
77 | 76 | private Component footerContainer; |
78 | | - private VirtualList<T> content = new VirtualList<>(); |
| 77 | + private Grid<T> content = new Grid<>(); |
79 | 78 | private Popover chatWindow; |
80 | 79 | private List<T> messages; |
81 | 80 | private MessageInput messageInput; |
@@ -149,7 +148,10 @@ private void initializeFooter() { |
149 | 148 |
|
150 | 149 | @SuppressWarnings("unchecked") |
151 | 150 | private void initializeContent(boolean markdownEnabled) { |
152 | | - content.setRenderer(new ComponentRenderer<>(message -> new ChatMessage<T>(message, markdownEnabled), |
| 151 | + content.addThemeVariants(GridVariant.LUMO_NO_BORDER); |
| 152 | + content.addThemeVariants(GridVariant.LUMO_NO_ROW_BORDERS); |
| 153 | + content.setClassName("chat-assistant-grid-compact"); |
| 154 | + content.addColumn(m->m.getContent()).setKey("content").setRenderer(new ComponentRenderer<>(message -> new ChatMessage<T>(message, markdownEnabled), |
153 | 155 | (component, message) -> { |
154 | 156 | ((ChatMessage<T>) component).setMessage(message); |
155 | 157 | return component; |
@@ -381,7 +383,7 @@ public void scrollToEnd() { |
381 | 383 | */ |
382 | 384 | public void setMessagesRenderer(Renderer<T> renderer) { |
383 | 385 | Objects.requireNonNull(renderer, "Renderer cannot not be null"); |
384 | | - content.setRenderer(renderer); |
| 386 | + content.getColumnByKey("content").setRenderer(renderer); |
385 | 387 | } |
386 | 388 |
|
387 | 389 | /** |
|
0 commit comments