public MDPasswordField(String label, boolean light) { String primaryStyleName = light ? Styles.TextFields.LIGHT : Styles.TextFields.DARK; setPrimaryStyleName(primaryStyleName); setFloatingLabelEnabled(true); this.label.setValue(label); this.label.setPrimaryStyleName(primaryStyleName + "-label"); this.label.addStyleName(RESTING); this.label.setWidthUndefined(); this.icon.setPrimaryStyleName(primaryStyleName + "-icon"); this.field.setPrimaryStyleName(primaryStyleName + "-input"); this.field.addFocusListener(event -> { addStyleName("focus"); updateFloatingLabelPosition(field.getValue()); }); this.field.addBlurListener(event -> { removeStyleName("focus"); updateFloatingLabelPosition(field.getValue()); }); this.field.addValueChangeListener(event -> updateFloatingLabelPosition(event.getValue())); this.helper.setPrimaryStyleName(primaryStyleName + "-helper"); this.helper.setWidthUndefined(); addComponents(this.label, icon, field, this.helper); }