From b3a49376636d93aa2975b900c2ca0c87737362e3 Mon Sep 17 00:00:00 2001 From: tjhunt Date: Mon, 16 Mar 2009 07:38:27 +0000 Subject: [PATCH] formslib dates: MDL-16592 by popular demand, a close icon on the popup. --- lib/javascript-static.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/javascript-static.js b/lib/javascript-static.js index 5f284bd274..a8f8843985 100644 --- a/lib/javascript-static.js +++ b/lib/javascript-static.js @@ -415,7 +415,7 @@ function date_selector_calendar(el, firstdayofweek) { // Ensure that the shared div and calendar exist. if (!date_selector_calendar.panel) { date_selector_calendar.panel = new YAHOO.widget.Panel('date_selector_calendar_panel', - {visible: false, close: false, draggable: false}); + {visible: false, draggable: false}); var div = document.createElement('div'); date_selector_calendar.panel.setBody(div); date_selector_calendar.panel.render(document.body); @@ -424,6 +424,7 @@ function date_selector_calendar(el, firstdayofweek) { date_selector_calendar.panel.showEvent.subscribe(function() { date_selector_calendar.panel.fireEvent('changeContent'); }); + date_selector_calendar.panel.hideEvent.subscribe(date_selector_calendar.release_current); date_selector_calendar.calendar = new YAHOO.widget.Calendar(div, {iframe: false, hide_blank_weeks: true, start_weekday: firstdayofweek}); @@ -500,8 +501,7 @@ date_selector_calendar.delayed_reposition = function() { clearTimeout(date_selector_calendar.repositiontimeout); date_selector_calendar.repositiontimeout = null; } - date_selector_calendar.repositiontimeout = setTimeout( - function() {date_selector_calendar.fix_position();}, 500); + date_selector_calendar.repositiontimeout = setTimeout(date_selector_calendar.fix_position, 500); } date_selector_calendar.fix_position = function() { @@ -510,6 +510,16 @@ date_selector_calendar.fix_position = function() { } } +date_selector_calendar.release_current = function() { + if (date_selector_calendar.currentowner) { + date_selector_calendar.currentowner.release_calendar(); + } +} + +date_selector_calendar.prototype.focus_event = function(e, me) { + +} + date_selector_calendar.prototype.focus_event = function(e, me) { date_selector_calendar.cancel_any_timeout(); if (me.enablecheckbox == null || me.enablecheckbox.checked) { @@ -522,7 +532,7 @@ date_selector_calendar.prototype.focus_event = function(e, me) { } date_selector_calendar.prototype.blur_event = function(e, me) { - date_selector_calendar.hidetimeout = setTimeout(function() {me.release_calendar();}, 200); + date_selector_calendar.hidetimeout = setTimeout(date_selector_calendar.release_current, 300); } date_selector_calendar.prototype.handle_select_change = function(e, me) { @@ -533,7 +543,9 @@ date_selector_calendar.document_click = function(event) { if (date_selector_calendar.currentowner) { var currentcontainer = date_selector_calendar.currentowner.fieldset; var eventarget = YAHOO.util.Event.getTarget(event); - if (!YAHOO.util.Dom.isAncestor(currentcontainer, eventarget)) { + if (YAHOO.util.Dom.isAncestor(currentcontainer, eventarget)) { + setTimeout(function() {date_selector_calendar.cancel_any_timeout()}, 100); + } else { date_selector_calendar.currentowner.release_calendar(); } } -- 2.39.5