src/cm/media/js/lib/yui/yui_3.10.3/build/autocomplete-base/autocomplete-base.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('autocomplete-base', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
Provides automatic input completion or suggestions for text input fields and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
textareas.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
@module autocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
@main autocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
@since 3.3.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
`Y.Base` extension that provides core autocomplete logic (but no UI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
implementation) for a text input field or textarea. Must be mixed into a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
`Y.Base`-derived class to be useful.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
@module autocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
@submodule autocomplete-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
Extension that provides core autocomplete logic (but no UI implementation) for a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
text input field or textarea.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
The `AutoCompleteBase` class provides events and attributes that abstract away
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
core autocomplete logic and configuration, but does not provide a widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
implementation or suggestion UI. For a prepackaged autocomplete widget, see
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
`AutoCompleteList`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
This extension cannot be instantiated directly, since it doesn't provide an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
actual implementation. It's intended to be mixed into a `Y.Base`-based class or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
`Y.Widget`-based example:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    YUI().use('autocomplete-base', 'widget', function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        var MyAC = Y.Base.create('myAC', Y.Widget, [Y.AutoCompleteBase], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
            // Custom prototype methods and properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        }, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
            // Custom static methods and properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        // Custom implementation code.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
`Y.Base`-based example:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    YUI().use('autocomplete-base', function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        var MyAC = Y.Base.create('myAC', Y.Base, [Y.AutoCompleteBase], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
            initializer: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
                this._bindUIACBase();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
                this._syncUIACBase();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
            // Custom prototype methods and properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        }, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
            // Custom static methods and properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        // Custom implementation code.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
@class AutoCompleteBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
var Escape  = Y.Escape,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    Lang    = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    YArray  = Y.Array,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    YObject = Y.Object,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    isFunction = Lang.isFunction,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
    isString   = Lang.isString,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    trim       = Lang.trim,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    INVALID_VALUE = Y.Attribute.INVALID_VALUE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    _FUNCTION_VALIDATOR = '_functionValidator',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    _SOURCE_SUCCESS     = '_sourceSuccess',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    ALLOW_BROWSER_AC    = 'allowBrowserAutocomplete',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    INPUT_NODE          = 'inputNode',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    QUERY               = 'query',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    QUERY_DELIMITER     = 'queryDelimiter',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    REQUEST_TEMPLATE    = 'requestTemplate',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    RESULTS             = 'results',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
    RESULT_LIST_LOCATOR = 'resultListLocator',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    VALUE               = 'value',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
    VALUE_CHANGE        = 'valueChange',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    EVT_CLEAR   = 'clear',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
    EVT_QUERY   = QUERY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
    EVT_RESULTS = RESULTS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
function AutoCompleteBase() {}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
AutoCompleteBase.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
    // -- Lifecycle Methods ----------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    initializer: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        // AOP bindings.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        Y.before(this._bindUIACBase, this, 'bindUI');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        Y.before(this._syncUIACBase, this, 'syncUI');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        // -- Public Events ----------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        Fires after the query has been completely cleared or no longer meets the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        minimum query length requirement.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        @event clear
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        @param {String} prevVal Value of the query before it was cleared.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        @param {String} src Source of the event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        @preventable _defClearFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        this.publish(EVT_CLEAR, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            defaultFn: this._defClearFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
        Fires when the contents of the input field have changed and the input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
        value meets the criteria necessary to generate an autocomplete query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        @event query
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        @param {String} inputValue Full contents of the text input field or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            textarea that generated the query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        @param {String} query AutoComplete query. This is the string that will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            be used to request completion results. It may or may not be the same
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
            as `inputValue`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
        @param {String} src Source of the event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        @preventable _defQueryFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
        this.publish(EVT_QUERY, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
            defaultFn: this._defQueryFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        Fires after query results are received from the source. If no source has
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        been set, this event will not fire.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
        @event results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        @param {Array|Object} data Raw, unfiltered result data (if available).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        @param {String} query Query that generated these results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        @param {Object[]} results Array of filtered, formatted, and highlighted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
            results. Each item in the array is an object with the following
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
            properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            @param {Node|HTMLElement|String} results.display Formatted result
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
                HTML suitable for display to the user. If no custom formatter is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
                set, this will be an HTML-escaped version of the string in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
                `text` property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            @param {String} [results.highlighted] Highlighted (but not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
                formatted) result text. This property will only be set if a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
                highlighter is in use.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            @param {Any} results.raw Raw, unformatted result in whatever form it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
                was provided by the source.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
            @param {String} results.text Plain text version of the result,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
                suitable for being inserted into the value of a text input field
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
                or textarea when the result is selected by a user. This value is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
                not HTML-escaped and should not be inserted into the page using
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
                `innerHTML` or `Node#setContent()`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        @preventable _defResultsFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        this.publish(EVT_RESULTS, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
            defaultFn: this._defResultsFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    destructor: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
        this._acBaseEvents && this._acBaseEvents.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        delete this._acBaseEvents;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        delete this._cache;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
        delete this._inputNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        delete this._rawSource;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
    // -- Public Prototype Methods ---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
    Clears the result cache.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
    @method clearCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
    @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
    clearCache: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        this._cache && (this._cache = {});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    Sends a request to the configured source. If no source is configured, this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    method won't do anything.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
    Usually there's no reason to call this method manually; it will be called
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    automatically when user input causes a `query` event to be fired. The only
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    time you'll need to call this method manually is if you want to force a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    request to be sent when no user input has occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    @method sendRequest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    @param {String} [query] Query to send. If specified, the `query` attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
        will be set to this query. If not specified, the current value of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        `query` attribute will be used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    @param {Function} [requestTemplate] Request template function. If not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        specified, the current value of the `requestTemplate` attribute will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
    @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    sendRequest: function (query, requestTemplate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
        var request,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            source = this.get('source');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        if (query || query === '') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
            this._set(QUERY, query);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            query = this.get(QUERY) || '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
        if (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
            if (!requestTemplate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
                requestTemplate = this.get(REQUEST_TEMPLATE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
            request = requestTemplate ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
                requestTemplate.call(this, query) : query;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
            source.sendRequest({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
                query  : query,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
                request: request,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
                callback: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
                    success: Y.bind(this._onResponse, this, query)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
    // -- Protected Lifecycle Methods ------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
    Attaches event listeners and behaviors.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
    @method _bindUIACBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    _bindUIACBase: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        var inputNode  = this.get(INPUT_NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
            tokenInput = inputNode && inputNode.tokenInput;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        // If the inputNode has a node-tokeninput plugin attached, bind to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        // plugin's inputNode instead.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        if (tokenInput) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
            inputNode = tokenInput.get(INPUT_NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            this._set('tokenInput', tokenInput);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        if (!inputNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
            Y.error('No inputNode specified.');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
        this._inputNode = inputNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
        this._acBaseEvents = new Y.EventHandle([
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
            // This is the valueChange event on the inputNode, provided by the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
            // event-valuechange module, not our own valueChange.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
            inputNode.on(VALUE_CHANGE, this._onInputValueChange, this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            inputNode.on('blur', this._onInputBlur, this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
            this.after(ALLOW_BROWSER_AC + 'Change', this._syncBrowserAutocomplete),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
            this.after('sourceTypeChange', this._afterSourceTypeChange),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            this.after(VALUE_CHANGE, this._afterValueChange)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
        ]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    Synchronizes the UI state of the `inputNode`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    @method _syncUIACBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    _syncUIACBase: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
        this._syncBrowserAutocomplete();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
        this.set(VALUE, this.get(INPUT_NODE).get(VALUE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
    // -- Protected Prototype Methods ------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
    Creates a DataSource-like object that simply returns the specified array as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
    a response. See the `source` attribute for more details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    @method _createArraySource
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    @param {Array} source
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
    @return {Object} DataSource-like object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
    _createArraySource: function (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
        var that = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
            type: 'array',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
            sendRequest: function (request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
                that[_SOURCE_SUCCESS](source.concat(), request);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
    Creates a DataSource-like object that passes the query to a custom-defined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    function, which is expected to call the provided callback with an array of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    results. See the `source` attribute for more details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
    @method _createFunctionSource
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
    @param {Function} source Function that accepts a query and a callback as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
      parameters, and calls the callback with an array of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
    @return {Object} DataSource-like object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    _createFunctionSource: function (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
        var that = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
            type: 'function',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
            sendRequest: function (request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
                var value;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
                function afterResults(results) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
                    that[_SOURCE_SUCCESS](results || [], request);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
                // Allow both synchronous and asynchronous functions. If we get
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
                // a truthy return value, assume the function is synchronous.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
                if ((value = source(request.query, afterResults))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
                    afterResults(value);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
    Creates a DataSource-like object that looks up queries as properties on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
    specified object, and returns the found value (if any) as a response. See
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    the `source` attribute for more details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
    @method _createObjectSource
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
    @param {Object} source
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    @return {Object} DataSource-like object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    _createObjectSource: function (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
        var that = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
            type: 'object',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
            sendRequest: function (request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
                var query = request.query;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
                that[_SOURCE_SUCCESS](
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
                    YObject.owns(source, query) ? source[query] : [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
                    request
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
                );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
    Returns `true` if _value_ is either a function or `null`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
    @method _functionValidator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
    @param {Function|null} value Value to validate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
    _functionValidator: function (value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
        return value === null || isFunction(value);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
    Faster and safer alternative to `Y.Object.getValue()`. Doesn't bother
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
    casting the path to an array (since we already know it's an array) and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
    doesn't throw an error if a value in the middle of the object hierarchy is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
    neither `undefined` nor an object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    @method _getObjectValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
    @param {Object} obj
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    @param {Array} path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
    @return {Any} Located value, or `undefined` if the value was
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
        not found at the specified path.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
    _getObjectValue: function (obj, path) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
        if (!obj) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
        for (var i = 0, len = path.length; obj && i < len; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            obj = obj[path[i]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
        return obj;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
    Parses result responses, performs filtering and highlighting, and fires the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
    `results` event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
    @method _parseResponse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
    @param {String} query Query that generated these results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
    @param {Object} response Response containing results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
    @param {Object} data Raw response data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
    _parseResponse: function (query, response, data) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
        var facade = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                data   : data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                query  : query,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                results: []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
            listLocator = this.get(RESULT_LIST_LOCATOR),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
            results     = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            unfiltered  = response && response.results,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
            filters,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
            formatted,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            formatter,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
            highlighted,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            highlighter,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
            maxResults,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
            result,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
            text,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            textLocator;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
        if (unfiltered && listLocator) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
            unfiltered = listLocator.call(this, unfiltered);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        if (unfiltered && unfiltered.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
            filters     = this.get('resultFilters');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
            textLocator = this.get('resultTextLocator');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
            // Create a lightweight result object for each result to make them
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            // easier to work with. The various properties on the object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
            // represent different formats of the result, and will be populated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
            // as we go.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
            for (i = 0, len = unfiltered.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
                result = unfiltered[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
                text = textLocator ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
                        textLocator.call(this, result) :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
                        result.toString();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
                results.push({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
                    display: Escape.html(text),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
                    raw    : result,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
                    text   : text
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
            // Run the results through all configured result filters. Each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
            // filter returns an array of (potentially fewer) result objects,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            // which is then passed to the next filter, and so on.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
            for (i = 0, len = filters.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
                results = filters[i].call(this, query, results.concat());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
                if (!results) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
                    return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
                if (!results.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
            if (results.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
                formatter   = this.get('resultFormatter');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
                highlighter = this.get('resultHighlighter');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
                maxResults  = this.get('maxResults');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
                // If maxResults is set and greater than 0, limit the number of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
                // results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                if (maxResults && maxResults > 0 &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
                        results.length > maxResults) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
                    results.length = maxResults;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                // Run the results through the configured highlighter (if any).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
                // The highlighter returns an array of highlighted strings (not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                // an array of result objects), and these strings are then added
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
                // to each result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
                if (highlighter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
                    highlighted = highlighter.call(this, query,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                            results.concat());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                    if (!highlighted) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
                        return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
                    for (i = 0, len = highlighted.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
                        result = results[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
                        result.highlighted = highlighted[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
                        result.display     = result.highlighted;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
                // Run the results through the configured formatter (if any) to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
                // produce the final formatted results. The formatter returns an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
                // array of strings or Node instances (not an array of result
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
                // objects), and these strings/Nodes are then added to each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
                // result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
                if (formatter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
                    formatted = formatter.call(this, query, results.concat());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
                    if (!formatted) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
                        return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
                    for (i = 0, len = formatted.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
                        results[i].display = formatted[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
        facade.results = results;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
        this.fire(EVT_RESULTS, facade);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
    Returns the query portion of the specified input value, or `null` if there
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
    is no suitable query within the input value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
    If a query delimiter is defined, the query will be the last delimited part
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
    of of the string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
    @method _parseValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
    @param {String} value Input value from which to extract the query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
    @return {String|null} query
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
    _parseValue: function (value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
        var delim = this.get(QUERY_DELIMITER);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
        if (delim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
            value = value.split(delim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
            value = value[value.length - 1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
        return Lang.trimLeft(value);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
    Setter for the `enableCache` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
    @method _setEnableCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
    @param {Boolean} value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
    _setEnableCache: function (value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
        // When `this._cache` is an object, result sources will store cached
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
        // results in it. When it's falsy, they won't. This way result sources
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
        // don't need to get the value of the `enableCache` attribute on every
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
        // request, which would be sloooow.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
        this._cache = value ? {} : null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
    Setter for locator attributes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
    @method _setLocator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
    @param {Function|String|null} locator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
    @return {Function|null}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
    _setLocator: function (locator) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
        if (this[_FUNCTION_VALIDATOR](locator)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
            return locator;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
        var that = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
        locator = locator.toString().split('.');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
        return function (result) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
            return result && that._getObjectValue(result, locator);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
    Setter for the `requestTemplate` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
    @method _setRequestTemplate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
    @param {Function|String|null} template
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
    @return {Function|null}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
    _setRequestTemplate: function (template) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
        if (this[_FUNCTION_VALIDATOR](template)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
            return template;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
        template = template.toString();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
        return function (query) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
            return Lang.sub(template, {query: encodeURIComponent(query)});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
    Setter for the `resultFilters` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
    @method _setResultFilters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
    @param {Array|Function|String|null} filters `null`, a filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
        function, an array of filter functions, or a string or array of strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
        representing the names of methods on `Y.AutoCompleteFilters`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
    @return {Function[]} Array of filter functions (empty if <i>filters</i> is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
        `null`).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
    _setResultFilters: function (filters) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
        var acFilters, getFilterFunction;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
        if (filters === null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
            return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
        acFilters = Y.AutoCompleteFilters;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
        getFilterFunction = function (filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
            if (isFunction(filter)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
                return filter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
            if (isString(filter) && acFilters &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
                    isFunction(acFilters[filter])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
                return acFilters[filter];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
        if (Lang.isArray(filters)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
            filters = YArray.map(filters, getFilterFunction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
            return YArray.every(filters, function (f) { return !!f; }) ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
                    filters : INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
            filters = getFilterFunction(filters);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
            return filters ? [filters] : INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
    Setter for the `resultHighlighter` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
    @method _setResultHighlighter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
    @param {Function|String|null} highlighter `null`, a highlighter function, or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
        a string representing the name of a method on
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
        `Y.AutoCompleteHighlighters`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
    @return {Function|null}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
    _setResultHighlighter: function (highlighter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
        var acHighlighters;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
        if (this[_FUNCTION_VALIDATOR](highlighter)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
            return highlighter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
        acHighlighters = Y.AutoCompleteHighlighters;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
        if (isString(highlighter) && acHighlighters &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
                isFunction(acHighlighters[highlighter])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
            return acHighlighters[highlighter];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
        return INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
    Setter for the `source` attribute. Returns a DataSource or a DataSource-like
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
    object depending on the type of _source_ and/or the value of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
    `sourceType` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
    @method _setSource
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
    @param {Any} source AutoComplete source. See the `source` attribute for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
        details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
    @return {DataSource|Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
    _setSource: function (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
        var sourceType = this.get('sourceType') || Lang.type(source),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
            sourceSetter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
        if ((source && isFunction(source.sendRequest))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
                || source === null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
                || sourceType === 'datasource') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
            // Quacks like a DataSource instance (or null). Make it so!
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
            this._rawSource = source;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
            return source;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
        // See if there's a registered setter for this source type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
        if ((sourceSetter = AutoCompleteBase.SOURCE_TYPES[sourceType])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
            this._rawSource = source;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
            return Lang.isString(sourceSetter) ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
                    this[sourceSetter](source) : sourceSetter(source);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
        Y.error("Unsupported source type '" + sourceType + "'. Maybe autocomplete-sources isn't loaded?");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
        return INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
    Shared success callback for non-DataSource sources.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
    @method _sourceSuccess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
    @param {Any} data Response data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
    @param {Object} request Request object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
    _sourceSuccess: function (data, request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
        request.callback.success({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
            data: data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
            response: {results: data}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
    Synchronizes the UI state of the `allowBrowserAutocomplete` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
    @method _syncBrowserAutocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
    _syncBrowserAutocomplete: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
        var inputNode = this.get(INPUT_NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
        if (inputNode.get('nodeName').toLowerCase() === 'input') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
            inputNode.setAttribute('autocomplete',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
                    this.get(ALLOW_BROWSER_AC) ? 'on' : 'off');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
    Updates the query portion of the `value` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
    If a query delimiter is defined, the last delimited portion of the input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
    value will be replaced with the specified _value_.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
    @method _updateValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
    @param {String} newVal New value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
    _updateValue: function (newVal) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
        var delim = this.get(QUERY_DELIMITER),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
            insertDelim,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
            prevVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
        newVal = Lang.trimLeft(newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
        if (delim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
            insertDelim = trim(delim); // so we don't double up on spaces
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
            prevVal     = YArray.map(trim(this.get(VALUE)).split(delim), trim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
            len         = prevVal.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
            if (len > 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
                prevVal[len - 1] = newVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
                newVal = prevVal.join(insertDelim + ' ');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
            newVal = newVal + insertDelim + ' ';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
        this.set(VALUE, newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
    // -- Protected Event Handlers ---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
    Updates the current `source` based on the new `sourceType` to ensure that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
    the two attributes don't get out of sync when they're changed separately.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
    @method _afterSourceTypeChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
    _afterSourceTypeChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
        if (this._rawSource) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
            this.set('source', this._rawSource);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
    Handles change events for the `value` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
    @method _afterValueChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
    _afterValueChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
        var newVal   = e.newVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
            self     = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
            uiChange = e.src === AutoCompleteBase.UI_SRC,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
            delay, fire, minQueryLength, query;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
        // Update the UI if the value was changed programmatically.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
        if (!uiChange) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
            self._inputNode.set(VALUE, newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
        minQueryLength = self.get('minQueryLength');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
        query          = self._parseValue(newVal) || '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
        if (minQueryLength >= 0 && query.length >= minQueryLength) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
            // Only query on changes that originate from the UI.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
            if (uiChange) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
                delay = self.get('queryDelay');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
                fire = function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
                    self.fire(EVT_QUERY, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
                        inputValue: newVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
                        query     : query,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
                        src       : e.src
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
                    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
                if (delay) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
                    clearTimeout(self._delay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
                    self._delay = setTimeout(fire, delay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
                    fire();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
                // For programmatic value changes, just update the query
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
                // attribute without sending a query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
                self._set(QUERY, query);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
            clearTimeout(self._delay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
            self.fire(EVT_CLEAR, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
                prevVal: e.prevVal ? self._parseValue(e.prevVal) : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
                src    : e.src
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
    Handles `blur` events on the input node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
    @method _onInputBlur
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
    _onInputBlur: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
        var delim = this.get(QUERY_DELIMITER),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
            delimPos,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
            newVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
            value;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
        // If a query delimiter is set and the input's value contains one or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
        // more trailing delimiters, strip them.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
        if (delim && !this.get('allowTrailingDelimiter')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
            delim = Lang.trimRight(delim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
            value = newVal = this._inputNode.get(VALUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
            if (delim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
                while ((newVal = Lang.trimRight(newVal)) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
                        (delimPos = newVal.length - delim.length) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
                        newVal.lastIndexOf(delim) === delimPos) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
                    newVal = newVal.substring(0, delimPos);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
                // Delimiter is one or more space characters, so just trim the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
                // value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
                newVal = Lang.trimRight(newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
            if (newVal !== value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
                this.set(VALUE, newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
    Handles `valueChange` events on the input node and fires a `query` event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
    when the input value meets the configured criteria.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
    @method _onInputValueChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
    _onInputValueChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
        var newVal = e.newVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
        // Don't query if the internal value is the same as the new value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
        // reported by valueChange.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
        if (newVal !== this.get(VALUE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
            this.set(VALUE, newVal, {src: AutoCompleteBase.UI_SRC});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
    Handles source responses and fires the `results` event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
    @method _onResponse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
    _onResponse: function (query, e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
        // Ignore stale responses that aren't for the current query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
        if (query === (this.get(QUERY) || '')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
            this._parseResponse(query || '', e.response, e.data);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
    // -- Protected Default Event Handlers -------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
    Default `clear` event handler. Sets the `results` attribute to an empty
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
    array and `query` to null.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
    @method _defClearFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
    _defClearFn: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
        this._set(QUERY, null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
        this._set(RESULTS, []);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
    Default `query` event handler. Sets the `query` attribute and sends a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
    request to the source if one is configured.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
    @method _defQueryFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
    _defQueryFn: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
        this.sendRequest(e.query); // sendRequest will set the 'query' attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
    Default `results` event handler. Sets the `results` attribute to the latest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
    results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
    @method _defResultsFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
    _defResultsFn: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
        this._set(RESULTS, e[RESULTS]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
AutoCompleteBase.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
    Whether or not to enable the browser's built-in autocomplete functionality
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
    for input fields.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
    @attribute allowBrowserAutocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
    @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
    @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
    allowBrowserAutocomplete: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
        value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
    When a `queryDelimiter` is set, trailing delimiters will automatically be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
    stripped from the input value by default when the input node loses focus.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
    Set this to `true` to allow trailing delimiters.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
    @attribute allowTrailingDelimiter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
    @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
    @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
    allowTrailingDelimiter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
        value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
    Whether or not to enable in-memory caching in result sources that support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
    it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
    @attribute enableCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
    @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
    @default true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
    enableCache: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
        lazyAdd: false, // we need the setter to run on init
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
        setter: '_setEnableCache',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
        value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
    Node to monitor for changes, which will generate `query` events when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
    appropriate. May be either an `<input>` or a `<textarea>`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
    @attribute inputNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
    @type Node|HTMLElement|String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
    @initOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
    inputNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
        setter: Y.one,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
        writeOnce: 'initOnly'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
    Maximum number of results to return. A value of `0` or less will allow an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
    unlimited number of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
    @attribute maxResults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
    @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
    @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
    maxResults: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
    Minimum number of characters that must be entered before a `query` event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
    will be fired. A value of `0` allows empty queries; a negative value will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
    effectively disable all `query` events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
    @attribute minQueryLength
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
    @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
    @default 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
    minQueryLength: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
        value: 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
    Current query, or `null` if there is no current query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
    The query might not be the same as the current value of the input node, both
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
    for timing reasons (due to `queryDelay`) and because when one or more
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
    `queryDelimiter` separators are in use, only the last portion of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
    delimited input string will be used as the query value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
    @attribute query
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
    @type String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
    @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
    @readonly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
    query: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
    Number of milliseconds to delay after input before triggering a `query`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
    event. If new input occurs before this delay is over, the previous input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
    event will be ignored and a new delay will begin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
    This can be useful both to throttle queries to a remote data source and to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
    avoid distracting the user by showing them less relevant results before
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
    they've paused their typing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
    @attribute queryDelay
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
    @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
    @default 100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
    queryDelay: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
        value: 100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
    Query delimiter string. When a delimiter is configured, the input value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
    will be split on the delimiter, and only the last portion will be used in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
    autocomplete queries and updated when the `query` attribute is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
    modified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
    @attribute queryDelimiter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
    @type String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
    @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
    queryDelimiter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
    Source request template. This can be a function that accepts a query as a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
    parameter and returns a request string, or it can be a string containing the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
    placeholder "{query}", which will be replaced with the actual URI-encoded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
    query. In either case, the resulting string will be appended to the request
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
    URL when the `source` attribute is set to a remote DataSource, JSONP URL, or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
    XHR URL (it will not be appended to YQL URLs).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
    While `requestTemplate` may be set to either a function or a string, it will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
    always be returned as a function that accepts a query argument and returns a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
    string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
    @attribute requestTemplate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
    @type Function|String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
    @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
    requestTemplate: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
        setter: '_setRequestTemplate',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
    Array of local result filter functions. If provided, each filter will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
    called with two arguments when results are received: the query and an array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
    of result objects. See the documentation for the `results` event for a list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
    of the properties available on each result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
    Each filter is expected to return a filtered or modified version of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
    results array, which will then be passed on to subsequent filters, then the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
    `resultHighlighter` function (if set), then the `resultFormatter` function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
    (if set), and finally to subscribers to the `results` event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
    If no `source` is set, result filters will not be called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
    Prepackaged result filters provided by the autocomplete-filters and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
    autocomplete-filters-accentfold modules can be used by specifying the filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
    name as a string, such as `'phraseMatch'` (assuming the necessary filters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
    module is loaded).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
    @attribute resultFilters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
    @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
    @default []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
    resultFilters: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
        setter: '_setResultFilters',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
        value: []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
    Function which will be used to format results. If provided, this function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
    will be called with two arguments after results have been received and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
    filtered: the query and an array of result objects. The formatter is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
    expected to return an array of HTML strings or Node instances containing the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
    desired HTML for each result.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
    See the documentation for the `results` event for a list of the properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
    available on each result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
    If no `source` is set, the formatter will not be called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
    @attribute resultFormatter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
    @type Function|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
    resultFormatter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
        validator: _FUNCTION_VALIDATOR,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
    Function which will be used to highlight results. If provided, this function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
    will be called with two arguments after results have been received and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
    filtered: the query and an array of filtered result objects. The highlighter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
    is expected to return an array of highlighted result text in the form of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
    HTML strings.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
    See the documentation for the `results` event for a list of the properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
    available on each result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
    If no `source` is set, the highlighter will not be called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
    @attribute resultHighlighter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
    @type Function|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
    resultHighlighter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
        setter: '_setResultHighlighter',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
    Locator that should be used to extract an array of results from a non-array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
    response.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
    By default, no locator is applied, and all responses are assumed to be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
    arrays by default. If all responses are already arrays, you don't need to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
    define a locator.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
    The locator may be either a function (which will receive the raw response as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
    an argument and must return an array) or a string representing an object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
    path, such as "foo.bar.baz" (which would return the value of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
    `result.foo.bar.baz` if the response is an object).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
    While `resultListLocator` may be set to either a function or a string, it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
    will always be returned as a function that accepts a response argument and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
    returns an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
    @attribute resultListLocator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
    @type Function|String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
    resultListLocator: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
        setter: '_setLocator',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
    Current results, or an empty array if there are no results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
    @attribute results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
    @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
    @default []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
    @readonly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
    results: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
        value: []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
    Locator that should be used to extract a plain text string from a non-string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
    result item. The resulting text value will typically be the value that ends
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
    up being inserted into an input field or textarea when the user of an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
    autocomplete implementation selects a result.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
    By default, no locator is applied, and all results are assumed to be plain
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
    text strings. If all results are already plain text strings, you don't need
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
    to define a locator.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
    The locator may be either a function (which will receive the raw result as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
    an argument and must return a string) or a string representing an object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
    path, such as "foo.bar.baz" (which would return the value of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
    `result.foo.bar.baz` if the result is an object).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
    While `resultTextLocator` may be set to either a function or a string, it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
    will always be returned as a function that accepts a result argument and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
    returns a string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
    @attribute resultTextLocator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
    @type Function|String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
    resultTextLocator: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
        setter: '_setLocator',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
    Source for autocomplete results. The following source types are supported:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
    <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
      <dt>Array</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
        The full array will be provided to any configured filters for each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
        query. This is an easy way to create a fully client-side autocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
        implementation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
        Example: `['first result', 'second result', 'etc']`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
      <dt>DataSource</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
        A `DataSource` instance or other object that provides a DataSource-like
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
        `sendRequest` method. See the `DataSource` documentation for details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
      <dt>Function</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
        A function source will be called with the current query and a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
        callback function as parameters, and should either return an array of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
        results (for synchronous operation) or return nothing and pass an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
        array of results to the provided callback (for asynchronous
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
        operation).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
        Example (synchronous):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
        <pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
        function (query) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
            return ['foo', 'bar'];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
        </pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
        Example (async):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
        <pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
        function (query, callback) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
            callback(['foo', 'bar']);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
        </pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
      <dt>Object</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
        An object will be treated as a query hashmap. If a property on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
        object matches the current query, the value of that property will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
        used as the response.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
        The response is assumed to be an array of results by default. If the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
        response is not an array, provide a `resultListLocator` to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
        process the response and return an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
        Example: `{foo: ['foo result 1', 'foo result 2'], bar: ['bar result']}`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
    </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
    If the optional `autocomplete-sources` module is loaded, then
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
    the following additional source types will be supported as well:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
    <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
      <dt>&lt;select&gt; Node</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
        You may provide a YUI Node instance wrapping a &lt;select&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
        element, and the options in the list will be used as results. You
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
        will also need to specify a `resultTextLocator` of 'text'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
        or 'value', depending on what you want to use as the text of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
        result.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
        Each result will be an object with the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
        <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
          <dt>html (String)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
            <p>HTML content of the &lt;option&gt; element.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
          <dt>index (Number)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
            <p>Index of the &lt;option&gt; element in the list.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
          <dt>node (Y.Node)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
            <p>Node instance referring to the original &lt;option&gt; element.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
          <dt>selected (Boolean)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
            <p>Whether or not this item is currently selected in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
            &lt;select&gt; list.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
          <dt>text (String)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
            <p>Text content of the &lt;option&gt; element.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
          <dt>value (String)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
            <p>Value of the &lt;option&gt; element.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
        </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
      <dt>String (JSONP URL)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
        If a URL with a `{callback}` placeholder is provided, it will be used to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
        make a JSONP request. The `{query}` placeholder will be replaced with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
        the current query, and the `{callback}` placeholder will be replaced
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
        with an internally-generated JSONP callback name. Both placeholders must
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
        appear in the URL, or the request will fail. An optional `{maxResults}`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
        placeholder may also be provided, and will be replaced with the value of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
        the maxResults attribute (or 1000 if the maxResults attribute is 0 or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
        less).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
        The response is assumed to be an array of results by default. If the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
        response is not an array, provide a `resultListLocator` to process the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
        response and return an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
        <strong>The `jsonp` module must be loaded in order for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
        JSONP URL sources to work.</strong> If the `jsonp` module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
        is not already loaded, it will be loaded on demand if possible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
        Example: `'http://example.com/search?q={query}&callback={callback}'`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
      <dt>String (XHR URL)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
        If a URL without a `{callback}` placeholder is provided, it will be used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
        to make a same-origin XHR request. The `{query}` placeholder will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
        replaced with the current query. An optional `{maxResults}` placeholder
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
        may also be provided, and will be replaced with the value of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
        maxResults attribute (or 1000 if the maxResults attribute is 0 or less).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
        The response is assumed to be a JSON array of results by default. If the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
        response is a JSON object and not an array, provide a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
        `resultListLocator` to process the response and return an array. If the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
        response is in some form other than JSON, you will need to use a custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
        DataSource instance as the source.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
        <strong>The `io-base` and `json-parse` modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
        must be loaded in order for XHR URL sources to work.</strong> If
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
        these modules are not already loaded, they will be loaded on demand
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
        if possible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
        Example: `'http://example.com/search?q={query}'`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
      <dt>String (YQL query)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
        If a YQL query is provided, it will be used to make a YQL request. The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
        `{query}` placeholder will be replaced with the current autocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
        query. This placeholder must appear in the YQL query, or the request
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
        will fail. An optional `{maxResults}` placeholder may also be provided,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
        and will be replaced with the value of the maxResults attribute (or 1000
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
        if the maxResults attribute is 0 or less).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
        <strong>The `yql` module must be loaded in order for YQL
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
        sources to work.</strong> If the `yql` module is not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
        already loaded, it will be loaded on demand if possible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
        Example: `'select * from search.suggest where query="{query}"'`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
    </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
    As an alternative to providing a source, you could simply listen for `query`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
    events and handle them any way you see fit. Providing a source is optional,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
    but will usually be simpler.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
    @attribute source
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
    @type Array|DataSource|Function|Node|Object|String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
    source: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
        setter: '_setSource',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1468
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
    May be used to force a specific source type, overriding the automatic source
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
    type detection. It should almost never be necessary to do this, but as they
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
    taught us in the Boy Scouts, one should always be prepared, so it's here if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
    you need it. Be warned that if you set this attribute and something breaks,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
    it's your own fault.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
    Supported `sourceType` values are: 'array', 'datasource', 'function', and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
    'object'.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
    If the `autocomplete-sources` module is loaded, the following additional
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
    source types are supported: 'io', 'jsonp', 'select', 'string', 'yql'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
    @attribute sourceType
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
    @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
    sourceType: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
    If the `inputNode` specified at instantiation time has a `node-tokeninput`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
    plugin attached to it, this attribute will be a reference to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
    `Y.Plugin.TokenInput` instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
    @attribute tokenInput
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
    @type Plugin.TokenInput
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
    @readonly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1498
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1499
    tokenInput: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1500
        readOnly: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1501
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1502
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1503
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1504
    Current value of the input node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
    @attribute value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
    @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
    @default ''
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
    value: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
        // Why duplicate this._inputNode.get('value')? Because we need a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
        // reliable way to track the source of value changes. We want to perform
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
        // completion when the user changes the value, but not when we change
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1514
        // the value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1515
        value: ''
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1516
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1517
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1518
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
// This tells Y.Base.create() to copy these static properties to any class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
// AutoCompleteBase is mixed into.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
AutoCompleteBase._buildCfg = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
    aggregates: ['SOURCE_TYPES'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
    statics   : ['UI_SRC']
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1524
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1526
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1527
Mapping of built-in source types to their setter functions. DataSource instances
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
and DataSource-like objects are handled natively, so are not mapped here.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
@property SOURCE_TYPES
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
@type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
AutoCompleteBase.SOURCE_TYPES = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
    array     : '_createArraySource',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
    'function': '_createFunctionSource',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
    object    : '_createObjectSource'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
AutoCompleteBase.UI_SRC = (Y.Widget && Y.Widget.UI_SRC) || 'ui';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
Y.AutoCompleteBase = AutoCompleteBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
}, '3.10.3', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
    "optional": [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
        "autocomplete-sources"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
    ],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
    "requires": [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
        "array-extras",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
        "base-build",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
        "escape",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
        "event-valuechange",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
        "node-base"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
    ]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
});