lightgallery 2.4.0 → 2.5.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +4 -4
  2. package/css/lightgallery-bundle.css +11 -0
  3. package/css/lightgallery-bundle.min.css +1 -1
  4. package/css/lightgallery.css +11 -0
  5. package/lg-settings.d.ts +4 -0
  6. package/lg-utils.d.ts +1 -0
  7. package/lib/lg-settings.js +1 -0
  8. package/lib/lg-settings.js.map +1 -1
  9. package/lib/lg-utils.js +8 -0
  10. package/lib/lg-utils.js.map +1 -1
  11. package/lib/lightgallery.js +36 -3
  12. package/lib/lightgallery.js.map +1 -1
  13. package/lib/plugins/video/lg-video-settings.js +1 -0
  14. package/lib/plugins/video/lg-video-settings.js.map +1 -1
  15. package/lib/plugins/video/lg-video-utils.js +13 -5
  16. package/lib/plugins/video/lg-video-utils.js.map +1 -1
  17. package/lib/plugins/video/lg-video.js +3 -1
  18. package/lib/plugins/video/lg-video.js.map +1 -1
  19. package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail-settings.js +8 -0
  20. package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail-settings.js.map +1 -0
  21. package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail.js +122 -0
  22. package/lib/plugins/vimeoThumbnail/lg-vimeo-thumbnail.js.map +1 -0
  23. package/lightgallery.d.ts +1 -0
  24. package/lightgallery.es5.js +46 -4
  25. package/lightgallery.es5.js.map +1 -1
  26. package/lightgallery.min.js +2 -2
  27. package/lightgallery.umd.js +46 -4
  28. package/lightgallery.umd.js.map +1 -1
  29. package/lit/lightgallery.esm.js +7 -7
  30. package/lit/lightgallery.umd.js +3 -3
  31. package/package.json +1 -1
  32. package/plugins/autoplay/lg-autoplay.es5.js +1 -1
  33. package/plugins/autoplay/lg-autoplay.min.js +1 -1
  34. package/plugins/autoplay/lg-autoplay.umd.js +1 -1
  35. package/plugins/comment/lg-comment.es5.js +1 -1
  36. package/plugins/comment/lg-comment.min.js +1 -1
  37. package/plugins/comment/lg-comment.umd.js +1 -1
  38. package/plugins/fullscreen/lg-fullscreen.es5.js +1 -1
  39. package/plugins/fullscreen/lg-fullscreen.min.js +1 -1
  40. package/plugins/fullscreen/lg-fullscreen.umd.js +1 -1
  41. package/plugins/hash/lg-hash.es5.js +1 -1
  42. package/plugins/hash/lg-hash.min.js +1 -1
  43. package/plugins/hash/lg-hash.umd.js +1 -1
  44. package/plugins/mediumZoom/lg-medium-zoom.es5.js +1 -1
  45. package/plugins/mediumZoom/lg-medium-zoom.min.js +1 -1
  46. package/plugins/mediumZoom/lg-medium-zoom.umd.js +1 -1
  47. package/plugins/pager/lg-pager.es5.js +1 -1
  48. package/plugins/pager/lg-pager.min.js +1 -1
  49. package/plugins/pager/lg-pager.umd.js +1 -1
  50. package/plugins/relativeCaption/lg-relative-caption.es5.js +1 -1
  51. package/plugins/relativeCaption/lg-relative-caption.min.js +1 -1
  52. package/plugins/relativeCaption/lg-relative-caption.umd.js +1 -1
  53. package/plugins/rotate/lg-rotate.es5.js +1 -1
  54. package/plugins/rotate/lg-rotate.min.js +1 -1
  55. package/plugins/rotate/lg-rotate.umd.js +1 -1
  56. package/plugins/share/lg-share.es5.js +1 -1
  57. package/plugins/share/lg-share.min.js +1 -1
  58. package/plugins/share/lg-share.umd.js +1 -1
  59. package/plugins/thumbnail/lg-thumbnail.es5.js +1 -1
  60. package/plugins/thumbnail/lg-thumbnail.min.js +1 -1
  61. package/plugins/thumbnail/lg-thumbnail.umd.js +1 -1
  62. package/plugins/video/lg-video-settings.d.ts +6 -1
  63. package/plugins/video/lg-video.es5.js +18 -7
  64. package/plugins/video/lg-video.es5.js.map +1 -1
  65. package/plugins/video/lg-video.min.js +2 -2
  66. package/plugins/video/lg-video.umd.js +18 -7
  67. package/plugins/video/lg-video.umd.js.map +1 -1
  68. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail-settings.d.ts +11 -0
  69. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.d.ts +14 -0
  70. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js +182 -0
  71. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js.map +1 -0
  72. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js +8 -0
  73. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js +190 -0
  74. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js.map +1 -0
  75. package/plugins/vimeoThumbnail/package.json +7 -0
  76. package/plugins/zoom/lg-zoom.es5.js +1 -1
  77. package/plugins/zoom/lg-zoom.min.js +1 -1
  78. package/plugins/zoom/lg-zoom.umd.js +1 -1
  79. package/react/Lightgallery.es5.js +46 -4
  80. package/react/Lightgallery.es5.js.map +1 -1
  81. package/react/Lightgallery.umd.js +46 -4
  82. package/react/Lightgallery.umd.js.map +1 -1
  83. package/scss/_lg-theme-default.scss +16 -0
  84. package/vue/LightGalleryVue.common.js +77 -29
  85. package/vue/LightGalleryVue.common.js.map +1 -1
  86. package/vue/LightGalleryVue.umd.js +77 -29
  87. package/vue/LightGalleryVue.umd.js.map +1 -1
  88. package/vue/LightGalleryVue.umd.min.js +2 -2
  89. package/vue/LightGalleryVue.umd.min.js.map +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * lightgallery | 2.4.0 | January 29th 2022
2
+ * lightgallery | 2.5.0-beta.3 | April 23rd 2022
3
3
  * http://www.lightgalleryjs.com/
4
4
  * Copyright (c) 2020 Sachin Neravath;
5
5
  * @license GPLv3
@@ -104,6 +104,7 @@ var lightGalleryCoreSettings = {
104
104
  loop: true,
105
105
  escKey: true,
106
106
  keyPress: true,
107
+ trapFocus: true,
107
108
  controls: true,
108
109
  slideEndAnimation: true,
109
110
  hideControlOnEnd: false,
@@ -720,6 +721,14 @@ var utils = {
720
721
  }
721
722
  return "<div class=\"lg-video-cont " + videoClass + "\" style=\"" + videoContStyle + "\">\n <div class=\"lg-video-play-button\">\n <svg\n viewBox=\"0 0 20 20\"\n preserveAspectRatio=\"xMidYMid\"\n focusable=\"false\"\n aria-labelledby=\"" + playVideoString + "\"\n role=\"img\"\n class=\"lg-video-play-icon\"\n >\n <title>" + playVideoString + "</title>\n <polygon class=\"lg-video-play-icon-inner\" points=\"1,0 20,10 1,20\"></polygon>\n </svg>\n <svg class=\"lg-video-play-icon-bg\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle></svg>\n <svg class=\"lg-video-play-icon-circle\" viewBox=\"0 0 50 50\" focusable=\"false\">\n <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle>\n </svg>\n </div>\n " + (dummyImg || '') + "\n <img class=\"lg-object lg-video-poster\" src=\"" + _poster + "\" />\n </div>";
722
723
  },
724
+ getFocusableElements: function (container) {
725
+ var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');
726
+ var visibleElements = [].filter.call(elements, function (element) {
727
+ var style = window.getComputedStyle(element);
728
+ return style.display !== 'none' && style.visibility !== 'hidden';
729
+ });
730
+ return visibleElements;
731
+ },
723
732
  /**
724
733
  * @desc Create dynamic elements array from gallery items when dynamic option is false
725
734
  * It helps to avoid frequent DOM interaction
@@ -1205,7 +1214,6 @@ var LightGallery = /** @class */ (function () {
1205
1214
  if (this.lgOpened)
1206
1215
  return;
1207
1216
  this.lgOpened = true;
1208
- this.outer.get().focus();
1209
1217
  this.outer.removeClass('lg-hide-items');
1210
1218
  // Add display block, but still has opacity 0
1211
1219
  this.$container.addClass('lg-show');
@@ -1265,6 +1273,12 @@ var LightGallery = /** @class */ (function () {
1265
1273
  _this.$backdrop.addClass('in');
1266
1274
  _this.$container.addClass('lg-show-in');
1267
1275
  }, 10);
1276
+ setTimeout(function () {
1277
+ if (_this.settings.trapFocus &&
1278
+ document.body === _this.settings.container) {
1279
+ _this.trapFocus();
1280
+ }
1281
+ }, _this.settings.backdropDuration + 50);
1268
1282
  // lg-visible class resets gallery opacity to 1
1269
1283
  if (!_this.zoomFromOrigin || !transform) {
1270
1284
  setTimeout(function () {
@@ -2440,6 +2454,34 @@ var LightGallery = /** @class */ (function () {
2440
2454
  $element.off("click.lgcustom-item-" + $element.attr('data-lg-id'));
2441
2455
  }
2442
2456
  };
2457
+ LightGallery.prototype.trapFocus = function () {
2458
+ var _this = this;
2459
+ this.$container.get().focus();
2460
+ $LG(window).on("keydown.lg.global" + this.lgId, function (e) {
2461
+ if (!_this.lgOpened) {
2462
+ return;
2463
+ }
2464
+ var isTabPressed = e.key === 'Tab' || e.keyCode === 9;
2465
+ if (!isTabPressed) {
2466
+ return;
2467
+ }
2468
+ var focusableEls = utils.getFocusableElements(_this.$container.get());
2469
+ var firstFocusableEl = focusableEls[0];
2470
+ var lastFocusableEl = focusableEls[focusableEls.length - 1];
2471
+ if (e.shiftKey) {
2472
+ if (document.activeElement === firstFocusableEl) {
2473
+ lastFocusableEl.focus();
2474
+ e.preventDefault();
2475
+ }
2476
+ }
2477
+ else {
2478
+ if (document.activeElement === lastFocusableEl) {
2479
+ firstFocusableEl.focus();
2480
+ e.preventDefault();
2481
+ }
2482
+ }
2483
+ });
2484
+ };
2443
2485
  LightGallery.prototype.manageCloseGallery = function () {
2444
2486
  var _this = this;
2445
2487
  if (!this.settings.closable)
@@ -2547,8 +2589,8 @@ var LightGallery = /** @class */ (function () {
2547
2589
  instance: _this,
2548
2590
  });
2549
2591
  }
2550
- if (_this.outer.get()) {
2551
- _this.outer.get().blur();
2592
+ if (_this.$container.get()) {
2593
+ _this.$container.get().blur();
2552
2594
  }
2553
2595
  _this.lgOpened = false;
2554
2596
  }, removeTimeout + 100);