jquery-slick-rails 1.5.5 → 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e921ead92b050a692dcfb2f9ad95b45e3646e77e
4
- data.tar.gz: 2c6f44783513c0ae9125d65e16662fd81bd7c57b
3
+ metadata.gz: 7a48376d4d3e5ed542f11b82c43d6b356e92700d
4
+ data.tar.gz: 3e2ad7dd6c16674a9ca7f073b5f80764bc40ea33
5
5
  SHA512:
6
- metadata.gz: 5a7396d04e79882dff051c2bcd31fdd14d9d8b76e58248fa97846acc05efdb7de518526fb58d82eaa21785d669de1c16616eddeac2a56257fd032660c48cd81d
7
- data.tar.gz: 5c52d4b74720864e4235f42ea89900762b3022eba26344a34c6202d572fed3f5584f9a8f635d191d97db4254ab7fd101b0c3878d29f833d37c2edd386bc87214
6
+ metadata.gz: c24480672e9aecd3c189c80ff4eee846374b8aca07f1838bb70aa0bcd17ff544efcd882a88c7536679960d6f9355de19b3a240043103cb9b9821773feb12bb66
7
+ data.tar.gz: 93a3ab8c9d475f61d324c377d6bee632c94664f7a9f2ac064633715191a0d07ff4262543509d568abb01d2e391fb2dfcef1f4d094aecdb662a4e2b770c2d9a27
@@ -6,7 +6,7 @@
6
6
  |___/_|_|\___|_|\_(_)/ |___/
7
7
  |__/
8
8
 
9
- Version: 1.5.5
9
+ Version: 1.5.6
10
10
  Author: Ken Wheeler
11
11
  Website: http://kenwheeler.github.io
12
12
  Docs: http://kenwheeler.github.io/slick
@@ -35,8 +35,7 @@
35
35
 
36
36
  function Slick(element, settings) {
37
37
 
38
- var _ = this,
39
- dataSettings, responsiveSettings, breakpoint;
38
+ var _ = this, dataSettings;
40
39
 
41
40
  _.defaults = {
42
41
  accessibility: true,
@@ -45,15 +44,15 @@
45
44
  appendDots: $(element),
46
45
  arrows: true,
47
46
  asNavFor: null,
48
- prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="previous">Previous</button>',
49
- nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="next">Next</button>',
47
+ prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
48
+ nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
50
49
  autoplay: false,
51
50
  autoplaySpeed: 3000,
52
51
  centerMode: false,
53
52
  centerPadding: '50px',
54
53
  cssEase: 'ease',
55
54
  customPaging: function(slider, i) {
56
- return '<button type="button" data-role="none">' + (i + 1) + '</button>';
55
+ return '<button type="button" data-role="none" role="button" aria-required="false" tabindex="0">' + (i + 1) + '</button>';
57
56
  },
58
57
  dots: false,
59
58
  dotsClass: 'slick-dots',
@@ -85,7 +84,8 @@
85
84
  variableWidth: false,
86
85
  vertical: false,
87
86
  verticalSwiping: false,
88
- waitForAnimate: true
87
+ waitForAnimate: true,
88
+ zIndex: 1000
89
89
  };
90
90
 
91
91
  _.initials = {
@@ -144,27 +144,6 @@
144
144
  _.currentSlide = _.options.initialSlide;
145
145
 
146
146
  _.originalSettings = _.options;
147
- responsiveSettings = _.options.responsive || null;
148
-
149
- if (responsiveSettings && responsiveSettings.length > -1) {
150
- _.respondTo = _.options.respondTo || 'window';
151
- for (breakpoint in responsiveSettings) {
152
- if (responsiveSettings.hasOwnProperty(breakpoint)) {
153
- _.breakpoints.push(responsiveSettings[
154
- breakpoint].breakpoint);
155
- _.breakpointSettings[responsiveSettings[
156
- breakpoint].breakpoint] =
157
- responsiveSettings[breakpoint].settings;
158
- }
159
- }
160
- _.breakpoints.sort(function(a, b) {
161
- if (_.options.mobileFirst === true) {
162
- return a - b;
163
- } else {
164
- return b - a;
165
- }
166
- });
167
- }
168
147
 
169
148
  if (typeof document.mozHidden !== 'undefined') {
170
149
  _.hidden = 'mozHidden';
@@ -192,8 +171,9 @@
192
171
  // Extracted from jQuery v1.11 source
193
172
  _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
194
173
 
195
- _.init(true);
196
174
 
175
+ _.registerBreakpoints();
176
+ _.init(true);
197
177
  _.checkResponsive(true);
198
178
 
199
179
  }
@@ -346,7 +326,7 @@
346
326
  asNavFor = $(asNavFor).not(_.$slider);
347
327
  }
348
328
 
349
- if ( asNavFor !== null && typeof asNavFor === "object" ) {
329
+ if ( asNavFor !== null && typeof asNavFor === 'object' ) {
350
330
  asNavFor.each(function() {
351
331
  var target = $(this).slick('getSlick');
352
332
  if(!target.unslicked) {
@@ -439,21 +419,40 @@
439
419
 
440
420
  var _ = this;
441
421
 
442
- if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
422
+ if (_.options.arrows === true ) {
443
423
 
444
- _.$prevArrow = $(_.options.prevArrow);
445
- _.$nextArrow = $(_.options.nextArrow);
424
+ _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
425
+ _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');
446
426
 
447
- if (_.htmlExpr.test(_.options.prevArrow)) {
448
- _.$prevArrow.appendTo(_.options.appendArrows);
449
- }
427
+ if( _.slideCount > _.options.slidesToShow ) {
450
428
 
451
- if (_.htmlExpr.test(_.options.nextArrow)) {
452
- _.$nextArrow.appendTo(_.options.appendArrows);
453
- }
429
+ _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
430
+ _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
431
+
432
+ if (_.htmlExpr.test(_.options.prevArrow)) {
433
+ _.$prevArrow.prependTo(_.options.appendArrows);
434
+ }
435
+
436
+ if (_.htmlExpr.test(_.options.nextArrow)) {
437
+ _.$nextArrow.appendTo(_.options.appendArrows);
438
+ }
439
+
440
+ if (_.options.infinite !== true) {
441
+ _.$prevArrow
442
+ .addClass('slick-disabled')
443
+ .attr('aria-disabled', 'true');
444
+ }
445
+
446
+ } else {
447
+
448
+ _.$prevArrow.add( _.$nextArrow )
449
+
450
+ .addClass('slick-hidden')
451
+ .attr({
452
+ 'aria-disabled': 'true',
453
+ 'tabindex': '-1'
454
+ });
454
455
 
455
- if (_.options.infinite !== true) {
456
- _.$prevArrow.addClass('slick-disabled');
457
456
  }
458
457
 
459
458
  }
@@ -488,9 +487,11 @@
488
487
 
489
488
  var _ = this;
490
489
 
491
- _.$slides = _.$slider.children(
492
- ':not(.slick-cloned)').addClass(
493
- 'slick-slide');
490
+ _.$slides =
491
+ _.$slider
492
+ .children( _.options.slide + ':not(.slick-cloned)')
493
+ .addClass('slick-slide');
494
+
494
495
  _.slideCount = _.$slides.length;
495
496
 
496
497
  _.$slides.each(function(index, element) {
@@ -525,11 +526,8 @@
525
526
 
526
527
  _.updateDots();
527
528
 
528
- if (_.options.accessibility === true) {
529
- _.$list.prop('tabIndex', 0);
530
- }
531
529
 
532
- _.setSlideClasses(typeof this.currentSlide === 'number' ? this.currentSlide : 0);
530
+ _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
533
531
 
534
532
  if (_.options.draggable === true) {
535
533
  _.$list.addClass('draggable');
@@ -545,6 +543,7 @@
545
543
  originalSlides = _.$slider.children();
546
544
 
547
545
  if(_.options.rows > 1) {
546
+
548
547
  slidesPerSection = _.options.slidesPerRow * _.options.rows;
549
548
  numOfSlides = Math.ceil(
550
549
  originalSlides.length / slidesPerSection
@@ -563,18 +562,20 @@
563
562
  slide.appendChild(row);
564
563
  }
565
564
  newSlides.appendChild(slide);
566
- };
565
+ }
566
+
567
567
  _.$slider.html(newSlides);
568
568
  _.$slider.children().children().children()
569
569
  .css({
570
- 'width':(100 / _.options.slidesPerRow) + "%",
570
+ 'width':(100 / _.options.slidesPerRow) + '%',
571
571
  'display': 'inline-block'
572
572
  });
573
- };
573
+
574
+ }
574
575
 
575
576
  };
576
577
 
577
- Slick.prototype.checkResponsive = function(initial) {
578
+ Slick.prototype.checkResponsive = function(initial, forceUpdate) {
578
579
 
579
580
  var _ = this,
580
581
  breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
@@ -589,8 +590,9 @@
589
590
  respondToWidth = Math.min(windowWidth, sliderWidth);
590
591
  }
591
592
 
592
- if (_.originalSettings.responsive && _.originalSettings
593
- .responsive.length > -1 && _.originalSettings.responsive !== null) {
593
+ if ( _.options.responsive &&
594
+ _.options.responsive.length &&
595
+ _.options.responsive !== null) {
594
596
 
595
597
  targetBreakpoint = null;
596
598
 
@@ -610,7 +612,7 @@
610
612
 
611
613
  if (targetBreakpoint !== null) {
612
614
  if (_.activeBreakpoint !== null) {
613
- if (targetBreakpoint !== _.activeBreakpoint) {
615
+ if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
614
616
  _.activeBreakpoint =
615
617
  targetBreakpoint;
616
618
  if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
@@ -701,7 +703,7 @@
701
703
  event.data.index || $target.index() * _.options.slidesToScroll;
702
704
 
703
705
  _.slideHandler(_.checkNavigable(index), false, dontAnimate);
704
- $target.children().trigger("focus");
706
+ $target.children().trigger('focus');
705
707
  break;
706
708
 
707
709
  default:
@@ -824,17 +826,35 @@
824
826
  if (_.$dots) {
825
827
  _.$dots.remove();
826
828
  }
827
- if (_.$prevArrow && (typeof _.options.prevArrow !== 'object')) {
828
- _.$prevArrow.remove();
829
+
830
+ if ( _.$prevArrow.length ) {
831
+
832
+ _.$prevArrow
833
+ .removeClass('slick-disabled slick-arrow slick-hidden')
834
+ .removeAttr('aria-hidden aria-disabled tabindex')
835
+ .css("display","");
836
+
837
+ if ( _.htmlExpr.test( _.options.prevArrow )) {
838
+ _.$prevArrow.remove();
839
+ }
829
840
  }
830
- if (_.$nextArrow && (typeof _.options.nextArrow !== 'object')) {
831
- _.$nextArrow.remove();
841
+
842
+ if ( _.$nextArrow.length ) {
843
+
844
+ _.$nextArrow
845
+ .removeClass('slick-disabled slick-arrow slick-hidden')
846
+ .removeAttr('aria-hidden aria-disabled tabindex')
847
+ .css("display","");
848
+
849
+ if ( _.htmlExpr.test( _.options.nextArrow )) {
850
+ _.$nextArrow.remove();
851
+ }
832
852
  }
833
853
 
834
854
  if (_.$slides) {
835
855
 
836
856
  _.$slides
837
- .removeClass('slick-slide slick-active slick-center slick-visible')
857
+ .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
838
858
  .removeAttr('aria-hidden')
839
859
  .removeAttr('data-slick-index')
840
860
  .each(function(){
@@ -885,7 +905,7 @@
885
905
  if (_.cssTransitions === false) {
886
906
 
887
907
  _.$slides.eq(slideIndex).css({
888
- zIndex: 1000
908
+ zIndex: _.options.zIndex
889
909
  });
890
910
 
891
911
  _.$slides.eq(slideIndex).animate({
@@ -898,7 +918,7 @@
898
918
 
899
919
  _.$slides.eq(slideIndex).css({
900
920
  opacity: 1,
901
- zIndex: 1000
921
+ zIndex: _.options.zIndex
902
922
  });
903
923
 
904
924
  if (callback) {
@@ -914,6 +934,30 @@
914
934
 
915
935
  };
916
936
 
937
+ Slick.prototype.fadeSlideOut = function(slideIndex) {
938
+
939
+ var _ = this;
940
+
941
+ if (_.cssTransitions === false) {
942
+
943
+ _.$slides.eq(slideIndex).animate({
944
+ opacity: 0,
945
+ zIndex: _.options.zIndex - 2
946
+ }, _.options.speed, _.options.easing);
947
+
948
+ } else {
949
+
950
+ _.applyTransition(slideIndex);
951
+
952
+ _.$slides.eq(slideIndex).css({
953
+ opacity: 0,
954
+ zIndex: _.options.zIndex - 2
955
+ });
956
+
957
+ }
958
+
959
+ };
960
+
917
961
  Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
918
962
 
919
963
  var _ = this;
@@ -976,7 +1020,7 @@
976
1020
  targetSlide;
977
1021
 
978
1022
  _.slideOffset = 0;
979
- verticalHeight = _.$slides.first().outerHeight();
1023
+ verticalHeight = _.$slides.first().outerHeight(true);
980
1024
 
981
1025
  if (_.options.infinite === true) {
982
1026
  if (_.slideCount > _.options.slidesToShow) {
@@ -1129,6 +1173,7 @@
1129
1173
  if (!$(_.$slider).hasClass('slick-initialized')) {
1130
1174
 
1131
1175
  $(_.$slider).addClass('slick-initialized');
1176
+
1132
1177
  _.buildRows();
1133
1178
  _.buildOut();
1134
1179
  _.setProps();
@@ -1137,12 +1182,17 @@
1137
1182
  _.initializeEvents();
1138
1183
  _.updateArrows();
1139
1184
  _.updateDots();
1185
+
1140
1186
  }
1141
1187
 
1142
1188
  if (creation) {
1143
1189
  _.$slider.trigger('init', [_]);
1144
1190
  }
1145
1191
 
1192
+ if (_.options.accessibility === true) {
1193
+ _.initADA();
1194
+ }
1195
+
1146
1196
  };
1147
1197
 
1148
1198
  Slick.prototype.initArrowEvents = function() {
@@ -1253,19 +1303,21 @@
1253
1303
  Slick.prototype.keyHandler = function(event) {
1254
1304
 
1255
1305
  var _ = this;
1256
-
1257
- if (event.keyCode === 37 && _.options.accessibility === true) {
1258
- _.changeSlide({
1259
- data: {
1260
- message: 'previous'
1261
- }
1262
- });
1263
- } else if (event.keyCode === 39 && _.options.accessibility === true) {
1264
- _.changeSlide({
1265
- data: {
1266
- message: 'next'
1267
- }
1268
- });
1306
+ //Dont slide if the cursor is inside the form fields and arrow keys are pressed
1307
+ if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
1308
+ if (event.keyCode === 37 && _.options.accessibility === true) {
1309
+ _.changeSlide({
1310
+ data: {
1311
+ message: 'previous'
1312
+ }
1313
+ });
1314
+ } else if (event.keyCode === 39 && _.options.accessibility === true) {
1315
+ _.changeSlide({
1316
+ data: {
1317
+ message: 'next'
1318
+ }
1319
+ });
1320
+ }
1269
1321
  }
1270
1322
 
1271
1323
  };
@@ -1277,24 +1329,26 @@
1277
1329
 
1278
1330
  function loadImages(imagesScope) {
1279
1331
  $('img[data-lazy]', imagesScope).each(function() {
1332
+
1280
1333
  var image = $(this),
1281
1334
  imageSource = $(this).attr('data-lazy'),
1282
1335
  imageToLoad = document.createElement('img');
1283
1336
 
1284
1337
  imageToLoad.onload = function() {
1285
- image.animate({
1286
- opacity: 1
1287
- }, 200);
1338
+ image
1339
+ .animate({ opacity: 0 }, 100, function() {
1340
+ image
1341
+ .attr('src', imageSource)
1342
+ .animate({ opacity: 1 }, 200, function() {
1343
+ image
1344
+ .removeAttr('data-lazy')
1345
+ .removeClass('slick-loading');
1346
+ });
1347
+ });
1288
1348
  };
1349
+
1289
1350
  imageToLoad.src = imageSource;
1290
1351
 
1291
- image
1292
- .css({
1293
- opacity: 0
1294
- })
1295
- .attr('src', imageSource)
1296
- .removeAttr('data-lazy')
1297
- .removeClass('slick-loading');
1298
1352
  });
1299
1353
  }
1300
1354
 
@@ -1406,6 +1460,9 @@
1406
1460
  if (_.options.autoplay === true && _.paused === false) {
1407
1461
  _.autoPlay();
1408
1462
  }
1463
+ if (_.options.accessibility === true) {
1464
+ _.initADA();
1465
+ }
1409
1466
 
1410
1467
  };
1411
1468
 
@@ -1457,7 +1514,7 @@
1457
1514
 
1458
1515
  _.destroy(true);
1459
1516
 
1460
- $.extend(_, _.initials);
1517
+ $.extend(_, _.initials, { currentSlide: currentSlide });
1461
1518
 
1462
1519
  _.init();
1463
1520
 
@@ -1474,12 +1531,54 @@
1474
1531
 
1475
1532
  };
1476
1533
 
1534
+ Slick.prototype.registerBreakpoints = function() {
1535
+
1536
+ var _ = this, breakpoint, currentBreakpoint, l,
1537
+ responsiveSettings = _.options.responsive || null;
1538
+
1539
+ if ( $.type(responsiveSettings) === "array" && responsiveSettings.length ) {
1540
+
1541
+ _.respondTo = _.options.respondTo || 'window';
1542
+
1543
+ for ( breakpoint in responsiveSettings ) {
1544
+
1545
+ l = _.breakpoints.length-1;
1546
+ currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
1547
+
1548
+ if (responsiveSettings.hasOwnProperty(breakpoint)) {
1549
+
1550
+ // loop through the breakpoints and cut out any existing
1551
+ // ones with the same breakpoint number, we don't want dupes.
1552
+ while( l >= 0 ) {
1553
+ if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
1554
+ _.breakpoints.splice(l,1);
1555
+ }
1556
+ l--;
1557
+ }
1558
+
1559
+ _.breakpoints.push(currentBreakpoint);
1560
+ _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
1561
+
1562
+ }
1563
+
1564
+ }
1565
+
1566
+ _.breakpoints.sort(function(a, b) {
1567
+ return ( _.options.mobileFirst ) ? a-b : b-a;
1568
+ });
1569
+
1570
+ }
1571
+
1572
+ };
1573
+
1477
1574
  Slick.prototype.reinit = function() {
1478
1575
 
1479
1576
  var _ = this;
1480
1577
 
1481
- _.$slides = _.$slideTrack.children(_.options.slide).addClass(
1482
- 'slick-slide');
1578
+ _.$slides =
1579
+ _.$slideTrack
1580
+ .children(_.options.slide)
1581
+ .addClass('slick-slide');
1483
1582
 
1484
1583
  _.slideCount = _.$slides.length;
1485
1584
 
@@ -1491,22 +1590,19 @@
1491
1590
  _.currentSlide = 0;
1492
1591
  }
1493
1592
 
1494
- _.setProps();
1593
+ _.registerBreakpoints();
1495
1594
 
1595
+ _.setProps();
1496
1596
  _.setupInfinite();
1497
-
1498
1597
  _.buildArrows();
1499
-
1500
1598
  _.updateArrows();
1501
-
1502
1599
  _.initArrowEvents();
1503
-
1504
1600
  _.buildDots();
1505
-
1506
1601
  _.updateDots();
1507
-
1508
1602
  _.initDotEvents();
1509
1603
 
1604
+ _.checkResponsive(false, true);
1605
+
1510
1606
  if (_.options.focusOnSelect === true) {
1511
1607
  $(_.$slideTrack).children().on('click.slick', _.selectHandler);
1512
1608
  }
@@ -1517,6 +1613,10 @@
1517
1613
 
1518
1614
  _.$slider.trigger('reInit', [_]);
1519
1615
 
1616
+ if (_.options.autoplay === true) {
1617
+ _.focusHandler();
1618
+ }
1619
+
1520
1620
  };
1521
1621
 
1522
1622
  Slick.prototype.resize = function() {
@@ -1648,7 +1748,7 @@
1648
1748
  position: 'relative',
1649
1749
  right: targetLeft,
1650
1750
  top: 0,
1651
- zIndex: 800,
1751
+ zIndex: _.options.zIndex - 2,
1652
1752
  opacity: 0
1653
1753
  });
1654
1754
  } else {
@@ -1656,14 +1756,14 @@
1656
1756
  position: 'relative',
1657
1757
  left: targetLeft,
1658
1758
  top: 0,
1659
- zIndex: 800,
1759
+ zIndex: _.options.zIndex - 2,
1660
1760
  opacity: 0
1661
1761
  });
1662
1762
  }
1663
1763
  });
1664
1764
 
1665
1765
  _.$slides.eq(_.currentSlide).css({
1666
- zIndex: 900,
1766
+ zIndex: _.options.zIndex - 1,
1667
1767
  opacity: 1
1668
1768
  });
1669
1769
 
@@ -1682,8 +1782,27 @@
1682
1782
 
1683
1783
  Slick.prototype.setOption = Slick.prototype.slickSetOption = function(option, value, refresh) {
1684
1784
 
1685
- var _ = this;
1686
- _.options[option] = value;
1785
+ var _ = this, l, item;
1786
+
1787
+ if( option === "responsive" && $.type(value) === "array" ) {
1788
+ for ( item in value ) {
1789
+ if( $.type( _.options.responsive ) !== "array" ) {
1790
+ _.options.responsive = [ value[item] ];
1791
+ } else {
1792
+ l = _.options.responsive.length-1;
1793
+ // loop through the responsive object and splice out duplicates.
1794
+ while( l >= 0 ) {
1795
+ if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
1796
+ _.options.responsive.splice(l,1);
1797
+ }
1798
+ l--;
1799
+ }
1800
+ _.options.responsive.push( value[item] );
1801
+ }
1802
+ }
1803
+ } else {
1804
+ _.options[option] = value;
1805
+ }
1687
1806
 
1688
1807
  if (refresh === true) {
1689
1808
  _.unload();
@@ -1731,6 +1850,16 @@
1731
1850
  }
1732
1851
  }
1733
1852
 
1853
+ if ( _.options.fade ) {
1854
+ if ( typeof _.options.zIndex === 'number' ) {
1855
+ if( _.options.zIndex < 3 ) {
1856
+ _.options.zIndex = 3;
1857
+ }
1858
+ } else {
1859
+ _.options.zIndex = _.defaults.zIndex;
1860
+ }
1861
+ }
1862
+
1734
1863
  if (bodyStyle.OTransform !== undefined) {
1735
1864
  _.animType = 'OTransform';
1736
1865
  _.transformType = '-o-transform';
@@ -1770,8 +1899,14 @@
1770
1899
  var _ = this,
1771
1900
  centerOffset, allSlides, indexOffset, remainder;
1772
1901
 
1773
- _.$slider.find('.slick-slide').removeClass('slick-active').attr('aria-hidden', 'true').removeClass('slick-center');
1774
- allSlides = _.$slider.find('.slick-slide');
1902
+ allSlides = _.$slider
1903
+ .find('.slick-slide')
1904
+ .removeClass('slick-active slick-center slick-current')
1905
+ .attr('aria-hidden', 'true');
1906
+
1907
+ _.$slides
1908
+ .eq(index)
1909
+ .addClass('slick-current');
1775
1910
 
1776
1911
  if (_.options.centerMode === true) {
1777
1912
 
@@ -1780,36 +1915,78 @@
1780
1915
  if (_.options.infinite === true) {
1781
1916
 
1782
1917
  if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
1783
- _.$slides.slice(index - centerOffset, index + centerOffset + 1).addClass('slick-active').attr('aria-hidden', 'false');
1918
+
1919
+ _.$slides
1920
+ .slice(index - centerOffset, index + centerOffset + 1)
1921
+ .addClass('slick-active')
1922
+ .attr('aria-hidden', 'false');
1923
+
1784
1924
  } else {
1925
+
1785
1926
  indexOffset = _.options.slidesToShow + index;
1786
- allSlides.slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2).addClass('slick-active').attr('aria-hidden', 'false');
1927
+ allSlides
1928
+ .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)
1929
+ .addClass('slick-active')
1930
+ .attr('aria-hidden', 'false');
1931
+
1787
1932
  }
1788
1933
 
1789
1934
  if (index === 0) {
1790
- allSlides.eq(allSlides.length - 1 - _.options.slidesToShow).addClass('slick-center');
1935
+
1936
+ allSlides
1937
+ .eq(allSlides.length - 1 - _.options.slidesToShow)
1938
+ .addClass('slick-center');
1939
+
1791
1940
  } else if (index === _.slideCount - 1) {
1792
- allSlides.eq(_.options.slidesToShow).addClass('slick-center');
1941
+
1942
+ allSlides
1943
+ .eq(_.options.slidesToShow)
1944
+ .addClass('slick-center');
1945
+
1793
1946
  }
1794
1947
 
1795
1948
  }
1796
1949
 
1797
- _.$slides.eq(index).addClass('slick-center');
1950
+ _.$slides
1951
+ .eq(index)
1952
+ .addClass('slick-center');
1798
1953
 
1799
1954
  } else {
1800
1955
 
1801
1956
  if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
1802
- _.$slides.slice(index, index + _.options.slidesToShow).addClass('slick-active').attr('aria-hidden', 'false');
1957
+
1958
+ _.$slides
1959
+ .slice(index, index + _.options.slidesToShow)
1960
+ .addClass('slick-active')
1961
+ .attr('aria-hidden', 'false');
1962
+
1803
1963
  } else if (allSlides.length <= _.options.slidesToShow) {
1804
- allSlides.addClass('slick-active').attr('aria-hidden', 'false');
1964
+
1965
+ allSlides
1966
+ .addClass('slick-active')
1967
+ .attr('aria-hidden', 'false');
1968
+
1805
1969
  } else {
1970
+
1806
1971
  remainder = _.slideCount % _.options.slidesToShow;
1807
1972
  indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
1973
+
1808
1974
  if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
1809
- allSlides.slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder).addClass('slick-active').attr('aria-hidden', 'false');
1975
+
1976
+ allSlides
1977
+ .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
1978
+ .addClass('slick-active')
1979
+ .attr('aria-hidden', 'false');
1980
+
1810
1981
  } else {
1811
- allSlides.slice(indexOffset, indexOffset + _.options.slidesToShow).addClass('slick-active').attr('aria-hidden', 'false');
1982
+
1983
+ allSlides
1984
+ .slice(indexOffset, indexOffset + _.options.slidesToShow)
1985
+ .addClass('slick-active')
1986
+ .attr('aria-hidden', 'false');
1987
+
1812
1988
  }
1989
+
1813
1990
  }
1814
1991
 
1815
1992
  }
@@ -1882,24 +2059,23 @@
1882
2059
 
1883
2060
  var _ = this;
1884
2061
 
1885
- var targetElement = $(event.target).is('.slick-slide') ?
1886
- $(event.target) :
1887
- $(event.target).parents('.slick-slide');
2062
+ var targetElement =
2063
+ $(event.target).is('.slick-slide') ?
2064
+ $(event.target) :
2065
+ $(event.target).parents('.slick-slide');
1888
2066
 
1889
2067
  var index = parseInt(targetElement.attr('data-slick-index'));
1890
2068
 
1891
2069
  if (!index) index = 0;
1892
2070
 
1893
2071
  if (_.slideCount <= _.options.slidesToShow) {
1894
- _.$slider.find('.slick-slide').removeClass('slick-active').attr('aria-hidden', 'true');
1895
- _.$slides.eq(index).addClass('slick-active').attr("aria-hidden", "false");
1896
- if (_.options.centerMode === true) {
1897
- _.$slider.find('.slick-slide').removeClass('slick-center');
1898
- _.$slides.eq(index).addClass('slick-center');
1899
- }
2072
+
2073
+ _.setSlideClasses(index);
1900
2074
  _.asNavFor(index);
1901
2075
  return;
2076
+
1902
2077
  }
2078
+
1903
2079
  _.slideHandler(index);
1904
2080
 
1905
2081
  };
@@ -1981,7 +2157,7 @@
1981
2157
 
1982
2158
  _.animating = true;
1983
2159
 
1984
- _.$slider.trigger("beforeChange", [_, _.currentSlide, animSlide]);
2160
+ _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);
1985
2161
 
1986
2162
  oldSlide = _.currentSlide;
1987
2163
  _.currentSlide = animSlide;
@@ -1993,9 +2169,13 @@
1993
2169
 
1994
2170
  if (_.options.fade === true) {
1995
2171
  if (dontAnimate !== true) {
2172
+
2173
+ _.fadeSlideOut(oldSlide);
2174
+
1996
2175
  _.fadeSlide(animSlide, function() {
1997
2176
  _.postSlide(animSlide);
1998
2177
  });
2178
+
1999
2179
  } else {
2000
2180
  _.postSlide(animSlide);
2001
2181
  }
@@ -2082,7 +2262,7 @@
2082
2262
  }
2083
2263
 
2084
2264
  if (_.touchObject.edgeHit === true) {
2085
- _.$slider.trigger("edge", [_, _.swipeDirection()]);
2265
+ _.$slider.trigger('edge', [_, _.swipeDirection()]);
2086
2266
  }
2087
2267
 
2088
2268
  if (_.touchObject.swipeLength >= _.touchObject.minSwipe) {
@@ -2093,7 +2273,7 @@
2093
2273
  _.slideHandler(slideCount);
2094
2274
  _.currentDirection = 0;
2095
2275
  _.touchObject = {};
2096
- _.$slider.trigger("swipe", [_, "left"]);
2276
+ _.$slider.trigger('swipe', [_, 'left']);
2097
2277
  break;
2098
2278
 
2099
2279
  case 'right':
@@ -2101,7 +2281,7 @@
2101
2281
  _.slideHandler(slideCount);
2102
2282
  _.currentDirection = 1;
2103
2283
  _.touchObject = {};
2104
- _.$slider.trigger("swipe", [_, "right"]);
2284
+ _.$slider.trigger('swipe', [_, 'right']);
2105
2285
  break;
2106
2286
  }
2107
2287
  } else {
@@ -2198,7 +2378,7 @@
2198
2378
  _.touchObject.edgeHit = false;
2199
2379
 
2200
2380
  if (_.options.infinite === false) {
2201
- if ((_.currentSlide === 0 && swipeDirection === "right") || (_.currentSlide >= _.getDotCount() && swipeDirection === "left")) {
2381
+ if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
2202
2382
  swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
2203
2383
  _.touchObject.edgeHit = true;
2204
2384
  }
@@ -2270,16 +2450,23 @@
2270
2450
  var _ = this;
2271
2451
 
2272
2452
  $('.slick-cloned', _.$slider).remove();
2453
+
2273
2454
  if (_.$dots) {
2274
2455
  _.$dots.remove();
2275
2456
  }
2276
- if (_.$prevArrow && (typeof _.options.prevArrow !== 'object')) {
2457
+
2458
+ if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
2277
2459
  _.$prevArrow.remove();
2278
2460
  }
2279
- if (_.$nextArrow && (typeof _.options.nextArrow !== 'object')) {
2461
+
2462
+ if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
2280
2463
  _.$nextArrow.remove();
2281
2464
  }
2282
- _.$slides.removeClass('slick-slide slick-active slick-visible').attr("aria-hidden", "true").css('width', '');
2465
+
2466
+ _.$slides
2467
+ .removeClass('slick-slide slick-active slick-visible slick-current')
2468
+ .attr('aria-hidden', 'true')
2469
+ .css('width', '');
2283
2470
 
2284
2471
  };
2285
2472
 
@@ -2298,20 +2485,30 @@
2298
2485
 
2299
2486
  centerOffset = Math.floor(_.options.slidesToShow / 2);
2300
2487
 
2301
- if (_.options.arrows === true && _.options.infinite !==
2302
- true && _.slideCount > _.options.slidesToShow) {
2303
- _.$prevArrow.removeClass('slick-disabled');
2304
- _.$nextArrow.removeClass('slick-disabled');
2488
+ if ( _.options.arrows === true &&
2489
+ _.slideCount > _.options.slidesToShow &&
2490
+ !_.options.infinite ) {
2491
+
2492
+ _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2493
+ _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2494
+
2305
2495
  if (_.currentSlide === 0) {
2306
- _.$prevArrow.addClass('slick-disabled');
2307
- _.$nextArrow.removeClass('slick-disabled');
2496
+
2497
+ _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
2498
+ _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2499
+
2308
2500
  } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
2309
- _.$nextArrow.addClass('slick-disabled');
2310
- _.$prevArrow.removeClass('slick-disabled');
2501
+
2502
+ _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
2503
+ _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2504
+
2311
2505
  } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
2312
- _.$nextArrow.addClass('slick-disabled');
2313
- _.$prevArrow.removeClass('slick-disabled');
2506
+
2507
+ _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
2508
+ _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2509
+
2314
2510
  }
2511
+
2315
2512
  }
2316
2513
 
2317
2514
  };
@@ -2322,8 +2519,16 @@
2322
2519
 
2323
2520
  if (_.$dots !== null) {
2324
2521
 
2325
- _.$dots.find('li').removeClass('slick-active').attr("aria-hidden", "true");
2326
- _.$dots.find('li').eq(Math.floor(_.currentSlide / _.options.slidesToScroll)).addClass('slick-active').attr("aria-hidden", "false");
2522
+ _.$dots
2523
+ .find('li')
2524
+ .removeClass('slick-active')
2525
+ .attr('aria-hidden', 'true');
2526
+
2527
+ _.$dots
2528
+ .find('li')
2529
+ .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
2530
+ .addClass('slick-active')
2531
+ .attr('aria-hidden', 'false');
2327
2532
 
2328
2533
  }
2329
2534
 
@@ -2344,6 +2549,75 @@
2344
2549
  }
2345
2550
 
2346
2551
  };
2552
+ Slick.prototype.initADA = function() {
2553
+ var _ = this;
2554
+ _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
2555
+ 'aria-hidden': 'true',
2556
+ 'tabindex': '-1'
2557
+ }).find('a, input, button, select').attr({
2558
+ 'tabindex': '-1'
2559
+ });
2560
+
2561
+ _.$slideTrack.attr('role', 'listbox');
2562
+
2563
+ _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
2564
+ $(this).attr({
2565
+ 'role': 'option',
2566
+ 'aria-describedby': 'slick-slide' + _.instanceUid + i + ''
2567
+ });
2568
+ });
2569
+
2570
+ if (_.$dots !== null) {
2571
+ _.$dots.attr('role', 'tablist').find('li').each(function(i) {
2572
+ $(this).attr({
2573
+ 'role': 'presentation',
2574
+ 'aria-selected': 'false',
2575
+ 'aria-controls': 'navigation' + _.instanceUid + i + '',
2576
+ 'id': 'slick-slide' + _.instanceUid + i + ''
2577
+ });
2578
+ })
2579
+ .first().attr('aria-selected', 'true').end()
2580
+ .find('button').attr('role', 'button').end()
2581
+ .closest('div').attr('role', 'toolbar');
2582
+ }
2583
+ _.activateADA();
2584
+
2585
+ };
2586
+
2587
+ Slick.prototype.activateADA = function() {
2588
+ var _ = this,
2589
+ _isSlideOnFocus =_.$slider.find('*').is(':focus');
2590
+ // _isSlideOnFocus = _.$slides.is(':focus') || _.$slides.find('*').is(':focus');
2591
+
2592
+ _.$slideTrack.find('.slick-active').attr({
2593
+ 'aria-hidden': 'false',
2594
+ 'tabindex': '0'
2595
+ }).find('a, input, button, select').attr({
2596
+ 'tabindex': '0'
2597
+ });
2598
+
2599
+ (_isSlideOnFocus) && _.$slideTrack.find('.slick-active').focus();
2600
+
2601
+ };
2602
+
2603
+ Slick.prototype.focusHandler = function() {
2604
+ var _ = this;
2605
+ _.$slider.on('focus.slick blur.slick', '*', function(event) {
2606
+ event.stopImmediatePropagation();
2607
+ var sf = $(this);
2608
+ setTimeout(function() {
2609
+ if (_.isPlay) {
2610
+ if (sf.is(':focus')) {
2611
+ _.autoPlayClear();
2612
+ _.paused = true;
2613
+ } else {
2614
+ _.paused = false;
2615
+ _.autoPlay();
2616
+ }
2617
+ }
2618
+ }, 0);
2619
+ });
2620
+ };
2347
2621
 
2348
2622
  $.fn.slick = function() {
2349
2623
  var _ = this,
@@ -113,4 +113,7 @@
113
113
  height: auto;
114
114
 
115
115
  border: 1px solid transparent;
116
+ }
117
+ .slick-arrow.slick-hidden {
118
+ display: none;
116
119
  }
@@ -1,3 +1,3 @@
1
1
  module JquerySlickRails
2
- VERSION = "1.5.5"
2
+ VERSION = "1.5.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery-slick-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.5
4
+ version: 1.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Bodrov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-15 00:00:00.000000000 Z
11
+ date: 2015-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -64,8 +64,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  version: '0'
65
65
  requirements: []
66
66
  rubyforge_project:
67
- rubygems_version: 2.4.6
67
+ rubygems_version: 2.4.7
68
68
  signing_key:
69
69
  specification_version: 4
70
70
  summary: Integrates Slick carousel into Rails app.
71
71
  test_files: []
72
+ has_rdoc: