lightgallery 2.5.0-beta.2 → 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 (71) hide show
  1. package/README.md +3 -3
  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/lightgallery.d.ts +1 -0
  14. package/lightgallery.es5.js +46 -4
  15. package/lightgallery.es5.js.map +1 -1
  16. package/lightgallery.min.js +2 -2
  17. package/lightgallery.umd.js +46 -4
  18. package/lightgallery.umd.js.map +1 -1
  19. package/lit/lightgallery.esm.js +7 -7
  20. package/lit/lightgallery.umd.js +3 -3
  21. package/package.json +1 -1
  22. package/plugins/autoplay/lg-autoplay.es5.js +1 -1
  23. package/plugins/autoplay/lg-autoplay.min.js +1 -1
  24. package/plugins/autoplay/lg-autoplay.umd.js +1 -1
  25. package/plugins/comment/lg-comment.es5.js +1 -1
  26. package/plugins/comment/lg-comment.min.js +1 -1
  27. package/plugins/comment/lg-comment.umd.js +1 -1
  28. package/plugins/fullscreen/lg-fullscreen.es5.js +1 -1
  29. package/plugins/fullscreen/lg-fullscreen.min.js +1 -1
  30. package/plugins/fullscreen/lg-fullscreen.umd.js +1 -1
  31. package/plugins/hash/lg-hash.es5.js +1 -1
  32. package/plugins/hash/lg-hash.min.js +1 -1
  33. package/plugins/hash/lg-hash.umd.js +1 -1
  34. package/plugins/mediumZoom/lg-medium-zoom.es5.js +1 -1
  35. package/plugins/mediumZoom/lg-medium-zoom.min.js +1 -1
  36. package/plugins/mediumZoom/lg-medium-zoom.umd.js +1 -1
  37. package/plugins/pager/lg-pager.es5.js +1 -1
  38. package/plugins/pager/lg-pager.min.js +1 -1
  39. package/plugins/pager/lg-pager.umd.js +1 -1
  40. package/plugins/relativeCaption/lg-relative-caption.es5.js +1 -1
  41. package/plugins/relativeCaption/lg-relative-caption.min.js +1 -1
  42. package/plugins/relativeCaption/lg-relative-caption.umd.js +1 -1
  43. package/plugins/rotate/lg-rotate.es5.js +1 -1
  44. package/plugins/rotate/lg-rotate.min.js +1 -1
  45. package/plugins/rotate/lg-rotate.umd.js +1 -1
  46. package/plugins/share/lg-share.es5.js +1 -1
  47. package/plugins/share/lg-share.min.js +1 -1
  48. package/plugins/share/lg-share.umd.js +1 -1
  49. package/plugins/thumbnail/lg-thumbnail.es5.js +1 -1
  50. package/plugins/thumbnail/lg-thumbnail.min.js +1 -1
  51. package/plugins/thumbnail/lg-thumbnail.umd.js +1 -1
  52. package/plugins/video/lg-video.es5.js +1 -1
  53. package/plugins/video/lg-video.min.js +1 -1
  54. package/plugins/video/lg-video.umd.js +1 -1
  55. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js +1 -1
  56. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js +1 -1
  57. package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js +1 -1
  58. package/plugins/zoom/lg-zoom.es5.js +1 -1
  59. package/plugins/zoom/lg-zoom.min.js +1 -1
  60. package/plugins/zoom/lg-zoom.umd.js +1 -1
  61. package/react/Lightgallery.es5.js +46 -4
  62. package/react/Lightgallery.es5.js.map +1 -1
  63. package/react/Lightgallery.umd.js +46 -4
  64. package/react/Lightgallery.umd.js.map +1 -1
  65. package/scss/_lg-theme-default.scss +16 -0
  66. package/vue/LightGalleryVue.common.js +77 -29
  67. package/vue/LightGalleryVue.common.js.map +1 -1
  68. package/vue/LightGalleryVue.umd.js +77 -29
  69. package/vue/LightGalleryVue.umd.js.map +1 -1
  70. package/vue/LightGalleryVue.umd.min.js +2 -2
  71. package/vue/LightGalleryVue.umd.min.js.map +1 -1
@@ -32,7 +32,7 @@
32
32
  }
33
33
 
34
34
  /*!
35
- * lightgallery | 2.5.0-beta.2 | March 6th 2022
35
+ * lightgallery | 2.5.0-beta.3 | April 23rd 2022
36
36
  * http://www.lightgalleryjs.com/
37
37
  * Copyright (c) 2020 Sachin Neravath;
38
38
  * @license GPLv3
@@ -137,6 +137,7 @@
137
137
  loop: true,
138
138
  escKey: true,
139
139
  keyPress: true,
140
+ trapFocus: true,
140
141
  controls: true,
141
142
  slideEndAnimation: true,
142
143
  hideControlOnEnd: false,
@@ -753,6 +754,14 @@
753
754
  }
754
755
  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>";
755
756
  },
757
+ getFocusableElements: function (container) {
758
+ 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])');
759
+ var visibleElements = [].filter.call(elements, function (element) {
760
+ var style = window.getComputedStyle(element);
761
+ return style.display !== 'none' && style.visibility !== 'hidden';
762
+ });
763
+ return visibleElements;
764
+ },
756
765
  /**
757
766
  * @desc Create dynamic elements array from gallery items when dynamic option is false
758
767
  * It helps to avoid frequent DOM interaction
@@ -1238,7 +1247,6 @@
1238
1247
  if (this.lgOpened)
1239
1248
  return;
1240
1249
  this.lgOpened = true;
1241
- this.outer.get().focus();
1242
1250
  this.outer.removeClass('lg-hide-items');
1243
1251
  // Add display block, but still has opacity 0
1244
1252
  this.$container.addClass('lg-show');
@@ -1298,6 +1306,12 @@
1298
1306
  _this.$backdrop.addClass('in');
1299
1307
  _this.$container.addClass('lg-show-in');
1300
1308
  }, 10);
1309
+ setTimeout(function () {
1310
+ if (_this.settings.trapFocus &&
1311
+ document.body === _this.settings.container) {
1312
+ _this.trapFocus();
1313
+ }
1314
+ }, _this.settings.backdropDuration + 50);
1301
1315
  // lg-visible class resets gallery opacity to 1
1302
1316
  if (!_this.zoomFromOrigin || !transform) {
1303
1317
  setTimeout(function () {
@@ -2473,6 +2487,34 @@
2473
2487
  $element.off("click.lgcustom-item-" + $element.attr('data-lg-id'));
2474
2488
  }
2475
2489
  };
2490
+ LightGallery.prototype.trapFocus = function () {
2491
+ var _this = this;
2492
+ this.$container.get().focus();
2493
+ $LG(window).on("keydown.lg.global" + this.lgId, function (e) {
2494
+ if (!_this.lgOpened) {
2495
+ return;
2496
+ }
2497
+ var isTabPressed = e.key === 'Tab' || e.keyCode === 9;
2498
+ if (!isTabPressed) {
2499
+ return;
2500
+ }
2501
+ var focusableEls = utils.getFocusableElements(_this.$container.get());
2502
+ var firstFocusableEl = focusableEls[0];
2503
+ var lastFocusableEl = focusableEls[focusableEls.length - 1];
2504
+ if (e.shiftKey) {
2505
+ if (document.activeElement === firstFocusableEl) {
2506
+ lastFocusableEl.focus();
2507
+ e.preventDefault();
2508
+ }
2509
+ }
2510
+ else {
2511
+ if (document.activeElement === lastFocusableEl) {
2512
+ firstFocusableEl.focus();
2513
+ e.preventDefault();
2514
+ }
2515
+ }
2516
+ });
2517
+ };
2476
2518
  LightGallery.prototype.manageCloseGallery = function () {
2477
2519
  var _this = this;
2478
2520
  if (!this.settings.closable)
@@ -2580,8 +2622,8 @@
2580
2622
  instance: _this,
2581
2623
  });
2582
2624
  }
2583
- if (_this.outer.get()) {
2584
- _this.outer.get().blur();
2625
+ if (_this.$container.get()) {
2626
+ _this.$container.get().blur();
2585
2627
  }
2586
2628
  _this.lgOpened = false;
2587
2629
  }, removeTimeout + 100);