h2ocube_rails_assets 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +1 -0
  4. data/Vendorfile +196 -0
  5. data/h2ocube_rails_assets.gemspec +3 -4
  6. data/lib/h2ocube_rails_assets.rb +8 -6
  7. data/test/jquery_test.rb +1 -1
  8. data/test/turbolinks_test.rb +1 -3
  9. data/vendor/assets/images/jquery.fancybox/fancybox_loading.gif +0 -0
  10. data/vendor/assets/images/jquery.fancybox/fancybox_loading@2x.gif +0 -0
  11. data/vendor/assets/images/jquery.fancybox/fancybox_sprite@2x.png +0 -0
  12. data/vendor/assets/javascripts/backbone.js +4 -1571
  13. data/vendor/assets/javascripts/bootstrap.js +6 -2276
  14. data/vendor/assets/javascripts/highcharts.js +272 -15281
  15. data/vendor/assets/javascripts/jasny-bootstrap.js +7 -3060
  16. data/vendor/assets/javascripts/jquery/1.10.js +6 -9807
  17. data/vendor/assets/javascripts/jquery/1.8.js +2 -9472
  18. data/vendor/assets/javascripts/jquery/1.9.js +5 -9597
  19. data/vendor/assets/javascripts/jquery/2.0.js +5 -8841
  20. data/vendor/assets/javascripts/jquery.cookie.js +26 -23
  21. data/vendor/assets/javascripts/jquery.fancybox.js +46 -1983
  22. data/vendor/assets/javascripts/jquery.fileupload.js +1329 -4
  23. data/vendor/assets/javascripts/jquery.iframe-transport.js +24 -4
  24. data/vendor/assets/javascripts/jquery.js +1 -1
  25. data/vendor/assets/javascripts/jquery.lazyload.js +3 -216
  26. data/vendor/assets/javascripts/jquery.mobile.js +7 -11092
  27. data/vendor/assets/javascripts/jquery.pnotify.js +29 -903
  28. data/vendor/assets/javascripts/jquery.timeago.coffee +2 -4
  29. data/vendor/assets/javascripts/jquery.turbolinks.coffee +40 -51
  30. data/vendor/assets/javascripts/jquery.ui/jquery.ui.accordion.js +4 -572
  31. data/vendor/assets/javascripts/jquery.ui/jquery.ui.autocomplete.js +4 -610
  32. data/vendor/assets/javascripts/jquery.ui/jquery.ui.button.js +4 -419
  33. data/vendor/assets/javascripts/jquery.ui/jquery.ui.core.js +4 -320
  34. data/vendor/assets/javascripts/jquery.ui/jquery.ui.datepicker.js +5 -2050
  35. data/vendor/assets/javascripts/jquery.ui/jquery.ui.dialog.js +4 -808
  36. data/vendor/assets/javascripts/jquery.ui/jquery.ui.draggable.js +4 -933
  37. data/vendor/assets/javascripts/jquery.ui/jquery.ui.droppable.js +4 -372
  38. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-blind.js +4 -82
  39. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-bounce.js +4 -113
  40. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-clip.js +4 -67
  41. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-drop.js +4 -65
  42. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-explode.js +4 -97
  43. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-fade.js +4 -30
  44. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-fold.js +4 -76
  45. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-highlight.js +4 -50
  46. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-pulsate.js +4 -63
  47. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-scale.js +4 -318
  48. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-shake.js +4 -74
  49. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-slide.js +4 -64
  50. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect-transfer.js +4 -47
  51. data/vendor/assets/javascripts/jquery.ui/jquery.ui.effect.js +4 -1289
  52. data/vendor/assets/javascripts/jquery.ui/jquery.ui.menu.js +4 -621
  53. data/vendor/assets/javascripts/jquery.ui/jquery.ui.mouse.js +4 -169
  54. data/vendor/assets/javascripts/jquery.ui/jquery.ui.position.js +4 -497
  55. data/vendor/assets/javascripts/jquery.ui/jquery.ui.progressbar.js +4 -145
  56. data/vendor/assets/javascripts/jquery.ui/jquery.ui.resizable.js +4 -968
  57. data/vendor/assets/javascripts/jquery.ui/jquery.ui.selectable.js +4 -277
  58. data/vendor/assets/javascripts/jquery.ui/jquery.ui.slider.js +4 -672
  59. data/vendor/assets/javascripts/jquery.ui/jquery.ui.sortable.js +4 -1282
  60. data/vendor/assets/javascripts/jquery.ui/jquery.ui.spinner.js +4 -493
  61. data/vendor/assets/javascripts/jquery.ui/jquery.ui.tabs.js +4 -846
  62. data/vendor/assets/javascripts/jquery.ui/jquery.ui.tooltip.js +4 -402
  63. data/vendor/assets/javascripts/jquery.ui/jquery.ui.widget.js +4 -521
  64. data/vendor/assets/javascripts/jquery.validate.js +2 -1207
  65. data/vendor/assets/javascripts/lazyload.js +4 -391
  66. data/vendor/assets/javascripts/sammy.js +5 -2117
  67. data/vendor/assets/javascripts/underscore.js +4 -1224
  68. data/vendor/assets/javascripts/zepto.js +1 -1564
  69. data/vendor/assets/stylesheets/bootstrap.responsive.css +2 -1102
  70. data/vendor/assets/stylesheets/bootstrap.scss +2 -6151
  71. data/vendor/assets/stylesheets/jasny-bootstrap.responsive.css +2 -1263
  72. data/vendor/assets/stylesheets/jasny-bootstrap.scss +2 -7591
  73. data/vendor/assets/stylesheets/jquery.fancybox.scss +27 -2
  74. data/vendor/assets/stylesheets/jquery.mobile.scss +2 -3356
  75. data/vendor/assets/stylesheets/jquery.ui.scss +2 -1184
  76. metadata +43 -19
  77. data/vendor/assets/images/jquery.mobile/ajax-loader.gif +0 -0
  78. data/vendor/assets/images/jquery.mobile/icons-18-black.png +0 -0
  79. data/vendor/assets/images/jquery.mobile/icons-18-white.png +0 -0
  80. data/vendor/assets/images/jquery.mobile/icons-36-black.png +0 -0
  81. data/vendor/assets/images/jquery.mobile/icons-36-white.png +0 -0
  82. data/vendor/assets/javascripts/_jquery.fileupload.js +0 -1164
  83. data/vendor/assets/javascripts/zepto/fx_methods.js +0 -71
@@ -1,610 +1,4 @@
1
- /*!
2
- * jQuery UI Autocomplete 1.10.2
3
- * http://jqueryui.com
4
- *
5
- * Copyright 2013 jQuery Foundation and other contributors
6
- * Released under the MIT license.
7
- * http://jquery.org/license
8
- *
9
- * http://api.jqueryui.com/autocomplete/
10
- *
11
- * Depends:
12
- * jquery.ui.core.js
13
- * jquery.ui.widget.js
14
- * jquery.ui.position.js
15
- * jquery.ui.menu.js
16
- */
17
- (function( $, undefined ) {
18
-
19
- // used to prevent race conditions with remote data sources
20
- var requestIndex = 0;
21
-
22
- $.widget( "ui.autocomplete", {
23
- version: "1.10.2",
24
- defaultElement: "<input>",
25
- options: {
26
- appendTo: null,
27
- autoFocus: false,
28
- delay: 300,
29
- minLength: 1,
30
- position: {
31
- my: "left top",
32
- at: "left bottom",
33
- collision: "none"
34
- },
35
- source: null,
36
-
37
- // callbacks
38
- change: null,
39
- close: null,
40
- focus: null,
41
- open: null,
42
- response: null,
43
- search: null,
44
- select: null
45
- },
46
-
47
- pending: 0,
48
-
49
- _create: function() {
50
- // Some browsers only repeat keydown events, not keypress events,
51
- // so we use the suppressKeyPress flag to determine if we've already
52
- // handled the keydown event. #7269
53
- // Unfortunately the code for & in keypress is the same as the up arrow,
54
- // so we use the suppressKeyPressRepeat flag to avoid handling keypress
55
- // events when we know the keydown event was used to modify the
56
- // search term. #7799
57
- var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
58
- nodeName = this.element[0].nodeName.toLowerCase(),
59
- isTextarea = nodeName === "textarea",
60
- isInput = nodeName === "input";
61
-
62
- this.isMultiLine =
63
- // Textareas are always multi-line
64
- isTextarea ? true :
65
- // Inputs are always single-line, even if inside a contentEditable element
66
- // IE also treats inputs as contentEditable
67
- isInput ? false :
68
- // All other element types are determined by whether or not they're contentEditable
69
- this.element.prop( "isContentEditable" );
70
-
71
- this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
72
- this.isNewMenu = true;
73
-
74
- this.element
75
- .addClass( "ui-autocomplete-input" )
76
- .attr( "autocomplete", "off" );
77
-
78
- this._on( this.element, {
79
- keydown: function( event ) {
80
- /*jshint maxcomplexity:15*/
81
- if ( this.element.prop( "readOnly" ) ) {
82
- suppressKeyPress = true;
83
- suppressInput = true;
84
- suppressKeyPressRepeat = true;
85
- return;
86
- }
87
-
88
- suppressKeyPress = false;
89
- suppressInput = false;
90
- suppressKeyPressRepeat = false;
91
- var keyCode = $.ui.keyCode;
92
- switch( event.keyCode ) {
93
- case keyCode.PAGE_UP:
94
- suppressKeyPress = true;
95
- this._move( "previousPage", event );
96
- break;
97
- case keyCode.PAGE_DOWN:
98
- suppressKeyPress = true;
99
- this._move( "nextPage", event );
100
- break;
101
- case keyCode.UP:
102
- suppressKeyPress = true;
103
- this._keyEvent( "previous", event );
104
- break;
105
- case keyCode.DOWN:
106
- suppressKeyPress = true;
107
- this._keyEvent( "next", event );
108
- break;
109
- case keyCode.ENTER:
110
- case keyCode.NUMPAD_ENTER:
111
- // when menu is open and has focus
112
- if ( this.menu.active ) {
113
- // #6055 - Opera still allows the keypress to occur
114
- // which causes forms to submit
115
- suppressKeyPress = true;
116
- event.preventDefault();
117
- this.menu.select( event );
118
- }
119
- break;
120
- case keyCode.TAB:
121
- if ( this.menu.active ) {
122
- this.menu.select( event );
123
- }
124
- break;
125
- case keyCode.ESCAPE:
126
- if ( this.menu.element.is( ":visible" ) ) {
127
- this._value( this.term );
128
- this.close( event );
129
- // Different browsers have different default behavior for escape
130
- // Single press can mean undo or clear
131
- // Double press in IE means clear the whole form
132
- event.preventDefault();
133
- }
134
- break;
135
- default:
136
- suppressKeyPressRepeat = true;
137
- // search timeout should be triggered before the input value is changed
138
- this._searchTimeout( event );
139
- break;
140
- }
141
- },
142
- keypress: function( event ) {
143
- if ( suppressKeyPress ) {
144
- suppressKeyPress = false;
145
- event.preventDefault();
146
- return;
147
- }
148
- if ( suppressKeyPressRepeat ) {
149
- return;
150
- }
151
-
152
- // replicate some key handlers to allow them to repeat in Firefox and Opera
153
- var keyCode = $.ui.keyCode;
154
- switch( event.keyCode ) {
155
- case keyCode.PAGE_UP:
156
- this._move( "previousPage", event );
157
- break;
158
- case keyCode.PAGE_DOWN:
159
- this._move( "nextPage", event );
160
- break;
161
- case keyCode.UP:
162
- this._keyEvent( "previous", event );
163
- break;
164
- case keyCode.DOWN:
165
- this._keyEvent( "next", event );
166
- break;
167
- }
168
- },
169
- input: function( event ) {
170
- if ( suppressInput ) {
171
- suppressInput = false;
172
- event.preventDefault();
173
- return;
174
- }
175
- this._searchTimeout( event );
176
- },
177
- focus: function() {
178
- this.selectedItem = null;
179
- this.previous = this._value();
180
- },
181
- blur: function( event ) {
182
- if ( this.cancelBlur ) {
183
- delete this.cancelBlur;
184
- return;
185
- }
186
-
187
- clearTimeout( this.searching );
188
- this.close( event );
189
- this._change( event );
190
- }
191
- });
192
-
193
- this._initSource();
194
- this.menu = $( "<ul>" )
195
- .addClass( "ui-autocomplete ui-front" )
196
- .appendTo( this._appendTo() )
197
- .menu({
198
- // custom key handling for now
199
- input: $(),
200
- // disable ARIA support, the live region takes care of that
201
- role: null
202
- })
203
- .hide()
204
- .data( "ui-menu" );
205
-
206
- this._on( this.menu.element, {
207
- mousedown: function( event ) {
208
- // prevent moving focus out of the text field
209
- event.preventDefault();
210
-
211
- // IE doesn't prevent moving focus even with event.preventDefault()
212
- // so we set a flag to know when we should ignore the blur event
213
- this.cancelBlur = true;
214
- this._delay(function() {
215
- delete this.cancelBlur;
216
- });
217
-
218
- // clicking on the scrollbar causes focus to shift to the body
219
- // but we can't detect a mouseup or a click immediately afterward
220
- // so we have to track the next mousedown and close the menu if
221
- // the user clicks somewhere outside of the autocomplete
222
- var menuElement = this.menu.element[ 0 ];
223
- if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
224
- this._delay(function() {
225
- var that = this;
226
- this.document.one( "mousedown", function( event ) {
227
- if ( event.target !== that.element[ 0 ] &&
228
- event.target !== menuElement &&
229
- !$.contains( menuElement, event.target ) ) {
230
- that.close();
231
- }
232
- });
233
- });
234
- }
235
- },
236
- menufocus: function( event, ui ) {
237
- // support: Firefox
238
- // Prevent accidental activation of menu items in Firefox (#7024 #9118)
239
- if ( this.isNewMenu ) {
240
- this.isNewMenu = false;
241
- if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
242
- this.menu.blur();
243
-
244
- this.document.one( "mousemove", function() {
245
- $( event.target ).trigger( event.originalEvent );
246
- });
247
-
248
- return;
249
- }
250
- }
251
-
252
- var item = ui.item.data( "ui-autocomplete-item" );
253
- if ( false !== this._trigger( "focus", event, { item: item } ) ) {
254
- // use value to match what will end up in the input, if it was a key event
255
- if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
256
- this._value( item.value );
257
- }
258
- } else {
259
- // Normally the input is populated with the item's value as the
260
- // menu is navigated, causing screen readers to notice a change and
261
- // announce the item. Since the focus event was canceled, this doesn't
262
- // happen, so we update the live region so that screen readers can
263
- // still notice the change and announce it.
264
- this.liveRegion.text( item.value );
265
- }
266
- },
267
- menuselect: function( event, ui ) {
268
- var item = ui.item.data( "ui-autocomplete-item" ),
269
- previous = this.previous;
270
-
271
- // only trigger when focus was lost (click on menu)
272
- if ( this.element[0] !== this.document[0].activeElement ) {
273
- this.element.focus();
274
- this.previous = previous;
275
- // #6109 - IE triggers two focus events and the second
276
- // is asynchronous, so we need to reset the previous
277
- // term synchronously and asynchronously :-(
278
- this._delay(function() {
279
- this.previous = previous;
280
- this.selectedItem = item;
281
- });
282
- }
283
-
284
- if ( false !== this._trigger( "select", event, { item: item } ) ) {
285
- this._value( item.value );
286
- }
287
- // reset the term after the select event
288
- // this allows custom select handling to work properly
289
- this.term = this._value();
290
-
291
- this.close( event );
292
- this.selectedItem = item;
293
- }
294
- });
295
-
296
- this.liveRegion = $( "<span>", {
297
- role: "status",
298
- "aria-live": "polite"
299
- })
300
- .addClass( "ui-helper-hidden-accessible" )
301
- .insertAfter( this.element );
302
-
303
- // turning off autocomplete prevents the browser from remembering the
304
- // value when navigating through history, so we re-enable autocomplete
305
- // if the page is unloaded before the widget is destroyed. #7790
306
- this._on( this.window, {
307
- beforeunload: function() {
308
- this.element.removeAttr( "autocomplete" );
309
- }
310
- });
311
- },
312
-
313
- _destroy: function() {
314
- clearTimeout( this.searching );
315
- this.element
316
- .removeClass( "ui-autocomplete-input" )
317
- .removeAttr( "autocomplete" );
318
- this.menu.element.remove();
319
- this.liveRegion.remove();
320
- },
321
-
322
- _setOption: function( key, value ) {
323
- this._super( key, value );
324
- if ( key === "source" ) {
325
- this._initSource();
326
- }
327
- if ( key === "appendTo" ) {
328
- this.menu.element.appendTo( this._appendTo() );
329
- }
330
- if ( key === "disabled" && value && this.xhr ) {
331
- this.xhr.abort();
332
- }
333
- },
334
-
335
- _appendTo: function() {
336
- var element = this.options.appendTo;
337
-
338
- if ( element ) {
339
- element = element.jquery || element.nodeType ?
340
- $( element ) :
341
- this.document.find( element ).eq( 0 );
342
- }
343
-
344
- if ( !element ) {
345
- element = this.element.closest( ".ui-front" );
346
- }
347
-
348
- if ( !element.length ) {
349
- element = this.document[0].body;
350
- }
351
-
352
- return element;
353
- },
354
-
355
- _initSource: function() {
356
- var array, url,
357
- that = this;
358
- if ( $.isArray(this.options.source) ) {
359
- array = this.options.source;
360
- this.source = function( request, response ) {
361
- response( $.ui.autocomplete.filter( array, request.term ) );
362
- };
363
- } else if ( typeof this.options.source === "string" ) {
364
- url = this.options.source;
365
- this.source = function( request, response ) {
366
- if ( that.xhr ) {
367
- that.xhr.abort();
368
- }
369
- that.xhr = $.ajax({
370
- url: url,
371
- data: request,
372
- dataType: "json",
373
- success: function( data ) {
374
- response( data );
375
- },
376
- error: function() {
377
- response( [] );
378
- }
379
- });
380
- };
381
- } else {
382
- this.source = this.options.source;
383
- }
384
- },
385
-
386
- _searchTimeout: function( event ) {
387
- clearTimeout( this.searching );
388
- this.searching = this._delay(function() {
389
- // only search if the value has changed
390
- if ( this.term !== this._value() ) {
391
- this.selectedItem = null;
392
- this.search( null, event );
393
- }
394
- }, this.options.delay );
395
- },
396
-
397
- search: function( value, event ) {
398
- value = value != null ? value : this._value();
399
-
400
- // always save the actual value, not the one passed as an argument
401
- this.term = this._value();
402
-
403
- if ( value.length < this.options.minLength ) {
404
- return this.close( event );
405
- }
406
-
407
- if ( this._trigger( "search", event ) === false ) {
408
- return;
409
- }
410
-
411
- return this._search( value );
412
- },
413
-
414
- _search: function( value ) {
415
- this.pending++;
416
- this.element.addClass( "ui-autocomplete-loading" );
417
- this.cancelSearch = false;
418
-
419
- this.source( { term: value }, this._response() );
420
- },
421
-
422
- _response: function() {
423
- var that = this,
424
- index = ++requestIndex;
425
-
426
- return function( content ) {
427
- if ( index === requestIndex ) {
428
- that.__response( content );
429
- }
430
-
431
- that.pending--;
432
- if ( !that.pending ) {
433
- that.element.removeClass( "ui-autocomplete-loading" );
434
- }
435
- };
436
- },
437
-
438
- __response: function( content ) {
439
- if ( content ) {
440
- content = this._normalize( content );
441
- }
442
- this._trigger( "response", null, { content: content } );
443
- if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
444
- this._suggest( content );
445
- this._trigger( "open" );
446
- } else {
447
- // use ._close() instead of .close() so we don't cancel future searches
448
- this._close();
449
- }
450
- },
451
-
452
- close: function( event ) {
453
- this.cancelSearch = true;
454
- this._close( event );
455
- },
456
-
457
- _close: function( event ) {
458
- if ( this.menu.element.is( ":visible" ) ) {
459
- this.menu.element.hide();
460
- this.menu.blur();
461
- this.isNewMenu = true;
462
- this._trigger( "close", event );
463
- }
464
- },
465
-
466
- _change: function( event ) {
467
- if ( this.previous !== this._value() ) {
468
- this._trigger( "change", event, { item: this.selectedItem } );
469
- }
470
- },
471
-
472
- _normalize: function( items ) {
473
- // assume all items have the right format when the first item is complete
474
- if ( items.length && items[0].label && items[0].value ) {
475
- return items;
476
- }
477
- return $.map( items, function( item ) {
478
- if ( typeof item === "string" ) {
479
- return {
480
- label: item,
481
- value: item
482
- };
483
- }
484
- return $.extend({
485
- label: item.label || item.value,
486
- value: item.value || item.label
487
- }, item );
488
- });
489
- },
490
-
491
- _suggest: function( items ) {
492
- var ul = this.menu.element.empty();
493
- this._renderMenu( ul, items );
494
- this.isNewMenu = true;
495
- this.menu.refresh();
496
-
497
- // size and position menu
498
- ul.show();
499
- this._resizeMenu();
500
- ul.position( $.extend({
501
- of: this.element
502
- }, this.options.position ));
503
-
504
- if ( this.options.autoFocus ) {
505
- this.menu.next();
506
- }
507
- },
508
-
509
- _resizeMenu: function() {
510
- var ul = this.menu.element;
511
- ul.outerWidth( Math.max(
512
- // Firefox wraps long text (possibly a rounding bug)
513
- // so we add 1px to avoid the wrapping (#7513)
514
- ul.width( "" ).outerWidth() + 1,
515
- this.element.outerWidth()
516
- ) );
517
- },
518
-
519
- _renderMenu: function( ul, items ) {
520
- var that = this;
521
- $.each( items, function( index, item ) {
522
- that._renderItemData( ul, item );
523
- });
524
- },
525
-
526
- _renderItemData: function( ul, item ) {
527
- return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
528
- },
529
-
530
- _renderItem: function( ul, item ) {
531
- return $( "<li>" )
532
- .append( $( "<a>" ).text( item.label ) )
533
- .appendTo( ul );
534
- },
535
-
536
- _move: function( direction, event ) {
537
- if ( !this.menu.element.is( ":visible" ) ) {
538
- this.search( null, event );
539
- return;
540
- }
541
- if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
542
- this.menu.isLastItem() && /^next/.test( direction ) ) {
543
- this._value( this.term );
544
- this.menu.blur();
545
- return;
546
- }
547
- this.menu[ direction ]( event );
548
- },
549
-
550
- widget: function() {
551
- return this.menu.element;
552
- },
553
-
554
- _value: function() {
555
- return this.valueMethod.apply( this.element, arguments );
556
- },
557
-
558
- _keyEvent: function( keyEvent, event ) {
559
- if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
560
- this._move( keyEvent, event );
561
-
562
- // prevents moving cursor to beginning/end of the text field in some browsers
563
- event.preventDefault();
564
- }
565
- }
566
- });
567
-
568
- $.extend( $.ui.autocomplete, {
569
- escapeRegex: function( value ) {
570
- return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
571
- },
572
- filter: function(array, term) {
573
- var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
574
- return $.grep( array, function(value) {
575
- return matcher.test( value.label || value.value || value );
576
- });
577
- }
578
- });
579
-
580
-
581
- // live region extension, adding a `messages` option
582
- // NOTE: This is an experimental API. We are still investigating
583
- // a full solution for string manipulation and internationalization.
584
- $.widget( "ui.autocomplete", $.ui.autocomplete, {
585
- options: {
586
- messages: {
587
- noResults: "No search results.",
588
- results: function( amount ) {
589
- return amount + ( amount > 1 ? " results are" : " result is" ) +
590
- " available, use up and down arrow keys to navigate.";
591
- }
592
- }
593
- },
594
-
595
- __response: function( content ) {
596
- var message;
597
- this._superApply( arguments );
598
- if ( this.options.disabled || this.cancelSearch ) {
599
- return;
600
- }
601
- if ( content && content.length ) {
602
- message = this.options.messages.results( content.length );
603
- } else {
604
- message = this.options.messages.noResults;
605
- }
606
- this.liveRegion.text( message );
607
- }
608
- });
609
-
610
- }( jQuery ));
1
+ /*! jQuery UI - v1.10.3 - 2013-05-03
2
+ * http://jqueryui.com
3
+ * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
4
+ (function(t){var e=0;t.widget("ui.autocomplete",{version:"1.10.3",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,undefined;e=!1,s=!1,i=!1;var a=t.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:e=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case a.UP:e=!0,this._keyEvent("previous",n);break;case a.DOWN:e=!0,this._keyEvent("next",n);break;case a.ENTER:case a.NUMPAD_ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),undefined):(this._searchTimeout(t),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(t),this._change(t),undefined)}}),this._initSource(),this.menu=t("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];t(e.target).closest(".ui-menu-item").length||this._delay(function(){var e=this;this.document.one("mousedown",function(s){s.target===e.element[0]||s.target===i||t.contains(i,s.target)||e.close()})})},menufocus:function(e,i){if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",e,{item:s})?e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=t("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e||(e=this.element.closest(".ui-front")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):undefined},_search:function(t){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var t=this,i=++e;return function(s){i===e&&t.__response(s),t.pending--,t.pending||t.element.removeClass("ui-autocomplete-loading")}},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({label:e.label||e.value,value:e.value||e.label},e)})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<a>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[t](e),undefined):(this.search(null,e),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.text(e))}})})(jQuery);