j1-template 2022.1.2 → 2022.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,27 +1,30 @@
1
- /*! jQuery UI - v1.12.1 - 2016-09-14
1
+ /*! jQuery UI - v1.13.1 - 2022-01-20
2
2
  * http://jqueryui.com
3
- * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
3
+ * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
4
4
  * Copyright jQuery Foundation and other contributors; Licensed MIT */
5
5
 
6
- (function( factory ) {
6
+ ( function( factory ) {
7
+ "use strict";
8
+
7
9
  if ( typeof define === "function" && define.amd ) {
8
10
 
9
11
  // AMD. Register as an anonymous module.
10
- define([ "jquery" ], factory );
12
+ define( [ "jquery" ], factory );
11
13
  } else {
12
14
 
13
15
  // Browser globals
14
16
  factory( jQuery );
15
17
  }
16
- }(function( $ ) {
18
+ } )( function( $ ) {
19
+ "use strict";
17
20
 
18
21
  $.ui = $.ui || {};
19
22
 
20
- var version = $.ui.version = "1.12.1";
23
+ var version = $.ui.version = "1.13.1";
21
24
 
22
25
 
23
26
  /*!
24
- * jQuery UI Widget 1.12.1
27
+ * jQuery UI Widget 1.13.1
25
28
  * http://jqueryui.com
26
29
  *
27
30
  * Copyright jQuery Foundation and other contributors
@@ -35,23 +38,21 @@ var version = $.ui.version = "1.12.1";
35
38
  //>>docs: http://api.jqueryui.com/jQuery.widget/
36
39
  //>>demos: http://jqueryui.com/widget/
37
40
 
41
+
38
42
  var widgetUuid = 0;
43
+ var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
39
44
  var widgetSlice = Array.prototype.slice;
40
45
 
41
46
  $.cleanData = ( function( orig ) {
42
47
  return function( elems ) {
43
48
  var events, elem, i;
44
49
  for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
45
- try {
46
-
47
- // Only trigger remove when necessary to save time
48
- events = $._data( elem, "events" );
49
- if ( events && events.remove ) {
50
- $( elem ).triggerHandler( "remove" );
51
- }
52
50
 
53
- // Http://bugs.jquery.com/ticket/8235
54
- } catch ( e ) {}
51
+ // Only trigger remove when necessary to save time
52
+ events = $._data( elem, "events" );
53
+ if ( events && events.remove ) {
54
+ $( elem ).triggerHandler( "remove" );
55
+ }
55
56
  }
56
57
  orig( elems );
57
58
  };
@@ -73,12 +74,12 @@ $.widget = function( name, base, prototype ) {
73
74
  base = $.Widget;
74
75
  }
75
76
 
76
- if ( $.isArray( prototype ) ) {
77
+ if ( Array.isArray( prototype ) ) {
77
78
  prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
78
79
  }
79
80
 
80
81
  // Create selector for plugin
81
- $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
82
+ $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
82
83
  return !!$.data( elem, fullName );
83
84
  };
84
85
 
@@ -87,7 +88,7 @@ $.widget = function( name, base, prototype ) {
87
88
  constructor = $[ namespace ][ name ] = function( options, element ) {
88
89
 
89
90
  // Allow instantiation without "new" keyword
90
- if ( !this._createWidget ) {
91
+ if ( !this || !this._createWidget ) {
91
92
  return new constructor( options, element );
92
93
  }
93
94
 
@@ -118,7 +119,7 @@ $.widget = function( name, base, prototype ) {
118
119
  // inheriting from
119
120
  basePrototype.options = $.widget.extend( {}, basePrototype.options );
120
121
  $.each( prototype, function( prop, value ) {
121
- if ( !$.isFunction( value ) ) {
122
+ if ( typeof value !== "function" ) {
122
123
  proxiedPrototype[ prop ] = value;
123
124
  return;
124
125
  }
@@ -197,7 +198,7 @@ $.widget.extend = function( target ) {
197
198
  for ( ; inputIndex < inputLength; inputIndex++ ) {
198
199
  for ( key in input[ inputIndex ] ) {
199
200
  value = input[ inputIndex ][ key ];
200
- if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
201
+ if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {
201
202
 
202
203
  // Clone objects
203
204
  if ( $.isPlainObject( value ) ) {
@@ -246,7 +247,8 @@ $.widget.bridge = function( name, object ) {
246
247
  "attempted to call method '" + options + "'" );
247
248
  }
248
249
 
249
- if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
250
+ if ( typeof instance[ options ] !== "function" ||
251
+ options.charAt( 0 ) === "_" ) {
250
252
  return $.error( "no such method '" + options + "' for " + name +
251
253
  " widget instance" );
252
254
  }
@@ -507,12 +509,34 @@ $.Widget.prototype = {
507
509
  classes: this.options.classes || {}
508
510
  }, options );
509
511
 
512
+ function bindRemoveEvent() {
513
+ var nodesToBind = [];
514
+
515
+ options.element.each( function( _, element ) {
516
+ var isTracked = $.map( that.classesElementLookup, function( elements ) {
517
+ return elements;
518
+ } )
519
+ .some( function( elements ) {
520
+ return elements.is( element );
521
+ } );
522
+
523
+ if ( !isTracked ) {
524
+ nodesToBind.push( element );
525
+ }
526
+ } );
527
+
528
+ that._on( $( nodesToBind ), {
529
+ remove: "_untrackClassesElement"
530
+ } );
531
+ }
532
+
510
533
  function processClassString( classes, checkOption ) {
511
534
  var current, i;
512
535
  for ( i = 0; i < classes.length; i++ ) {
513
536
  current = that.classesElementLookup[ classes[ i ] ] || $();
514
537
  if ( options.add ) {
515
- current = $( $.unique( current.get().concat( options.element.get() ) ) );
538
+ bindRemoveEvent();
539
+ current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );
516
540
  } else {
517
541
  current = $( current.not( options.element ).get() );
518
542
  }
@@ -524,10 +548,6 @@ $.Widget.prototype = {
524
548
  }
525
549
  }
526
550
 
527
- this._on( options.element, {
528
- "remove": "_untrackClassesElement"
529
- } );
530
-
531
551
  if ( options.keys ) {
532
552
  processClassString( options.keys.match( /\S+/g ) || [], true );
533
553
  }
@@ -545,6 +565,8 @@ $.Widget.prototype = {
545
565
  that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
546
566
  }
547
567
  } );
568
+
569
+ this._off( $( event.target ) );
548
570
  },
549
571
 
550
572
  _removeClass: function( element, keys, extra ) {
@@ -625,7 +647,7 @@ $.Widget.prototype = {
625
647
  _off: function( element, eventName ) {
626
648
  eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
627
649
  this.eventNamespace;
628
- element.off( eventName ).off( eventName );
650
+ element.off( eventName );
629
651
 
630
652
  // Clear the stack to avoid memory leaks (#10056)
631
653
  this.bindings = $( this.bindings.not( element ).get() );
@@ -691,7 +713,7 @@ $.Widget.prototype = {
691
713
  }
692
714
 
693
715
  this.element.trigger( event, data );
694
- return !( $.isFunction( callback ) &&
716
+ return !( typeof callback === "function" &&
695
717
  callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
696
718
  event.isDefaultPrevented() );
697
719
  }
@@ -713,6 +735,8 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
713
735
  options = options || {};
714
736
  if ( typeof options === "number" ) {
715
737
  options = { duration: options };
738
+ } else if ( options === true ) {
739
+ options = {};
716
740
  }
717
741
 
718
742
  hasOptions = !$.isEmptyObject( options );
@@ -742,7 +766,7 @@ var widget = $.widget;
742
766
 
743
767
 
744
768
  /*!
745
- * jQuery UI Position 1.12.1
769
+ * jQuery UI Position 1.13.1
746
770
  * http://jqueryui.com
747
771
  *
748
772
  * Copyright jQuery Foundation and other contributors
@@ -781,6 +805,10 @@ function parseCss( element, property ) {
781
805
  return parseInt( $.css( element, property ), 10 ) || 0;
782
806
  }
783
807
 
808
+ function isWindow( obj ) {
809
+ return obj != null && obj === obj.window;
810
+ }
811
+
784
812
  function getDimensions( elem ) {
785
813
  var raw = elem[ 0 ];
786
814
  if ( raw.nodeType === 9 ) {
@@ -790,7 +818,7 @@ function getDimensions( elem ) {
790
818
  offset: { top: 0, left: 0 }
791
819
  };
792
820
  }
793
- if ( $.isWindow( raw ) ) {
821
+ if ( isWindow( raw ) ) {
794
822
  return {
795
823
  width: elem.width(),
796
824
  height: elem.height(),
@@ -817,9 +845,9 @@ $.position = {
817
845
  return cachedScrollbarWidth;
818
846
  }
819
847
  var w1, w2,
820
- div = $( "<div " +
821
- "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
822
- "<div style='height:100px;width:auto;'></div></div>" ),
848
+ div = $( "<div style=" +
849
+ "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
850
+ "<div style='height:300px;width:auto;'></div></div>" ),
823
851
  innerDiv = div.children()[ 0 ];
824
852
 
825
853
  $( "body" ).append( div );
@@ -852,12 +880,12 @@ $.position = {
852
880
  },
853
881
  getWithinInfo: function( element ) {
854
882
  var withinElement = $( element || window ),
855
- isWindow = $.isWindow( withinElement[ 0 ] ),
883
+ isElemWindow = isWindow( withinElement[ 0 ] ),
856
884
  isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
857
- hasOffset = !isWindow && !isDocument;
885
+ hasOffset = !isElemWindow && !isDocument;
858
886
  return {
859
887
  element: withinElement,
860
- isWindow: isWindow,
888
+ isWindow: isElemWindow,
861
889
  isDocument: isDocument,
862
890
  offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
863
891
  scrollLeft: withinElement.scrollLeft(),
@@ -877,7 +905,12 @@ $.fn.position = function( options ) {
877
905
  options = $.extend( {}, options );
878
906
 
879
907
  var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
880
- target = $( options.of ),
908
+
909
+ // Make sure string options are treated as CSS selectors
910
+ target = typeof options.of === "string" ?
911
+ $( document ).find( options.of ) :
912
+ $( options.of ),
913
+
881
914
  within = $.position.getWithinInfo( options.within ),
882
915
  scrollInfo = $.position.getScrollInfo( within ),
883
916
  collision = ( options.collision || "flip" ).split( " " ),
@@ -1230,7 +1263,7 @@ var position = $.ui.position;
1230
1263
 
1231
1264
 
1232
1265
  /*!
1233
- * jQuery UI :data 1.12.1
1266
+ * jQuery UI :data 1.13.1
1234
1267
  * http://jqueryui.com
1235
1268
  *
1236
1269
  * Copyright jQuery Foundation and other contributors
@@ -1244,7 +1277,7 @@ var position = $.ui.position;
1244
1277
  //>>docs: http://api.jqueryui.com/data-selector/
1245
1278
 
1246
1279
 
1247
- var data = $.extend( $.expr[ ":" ], {
1280
+ var data = $.extend( $.expr.pseudos, {
1248
1281
  data: $.expr.createPseudo ?
1249
1282
  $.expr.createPseudo( function( dataName ) {
1250
1283
  return function( elem ) {
@@ -1259,7 +1292,7 @@ var data = $.extend( $.expr[ ":" ], {
1259
1292
  } );
1260
1293
 
1261
1294
  /*!
1262
- * jQuery UI Disable Selection 1.12.1
1295
+ * jQuery UI Disable Selection 1.13.1
1263
1296
  * http://jqueryui.com
1264
1297
  *
1265
1298
  * Copyright jQuery Foundation and other contributors
@@ -1274,7 +1307,6 @@ var data = $.extend( $.expr[ ":" ], {
1274
1307
 
1275
1308
  // This file is deprecated
1276
1309
 
1277
-
1278
1310
  var disableSelection = $.fn.extend( {
1279
1311
  disableSelection: ( function() {
1280
1312
  var eventType = "onselectstart" in document.createElement( "div" ) ?
@@ -1294,56 +1326,37 @@ var disableSelection = $.fn.extend( {
1294
1326
  } );
1295
1327
 
1296
1328
 
1297
- /*!
1298
- * jQuery UI Effects 1.12.1
1299
- * http://jqueryui.com
1300
- *
1301
- * Copyright jQuery Foundation and other contributors
1302
- * Released under the MIT license.
1303
- * http://jquery.org/license
1304
- */
1305
-
1306
- //>>label: Effects Core
1307
- //>>group: Effects
1308
- // jscs:disable maximumLineLength
1309
- //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
1310
- // jscs:enable maximumLineLength
1311
- //>>docs: http://api.jqueryui.com/category/effects-core/
1312
- //>>demos: http://jqueryui.com/effect/
1313
-
1314
-
1315
1329
 
1316
- var dataSpace = "ui-effects-",
1317
- dataSpaceStyle = "ui-effects-style",
1318
- dataSpaceAnimated = "ui-effects-animated",
1330
+ // Create a local jQuery because jQuery Color relies on it and the
1331
+ // global may not exist with AMD and a custom build (#10199).
1332
+ // This module is a noop if used as a regular AMD module.
1333
+ // eslint-disable-next-line no-unused-vars
1334
+ var jQuery = $;
1319
1335
 
1320
- // Create a local jQuery because jQuery Color relies on it and the
1321
- // global may not exist with AMD and a custom build (#10199)
1322
- jQuery = $;
1323
-
1324
- $.effects = {
1325
- effect: {}
1326
- };
1327
1336
 
1328
1337
  /*!
1329
- * jQuery Color Animations v2.1.2
1338
+ * jQuery Color Animations v2.2.0
1330
1339
  * https://github.com/jquery/jquery-color
1331
1340
  *
1332
- * Copyright 2014 jQuery Foundation and other contributors
1341
+ * Copyright OpenJS Foundation and other contributors
1333
1342
  * Released under the MIT license.
1334
1343
  * http://jquery.org/license
1335
1344
  *
1336
- * Date: Wed Jan 16 08:47:09 2013 -0600
1345
+ * Date: Sun May 10 09:02:36 2020 +0200
1337
1346
  */
1338
- ( function( jQuery, undefined ) {
1347
+
1348
+
1339
1349
 
1340
1350
  var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
1341
1351
  "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
1342
1352
 
1343
- // Plusequals test for += 100 -= 100
1353
+ class2type = {},
1354
+ toString = class2type.toString,
1355
+
1356
+ // plusequals test for += 100 -= 100
1344
1357
  rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
1345
1358
 
1346
- // A set of RE's that can match strings and generate color tuples.
1359
+ // a set of RE's that can match strings and generate color tuples.
1347
1360
  stringParsers = [ {
1348
1361
  re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1349
1362
  parse: function( execResult ) {
@@ -1366,24 +1379,31 @@ $.effects = {
1366
1379
  }
1367
1380
  }, {
1368
1381
 
1369
- // This regex ignores A-F because it's compared against an already lowercased string
1370
- re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
1382
+ // this regex ignores A-F because it's compared against an already lowercased string
1383
+ re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,
1371
1384
  parse: function( execResult ) {
1372
1385
  return [
1373
1386
  parseInt( execResult[ 1 ], 16 ),
1374
1387
  parseInt( execResult[ 2 ], 16 ),
1375
- parseInt( execResult[ 3 ], 16 )
1388
+ parseInt( execResult[ 3 ], 16 ),
1389
+ execResult[ 4 ] ?
1390
+ ( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :
1391
+ 1
1376
1392
  ];
1377
1393
  }
1378
1394
  }, {
1379
1395
 
1380
- // This regex ignores A-F because it's compared against an already lowercased string
1381
- re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
1396
+ // this regex ignores A-F because it's compared against an already lowercased string
1397
+ re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,
1382
1398
  parse: function( execResult ) {
1383
1399
  return [
1384
1400
  parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
1385
1401
  parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
1386
- parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
1402
+ parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),
1403
+ execResult[ 4 ] ?
1404
+ ( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )
1405
+ .toFixed( 2 ) :
1406
+ 1
1387
1407
  ];
1388
1408
  }
1389
1409
  }, {
@@ -1399,7 +1419,7 @@ $.effects = {
1399
1419
  }
1400
1420
  } ],
1401
1421
 
1402
- // JQuery.Color( )
1422
+ // jQuery.Color( )
1403
1423
  color = jQuery.Color = function( color, green, blue, alpha ) {
1404
1424
  return new jQuery.Color.fn.parse( color, green, blue, alpha );
1405
1425
  },
@@ -1453,20 +1473,20 @@ $.effects = {
1453
1473
  },
1454
1474
  support = color.support = {},
1455
1475
 
1456
- // Element for support tests
1476
+ // element for support tests
1457
1477
  supportElem = jQuery( "<p>" )[ 0 ],
1458
1478
 
1459
- // Colors = jQuery.Color.names
1479
+ // colors = jQuery.Color.names
1460
1480
  colors,
1461
1481
 
1462
- // Local aliases of functions called often
1482
+ // local aliases of functions called often
1463
1483
  each = jQuery.each;
1464
1484
 
1465
- // Determine rgba support immediately
1485
+ // determine rgba support immediately
1466
1486
  supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
1467
1487
  support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
1468
1488
 
1469
- // Define cache name and alpha properties
1489
+ // define cache name and alpha properties
1470
1490
  // for rgba and hsla spaces
1471
1491
  each( spaces, function( spaceName, space ) {
1472
1492
  space.cache = "_" + spaceName;
@@ -1477,6 +1497,22 @@ each( spaces, function( spaceName, space ) {
1477
1497
  };
1478
1498
  } );
1479
1499
 
1500
+ // Populate the class2type map
1501
+ jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
1502
+ function( _i, name ) {
1503
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
1504
+ } );
1505
+
1506
+ function getType( obj ) {
1507
+ if ( obj == null ) {
1508
+ return obj + "";
1509
+ }
1510
+
1511
+ return typeof obj === "object" ?
1512
+ class2type[ toString.call( obj ) ] || "object" :
1513
+ typeof obj;
1514
+ }
1515
+
1480
1516
  function clamp( value, prop, allowEmpty ) {
1481
1517
  var type = propTypes[ prop.type ] || {};
1482
1518
 
@@ -1495,13 +1531,13 @@ function clamp( value, prop, allowEmpty ) {
1495
1531
 
1496
1532
  if ( type.mod ) {
1497
1533
 
1498
- // We add mod before modding to make sure that negatives values
1534
+ // we add mod before modding to make sure that negatives values
1499
1535
  // get converted properly: -10 -> 350
1500
1536
  return ( value + type.mod ) % type.mod;
1501
1537
  }
1502
1538
 
1503
- // For now all property types without mod have min and max
1504
- return 0 > value ? 0 : type.max < value ? type.max : value;
1539
+ // for now all property types without mod have min and max
1540
+ return Math.min( type.max, Math.max( 0, value ) );
1505
1541
  }
1506
1542
 
1507
1543
  function stringParse( string ) {
@@ -1510,7 +1546,7 @@ function stringParse( string ) {
1510
1546
 
1511
1547
  string = string.toLowerCase();
1512
1548
 
1513
- each( stringParsers, function( i, parser ) {
1549
+ each( stringParsers, function( _i, parser ) {
1514
1550
  var parsed,
1515
1551
  match = parser.re.exec( string ),
1516
1552
  values = match && parser.parse( match ),
@@ -1519,12 +1555,12 @@ function stringParse( string ) {
1519
1555
  if ( values ) {
1520
1556
  parsed = inst[ spaceName ]( values );
1521
1557
 
1522
- // If this was an rgba parse the assignment might happen twice
1558
+ // if this was an rgba parse the assignment might happen twice
1523
1559
  // oh well....
1524
1560
  inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
1525
1561
  rgba = inst._rgba = parsed._rgba;
1526
1562
 
1527
- // Exit each( stringParsers ) here because we matched
1563
+ // exit each( stringParsers ) here because we matched
1528
1564
  return false;
1529
1565
  }
1530
1566
  } );
@@ -1532,7 +1568,7 @@ function stringParse( string ) {
1532
1568
  // Found a stringParser that handled it
1533
1569
  if ( rgba.length ) {
1534
1570
 
1535
- // If this came from a parsed string, force "transparent" when alpha is 0
1571
+ // if this came from a parsed string, force "transparent" when alpha is 0
1536
1572
  // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
1537
1573
  if ( rgba.join() === "0,0,0,0" ) {
1538
1574
  jQuery.extend( rgba, colors.transparent );
@@ -1540,7 +1576,7 @@ function stringParse( string ) {
1540
1576
  return inst;
1541
1577
  }
1542
1578
 
1543
- // Named colors
1579
+ // named colors
1544
1580
  return colors[ string ];
1545
1581
  }
1546
1582
 
@@ -1556,10 +1592,10 @@ color.fn = jQuery.extend( color.prototype, {
1556
1592
  }
1557
1593
 
1558
1594
  var inst = this,
1559
- type = jQuery.type( red ),
1595
+ type = getType( red ),
1560
1596
  rgba = this._rgba = [];
1561
1597
 
1562
- // More than 1 argument specified - assume ( red, green, blue, alpha )
1598
+ // more than 1 argument specified - assume ( red, green, blue, alpha )
1563
1599
  if ( green !== undefined ) {
1564
1600
  red = [ red, green, blue, alpha ];
1565
1601
  type = "array";
@@ -1570,7 +1606,7 @@ color.fn = jQuery.extend( color.prototype, {
1570
1606
  }
1571
1607
 
1572
1608
  if ( type === "array" ) {
1573
- each( spaces.rgba.props, function( key, prop ) {
1609
+ each( spaces.rgba.props, function( _key, prop ) {
1574
1610
  rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
1575
1611
  } );
1576
1612
  return this;
@@ -1578,20 +1614,20 @@ color.fn = jQuery.extend( color.prototype, {
1578
1614
 
1579
1615
  if ( type === "object" ) {
1580
1616
  if ( red instanceof color ) {
1581
- each( spaces, function( spaceName, space ) {
1617
+ each( spaces, function( _spaceName, space ) {
1582
1618
  if ( red[ space.cache ] ) {
1583
1619
  inst[ space.cache ] = red[ space.cache ].slice();
1584
1620
  }
1585
1621
  } );
1586
1622
  } else {
1587
- each( spaces, function( spaceName, space ) {
1623
+ each( spaces, function( _spaceName, space ) {
1588
1624
  var cache = space.cache;
1589
1625
  each( space.props, function( key, prop ) {
1590
1626
 
1591
- // If the cache doesn't exist, and we know how to convert
1627
+ // if the cache doesn't exist, and we know how to convert
1592
1628
  if ( !inst[ cache ] && space.to ) {
1593
1629
 
1594
- // If the value was null, we don't need to copy it
1630
+ // if the value was null, we don't need to copy it
1595
1631
  // if the key was alpha, we don't need to copy it either
1596
1632
  if ( key === "alpha" || red[ key ] == null ) {
1597
1633
  return;
@@ -1599,17 +1635,19 @@ color.fn = jQuery.extend( color.prototype, {
1599
1635
  inst[ cache ] = space.to( inst._rgba );
1600
1636
  }
1601
1637
 
1602
- // This is the only case where we allow nulls for ALL properties.
1638
+ // this is the only case where we allow nulls for ALL properties.
1603
1639
  // call clamp with alwaysAllowEmpty
1604
1640
  inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
1605
1641
  } );
1606
1642
 
1607
- // Everything defined but alpha?
1608
- if ( inst[ cache ] &&
1609
- jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
1643
+ // everything defined but alpha?
1644
+ if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
1645
+
1646
+ // use the default of 1
1647
+ if ( inst[ cache ][ 3 ] == null ) {
1648
+ inst[ cache ][ 3 ] = 1;
1649
+ }
1610
1650
 
1611
- // Use the default of 1
1612
- inst[ cache ][ 3 ] = 1;
1613
1651
  if ( space.from ) {
1614
1652
  inst._rgba = space.from( inst[ cache ] );
1615
1653
  }
@@ -1659,18 +1697,18 @@ color.fn = jQuery.extend( color.prototype, {
1659
1697
  result = start.slice();
1660
1698
 
1661
1699
  end = end[ space.cache ];
1662
- each( space.props, function( key, prop ) {
1700
+ each( space.props, function( _key, prop ) {
1663
1701
  var index = prop.idx,
1664
1702
  startValue = start[ index ],
1665
1703
  endValue = end[ index ],
1666
1704
  type = propTypes[ prop.type ] || {};
1667
1705
 
1668
- // If null, don't override start value
1706
+ // if null, don't override start value
1669
1707
  if ( endValue === null ) {
1670
1708
  return;
1671
1709
  }
1672
1710
 
1673
- // If null - use end
1711
+ // if null - use end
1674
1712
  if ( startValue === null ) {
1675
1713
  result[ index ] = endValue;
1676
1714
  } else {
@@ -1688,7 +1726,7 @@ color.fn = jQuery.extend( color.prototype, {
1688
1726
  },
1689
1727
  blend: function( opaque ) {
1690
1728
 
1691
- // If we are already opaque - return ourself
1729
+ // if we are already opaque - return ourself
1692
1730
  if ( this._rgba[ 3 ] === 1 ) {
1693
1731
  return this;
1694
1732
  }
@@ -1704,7 +1742,10 @@ color.fn = jQuery.extend( color.prototype, {
1704
1742
  toRgbaString: function() {
1705
1743
  var prefix = "rgba(",
1706
1744
  rgba = jQuery.map( this._rgba, function( v, i ) {
1707
- return v == null ? ( i > 2 ? 1 : 0 ) : v;
1745
+ if ( v != null ) {
1746
+ return v;
1747
+ }
1748
+ return i > 2 ? 1 : 0;
1708
1749
  } );
1709
1750
 
1710
1751
  if ( rgba[ 3 ] === 1 ) {
@@ -1721,7 +1762,7 @@ color.fn = jQuery.extend( color.prototype, {
1721
1762
  v = i > 2 ? 1 : 0;
1722
1763
  }
1723
1764
 
1724
- // Catch 1 and 2
1765
+ // catch 1 and 2
1725
1766
  if ( i && i < 3 ) {
1726
1767
  v = Math.round( v * 100 ) + "%";
1727
1768
  }
@@ -1744,7 +1785,7 @@ color.fn = jQuery.extend( color.prototype, {
1744
1785
 
1745
1786
  return "#" + jQuery.map( rgba, function( v ) {
1746
1787
 
1747
- // Default to 0 when nulls exist
1788
+ // default to 0 when nulls exist
1748
1789
  v = ( v || 0 ).toString( 16 );
1749
1790
  return v.length === 1 ? "0" + v : v;
1750
1791
  } ).join( "" );
@@ -1755,7 +1796,7 @@ color.fn = jQuery.extend( color.prototype, {
1755
1796
  } );
1756
1797
  color.fn.parse.prototype = color.fn;
1757
1798
 
1758
- // Hsla conversions adapted from:
1799
+ // hsla conversions adapted from:
1759
1800
  // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
1760
1801
 
1761
1802
  function hue2rgb( p, q, h ) {
@@ -1797,7 +1838,7 @@ spaces.hsla.to = function( rgba ) {
1797
1838
  h = ( 60 * ( r - g ) / diff ) + 240;
1798
1839
  }
1799
1840
 
1800
- // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
1841
+ // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
1801
1842
  // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
1802
1843
  if ( diff === 0 ) {
1803
1844
  s = 0;
@@ -1828,16 +1869,17 @@ spaces.hsla.from = function( hsla ) {
1828
1869
  ];
1829
1870
  };
1830
1871
 
1872
+
1831
1873
  each( spaces, function( spaceName, space ) {
1832
1874
  var props = space.props,
1833
1875
  cache = space.cache,
1834
1876
  to = space.to,
1835
1877
  from = space.from;
1836
1878
 
1837
- // Makes rgba() and hsla()
1879
+ // makes rgba() and hsla()
1838
1880
  color.fn[ spaceName ] = function( value ) {
1839
1881
 
1840
- // Generate a cache for this space if it doesn't exist
1882
+ // generate a cache for this space if it doesn't exist
1841
1883
  if ( to && !this[ cache ] ) {
1842
1884
  this[ cache ] = to( this._rgba );
1843
1885
  }
@@ -1846,7 +1888,7 @@ each( spaces, function( spaceName, space ) {
1846
1888
  }
1847
1889
 
1848
1890
  var ret,
1849
- type = jQuery.type( value ),
1891
+ type = getType( value ),
1850
1892
  arr = ( type === "array" || type === "object" ) ? value : arguments,
1851
1893
  local = this[ cache ].slice();
1852
1894
 
@@ -1867,19 +1909,24 @@ each( spaces, function( spaceName, space ) {
1867
1909
  }
1868
1910
  };
1869
1911
 
1870
- // Makes red() green() blue() alpha() hue() saturation() lightness()
1912
+ // makes red() green() blue() alpha() hue() saturation() lightness()
1871
1913
  each( props, function( key, prop ) {
1872
1914
 
1873
- // Alpha is included in more than one space
1915
+ // alpha is included in more than one space
1874
1916
  if ( color.fn[ key ] ) {
1875
1917
  return;
1876
1918
  }
1877
1919
  color.fn[ key ] = function( value ) {
1878
- var vtype = jQuery.type( value ),
1879
- fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
1880
- local = this[ fn ](),
1881
- cur = local[ prop.idx ],
1882
- match;
1920
+ var local, cur, match, fn,
1921
+ vtype = getType( value );
1922
+
1923
+ if ( key === "alpha" ) {
1924
+ fn = this._hsla ? "hsla" : "rgba";
1925
+ } else {
1926
+ fn = spaceName;
1927
+ }
1928
+ local = this[ fn ]();
1929
+ cur = local[ prop.idx ];
1883
1930
 
1884
1931
  if ( vtype === "undefined" ) {
1885
1932
  return cur;
@@ -1887,7 +1934,7 @@ each( spaces, function( spaceName, space ) {
1887
1934
 
1888
1935
  if ( vtype === "function" ) {
1889
1936
  value = value.call( this, cur );
1890
- vtype = jQuery.type( value );
1937
+ vtype = getType( value );
1891
1938
  }
1892
1939
  if ( value == null && prop.empty ) {
1893
1940
  return this;
@@ -1904,18 +1951,17 @@ each( spaces, function( spaceName, space ) {
1904
1951
  } );
1905
1952
  } );
1906
1953
 
1907
- // Add cssHook and .fx.step function for each named hook.
1954
+ // add cssHook and .fx.step function for each named hook.
1908
1955
  // accept a space separated string of properties
1909
1956
  color.hook = function( hook ) {
1910
1957
  var hooks = hook.split( " " );
1911
- each( hooks, function( i, hook ) {
1958
+ each( hooks, function( _i, hook ) {
1912
1959
  jQuery.cssHooks[ hook ] = {
1913
1960
  set: function( elem, value ) {
1914
1961
  var parsed, curElem,
1915
1962
  backgroundColor = "";
1916
1963
 
1917
- if ( value !== "transparent" && ( jQuery.type( value ) !== "string" ||
1918
- ( parsed = stringParse( value ) ) ) ) {
1964
+ if ( value !== "transparent" && ( getType( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
1919
1965
  value = color( parsed || value );
1920
1966
  if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
1921
1967
  curElem = hook === "backgroundColor" ? elem.parentNode : elem;
@@ -1941,8 +1987,7 @@ color.hook = function( hook ) {
1941
1987
  elem.style[ hook ] = value;
1942
1988
  } catch ( e ) {
1943
1989
 
1944
- // Wrapped to prevent IE from throwing errors on "invalid" values like
1945
- // 'auto' or 'inherit'
1990
+ // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
1946
1991
  }
1947
1992
  }
1948
1993
  };
@@ -1964,7 +2009,7 @@ jQuery.cssHooks.borderColor = {
1964
2009
  expand: function( value ) {
1965
2010
  var expanded = {};
1966
2011
 
1967
- each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
2012
+ each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) {
1968
2013
  expanded[ "border" + part + "Color" ] = value;
1969
2014
  } );
1970
2015
  return expanded;
@@ -2000,7 +2045,32 @@ colors = jQuery.Color.names = {
2000
2045
  _default: "#ffffff"
2001
2046
  };
2002
2047
 
2003
- } )( jQuery );
2048
+
2049
+ /*!
2050
+ * jQuery UI Effects 1.13.1
2051
+ * http://jqueryui.com
2052
+ *
2053
+ * Copyright jQuery Foundation and other contributors
2054
+ * Released under the MIT license.
2055
+ * http://jquery.org/license
2056
+ */
2057
+
2058
+ //>>label: Effects Core
2059
+ //>>group: Effects
2060
+ /* eslint-disable max-len */
2061
+ //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
2062
+ /* eslint-enable max-len */
2063
+ //>>docs: http://api.jqueryui.com/category/effects-core/
2064
+ //>>demos: http://jqueryui.com/effect/
2065
+
2066
+
2067
+ var dataSpace = "ui-effects-",
2068
+ dataSpaceStyle = "ui-effects-style",
2069
+ dataSpaceAnimated = "ui-effects-animated";
2070
+
2071
+ $.effects = {
2072
+ effect: {}
2073
+ };
2004
2074
 
2005
2075
  /******************************************************************************/
2006
2076
  /****************************** CLASS ANIMATIONS ******************************/
@@ -2032,6 +2102,12 @@ $.each(
2032
2102
  }
2033
2103
  );
2034
2104
 
2105
+ function camelCase( string ) {
2106
+ return string.replace( /-([\da-z])/gi, function( all, letter ) {
2107
+ return letter.toUpperCase();
2108
+ } );
2109
+ }
2110
+
2035
2111
  function getElementStyles( elem ) {
2036
2112
  var key, len,
2037
2113
  style = elem.ownerDocument.defaultView ?
@@ -2044,7 +2120,7 @@ function getElementStyles( elem ) {
2044
2120
  while ( len-- ) {
2045
2121
  key = style[ len ];
2046
2122
  if ( typeof style[ key ] === "string" ) {
2047
- styles[ $.camelCase( key ) ] = style[ key ];
2123
+ styles[ camelCase( key ) ] = style[ key ];
2048
2124
  }
2049
2125
  }
2050
2126
 
@@ -2218,12 +2294,12 @@ $.fn.extend( {
2218
2294
 
2219
2295
  ( function() {
2220
2296
 
2221
- if ( $.expr && $.expr.filters && $.expr.filters.animated ) {
2222
- $.expr.filters.animated = ( function( orig ) {
2297
+ if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {
2298
+ $.expr.pseudos.animated = ( function( orig ) {
2223
2299
  return function( elem ) {
2224
2300
  return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
2225
2301
  };
2226
- } )( $.expr.filters.animated );
2302
+ } )( $.expr.pseudos.animated );
2227
2303
  }
2228
2304
 
2229
2305
  if ( $.uiBackCompat !== false ) {
@@ -2292,6 +2368,7 @@ if ( $.uiBackCompat !== false ) {
2292
2368
  // Firefox incorrectly exposes anonymous content
2293
2369
  // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
2294
2370
  try {
2371
+ // eslint-disable-next-line no-unused-expressions
2295
2372
  active.id;
2296
2373
  } catch ( e ) {
2297
2374
  active = document.body;
@@ -2354,7 +2431,7 @@ if ( $.uiBackCompat !== false ) {
2354
2431
  }
2355
2432
 
2356
2433
  $.extend( $.effects, {
2357
- version: "1.12.1",
2434
+ version: "1.13.1",
2358
2435
 
2359
2436
  define: function( name, mode, effect ) {
2360
2437
  if ( !effect ) {
@@ -2570,7 +2647,7 @@ function _normalizeArguments( effect, options, speed, callback ) {
2570
2647
  }
2571
2648
 
2572
2649
  // Catch (effect, callback)
2573
- if ( $.isFunction( options ) ) {
2650
+ if ( typeof options === "function" ) {
2574
2651
  callback = options;
2575
2652
  speed = null;
2576
2653
  options = {};
@@ -2584,7 +2661,7 @@ function _normalizeArguments( effect, options, speed, callback ) {
2584
2661
  }
2585
2662
 
2586
2663
  // Catch (effect, options, callback)
2587
- if ( $.isFunction( speed ) ) {
2664
+ if ( typeof speed === "function" ) {
2588
2665
  callback = speed;
2589
2666
  speed = null;
2590
2667
  }
@@ -2618,7 +2695,7 @@ function standardAnimationOption( option ) {
2618
2695
  }
2619
2696
 
2620
2697
  // Complete callback
2621
- if ( $.isFunction( option ) ) {
2698
+ if ( typeof option === "function" ) {
2622
2699
  return true;
2623
2700
  }
2624
2701
 
@@ -2645,7 +2722,7 @@ $.fn.extend( {
2645
2722
  var el = $( this ),
2646
2723
  normalizedMode = $.effects.mode( el, mode ) || defaultMode;
2647
2724
 
2648
- // Sentinel for duck-punching the :animated psuedo-selector
2725
+ // Sentinel for duck-punching the :animated pseudo-selector
2649
2726
  el.data( dataSpaceAnimated, true );
2650
2727
 
2651
2728
  // Save effect mode for later use,
@@ -2653,7 +2730,7 @@ $.fn.extend( {
2653
2730
  // as the .show() below destroys the initial state
2654
2731
  modes.push( normalizedMode );
2655
2732
 
2656
- // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13
2733
+ // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14
2657
2734
  if ( defaultMode && ( normalizedMode === "show" ||
2658
2735
  ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
2659
2736
  el.show();
@@ -2663,7 +2740,7 @@ $.fn.extend( {
2663
2740
  $.effects.saveStyle( el );
2664
2741
  }
2665
2742
 
2666
- if ( $.isFunction( next ) ) {
2743
+ if ( typeof next === "function" ) {
2667
2744
  next();
2668
2745
  }
2669
2746
  };
@@ -2698,11 +2775,11 @@ $.fn.extend( {
2698
2775
  }
2699
2776
 
2700
2777
  function done() {
2701
- if ( $.isFunction( complete ) ) {
2778
+ if ( typeof complete === "function" ) {
2702
2779
  complete.call( elem[ 0 ] );
2703
2780
  }
2704
2781
 
2705
- if ( $.isFunction( next ) ) {
2782
+ if ( typeof next === "function" ) {
2706
2783
  next();
2707
2784
  }
2708
2785
  }
@@ -2811,22 +2888,24 @@ $.fn.extend( {
2811
2888
  width: target.innerWidth()
2812
2889
  },
2813
2890
  startPosition = element.offset(),
2814
- transfer = $( "<div class='ui-effects-transfer'></div>" )
2815
- .appendTo( "body" )
2816
- .addClass( options.className )
2817
- .css( {
2818
- top: startPosition.top - fixTop,
2819
- left: startPosition.left - fixLeft,
2820
- height: element.innerHeight(),
2821
- width: element.innerWidth(),
2822
- position: targetFixed ? "fixed" : "absolute"
2823
- } )
2824
- .animate( animation, options.duration, options.easing, function() {
2825
- transfer.remove();
2826
- if ( $.isFunction( done ) ) {
2827
- done();
2828
- }
2829
- } );
2891
+ transfer = $( "<div class='ui-effects-transfer'></div>" );
2892
+
2893
+ transfer
2894
+ .appendTo( "body" )
2895
+ .addClass( options.className )
2896
+ .css( {
2897
+ top: startPosition.top - fixTop,
2898
+ left: startPosition.left - fixLeft,
2899
+ height: element.innerHeight(),
2900
+ width: element.innerWidth(),
2901
+ position: targetFixed ? "fixed" : "absolute"
2902
+ } )
2903
+ .animate( animation, options.duration, options.easing, function() {
2904
+ transfer.remove();
2905
+ if ( typeof done === "function" ) {
2906
+ done();
2907
+ }
2908
+ } );
2830
2909
  }
2831
2910
  } );
2832
2911
 
@@ -2920,7 +2999,7 @@ var effect = $.effects;
2920
2999
 
2921
3000
 
2922
3001
  /*!
2923
- * jQuery UI Effects Blind 1.12.1
3002
+ * jQuery UI Effects Blind 1.13.1
2924
3003
  * http://jqueryui.com
2925
3004
  *
2926
3005
  * Copyright jQuery Foundation and other contributors
@@ -2935,7 +3014,6 @@ var effect = $.effects;
2935
3014
  //>>demos: http://jqueryui.com/effect/
2936
3015
 
2937
3016
 
2938
-
2939
3017
  var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
2940
3018
  var map = {
2941
3019
  up: [ "bottom", "top" ],
@@ -2976,7 +3054,7 @@ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, d
2976
3054
 
2977
3055
 
2978
3056
  /*!
2979
- * jQuery UI Effects Bounce 1.12.1
3057
+ * jQuery UI Effects Bounce 1.13.1
2980
3058
  * http://jqueryui.com
2981
3059
  *
2982
3060
  * Copyright jQuery Foundation and other contributors
@@ -2991,7 +3069,6 @@ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, d
2991
3069
  //>>demos: http://jqueryui.com/effect/
2992
3070
 
2993
3071
 
2994
-
2995
3072
  var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
2996
3073
  var upAnim, downAnim, refValue,
2997
3074
  element = $( this ),
@@ -3072,7 +3149,7 @@ var effectsEffectBounce = $.effects.define( "bounce", function( options, done )
3072
3149
 
3073
3150
 
3074
3151
  /*!
3075
- * jQuery UI Effects Clip 1.12.1
3152
+ * jQuery UI Effects Clip 1.13.1
3076
3153
  * http://jqueryui.com
3077
3154
  *
3078
3155
  * Copyright jQuery Foundation and other contributors
@@ -3087,7 +3164,6 @@ var effectsEffectBounce = $.effects.define( "bounce", function( options, done )
3087
3164
  //>>demos: http://jqueryui.com/effect/
3088
3165
 
3089
3166
 
3090
-
3091
3167
  var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
3092
3168
  var start,
3093
3169
  animate = {},
@@ -3123,7 +3199,7 @@ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, don
3123
3199
 
3124
3200
 
3125
3201
  /*!
3126
- * jQuery UI Effects Drop 1.12.1
3202
+ * jQuery UI Effects Drop 1.13.1
3127
3203
  * http://jqueryui.com
3128
3204
  *
3129
3205
  * Copyright jQuery Foundation and other contributors
@@ -3138,7 +3214,6 @@ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, don
3138
3214
  //>>demos: http://jqueryui.com/effect/
3139
3215
 
3140
3216
 
3141
-
3142
3217
  var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {
3143
3218
 
3144
3219
  var distance,
@@ -3178,7 +3253,7 @@ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, don
3178
3253
 
3179
3254
 
3180
3255
  /*!
3181
- * jQuery UI Effects Explode 1.12.1
3256
+ * jQuery UI Effects Explode 1.13.1
3182
3257
  * http://jqueryui.com
3183
3258
  *
3184
3259
  * Copyright jQuery Foundation and other contributors
@@ -3188,14 +3263,13 @@ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, don
3188
3263
 
3189
3264
  //>>label: Explode Effect
3190
3265
  //>>group: Effects
3191
- // jscs:disable maximumLineLength
3266
+ /* eslint-disable max-len */
3192
3267
  //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
3193
- // jscs:enable maximumLineLength
3268
+ /* eslint-enable max-len */
3194
3269
  //>>docs: http://api.jqueryui.com/explode-effect/
3195
3270
  //>>demos: http://jqueryui.com/effect/
3196
3271
 
3197
3272
 
3198
-
3199
3273
  var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {
3200
3274
 
3201
3275
  var i, j, left, top, mx, my,
@@ -3275,7 +3349,7 @@ var effectsEffectExplode = $.effects.define( "explode", "hide", function( option
3275
3349
 
3276
3350
 
3277
3351
  /*!
3278
- * jQuery UI Effects Fade 1.12.1
3352
+ * jQuery UI Effects Fade 1.13.1
3279
3353
  * http://jqueryui.com
3280
3354
  *
3281
3355
  * Copyright jQuery Foundation and other contributors
@@ -3290,7 +3364,6 @@ var effectsEffectExplode = $.effects.define( "explode", "hide", function( option
3290
3364
  //>>demos: http://jqueryui.com/effect/
3291
3365
 
3292
3366
 
3293
-
3294
3367
  var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
3295
3368
  var show = options.mode === "show";
3296
3369
 
@@ -3308,7 +3381,7 @@ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, d
3308
3381
 
3309
3382
 
3310
3383
  /*!
3311
- * jQuery UI Effects Fold 1.12.1
3384
+ * jQuery UI Effects Fold 1.13.1
3312
3385
  * http://jqueryui.com
3313
3386
  *
3314
3387
  * Copyright jQuery Foundation and other contributors
@@ -3323,7 +3396,6 @@ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, d
3323
3396
  //>>demos: http://jqueryui.com/effect/
3324
3397
 
3325
3398
 
3326
-
3327
3399
  var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {
3328
3400
 
3329
3401
  // Create element
@@ -3383,7 +3455,7 @@ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, don
3383
3455
 
3384
3456
 
3385
3457
  /*!
3386
- * jQuery UI Effects Highlight 1.12.1
3458
+ * jQuery UI Effects Highlight 1.13.1
3387
3459
  * http://jqueryui.com
3388
3460
  *
3389
3461
  * Copyright jQuery Foundation and other contributors
@@ -3398,7 +3470,6 @@ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, don
3398
3470
  //>>demos: http://jqueryui.com/effect/
3399
3471
 
3400
3472
 
3401
-
3402
3473
  var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
3403
3474
  var element = $( this ),
3404
3475
  animation = {
@@ -3426,7 +3497,7 @@ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( op
3426
3497
 
3427
3498
 
3428
3499
  /*!
3429
- * jQuery UI Effects Size 1.12.1
3500
+ * jQuery UI Effects Size 1.13.1
3430
3501
  * http://jqueryui.com
3431
3502
  *
3432
3503
  * Copyright jQuery Foundation and other contributors
@@ -3441,7 +3512,6 @@ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( op
3441
3512
  //>>demos: http://jqueryui.com/effect/
3442
3513
 
3443
3514
 
3444
-
3445
3515
  var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3446
3516
 
3447
3517
  // Create element
@@ -3518,6 +3588,8 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3518
3588
  to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
3519
3589
  to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
3520
3590
  }
3591
+ delete from.outerHeight;
3592
+ delete from.outerWidth;
3521
3593
  element.css( from );
3522
3594
 
3523
3595
  // Animate the children if desired
@@ -3603,7 +3675,7 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3603
3675
 
3604
3676
 
3605
3677
  /*!
3606
- * jQuery UI Effects Scale 1.12.1
3678
+ * jQuery UI Effects Scale 1.13.1
3607
3679
  * http://jqueryui.com
3608
3680
  *
3609
3681
  * Copyright jQuery Foundation and other contributors
@@ -3618,7 +3690,6 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3618
3690
  //>>demos: http://jqueryui.com/effect/
3619
3691
 
3620
3692
 
3621
-
3622
3693
  var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
3623
3694
 
3624
3695
  // Create element
@@ -3644,7 +3715,7 @@ var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
3644
3715
 
3645
3716
 
3646
3717
  /*!
3647
- * jQuery UI Effects Puff 1.12.1
3718
+ * jQuery UI Effects Puff 1.13.1
3648
3719
  * http://jqueryui.com
3649
3720
  *
3650
3721
  * Copyright jQuery Foundation and other contributors
@@ -3659,7 +3730,6 @@ var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
3659
3730
  //>>demos: http://jqueryui.com/effect/
3660
3731
 
3661
3732
 
3662
-
3663
3733
  var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
3664
3734
  var newOptions = $.extend( true, {}, options, {
3665
3735
  fade: true,
@@ -3671,7 +3741,7 @@ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, don
3671
3741
 
3672
3742
 
3673
3743
  /*!
3674
- * jQuery UI Effects Pulsate 1.12.1
3744
+ * jQuery UI Effects Pulsate 1.13.1
3675
3745
  * http://jqueryui.com
3676
3746
  *
3677
3747
  * Copyright jQuery Foundation and other contributors
@@ -3686,7 +3756,6 @@ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, don
3686
3756
  //>>demos: http://jqueryui.com/effect/
3687
3757
 
3688
3758
 
3689
-
3690
3759
  var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
3691
3760
  var element = $( this ),
3692
3761
  mode = options.mode,
@@ -3721,7 +3790,7 @@ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( option
3721
3790
 
3722
3791
 
3723
3792
  /*!
3724
- * jQuery UI Effects Shake 1.12.1
3793
+ * jQuery UI Effects Shake 1.13.1
3725
3794
  * http://jqueryui.com
3726
3795
  *
3727
3796
  * Copyright jQuery Foundation and other contributors
@@ -3736,7 +3805,6 @@ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( option
3736
3805
  //>>demos: http://jqueryui.com/effect/
3737
3806
 
3738
3807
 
3739
-
3740
3808
  var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
3741
3809
 
3742
3810
  var i = 1,
@@ -3781,7 +3849,7 @@ var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
3781
3849
 
3782
3850
 
3783
3851
  /*!
3784
- * jQuery UI Effects Slide 1.12.1
3852
+ * jQuery UI Effects Slide 1.13.1
3785
3853
  * http://jqueryui.com
3786
3854
  *
3787
3855
  * Copyright jQuery Foundation and other contributors
@@ -3796,7 +3864,6 @@ var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
3796
3864
  //>>demos: http://jqueryui.com/effect/
3797
3865
 
3798
3866
 
3799
-
3800
3867
  var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
3801
3868
  var startClip, startRef,
3802
3869
  element = $( this ),
@@ -3843,7 +3910,7 @@ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, d
3843
3910
 
3844
3911
 
3845
3912
  /*!
3846
- * jQuery UI Effects Transfer 1.12.1
3913
+ * jQuery UI Effects Transfer 1.13.1
3847
3914
  * http://jqueryui.com
3848
3915
  *
3849
3916
  * Copyright jQuery Foundation and other contributors
@@ -3858,7 +3925,6 @@ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, d
3858
3925
  //>>demos: http://jqueryui.com/effect/
3859
3926
 
3860
3927
 
3861
-
3862
3928
  var effect;
3863
3929
  if ( $.uiBackCompat !== false ) {
3864
3930
  effect = $.effects.define( "transfer", function( options, done ) {
@@ -3869,7 +3935,7 @@ var effectsEffectTransfer = effect;
3869
3935
 
3870
3936
 
3871
3937
  /*!
3872
- * jQuery UI Focusable 1.12.1
3938
+ * jQuery UI Focusable 1.13.1
3873
3939
  * http://jqueryui.com
3874
3940
  *
3875
3941
  * Copyright jQuery Foundation and other contributors
@@ -3883,7 +3949,6 @@ var effectsEffectTransfer = effect;
3883
3949
  //>>docs: http://api.jqueryui.com/focusable-selector/
3884
3950
 
3885
3951
 
3886
-
3887
3952
  // Selectors
3888
3953
  $.ui.focusable = function( element, hasTabindex ) {
3889
3954
  var map, mapName, img, focusableIfVisible, fieldset,
@@ -3930,10 +3995,10 @@ function visible( element ) {
3930
3995
  element = element.parent();
3931
3996
  visibility = element.css( "visibility" );
3932
3997
  }
3933
- return visibility !== "hidden";
3998
+ return visibility === "visible";
3934
3999
  }
3935
4000
 
3936
- $.extend( $.expr[ ":" ], {
4001
+ $.extend( $.expr.pseudos, {
3937
4002
  focusable: function( element ) {
3938
4003
  return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
3939
4004
  }
@@ -3943,17 +4008,16 @@ var focusable = $.ui.focusable;
3943
4008
 
3944
4009
 
3945
4010
 
3946
-
3947
4011
  // Support: IE8 Only
3948
4012
  // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
3949
4013
  // with a string, so we need to find the proper form.
3950
- var form = $.fn.form = function() {
4014
+ var form = $.fn._form = function() {
3951
4015
  return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
3952
4016
  };
3953
4017
 
3954
4018
 
3955
4019
  /*!
3956
- * jQuery UI Form Reset Mixin 1.12.1
4020
+ * jQuery UI Form Reset Mixin 1.13.1
3957
4021
  * http://jqueryui.com
3958
4022
  *
3959
4023
  * Copyright jQuery Foundation and other contributors
@@ -3967,7 +4031,6 @@ var form = $.fn.form = function() {
3967
4031
  //>>docs: http://api.jqueryui.com/form-reset-mixin/
3968
4032
 
3969
4033
 
3970
-
3971
4034
  var formResetMixin = $.ui.formResetMixin = {
3972
4035
  _formResetHandler: function() {
3973
4036
  var form = $( this );
@@ -3982,7 +4045,7 @@ var formResetMixin = $.ui.formResetMixin = {
3982
4045
  },
3983
4046
 
3984
4047
  _bindFormResetHandler: function() {
3985
- this.form = this.element.form();
4048
+ this.form = this.element._form();
3986
4049
  if ( !this.form.length ) {
3987
4050
  return;
3988
4051
  }
@@ -4016,7 +4079,7 @@ var formResetMixin = $.ui.formResetMixin = {
4016
4079
 
4017
4080
 
4018
4081
  /*!
4019
- * jQuery UI Support for jQuery core 1.7.x 1.12.1
4082
+ * jQuery UI Support for jQuery core 1.8.x and newer 1.13.1
4020
4083
  * http://jqueryui.com
4021
4084
  *
4022
4085
  * Copyright jQuery Foundation and other contributors
@@ -4025,77 +4088,73 @@ var formResetMixin = $.ui.formResetMixin = {
4025
4088
  *
4026
4089
  */
4027
4090
 
4028
- //>>label: jQuery 1.7 Support
4091
+ //>>label: jQuery 1.8+ Support
4029
4092
  //>>group: Core
4030
- //>>description: Support version 1.7.x of jQuery core
4031
-
4032
-
4033
-
4034
- // Support: jQuery 1.7 only
4035
- // Not a great way to check versions, but since we only support 1.7+ and only
4036
- // need to detect <1.8, this is a simple check that should suffice. Checking
4037
- // for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0
4038
- // and we'll never reach 1.70.0 (if we do, we certainly won't be supporting
4039
- // 1.7 anymore). See #11197 for why we're not using feature detection.
4040
- if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {
4041
-
4042
- // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()
4043
- // Unlike jQuery Core 1.8+, these only support numeric values to set the
4044
- // dimensions in pixels
4045
- $.each( [ "Width", "Height" ], function( i, name ) {
4046
- var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
4047
- type = name.toLowerCase(),
4048
- orig = {
4049
- innerWidth: $.fn.innerWidth,
4050
- innerHeight: $.fn.innerHeight,
4051
- outerWidth: $.fn.outerWidth,
4052
- outerHeight: $.fn.outerHeight
4053
- };
4093
+ //>>description: Support version 1.8.x and newer of jQuery core
4054
4094
 
4055
- function reduce( elem, size, border, margin ) {
4056
- $.each( side, function() {
4057
- size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
4058
- if ( border ) {
4059
- size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
4060
- }
4061
- if ( margin ) {
4062
- size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
4063
- }
4064
- } );
4065
- return size;
4066
- }
4067
4095
 
4068
- $.fn[ "inner" + name ] = function( size ) {
4069
- if ( size === undefined ) {
4070
- return orig[ "inner" + name ].call( this );
4071
- }
4096
+ // Support: jQuery 1.9.x or older
4097
+ // $.expr[ ":" ] is deprecated.
4098
+ if ( !$.expr.pseudos ) {
4099
+ $.expr.pseudos = $.expr[ ":" ];
4100
+ }
4072
4101
 
4073
- return this.each( function() {
4074
- $( this ).css( type, reduce( this, size ) + "px" );
4075
- } );
4076
- };
4102
+ // Support: jQuery 1.11.x or older
4103
+ // $.unique has been renamed to $.uniqueSort
4104
+ if ( !$.uniqueSort ) {
4105
+ $.uniqueSort = $.unique;
4106
+ }
4107
+
4108
+ // Support: jQuery 2.2.x or older.
4109
+ // This method has been defined in jQuery 3.0.0.
4110
+ // Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
4111
+ if ( !$.escapeSelector ) {
4112
+
4113
+ // CSS string/identifier serialization
4114
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
4115
+ var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
4077
4116
 
4078
- $.fn[ "outer" + name ] = function( size, margin ) {
4079
- if ( typeof size !== "number" ) {
4080
- return orig[ "outer" + name ].call( this, size );
4117
+ var fcssescape = function( ch, asCodePoint ) {
4118
+ if ( asCodePoint ) {
4119
+
4120
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
4121
+ if ( ch === "\0" ) {
4122
+ return "\uFFFD";
4081
4123
  }
4082
4124
 
4083
- return this.each( function() {
4084
- $( this ).css( type, reduce( this, size, true, margin ) + "px" );
4085
- } );
4086
- };
4087
- } );
4125
+ // Control characters and (dependent upon position) numbers get escaped as code points
4126
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
4127
+ }
4088
4128
 
4089
- $.fn.addBack = function( selector ) {
4090
- return this.add( selector == null ?
4091
- this.prevObject : this.prevObject.filter( selector )
4092
- );
4129
+ // Other potentially-special ASCII characters get backslash-escaped
4130
+ return "\\" + ch;
4131
+ };
4132
+
4133
+ $.escapeSelector = function( sel ) {
4134
+ return ( sel + "" ).replace( rcssescape, fcssescape );
4093
4135
  };
4094
4136
  }
4095
4137
 
4138
+ // Support: jQuery 3.4.x or older
4139
+ // These methods have been defined in jQuery 3.5.0.
4140
+ if ( !$.fn.even || !$.fn.odd ) {
4141
+ $.fn.extend( {
4142
+ even: function() {
4143
+ return this.filter( function( i ) {
4144
+ return i % 2 === 0;
4145
+ } );
4146
+ },
4147
+ odd: function() {
4148
+ return this.filter( function( i ) {
4149
+ return i % 2 === 1;
4150
+ } );
4151
+ }
4152
+ } );
4153
+ }
4154
+
4096
4155
  ;
4097
4156
  /*!
4098
- * jQuery UI Keycode 1.12.1
4157
+ * jQuery UI Keycode 1.13.1
4099
4158
  * http://jqueryui.com
4100
4159
  *
4101
4160
  * Copyright jQuery Foundation and other contributors
@@ -4129,19 +4188,8 @@ var keycode = $.ui.keyCode = {
4129
4188
  };
4130
4189
 
4131
4190
 
4132
-
4133
-
4134
- // Internal use only
4135
- var escapeSelector = $.ui.escapeSelector = ( function() {
4136
- var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
4137
- return function( selector ) {
4138
- return selector.replace( selectorEscape, "\\$1" );
4139
- };
4140
- } )();
4141
-
4142
-
4143
4191
  /*!
4144
- * jQuery UI Labels 1.12.1
4192
+ * jQuery UI Labels 1.13.1
4145
4193
  * http://jqueryui.com
4146
4194
  *
4147
4195
  * Copyright jQuery Foundation and other contributors
@@ -4155,10 +4203,13 @@ var escapeSelector = $.ui.escapeSelector = ( function() {
4155
4203
  //>>docs: http://api.jqueryui.com/labels/
4156
4204
 
4157
4205
 
4158
-
4159
4206
  var labels = $.fn.labels = function() {
4160
4207
  var ancestor, selector, id, labels, ancestors;
4161
4208
 
4209
+ if ( !this.length ) {
4210
+ return this.pushStack( [] );
4211
+ }
4212
+
4162
4213
  // Check control.labels first
4163
4214
  if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
4164
4215
  return this.pushStack( this[ 0 ].labels );
@@ -4181,7 +4232,7 @@ var labels = $.fn.labels = function() {
4181
4232
  ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
4182
4233
 
4183
4234
  // Create a selector for the label based on the id
4184
- selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
4235
+ selector = "label[for='" + $.escapeSelector( id ) + "']";
4185
4236
 
4186
4237
  labels = labels.add( ancestors.find( selector ).addBack( selector ) );
4187
4238
 
@@ -4193,7 +4244,7 @@ var labels = $.fn.labels = function() {
4193
4244
 
4194
4245
 
4195
4246
  /*!
4196
- * jQuery UI Scroll Parent 1.12.1
4247
+ * jQuery UI Scroll Parent 1.13.1
4197
4248
  * http://jqueryui.com
4198
4249
  *
4199
4250
  * Copyright jQuery Foundation and other contributors
@@ -4207,7 +4258,6 @@ var labels = $.fn.labels = function() {
4207
4258
  //>>docs: http://api.jqueryui.com/scrollParent/
4208
4259
 
4209
4260
 
4210
-
4211
4261
  var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4212
4262
  var position = this.css( "position" ),
4213
4263
  excludeStaticParent = position === "absolute",
@@ -4228,7 +4278,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4228
4278
 
4229
4279
 
4230
4280
  /*!
4231
- * jQuery UI Tabbable 1.12.1
4281
+ * jQuery UI Tabbable 1.13.1
4232
4282
  * http://jqueryui.com
4233
4283
  *
4234
4284
  * Copyright jQuery Foundation and other contributors
@@ -4242,8 +4292,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4242
4292
  //>>docs: http://api.jqueryui.com/tabbable-selector/
4243
4293
 
4244
4294
 
4245
-
4246
- var tabbable = $.extend( $.expr[ ":" ], {
4295
+ var tabbable = $.extend( $.expr.pseudos, {
4247
4296
  tabbable: function( element ) {
4248
4297
  var tabIndex = $.attr( element, "tabindex" ),
4249
4298
  hasTabindex = tabIndex != null;
@@ -4253,7 +4302,7 @@ var tabbable = $.extend( $.expr[ ":" ], {
4253
4302
 
4254
4303
 
4255
4304
  /*!
4256
- * jQuery UI Unique ID 1.12.1
4305
+ * jQuery UI Unique ID 1.13.1
4257
4306
  * http://jqueryui.com
4258
4307
  *
4259
4308
  * Copyright jQuery Foundation and other contributors
@@ -4267,7 +4316,6 @@ var tabbable = $.extend( $.expr[ ":" ], {
4267
4316
  //>>docs: http://api.jqueryui.com/uniqueId/
4268
4317
 
4269
4318
 
4270
-
4271
4319
  var uniqueId = $.fn.extend( {
4272
4320
  uniqueId: ( function() {
4273
4321
  var uuid = 0;
@@ -4292,7 +4340,7 @@ var uniqueId = $.fn.extend( {
4292
4340
 
4293
4341
 
4294
4342
  /*!
4295
- * jQuery UI Accordion 1.12.1
4343
+ * jQuery UI Accordion 1.13.1
4296
4344
  * http://jqueryui.com
4297
4345
  *
4298
4346
  * Copyright jQuery Foundation and other contributors
@@ -4302,9 +4350,9 @@ var uniqueId = $.fn.extend( {
4302
4350
 
4303
4351
  //>>label: Accordion
4304
4352
  //>>group: Widgets
4305
- // jscs:disable maximumLineLength
4353
+ /* eslint-disable max-len */
4306
4354
  //>>description: Displays collapsible content panels for presenting information in a limited amount of space.
4307
- // jscs:enable maximumLineLength
4355
+ /* eslint-enable max-len */
4308
4356
  //>>docs: http://api.jqueryui.com/accordion/
4309
4357
  //>>demos: http://jqueryui.com/accordion/
4310
4358
  //>>css.structure: ../../themes/base/core.css
@@ -4312,9 +4360,8 @@ var uniqueId = $.fn.extend( {
4312
4360
  //>>css.theme: ../../themes/base/theme.css
4313
4361
 
4314
4362
 
4315
-
4316
4363
  var widgetsAccordion = $.widget( "ui.accordion", {
4317
- version: "1.12.1",
4364
+ version: "1.13.1",
4318
4365
  options: {
4319
4366
  active: 0,
4320
4367
  animate: {},
@@ -4325,7 +4372,9 @@ var widgetsAccordion = $.widget( "ui.accordion", {
4325
4372
  },
4326
4373
  collapsible: false,
4327
4374
  event: "click",
4328
- header: "> li > :first-child, > :not(li):even",
4375
+ header: function( elem ) {
4376
+ return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() );
4377
+ },
4329
4378
  heightStyle: "auto",
4330
4379
  icons: {
4331
4380
  activeHeader: "ui-icon-triangle-1-s",
@@ -4556,7 +4605,11 @@ var widgetsAccordion = $.widget( "ui.accordion", {
4556
4605
  var prevHeaders = this.headers,
4557
4606
  prevPanels = this.panels;
4558
4607
 
4559
- this.headers = this.element.find( this.options.header );
4608
+ if ( typeof this.options.header === "function" ) {
4609
+ this.headers = this.options.header( this.element );
4610
+ } else {
4611
+ this.headers = this.element.find( this.options.header );
4612
+ }
4560
4613
  this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
4561
4614
  "ui-state-default" );
4562
4615
 
@@ -4919,7 +4972,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
4919
4972
 
4920
4973
 
4921
4974
  /*!
4922
- * jQuery UI Menu 1.12.1
4975
+ * jQuery UI Menu 1.13.1
4923
4976
  * http://jqueryui.com
4924
4977
  *
4925
4978
  * Copyright jQuery Foundation and other contributors
@@ -4937,9 +4990,8 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
4937
4990
  //>>css.theme: ../../themes/base/theme.css
4938
4991
 
4939
4992
 
4940
-
4941
4993
  var widgetsMenu = $.widget( "ui.menu", {
4942
- version: "1.12.1",
4994
+ version: "1.13.1",
4943
4995
  defaultElement: "<ul>",
4944
4996
  delay: 300,
4945
4997
  options: {
@@ -4966,6 +5018,7 @@ var widgetsMenu = $.widget( "ui.menu", {
4966
5018
  // Flag used to prevent firing of the click handler
4967
5019
  // as the event bubbles up through nested menus
4968
5020
  this.mouseHandled = false;
5021
+ this.lastMousePosition = { x: null, y: null };
4969
5022
  this.element
4970
5023
  .uniqueId()
4971
5024
  .attr( {
@@ -4980,6 +5033,8 @@ var widgetsMenu = $.widget( "ui.menu", {
4980
5033
  // them (focus should always stay on UL during navigation).
4981
5034
  "mousedown .ui-menu-item": function( event ) {
4982
5035
  event.preventDefault();
5036
+
5037
+ this._activateItem( event );
4983
5038
  },
4984
5039
  "click .ui-menu-item": function( event ) {
4985
5040
  var target = $( event.target );
@@ -5009,36 +5064,15 @@ var widgetsMenu = $.widget( "ui.menu", {
5009
5064
  }
5010
5065
  }
5011
5066
  },
5012
- "mouseenter .ui-menu-item": function( event ) {
5013
-
5014
- // Ignore mouse events while typeahead is active, see #10458.
5015
- // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
5016
- // is over an item in the menu
5017
- if ( this.previousFilter ) {
5018
- return;
5019
- }
5020
-
5021
- var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
5022
- target = $( event.currentTarget );
5023
-
5024
- // Ignore bubbled events on parent items, see #11641
5025
- if ( actualTarget[ 0 ] !== target[ 0 ] ) {
5026
- return;
5027
- }
5028
-
5029
- // Remove ui-state-active class from siblings of the newly focused menu item
5030
- // to avoid a jump caused by adjacent elements both having a class with a border
5031
- this._removeClass( target.siblings().children( ".ui-state-active" ),
5032
- null, "ui-state-active" );
5033
- this.focus( event, target );
5034
- },
5067
+ "mouseenter .ui-menu-item": "_activateItem",
5068
+ "mousemove .ui-menu-item": "_activateItem",
5035
5069
  mouseleave: "collapseAll",
5036
5070
  "mouseleave .ui-menu": "collapseAll",
5037
5071
  focus: function( event, keepActiveItem ) {
5038
5072
 
5039
5073
  // If there's already an active item, keep it active
5040
5074
  // If not, activate the first item
5041
- var item = this.active || this.element.find( this.options.items ).eq( 0 );
5075
+ var item = this.active || this._menuItems().first();
5042
5076
 
5043
5077
  if ( !keepActiveItem ) {
5044
5078
  this.focus( event, item );
@@ -5064,7 +5098,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5064
5098
  this._on( this.document, {
5065
5099
  click: function( event ) {
5066
5100
  if ( this._closeOnDocumentClick( event ) ) {
5067
- this.collapseAll( event );
5101
+ this.collapseAll( event, true );
5068
5102
  }
5069
5103
 
5070
5104
  // Reset the mouseHandled flag
@@ -5073,6 +5107,46 @@ var widgetsMenu = $.widget( "ui.menu", {
5073
5107
  } );
5074
5108
  },
5075
5109
 
5110
+ _activateItem: function( event ) {
5111
+
5112
+ // Ignore mouse events while typeahead is active, see #10458.
5113
+ // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
5114
+ // is over an item in the menu
5115
+ if ( this.previousFilter ) {
5116
+ return;
5117
+ }
5118
+
5119
+ // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)
5120
+ if ( event.clientX === this.lastMousePosition.x &&
5121
+ event.clientY === this.lastMousePosition.y ) {
5122
+ return;
5123
+ }
5124
+
5125
+ this.lastMousePosition = {
5126
+ x: event.clientX,
5127
+ y: event.clientY
5128
+ };
5129
+
5130
+ var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
5131
+ target = $( event.currentTarget );
5132
+
5133
+ // Ignore bubbled events on parent items, see #11641
5134
+ if ( actualTarget[ 0 ] !== target[ 0 ] ) {
5135
+ return;
5136
+ }
5137
+
5138
+ // If the item is already active, there's nothing to do
5139
+ if ( target.is( ".ui-state-active" ) ) {
5140
+ return;
5141
+ }
5142
+
5143
+ // Remove ui-state-active class from siblings of the newly focused menu item
5144
+ // to avoid a jump caused by adjacent elements both having a class with a border
5145
+ this._removeClass( target.siblings().children( ".ui-state-active" ),
5146
+ null, "ui-state-active" );
5147
+ this.focus( event, target );
5148
+ },
5149
+
5076
5150
  _destroy: function() {
5077
5151
  var items = this.element.find( ".ui-menu-item" )
5078
5152
  .removeAttr( "role aria-disabled" ),
@@ -5404,7 +5478,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5404
5478
  this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
5405
5479
 
5406
5480
  this.activeMenu = currentMenu;
5407
- }, this.delay );
5481
+ }, all ? 0 : this.delay );
5408
5482
  },
5409
5483
 
5410
5484
  // With no arguments, closes the currently active menu - if nothing is active
@@ -5440,11 +5514,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5440
5514
  },
5441
5515
 
5442
5516
  expand: function( event ) {
5443
- var newItem = this.active &&
5444
- this.active
5445
- .children( ".ui-menu " )
5446
- .find( this.options.items )
5447
- .first();
5517
+ var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first();
5448
5518
 
5449
5519
  if ( newItem && newItem.length ) {
5450
5520
  this._open( newItem.parent() );
@@ -5472,21 +5542,27 @@ var widgetsMenu = $.widget( "ui.menu", {
5472
5542
  return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
5473
5543
  },
5474
5544
 
5545
+ _menuItems: function( menu ) {
5546
+ return ( menu || this.element )
5547
+ .find( this.options.items )
5548
+ .filter( ".ui-menu-item" );
5549
+ },
5550
+
5475
5551
  _move: function( direction, filter, event ) {
5476
5552
  var next;
5477
5553
  if ( this.active ) {
5478
5554
  if ( direction === "first" || direction === "last" ) {
5479
5555
  next = this.active
5480
5556
  [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
5481
- .eq( -1 );
5557
+ .last();
5482
5558
  } else {
5483
5559
  next = this.active
5484
5560
  [ direction + "All" ]( ".ui-menu-item" )
5485
- .eq( 0 );
5561
+ .first();
5486
5562
  }
5487
5563
  }
5488
5564
  if ( !next || !next.length || !this.active ) {
5489
- next = this.activeMenu.find( this.options.items )[ filter ]();
5565
+ next = this._menuItems( this.activeMenu )[ filter ]();
5490
5566
  }
5491
5567
 
5492
5568
  this.focus( event, next );
@@ -5504,7 +5580,13 @@ var widgetsMenu = $.widget( "ui.menu", {
5504
5580
  }
5505
5581
  if ( this._hasScroll() ) {
5506
5582
  base = this.active.offset().top;
5507
- height = this.element.height();
5583
+ height = this.element.innerHeight();
5584
+
5585
+ // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
5586
+ if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
5587
+ height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
5588
+ }
5589
+
5508
5590
  this.active.nextAll( ".ui-menu-item" ).each( function() {
5509
5591
  item = $( this );
5510
5592
  return item.offset().top - base - height < 0;
@@ -5512,7 +5594,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5512
5594
 
5513
5595
  this.focus( event, item );
5514
5596
  } else {
5515
- this.focus( event, this.activeMenu.find( this.options.items )
5597
+ this.focus( event, this._menuItems( this.activeMenu )
5516
5598
  [ !this.active ? "first" : "last" ]() );
5517
5599
  }
5518
5600
  },
@@ -5528,7 +5610,13 @@ var widgetsMenu = $.widget( "ui.menu", {
5528
5610
  }
5529
5611
  if ( this._hasScroll() ) {
5530
5612
  base = this.active.offset().top;
5531
- height = this.element.height();
5613
+ height = this.element.innerHeight();
5614
+
5615
+ // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
5616
+ if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
5617
+ height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
5618
+ }
5619
+
5532
5620
  this.active.prevAll( ".ui-menu-item" ).each( function() {
5533
5621
  item = $( this );
5534
5622
  return item.offset().top - base + height > 0;
@@ -5536,7 +5624,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5536
5624
 
5537
5625
  this.focus( event, item );
5538
5626
  } else {
5539
- this.focus( event, this.activeMenu.find( this.options.items ).first() );
5627
+ this.focus( event, this._menuItems( this.activeMenu ).first() );
5540
5628
  }
5541
5629
  },
5542
5630
 
@@ -5567,14 +5655,15 @@ var widgetsMenu = $.widget( "ui.menu", {
5567
5655
  .filter( ".ui-menu-item" )
5568
5656
  .filter( function() {
5569
5657
  return regex.test(
5570
- $.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
5658
+ String.prototype.trim.call(
5659
+ $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
5571
5660
  } );
5572
5661
  }
5573
5662
  } );
5574
5663
 
5575
5664
 
5576
5665
  /*!
5577
- * jQuery UI Autocomplete 1.12.1
5666
+ * jQuery UI Autocomplete 1.13.1
5578
5667
  * http://jqueryui.com
5579
5668
  *
5580
5669
  * Copyright jQuery Foundation and other contributors
@@ -5592,9 +5681,8 @@ var widgetsMenu = $.widget( "ui.menu", {
5592
5681
  //>>css.theme: ../../themes/base/theme.css
5593
5682
 
5594
5683
 
5595
-
5596
5684
  $.widget( "ui.autocomplete", {
5597
- version: "1.12.1",
5685
+ version: "1.13.1",
5598
5686
  defaultElement: "<input>",
5599
5687
  options: {
5600
5688
  appendTo: null,
@@ -5620,6 +5708,7 @@ $.widget( "ui.autocomplete", {
5620
5708
 
5621
5709
  requestIndex: 0,
5622
5710
  pending: 0,
5711
+ liveRegionTimer: null,
5623
5712
 
5624
5713
  _create: function() {
5625
5714
 
@@ -5757,11 +5846,6 @@ $.widget( "ui.autocomplete", {
5757
5846
  this.previous = this._value();
5758
5847
  },
5759
5848
  blur: function( event ) {
5760
- if ( this.cancelBlur ) {
5761
- delete this.cancelBlur;
5762
- return;
5763
- }
5764
-
5765
5849
  clearTimeout( this.searching );
5766
5850
  this.close( event );
5767
5851
  this._change( event );
@@ -5777,31 +5861,24 @@ $.widget( "ui.autocomplete", {
5777
5861
  role: null
5778
5862
  } )
5779
5863
  .hide()
5864
+
5865
+ // Support: IE 11 only, Edge <= 14
5866
+ // For other browsers, we preventDefault() on the mousedown event
5867
+ // to keep the dropdown from taking focus from the input. This doesn't
5868
+ // work for IE/Edge, causing problems with selection and scrolling (#9638)
5869
+ // Happily, IE and Edge support an "unselectable" attribute that
5870
+ // prevents an element from receiving focus, exactly what we want here.
5871
+ .attr( {
5872
+ "unselectable": "on"
5873
+ } )
5780
5874
  .menu( "instance" );
5781
5875
 
5782
5876
  this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
5783
5877
  this._on( this.menu.element, {
5784
5878
  mousedown: function( event ) {
5785
5879
 
5786
- // prevent moving focus out of the text field
5880
+ // Prevent moving focus out of the text field
5787
5881
  event.preventDefault();
5788
-
5789
- // IE doesn't prevent moving focus even with event.preventDefault()
5790
- // so we set a flag to know when we should ignore the blur event
5791
- this.cancelBlur = true;
5792
- this._delay( function() {
5793
- delete this.cancelBlur;
5794
-
5795
- // Support: IE 8 only
5796
- // Right clicking a menu item or selecting text from the menu items will
5797
- // result in focus moving out of the input. However, we've already received
5798
- // and ignored the blur event because of the cancelBlur flag set above. So
5799
- // we restore focus to ensure that the menu closes properly based on the user's
5800
- // next actions.
5801
- if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
5802
- this.element.trigger( "focus" );
5803
- }
5804
- } );
5805
5882
  },
5806
5883
  menufocus: function( event, ui ) {
5807
5884
  var label, item;
@@ -5832,9 +5909,11 @@ $.widget( "ui.autocomplete", {
5832
5909
 
5833
5910
  // Announce the value in the liveRegion
5834
5911
  label = ui.item.attr( "aria-label" ) || item.value;
5835
- if ( label && $.trim( label ).length ) {
5836
- this.liveRegion.children().hide();
5837
- $( "<div>" ).text( label ).appendTo( this.liveRegion );
5912
+ if ( label && String.prototype.trim.call( label ).length ) {
5913
+ clearTimeout( this.liveRegionTimer );
5914
+ this.liveRegionTimer = this._delay( function() {
5915
+ this.liveRegion.html( $( "<div>" ).text( label ) );
5916
+ }, 100 );
5838
5917
  }
5839
5918
  },
5840
5919
  menuselect: function( event, ui ) {
@@ -5944,7 +6023,7 @@ $.widget( "ui.autocomplete", {
5944
6023
  _initSource: function() {
5945
6024
  var array, url,
5946
6025
  that = this;
5947
- if ( $.isArray( this.options.source ) ) {
6026
+ if ( Array.isArray( this.options.source ) ) {
5948
6027
  array = this.options.source;
5949
6028
  this.source = function( request, response ) {
5950
6029
  response( $.ui.autocomplete.filter( array, request.term ) );
@@ -6016,7 +6095,7 @@ $.widget( "ui.autocomplete", {
6016
6095
  _response: function() {
6017
6096
  var index = ++this.requestIndex;
6018
6097
 
6019
- return $.proxy( function( content ) {
6098
+ return function( content ) {
6020
6099
  if ( index === this.requestIndex ) {
6021
6100
  this.__response( content );
6022
6101
  }
@@ -6025,7 +6104,7 @@ $.widget( "ui.autocomplete", {
6025
6104
  if ( !this.pending ) {
6026
6105
  this._removeClass( "ui-autocomplete-loading" );
6027
6106
  }
6028
- }, this );
6107
+ }.bind( this );
6029
6108
  },
6030
6109
 
6031
6110
  __response: function( content ) {
@@ -6185,7 +6264,7 @@ $.widget( "ui.autocomplete", {
6185
6264
  var editable = element.prop( "contentEditable" );
6186
6265
 
6187
6266
  if ( editable === "inherit" ) {
6188
- return this._isContentEditable( element.parent() );
6267
+ return this._isContentEditable( element.parent() );
6189
6268
  }
6190
6269
 
6191
6270
  return editable === "true";
@@ -6229,8 +6308,10 @@ $.widget( "ui.autocomplete", $.ui.autocomplete, {
6229
6308
  } else {
6230
6309
  message = this.options.messages.noResults;
6231
6310
  }
6232
- this.liveRegion.children().hide();
6233
- $( "<div>" ).text( message ).appendTo( this.liveRegion );
6311
+ clearTimeout( this.liveRegionTimer );
6312
+ this.liveRegionTimer = this._delay( function() {
6313
+ this.liveRegion.html( $( "<div>" ).text( message ) );
6314
+ }, 100 );
6234
6315
  }
6235
6316
  } );
6236
6317
 
@@ -6238,7 +6319,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
6238
6319
 
6239
6320
 
6240
6321
  /*!
6241
- * jQuery UI Controlgroup 1.12.1
6322
+ * jQuery UI Controlgroup 1.13.1
6242
6323
  * http://jqueryui.com
6243
6324
  *
6244
6325
  * Copyright jQuery Foundation and other contributors
@@ -6259,7 +6340,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
6259
6340
  var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
6260
6341
 
6261
6342
  var widgetsControlgroup = $.widget( "ui.controlgroup", {
6262
- version: "1.12.1",
6343
+ version: "1.13.1",
6263
6344
  defaultElement: "<div>",
6264
6345
  options: {
6265
6346
  direction: "horizontal",
@@ -6376,7 +6457,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
6376
6457
  } );
6377
6458
  } );
6378
6459
 
6379
- this.childWidgets = $( $.unique( childWidgets ) );
6460
+ this.childWidgets = $( $.uniqueSort( childWidgets ) );
6380
6461
  this._addClass( this.childWidgets, "ui-controlgroup-item" );
6381
6462
  },
6382
6463
 
@@ -6460,7 +6541,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
6460
6541
  var result = {};
6461
6542
  $.each( classes, function( key ) {
6462
6543
  var current = instance.options.classes[ key ] || "";
6463
- current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
6544
+ current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) );
6464
6545
  result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
6465
6546
  } );
6466
6547
  return result;
@@ -6523,7 +6604,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
6523
6604
  } );
6524
6605
 
6525
6606
  /*!
6526
- * jQuery UI Checkboxradio 1.12.1
6607
+ * jQuery UI Checkboxradio 1.13.1
6527
6608
  * http://jqueryui.com
6528
6609
  *
6529
6610
  * Copyright jQuery Foundation and other contributors
@@ -6542,9 +6623,8 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
6542
6623
  //>>css.theme: ../../themes/base/theme.css
6543
6624
 
6544
6625
 
6545
-
6546
6626
  $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6547
- version: "1.12.1",
6627
+ version: "1.13.1",
6548
6628
  options: {
6549
6629
  disabled: null,
6550
6630
  label: null,
@@ -6623,9 +6703,6 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6623
6703
 
6624
6704
  if ( checked ) {
6625
6705
  this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
6626
- if ( this.icon ) {
6627
- this._addClass( this.icon, null, "ui-state-hover" );
6628
- }
6629
6706
  }
6630
6707
 
6631
6708
  this._on( {
@@ -6660,7 +6737,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6660
6737
  _getRadioGroup: function() {
6661
6738
  var group;
6662
6739
  var name = this.element[ 0 ].name;
6663
- var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
6740
+ var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
6664
6741
 
6665
6742
  if ( !name ) {
6666
6743
  return $( [] );
@@ -6672,7 +6749,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6672
6749
 
6673
6750
  // Not inside a form, check all inputs that also are not inside a form
6674
6751
  group = $( nameSelector ).filter( function() {
6675
- return $( this ).form().length === 0;
6752
+ return $( this )._form().length === 0;
6676
6753
  } );
6677
6754
  }
6678
6755
 
@@ -6793,7 +6870,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
6793
6870
 
6794
6871
 
6795
6872
  /*!
6796
- * jQuery UI Button 1.12.1
6873
+ * jQuery UI Button 1.13.1
6797
6874
  * http://jqueryui.com
6798
6875
  *
6799
6876
  * Copyright jQuery Foundation and other contributors
@@ -6811,9 +6888,8 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
6811
6888
  //>>css.theme: ../../themes/base/theme.css
6812
6889
 
6813
6890
 
6814
-
6815
6891
  $.widget( "ui.button", {
6816
- version: "1.12.1",
6892
+ version: "1.13.1",
6817
6893
  defaultElement: "<button>",
6818
6894
  options: {
6819
6895
  classes: {
@@ -7037,7 +7113,7 @@ $.widget( "ui.button", {
7037
7113
  this._toggleClass( null, "ui-state-disabled", value );
7038
7114
  this.element[ 0 ].disabled = value;
7039
7115
  if ( value ) {
7040
- this.element.blur();
7116
+ this.element.trigger( "blur" );
7041
7117
  }
7042
7118
  }
7043
7119
  },
@@ -7116,22 +7192,82 @@ if ( $.uiBackCompat !== false ) {
7116
7192
  } );
7117
7193
 
7118
7194
  $.fn.button = ( function( orig ) {
7119
- return function() {
7120
- if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
7121
- ( this.length && this[ 0 ].tagName === "INPUT" && (
7122
- this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
7123
- ) ) ) {
7124
- return orig.apply( this, arguments );
7125
- }
7126
- if ( !$.ui.checkboxradio ) {
7127
- $.error( "Checkboxradio widget missing" );
7128
- }
7129
- if ( arguments.length === 0 ) {
7130
- return this.checkboxradio( {
7131
- "icon": false
7195
+ return function( options ) {
7196
+ var isMethodCall = typeof options === "string";
7197
+ var args = Array.prototype.slice.call( arguments, 1 );
7198
+ var returnValue = this;
7199
+
7200
+ if ( isMethodCall ) {
7201
+
7202
+ // If this is an empty collection, we need to have the instance method
7203
+ // return undefined instead of the jQuery instance
7204
+ if ( !this.length && options === "instance" ) {
7205
+ returnValue = undefined;
7206
+ } else {
7207
+ this.each( function() {
7208
+ var methodValue;
7209
+ var type = $( this ).attr( "type" );
7210
+ var name = type !== "checkbox" && type !== "radio" ?
7211
+ "button" :
7212
+ "checkboxradio";
7213
+ var instance = $.data( this, "ui-" + name );
7214
+
7215
+ if ( options === "instance" ) {
7216
+ returnValue = instance;
7217
+ return false;
7218
+ }
7219
+
7220
+ if ( !instance ) {
7221
+ return $.error( "cannot call methods on button" +
7222
+ " prior to initialization; " +
7223
+ "attempted to call method '" + options + "'" );
7224
+ }
7225
+
7226
+ if ( typeof instance[ options ] !== "function" ||
7227
+ options.charAt( 0 ) === "_" ) {
7228
+ return $.error( "no such method '" + options + "' for button" +
7229
+ " widget instance" );
7230
+ }
7231
+
7232
+ methodValue = instance[ options ].apply( instance, args );
7233
+
7234
+ if ( methodValue !== instance && methodValue !== undefined ) {
7235
+ returnValue = methodValue && methodValue.jquery ?
7236
+ returnValue.pushStack( methodValue.get() ) :
7237
+ methodValue;
7238
+ return false;
7239
+ }
7240
+ } );
7241
+ }
7242
+ } else {
7243
+
7244
+ // Allow multiple hashes to be passed on init
7245
+ if ( args.length ) {
7246
+ options = $.widget.extend.apply( null, [ options ].concat( args ) );
7247
+ }
7248
+
7249
+ this.each( function() {
7250
+ var type = $( this ).attr( "type" );
7251
+ var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio";
7252
+ var instance = $.data( this, "ui-" + name );
7253
+
7254
+ if ( instance ) {
7255
+ instance.option( options || {} );
7256
+ if ( instance._init ) {
7257
+ instance._init();
7258
+ }
7259
+ } else {
7260
+ if ( name === "button" ) {
7261
+ orig.call( $( this ), options );
7262
+ return;
7263
+ }
7264
+
7265
+ $( this ).checkboxradio( $.extend( { icon: false }, options ) );
7266
+ }
7132
7267
  } );
7133
7268
  }
7134
- return this.checkboxradio.apply( this, arguments );
7269
+
7270
+ return returnValue;
7135
7271
  };
7136
7272
  } )( $.fn.button );
7137
7273
 
@@ -7158,10 +7294,9 @@ if ( $.uiBackCompat !== false ) {
7158
7294
  var widgetsButton = $.ui.button;
7159
7295
 
7160
7296
 
7161
- // jscs:disable maximumLineLength
7162
- /* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
7297
+ /* eslint-disable max-len, camelcase */
7163
7298
  /*!
7164
- * jQuery UI Datepicker 1.12.1
7299
+ * jQuery UI Datepicker 1.13.1
7165
7300
  * http://jqueryui.com
7166
7301
  *
7167
7302
  * Copyright jQuery Foundation and other contributors
@@ -7179,8 +7314,7 @@ var widgetsButton = $.ui.button;
7179
7314
  //>>css.theme: ../../themes/base/theme.css
7180
7315
 
7181
7316
 
7182
-
7183
- $.extend( $.ui, { datepicker: { version: "1.12.1" } } );
7317
+ $.extend( $.ui, { datepicker: { version: "1.13.1" } } );
7184
7318
 
7185
7319
  var datepicker_instActive;
7186
7320
 
@@ -7208,6 +7342,7 @@ function datepicker_getZindex( elem ) {
7208
7342
 
7209
7343
  return 0;
7210
7344
  }
7345
+
7211
7346
  /* Date picker manager.
7212
7347
  Use the singleton instance of this class, $.datepicker, to interact with the date picker.
7213
7348
  Settings for (groups of) date pickers are maintained in an instance object,
@@ -7234,18 +7369,20 @@ function Datepicker() {
7234
7369
  prevText: "Prev", // Display text for previous month link
7235
7370
  nextText: "Next", // Display text for next month link
7236
7371
  currentText: "Today", // Display text for current month link
7237
- monthNames: [ "January","February","March","April","May","June",
7238
- "July","August","September","October","November","December" ], // Names of months for drop-down and formatting
7372
+ monthNames: [ "January", "February", "March", "April", "May", "June",
7373
+ "July", "August", "September", "October", "November", "December" ], // Names of months for drop-down and formatting
7239
7374
  monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
7240
7375
  dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
7241
7376
  dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
7242
- dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday
7377
+ dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ], // Column headings for days starting at Sunday
7243
7378
  weekHeader: "Wk", // Column header for week of the year
7244
7379
  dateFormat: "mm/dd/yy", // See format options on parseDate
7245
7380
  firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
7246
7381
  isRTL: false, // True if right-to-left language, false if left-to-right
7247
7382
  showMonthAfterYear: false, // True if the year select precedes month, false for month then year
7248
- yearSuffix: "" // Additional text to append to the year in the month headers
7383
+ yearSuffix: "", // Additional text to append to the year in the month headers,
7384
+ selectMonthLabel: "Select month", // Invisible label for month selector
7385
+ selectYearLabel: "Select year" // Invisible label for year selector
7249
7386
  };
7250
7387
  this._defaults = { // Global defaults for all the date picker instances
7251
7388
  showOn: "focus", // "focus" for popup on focus,
@@ -7286,6 +7423,7 @@ function Datepicker() {
7286
7423
  onSelect: null, // Define a callback function when a date is selected
7287
7424
  onChangeMonthYear: null, // Define a callback function when the month or year is changed
7288
7425
  onClose: null, // Define a callback function when the datepicker is closed
7426
+ onUpdateDatepicker: null, // Define a callback function when the datepicker is updated
7289
7427
  numberOfMonths: 1, // Number of months to show at a time
7290
7428
  showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
7291
7429
  stepMonths: 1, // Number of months to step back/forward
@@ -7304,6 +7442,7 @@ function Datepicker() {
7304
7442
  }
7305
7443
 
7306
7444
  $.extend( Datepicker.prototype, {
7445
+
7307
7446
  /* Class name added to elements to indicate already configured with a date picker. */
7308
7447
  markerClassName: "hasDatepicker",
7309
7448
 
@@ -7386,7 +7525,9 @@ $.extend( Datepicker.prototype, {
7386
7525
  inst.append.remove();
7387
7526
  }
7388
7527
  if ( appendText ) {
7389
- inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" );
7528
+ inst.append = $( "<span>" )
7529
+ .addClass( this._appendClass )
7530
+ .text( appendText );
7390
7531
  input[ isRTL ? "before" : "after" ]( inst.append );
7391
7532
  }
7392
7533
 
@@ -7403,12 +7544,32 @@ $.extend( Datepicker.prototype, {
7403
7544
  if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
7404
7545
  buttonText = this._get( inst, "buttonText" );
7405
7546
  buttonImage = this._get( inst, "buttonImage" );
7406
- inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?
7407
- $( "<img/>" ).addClass( this._triggerClass ).
7408
- attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :
7409
- $( "<button type='button'></button>" ).addClass( this._triggerClass ).
7410
- html( !buttonImage ? buttonText : $( "<img/>" ).attr(
7411
- { src:buttonImage, alt:buttonText, title:buttonText } ) ) );
7547
+
7548
+ if ( this._get( inst, "buttonImageOnly" ) ) {
7549
+ inst.trigger = $( "<img>" )
7550
+ .addClass( this._triggerClass )
7551
+ .attr( {
7552
+ src: buttonImage,
7553
+ alt: buttonText,
7554
+ title: buttonText
7555
+ } );
7556
+ } else {
7557
+ inst.trigger = $( "<button type='button'>" )
7558
+ .addClass( this._triggerClass );
7559
+ if ( buttonImage ) {
7560
+ inst.trigger.html(
7561
+ $( "<img>" )
7562
+ .attr( {
7563
+ src: buttonImage,
7564
+ alt: buttonText,
7565
+ title: buttonText
7566
+ } )
7567
+ );
7568
+ } else {
7569
+ inst.trigger.text( buttonText );
7570
+ }
7571
+ }
7572
+
7412
7573
  input[ isRTL ? "before" : "after" ]( inst.trigger );
7413
7574
  inst.trigger.on( "click", function() {
7414
7575
  if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
@@ -7554,6 +7715,7 @@ $.extend( Datepicker.prototype, {
7554
7715
 
7555
7716
  if ( datepicker_instActive === inst ) {
7556
7717
  datepicker_instActive = null;
7718
+ this._curInst = null;
7557
7719
  }
7558
7720
  },
7559
7721
 
@@ -7573,7 +7735,9 @@ $.extend( Datepicker.prototype, {
7573
7735
  if ( nodeName === "input" ) {
7574
7736
  target.disabled = false;
7575
7737
  inst.trigger.filter( "button" ).
7576
- each( function() { this.disabled = false; } ).end().
7738
+ each( function() {
7739
+ this.disabled = false;
7740
+ } ).end().
7577
7741
  filter( "img" ).css( { opacity: "1.0", cursor: "" } );
7578
7742
  } else if ( nodeName === "div" || nodeName === "span" ) {
7579
7743
  inline = $target.children( "." + this._inlineClass );
@@ -7582,7 +7746,11 @@ $.extend( Datepicker.prototype, {
7582
7746
  prop( "disabled", false );
7583
7747
  }
7584
7748
  this._disabledInputs = $.map( this._disabledInputs,
7585
- function( value ) { return ( value === target ? null : value ); } ); // delete entry
7749
+
7750
+ // Delete entry
7751
+ function( value ) {
7752
+ return ( value === target ? null : value );
7753
+ } );
7586
7754
  },
7587
7755
 
7588
7756
  /* Disable the date picker to a jQuery selection.
@@ -7601,7 +7769,9 @@ $.extend( Datepicker.prototype, {
7601
7769
  if ( nodeName === "input" ) {
7602
7770
  target.disabled = true;
7603
7771
  inst.trigger.filter( "button" ).
7604
- each( function() { this.disabled = true; } ).end().
7772
+ each( function() {
7773
+ this.disabled = true;
7774
+ } ).end().
7605
7775
  filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
7606
7776
  } else if ( nodeName === "div" || nodeName === "span" ) {
7607
7777
  inline = $target.children( "." + this._inlineClass );
@@ -7610,7 +7780,11 @@ $.extend( Datepicker.prototype, {
7610
7780
  prop( "disabled", true );
7611
7781
  }
7612
7782
  this._disabledInputs = $.map( this._disabledInputs,
7613
- function( value ) { return ( value === target ? null : value ); } ); // delete entry
7783
+
7784
+ // Delete entry
7785
+ function( value ) {
7786
+ return ( value === target ? null : value );
7787
+ } );
7614
7788
  this._disabledInputs[ this._disabledInputs.length ] = target;
7615
7789
  },
7616
7790
 
@@ -7638,8 +7812,7 @@ $.extend( Datepicker.prototype, {
7638
7812
  _getInst: function( target ) {
7639
7813
  try {
7640
7814
  return $.data( target, "datepicker" );
7641
- }
7642
- catch ( err ) {
7815
+ } catch ( err ) {
7643
7816
  throw "Missing instance data for this datepicker";
7644
7817
  }
7645
7818
  },
@@ -7872,8 +8045,7 @@ $.extend( Datepicker.prototype, {
7872
8045
  $.datepicker._updateAlternate( inst );
7873
8046
  $.datepicker._updateDatepicker( inst );
7874
8047
  }
7875
- }
7876
- catch ( err ) {
8048
+ } catch ( err ) {
7877
8049
  }
7878
8050
  }
7879
8051
  return true;
@@ -7978,7 +8150,8 @@ $.extend( Datepicker.prototype, {
7978
8150
  numMonths = this._getNumberOfMonths( inst ),
7979
8151
  cols = numMonths[ 1 ],
7980
8152
  width = 17,
7981
- activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
8153
+ activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ),
8154
+ onUpdateDatepicker = $.datepicker._get( inst, "onUpdateDatepicker" );
7982
8155
 
7983
8156
  if ( activeCell.length > 0 ) {
7984
8157
  datepicker_handleMouseover.apply( activeCell.get( 0 ) );
@@ -8004,11 +8177,15 @@ $.extend( Datepicker.prototype, {
8004
8177
 
8005
8178
  //assure that inst.yearshtml didn't change.
8006
8179
  if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
8007
- inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
8180
+ inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml );
8008
8181
  }
8009
8182
  origyearshtml = inst.yearshtml = null;
8010
8183
  }, 0 );
8011
8184
  }
8185
+
8186
+ if ( onUpdateDatepicker ) {
8187
+ onUpdateDatepicker.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst ] );
8188
+ }
8012
8189
  },
8013
8190
 
8014
8191
  // #6694 - don't focus the input if it's already focused
@@ -8046,7 +8223,7 @@ $.extend( Datepicker.prototype, {
8046
8223
  inst = this._getInst( obj ),
8047
8224
  isRTL = this._get( inst, "isRTL" );
8048
8225
 
8049
- while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {
8226
+ while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.pseudos.hidden( obj ) ) ) {
8050
8227
  obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
8051
8228
  }
8052
8229
 
@@ -8134,9 +8311,7 @@ $.extend( Datepicker.prototype, {
8134
8311
  if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
8135
8312
  return;
8136
8313
  }
8137
- this._adjustInstDate( inst, offset +
8138
- ( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning
8139
- period );
8314
+ this._adjustInstDate( inst, offset, period );
8140
8315
  this._updateDatepicker( inst );
8141
8316
  },
8142
8317
 
@@ -8183,7 +8358,7 @@ $.extend( Datepicker.prototype, {
8183
8358
  }
8184
8359
 
8185
8360
  inst = this._getInst( target[ 0 ] );
8186
- inst.selectedDay = inst.currentDay = $( "a", td ).html();
8361
+ inst.selectedDay = inst.currentDay = parseInt( $( "a", td ).attr( "data-date" ) );
8187
8362
  inst.selectedMonth = inst.currentMonth = month;
8188
8363
  inst.selectedYear = inst.currentYear = year;
8189
8364
  this._selectDate( id, this._formatDate( inst,
@@ -8236,7 +8411,7 @@ $.extend( Datepicker.prototype, {
8236
8411
  altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
8237
8412
  date = this._getDate( inst );
8238
8413
  dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
8239
- $( altField ).val( dateStr );
8414
+ $( document ).find( altField ).val( dateStr );
8240
8415
  }
8241
8416
  },
8242
8417
 
@@ -8675,8 +8850,7 @@ $.extend( Datepicker.prototype, {
8675
8850
  try {
8676
8851
  return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
8677
8852
  offset, $.datepicker._getFormatConfig( inst ) );
8678
- }
8679
- catch ( e ) {
8853
+ } catch ( e ) {
8680
8854
 
8681
8855
  // Ignore
8682
8856
  }
@@ -8850,32 +9024,104 @@ $.extend( Datepicker.prototype, {
8850
9024
  this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
8851
9025
  this._getFormatConfig( inst ) ) );
8852
9026
 
8853
- prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?
8854
- "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
8855
- " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :
8856
- ( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) );
9027
+ if ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ) {
9028
+ prev = $( "<a>" )
9029
+ .attr( {
9030
+ "class": "ui-datepicker-prev ui-corner-all",
9031
+ "data-handler": "prev",
9032
+ "data-event": "click",
9033
+ title: prevText
9034
+ } )
9035
+ .append(
9036
+ $( "<span>" )
9037
+ .addClass( "ui-icon ui-icon-circle-triangle-" +
9038
+ ( isRTL ? "e" : "w" ) )
9039
+ .text( prevText )
9040
+ )[ 0 ].outerHTML;
9041
+ } else if ( hideIfNoPrevNext ) {
9042
+ prev = "";
9043
+ } else {
9044
+ prev = $( "<a>" )
9045
+ .attr( {
9046
+ "class": "ui-datepicker-prev ui-corner-all ui-state-disabled",
9047
+ title: prevText
9048
+ } )
9049
+ .append(
9050
+ $( "<span>" )
9051
+ .addClass( "ui-icon ui-icon-circle-triangle-" +
9052
+ ( isRTL ? "e" : "w" ) )
9053
+ .text( prevText )
9054
+ )[ 0 ].outerHTML;
9055
+ }
8857
9056
 
8858
9057
  nextText = this._get( inst, "nextText" );
8859
9058
  nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
8860
9059
  this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
8861
9060
  this._getFormatConfig( inst ) ) );
8862
9061
 
8863
- next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?
8864
- "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
8865
- " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :
8866
- ( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) );
9062
+ if ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ) {
9063
+ next = $( "<a>" )
9064
+ .attr( {
9065
+ "class": "ui-datepicker-next ui-corner-all",
9066
+ "data-handler": "next",
9067
+ "data-event": "click",
9068
+ title: nextText
9069
+ } )
9070
+ .append(
9071
+ $( "<span>" )
9072
+ .addClass( "ui-icon ui-icon-circle-triangle-" +
9073
+ ( isRTL ? "w" : "e" ) )
9074
+ .text( nextText )
9075
+ )[ 0 ].outerHTML;
9076
+ } else if ( hideIfNoPrevNext ) {
9077
+ next = "";
9078
+ } else {
9079
+ next = $( "<a>" )
9080
+ .attr( {
9081
+ "class": "ui-datepicker-next ui-corner-all ui-state-disabled",
9082
+ title: nextText
9083
+ } )
9084
+ .append(
9085
+ $( "<span>" )
9086
+ .attr( "class", "ui-icon ui-icon-circle-triangle-" +
9087
+ ( isRTL ? "w" : "e" ) )
9088
+ .text( nextText )
9089
+ )[ 0 ].outerHTML;
9090
+ }
8867
9091
 
8868
9092
  currentText = this._get( inst, "currentText" );
8869
9093
  gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
8870
9094
  currentText = ( !navigationAsDateFormat ? currentText :
8871
9095
  this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
8872
9096
 
8873
- controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
8874
- this._get( inst, "closeText" ) + "</button>" : "" );
8875
-
8876
- buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +
8877
- ( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
8878
- ">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : "";
9097
+ controls = "";
9098
+ if ( !inst.inline ) {
9099
+ controls = $( "<button>" )
9100
+ .attr( {
9101
+ type: "button",
9102
+ "class": "ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all",
9103
+ "data-handler": "hide",
9104
+ "data-event": "click"
9105
+ } )
9106
+ .text( this._get( inst, "closeText" ) )[ 0 ].outerHTML;
9107
+ }
9108
+
9109
+ buttonPanel = "";
9110
+ if ( showButtonPanel ) {
9111
+ buttonPanel = $( "<div class='ui-datepicker-buttonpane ui-widget-content'>" )
9112
+ .append( isRTL ? controls : "" )
9113
+ .append( this._isInRange( inst, gotoDate ) ?
9114
+ $( "<button>" )
9115
+ .attr( {
9116
+ type: "button",
9117
+ "class": "ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all",
9118
+ "data-handler": "today",
9119
+ "data-event": "click"
9120
+ } )
9121
+ .text( currentText ) :
9122
+ "" )
9123
+ .append( isRTL ? "" : controls )[ 0 ].outerHTML;
9124
+ }
8879
9125
 
8880
9126
  firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
8881
9127
  firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
@@ -8963,7 +9209,9 @@ $.extend( Datepicker.prototype, {
8963
9209
  ( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
8964
9210
  ( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
8965
9211
  ( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
8966
- "' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
9212
+ "' href='#' aria-current='" + ( printDate.getTime() === currentDate.getTime() ? "true" : "false" ) + // mark date as selected for screen reader
9213
+ "' data-date='" + printDate.getDate() + // store date as data
9214
+ "'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
8967
9215
  printDate.setDate( printDate.getDate() + 1 );
8968
9216
  printDate = this._daylightSavingAdjust( printDate );
8969
9217
  }
@@ -8993,6 +9241,8 @@ $.extend( Datepicker.prototype, {
8993
9241
  changeMonth = this._get( inst, "changeMonth" ),
8994
9242
  changeYear = this._get( inst, "changeYear" ),
8995
9243
  showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
9244
+ selectMonthLabel = this._get( inst, "selectMonthLabel" ),
9245
+ selectYearLabel = this._get( inst, "selectYearLabel" ),
8996
9246
  html = "<div class='ui-datepicker-title'>",
8997
9247
  monthHtml = "";
8998
9248
 
@@ -9002,7 +9252,7 @@ $.extend( Datepicker.prototype, {
9002
9252
  } else {
9003
9253
  inMinYear = ( minDate && minDate.getFullYear() === drawYear );
9004
9254
  inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
9005
- monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
9255
+ monthHtml += "<select class='ui-datepicker-month' aria-label='" + selectMonthLabel + "' data-handler='selectMonth' data-event='change'>";
9006
9256
  for ( month = 0; month < 12; month++ ) {
9007
9257
  if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
9008
9258
  monthHtml += "<option value='" + month + "'" +
@@ -9037,7 +9287,7 @@ $.extend( Datepicker.prototype, {
9037
9287
  endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
9038
9288
  year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
9039
9289
  endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
9040
- inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
9290
+ inst.yearshtml += "<select class='ui-datepicker-year' aria-label='" + selectYearLabel + "' data-handler='selectYear' data-event='change'>";
9041
9291
  for ( ; year <= endYear; year++ ) {
9042
9292
  inst.yearshtml += "<option value='" + year + "'" +
9043
9293
  ( year === drawYear ? " selected='selected'" : "" ) +
@@ -9249,28 +9499,29 @@ $.fn.datepicker = function( options ) {
9249
9499
  apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
9250
9500
  }
9251
9501
  return this.each( function() {
9252
- typeof options === "string" ?
9253
- $.datepicker[ "_" + options + "Datepicker" ].
9254
- apply( $.datepicker, [ this ].concat( otherArgs ) ) :
9502
+ if ( typeof options === "string" ) {
9503
+ $.datepicker[ "_" + options + "Datepicker" ]
9504
+ .apply( $.datepicker, [ this ].concat( otherArgs ) );
9505
+ } else {
9255
9506
  $.datepicker._attachDatepicker( this, options );
9507
+ }
9256
9508
  } );
9257
9509
  };
9258
9510
 
9259
9511
  $.datepicker = new Datepicker(); // singleton instance
9260
9512
  $.datepicker.initialized = false;
9261
9513
  $.datepicker.uuid = new Date().getTime();
9262
- $.datepicker.version = "1.12.1";
9514
+ $.datepicker.version = "1.13.1";
9263
9515
 
9264
9516
  var widgetsDatepicker = $.datepicker;
9265
9517
 
9266
9518
 
9267
9519
 
9268
-
9269
9520
  // This file is deprecated
9270
9521
  var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
9271
9522
 
9272
9523
  /*!
9273
- * jQuery UI Mouse 1.12.1
9524
+ * jQuery UI Mouse 1.13.1
9274
9525
  * http://jqueryui.com
9275
9526
  *
9276
9527
  * Copyright jQuery Foundation and other contributors
@@ -9284,14 +9535,13 @@ var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
9284
9535
  //>>docs: http://api.jqueryui.com/mouse/
9285
9536
 
9286
9537
 
9287
-
9288
9538
  var mouseHandled = false;
9289
9539
  $( document ).on( "mouseup", function() {
9290
9540
  mouseHandled = false;
9291
9541
  } );
9292
9542
 
9293
9543
  var widgetsMouse = $.widget( "ui.mouse", {
9294
- version: "1.12.1",
9544
+ version: "1.13.1",
9295
9545
  options: {
9296
9546
  cancel: "input, textarea, button, select, option",
9297
9547
  distance: 1,
@@ -9336,7 +9586,9 @@ var widgetsMouse = $.widget( "ui.mouse", {
9336
9586
  this._mouseMoved = false;
9337
9587
 
9338
9588
  // We may have missed mouseup (out of window)
9339
- ( this._mouseStarted && this._mouseUp( event ) );
9589
+ if ( this._mouseStarted ) {
9590
+ this._mouseUp( event );
9591
+ }
9340
9592
 
9341
9593
  this._mouseDownEvent = event;
9342
9594
 
@@ -9429,7 +9681,11 @@ var widgetsMouse = $.widget( "ui.mouse", {
9429
9681
  if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
9430
9682
  this._mouseStarted =
9431
9683
  ( this._mouseStart( this._mouseDownEvent, event ) !== false );
9432
- ( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );
9684
+ if ( this._mouseStarted ) {
9685
+ this._mouseDrag( event );
9686
+ } else {
9687
+ this._mouseUp( event );
9688
+ }
9433
9689
  }
9434
9690
 
9435
9691
  return !this._mouseStarted;
@@ -9476,12 +9732,13 @@ var widgetsMouse = $.widget( "ui.mouse", {
9476
9732
  _mouseStart: function( /* event */ ) {},
9477
9733
  _mouseDrag: function( /* event */ ) {},
9478
9734
  _mouseStop: function( /* event */ ) {},
9479
- _mouseCapture: function( /* event */ ) { return true; }
9735
+ _mouseCapture: function( /* event */ ) {
9736
+ return true;
9737
+ }
9480
9738
  } );
9481
9739
 
9482
9740
 
9483
9741
 
9484
-
9485
9742
  // $.ui.plugin is deprecated. Use $.widget() extensions instead.
9486
9743
  var plugin = $.ui.plugin = {
9487
9744
  add: function( module, option, set ) {
@@ -9526,7 +9783,7 @@ var safeBlur = $.ui.safeBlur = function( element ) {
9526
9783
 
9527
9784
 
9528
9785
  /*!
9529
- * jQuery UI Draggable 1.12.1
9786
+ * jQuery UI Draggable 1.13.1
9530
9787
  * http://jqueryui.com
9531
9788
  *
9532
9789
  * Copyright jQuery Foundation and other contributors
@@ -9542,9 +9799,8 @@ var safeBlur = $.ui.safeBlur = function( element ) {
9542
9799
  //>>css.structure: ../../themes/base/draggable.css
9543
9800
 
9544
9801
 
9545
-
9546
9802
  $.widget( "ui.draggable", $.ui.mouse, {
9547
- version: "1.12.1",
9803
+ version: "1.13.1",
9548
9804
  widgetEventPrefix: "drag",
9549
9805
  options: {
9550
9806
  addClasses: true,
@@ -9708,7 +9964,9 @@ $.widget( "ui.draggable", $.ui.mouse, {
9708
9964
  this.originalPageY = event.pageY;
9709
9965
 
9710
9966
  //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
9711
- ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
9967
+ if ( o.cursorAt ) {
9968
+ this._adjustOffsetFromHelper( o.cursorAt );
9969
+ }
9712
9970
 
9713
9971
  //Set a containment if given in the options
9714
9972
  this._setContainment();
@@ -9803,7 +10061,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
9803
10061
 
9804
10062
  if ( ( this.options.revert === "invalid" && !dropped ) ||
9805
10063
  ( this.options.revert === "valid" && dropped ) ||
9806
- this.options.revert === true || ( $.isFunction( this.options.revert ) &&
10064
+ this.options.revert === true || ( typeof this.options.revert === "function" &&
9807
10065
  this.options.revert.call( this.element, dropped ) )
9808
10066
  ) {
9809
10067
  $( this.helper ).animate(
@@ -9875,7 +10133,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
9875
10133
  _createHelper: function( event ) {
9876
10134
 
9877
10135
  var o = this.options,
9878
- helperIsFunction = $.isFunction( o.helper ),
10136
+ helperIsFunction = typeof o.helper === "function",
9879
10137
  helper = helperIsFunction ?
9880
10138
  $( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
9881
10139
  ( o.helper === "clone" ?
@@ -9914,7 +10172,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
9914
10172
  if ( typeof obj === "string" ) {
9915
10173
  obj = obj.split( " " );
9916
10174
  }
9917
- if ( $.isArray( obj ) ) {
10175
+ if ( Array.isArray( obj ) ) {
9918
10176
  obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
9919
10177
  }
9920
10178
  if ( "left" in obj ) {
@@ -10623,12 +10881,13 @@ $.ui.plugin.add( "draggable", "snap", {
10623
10881
  !$.contains( inst.snapElements[ i ].item.ownerDocument,
10624
10882
  inst.snapElements[ i ].item ) ) {
10625
10883
  if ( inst.snapElements[ i ].snapping ) {
10626
- ( inst.options.snap.release &&
10884
+ if ( inst.options.snap.release ) {
10627
10885
  inst.options.snap.release.call(
10628
10886
  inst.element,
10629
10887
  event,
10630
10888
  $.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
10631
- ) );
10889
+ );
10890
+ }
10632
10891
  }
10633
10892
  inst.snapElements[ i ].snapping = false;
10634
10893
  continue;
@@ -10699,13 +10958,14 @@ $.ui.plugin.add( "draggable", "snap", {
10699
10958
  }
10700
10959
 
10701
10960
  if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
10702
- ( inst.options.snap.snap &&
10961
+ if ( inst.options.snap.snap ) {
10703
10962
  inst.options.snap.snap.call(
10704
10963
  inst.element,
10705
10964
  event,
10706
10965
  $.extend( inst._uiHash(), {
10707
10966
  snapItem: inst.snapElements[ i ].item
10708
- } ) ) );
10967
+ } ) );
10968
+ }
10709
10969
  }
10710
10970
  inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
10711
10971
 
@@ -10723,7 +10983,9 @@ $.ui.plugin.add( "draggable", "stack", {
10723
10983
  ( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
10724
10984
  } );
10725
10985
 
10726
- if ( !group.length ) { return; }
10986
+ if ( !group.length ) {
10987
+ return;
10988
+ }
10727
10989
 
10728
10990
  min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
10729
10991
  $( group ).each( function( i ) {
@@ -10756,7 +11018,7 @@ var widgetsDraggable = $.ui.draggable;
10756
11018
 
10757
11019
 
10758
11020
  /*!
10759
- * jQuery UI Resizable 1.12.1
11021
+ * jQuery UI Resizable 1.13.1
10760
11022
  * http://jqueryui.com
10761
11023
  *
10762
11024
  * Copyright jQuery Foundation and other contributors
@@ -10774,9 +11036,8 @@ var widgetsDraggable = $.ui.draggable;
10774
11036
  //>>css.theme: ../../themes/base/theme.css
10775
11037
 
10776
11038
 
10777
-
10778
11039
  $.widget( "ui.resizable", $.ui.mouse, {
10779
- version: "1.12.1",
11040
+ version: "1.13.1",
10780
11041
  widgetEventPrefix: "resize",
10781
11042
  options: {
10782
11043
  alsoResize: false,
@@ -10831,9 +11092,15 @@ $.widget( "ui.resizable", $.ui.mouse, {
10831
11092
  // TODO: determine which cases actually cause this to happen
10832
11093
  // if the element doesn't have the scroll set, see if it's possible to
10833
11094
  // set the scroll
10834
- el[ scroll ] = 1;
10835
- has = ( el[ scroll ] > 0 );
10836
- el[ scroll ] = 0;
11095
+ try {
11096
+ el[ scroll ] = 1;
11097
+ has = ( el[ scroll ] > 0 );
11098
+ el[ scroll ] = 0;
11099
+ } catch ( e ) {
11100
+
11101
+ // `el` might be a string, then setting `scroll` will throw
11102
+ // an error in strict mode; ignore it.
11103
+ }
10837
11104
  return has;
10838
11105
  },
10839
11106
 
@@ -10856,7 +11123,8 @@ $.widget( "ui.resizable", $.ui.mouse, {
10856
11123
  if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
10857
11124
 
10858
11125
  this.element.wrap(
10859
- $( "<div class='ui-wrapper' style='overflow: hidden;'></div>" ).css( {
11126
+ $( "<div class='ui-wrapper'></div>" ).css( {
11127
+ overflow: "hidden",
10860
11128
  position: this.element.css( "position" ),
10861
11129
  width: this.element.outerWidth(),
10862
11130
  height: this.element.outerHeight(),
@@ -10927,15 +11195,14 @@ $.widget( "ui.resizable", $.ui.mouse, {
10927
11195
  _destroy: function() {
10928
11196
 
10929
11197
  this._mouseDestroy();
11198
+ this._addedHandles.remove();
10930
11199
 
10931
11200
  var wrapper,
10932
11201
  _destroy = function( exp ) {
10933
11202
  $( exp )
10934
11203
  .removeData( "resizable" )
10935
11204
  .removeData( "ui-resizable" )
10936
- .off( ".resizable" )
10937
- .find( ".ui-resizable-handle" )
10938
- .remove();
11205
+ .off( ".resizable" );
10939
11206
  };
10940
11207
 
10941
11208
  // TODO: Unwrap at same DOM position
@@ -10966,6 +11233,9 @@ $.widget( "ui.resizable", $.ui.mouse, {
10966
11233
  this._removeHandles();
10967
11234
  this._setupHandles();
10968
11235
  break;
11236
+ case "aspectRatio":
11237
+ this._aspectRatio = !!value;
11238
+ break;
10969
11239
  default:
10970
11240
  break;
10971
11241
  }
@@ -10987,6 +11257,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
10987
11257
  } );
10988
11258
 
10989
11259
  this._handles = $();
11260
+ this._addedHandles = $();
10990
11261
  if ( this.handles.constructor === String ) {
10991
11262
 
10992
11263
  if ( this.handles === "all" ) {
@@ -10998,7 +11269,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
10998
11269
 
10999
11270
  for ( i = 0; i < n.length; i++ ) {
11000
11271
 
11001
- handle = $.trim( n[ i ] );
11272
+ handle = String.prototype.trim.call( n[ i ] );
11002
11273
  hname = "ui-resizable-" + handle;
11003
11274
  axis = $( "<div>" );
11004
11275
  this._addClass( axis, "ui-resizable-handle " + hname );
@@ -11006,7 +11277,10 @@ $.widget( "ui.resizable", $.ui.mouse, {
11006
11277
  axis.css( { zIndex: o.zIndex } );
11007
11278
 
11008
11279
  this.handles[ handle ] = ".ui-resizable-" + handle;
11009
- this.element.append( axis );
11280
+ if ( !this.element.children( this.handles[ handle ] ).length ) {
11281
+ this.element.append( axis );
11282
+ this._addedHandles = this._addedHandles.add( axis );
11283
+ }
11010
11284
  }
11011
11285
 
11012
11286
  }
@@ -11072,7 +11346,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
11072
11346
  },
11073
11347
 
11074
11348
  _removeHandles: function() {
11075
- this._handles.remove();
11349
+ this._addedHandles.remove();
11076
11350
  },
11077
11351
 
11078
11352
  _mouseCapture: function( event ) {
@@ -11452,7 +11726,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
11452
11726
 
11453
11727
  if ( this._helper ) {
11454
11728
 
11455
- this.helper = this.helper || $( "<div style='overflow:hidden;'></div>" );
11729
+ this.helper = this.helper || $( "<div></div>" ).css( { overflow: "hidden" } );
11456
11730
 
11457
11731
  this._addClass( this.helper, this._helper );
11458
11732
  this.helper.css( {
@@ -11509,7 +11783,9 @@ $.widget( "ui.resizable", $.ui.mouse, {
11509
11783
 
11510
11784
  _propagate: function( n, event ) {
11511
11785
  $.ui.plugin.call( this, n, [ event, this.ui() ] );
11512
- ( n !== "resize" && this._trigger( n, event, this.ui() ) );
11786
+ if ( n !== "resize" ) {
11787
+ this._trigger( n, event, this.ui() );
11788
+ }
11513
11789
  },
11514
11790
 
11515
11791
  plugins: {},
@@ -11630,8 +11906,8 @@ $.ui.plugin.add( "resizable", "containment", {
11630
11906
  co = that.containerOffset;
11631
11907
  ch = that.containerSize.height;
11632
11908
  cw = that.containerSize.width;
11633
- width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
11634
- height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
11909
+ width = ( that._hasScroll( ce, "left" ) ? ce.scrollWidth : cw );
11910
+ height = ( that._hasScroll( ce ) ? ce.scrollHeight : ch );
11635
11911
 
11636
11912
  that.parentData = {
11637
11913
  element: ce,
@@ -11940,7 +12216,7 @@ var widgetsResizable = $.ui.resizable;
11940
12216
 
11941
12217
 
11942
12218
  /*!
11943
- * jQuery UI Dialog 1.12.1
12219
+ * jQuery UI Dialog 1.13.1
11944
12220
  * http://jqueryui.com
11945
12221
  *
11946
12222
  * Copyright jQuery Foundation and other contributors
@@ -11958,9 +12234,8 @@ var widgetsResizable = $.ui.resizable;
11958
12234
  //>>css.theme: ../../themes/base/theme.css
11959
12235
 
11960
12236
 
11961
-
11962
12237
  $.widget( "ui.dialog", {
11963
- version: "1.12.1",
12238
+ version: "1.13.1",
11964
12239
  options: {
11965
12240
  appendTo: "body",
11966
12241
  autoOpen: true,
@@ -12205,7 +12480,7 @@ $.widget( "ui.dialog", {
12205
12480
  that._trigger( "focus" );
12206
12481
  } );
12207
12482
 
12208
- // Track the dialog immediately upon openening in case a focus event
12483
+ // Track the dialog immediately upon opening in case a focus event
12209
12484
  // somehow occurs outside of the dialog before an element inside the
12210
12485
  // dialog is focused (#10152)
12211
12486
  this._makeFocusTarget();
@@ -12241,22 +12516,23 @@ $.widget( "ui.dialog", {
12241
12516
  hasFocus.eq( 0 ).trigger( "focus" );
12242
12517
  },
12243
12518
 
12244
- _keepFocus: function( event ) {
12245
- function checkFocus() {
12246
- var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
12247
- isActive = this.uiDialog[ 0 ] === activeElement ||
12248
- $.contains( this.uiDialog[ 0 ], activeElement );
12249
- if ( !isActive ) {
12250
- this._focusTabbable();
12251
- }
12519
+ _restoreTabbableFocus: function() {
12520
+ var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
12521
+ isActive = this.uiDialog[ 0 ] === activeElement ||
12522
+ $.contains( this.uiDialog[ 0 ], activeElement );
12523
+ if ( !isActive ) {
12524
+ this._focusTabbable();
12252
12525
  }
12526
+ },
12527
+
12528
+ _keepFocus: function( event ) {
12253
12529
  event.preventDefault();
12254
- checkFocus.call( this );
12530
+ this._restoreTabbableFocus();
12255
12531
 
12256
12532
  // support: IE
12257
12533
  // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
12258
12534
  // so we check again later
12259
- this._delay( checkFocus );
12535
+ this._delay( this._restoreTabbableFocus );
12260
12536
  },
12261
12537
 
12262
12538
  _createWrapper: function() {
@@ -12285,8 +12561,8 @@ $.widget( "ui.dialog", {
12285
12561
  return;
12286
12562
  }
12287
12563
  var tabbables = this.uiDialog.find( ":tabbable" ),
12288
- first = tabbables.filter( ":first" ),
12289
- last = tabbables.filter( ":last" );
12564
+ first = tabbables.first(),
12565
+ last = tabbables.last();
12290
12566
 
12291
12567
  if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
12292
12568
  !event.shiftKey ) {
@@ -12397,14 +12673,14 @@ $.widget( "ui.dialog", {
12397
12673
  this.uiDialogButtonPane.remove();
12398
12674
  this.uiButtonSet.empty();
12399
12675
 
12400
- if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {
12676
+ if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
12401
12677
  this._removeClass( this.uiDialog, "ui-dialog-buttons" );
12402
12678
  return;
12403
12679
  }
12404
12680
 
12405
12681
  $.each( buttons, function( name, props ) {
12406
12682
  var click, buttonOptions;
12407
- props = $.isFunction( props ) ?
12683
+ props = typeof props === "function" ?
12408
12684
  { click: props, text: name } :
12409
12685
  props;
12410
12686
 
@@ -12769,6 +13045,8 @@ $.widget( "ui.dialog", {
12769
13045
  return;
12770
13046
  }
12771
13047
 
13048
+ var jqMinor = $.fn.jquery.substring( 0, 4 );
13049
+
12772
13050
  // We use a delay in case the overlay is created from an
12773
13051
  // event that we're going to be cancelling (#2804)
12774
13052
  var isOpening = true;
@@ -12779,20 +13057,28 @@ $.widget( "ui.dialog", {
12779
13057
  if ( !this.document.data( "ui-dialog-overlays" ) ) {
12780
13058
 
12781
13059
  // Prevent use of anchors and inputs
12782
- // Using _on() for an event handler shared across many instances is
12783
- // safe because the dialogs stack and must be closed in reverse order
12784
- this._on( this.document, {
12785
- focusin: function( event ) {
12786
- if ( isOpening ) {
12787
- return;
12788
- }
13060
+ // This doesn't use `_on()` because it is a shared event handler
13061
+ // across all open modal dialogs.
13062
+ this.document.on( "focusin.ui-dialog", function( event ) {
13063
+ if ( isOpening ) {
13064
+ return;
13065
+ }
12789
13066
 
12790
- if ( !this._allowInteraction( event ) ) {
12791
- event.preventDefault();
12792
- this._trackingInstances()[ 0 ]._focusTabbable();
13067
+ var instance = this._trackingInstances()[ 0 ];
13068
+ if ( !instance._allowInteraction( event ) ) {
13069
+ event.preventDefault();
13070
+ instance._focusTabbable();
13071
+
13072
+ // Support: jQuery >=3.4 <3.6 only
13073
+ // Focus re-triggering in jQuery 3.4/3.5 makes the original element
13074
+ // have its focus event propagated last, breaking the re-targeting.
13075
+ // Trigger focus in a delay in addition if needed to avoid the issue
13076
+ // See https://github.com/jquery/jquery/issues/4382
13077
+ if ( jqMinor === "3.4." || jqMinor === "3.5." ) {
13078
+ instance._delay( instance._restoreTabbableFocus );
12793
13079
  }
12794
13080
  }
12795
- } );
13081
+ }.bind( this ) );
12796
13082
  }
12797
13083
 
12798
13084
  this.overlay = $( "<div>" )
@@ -12815,7 +13101,7 @@ $.widget( "ui.dialog", {
12815
13101
  var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
12816
13102
 
12817
13103
  if ( !overlays ) {
12818
- this._off( this.document, "focusin" );
13104
+ this.document.off( "focusin.ui-dialog" );
12819
13105
  this.document.removeData( "ui-dialog-overlays" );
12820
13106
  } else {
12821
13107
  this.document.data( "ui-dialog-overlays", overlays );
@@ -12855,7 +13141,7 @@ var widgetsDialog = $.ui.dialog;
12855
13141
 
12856
13142
 
12857
13143
  /*!
12858
- * jQuery UI Droppable 1.12.1
13144
+ * jQuery UI Droppable 1.13.1
12859
13145
  * http://jqueryui.com
12860
13146
  *
12861
13147
  * Copyright jQuery Foundation and other contributors
@@ -12870,9 +13156,8 @@ var widgetsDialog = $.ui.dialog;
12870
13156
  //>>demos: http://jqueryui.com/droppable/
12871
13157
 
12872
13158
 
12873
-
12874
13159
  $.widget( "ui.droppable", {
12875
- version: "1.12.1",
13160
+ version: "1.13.1",
12876
13161
  widgetEventPrefix: "drop",
12877
13162
  options: {
12878
13163
  accept: "*",
@@ -12897,7 +13182,7 @@ $.widget( "ui.droppable", {
12897
13182
  this.isover = false;
12898
13183
  this.isout = true;
12899
13184
 
12900
- this.accept = $.isFunction( accept ) ? accept : function( d ) {
13185
+ this.accept = typeof accept === "function" ? accept : function( d ) {
12901
13186
  return d.is( accept );
12902
13187
  };
12903
13188
 
@@ -12920,7 +13205,9 @@ $.widget( "ui.droppable", {
12920
13205
 
12921
13206
  this._addToManager( o.scope );
12922
13207
 
12923
- o.addClasses && this._addClass( "ui-droppable" );
13208
+ if ( o.addClasses ) {
13209
+ this._addClass( "ui-droppable" );
13210
+ }
12924
13211
 
12925
13212
  },
12926
13213
 
@@ -12949,7 +13236,7 @@ $.widget( "ui.droppable", {
12949
13236
  _setOption: function( key, value ) {
12950
13237
 
12951
13238
  if ( key === "accept" ) {
12952
- this.accept = $.isFunction( value ) ? value : function( d ) {
13239
+ this.accept = typeof value === "function" ? value : function( d ) {
12953
13240
  return d.is( value );
12954
13241
  };
12955
13242
  } else if ( key === "scope" ) {
@@ -13039,14 +13326,15 @@ $.widget( "ui.droppable", {
13039
13326
  inst.accept.call(
13040
13327
  inst.element[ 0 ], ( draggable.currentItem || draggable.element )
13041
13328
  ) &&
13042
- intersect(
13329
+ $.ui.intersect(
13043
13330
  draggable,
13044
13331
  $.extend( inst, { offset: inst.element.offset() } ),
13045
13332
  inst.options.tolerance, event
13046
13333
  )
13047
13334
  ) {
13048
13335
  childrenIntersection = true;
13049
- return false; }
13336
+ return false;
13337
+ }
13050
13338
  } );
13051
13339
  if ( childrenIntersection ) {
13052
13340
  return false;
@@ -13075,7 +13363,7 @@ $.widget( "ui.droppable", {
13075
13363
  },
13076
13364
 
13077
13365
  // Extension points just to make backcompat sane and avoid duplicating logic
13078
- // TODO: Remove in 1.13 along with call to it below
13366
+ // TODO: Remove in 1.14 along with call to it below
13079
13367
  _addHoverClass: function() {
13080
13368
  this._addClass( "ui-droppable-hover" );
13081
13369
  },
@@ -13093,7 +13381,7 @@ $.widget( "ui.droppable", {
13093
13381
  }
13094
13382
  } );
13095
13383
 
13096
- var intersect = $.ui.intersect = ( function() {
13384
+ $.ui.intersect = ( function() {
13097
13385
  function isOverAxis( x, reference, size ) {
13098
13386
  return ( x >= reference ) && ( x < ( reference + size ) );
13099
13387
  }
@@ -13201,7 +13489,7 @@ $.ui.ddmanager = {
13201
13489
  return;
13202
13490
  }
13203
13491
  if ( !this.options.disabled && this.visible &&
13204
- intersect( draggable, this, this.options.tolerance, event ) ) {
13492
+ $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
13205
13493
  dropped = this._drop.call( this, event ) || dropped;
13206
13494
  }
13207
13495
 
@@ -13242,7 +13530,7 @@ $.ui.ddmanager = {
13242
13530
  }
13243
13531
 
13244
13532
  var parentInstance, scope, parent,
13245
- intersects = intersect( draggable, this, this.options.tolerance, event ),
13533
+ intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
13246
13534
  c = !intersects && this.isover ?
13247
13535
  "isout" :
13248
13536
  ( intersects && !this.isover ? "isover" : null );
@@ -13336,7 +13624,7 @@ var widgetsDroppable = $.ui.droppable;
13336
13624
 
13337
13625
 
13338
13626
  /*!
13339
- * jQuery UI Progressbar 1.12.1
13627
+ * jQuery UI Progressbar 1.13.1
13340
13628
  * http://jqueryui.com
13341
13629
  *
13342
13630
  * Copyright jQuery Foundation and other contributors
@@ -13346,9 +13634,9 @@ var widgetsDroppable = $.ui.droppable;
13346
13634
 
13347
13635
  //>>label: Progressbar
13348
13636
  //>>group: Widgets
13349
- // jscs:disable maximumLineLength
13637
+ /* eslint-disable max-len */
13350
13638
  //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
13351
- // jscs:enable maximumLineLength
13639
+ /* eslint-enable max-len */
13352
13640
  //>>docs: http://api.jqueryui.com/progressbar/
13353
13641
  //>>demos: http://jqueryui.com/progressbar/
13354
13642
  //>>css.structure: ../../themes/base/core.css
@@ -13356,9 +13644,8 @@ var widgetsDroppable = $.ui.droppable;
13356
13644
  //>>css.theme: ../../themes/base/theme.css
13357
13645
 
13358
13646
 
13359
-
13360
13647
  var widgetsProgressbar = $.widget( "ui.progressbar", {
13361
- version: "1.12.1",
13648
+ version: "1.13.1",
13362
13649
  options: {
13363
13650
  classes: {
13364
13651
  "ui-progressbar": "ui-corner-all",
@@ -13500,7 +13787,7 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
13500
13787
 
13501
13788
 
13502
13789
  /*!
13503
- * jQuery UI Selectable 1.12.1
13790
+ * jQuery UI Selectable 1.13.1
13504
13791
  * http://jqueryui.com
13505
13792
  *
13506
13793
  * Copyright jQuery Foundation and other contributors
@@ -13516,9 +13803,8 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
13516
13803
  //>>css.structure: ../../themes/base/selectable.css
13517
13804
 
13518
13805
 
13519
-
13520
13806
  var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13521
- version: "1.12.1",
13807
+ version: "1.13.1",
13522
13808
  options: {
13523
13809
  appendTo: "body",
13524
13810
  autoRefresh: true,
@@ -13669,8 +13955,12 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13669
13955
  x2 = event.pageX,
13670
13956
  y2 = event.pageY;
13671
13957
 
13672
- if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }
13673
- if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }
13958
+ if ( x1 > x2 ) {
13959
+ tmp = x2; x2 = x1; x1 = tmp;
13960
+ }
13961
+ if ( y1 > y2 ) {
13962
+ tmp = y2; y2 = y1; y1 = tmp;
13963
+ }
13674
13964
  this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
13675
13965
 
13676
13966
  this.selectees.each( function() {
@@ -13795,7 +14085,7 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13795
14085
 
13796
14086
 
13797
14087
  /*!
13798
- * jQuery UI Selectmenu 1.12.1
14088
+ * jQuery UI Selectmenu 1.13.1
13799
14089
  * http://jqueryui.com
13800
14090
  *
13801
14091
  * Copyright jQuery Foundation and other contributors
@@ -13805,9 +14095,9 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13805
14095
 
13806
14096
  //>>label: Selectmenu
13807
14097
  //>>group: Widgets
13808
- // jscs:disable maximumLineLength
14098
+ /* eslint-disable max-len */
13809
14099
  //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
13810
- // jscs:enable maximumLineLength
14100
+ /* eslint-enable max-len */
13811
14101
  //>>docs: http://api.jqueryui.com/selectmenu/
13812
14102
  //>>demos: http://jqueryui.com/selectmenu/
13813
14103
  //>>css.structure: ../../themes/base/core.css
@@ -13815,9 +14105,8 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13815
14105
  //>>css.theme: ../../themes/base/theme.css
13816
14106
 
13817
14107
 
13818
-
13819
14108
  var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
13820
- version: "1.12.1",
14109
+ version: "1.13.1",
13821
14110
  defaultElement: "<select>",
13822
14111
  options: {
13823
14112
  appendTo: null,
@@ -13872,7 +14161,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
13872
14161
  this.labels = this.element.labels().attr( "for", this.ids.button );
13873
14162
  this._on( this.labels, {
13874
14163
  click: function( event ) {
13875
- this.button.focus();
14164
+ this.button.trigger( "focus" );
13876
14165
  event.preventDefault();
13877
14166
  }
13878
14167
  } );
@@ -14200,7 +14489,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14200
14489
  }
14201
14490
 
14202
14491
  if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
14203
- $.ui.escapeSelector( this.ids.button ) ).length ) {
14492
+ $.escapeSelector( this.ids.button ) ).length ) {
14204
14493
  this.close( event );
14205
14494
  }
14206
14495
  }
@@ -14431,6 +14720,10 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14431
14720
  var that = this,
14432
14721
  data = [];
14433
14722
  options.each( function( index, item ) {
14723
+ if ( item.hidden ) {
14724
+ return;
14725
+ }
14726
+
14434
14727
  data.push( that._parseOption( $( item ), index ) );
14435
14728
  } );
14436
14729
  this.items = data;
@@ -14461,7 +14754,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14461
14754
 
14462
14755
 
14463
14756
  /*!
14464
- * jQuery UI Slider 1.12.1
14757
+ * jQuery UI Slider 1.13.1
14465
14758
  * http://jqueryui.com
14466
14759
  *
14467
14760
  * Copyright jQuery Foundation and other contributors
@@ -14479,9 +14772,8 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14479
14772
  //>>css.theme: ../../themes/base/theme.css
14480
14773
 
14481
14774
 
14482
-
14483
14775
  var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14484
- version: "1.12.1",
14776
+ version: "1.13.1",
14485
14777
  widgetEventPrefix: "slide",
14486
14778
 
14487
14779
  options: {
@@ -14578,7 +14870,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14578
14870
  options.values = [ this._valueMin(), this._valueMin() ];
14579
14871
  } else if ( options.values.length && options.values.length !== 2 ) {
14580
14872
  options.values = [ options.values[ 0 ], options.values[ 0 ] ];
14581
- } else if ( $.isArray( options.values ) ) {
14873
+ } else if ( Array.isArray( options.values ) ) {
14582
14874
  options.values = options.values.slice( 0 );
14583
14875
  }
14584
14876
  }
@@ -14841,7 +15133,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14841
15133
  }
14842
15134
 
14843
15135
  if ( arguments.length ) {
14844
- if ( $.isArray( arguments[ 0 ] ) ) {
15136
+ if ( Array.isArray( arguments[ 0 ] ) ) {
14845
15137
  vals = this.options.values;
14846
15138
  newValues = arguments[ 0 ];
14847
15139
  for ( i = 0; i < vals.length; i += 1 ) {
@@ -14875,7 +15167,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14875
15167
  }
14876
15168
  }
14877
15169
 
14878
- if ( $.isArray( this.options.values ) ) {
15170
+ if ( Array.isArray( this.options.values ) ) {
14879
15171
  valsLength = this.options.values.length;
14880
15172
  }
14881
15173
 
@@ -15197,7 +15489,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
15197
15489
 
15198
15490
 
15199
15491
  /*!
15200
- * jQuery UI Sortable 1.12.1
15492
+ * jQuery UI Sortable 1.13.1
15201
15493
  * http://jqueryui.com
15202
15494
  *
15203
15495
  * Copyright jQuery Foundation and other contributors
@@ -15213,9 +15505,8 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
15213
15505
  //>>css.structure: ../../themes/base/sortable.css
15214
15506
 
15215
15507
 
15216
-
15217
15508
  var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15218
- version: "1.12.1",
15509
+ version: "1.13.1",
15219
15510
  widgetEventPrefix: "sort",
15220
15511
  ready: false,
15221
15512
  options: {
@@ -15375,6 +15666,11 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15375
15666
  // mouseCapture
15376
15667
  this.refreshPositions();
15377
15668
 
15669
+ //Prepare the dragged items parent
15670
+ this.appendTo = $( o.appendTo !== "parent" ?
15671
+ o.appendTo :
15672
+ this.currentItem.parent() );
15673
+
15378
15674
  //Create and append the visible helper
15379
15675
  this.helper = this._createHelper( event );
15380
15676
 
@@ -15389,9 +15685,6 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15389
15685
  //Cache the margins of the original element
15390
15686
  this._cacheMargins();
15391
15687
 
15392
- //Get the next scrolling parent
15393
- this.scrollParent = this.helper.scrollParent();
15394
-
15395
15688
  //The element's absolute position on the page minus margins
15396
15689
  this.offset = this.currentItem.offset();
15397
15690
  this.offset = {
@@ -15404,25 +15697,22 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15404
15697
  left: event.pageX - this.offset.left,
15405
15698
  top: event.pageY - this.offset.top
15406
15699
  },
15407
- parent: this._getParentOffset(),
15408
15700
 
15409
15701
  // This is a relative to absolute position minus the actual position calculation -
15410
15702
  // only used for relative positioned helper
15411
15703
  relative: this._getRelativeOffset()
15412
15704
  } );
15413
15705
 
15414
- // Only after we got the offset, we can change the helper's position to absolute
15706
+ // After we get the helper offset, but before we get the parent offset we can
15707
+ // change the helper's position to absolute
15415
15708
  // TODO: Still need to figure out a way to make relative sorting possible
15416
15709
  this.helper.css( "position", "absolute" );
15417
15710
  this.cssPosition = this.helper.css( "position" );
15418
15711
 
15419
- //Generate the original position
15420
- this.originalPosition = this._generatePosition( event );
15421
- this.originalPageX = event.pageX;
15422
- this.originalPageY = event.pageY;
15423
-
15424
15712
  //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
15425
- ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
15713
+ if ( o.cursorAt ) {
15714
+ this._adjustOffsetFromHelper( o.cursorAt );
15715
+ }
15426
15716
 
15427
15717
  //Cache the former DOM position
15428
15718
  this.domPosition = {
@@ -15439,6 +15729,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15439
15729
  //Create the placeholder
15440
15730
  this._createPlaceholder();
15441
15731
 
15732
+ //Get the next scrolling parent
15733
+ this.scrollParent = this.placeholder.scrollParent();
15734
+
15735
+ $.extend( this.offset, {
15736
+ parent: this._getParentOffset()
15737
+ } );
15738
+
15442
15739
  //Set a containment if given in the options
15443
15740
  if ( o.containment ) {
15444
15741
  this._setContainment();
@@ -15455,13 +15752,9 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15455
15752
  $( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
15456
15753
  }
15457
15754
 
15458
- if ( o.opacity ) { // opacity option
15459
- if ( this.helper.css( "opacity" ) ) {
15460
- this._storedOpacity = this.helper.css( "opacity" );
15461
- }
15462
- this.helper.css( "opacity", o.opacity );
15463
- }
15464
-
15755
+ // We need to make sure to grab the zIndex before setting the
15756
+ // opacity, because setting the opacity to anything lower than 1
15757
+ // causes the zIndex to change from "auto" to 0.
15465
15758
  if ( o.zIndex ) { // zIndex option
15466
15759
  if ( this.helper.css( "zIndex" ) ) {
15467
15760
  this._storedZIndex = this.helper.css( "zIndex" );
@@ -15469,6 +15762,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15469
15762
  this.helper.css( "zIndex", o.zIndex );
15470
15763
  }
15471
15764
 
15765
+ if ( o.opacity ) { // opacity option
15766
+ if ( this.helper.css( "opacity" ) ) {
15767
+ this._storedOpacity = this.helper.css( "opacity" );
15768
+ }
15769
+ this.helper.css( "opacity", o.opacity );
15770
+ }
15771
+
15472
15772
  //Prepare scrolling
15473
15773
  if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15474
15774
  this.scrollParent[ 0 ].tagName !== "HTML" ) {
@@ -15503,77 +15803,82 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15503
15803
 
15504
15804
  this._addClass( this.helper, "ui-sortable-helper" );
15505
15805
 
15506
- // Execute the drag once - this causes the helper not to be visiblebefore getting its
15507
- // correct position
15508
- this._mouseDrag( event );
15509
- return true;
15806
+ //Move the helper, if needed
15807
+ if ( !this.helper.parent().is( this.appendTo ) ) {
15808
+ this.helper.detach().appendTo( this.appendTo );
15510
15809
 
15511
- },
15810
+ //Update position
15811
+ this.offset.parent = this._getParentOffset();
15812
+ }
15512
15813
 
15513
- _mouseDrag: function( event ) {
15514
- var i, item, itemElement, intersection,
15515
- o = this.options,
15516
- scrolled = false;
15814
+ //Generate the original position
15815
+ this.position = this.originalPosition = this._generatePosition( event );
15816
+ this.originalPageX = event.pageX;
15817
+ this.originalPageY = event.pageY;
15818
+ this.lastPositionAbs = this.positionAbs = this._convertPositionTo( "absolute" );
15517
15819
 
15518
- //Compute the helpers position
15519
- this.position = this._generatePosition( event );
15520
- this.positionAbs = this._convertPositionTo( "absolute" );
15820
+ this._mouseDrag( event );
15521
15821
 
15522
- if ( !this.lastPositionAbs ) {
15523
- this.lastPositionAbs = this.positionAbs;
15524
- }
15822
+ return true;
15525
15823
 
15526
- //Do scrolling
15527
- if ( this.options.scroll ) {
15528
- if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15529
- this.scrollParent[ 0 ].tagName !== "HTML" ) {
15824
+ },
15530
15825
 
15531
- if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
15532
- event.pageY < o.scrollSensitivity ) {
15533
- this.scrollParent[ 0 ].scrollTop =
15534
- scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
15535
- } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
15536
- this.scrollParent[ 0 ].scrollTop =
15537
- scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
15538
- }
15826
+ _scroll: function( event ) {
15827
+ var o = this.options,
15828
+ scrolled = false;
15539
15829
 
15540
- if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
15541
- event.pageX < o.scrollSensitivity ) {
15542
- this.scrollParent[ 0 ].scrollLeft = scrolled =
15543
- this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
15544
- } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
15545
- this.scrollParent[ 0 ].scrollLeft = scrolled =
15546
- this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
15547
- }
15830
+ if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15831
+ this.scrollParent[ 0 ].tagName !== "HTML" ) {
15548
15832
 
15549
- } else {
15833
+ if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
15834
+ event.pageY < o.scrollSensitivity ) {
15835
+ this.scrollParent[ 0 ].scrollTop =
15836
+ scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
15837
+ } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
15838
+ this.scrollParent[ 0 ].scrollTop =
15839
+ scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
15840
+ }
15550
15841
 
15551
- if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
15552
- scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
15553
- } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
15554
- o.scrollSensitivity ) {
15555
- scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
15556
- }
15842
+ if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
15843
+ event.pageX < o.scrollSensitivity ) {
15844
+ this.scrollParent[ 0 ].scrollLeft = scrolled =
15845
+ this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
15846
+ } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
15847
+ this.scrollParent[ 0 ].scrollLeft = scrolled =
15848
+ this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
15849
+ }
15557
15850
 
15558
- if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
15559
- scrolled = this.document.scrollLeft(
15560
- this.document.scrollLeft() - o.scrollSpeed
15561
- );
15562
- } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
15563
- o.scrollSensitivity ) {
15564
- scrolled = this.document.scrollLeft(
15565
- this.document.scrollLeft() + o.scrollSpeed
15566
- );
15567
- }
15851
+ } else {
15568
15852
 
15853
+ if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
15854
+ scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
15855
+ } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
15856
+ o.scrollSensitivity ) {
15857
+ scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
15569
15858
  }
15570
15859
 
15571
- if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
15572
- $.ui.ddmanager.prepareOffsets( this, event );
15860
+ if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
15861
+ scrolled = this.document.scrollLeft(
15862
+ this.document.scrollLeft() - o.scrollSpeed
15863
+ );
15864
+ } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
15865
+ o.scrollSensitivity ) {
15866
+ scrolled = this.document.scrollLeft(
15867
+ this.document.scrollLeft() + o.scrollSpeed
15868
+ );
15573
15869
  }
15870
+
15574
15871
  }
15575
15872
 
15576
- //Regenerate the absolute position used for position checks
15873
+ return scrolled;
15874
+ },
15875
+
15876
+ _mouseDrag: function( event ) {
15877
+ var i, item, itemElement, intersection,
15878
+ o = this.options;
15879
+
15880
+ //Compute the helpers position
15881
+ this.position = this._generatePosition( event );
15577
15882
  this.positionAbs = this._convertPositionTo( "absolute" );
15578
15883
 
15579
15884
  //Set the helper position
@@ -15584,6 +15889,24 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15584
15889
  this.helper[ 0 ].style.top = this.position.top + "px";
15585
15890
  }
15586
15891
 
15892
+ //Do scrolling
15893
+ if ( o.scroll ) {
15894
+ if ( this._scroll( event ) !== false ) {
15895
+
15896
+ //Update item positions used in position checks
15897
+ this._refreshItemPositions( true );
15898
+
15899
+ if ( $.ui.ddmanager && !o.dropBehaviour ) {
15900
+ $.ui.ddmanager.prepareOffsets( this, event );
15901
+ }
15902
+ }
15903
+ }
15904
+
15905
+ this.dragDirection = {
15906
+ vertical: this._getDragVerticalDirection(),
15907
+ horizontal: this._getDragHorizontalDirection()
15908
+ };
15909
+
15587
15910
  //Rearrange
15588
15911
  for ( i = this.items.length - 1; i >= 0; i-- ) {
15589
15912
 
@@ -15610,7 +15933,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15610
15933
  // no useless actions that have been done before
15611
15934
  // no action if the item moved is the parent of the item checked
15612
15935
  if ( itemElement !== this.currentItem[ 0 ] &&
15613
- this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement &&
15936
+ this.placeholder[ intersection === 1 ?
15937
+ "next" : "prev" ]()[ 0 ] !== itemElement &&
15614
15938
  !$.contains( this.placeholder[ 0 ], itemElement ) &&
15615
15939
  ( this.options.type === "semi-dynamic" ?
15616
15940
  !$.contains( this.element[ 0 ], itemElement ) :
@@ -15620,7 +15944,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15620
15944
 
15621
15945
  this.direction = intersection === 1 ? "down" : "up";
15622
15946
 
15623
- if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) {
15947
+ if ( this.options.tolerance === "pointer" ||
15948
+ this._intersectsWithSides( item ) ) {
15624
15949
  this._rearrange( event, item );
15625
15950
  } else {
15626
15951
  break;
@@ -15836,12 +16161,12 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15836
16161
  return false;
15837
16162
  }
15838
16163
 
15839
- verticalDirection = this._getDragVerticalDirection();
15840
- horizontalDirection = this._getDragHorizontalDirection();
16164
+ verticalDirection = this.dragDirection.vertical;
16165
+ horizontalDirection = this.dragDirection.horizontal;
15841
16166
 
15842
16167
  return this.floating ?
15843
- ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 )
15844
- : ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
16168
+ ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) :
16169
+ ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
15845
16170
 
15846
16171
  },
15847
16172
 
@@ -15851,8 +16176,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15851
16176
  this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
15852
16177
  isOverRightHalf = this._isOverAxis( this.positionAbs.left +
15853
16178
  this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
15854
- verticalDirection = this._getDragVerticalDirection(),
15855
- horizontalDirection = this._getDragHorizontalDirection();
16179
+ verticalDirection = this.dragDirection.vertical,
16180
+ horizontalDirection = this.dragDirection.horizontal;
15856
16181
 
15857
16182
  if ( this.floating && horizontalDirection ) {
15858
16183
  return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
@@ -15901,7 +16226,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15901
16226
  for ( j = cur.length - 1; j >= 0; j-- ) {
15902
16227
  inst = $.data( cur[ j ], this.widgetFullName );
15903
16228
  if ( inst && inst !== this && !inst.options.disabled ) {
15904
- queries.push( [ $.isFunction( inst.options.items ) ?
16229
+ queries.push( [ typeof inst.options.items === "function" ?
15905
16230
  inst.options.items.call( inst.element ) :
15906
16231
  $( inst.options.items, inst.element )
15907
16232
  .not( ".ui-sortable-helper" )
@@ -15911,7 +16236,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15911
16236
  }
15912
16237
  }
15913
16238
 
15914
- queries.push( [ $.isFunction( this.options.items ) ?
16239
+ queries.push( [ typeof this.options.items === "function" ?
15915
16240
  this.options.items
15916
16241
  .call( this.element, null, { options: this.options, item: this.currentItem } ) :
15917
16242
  $( this.options.items, this.element )
@@ -15951,7 +16276,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15951
16276
 
15952
16277
  var i, j, cur, inst, targetData, _queries, item, queriesLength,
15953
16278
  items = this.items,
15954
- queries = [ [ $.isFunction( this.options.items ) ?
16279
+ queries = [ [ typeof this.options.items === "function" ?
15955
16280
  this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
15956
16281
  $( this.options.items, this.element ), this ] ],
15957
16282
  connectWith = this._connectWith();
@@ -15963,7 +16288,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15963
16288
  for ( j = cur.length - 1; j >= 0; j-- ) {
15964
16289
  inst = $.data( cur[ j ], this.widgetFullName );
15965
16290
  if ( inst && inst !== this && !inst.options.disabled ) {
15966
- queries.push( [ $.isFunction( inst.options.items ) ?
16291
+ queries.push( [ typeof inst.options.items === "function" ?
15967
16292
  inst.options.items
15968
16293
  .call( inst.element[ 0 ], event, { item: this.currentItem } ) :
15969
16294
  $( inst.options.items, inst.element ), inst ] );
@@ -15994,26 +16319,14 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15994
16319
 
15995
16320
  },
15996
16321
 
15997
- refreshPositions: function( fast ) {
15998
-
15999
- // Determine whether items are being displayed horizontally
16000
- this.floating = this.items.length ?
16001
- this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
16002
- false;
16003
-
16004
- //This has to be redone because due to the item being moved out/into the offsetParent,
16005
- // the offsetParent's position will change
16006
- if ( this.offsetParent && this.helper ) {
16007
- this.offset.parent = this._getParentOffset();
16008
- }
16009
-
16322
+ _refreshItemPositions: function( fast ) {
16010
16323
  var i, item, t, p;
16011
16324
 
16012
16325
  for ( i = this.items.length - 1; i >= 0; i-- ) {
16013
16326
  item = this.items[ i ];
16014
16327
 
16015
16328
  //We ignore calculating positions of all connected containers when we're not over them
16016
- if ( item.instance !== this.currentContainer && this.currentContainer &&
16329
+ if ( this.currentContainer && item.instance !== this.currentContainer &&
16017
16330
  item.item[ 0 ] !== this.currentItem[ 0 ] ) {
16018
16331
  continue;
16019
16332
  }
@@ -16031,6 +16344,24 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16031
16344
  item.left = p.left;
16032
16345
  item.top = p.top;
16033
16346
  }
16347
+ },
16348
+
16349
+ refreshPositions: function( fast ) {
16350
+
16351
+ // Determine whether items are being displayed horizontally
16352
+ this.floating = this.items.length ?
16353
+ this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
16354
+ false;
16355
+
16356
+ // This has to be redone because due to the item being moved out/into the offsetParent,
16357
+ // the offsetParent's position will change
16358
+ if ( this.offsetParent && this.helper ) {
16359
+ this.offset.parent = this._getParentOffset();
16360
+ }
16361
+
16362
+ this._refreshItemPositions( fast );
16363
+
16364
+ var i, p;
16034
16365
 
16035
16366
  if ( this.options.custom && this.options.custom.refreshContainers ) {
16036
16367
  this.options.custom.refreshContainers.call( this );
@@ -16051,20 +16382,20 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16051
16382
 
16052
16383
  _createPlaceholder: function( that ) {
16053
16384
  that = that || this;
16054
- var className,
16385
+ var className, nodeName,
16055
16386
  o = that.options;
16056
16387
 
16057
16388
  if ( !o.placeholder || o.placeholder.constructor === String ) {
16058
16389
  className = o.placeholder;
16390
+ nodeName = that.currentItem[ 0 ].nodeName.toLowerCase();
16059
16391
  o.placeholder = {
16060
16392
  element: function() {
16061
16393
 
16062
- var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),
16063
- element = $( "<" + nodeName + ">", that.document[ 0 ] );
16394
+ var element = $( "<" + nodeName + ">", that.document[ 0 ] );
16064
16395
 
16065
- that._addClass( element, "ui-sortable-placeholder",
16066
- className || that.currentItem[ 0 ].className )
16067
- ._removeClass( element, "ui-sortable-helper" );
16396
+ that._addClass( element, "ui-sortable-placeholder",
16397
+ className || that.currentItem[ 0 ].className )
16398
+ ._removeClass( element, "ui-sortable-helper" );
16068
16399
 
16069
16400
  if ( nodeName === "tbody" ) {
16070
16401
  that._createTrPlaceholder(
@@ -16093,9 +16424,15 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16093
16424
  return;
16094
16425
  }
16095
16426
 
16096
- //If the element doesn't have a actual height by itself (without styles coming
16097
- // from a stylesheet), it receives the inline height from the dragged item
16098
- if ( !p.height() ) {
16427
+ // If the element doesn't have a actual height or width by itself (without
16428
+ // styles coming from a stylesheet), it receives the inline height and width
16429
+ // from the dragged item. Or, if it's a tbody or tr, it's going to have a height
16430
+ // anyway since we're populating them with <td>s above, but they're unlikely to
16431
+ // be the correct height on their own if the row heights are dynamic, so we'll
16432
+ // always assign the height of the dragged item given forcePlaceholderSize
16433
+ // is true.
16434
+ if ( !p.height() || ( o.forcePlaceholderSize &&
16435
+ ( nodeName === "tbody" || nodeName === "tr" ) ) ) {
16099
16436
  p.height(
16100
16437
  that.currentItem.innerHeight() -
16101
16438
  parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
@@ -16228,9 +16565,11 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16228
16565
  return;
16229
16566
  }
16230
16567
 
16231
- itemWithLeastDistance ?
16232
- this._rearrange( event, itemWithLeastDistance, null, true ) :
16568
+ if ( itemWithLeastDistance ) {
16569
+ this._rearrange( event, itemWithLeastDistance, null, true );
16570
+ } else {
16233
16571
  this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
16572
+ }
16234
16573
  this._trigger( "change", event, this._uiHash() );
16235
16574
  this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
16236
16575
  this.currentContainer = this.containers[ innermostIndex ];
@@ -16238,6 +16577,15 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16238
16577
  //Update the placeholder
16239
16578
  this.options.placeholder.update( this.currentContainer, this.placeholder );
16240
16579
 
16580
+ //Update scrollParent
16581
+ this.scrollParent = this.placeholder.scrollParent();
16582
+
16583
+ //Update overflowOffset
16584
+ if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
16585
+ this.scrollParent[ 0 ].tagName !== "HTML" ) {
16586
+ this.overflowOffset = this.scrollParent.offset();
16587
+ }
16588
+
16241
16589
  this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
16242
16590
  this.containers[ innermostIndex ].containerCache.over = 1;
16243
16591
  }
@@ -16247,15 +16595,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16247
16595
  _createHelper: function( event ) {
16248
16596
 
16249
16597
  var o = this.options,
16250
- helper = $.isFunction( o.helper ) ?
16598
+ helper = typeof o.helper === "function" ?
16251
16599
  $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
16252
16600
  ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
16253
16601
 
16254
16602
  //Add the helper to the DOM if that didn't happen already
16255
16603
  if ( !helper.parents( "body" ).length ) {
16256
- $( o.appendTo !== "parent" ?
16257
- o.appendTo :
16258
- this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );
16604
+ this.appendTo[ 0 ].appendChild( helper[ 0 ] );
16259
16605
  }
16260
16606
 
16261
16607
  if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
@@ -16283,7 +16629,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16283
16629
  if ( typeof obj === "string" ) {
16284
16630
  obj = obj.split( " " );
16285
16631
  }
16286
- if ( $.isArray( obj ) ) {
16632
+ if ( Array.isArray( obj ) ) {
16287
16633
  obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
16288
16634
  }
16289
16635
  if ( "left" in obj ) {
@@ -16563,9 +16909,12 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16563
16909
 
16564
16910
  _rearrange: function( event, i, a, hardRefresh ) {
16565
16911
 
16566
- a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :
16912
+ if ( a ) {
16913
+ a[ 0 ].appendChild( this.placeholder[ 0 ] );
16914
+ } else {
16567
16915
  i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
16568
16916
  ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
16917
+ }
16569
16918
 
16570
16919
  //Various things done here to improve the performance:
16571
16920
  // 1. we create a setTimeout, that calls refreshPositions
@@ -16733,7 +17082,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16733
17082
 
16734
17083
 
16735
17084
  /*!
16736
- * jQuery UI Spinner 1.12.1
17085
+ * jQuery UI Spinner 1.13.1
16737
17086
  * http://jqueryui.com
16738
17087
  *
16739
17088
  * Copyright jQuery Foundation and other contributors
@@ -16751,8 +17100,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16751
17100
  //>>css.theme: ../../themes/base/theme.css
16752
17101
 
16753
17102
 
16754
-
16755
- function spinnerModifer( fn ) {
17103
+ function spinnerModifier( fn ) {
16756
17104
  return function() {
16757
17105
  var previous = this.element.val();
16758
17106
  fn.apply( this, arguments );
@@ -16764,7 +17112,7 @@ function spinnerModifer( fn ) {
16764
17112
  }
16765
17113
 
16766
17114
  $.widget( "ui.spinner", {
16767
- version: "1.12.1",
17115
+ version: "1.13.1",
16768
17116
  defaultElement: "<input>",
16769
17117
  widgetEventPrefix: "spin",
16770
17118
  options: {
@@ -16857,9 +17205,13 @@ $.widget( "ui.spinner", {
16857
17205
  }
16858
17206
  },
16859
17207
  mousewheel: function( event, delta ) {
16860
- if ( !delta ) {
17208
+ var activeElement = $.ui.safeActiveElement( this.document[ 0 ] );
17209
+ var isActive = this.element[ 0 ] === activeElement;
17210
+
17211
+ if ( !isActive || !delta ) {
16861
17212
  return;
16862
17213
  }
17214
+
16863
17215
  if ( !this.spinning && !this._start( event ) ) {
16864
17216
  return false;
16865
17217
  }
@@ -17057,7 +17409,7 @@ $.widget( "ui.spinner", {
17057
17409
  var incremental = this.options.incremental;
17058
17410
 
17059
17411
  if ( incremental ) {
17060
- return $.isFunction( incremental ) ?
17412
+ return typeof incremental === "function" ?
17061
17413
  incremental( i ) :
17062
17414
  Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
17063
17415
  }
@@ -17155,7 +17507,7 @@ $.widget( "ui.spinner", {
17155
17507
  this.buttons.button( value ? "disable" : "enable" );
17156
17508
  },
17157
17509
 
17158
- _setOptions: spinnerModifer( function( options ) {
17510
+ _setOptions: spinnerModifier( function( options ) {
17159
17511
  this._super( options );
17160
17512
  } ),
17161
17513
 
@@ -17222,7 +17574,7 @@ $.widget( "ui.spinner", {
17222
17574
  this.uiSpinner.replaceWith( this.element );
17223
17575
  },
17224
17576
 
17225
- stepUp: spinnerModifer( function( steps ) {
17577
+ stepUp: spinnerModifier( function( steps ) {
17226
17578
  this._stepUp( steps );
17227
17579
  } ),
17228
17580
  _stepUp: function( steps ) {
@@ -17232,7 +17584,7 @@ $.widget( "ui.spinner", {
17232
17584
  }
17233
17585
  },
17234
17586
 
17235
- stepDown: spinnerModifer( function( steps ) {
17587
+ stepDown: spinnerModifier( function( steps ) {
17236
17588
  this._stepDown( steps );
17237
17589
  } ),
17238
17590
  _stepDown: function( steps ) {
@@ -17242,11 +17594,11 @@ $.widget( "ui.spinner", {
17242
17594
  }
17243
17595
  },
17244
17596
 
17245
- pageUp: spinnerModifer( function( pages ) {
17597
+ pageUp: spinnerModifier( function( pages ) {
17246
17598
  this._stepUp( ( pages || 1 ) * this.options.page );
17247
17599
  } ),
17248
17600
 
17249
- pageDown: spinnerModifer( function( pages ) {
17601
+ pageDown: spinnerModifier( function( pages ) {
17250
17602
  this._stepDown( ( pages || 1 ) * this.options.page );
17251
17603
  } ),
17252
17604
 
@@ -17254,7 +17606,7 @@ $.widget( "ui.spinner", {
17254
17606
  if ( !arguments.length ) {
17255
17607
  return this._parse( this.element.val() );
17256
17608
  }
17257
- spinnerModifer( this._value ).call( this, newVal );
17609
+ spinnerModifier( this._value ).call( this, newVal );
17258
17610
  },
17259
17611
 
17260
17612
  widget: function() {
@@ -17291,7 +17643,7 @@ var widgetsSpinner = $.ui.spinner;
17291
17643
 
17292
17644
 
17293
17645
  /*!
17294
- * jQuery UI Tabs 1.12.1
17646
+ * jQuery UI Tabs 1.13.1
17295
17647
  * http://jqueryui.com
17296
17648
  *
17297
17649
  * Copyright jQuery Foundation and other contributors
@@ -17309,9 +17661,8 @@ var widgetsSpinner = $.ui.spinner;
17309
17661
  //>>css.theme: ../../themes/base/theme.css
17310
17662
 
17311
17663
 
17312
-
17313
17664
  $.widget( "ui.tabs", {
17314
- version: "1.12.1",
17665
+ version: "1.13.1",
17315
17666
  delay: 300,
17316
17667
  options: {
17317
17668
  active: null,
@@ -17369,8 +17720,8 @@ $.widget( "ui.tabs", {
17369
17720
 
17370
17721
  // Take disabling tabs via class attribute from HTML
17371
17722
  // into account and update option properly.
17372
- if ( $.isArray( options.disabled ) ) {
17373
- options.disabled = $.unique( options.disabled.concat(
17723
+ if ( Array.isArray( options.disabled ) ) {
17724
+ options.disabled = $.uniqueSort( options.disabled.concat(
17374
17725
  $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
17375
17726
  return that.tabs.index( li );
17376
17727
  } )
@@ -17705,7 +18056,6 @@ $.widget( "ui.tabs", {
17705
18056
  return $( "a", this )[ 0 ];
17706
18057
  } )
17707
18058
  .attr( {
17708
- role: "presentation",
17709
18059
  tabIndex: -1
17710
18060
  } );
17711
18061
  this._addClass( this.anchors, "ui-tabs-anchor" );
@@ -17777,7 +18127,7 @@ $.widget( "ui.tabs", {
17777
18127
  _setOptionDisabled: function( disabled ) {
17778
18128
  var currentItem, li, i;
17779
18129
 
17780
- if ( $.isArray( disabled ) ) {
18130
+ if ( Array.isArray( disabled ) ) {
17781
18131
  if ( !disabled.length ) {
17782
18132
  disabled = false;
17783
18133
  } else if ( disabled.length === this.anchors.length ) {
@@ -18008,7 +18358,7 @@ $.widget( "ui.tabs", {
18008
18358
  // meta-function to give users option to provide a href string instead of a numerical index.
18009
18359
  if ( typeof index === "string" ) {
18010
18360
  index = this.anchors.index( this.anchors.filter( "[href$='" +
18011
- $.ui.escapeSelector( index ) + "']" ) );
18361
+ $.escapeSelector( index ) + "']" ) );
18012
18362
  }
18013
18363
 
18014
18364
  return index;
@@ -18065,7 +18415,7 @@ $.widget( "ui.tabs", {
18065
18415
  disabled = false;
18066
18416
  } else {
18067
18417
  index = this._getIndex( index );
18068
- if ( $.isArray( disabled ) ) {
18418
+ if ( Array.isArray( disabled ) ) {
18069
18419
  disabled = $.map( disabled, function( num ) {
18070
18420
  return num !== index ? num : null;
18071
18421
  } );
@@ -18091,7 +18441,7 @@ $.widget( "ui.tabs", {
18091
18441
  if ( $.inArray( index, disabled ) !== -1 ) {
18092
18442
  return;
18093
18443
  }
18094
- if ( $.isArray( disabled ) ) {
18444
+ if ( Array.isArray( disabled ) ) {
18095
18445
  disabled = $.merge( [ index ], disabled ).sort();
18096
18446
  } else {
18097
18447
  disabled = [ index ];
@@ -18197,7 +18547,7 @@ var widgetsTabs = $.ui.tabs;
18197
18547
 
18198
18548
 
18199
18549
  /*!
18200
- * jQuery UI Tooltip 1.12.1
18550
+ * jQuery UI Tooltip 1.13.1
18201
18551
  * http://jqueryui.com
18202
18552
  *
18203
18553
  * Copyright jQuery Foundation and other contributors
@@ -18215,18 +18565,14 @@ var widgetsTabs = $.ui.tabs;
18215
18565
  //>>css.theme: ../../themes/base/theme.css
18216
18566
 
18217
18567
 
18218
-
18219
18568
  $.widget( "ui.tooltip", {
18220
- version: "1.12.1",
18569
+ version: "1.13.1",
18221
18570
  options: {
18222
18571
  classes: {
18223
18572
  "ui-tooltip": "ui-corner-all ui-widget-shadow"
18224
18573
  },
18225
18574
  content: function() {
18226
-
18227
- // support: IE<9, Opera in jQuery <1.7
18228
- // .text() can't accept undefined, so coerce to a string
18229
- var title = $( this ).attr( "title" ) || "";
18575
+ var title = $( this ).attr( "title" );
18230
18576
 
18231
18577
  // Escape title, since we're going from an attribute to raw HTML
18232
18578
  return $( "<a>" ).text( title ).html();
@@ -18253,7 +18599,7 @@ $.widget( "ui.tooltip", {
18253
18599
  describedby.push( id );
18254
18600
  elem
18255
18601
  .data( "ui-tooltip-id", id )
18256
- .attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
18602
+ .attr( "aria-describedby", String.prototype.trim.call( describedby.join( " " ) ) );
18257
18603
  },
18258
18604
 
18259
18605
  _removeDescribedBy: function( elem ) {
@@ -18266,7 +18612,7 @@ $.widget( "ui.tooltip", {
18266
18612
  }
18267
18613
 
18268
18614
  elem.removeData( "ui-tooltip-id" );
18269
- describedby = $.trim( describedby.join( " " ) );
18615
+ describedby = String.prototype.trim.call( describedby.join( " " ) );
18270
18616
  if ( describedby ) {
18271
18617
  elem.attr( "aria-describedby", describedby );
18272
18618
  } else {
@@ -18512,7 +18858,7 @@ $.widget( "ui.tooltip", {
18512
18858
  position( positionOption.of );
18513
18859
  clearInterval( delayedShow );
18514
18860
  }
18515
- }, $.fx.interval );
18861
+ }, 13 );
18516
18862
  }
18517
18863
 
18518
18864
  this._trigger( "open", event, { tooltip: tooltip } );
@@ -18533,7 +18879,10 @@ $.widget( "ui.tooltip", {
18533
18879
  // tooltips will handle this in destroy.
18534
18880
  if ( target[ 0 ] !== this.element[ 0 ] ) {
18535
18881
  events.remove = function() {
18536
- this._removeTooltip( this._find( target ).tooltip );
18882
+ var targetElement = this._find( target );
18883
+ if ( targetElement ) {
18884
+ this._removeTooltip( targetElement.tooltip );
18885
+ }
18537
18886
  };
18538
18887
  }
18539
18888
 
@@ -18633,6 +18982,10 @@ $.widget( "ui.tooltip", {
18633
18982
  },
18634
18983
 
18635
18984
  _removeTooltip: function( tooltip ) {
18985
+
18986
+ // Clear the interval for delayed tracking tooltips
18987
+ clearInterval( this.delayedShow );
18988
+
18636
18989
  tooltip.remove();
18637
18990
  delete this.tooltips[ tooltip.attr( "id" ) ];
18638
18991
  },
@@ -18698,4 +19051,7 @@ if ( $.uiBackCompat !== false ) {
18698
19051
 
18699
19052
  var widgetsTooltip = $.ui.tooltip;
18700
19053
 
18701
- }));
19054
+
19055
+
19056
+
19057
+ } );