lightgallery 2.5.0-beta.1 → 2.5.0-beta.4
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.
- package/README.md +4 -4
- package/css/lightgallery-bundle.css +15 -0
- package/css/lightgallery-bundle.min.css +1 -1
- package/css/lightgallery-core.css +4 -0
- package/css/lightgallery.css +15 -0
- package/lg-settings.d.ts +14 -0
- package/lg-utils.d.ts +1 -0
- package/lib/lg-settings.js +3 -0
- package/lib/lg-settings.js.map +1 -1
- package/lib/lg-utils.js +8 -0
- package/lib/lg-utils.js.map +1 -1
- package/lib/lightgallery.js +66 -4
- package/lib/lightgallery.js.map +1 -1
- package/lib/plugins/video/lg-video-settings.js +1 -0
- package/lib/plugins/video/lg-video-settings.js.map +1 -1
- package/lib/plugins/video/lg-video.js +3 -1
- package/lib/plugins/video/lg-video.js.map +1 -1
- package/lightgallery.d.ts +5 -0
- package/lightgallery.es5.js +78 -5
- package/lightgallery.es5.js.map +1 -1
- package/lightgallery.min.js +2 -2
- package/lightgallery.umd.js +78 -5
- package/lightgallery.umd.js.map +1 -1
- package/lit/lightgallery.esm.js +7 -7
- package/lit/lightgallery.umd.js +3 -3
- package/package.json +1 -1
- package/plugins/autoplay/lg-autoplay.es5.js +1 -1
- package/plugins/autoplay/lg-autoplay.min.js +1 -1
- package/plugins/autoplay/lg-autoplay.umd.js +1 -1
- package/plugins/comment/lg-comment.es5.js +1 -1
- package/plugins/comment/lg-comment.min.js +1 -1
- package/plugins/comment/lg-comment.umd.js +1 -1
- package/plugins/fullscreen/lg-fullscreen.es5.js +1 -1
- package/plugins/fullscreen/lg-fullscreen.min.js +1 -1
- package/plugins/fullscreen/lg-fullscreen.umd.js +1 -1
- package/plugins/hash/lg-hash.es5.js +1 -1
- package/plugins/hash/lg-hash.min.js +1 -1
- package/plugins/hash/lg-hash.umd.js +1 -1
- package/plugins/mediumZoom/lg-medium-zoom.es5.js +1 -1
- package/plugins/mediumZoom/lg-medium-zoom.min.js +1 -1
- package/plugins/mediumZoom/lg-medium-zoom.umd.js +1 -1
- package/plugins/pager/lg-pager.es5.js +1 -1
- package/plugins/pager/lg-pager.min.js +1 -1
- package/plugins/pager/lg-pager.umd.js +1 -1
- package/plugins/relativeCaption/lg-relative-caption.es5.js +1 -1
- package/plugins/relativeCaption/lg-relative-caption.min.js +1 -1
- package/plugins/relativeCaption/lg-relative-caption.umd.js +1 -1
- package/plugins/rotate/lg-rotate.es5.js +1 -1
- package/plugins/rotate/lg-rotate.min.js +1 -1
- package/plugins/rotate/lg-rotate.umd.js +1 -1
- package/plugins/share/lg-share.es5.js +1 -1
- package/plugins/share/lg-share.min.js +1 -1
- package/plugins/share/lg-share.umd.js +1 -1
- package/plugins/thumbnail/lg-thumbnail.es5.js +1 -1
- package/plugins/thumbnail/lg-thumbnail.min.js +1 -1
- package/plugins/thumbnail/lg-thumbnail.umd.js +1 -1
- package/plugins/video/lg-video-settings.d.ts +6 -1
- package/plugins/video/lg-video.es5.js +5 -2
- package/plugins/video/lg-video.es5.js.map +1 -1
- package/plugins/video/lg-video.min.js +2 -2
- package/plugins/video/lg-video.umd.js +5 -2
- package/plugins/video/lg-video.umd.js.map +1 -1
- package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js +1 -1
- package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js +1 -1
- package/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js +1 -1
- package/plugins/zoom/lg-zoom.es5.js +1 -1
- package/plugins/zoom/lg-zoom.min.js +1 -1
- package/plugins/zoom/lg-zoom.umd.js +1 -1
- package/react/Lightgallery.es5.js +78 -5
- package/react/Lightgallery.es5.js.map +1 -1
- package/react/Lightgallery.umd.js +78 -5
- package/react/Lightgallery.umd.js.map +1 -1
- package/scss/_lg-theme-default.scss +16 -0
- package/scss/lightgallery-core.scss +3 -0
- package/vue/LightGalleryVue.common.js +120 -31
- package/vue/LightGalleryVue.common.js.map +1 -1
- package/vue/LightGalleryVue.umd.js +120 -31
- package/vue/LightGalleryVue.umd.js.map +1 -1
- package/vue/LightGalleryVue.umd.min.js +2 -2
- 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.
|
|
35
|
+
* lightgallery | 2.5.0-beta.4 | May 9th 2022
|
|
36
36
|
* http://www.lightgalleryjs.com/
|
|
37
37
|
* Copyright (c) 2020 Sachin Neravath;
|
|
38
38
|
* @license GPLv3
|
|
@@ -129,6 +129,8 @@
|
|
|
129
129
|
defaultCaptionHeight: 0,
|
|
130
130
|
ariaLabelledby: '',
|
|
131
131
|
ariaDescribedby: '',
|
|
132
|
+
resetScrollPosition: true,
|
|
133
|
+
hideScrollbar: false,
|
|
132
134
|
closable: true,
|
|
133
135
|
swipeToClose: true,
|
|
134
136
|
closeOnTap: true,
|
|
@@ -137,6 +139,7 @@
|
|
|
137
139
|
loop: true,
|
|
138
140
|
escKey: true,
|
|
139
141
|
keyPress: true,
|
|
142
|
+
trapFocus: true,
|
|
140
143
|
controls: true,
|
|
141
144
|
slideEndAnimation: true,
|
|
142
145
|
hideControlOnEnd: false,
|
|
@@ -753,6 +756,14 @@
|
|
|
753
756
|
}
|
|
754
757
|
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
758
|
},
|
|
759
|
+
getFocusableElements: function (container) {
|
|
760
|
+
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])');
|
|
761
|
+
var visibleElements = [].filter.call(elements, function (element) {
|
|
762
|
+
var style = window.getComputedStyle(element);
|
|
763
|
+
return style.display !== 'none' && style.visibility !== 'hidden';
|
|
764
|
+
});
|
|
765
|
+
return visibleElements;
|
|
766
|
+
},
|
|
756
767
|
/**
|
|
757
768
|
* @desc Create dynamic elements array from gallery items when dynamic option is false
|
|
758
769
|
* It helps to avoid frequent DOM interaction
|
|
@@ -856,6 +867,7 @@
|
|
|
856
867
|
this.currentItemsInDom = [];
|
|
857
868
|
// Scroll top value before lightGallery is opened
|
|
858
869
|
this.prevScrollTop = 0;
|
|
870
|
+
this.bodyPaddingRight = 0;
|
|
859
871
|
this.isDummyImageRemoved = false;
|
|
860
872
|
this.dragOrSwipeEnabled = false;
|
|
861
873
|
this.mediaContainerPosition = {
|
|
@@ -1203,6 +1215,27 @@
|
|
|
1203
1215
|
return this.settings.dynamicEl || [];
|
|
1204
1216
|
}
|
|
1205
1217
|
};
|
|
1218
|
+
LightGallery.prototype.shouldHideScrollbar = function () {
|
|
1219
|
+
return (this.settings.hideScrollbar &&
|
|
1220
|
+
document.body === this.settings.container);
|
|
1221
|
+
};
|
|
1222
|
+
LightGallery.prototype.hideScrollbar = function () {
|
|
1223
|
+
if (!this.shouldHideScrollbar()) {
|
|
1224
|
+
return;
|
|
1225
|
+
}
|
|
1226
|
+
this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);
|
|
1227
|
+
var bodyRect = document.documentElement.getBoundingClientRect();
|
|
1228
|
+
var scrollbarWidth = window.innerWidth - bodyRect.width;
|
|
1229
|
+
$LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');
|
|
1230
|
+
$LG(document.body).addClass('lg-overlay-open');
|
|
1231
|
+
};
|
|
1232
|
+
LightGallery.prototype.resetScrollBar = function () {
|
|
1233
|
+
if (!this.shouldHideScrollbar()) {
|
|
1234
|
+
return;
|
|
1235
|
+
}
|
|
1236
|
+
$LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');
|
|
1237
|
+
$LG(document.body).removeClass('lg-overlay-open');
|
|
1238
|
+
};
|
|
1206
1239
|
/**
|
|
1207
1240
|
* Open lightGallery.
|
|
1208
1241
|
* Open gallery with specific slide by passing index of the slide as parameter.
|
|
@@ -1238,8 +1271,8 @@
|
|
|
1238
1271
|
if (this.lgOpened)
|
|
1239
1272
|
return;
|
|
1240
1273
|
this.lgOpened = true;
|
|
1241
|
-
this.outer.get().focus();
|
|
1242
1274
|
this.outer.removeClass('lg-hide-items');
|
|
1275
|
+
this.hideScrollbar();
|
|
1243
1276
|
// Add display block, but still has opacity 0
|
|
1244
1277
|
this.$container.addClass('lg-show');
|
|
1245
1278
|
var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);
|
|
@@ -1298,6 +1331,12 @@
|
|
|
1298
1331
|
_this.$backdrop.addClass('in');
|
|
1299
1332
|
_this.$container.addClass('lg-show-in');
|
|
1300
1333
|
}, 10);
|
|
1334
|
+
setTimeout(function () {
|
|
1335
|
+
if (_this.settings.trapFocus &&
|
|
1336
|
+
document.body === _this.settings.container) {
|
|
1337
|
+
_this.trapFocus();
|
|
1338
|
+
}
|
|
1339
|
+
}, _this.settings.backdropDuration + 50);
|
|
1301
1340
|
// lg-visible class resets gallery opacity to 1
|
|
1302
1341
|
if (!_this.zoomFromOrigin || !transform) {
|
|
1303
1342
|
setTimeout(function () {
|
|
@@ -2473,6 +2512,36 @@
|
|
|
2473
2512
|
$element.off("click.lgcustom-item-" + $element.attr('data-lg-id'));
|
|
2474
2513
|
}
|
|
2475
2514
|
};
|
|
2515
|
+
LightGallery.prototype.trapFocus = function () {
|
|
2516
|
+
var _this = this;
|
|
2517
|
+
this.$container.get().focus({
|
|
2518
|
+
preventScroll: true,
|
|
2519
|
+
});
|
|
2520
|
+
$LG(window).on("keydown.lg.global" + this.lgId, function (e) {
|
|
2521
|
+
if (!_this.lgOpened) {
|
|
2522
|
+
return;
|
|
2523
|
+
}
|
|
2524
|
+
var isTabPressed = e.key === 'Tab' || e.keyCode === 9;
|
|
2525
|
+
if (!isTabPressed) {
|
|
2526
|
+
return;
|
|
2527
|
+
}
|
|
2528
|
+
var focusableEls = utils.getFocusableElements(_this.$container.get());
|
|
2529
|
+
var firstFocusableEl = focusableEls[0];
|
|
2530
|
+
var lastFocusableEl = focusableEls[focusableEls.length - 1];
|
|
2531
|
+
if (e.shiftKey) {
|
|
2532
|
+
if (document.activeElement === firstFocusableEl) {
|
|
2533
|
+
lastFocusableEl.focus();
|
|
2534
|
+
e.preventDefault();
|
|
2535
|
+
}
|
|
2536
|
+
}
|
|
2537
|
+
else {
|
|
2538
|
+
if (document.activeElement === lastFocusableEl) {
|
|
2539
|
+
firstFocusableEl.focus();
|
|
2540
|
+
e.preventDefault();
|
|
2541
|
+
}
|
|
2542
|
+
}
|
|
2543
|
+
});
|
|
2544
|
+
};
|
|
2476
2545
|
LightGallery.prototype.manageCloseGallery = function () {
|
|
2477
2546
|
var _this = this;
|
|
2478
2547
|
if (!this.settings.closable)
|
|
@@ -2523,7 +2592,9 @@
|
|
|
2523
2592
|
return 0;
|
|
2524
2593
|
}
|
|
2525
2594
|
this.LGel.trigger(lGEvents.beforeClose);
|
|
2526
|
-
|
|
2595
|
+
if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {
|
|
2596
|
+
$LG(window).scrollTop(this.prevScrollTop);
|
|
2597
|
+
}
|
|
2527
2598
|
var currentItem = this.items[this.index];
|
|
2528
2599
|
var transform;
|
|
2529
2600
|
if (this.zoomFromOrigin && currentItem) {
|
|
@@ -2568,6 +2639,8 @@
|
|
|
2568
2639
|
_this.outer.removeClass('lg-zoom-from-image');
|
|
2569
2640
|
}
|
|
2570
2641
|
_this.$container.removeClass('lg-show');
|
|
2642
|
+
// Reset scrollbar
|
|
2643
|
+
_this.resetScrollBar();
|
|
2571
2644
|
// Need to remove inline opacity as it is used in the stylesheet as well
|
|
2572
2645
|
_this.$backdrop
|
|
2573
2646
|
.removeAttr('style')
|
|
@@ -2580,8 +2653,8 @@
|
|
|
2580
2653
|
instance: _this,
|
|
2581
2654
|
});
|
|
2582
2655
|
}
|
|
2583
|
-
if (_this.
|
|
2584
|
-
_this.
|
|
2656
|
+
if (_this.$container.get()) {
|
|
2657
|
+
_this.$container.get().blur();
|
|
2585
2658
|
}
|
|
2586
2659
|
_this.lgOpened = false;
|
|
2587
2660
|
}, removeTimeout + 100);
|