Author: mgrigorov
Date: Mon Jul 25 15:05:28 2011
New Revision: 1150736
URL: http://svn.apache.org/viewvc?rev=1150736&view=rev
Log:
WICKET-3932 Hide the DatePicker, when the user clicks on an area of the
document outside of the DatePicker
Modified:
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
Modified:
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
---
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
(original)
+++
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
Mon Jul 25 15:05:28 2011
@@ -138,6 +138,12 @@ public class DatePicker extends Behavior
private boolean showOnFieldClick = false;
/**
+ * A setting that decides whether to close the date picker when the
user clicks somewhere else
+ * on the document.
+ */
+ private boolean autoHide = false;
+
+ /**
* Construct.
*/
public DatePicker()
@@ -240,6 +246,7 @@ public class DatePicker extends Behavior
variables.put("alignWithIcon", alignWithIcon());
variables.put("hideOnSelect", hideOnSelect());
variables.put("showOnFieldClick", showOnFieldClick());
+ variables.put("autoHide", autoHide());
String script = getAdditionalJavaScript();
if (script != null)
@@ -743,6 +750,31 @@ public class DatePicker extends Behavior
return this;
}
+
+ /**
+ * Indicates whether the calendar should be hidden when the user clicks
on an area of the
+ * document outside of the dialog.
+ *
+ * @return <code>true</code> <br/>
+ * <code>false</code> (default)
+ */
+ protected boolean autoHide()
+ {
+ return autoHide;
+ }
+
+ /**
+ * @param autoHide
+ * a flag indicating whether to hide the picker on click
event
+ * @return {@code this} instance to be able to chain calls
+ * @see {@link #autoHide()}
+ */
+ public DatePicker setAutoHide(boolean autoHide)
+ {
+ this.autoHide = autoHide;
+ return this;
+ }
+
/**
* Indicates whether the calendar should be rendered after it has been
loaded.
*
Modified:
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
---
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
(original)
+++
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
Mon Jul 25 15:05:28 2011
@@ -16,6 +16,6 @@
*/
wicketCalendarAdd(function() {
Wicket.DateTime.init2("${widgetId}", "${componentId}", ${calendarInit},
"${datePattern}",
- ${alignWithIcon}, ${fireChangeEvent}, ${hideOnSelect},
${showOnFieldClick}, ${i18n});
+ ${alignWithIcon}, ${fireChangeEvent}, ${hideOnSelect},
${showOnFieldClick}, ${i18n}, ${autoHide});
${additionalJavascript}
});
Modified:
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
---
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
(original)
+++
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
Mon Jul 25 15:05:28 2011
@@ -262,12 +262,25 @@ Wicket.DateTime.init = function(cfg) {
}
YAHOO.wicket[cfg.dpJs].selectEvent.subscribe(selectHandler,YAHOO.wicket[cfg.dpJs]);
- YAHOO.wicket[cfg.dpJs].render();
+
+ if(cfg.autoHide) {
+ YAHOO.util.Event.on(document, "click", function(e) {
+
+ var el = YAHOO.util.Event.getTarget(e);
+ var dialogEl = document.getElementById(cfg.dpJs);
+ var showBtn = document.getElementById(cfg.icon);
+
+ if (el != dialogEl &&
!YAHOO.util.Dom.isAncestor(dialogEl, el) && el != showBtn &&
!YAHOO.util.Dom.isAncestor(showBtn, el)) {
+ YAHOO.wicket[cfg.dpJs].hide();
+ }
+ });
+ }
+ YAHOO.wicket[cfg.dpJs].render();
}
// init method variant that needs less character to invoke
Wicket.DateTime.init2 = function(widgetId, componentId, calendarInit,
datePattern,
- alignWithIcon, fireChangeEvent, hideOnSelect, showOnFieldClick,
i18n) {
+ alignWithIcon, fireChangeEvent, hideOnSelect, showOnFieldClick,
i18n, autoHide) {
calendarInit.MONTHS_SHORT = i18n.MONTHS_SHORT;
calendarInit.MONTHS_LONG = i18n.MONTHS_LONG;
calendarInit.WEEKDAYS_MEDIUM = i18n.WEEKDAYS_MEDIUM;
@@ -284,8 +297,9 @@ Wicket.DateTime.init2 = function(widgetI
alignWithIcon: alignWithIcon,
fireChangeEvent: fireChangeEvent,
hideOnSelect: hideOnSelect,
- showOnFieldClick: showOnFieldClick
+ showOnFieldClick: showOnFieldClick,
+ autoHide: autoHide
});
}
-YAHOO.register("wicket-date", Wicket.DateTime, {version: "1.5", build: "rc3"});
+YAHOO.register("wicket-date", Wicket.DateTime, {version: "1.5", build: "RC6"});
Modified:
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
---
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html
(original)
+++
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html
Mon Jul 25 15:05:28 2011
@@ -94,7 +94,7 @@ Wicket.Event.add(window, "domready", fun
*/
wicketCalendarAdd(function() {
Wicket.DateTime.init2("dateTextField1", "dateTextField1",
{close:true,selected:"xx.xx.xxxx",pagedate:"xx.xxxx"}, "dd.MM.yy",
- true, true, true, false, wicketCalendarI18n["de"]);
+ true, true, true, false, wicketCalendarI18n["de"],
false);
});
;});
Modified:
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
---
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
(original)
+++
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
Mon Jul 25 15:05:28 2011
@@ -16,7 +16,7 @@
wicket:id="localeUSLink">set to english</a>]</p>
</form>
<p>
- Example using DateTextField: 
+ Example using DateTextField (auto-hides the picker when
clicking on the document): 
<form wicket:id="form"><input type="text"
wicket:id="dateTextField" /> <input type="submit"
value="submit" /></form>
</p>
Modified:
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
---
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
(original)
+++
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
Mon Jul 25 15:05:28 2011
@@ -180,6 +180,7 @@ public class DatesPage extends WicketExa
DatePicker datePicker = new DatePicker();
datePicker.setShowOnFieldClick(true);
+ datePicker.setAutoHide(true);
dateTextField.add(datePicker);
add(new FeedbackPanel("feedback"));