feat: implemented appending and deleting answers
This commit is contained in:
parent
726904e939
commit
6419f59937
@ -25,7 +25,7 @@ public class DialogEditor extends VerticalLayout {
|
||||
private final TextArea fieldComment;
|
||||
private final TextArea fieldText;
|
||||
private final Button buttonNewAnswer;
|
||||
private final VerticalLayout layoutAnswers;
|
||||
private final AnswersLayout layoutAnswers;
|
||||
private final ArrayList<AnswerComponent> answers = new ArrayList<>();
|
||||
|
||||
public DialogEditor(DialogueContext ctx) {
|
||||
@ -45,9 +45,7 @@ public class DialogEditor extends VerticalLayout {
|
||||
|
||||
add(new H3("Ответы диалога"));
|
||||
add(buttonNewAnswer = createButtonNewAnswer());
|
||||
add(layoutAnswers = new VerticalLayout());
|
||||
layoutAnswers.getStyle().set("border", "2px solid #1C6EA4");
|
||||
layoutAnswers.getStyle().set("border-radius", "26px");
|
||||
add(layoutAnswers = new AnswersLayout());
|
||||
updateAnswers();
|
||||
}
|
||||
|
||||
@ -78,7 +76,14 @@ public class DialogEditor extends VerticalLayout {
|
||||
return;
|
||||
}
|
||||
|
||||
answers.add(new AnswerComponent());
|
||||
var component = new AnswerComponent();
|
||||
|
||||
component.onDelete = answer -> {
|
||||
answers.removeIf(target -> target.uuid.equals(answer.uuid));
|
||||
updateAnswers();
|
||||
};
|
||||
|
||||
answers.add(component);
|
||||
updateAnswers();
|
||||
});
|
||||
button.addThemeVariants(ButtonVariant.LUMO_SUCCESS, ButtonVariant.LUMO_PRIMARY);
|
||||
@ -94,6 +99,14 @@ public class DialogEditor extends VerticalLayout {
|
||||
}
|
||||
}
|
||||
|
||||
private static class AnswersLayout extends VerticalLayout {
|
||||
|
||||
private AnswersLayout() {
|
||||
getStyle().set("border", "2px solid #1C6EA4");
|
||||
getStyle().set("border-radius", "26px");
|
||||
}
|
||||
}
|
||||
|
||||
private static class AnswerComponent extends VerticalLayout {
|
||||
|
||||
private final UUID uuid = UUID.randomUUID();
|
||||
@ -109,6 +122,7 @@ public class DialogEditor extends VerticalLayout {
|
||||
commentDetail.setWidth("100%");
|
||||
commentDetail.add(fieldComment = createFieldComment());
|
||||
add(commentDetail);
|
||||
add(createButtonDelete());
|
||||
|
||||
getStyle().set("background-color", "#EEEEEE");
|
||||
getStyle().set("border-radius", "26px");
|
||||
@ -130,5 +144,15 @@ public class DialogEditor extends VerticalLayout {
|
||||
field.setPlaceholder("Какая-то заметка для разработчика");
|
||||
return field;
|
||||
}
|
||||
|
||||
private Button createButtonDelete() {
|
||||
var button = new Button("Удалить ответ", e -> {
|
||||
if (onDelete != null) onDelete.accept(this);
|
||||
});
|
||||
button.addThemeVariants(ButtonVariant.LUMO_ERROR, ButtonVariant.LUMO_PRIMARY);
|
||||
button.setPrefixComponent(VaadinIcon.TRASH.create());
|
||||
button.setWidth(100, Unit.PERCENTAGE);
|
||||
return button;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user