src/cm/media/js/lib/yui/yui_3.10.3/build/autocomplete-base/autocomplete-base-debug.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
            Y.log('sendRequest: ' + request, 'info', 'autocomplete-base');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
            source.sendRequest({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
                query  : query,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
                request: request,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
                callback: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
                    success: Y.bind(this._onResponse, this, query)
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
    // -- Protected Lifecycle Methods ------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
    Attaches event listeners and behaviors.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
    @method _bindUIACBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
    _bindUIACBase: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        var inputNode  = this.get(INPUT_NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
            tokenInput = inputNode && inputNode.tokenInput;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        // If the inputNode has a node-tokeninput plugin attached, bind to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        // plugin's inputNode instead.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        if (tokenInput) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            inputNode = tokenInput.get(INPUT_NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
            this._set('tokenInput', tokenInput);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        if (!inputNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            Y.error('No inputNode specified.');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        this._inputNode = inputNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        this._acBaseEvents = new Y.EventHandle([
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
            // This is the valueChange event on the inputNode, provided by the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
            // event-valuechange module, not our own valueChange.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            inputNode.on(VALUE_CHANGE, this._onInputValueChange, this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
            inputNode.on('blur', this._onInputBlur, this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
            this.after(ALLOW_BROWSER_AC + 'Change', this._syncBrowserAutocomplete),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            this.after('sourceTypeChange', this._afterSourceTypeChange),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
            this.after(VALUE_CHANGE, this._afterValueChange)
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    Synchronizes the UI state of the `inputNode`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    @method _syncUIACBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
    _syncUIACBase: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
        this._syncBrowserAutocomplete();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
        this.set(VALUE, this.get(INPUT_NODE).get(VALUE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
    // -- Protected Prototype Methods ------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
    Creates a DataSource-like object that simply returns the specified array as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    a response. See the `source` attribute for more details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    @method _createArraySource
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
    @param {Array} source
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
    @return {Object} DataSource-like object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
    _createArraySource: function (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
        var that = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
            type: 'array',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            sendRequest: function (request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
                that[_SOURCE_SUCCESS](source.concat(), request);
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    Creates a DataSource-like object that passes the query to a custom-defined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    function, which is expected to call the provided callback with an array of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
    results. See the `source` attribute for more details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
    @method _createFunctionSource
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
    @param {Function} source Function that accepts a query and a callback as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
      parameters, and calls the callback with an array of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    @return {Object} DataSource-like object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
    _createFunctionSource: function (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        var that = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
            type: 'function',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
            sendRequest: function (request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
                var value;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
                function afterResults(results) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
                    that[_SOURCE_SUCCESS](results || [], request);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
                // Allow both synchronous and asynchronous functions. If we get
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
                // a truthy return value, assume the function is synchronous.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
                if ((value = source(request.query, afterResults))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
                    afterResults(value);
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
    Creates a DataSource-like object that looks up queries as properties on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    specified object, and returns the found value (if any) as a response. See
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    the `source` attribute for more details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
    @method _createObjectSource
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    @param {Object} source
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    @return {Object} DataSource-like object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    _createObjectSource: function (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
        var that = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
            type: 'object',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
            sendRequest: function (request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
                var query = request.query;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
                that[_SOURCE_SUCCESS](
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
                    YObject.owns(source, query) ? source[query] : [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
                    request
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
    Returns `true` if _value_ is either a function or `null`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
    @method _functionValidator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
    @param {Function|null} value Value to validate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
    _functionValidator: function (value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        return value === null || isFunction(value);
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
    Faster and safer alternative to `Y.Object.getValue()`. Doesn't bother
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
    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
   392
    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
   393
    neither `undefined` nor an object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
    @method _getObjectValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    @param {Object} obj
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
    @param {Array} path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
    @return {Any} Located value, or `undefined` if the value was
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
        not found at the specified path.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
    _getObjectValue: function (obj, path) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
        if (!obj) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
        for (var i = 0, len = path.length; obj && i < len; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            obj = obj[path[i]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
        return obj;
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
    Parses result responses, performs filtering and highlighting, and fires the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
    `results` event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
    @method _parseResponse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
    @param {String} query Query that generated these results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
    @param {Object} response Response containing results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
    @param {Object} data Raw response data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
    _parseResponse: function (query, response, data) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
        var facade = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                data   : data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                query  : query,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
                results: []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
            listLocator = this.get(RESULT_LIST_LOCATOR),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            results     = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
            unfiltered  = response && response.results,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
            filters,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            formatted,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
            formatter,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            highlighted,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
            highlighter,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
            maxResults,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
            result,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            text,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
            textLocator;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        if (unfiltered && listLocator) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
            unfiltered = listLocator.call(this, unfiltered);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        if (unfiltered && unfiltered.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
            filters     = this.get('resultFilters');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
            textLocator = this.get('resultTextLocator');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            // Create a lightweight result object for each result to make them
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
            // easier to work with. The various properties on the object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
            // represent different formats of the result, and will be populated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
            // as we go.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
            for (i = 0, len = unfiltered.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
                result = unfiltered[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
                text = textLocator ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
                        textLocator.call(this, result) :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
                        result.toString();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
                results.push({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
                    display: Escape.html(text),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
                    raw    : result,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
                    text   : text
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
            // Run the results through all configured result filters. Each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            // filter returns an array of (potentially fewer) result objects,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
            // which is then passed to the next filter, and so on.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
            for (i = 0, len = filters.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
                results = filters[i].call(this, query, results.concat());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
                if (!results) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
                    Y.log("Filter didn't return anything.", 'warn', 'autocomplete-base');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
                    return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
                if (!results.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
            if (results.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
                formatter   = this.get('resultFormatter');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
                highlighter = this.get('resultHighlighter');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
                maxResults  = this.get('maxResults');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                // If maxResults is set and greater than 0, limit the number of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
                // results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
                if (maxResults && maxResults > 0 &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                        results.length > maxResults) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                    results.length = maxResults;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                // Run the results through the configured highlighter (if any).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
                // The highlighter returns an array of highlighted strings (not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
                // an array of result objects), and these strings are then added
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
                // to each result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                if (highlighter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
                    highlighted = highlighter.call(this, query,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                            results.concat());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
                    if (!highlighted) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
                        Y.log("Highlighter didn't return anything.", 'warn', 'autocomplete-base');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
                        return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
                    for (i = 0, len = highlighted.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
                        result = results[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                        result.highlighted = highlighted[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
                        result.display     = result.highlighted;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
                // Run the results through the configured formatter (if any) to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
                // produce the final formatted results. The formatter returns an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
                // array of strings or Node instances (not an array of result
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
                // objects), and these strings/Nodes are then added to each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
                // result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
                if (formatter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
                    formatted = formatter.call(this, query, results.concat());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
                    if (!formatted) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
                        Y.log("Formatter didn't return anything.", 'warn', 'autocomplete-base');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
                        return;
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
                    for (i = 0, len = formatted.length; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
                        results[i].display = formatted[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
            }
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
        facade.results = results;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
        this.fire(EVT_RESULTS, facade);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
    Returns the query portion of the specified input value, or `null` if there
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
    is no suitable query within the input value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
    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
   550
    of of the string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
    @method _parseValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
    @param {String} value Input value from which to extract the query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
    @return {String|null} query
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
    _parseValue: function (value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
        var delim = this.get(QUERY_DELIMITER);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
        if (delim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
            value = value.split(delim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
            value = value[value.length - 1];
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
        return Lang.trimLeft(value);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
    Setter for the `enableCache` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
    @method _setEnableCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
    @param {Boolean} value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
    _setEnableCache: function (value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
        // When `this._cache` is an object, result sources will store cached
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
        // 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
   579
        // don't need to get the value of the `enableCache` attribute on every
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
        // request, which would be sloooow.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
        this._cache = value ? {} : null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
        Y.log('Cache ' + (value ? 'enabled' : 'disabled'), 'debug', 'autocomplete-base');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
    Setter for locator attributes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
    @method _setLocator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
    @param {Function|String|null} locator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
    @return {Function|null}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
    _setLocator: function (locator) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
        if (this[_FUNCTION_VALIDATOR](locator)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
            return locator;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
        var that = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
        locator = locator.toString().split('.');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
        return function (result) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
            return result && that._getObjectValue(result, locator);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
    Setter for the `requestTemplate` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
    @method _setRequestTemplate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
    @param {Function|String|null} template
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
    @return {Function|null}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
    _setRequestTemplate: function (template) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
        if (this[_FUNCTION_VALIDATOR](template)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
            return template;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
        template = template.toString();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
        return function (query) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
            return Lang.sub(template, {query: encodeURIComponent(query)});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
    Setter for the `resultFilters` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
    @method _setResultFilters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
    @param {Array|Function|String|null} filters `null`, a filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
        function, an array of filter functions, or a string or array of strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
        representing the names of methods on `Y.AutoCompleteFilters`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
    @return {Function[]} Array of filter functions (empty if <i>filters</i> is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
        `null`).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
    _setResultFilters: function (filters) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
        var acFilters, getFilterFunction;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
        if (filters === null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
            return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
        acFilters = Y.AutoCompleteFilters;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
        getFilterFunction = function (filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
            if (isFunction(filter)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
                return 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
            if (isString(filter) && acFilters &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
                    isFunction(acFilters[filter])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
                return acFilters[filter];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
        if (Lang.isArray(filters)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
            filters = YArray.map(filters, getFilterFunction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
            return YArray.every(filters, function (f) { return !!f; }) ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
                    filters : INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
            filters = getFilterFunction(filters);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
            return filters ? [filters] : INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
    Setter for the `resultHighlighter` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
    @method _setResultHighlighter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
    @param {Function|String|null} highlighter `null`, a highlighter function, or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
        a string representing the name of a method on
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
        `Y.AutoCompleteHighlighters`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
    @return {Function|null}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
    _setResultHighlighter: function (highlighter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
        var acHighlighters;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
        if (this[_FUNCTION_VALIDATOR](highlighter)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
            return highlighter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
        acHighlighters = Y.AutoCompleteHighlighters;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
        if (isString(highlighter) && acHighlighters &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
                isFunction(acHighlighters[highlighter])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
            return acHighlighters[highlighter];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
        return INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
    Setter for the `source` attribute. Returns a DataSource or a DataSource-like
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
    object depending on the type of _source_ and/or the value of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
    `sourceType` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
    @method _setSource
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
    @param {Any} source AutoComplete source. See the `source` attribute for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
        details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
    @return {DataSource|Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
    _setSource: function (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
        var sourceType = this.get('sourceType') || Lang.type(source),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
            sourceSetter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
        if ((source && isFunction(source.sendRequest))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
                || source === null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
                || sourceType === 'datasource') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
            // Quacks like a DataSource instance (or null). Make it so!
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
            this._rawSource = source;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
            return source;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
        // See if there's a registered setter for this source type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
        if ((sourceSetter = AutoCompleteBase.SOURCE_TYPES[sourceType])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
            this._rawSource = source;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
            return Lang.isString(sourceSetter) ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
                    this[sourceSetter](source) : sourceSetter(source);
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
        Y.error("Unsupported source type '" + sourceType + "'. Maybe autocomplete-sources isn't loaded?");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
        return INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
    Shared success callback for non-DataSource sources.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
    @method _sourceSuccess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
    @param {Any} data Response data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
    @param {Object} request Request object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
    _sourceSuccess: function (data, request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
        request.callback.success({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
            data: data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
            response: {results: data}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
    Synchronizes the UI state of the `allowBrowserAutocomplete` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
    @method _syncBrowserAutocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
    _syncBrowserAutocomplete: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
        var inputNode = this.get(INPUT_NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
        if (inputNode.get('nodeName').toLowerCase() === 'input') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
            inputNode.setAttribute('autocomplete',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
                    this.get(ALLOW_BROWSER_AC) ? 'on' : 'off');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
    Updates the query portion of the `value` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
    If a query delimiter is defined, the last delimited portion of the input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
    value will be replaced with the specified _value_.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
    @method _updateValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
    @param {String} newVal New value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
    _updateValue: function (newVal) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
        var delim = this.get(QUERY_DELIMITER),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
            insertDelim,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
            prevVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
        newVal = Lang.trimLeft(newVal);
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 (delim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
            insertDelim = trim(delim); // so we don't double up on spaces
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
            prevVal     = YArray.map(trim(this.get(VALUE)).split(delim), trim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
            len         = prevVal.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
            if (len > 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
                prevVal[len - 1] = newVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
                newVal = prevVal.join(insertDelim + ' ');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
            newVal = newVal + insertDelim + ' ';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
        this.set(VALUE, newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
    // -- Protected Event Handlers ---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
    Updates the current `source` based on the new `sourceType` to ensure that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
    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
   801
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
    @method _afterSourceTypeChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
    _afterSourceTypeChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
        if (this._rawSource) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
            this.set('source', this._rawSource);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
    Handles change events for the `value` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
    @method _afterValueChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
    _afterValueChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
        var newVal   = e.newVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
            self     = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
            uiChange = e.src === AutoCompleteBase.UI_SRC,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
            delay, fire, minQueryLength, query;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
        // Update the UI if the value was changed programmatically.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
        if (!uiChange) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
            self._inputNode.set(VALUE, 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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
        Y.log('valueChange: new: "' + newVal + '"; old: "' + e.prevVal + '"', 'info', 'autocomplete-base');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
        minQueryLength = self.get('minQueryLength');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
        query          = self._parseValue(newVal) || '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
        if (minQueryLength >= 0 && query.length >= minQueryLength) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
            // Only query on changes that originate from the UI.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
            if (uiChange) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
                delay = self.get('queryDelay');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
                fire = function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
                    self.fire(EVT_QUERY, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
                        inputValue: newVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
                        query     : query,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
                        src       : e.src
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
                    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
                if (delay) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
                    clearTimeout(self._delay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
                    self._delay = setTimeout(fire, delay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
                    fire();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
                // For programmatic value changes, just update the query
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
                // attribute without sending a query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
                self._set(QUERY, query);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
            clearTimeout(self._delay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
            self.fire(EVT_CLEAR, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
                prevVal: e.prevVal ? self._parseValue(e.prevVal) : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
                src    : e.src
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
    Handles `blur` events on the input node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
    @method _onInputBlur
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
    _onInputBlur: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
        var delim = this.get(QUERY_DELIMITER),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
            delimPos,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
            newVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
            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 a query delimiter is set and the input's value contains one or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
        // more trailing delimiters, strip them.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
        if (delim && !this.get('allowTrailingDelimiter')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
            delim = Lang.trimRight(delim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
            value = newVal = this._inputNode.get(VALUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
            if (delim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
                while ((newVal = Lang.trimRight(newVal)) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
                        (delimPos = newVal.length - delim.length) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
                        newVal.lastIndexOf(delim) === delimPos) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
                    newVal = newVal.substring(0, delimPos);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
                // Delimiter is one or more space characters, so just trim the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
                // value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
                newVal = Lang.trimRight(newVal);
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
            if (newVal !== value) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
                this.set(VALUE, newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
    Handles `valueChange` events on the input node and fires a `query` event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
    when the input value meets the configured criteria.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
    @method _onInputValueChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
    _onInputValueChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
        var newVal = e.newVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
        // 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
   919
        // reported by valueChange.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
        if (newVal !== this.get(VALUE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
            this.set(VALUE, newVal, {src: AutoCompleteBase.UI_SRC});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
    Handles source responses and fires the `results` event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
    @method _onResponse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
    _onResponse: function (query, e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
        // Ignore stale responses that aren't for the current query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
        if (query === (this.get(QUERY) || '')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
            this._parseResponse(query || '', e.response, e.data);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
    // -- Protected Default Event Handlers -------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
    Default `clear` event handler. Sets the `results` attribute to an empty
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
    array and `query` to null.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
    @method _defClearFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
    _defClearFn: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
        this._set(QUERY, null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
        this._set(RESULTS, []);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
    Default `query` event handler. Sets the `query` attribute and sends a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
    request to the source if one is configured.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
    @method _defQueryFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
    _defQueryFn: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
        Y.log('query: "' + e.query + '"; inputValue: "' + e.inputValue + '"', 'info', 'autocomplete-base');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
        this.sendRequest(e.query); // sendRequest will set the 'query' attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
    Default `results` event handler. Sets the `results` attribute to the latest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
    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
    @method _defResultsFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
    _defResultsFn: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
        Y.log('results: ' + Y.dump(e.results), 'info', 'autocomplete-base');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
        this._set(RESULTS, e[RESULTS]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
AutoCompleteBase.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
    Whether or not to enable the browser's built-in autocomplete functionality
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
    for input fields.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
    @attribute allowBrowserAutocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
    @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
    @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
    allowBrowserAutocomplete: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
        value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
    When a `queryDelimiter` is set, trailing delimiters will automatically be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
    stripped from the input value by default when the input node loses focus.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
    Set this to `true` to allow trailing delimiters.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
    @attribute allowTrailingDelimiter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
    @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
    @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
    allowTrailingDelimiter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
        value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
    Whether or not to enable in-memory caching in result sources that support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
    it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
    @attribute enableCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
    @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
    @default true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
    enableCache: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
        lazyAdd: false, // we need the setter to run on init
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
        setter: '_setEnableCache',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
        value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
    Node to monitor for changes, which will generate `query` events when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
    appropriate. May be either an `<input>` or a `<textarea>`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
    @attribute inputNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
    @type Node|HTMLElement|String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
    @initOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
    inputNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
        setter: Y.one,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
        writeOnce: 'initOnly'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
    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
  1036
    unlimited number of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
    @attribute maxResults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
    @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
    @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
    maxResults: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
    Minimum number of characters that must be entered before a `query` event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
    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
  1049
    effectively disable all `query` events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
    @attribute minQueryLength
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
    @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
    @default 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
    minQueryLength: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
        value: 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
    Current query, or `null` if there is no current query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
    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
  1063
    for timing reasons (due to `queryDelay`) and because when one or more
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
    `queryDelimiter` separators are in use, only the last portion of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
    delimited input string will be used as the query value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
    @attribute query
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
    @type String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
    @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
    @readonly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
    query: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
    Number of milliseconds to delay after input before triggering a `query`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
    event. If new input occurs before this delay is over, the previous input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
    event will be ignored and a new delay will begin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
    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
  1083
    avoid distracting the user by showing them less relevant results before
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
    they've paused their typing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
    @attribute queryDelay
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
    @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
    @default 100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
    queryDelay: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
        value: 100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
    Query delimiter string. When a delimiter is configured, the input value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
    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
  1097
    autocomplete queries and updated when the `query` attribute is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
    modified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
    @attribute queryDelimiter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
    @type String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
    @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
    queryDelimiter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
    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
  1110
    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
  1111
    placeholder "{query}", which will be replaced with the actual URI-encoded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
    query. In either case, the resulting string will be appended to the request
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
    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
  1114
    XHR URL (it will not be appended to YQL URLs).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
    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
  1117
    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
  1118
    string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
    @attribute requestTemplate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
    @type Function|String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
    @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
    requestTemplate: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
        setter: '_setRequestTemplate',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
    Array of local result filter functions. If provided, each filter will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
    called with two arguments when results are received: the query and an array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
    of result objects. See the documentation for the `results` event for a list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
    of the properties available on each result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
    Each filter is expected to return a filtered or modified version of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
    results array, which will then be passed on to subsequent filters, then the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
    `resultHighlighter` function (if set), then the `resultFormatter` function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
    (if set), and finally to subscribers to the `results` event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
    If no `source` is set, result filters will not be called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
    Prepackaged result filters provided by the autocomplete-filters and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
    autocomplete-filters-accentfold modules can be used by specifying the filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
    name as a string, such as `'phraseMatch'` (assuming the necessary filters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
    module is loaded).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
    @attribute resultFilters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
    @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
    @default []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
    resultFilters: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
        setter: '_setResultFilters',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
        value: []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
    Function which will be used to format results. If provided, this function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
    will be called with two arguments after results have been received and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
    filtered: the query and an array of result objects. The formatter is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
    expected to return an array of HTML strings or Node instances containing the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
    desired HTML for each result.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
    See the documentation for the `results` event for a list of the properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
    available on each result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
    If no `source` is set, the formatter will not be called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
    @attribute resultFormatter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
    @type Function|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
    resultFormatter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
        validator: _FUNCTION_VALIDATOR,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
    Function which will be used to highlight results. If provided, this function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
    will be called with two arguments after results have been received and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
    filtered: the query and an array of filtered result objects. The highlighter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
    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
  1181
    HTML strings.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
    See the documentation for the `results` event for a list of the properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
    available on each result object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
    If no `source` is set, the highlighter will not be called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
    @attribute resultHighlighter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
    @type Function|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
    resultHighlighter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
        setter: '_setResultHighlighter',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
    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
  1198
    response.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
    By default, no locator is applied, and all responses are assumed to be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
    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
  1202
    define a locator.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
    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
  1205
    an argument and must return an array) or a string representing an object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
    path, such as "foo.bar.baz" (which would return the value of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
    `result.foo.bar.baz` if the response is an object).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
    While `resultListLocator` may be set to either a function or a string, it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
    will always be returned as a function that accepts a response argument and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
    returns an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
    @attribute resultListLocator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
    @type Function|String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
    resultListLocator: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
        setter: '_setLocator',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
    Current results, or an empty array if there are no results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
    @attribute results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
    @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
    @default []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
    @readonly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
    results: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
        value: []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
    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
  1236
    result item. The resulting text value will typically be the value that ends
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
    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
  1238
    autocomplete implementation selects a result.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
    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
  1241
    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
  1242
    to define a locator.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
    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
  1245
    an argument and must return a string) or a string representing an object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
    path, such as "foo.bar.baz" (which would return the value of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
    `result.foo.bar.baz` if the result is an object).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
    While `resultTextLocator` may be set to either a function or a string, it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
    will always be returned as a function that accepts a result argument and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
    returns a string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
    @attribute resultTextLocator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
    @type Function|String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
    resultTextLocator: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
        setter: '_setLocator',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
    Source for autocomplete results. The following source types are supported:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
    <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
      <dt>Array</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
      <dd>
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
        The full array will be provided to any configured filters for each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
        query. This is an easy way to create a fully client-side autocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
        implementation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
        Example: `['first result', 'second result', 'etc']`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
      <dt>DataSource</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
        A `DataSource` instance or other object that provides a DataSource-like
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
        `sendRequest` method. See the `DataSource` documentation for details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
      <dt>Function</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
      <dd>
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
        A function source will be called with the current query and a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
        callback function as parameters, and should either return an array of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
        results (for synchronous operation) or return nothing and pass an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
        array of results to the provided callback (for asynchronous
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
        operation).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
        Example (synchronous):
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
        <pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
        function (query) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
            return ['foo', 'bar'];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
        </pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
        Example (async):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
        <pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
        function (query, callback) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
            callback(['foo', 'bar']);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
        </pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
      <dt>Object</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
        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
  1319
        object matches the current query, the value of that property will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
        used as the response.
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
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
        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
  1325
        response is not an array, provide a `resultListLocator` to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
        process the response and return an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
        Example: `{foo: ['foo result 1', 'foo result 2'], bar: ['bar result']}`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
        </p>
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
    </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
    If the optional `autocomplete-sources` module is loaded, then
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
    the following additional source types will be supported as well:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
    <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
      <dt>&lt;select&gt; Node</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
        You may provide a YUI Node instance wrapping a &lt;select&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
        element, and the options in the list will be used as results. You
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
        will also need to specify a `resultTextLocator` of 'text'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
        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
  1345
        result.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
        Each result will be an object with the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
        <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
          <dt>html (String)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
            <p>HTML content of the &lt;option&gt; element.</p>
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
          <dt>index (Number)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
            <p>Index of the &lt;option&gt; element in the list.</p>
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
          <dt>node (Y.Node)</dt>
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
            <p>Node instance referring to the original &lt;option&gt; element.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
          <dt>selected (Boolean)</dt>
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
            <p>Whether or not this item is currently selected in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
            &lt;select&gt; list.</p>
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
          <dt>text (String)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
            <p>Text content of the &lt;option&gt; element.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
          <dt>value (String)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
          <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
            <p>Value of the &lt;option&gt; element.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
          </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
        </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
      <dt>String (JSONP URL)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
        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
  1387
        make a JSONP request. The `{query}` placeholder will be replaced with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
        the current query, and the `{callback}` placeholder will be replaced
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
        with an internally-generated JSONP callback name. Both placeholders must
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
        appear in the URL, or the request will fail. An optional `{maxResults}`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
        placeholder may also be provided, and will be replaced with the value of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
        the maxResults attribute (or 1000 if the maxResults attribute is 0 or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
        less).
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
        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
  1398
        response is not an array, provide a `resultListLocator` to process the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
        response and return an array.
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
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
        <strong>The `jsonp` module must be loaded in order for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
        JSONP URL sources to work.</strong> If the `jsonp` module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
        is not already loaded, it will be loaded on demand if possible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
        Example: `'http://example.com/search?q={query}&callback={callback}'`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
      <dt>String (XHR URL)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
      <dd>
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
        If a URL without a `{callback}` placeholder is provided, it will be used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
        to make a same-origin XHR request. The `{query}` placeholder will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
        replaced with the current query. An optional `{maxResults}` placeholder
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
        may also be provided, and will be replaced with the value of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
        maxResults attribute (or 1000 if the maxResults attribute is 0 or less).
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
        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
  1425
        response is a JSON object and not an array, provide a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
        `resultListLocator` to process the response and return an array. If the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
        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
  1428
        DataSource instance as the source.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
        <strong>The `io-base` and `json-parse` modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
        must be loaded in order for XHR URL sources to work.</strong> If
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
        these modules are not already loaded, they will be loaded on demand
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
        if possible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
        Example: `'http://example.com/search?q={query}'`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
      <dt>String (YQL query)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
      <dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
        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
  1447
        `{query}` placeholder will be replaced with the current autocomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
        query. This placeholder must appear in the YQL query, or the request
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
        will fail. An optional `{maxResults}` placeholder may also be provided,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
        and will be replaced with the value of the maxResults attribute (or 1000
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
        if the maxResults attribute is 0 or less).
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
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
        <strong>The `yql` module must be loaded in order for YQL
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
        sources to work.</strong> If the `yql` module is not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
        already loaded, it will be loaded on demand if possible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
        <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
        Example: `'select * from search.suggest where query="{query}"'`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
        </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
    </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
    As an alternative to providing a source, you could simply listen for `query`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
    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
  1468
    but will usually be simpler.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
    @attribute source
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
    @type Array|DataSource|Function|Node|Object|String|null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
    source: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
        setter: '_setSource',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
    May be used to force a specific source type, overriding the automatic source
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
    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
  1481
    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
  1482
    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
  1483
    it's your own fault.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
    Supported `sourceType` values are: 'array', 'datasource', 'function', and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
    'object'.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
    If the `autocomplete-sources` module is loaded, the following additional
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
    source types are supported: 'io', 'jsonp', 'select', 'string', 'yql'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
    @attribute sourceType
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
    @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
    sourceType: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1498
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1499
    If the `inputNode` specified at instantiation time has a `node-tokeninput`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1500
    plugin attached to it, this attribute will be a reference to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1501
    `Y.Plugin.TokenInput` instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1502
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1503
    @attribute tokenInput
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1504
    @type Plugin.TokenInput
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
    @readonly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
    tokenInput: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
        readOnly: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
    Current value of the input node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1514
    @attribute value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1515
    @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1516
    @default ''
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1517
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1518
    value: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
        // Why duplicate this._inputNode.get('value')? Because we need a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
        // reliable way to track the source of value changes. We want to perform
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
        // completion when the user changes the value, but not when we change
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
        // the value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
        value: ''
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
// This tells Y.Base.create() to copy these static properties to any class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
// AutoCompleteBase is mixed into.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
AutoCompleteBase._buildCfg = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
    aggregates: ['SOURCE_TYPES'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
    statics   : ['UI_SRC']
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
Mapping of built-in source types to their setter functions. DataSource instances
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
and DataSource-like objects are handled natively, so are not mapped here.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
@property SOURCE_TYPES
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
@type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
AutoCompleteBase.SOURCE_TYPES = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
    array     : '_createArraySource',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
    'function': '_createFunctionSource',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
    object    : '_createObjectSource'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
AutoCompleteBase.UI_SRC = (Y.Widget && Y.Widget.UI_SRC) || 'ui';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
Y.AutoCompleteBase = AutoCompleteBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
}, '3.10.3', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
    "optional": [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
        "autocomplete-sources"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
    ],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1557
    "requires": [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1558
        "array-extras",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1559
        "base-build",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1560
        "escape",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1561
        "event-valuechange",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1562
        "node-base"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1563
    ]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1564
});