weekly release 2.4dev
[moodle.git] / lib / yuilib / 3.7.1 / build / widget-autohide / widget-autohide-coverage.js
blobe972c5e348fd40087c7a683962853ecd36f8dec3
1 /*
2 YUI 3.7.1 (build 5627)
3 Copyright 2012 Yahoo! Inc. All rights reserved.
4 Licensed under the BSD License.
5 http://yuilibrary.com/license/
6 */
7 if (typeof _yuitest_coverage == "undefined"){
8     _yuitest_coverage = {};
9     _yuitest_coverline = function(src, line){
10         var coverage = _yuitest_coverage[src];
11         if (!coverage.lines[line]){
12             coverage.calledLines++;
13         }
14         coverage.lines[line]++;
15     };
16     _yuitest_coverfunc = function(src, name, line){
17         var coverage = _yuitest_coverage[src],
18             funcId = name + ":" + line;
19         if (!coverage.functions[funcId]){
20             coverage.calledFunctions++;
21         }
22         coverage.functions[funcId]++;
23     };
25 _yuitest_coverage["build/widget-autohide/widget-autohide.js"] = {
26     lines: {},
27     functions: {},
28     coveredLines: 0,
29     calledLines: 0,
30     coveredFunctions: 0,
31     calledFunctions: 0,
32     path: "build/widget-autohide/widget-autohide.js",
33     code: []
35 _yuitest_coverage["build/widget-autohide/widget-autohide.js"].code=["YUI.add('widget-autohide', function (Y, NAME) {","","/**"," * A widget-level extension that provides ability to hide widget when"," * certain events occur."," *"," * @module widget-autohide"," * @author eferraiuolo, tilomitra"," * @since 3.4.0"," */","","","var WIDGET_AUTOHIDE    = 'widgetAutohide',","    AUTOHIDE            = 'autohide',","    CLICK_OUTSIDE     = 'clickoutside',","    FOCUS_OUTSIDE     = 'focusoutside',","    DOCUMENT            = 'document',","    KEY                 = 'key',","    PRESS_ESCAPE         = 'esc',","    BIND_UI             = 'bindUI',","    SYNC_UI             = \"syncUI\",","    RENDERED            = \"rendered\",","    BOUNDING_BOX        = \"boundingBox\",","    VISIBLE             = \"visible\",","    CHANGE              = 'Change',","","    getCN               = Y.ClassNameManager.getClassName;","","/**"," * The WidgetAutohide class provides the hideOn attribute which can"," * be used to hide the widget when certain events occur."," *"," * @class WidgetAutohide"," * @param {Object} config User configuration object"," */","function WidgetAutohide(config) {","    Y.after(this._bindUIAutohide, this, BIND_UI);","    Y.after(this._syncUIAutohide, this, SYNC_UI);","","","    if (this.get(RENDERED)) {","        this._bindUIAutohide();","        this._syncUIAutohide();","    }","","}","","/**","* Static property used to define the default attribute","* configuration introduced by WidgetAutohide.","*","* @property ATTRS","* @static","* @type Object","*/","WidgetAutohide.ATTRS = {","","","    /**","     * @attribute hideOn","     * @type array","     *","     * @description An array of objects corresponding to the nodes, events, and keycodes to hide the widget on.","     * The implementer can supply an array of objects, with each object having the following properties:","     * <p>eventName: (string, required): The eventName to listen to.</p>","     * <p>node: (Y.Node, optional): The Y.Node that will fire the event (defaults to the boundingBox of the widget)</p>","     * <p>keyCode: (string, optional): If listening for key events, specify the keyCode</p>","     * <p>By default, this attribute consists of one object which will cause the widget to hide if the","     * escape key is pressed.</p>","     */","    hideOn: {","        validator: Y.Lang.isArray,","        valueFn  : function() {","            return [","                {","                    node: Y.one(DOCUMENT),","                    eventName: KEY,","                    keyCode: PRESS_ESCAPE","                }","            ];","        }","    }","};","","WidgetAutohide.prototype = {","    // *** Instance Members *** //","","        _uiHandlesAutohide : null,","","        // *** Lifecycle Methods *** //","","        destructor : function () {","","            this._detachUIHandlesAutohide();","        },","","        /**","         * Binds event listeners to the widget.","         * <p>","         * This method in invoked after bindUI is invoked for the Widget class","         * using YUI's aop infrastructure.","         * </p>","         * @method _bindUIAutohide","         * @protected","         */","        _bindUIAutohide : function () {","","            this.after(VISIBLE+CHANGE, this._afterHostVisibleChangeAutohide);","            this.after(\"hideOnChange\", this._afterHideOnChange);","        },","","        /**","         * Syncs up the widget based on its current state. In particular, removes event listeners if","         * widget is not visible, and attaches them otherwise.","         * <p>","         * This method in invoked after syncUI is invoked for the Widget class","         * using YUI's aop infrastructure.","         * </p>","         * @method _syncUIAutohide","         * @protected","         */","        _syncUIAutohide : function () {","","            this._uiSetHostVisibleAutohide(this.get(VISIBLE));","        },","","        // *** Private Methods *** //","","        /**","         * Removes event listeners if widget is not visible, and attaches them otherwise.","         *","         * @method _uiSetHostVisibleAutohide","         * @protected","         */","        _uiSetHostVisibleAutohide : function (visible) {","","            if (visible) {","                //this._attachUIHandlesAutohide();","                Y.later(1, this, '_attachUIHandlesAutohide');","            } else {","                this._detachUIHandlesAutohide();","            }","        },","","        /**","         * Iterates through all objects in the hideOn attribute and creates event listeners.","         *","         * @method _attachUIHandlesAutohide","         * @protected","         */","        _attachUIHandlesAutohide : function () {","","            if (this._uiHandlesAutohide) { return; }","","            var bb = this.get(BOUNDING_BOX),","                hide = Y.bind(this.hide,this),","                uiHandles = [],","                self = this,","                hideOn = this.get('hideOn'),","                i = 0,","                o = {node: undefined, ev: undefined, keyCode: undefined};","","                //push all events on which the widget should be hidden","                for (; i < hideOn.length; i++) {","","                    o.node = hideOn[i].node;","                    o.ev = hideOn[i].eventName;","                    o.keyCode = hideOn[i].keyCode;","","                    //no keycode or node defined","                    if (!o.node && !o.keyCode && o.ev) {","                        uiHandles.push(bb.on(o.ev, hide));","                    }","","                    //node defined, no keycode (not a keypress)","                    else if (o.node && !o.keyCode && o.ev) {","                        uiHandles.push(o.node.on(o.ev, hide));","                    }","","                    //node defined, keycode defined, event defined (its a key press)","                    else if (o.node && o.keyCode && o.ev) {","                        uiHandles.push(o.node.on(o.ev, hide, o.keyCode));","                    }","","                    else {","                    }","","                }","","            this._uiHandlesAutohide = uiHandles;","        },","","        /**","         * Detaches all event listeners created by this extension","         *","         * @method _detachUIHandlesAutohide","         * @protected","         */","        _detachUIHandlesAutohide : function () {","","            Y.each(this._uiHandlesAutohide, function(h){","                h.detach();","            });","            this._uiHandlesAutohide = null;","        },","","        /**","         * Default function called when the visibility of the widget changes. Determines","         * whether to attach or detach event listeners based on the visibility of the widget.","         *","         * @method _afterHostVisibleChangeAutohide","         * @protected","         */","        _afterHostVisibleChangeAutohide : function (e) {","","            this._uiSetHostVisibleAutohide(e.newVal);","        },","","        /**","         * Default function called when hideOn Attribute is changed. Remove existing listeners and create new listeners.","         *","         * @method _afterHideOnChange","         */","        _afterHideOnChange : function(e) {","            this._detachUIHandlesAutohide();","","            if (this.get(VISIBLE)) {","                this._attachUIHandlesAutohide();","            }","        }","};","","Y.WidgetAutohide = WidgetAutohide;","","","}, '3.7.1', {\"requires\": [\"base-build\", \"event-key\", \"event-outside\", \"widget\"]});"];
36 _yuitest_coverage["build/widget-autohide/widget-autohide.js"].lines = {"1":0,"13":0,"36":0,"37":0,"38":0,"41":0,"42":0,"43":0,"56":0,"74":0,"85":0,"94":0,"108":0,"109":0,"124":0,"137":0,"139":0,"141":0,"153":0,"155":0,"164":0,"166":0,"167":0,"168":0,"171":0,"172":0,"176":0,"177":0,"181":0,"182":0,"190":0,"201":0,"202":0,"204":0,"216":0,"225":0,"227":0,"228":0,"233":0};
37 _yuitest_coverage["build/widget-autohide/widget-autohide.js"].functions = {"WidgetAutohide:36":0,"valueFn:73":0,"destructor:92":0,"_bindUIAutohide:106":0,"_syncUIAutohide:122":0,"_uiSetHostVisibleAutohide:135":0,"_attachUIHandlesAutohide:151":0,"(anonymous 2):201":0,"_detachUIHandlesAutohide:199":0,"_afterHostVisibleChangeAutohide:214":0,"_afterHideOnChange:224":0,"(anonymous 1):1":0};
38 _yuitest_coverage["build/widget-autohide/widget-autohide.js"].coveredLines = 39;
39 _yuitest_coverage["build/widget-autohide/widget-autohide.js"].coveredFunctions = 12;
40 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 1);
41 YUI.add('widget-autohide', function (Y, NAME) {
43 /**
44  * A widget-level extension that provides ability to hide widget when
45  * certain events occur.
46  *
47  * @module widget-autohide
48  * @author eferraiuolo, tilomitra
49  * @since 3.4.0
50  */
53 _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "(anonymous 1)", 1);
54 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 13);
55 var WIDGET_AUTOHIDE    = 'widgetAutohide',
56     AUTOHIDE            = 'autohide',
57     CLICK_OUTSIDE     = 'clickoutside',
58     FOCUS_OUTSIDE     = 'focusoutside',
59     DOCUMENT            = 'document',
60     KEY                 = 'key',
61     PRESS_ESCAPE         = 'esc',
62     BIND_UI             = 'bindUI',
63     SYNC_UI             = "syncUI",
64     RENDERED            = "rendered",
65     BOUNDING_BOX        = "boundingBox",
66     VISIBLE             = "visible",
67     CHANGE              = 'Change',
69     getCN               = Y.ClassNameManager.getClassName;
71 /**
72  * The WidgetAutohide class provides the hideOn attribute which can
73  * be used to hide the widget when certain events occur.
74  *
75  * @class WidgetAutohide
76  * @param {Object} config User configuration object
77  */
78 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 36);
79 function WidgetAutohide(config) {
80     _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "WidgetAutohide", 36);
81 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 37);
82 Y.after(this._bindUIAutohide, this, BIND_UI);
83     _yuitest_coverline("build/widget-autohide/widget-autohide.js", 38);
84 Y.after(this._syncUIAutohide, this, SYNC_UI);
87     _yuitest_coverline("build/widget-autohide/widget-autohide.js", 41);
88 if (this.get(RENDERED)) {
89         _yuitest_coverline("build/widget-autohide/widget-autohide.js", 42);
90 this._bindUIAutohide();
91         _yuitest_coverline("build/widget-autohide/widget-autohide.js", 43);
92 this._syncUIAutohide();
93     }
97 /**
98 * Static property used to define the default attribute
99 * configuration introduced by WidgetAutohide.
101 * @property ATTRS
102 * @static
103 * @type Object
105 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 56);
106 WidgetAutohide.ATTRS = {
109     /**
110      * @attribute hideOn
111      * @type array
112      *
113      * @description An array of objects corresponding to the nodes, events, and keycodes to hide the widget on.
114      * The implementer can supply an array of objects, with each object having the following properties:
115      * <p>eventName: (string, required): The eventName to listen to.</p>
116      * <p>node: (Y.Node, optional): The Y.Node that will fire the event (defaults to the boundingBox of the widget)</p>
117      * <p>keyCode: (string, optional): If listening for key events, specify the keyCode</p>
118      * <p>By default, this attribute consists of one object which will cause the widget to hide if the
119      * escape key is pressed.</p>
120      */
121     hideOn: {
122         validator: Y.Lang.isArray,
123         valueFn  : function() {
124             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "valueFn", 73);
125 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 74);
126 return [
127                 {
128                     node: Y.one(DOCUMENT),
129                     eventName: KEY,
130                     keyCode: PRESS_ESCAPE
131                 }
132             ];
133         }
134     }
137 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 85);
138 WidgetAutohide.prototype = {
139     // *** Instance Members *** //
141         _uiHandlesAutohide : null,
143         // *** Lifecycle Methods *** //
145         destructor : function () {
147             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "destructor", 92);
148 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 94);
149 this._detachUIHandlesAutohide();
150         },
152         /**
153          * Binds event listeners to the widget.
154          * <p>
155          * This method in invoked after bindUI is invoked for the Widget class
156          * using YUI's aop infrastructure.
157          * </p>
158          * @method _bindUIAutohide
159          * @protected
160          */
161         _bindUIAutohide : function () {
163             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "_bindUIAutohide", 106);
164 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 108);
165 this.after(VISIBLE+CHANGE, this._afterHostVisibleChangeAutohide);
166             _yuitest_coverline("build/widget-autohide/widget-autohide.js", 109);
167 this.after("hideOnChange", this._afterHideOnChange);
168         },
170         /**
171          * Syncs up the widget based on its current state. In particular, removes event listeners if
172          * widget is not visible, and attaches them otherwise.
173          * <p>
174          * This method in invoked after syncUI is invoked for the Widget class
175          * using YUI's aop infrastructure.
176          * </p>
177          * @method _syncUIAutohide
178          * @protected
179          */
180         _syncUIAutohide : function () {
182             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "_syncUIAutohide", 122);
183 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 124);
184 this._uiSetHostVisibleAutohide(this.get(VISIBLE));
185         },
187         // *** Private Methods *** //
189         /**
190          * Removes event listeners if widget is not visible, and attaches them otherwise.
191          *
192          * @method _uiSetHostVisibleAutohide
193          * @protected
194          */
195         _uiSetHostVisibleAutohide : function (visible) {
197             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "_uiSetHostVisibleAutohide", 135);
198 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 137);
199 if (visible) {
200                 //this._attachUIHandlesAutohide();
201                 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 139);
202 Y.later(1, this, '_attachUIHandlesAutohide');
203             } else {
204                 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 141);
205 this._detachUIHandlesAutohide();
206             }
207         },
209         /**
210          * Iterates through all objects in the hideOn attribute and creates event listeners.
211          *
212          * @method _attachUIHandlesAutohide
213          * @protected
214          */
215         _attachUIHandlesAutohide : function () {
217             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "_attachUIHandlesAutohide", 151);
218 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 153);
219 if (this._uiHandlesAutohide) { return; }
221             _yuitest_coverline("build/widget-autohide/widget-autohide.js", 155);
222 var bb = this.get(BOUNDING_BOX),
223                 hide = Y.bind(this.hide,this),
224                 uiHandles = [],
225                 self = this,
226                 hideOn = this.get('hideOn'),
227                 i = 0,
228                 o = {node: undefined, ev: undefined, keyCode: undefined};
230                 //push all events on which the widget should be hidden
231                 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 164);
232 for (; i < hideOn.length; i++) {
234                     _yuitest_coverline("build/widget-autohide/widget-autohide.js", 166);
235 o.node = hideOn[i].node;
236                     _yuitest_coverline("build/widget-autohide/widget-autohide.js", 167);
237 o.ev = hideOn[i].eventName;
238                     _yuitest_coverline("build/widget-autohide/widget-autohide.js", 168);
239 o.keyCode = hideOn[i].keyCode;
241                     //no keycode or node defined
242                     _yuitest_coverline("build/widget-autohide/widget-autohide.js", 171);
243 if (!o.node && !o.keyCode && o.ev) {
244                         _yuitest_coverline("build/widget-autohide/widget-autohide.js", 172);
245 uiHandles.push(bb.on(o.ev, hide));
246                     }
248                     //node defined, no keycode (not a keypress)
249                     else {_yuitest_coverline("build/widget-autohide/widget-autohide.js", 176);
250 if (o.node && !o.keyCode && o.ev) {
251                         _yuitest_coverline("build/widget-autohide/widget-autohide.js", 177);
252 uiHandles.push(o.node.on(o.ev, hide));
253                     }
255                     //node defined, keycode defined, event defined (its a key press)
256                     else {_yuitest_coverline("build/widget-autohide/widget-autohide.js", 181);
257 if (o.node && o.keyCode && o.ev) {
258                         _yuitest_coverline("build/widget-autohide/widget-autohide.js", 182);
259 uiHandles.push(o.node.on(o.ev, hide, o.keyCode));
260                     }
262                     else {
263                     }}}
265                 }
267             _yuitest_coverline("build/widget-autohide/widget-autohide.js", 190);
268 this._uiHandlesAutohide = uiHandles;
269         },
271         /**
272          * Detaches all event listeners created by this extension
273          *
274          * @method _detachUIHandlesAutohide
275          * @protected
276          */
277         _detachUIHandlesAutohide : function () {
279             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "_detachUIHandlesAutohide", 199);
280 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 201);
281 Y.each(this._uiHandlesAutohide, function(h){
282                 _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "(anonymous 2)", 201);
283 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 202);
284 h.detach();
285             });
286             _yuitest_coverline("build/widget-autohide/widget-autohide.js", 204);
287 this._uiHandlesAutohide = null;
288         },
290         /**
291          * Default function called when the visibility of the widget changes. Determines
292          * whether to attach or detach event listeners based on the visibility of the widget.
293          *
294          * @method _afterHostVisibleChangeAutohide
295          * @protected
296          */
297         _afterHostVisibleChangeAutohide : function (e) {
299             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "_afterHostVisibleChangeAutohide", 214);
300 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 216);
301 this._uiSetHostVisibleAutohide(e.newVal);
302         },
304         /**
305          * Default function called when hideOn Attribute is changed. Remove existing listeners and create new listeners.
306          *
307          * @method _afterHideOnChange
308          */
309         _afterHideOnChange : function(e) {
310             _yuitest_coverfunc("build/widget-autohide/widget-autohide.js", "_afterHideOnChange", 224);
311 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 225);
312 this._detachUIHandlesAutohide();
314             _yuitest_coverline("build/widget-autohide/widget-autohide.js", 227);
315 if (this.get(VISIBLE)) {
316                 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 228);
317 this._attachUIHandlesAutohide();
318             }
319         }
322 _yuitest_coverline("build/widget-autohide/widget-autohide.js", 233);
323 Y.WidgetAutohide = WidgetAutohide;
326 }, '3.7.1', {"requires": ["base-build", "event-key", "event-outside", "widget"]});