Skip to content

Commit 709c596

Browse files
committed
fix: use grid instead of virtual-list
Fixes #47
1 parent 2555525 commit 709c596

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/main/java/com/flowingcode/vaadin/addons/chatassistant/ChatAssistant.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import com.vaadin.flow.component.dependency.CssImport;
3030
import com.vaadin.flow.component.dependency.JsModule;
3131
import com.vaadin.flow.component.dependency.NpmPackage;
32+
import com.vaadin.flow.component.grid.Grid;
33+
import com.vaadin.flow.component.grid.GridVariant;
3234
import com.vaadin.flow.component.html.Span;
3335
import com.vaadin.flow.component.icon.Icon;
3436
import com.vaadin.flow.component.icon.VaadinIcon;
@@ -39,13 +41,11 @@
3941
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
4042
import com.vaadin.flow.component.popover.Popover;
4143
import com.vaadin.flow.component.react.ReactAdapterComponent;
42-
import com.vaadin.flow.component.virtuallist.VirtualList;
4344
import com.vaadin.flow.data.provider.DataProvider;
4445
import com.vaadin.flow.data.renderer.ComponentRenderer;
4546
import com.vaadin.flow.data.renderer.Renderer;
4647
import com.vaadin.flow.function.SerializableSupplier;
4748
import com.vaadin.flow.shared.Registration;
48-
4949
import java.time.LocalDateTime;
5050
import java.util.ArrayList;
5151
import java.util.List;
@@ -69,13 +69,14 @@
6969
@CssImport("./styles/chat-assistant-styles.css")
7070
public class ChatAssistant<T extends Message> extends ReactAdapterComponent implements ClickNotifier<ChatAssistant<T>> {
7171

72+
private static final String CHAT_ASSISTANT_GRID_COMPACT = "chat-assistant-grid-compact";
73+
7274
private static final String CHAT_HEADER_CLASS_NAME = "chat-header";
73-
private static final String PADDING_SMALL = "0.5em";
7475

7576
private Component headerComponent;
7677
private VerticalLayout container;
7778
private Component footerContainer;
78-
private VirtualList<T> content = new VirtualList<>();
79+
private Grid<T> content = new Grid<>();
7980
private Popover chatWindow;
8081
private List<T> messages;
8182
private MessageInput messageInput;
@@ -149,7 +150,10 @@ private void initializeFooter() {
149150

150151
@SuppressWarnings("unchecked")
151152
private void initializeContent(boolean markdownEnabled) {
152-
content.setRenderer(new ComponentRenderer<>(message -> new ChatMessage<T>(message, markdownEnabled),
153+
content.addThemeVariants(GridVariant.LUMO_NO_BORDER);
154+
content.addThemeVariants(GridVariant.LUMO_NO_ROW_BORDERS);
155+
content.setClassName(CHAT_ASSISTANT_GRID_COMPACT);
156+
content.addColumn(m->m.getContent()).setKey("content").setRenderer(new ComponentRenderer<>(message -> new ChatMessage<T>(message, markdownEnabled),
153157
(component, message) -> {
154158
((ChatMessage<T>) component).setMessage(message);
155159
return component;
@@ -381,7 +385,7 @@ public void scrollToEnd() {
381385
*/
382386
public void setMessagesRenderer(Renderer<T> renderer) {
383387
Objects.requireNonNull(renderer, "Renderer cannot not be null");
384-
content.setRenderer(renderer);
388+
content.getColumnByKey("content").setRenderer(renderer);
385389
}
386390

387391
/**

src/main/resources/META-INF/frontend/styles/chat-assistant-styles.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ vaadin-popover-overlay::part(overlay) {
5555
max-height: 100vh; /* Prevent height beyond viewport */
5656
}
5757

58+
vaadin-grid.chat-assistant-grid-compact vaadin-grid-cell-content {
59+
padding: 0px;
60+
}
61+
5862
/* Mobile breakpoint */
5963
@media (max-width: 768px) {
6064
vaadin-popover-overlay::part(overlay) {

0 commit comments

Comments
 (0)