src/cm/media/js/lib/yui/yui3-3.15.0/build/node-base/node-base-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('node-base', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
 * @module node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 * @submodule node-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
var methods = [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
 * Determines whether each node has the given className.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
 * @method hasClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
 * @for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
 * @param {String} className the class name to search for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
 * @return {Boolean} Whether or not the element has the specified class
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
 'hasClass',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 * Adds a class name to each node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
 * @method addClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
 * @param {String} className the class name to add to the node's class attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
 'addClass',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
 * Removes a class name from each node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
 * @method removeClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
 * @param {String} className the class name to remove from the node's class attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
 'removeClass',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
 * Replace a class with another class for each node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
 * If no oldClassName is present, the newClassName is simply added.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
 * @method replaceClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
 * @param {String} oldClassName the class name to be replaced
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
 * @param {String} newClassName the class name that will be replacing the old class name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
 'replaceClass',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
 * If the className exists on the node it is removed, if it doesn't exist it is added.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
 * @method toggleClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
 * @param {String} className the class name to be toggled
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
 * @param {Boolean} force Option to force adding or removing the class.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
 'toggleClass'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
Y.Node.importMethod(Y.DOM, methods);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
 * Determines whether each node has the given className.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
 * @method hasClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
 * @see Node.hasClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
 * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
 * @param {String} className the class name to search for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
 * @return {Array} An array of booleans for each node bound to the NodeList.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
 * Adds a class name to each node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
 * @method addClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
 * @see Node.addClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
 * @param {String} className the class name to add to the node's class attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
 * Removes a class name from each node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
 * @method removeClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
 * @see Node.removeClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
 * @param {String} className the class name to remove from the node's class attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
 * Replace a class with another class for each node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
 * If no oldClassName is present, the newClassName is simply added.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
 * @method replaceClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
 * @see Node.replaceClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
 * @param {String} oldClassName the class name to be replaced
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
 * @param {String} newClassName the class name that will be replacing the old class name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
 * If the className exists on the node it is removed, if it doesn't exist it is added.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
 * @method toggleClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
 * @see Node.toggleClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
 * @param {String} className the class name to be toggled
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
Y.NodeList.importMethod(Y.Node.prototype, methods);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
 * @module node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
 * @submodule node-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
var Y_Node = Y.Node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
    Y_DOM = Y.DOM;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
 * Returns a new dom node using the provided markup string.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
 * @method create
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
 * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
 * @param {String} html The markup used to create the element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
 * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
 * to escape html content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
 * @param {HTMLDocument} doc An optional document context
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
 * @return {Node} A Node instance bound to a DOM node or fragment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
 * @for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
Y_Node.create = function(html, doc) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
    if (doc && doc._node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
        doc = doc._node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
    return Y.one(Y_DOM.create(html, doc));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
Y.mix(Y_Node.prototype, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
     * Creates a new Node using the provided markup string.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
     * @method create
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
     * @param {String} html The markup used to create the element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
     * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
     * to escape html content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
     * @param {HTMLDocument} doc An optional document context
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
     * @return {Node} A Node instance bound to a DOM node or fragment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
    create: Y_Node.create,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
     * Inserts the content before the reference node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
     * @method insert
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
     * @param {String | Node | HTMLElement | NodeList | HTMLCollection} content The content to insert.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
     * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
     * to escape html content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
     * @param {Int | Node | HTMLElement | String} where The position to insert at.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
     * Possible "where" arguments
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
     * <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
     * <dt>Y.Node</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
     * <dd>The Node to insert before</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
     * <dt>HTMLElement</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
     * <dd>The element to insert before</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
     * <dt>Int</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
     * <dd>The index of the child element to insert before</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
     * <dt>"replace"</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
     * <dd>Replaces the existing HTML</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
     * <dt>"before"</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
     * <dd>Inserts before the existing HTML</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
     * <dt>"before"</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
     * <dd>Inserts content before the node</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
     * <dt>"after"</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
     * <dd>Inserts content after the node</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
     * </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
     * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
    insert: function(content, where) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
        this._insert(content, where);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
        return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
    _insert: function(content, where) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
        var node = this._node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
            ret = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
        if (typeof where == 'number') { // allow index
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
            where = this._node.childNodes[where];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
        } else if (where && where._node) { // Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
            where = where._node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
        if (content && typeof content != 'string') { // allow Node or NodeList/Array instances
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
            content = content._node || content._nodes || content;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
        ret = Y_DOM.addHTML(node, content, where);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
        return ret;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
     * Inserts the content as the firstChild of the node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
     * @method prepend
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
     * @param {String | Node | HTMLElement} content The content to insert.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
     * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
     * to escape html content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
     * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
    prepend: function(content) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
        return this.insert(content, 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
     * Inserts the content as the lastChild of the node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
     * @method append
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
     * @param {String | Node | HTMLElement} content The content to insert.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
     * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
     * to escape html content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
     * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
    append: function(content) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
        return this.insert(content, null);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
     * @method appendChild
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
     * @param {String | HTMLElement | Node} node Node to be appended.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
     * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
     * to escape html content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
     * @return {Node} The appended node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
    appendChild: function(node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
        return Y_Node.scrubVal(this._insert(node));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
     * @method insertBefore
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
     * @param {String | HTMLElement | Node} newNode Node to be appended
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
     * @param {HTMLElement | Node} refNode Node to be inserted before.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
     * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
     * to escape html content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
     * @return {Node} The inserted node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
    insertBefore: function(newNode, refNode) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
        return Y.Node.scrubVal(this._insert(newNode, refNode));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
     * Appends the node to the given node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
     * @method appendTo
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
     * @param {Node | HTMLElement} node The node to append to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
     * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
    appendTo: function(node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
        Y.one(node).append(this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
        return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
    
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
    // This method is deprecated, and is intentionally left undocumented.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
    // Use `setHTML` instead.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
    setContent: function(content) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
        this._insert(content, 'replace');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
        return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
    
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
    // This method is deprecated, and is intentionally left undocumented.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
    // Use `getHTML` instead.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
    getContent: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
        var node = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
        if (node._node.nodeType === 11) { // 11 === Node.DOCUMENT_FRAGMENT_NODE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
            // "this", when it is a document fragment, must be cloned because
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
            // the nodes contained in the fragment actually disappear once
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
            // the fragment is appended anywhere
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
            node = node.create("<div/>").append(node.cloneNode(true));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
        return node.get("innerHTML");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
 * Replaces the node's current html content with the content provided.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
 * Note that this passes to innerHTML and is not escaped.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
 * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
 * to escape html content or `set('text')` to add as text.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
 * @method setHTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
 * @param {String | Node | HTMLElement | NodeList | HTMLCollection} content The content to insert
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
 * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
Y.Node.prototype.setHTML = Y.Node.prototype.setContent;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
 * Returns the node's current html content (e.g. innerHTML)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
 * @method getHTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
 * @return {String} The html content
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
Y.Node.prototype.getHTML = Y.Node.prototype.getContent;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
Y.NodeList.importMethod(Y.Node.prototype, [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
     * Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
     * @method append
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
     * @see Node.append
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
    'append',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
     * Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
     * @method insert
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
     * @see Node.insert
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
    'insert',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
     * Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
     * @method appendChild
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
     * @see Node.appendChild
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
    'appendChild',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
     * Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
     * @method insertBefore
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
     * @see Node.insertBefore
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
    'insertBefore',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
     * Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
     * @method prepend
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
     * @see Node.prepend
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
    'prepend',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
    'setContent',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
    'getContent',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
     * Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
     * Note that this passes to innerHTML and is not escaped.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
     * Use <a href="../classes/Escape.html#method_html">`Y.Escape.html()`</a>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
     * to escape html content or `set('text')` to add as text.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
     * @method setHTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
     * @see Node.setHTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
    'setHTML',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
     * Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
     * @method getHTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
     * @see Node.getHTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
    'getHTML'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
 * @module node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
 * @submodule node-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
var Y_Node = Y.Node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
    Y_DOM = Y.DOM;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
 * Static collection of configuration attributes for special handling
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
 * @property ATTRS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
 * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
 * @type object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
Y_Node.ATTRS = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
     * Allows for getting and setting the text of an element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
     * Formatting is preserved and special characters are treated literally.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
     * @config text
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
    text: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
        getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
            return Y_DOM.getText(this._node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
        setter: function(content) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
            Y_DOM.setText(this._node, content);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
            return content;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
     * Allows for getting and setting the text of an element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
     * Formatting is preserved and special characters are treated literally.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
     * @config for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
    'for': {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
        getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
            return Y_DOM.getAttribute(this._node, 'for');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
        setter: function(val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
            Y_DOM.setAttribute(this._node, 'for', val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
            return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
    'options': {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
        getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
            return this._node.getElementsByTagName('option');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
     * Returns a NodeList instance of all HTMLElement children.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
     * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
     * @config children
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
     * @type NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
    'children': {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
        getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
            var node = this._node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
                children = node.children,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
                childNodes, i, len;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
            if (!children) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
                childNodes = node.childNodes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
                children = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
                for (i = 0, len = childNodes.length; i < len; ++i) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
                    if (childNodes[i].tagName) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
                        children[children.length] = childNodes[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
            return Y.all(children);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
    value: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
        getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
            return Y_DOM.getValue(this._node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
        setter: function(val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
            Y_DOM.setValue(this._node, val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
            return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
Y.Node.importMethod(Y.DOM, [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
     * Allows setting attributes on DOM nodes, normalizing in some cases.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
     * This passes through to the DOM node, allowing for custom attributes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
     * @method setAttribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
     * @for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
     * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
     * @param {string} name The attribute name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
     * @param {string} value The value to set
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
    'setAttribute',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
     * Allows getting attributes on DOM nodes, normalizing in some cases.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
     * This passes through to the DOM node, allowing for custom attributes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
     * @method getAttribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
     * @for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
     * @param {string} name The attribute name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
     * @return {string} The attribute value
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
    'getAttribute'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
 * @module node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
 * @submodule node-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
var Y_Node = Y.Node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
var Y_NodeList = Y.NodeList;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
 * List of events that route to DOM events
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
 * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
 * @property DOM_EVENTS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
 * @for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
Y_Node.DOM_EVENTS = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
    abort: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
    beforeunload: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
    blur: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
    change: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
    click: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
    close: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
    command: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
    contextmenu: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
    copy: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
    cut: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
    dblclick: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
    DOMMouseScroll: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
    drag: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
    dragstart: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
    dragenter: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
    dragover: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
    dragleave: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
    dragend: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
    drop: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
    error: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
    focus: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
    key: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
    keydown: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
    keypress: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
    keyup: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
    load: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
    message: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
    mousedown: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
    mouseenter: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
    mouseleave: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
    mousemove: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
    mousemultiwheel: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
    mouseout: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
    mouseover: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
    mouseup: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
    mousewheel: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
    orientationchange: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
    paste: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
    reset: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
    resize: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
    select: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
    selectstart: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
    submit: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
    scroll: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
    textInput: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
    unload: 1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
// Add custom event adaptors to this list.  This will make it so
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
// that delegate, key, available, contentready, etc all will
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
// be available through Node.on
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
Y.mix(Y_Node.DOM_EVENTS, Y.Env.evt.plugins);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
Y.augment(Y_Node, Y.EventTarget);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
Y.mix(Y_Node.prototype, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
     * Removes event listeners from the node and (optionally) its subtree
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
     * @method purge
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
     * @param {Boolean} recurse (optional) Whether or not to remove listeners from the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
     * node's subtree
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
     * @param {String} type (optional) Only remove listeners of the specified type
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
     * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
    purge: function(recurse, type) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
        Y.Event.purgeElement(this._node, recurse, type);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
        return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
Y.mix(Y.NodeList.prototype, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
    _prepEvtArgs: function(type, fn, context) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
        // map to Y.on/after signature (type, fn, nodes, context, arg1, arg2, etc)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
        var args = Y.Array(arguments, 0, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
        if (args.length < 2) { // type only (event hash) just add nodes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
            args[2] = this._nodes;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
            args.splice(2, 0, this._nodes);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
        args[3] = context || this; // default to NodeList instance as context
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
        return args;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
    Subscribe a callback function for each `Node` in the collection to execute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
    in response to a DOM event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
    NOTE: Generally, the `on()` method should be avoided on `NodeLists`, in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
    favor of using event delegation from a parent Node.  See the Event user
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
    guide for details.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
    Most DOM events are associated with a preventable default behavior, such as
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
    link clicks navigating to a new page.  Callbacks are passed a
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
    `DOMEventFacade` object as their first argument (usually called `e`) that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
    can be used to prevent this default behavior with `e.preventDefault()`. See
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
    the `DOMEventFacade` API for all available properties and methods on the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
    object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
    By default, the `this` object will be the `NodeList` that the subscription
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
    came from, <em>not the `Node` that received the event</em>.  Use
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
    `e.currentTarget` to refer to the `Node`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
    Returning `false` from a callback is supported as an alternative to calling
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
    `e.preventDefault(); e.stopPropagation();`.  However, it is recommended to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
    use the event methods.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
    @example
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
        Y.all(".sku").on("keydown", function (e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
            if (e.keyCode === 13) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
                e.preventDefault();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
                // Use e.currentTarget to refer to the individual Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
                var item = Y.MyApp.searchInventory( e.currentTarget.get('value') );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
                // etc ...
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
    @method on
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
    @param {String} type The name of the event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
    @param {Function} fn The callback to execute in response to the event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
    @param {Object} [context] Override `this` object in callback
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
    @param {Any} [arg*] 0..n additional arguments to supply to the subscriber
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
    @return {EventHandle} A subscription handle capable of detaching that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
                          subscription
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
    @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
    on: function(type, fn, context) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
        return Y.on.apply(Y, this._prepEvtArgs.apply(this, arguments));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
     * Applies an one-time event listener to each Node bound to the NodeList.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
     * @method once
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
     * @param {String} type The event being listened for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
     * @param {Function} fn The handler to call when the event fires
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
     * @param {Object} context The context to call the handler with.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
     * Default is the NodeList instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
     * @return {EventHandle} A subscription handle capable of detaching that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
     *                    subscription
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
    once: function(type, fn, context) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
        return Y.once.apply(Y, this._prepEvtArgs.apply(this, arguments));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
     * Applies an event listener to each Node bound to the NodeList.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
     * The handler is called only after all on() handlers are called
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
     * and the event is not prevented.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
     * @method after
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
     * @param {String} type The event being listened for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
     * @param {Function} fn The handler to call when the event fires
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
     * @param {Object} context The context to call the handler with.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
     * Default is the NodeList instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
     * @return {EventHandle} A subscription handle capable of detaching that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
     *                    subscription
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
    after: function(type, fn, context) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
        return Y.after.apply(Y, this._prepEvtArgs.apply(this, arguments));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
     * Applies an one-time event listener to each Node bound to the NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
     * that will be called only after all on() handlers are called and the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
     * event is not prevented.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
     * @method onceAfter
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
     * @param {String} type The event being listened for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
     * @param {Function} fn The handler to call when the event fires
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
     * @param {Object} context The context to call the handler with.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   657
     * Default is the NodeList instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   658
     * @return {EventHandle} A subscription handle capable of detaching that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   659
     *                    subscription
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   660
     * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   661
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   662
    onceAfter: function(type, fn, context) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   663
        return Y.onceAfter.apply(Y, this._prepEvtArgs.apply(this, arguments));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   664
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   665
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   666
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   667
Y_NodeList.importMethod(Y.Node.prototype, [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   668
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   669
      * Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   670
      * @method detach
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   671
      * @see Node.detach
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   672
      * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   673
      */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   674
    'detach',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   675
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   676
    /** Called on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   677
      * @method detachAll
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   678
      * @see Node.detachAll
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   679
      * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   680
      */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   681
    'detachAll'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   682
]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   683
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   684
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   685
Subscribe a callback function to execute in response to a DOM event or custom
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   686
event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   687
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   688
Most DOM events are associated with a preventable default behavior such as
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   689
link clicks navigating to a new page.  Callbacks are passed a `DOMEventFacade`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   690
object as their first argument (usually called `e`) that can be used to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   691
prevent this default behavior with `e.preventDefault()`. See the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   692
`DOMEventFacade` API for all available properties and methods on the object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   693
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   694
If the event name passed as the first parameter is not a whitelisted DOM event,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   695
it will be treated as a custom event subscriptions, allowing
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   696
`node.fire('customEventName')` later in the code.  Refer to the Event user guide
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   697
for the full DOM event whitelist.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   698
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   699
By default, the `this` object in the callback will refer to the subscribed
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   700
`Node`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   701
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   702
Returning `false` from a callback is supported as an alternative to calling
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   703
`e.preventDefault(); e.stopPropagation();`.  However, it is recommended to use
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   704
the event methods.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   705
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   706
@example
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   707
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   708
    Y.one("#my-form").on("submit", function (e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   709
        e.preventDefault();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   710
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   711
        // proceed with ajax form submission instead...
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   712
    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   713
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   714
@method on
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   715
@param {String} type The name of the event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   716
@param {Function} fn The callback to execute in response to the event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   717
@param {Object} [context] Override `this` object in callback
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   718
@param {Any} [arg*] 0..n additional arguments to supply to the subscriber
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   719
@return {EventHandle} A subscription handle capable of detaching that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   720
                      subscription
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   721
@for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   722
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   723
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   724
Y.mix(Y.Node.ATTRS, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   725
    offsetHeight: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   726
        setter: function(h) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   727
            Y.DOM.setHeight(this._node, h);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   728
            return h;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   729
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   730
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   731
        getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   732
            return this._node.offsetHeight;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   733
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   734
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   735
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   736
    offsetWidth: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   737
        setter: function(w) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   738
            Y.DOM.setWidth(this._node, w);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   739
            return w;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   740
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   741
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   742
        getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   743
            return this._node.offsetWidth;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   744
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   745
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   746
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   747
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   748
Y.mix(Y.Node.prototype, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   749
    sizeTo: function(w, h) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   750
        var node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   751
        if (arguments.length < 2) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   752
            node = Y.one(w);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   753
            w = node.get('offsetWidth');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   754
            h = node.get('offsetHeight');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   755
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   756
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   757
        this.setAttrs({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   758
            offsetWidth: w,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   759
            offsetHeight: h
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   760
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   761
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   762
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   763
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   764
if (!Y.config.doc.documentElement.hasAttribute) { // IE < 8
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   765
    Y.Node.prototype.hasAttribute = function(attr) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   766
        if (attr === 'value') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   767
            if (this.get('value') !== "") { // IE < 8 fails to populate specified when set in HTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   768
                return true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   769
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   770
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   771
        return !!(this._node.attributes[attr] &&
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   772
                this._node.attributes[attr].specified);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   773
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   774
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   775
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   776
// IE throws an error when calling focus() on an element that's invisible, not
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   777
// displayed, or disabled.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   778
Y.Node.prototype.focus = function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   779
    try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   780
        this._node.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   781
    } catch (e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   782
        Y.log('error focusing node: ' + e.toString(), 'error', 'node');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   783
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   784
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   785
    return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   786
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   787
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   788
// IE throws error when setting input.type = 'hidden',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   789
// input.setAttribute('type', 'hidden') and input.attributes.type.value = 'hidden'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   790
Y.Node.ATTRS.type = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   791
    setter: function(val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   792
        if (val === 'hidden') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   793
            try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   794
                this._node.type = 'hidden';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   795
            } catch(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   796
                this._node.style.display = 'none';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   797
                this._inputType = 'hidden';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   798
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   799
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   800
            try { // IE errors when changing the type from "hidden'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   801
                this._node.type = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   802
            } catch (e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   803
                Y.log('error setting type: ' + val, 'info', 'node');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   804
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   805
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   806
        return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   807
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   808
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   809
    getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   810
        return this._inputType || this._node.type;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   811
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   812
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   813
    _bypassProxy: true // don't update DOM when using with Attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   814
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   815
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   816
if (Y.config.doc.createElement('form').elements.nodeType) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   817
    // IE: elements collection is also FORM node which trips up scrubVal.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   818
    Y.Node.ATTRS.elements = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   819
            getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   820
                return this.all('input, textarea, button, select');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   821
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   822
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   823
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   824
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   825
 * Provides methods for managing custom Node data.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   826
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   827
 * @module node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   828
 * @main node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   829
 * @submodule node-data
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   830
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   831
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   832
Y.mix(Y.Node.prototype, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   833
    _initData: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   834
        if (! ('_data' in this)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   835
            this._data = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   836
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   837
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   838
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   839
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   840
    * @method getData
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   841
    * @for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   842
    * @description Retrieves arbitrary data stored on a Node instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   843
    * If no data is associated with the Node, it will attempt to retrieve
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   844
    * a value from the corresponding HTML data attribute. (e.g. node.getData('foo')
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   845
    * will check node.getAttribute('data-foo')).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   846
    * @param {string} name Optional name of the data field to retrieve.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   847
    * If no name is given, all data is returned.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   848
    * @return {any | Object} Whatever is stored at the given field,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   849
    * or an object hash of all fields.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   850
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   851
    getData: function(name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   852
        this._initData();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   853
        var data = this._data,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   854
            ret = data;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   855
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   856
        if (arguments.length) { // single field
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   857
            if (name in data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   858
                ret = data[name];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   859
            } else { // initialize from HTML attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   860
                ret = this._getDataAttribute(name);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   861
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   862
        } else if (typeof data == 'object' && data !== null) { // all fields
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   863
            ret = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   864
            Y.Object.each(data, function(v, n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   865
                ret[n] = v;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   866
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   867
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   868
            ret = this._getDataAttributes(ret);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   869
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   870
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   871
        return ret;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   872
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   873
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   874
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   875
    _getDataAttributes: function(ret) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   876
        ret = ret || {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   877
        var i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   878
            attrs = this._node.attributes,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   879
            len = attrs.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   880
            prefix = this.DATA_PREFIX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   881
            prefixLength = prefix.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   882
            name;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   883
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   884
        while (i < len) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   885
            name = attrs[i].name;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   886
            if (name.indexOf(prefix) === 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   887
                name = name.substr(prefixLength);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   888
                if (!(name in ret)) { // only merge if not already stored
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   889
                    ret[name] = this._getDataAttribute(name);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   890
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   891
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   892
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   893
            i += 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   894
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   895
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   896
        return ret;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   897
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   898
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   899
    _getDataAttribute: function(name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   900
        name = this.DATA_PREFIX + name;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   901
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   902
        var node = this._node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   903
            attrs = node.attributes,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   904
            data = attrs && attrs[name] && attrs[name].value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   905
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   906
        return data;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   907
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   908
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   909
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   910
    * @method setData
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   911
    * @for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   912
    * @description Stores arbitrary data on a Node instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   913
    * This is not stored with the DOM node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   914
    * @param {string} name The name of the field to set. If no val
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   915
    * is given, name is treated as the data and overrides any existing data.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   916
    * @param {any} val The value to be assigned to the field.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   917
    * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   918
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   919
    setData: function(name, val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   920
        this._initData();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   921
        if (arguments.length > 1) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   922
            this._data[name] = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   923
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   924
            this._data = name;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   925
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   926
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   927
       return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   928
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   929
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   930
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   931
    * @method clearData
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   932
    * @for Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   933
    * @description Clears internally stored data.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   934
    * @param {string} name The name of the field to clear. If no name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   935
    * is given, all data is cleared.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   936
    * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   937
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   938
    clearData: function(name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   939
        if ('_data' in this) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   940
            if (typeof name != 'undefined') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   941
                delete this._data[name];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   942
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   943
                delete this._data;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   944
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   945
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   946
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   947
        return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   948
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   949
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   950
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   951
Y.mix(Y.NodeList.prototype, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   952
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   953
    * @method getData
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   954
    * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   955
    * @description Retrieves arbitrary data stored on each Node instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   956
    * bound to the NodeList.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   957
    * @see Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   958
    * @param {string} name Optional name of the data field to retrieve.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   959
    * If no name is given, all data is returned.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   960
    * @return {Array} An array containing all of the data for each Node instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   961
    * or an object hash of all fields.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   962
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   963
    getData: function(name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   964
        var args = (arguments.length) ? [name] : [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   965
        return this._invoke('getData', args, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   966
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   967
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   968
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   969
    * @method setData
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   970
    * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   971
    * @description Stores arbitrary data on each Node instance bound to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   972
    *  NodeList. This is not stored with the DOM node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   973
    * @param {string} name The name of the field to set. If no name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   974
    * is given, name is treated as the data and overrides any existing data.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   975
    * @param {any} val The value to be assigned to the field.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   976
    * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   977
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   978
    setData: function(name, val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   979
        var args = (arguments.length > 1) ? [name, val] : [name];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   980
        return this._invoke('setData', args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   981
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   982
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   983
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   984
    * @method clearData
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   985
    * @for NodeList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   986
    * @description Clears data on all Node instances bound to the NodeList.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   987
    * @param {string} name The name of the field to clear. If no name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   988
    * is given, all data is cleared.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   989
    * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   990
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   991
    clearData: function(name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   992
        var args = (arguments.length) ? [name] : [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   993
        return this._invoke('clearData', [name]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   994
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   995
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   996
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   997
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   998
}, '@VERSION@', {"requires": ["event-base", "node-core", "dom-base", "dom-style"]});