diff options
author | Artur Signell <artur@vaadin.com> | 2015-04-24 16:51:22 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-05-05 06:59:34 +0000 |
commit | 8b93cba4dec9cc04adc8776d116042755d18fe1e (patch) | |
tree | 687e8fa240fc2bd83e0a7bbb2de8bb4314084773 /client | |
parent | 3c5824fad9f22a3091d2bcb52122959c513d14f7 (diff) | |
download | vaadin-framework-8b93cba4dec9cc04adc8776d116042755d18fe1e.tar.gz vaadin-framework-8b93cba4dec9cc04adc8776d116042755d18fe1e.zip |
Fix enabled handling for DateField and PopupDateField (#17620)
Change-Id: I3e38bb5c03453b6c1ad5c9bb717241297a779f73
Diffstat (limited to 'client')
-rw-r--r-- | client/src/com/vaadin/client/ui/VPopupCalendar.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/client/src/com/vaadin/client/ui/VPopupCalendar.java b/client/src/com/vaadin/client/ui/VPopupCalendar.java index cf88ceb8d6..bbf654980b 100644 --- a/client/src/com/vaadin/client/ui/VPopupCalendar.java +++ b/client/src/com/vaadin/client/ui/VPopupCalendar.java @@ -269,24 +269,29 @@ public class VPopupCalendar extends VTextualDate implements Field, */ public void setTextFieldEnabled(boolean textFieldEnabled) { this.textFieldEnabled = textFieldEnabled; + updateTextFieldEnabled(); + } + + protected void updateTextFieldEnabled() { + boolean reallyEnabled = isEnabled() && isTextFieldEnabled(); // IE has a non input disabled themeing that can not be overridden so we // must fake the functionality using readonly and unselectable if (BrowserInfo.get().isIE()) { - if (!textFieldEnabled) { + if (!reallyEnabled) { text.getElement().setAttribute("unselectable", "on"); text.getElement().setAttribute("readonly", ""); text.setTabIndex(-2); - } else if (textFieldEnabled + } else if (reallyEnabled && text.getElement().hasAttribute("unselectable")) { text.getElement().removeAttribute("unselectable"); text.getElement().removeAttribute("readonly"); text.setTabIndex(0); } } else { - text.setEnabled(textFieldEnabled); + text.setEnabled(reallyEnabled); } - if (textFieldEnabled) { + if (reallyEnabled) { calendarToggle.setTabIndex(-1); Roles.getButtonRole().setAriaHiddenState( calendarToggle.getElement(), true); @@ -466,7 +471,7 @@ public class VPopupCalendar extends VTextualDate implements Field, @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); - + updateTextFieldEnabled(); calendarToggle.setEnabled(enabled); Roles.getButtonRole().setAriaDisabledState(calendarToggle.getElement(), !enabled); @@ -500,9 +505,7 @@ public class VPopupCalendar extends VTextualDate implements Field, if (!parsable) { setText(previousValue); } - - // superclass sets the text field independently when building date - setTextFieldEnabled(isEnabled() && isTextFieldEnabled()); + updateTextFieldEnabled(); } /** |