<dependencies>
<!-- Vaadin Element MixIn -->
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-mixin</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
import com.vaadin.flow.component.AbstractSinglePropertyField;
import com.vaadin.flow.component.Tag;
import com.vaadin.flow.component.mixins.HasStyle;
@Tag("my-custom-component")
public abstract class MyCustomComponentMixin extends AbstractSinglePropertyField<MyCustomComponentMixin, String> implements HasStyle {
public MyCustomComponentMixin() {
super("value", "", false);
}
public void setCustomAttribute(String value) {
getElement().setAttribute("custom-attribute", value);
}
public String getCustomAttribute() {
return getElement().getAttribute("custom-attribute");
}
}
public interface MyCustomComponent extends HasStyle {
void setCustomAttribute(String value);
String getCustomAttribute();
}
@Mixin(MyCustomComponentMixin.class)
public class MyCustomComponentImpl extends AbstractSinglePropertyField<TextFieldImpl, String> implements MyCustomComponent {
public MyCustomComponentImpl() {
super("value", "", false);
}
}