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 fieldComment;
|
||||||
private final TextArea fieldText;
|
private final TextArea fieldText;
|
||||||
private final Button buttonNewAnswer;
|
private final Button buttonNewAnswer;
|
||||||
private final VerticalLayout layoutAnswers;
|
private final AnswersLayout layoutAnswers;
|
||||||
private final ArrayList<AnswerComponent> answers = new ArrayList<>();
|
private final ArrayList<AnswerComponent> answers = new ArrayList<>();
|
||||||
|
|
||||||
public DialogEditor(DialogueContext ctx) {
|
public DialogEditor(DialogueContext ctx) {
|
||||||
@ -45,9 +45,7 @@ public class DialogEditor extends VerticalLayout {
|
|||||||
|
|
||||||
add(new H3("Ответы диалога"));
|
add(new H3("Ответы диалога"));
|
||||||
add(buttonNewAnswer = createButtonNewAnswer());
|
add(buttonNewAnswer = createButtonNewAnswer());
|
||||||
add(layoutAnswers = new VerticalLayout());
|
add(layoutAnswers = new AnswersLayout());
|
||||||
layoutAnswers.getStyle().set("border", "2px solid #1C6EA4");
|
|
||||||
layoutAnswers.getStyle().set("border-radius", "26px");
|
|
||||||
updateAnswers();
|
updateAnswers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,7 +76,14 @@ public class DialogEditor extends VerticalLayout {
|
|||||||
return;
|
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();
|
updateAnswers();
|
||||||
});
|
});
|
||||||
button.addThemeVariants(ButtonVariant.LUMO_SUCCESS, ButtonVariant.LUMO_PRIMARY);
|
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 static class AnswerComponent extends VerticalLayout {
|
||||||
|
|
||||||
private final UUID uuid = UUID.randomUUID();
|
private final UUID uuid = UUID.randomUUID();
|
||||||
@ -109,6 +122,7 @@ public class DialogEditor extends VerticalLayout {
|
|||||||
commentDetail.setWidth("100%");
|
commentDetail.setWidth("100%");
|
||||||
commentDetail.add(fieldComment = createFieldComment());
|
commentDetail.add(fieldComment = createFieldComment());
|
||||||
add(commentDetail);
|
add(commentDetail);
|
||||||
|
add(createButtonDelete());
|
||||||
|
|
||||||
getStyle().set("background-color", "#EEEEEE");
|
getStyle().set("background-color", "#EEEEEE");
|
||||||
getStyle().set("border-radius", "26px");
|
getStyle().set("border-radius", "26px");
|
||||||
@ -130,5 +144,15 @@ public class DialogEditor extends VerticalLayout {
|
|||||||
field.setPlaceholder("Какая-то заметка для разработчика");
|
field.setPlaceholder("Какая-то заметка для разработчика");
|
||||||
return field;
|
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