With the Custom Theme feature, you can add your custom theme @Theme(value = "my-theme")
, create a CSS stylesheet file ${project.basedir}/frontend/themes/my-theme/components/vaadin-text-field.css
and place the following there:
:host(.my-class-red) [part="input-field"]{
color:red
}
:host(.my-class-blue) [part="input-field"]{
color:blue
}
On the Java side:
TextField name = new TextField("Your name");
name.setLabel("My label");
Button red = new Button("Red", click -> {
name.removeClassName("my-class-blue");
name.addClassName("my-class-red");
});
Button blue = new Button("Blue", click -> {
name.removeClassName("my-class-red");
name.addClassName("my-class-blue");
});
Button reset = new Button("Reset", click -> {
name.removeClassNames("my-class-red", "my-class-blue");
});
add(red, blue, reset);