framework7 8.0.0-beta.6 → 8.0.0-beta.7

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.
@@ -185,12 +185,31 @@ class PhotoBrowser extends Framework7Class {
185
185
  class: "photo-browser-of"
186
186
  }, pb.params.navbarOfText), $jsx("span", {
187
187
  class: "photo-browser-total"
188
- })), isPopup && $jsx("div", {
188
+ })), isPopup && (pb.params.popupCloseLinkText || pb.params.popupCloseLinkIcon) && $jsx("div", {
189
189
  class: "right"
190
190
  }, $jsx("a", {
191
191
  class: "link popup-close",
192
192
  "data-popup": ".photo-browser-popup"
193
- }, $jsx("span", null, pb.params.popupCloseLinkText)))));
193
+ }, pb.params.popupCloseLinkIcon && pb.app.theme === 'ios' && $jsx("i", null, $jsx("svg", {
194
+ xmlns: "http://www.w3.org/2000/svg",
195
+ width: "56",
196
+ height: "56",
197
+ viewBox: "0 0 56 56"
198
+ }, $jsx("path", {
199
+ fill: "currentColor",
200
+ d: "M 10.0234 43.0234 C 9.2266 43.8203 9.2031 45.1797 10.0234 45.9766 C 10.8438 46.7734 12.1797 46.7734 13.0000 45.9766 L 28.0000 30.9766 L 43.0000 45.9766 C 43.7969 46.7734 45.1563 46.7969 45.9766 45.9766 C 46.7734 45.1562 46.7734 43.8203 45.9766 43.0234 L 30.9531 28.0000 L 45.9766 13.0000 C 46.7734 12.2031 46.7969 10.8437 45.9766 10.0469 C 45.1328 9.2266 43.7969 9.2266 43.0000 10.0469 L 28.0000 25.0469 L 13.0000 10.0469 C 12.1797 9.2266 10.8203 9.2031 10.0234 10.0469 C 9.2266 10.8672 9.2266 12.2031 10.0234 13.0000 L 25.0234 28.0000 Z"
201
+ }))), pb.params.popupCloseLinkIcon && pb.app.theme === 'md' && $jsx("i", null, $jsx("svg", {
202
+ xmlns: "http://www.w3.org/2000/svg",
203
+ height: "24px",
204
+ viewBox: "0 0 24 24",
205
+ width: "24px",
206
+ fill: "currentColor"
207
+ }, $jsx("path", {
208
+ d: "M0 0h24v24H0V0z",
209
+ fill: "none"
210
+ }), $jsx("path", {
211
+ d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
212
+ }))), pb.params.popupCloseLinkText && $jsx("span", null, pb.params.popupCloseLinkText)))));
194
213
  }
195
214
  renderToolbar() {
196
215
  const pb = this;
@@ -210,6 +229,16 @@ class PhotoBrowser extends Framework7Class {
210
229
  class: `icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}`
211
230
  }))));
212
231
  }
232
+ renderThumbs() {
233
+ const pb = this;
234
+ return $jsx("div", {
235
+ class: "toolbar toolbar-bottom photo-browser-thumbs"
236
+ }, $jsx("div", {
237
+ class: "swiper"
238
+ }, $jsx("div", {
239
+ class: "swiper-wrapper"
240
+ }, pb.params.thumbs.map((thumb, index) => pb.renderThumb(thumb, index)))));
241
+ }
213
242
  renderCaption(caption, index) {
214
243
  const pb = this;
215
244
  if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);
@@ -253,6 +282,18 @@ class PhotoBrowser extends Framework7Class {
253
282
  src: photo.url ? photo.url : photo
254
283
  })));
255
284
  }
285
+ renderThumb(thumb, index) {
286
+ const pb = this;
287
+ const url = typeof thumb === 'string' ? thumb : thumb.url;
288
+ if (pb.params.renderThumb) return pb.params.renderThumb.call(pb, thumb, index);
289
+ return $jsx("div", {
290
+ class: "photo-browser-thumbs-slide swiper-slide",
291
+ "data-swiper-slide-index": index
292
+ }, url && $jsx("img", {
293
+ src: url,
294
+ loading: "lazy"
295
+ }));
296
+ }
256
297
  render() {
257
298
  const pb = this;
258
299
  if (pb.params.render) return pb.params.render.call(pb, pb.params);
@@ -263,7 +304,7 @@ class PhotoBrowser extends Framework7Class {
263
304
  }, $jsx("div", {
264
305
  class: `page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${!pb.params.navbar ? 'no-navbar' : ''}`,
265
306
  "data-name": "photo-browser-page"
266
- }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), $jsx("div", {
307
+ }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), pb.params.thumbs && pb.params.thumbs.length && pb.renderThumbs(), $jsx("div", {
267
308
  class: `photo-browser-captions photo-browser-captions-${pb.params.captionsTheme || pb.params.theme}`
268
309
  }, pb.params.photos.map((photo, index) => {
269
310
  if (photo.caption) return pb.renderCaption(photo.caption, index);
@@ -316,11 +357,15 @@ class PhotoBrowser extends Framework7Class {
316
357
  pb.slides = pb.$el.find('.photo-browser-slide');
317
358
  pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');
318
359
  pb.captions = pb.$el.find('.photo-browser-caption');
360
+ const hasThumbs = pb.params.thumbs && pb.params.thumbs.length > 0;
319
361
 
320
362
  // Init Swiper
321
363
  let clickTimeout;
364
+ let preventThumbsSlide;
365
+ let preventMainSlide;
366
+ const initialSlide = pb.activeIndex;
322
367
  const swiperParams = extend({}, pb.params.swiper, {
323
- initialSlide: pb.activeIndex,
368
+ initialSlide,
324
369
  // cssMode:
325
370
  // typeof pb.params.swiper.cssMode === 'undefined' && (app.device.ios || app.device.android)
326
371
  // ? true
@@ -343,6 +388,13 @@ class PhotoBrowser extends Framework7Class {
343
388
  },
344
389
  slideChange() {
345
390
  const swiper = this;
391
+ if (hasThumbs && pb.thumbsSwiper && !preventMainSlide) {
392
+ preventThumbsSlide = true;
393
+ pb.thumbsSwiper.slideTo(pb.swiper.activeIndex);
394
+ setTimeout(() => {
395
+ preventThumbsSlide = false;
396
+ });
397
+ }
346
398
  pb.onSlideChange(swiper);
347
399
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
348
400
  args[_key] = arguments[_key];
@@ -414,6 +466,34 @@ class PhotoBrowser extends Framework7Class {
414
466
  if (pb.activeIndex === 0 || pb.params.virtualSlides) {
415
467
  pb.onSlideChange(pb.swiper);
416
468
  }
469
+ if (hasThumbs) {
470
+ const thumbsSwiperParams = {
471
+ el: pb.$el.find('.photo-browser-thumbs .swiper')[0],
472
+ slidesPerView: 'auto',
473
+ centeredSlides: true,
474
+ spaceBetween: 4,
475
+ watchSlidesProgress: true,
476
+ initialSlide,
477
+ on: {
478
+ touchMove() {
479
+ preventMainSlide = true;
480
+ },
481
+ touchEnd() {
482
+ preventMainSlide = false;
483
+ },
484
+ slideChange(s) {
485
+ if (preventThumbsSlide) return;
486
+ pb.swiper.slideTo(s.activeIndex, 0);
487
+ },
488
+ click(s) {
489
+ if (!s.clickedSlide) return;
490
+ const index = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);
491
+ s.slideTo(index, 0);
492
+ }
493
+ }
494
+ };
495
+ pb.thumbsSwiper = app.swiper ? app.swiper.create(thumbsSwiperParams) : new window.Swiper(thumbsSwiperParams);
496
+ }
417
497
  if (pb.$el) {
418
498
  pb.$el.trigger('photobrowser:open');
419
499
  }
@@ -439,6 +519,11 @@ class PhotoBrowser extends Framework7Class {
439
519
  pb.swiper = null;
440
520
  delete pb.swiper;
441
521
  }
522
+ if (pb.thumbsSwiper && pb.thumbsSwiper.destroy) {
523
+ pb.thumbsSwiper.destroy(true, false);
524
+ pb.thumbsSwiper = null;
525
+ delete pb.thumbsSwiper;
526
+ }
442
527
  if (pb.$el) {
443
528
  pb.$el.trigger('photobrowser:close');
444
529
  }
@@ -1 +1 @@
1
- :root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb), 0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:14px;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-light-bg-color:rgba(255, 255, 255, 0.8);--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-caption-dark-bg-color:rgba(0, 0, 0, 0.8);--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27, 27, 27, 0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{position:absolute;left:0;top:0;width:100%;height:100%;z-index:400}.photo-browser-standalone.modal-in{transition-duration:0s;animation:photo-browser-in .4s}.photo-browser-standalone.modal-out{transition-duration:0s;animation:photo-browser-out .4s!important}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{transition:.4s;transition-property:transform;animation:none!important}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:0 0}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:0 0}.photo-browser-of{margin:0 5px}.photo-browser-captions{pointer-events:none;position:absolute;left:0;width:100%;bottom:var(--f7-safe-area-bottom);z-index:10;opacity:1;transition:.4s}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translate3d(0,0px,0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,0px,0)}.photo-browser-caption{box-sizing:border-box;transition:.3s;position:absolute;bottom:0;left:0;opacity:0;padding:4px 5px;width:100%;text-align:center;font-size:var(--f7-photobrowser-caption-font-size)}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color);background:var(--f7-photobrowser-caption-light-bg-color)}.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color);background:var(--f7-photobrowser-caption-dark-bg-color)}.photo-browser-swiper-container{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:var(--f7-photobrowser-bg-color);transition:.4s;transition-property:background-color}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{width:100%;height:100%;position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-shrink:0;box-sizing:border-box}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{width:auto;height:auto;max-width:100%;max-height:100%;display:none}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{width:100%;height:100%}.photo-browser-slide .preloader{display:none;position:absolute;width:42px;height:42px;margin-left:-21px;margin-top:-21px;left:50%;top:50%}.navbar-photo-browser .navbar-bg,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page .navbar,.photo-browser-page .toolbar{transform:translate3d(0,0,0);transition:.4s;color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color))}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar{opacity:0;visibility:hidden;pointer-events:none}.photo-browser-exposed .toolbar~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-exposed .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color);background:var(--f7-photobrowser-caption-dark-bg-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg,.photo-browser-page-dark .toolbar{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before,.photo-browser-page-dark .toolbar:after,.photo-browser-page-dark .toolbar:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{transform:translate3d(0,0,0) scale(.5);opacity:0}50%{transform:translate3d(0,0,0) scale(1.05);opacity:1}100%{transform:translate3d(0,0,0) scale(1);opacity:1}}@keyframes photo-browser-out{0%{transform:translate3d(0,0,0) scale(1);opacity:1}50%{transform:translate3d(0,0,0) scale(1.05);opacity:1}100%{transform:translate3d(0,0,0) scale(.5);opacity:0}}
1
+ :root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb), 0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:13px;--f7-photobrowser-caption-font-weight:500;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27, 27, 27, 0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{position:absolute;left:0;top:0;width:100%;height:100%;z-index:400}.photo-browser-standalone.modal-in{transition-duration:0s;animation:photo-browser-in .4s}.photo-browser-standalone.modal-out{transition-duration:0s;animation:photo-browser-out .4s!important}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{transition:.4s;animation:none!important}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:0 0}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:0 0}.photo-browser-of{margin:0 5px}.photo-browser-captions{pointer-events:none;position:absolute;left:0;width:100%;bottom:var(--f7-safe-area-bottom);z-index:10;opacity:1;transition-duration:.4s}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.toolbar.photo-browser-thumbs{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.page~.photo-browser-page:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-popup:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-standalone:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs{height:var(--f7-toolbar-height)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs{transform:translate3d(0,calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom,0)),0)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom,0))}.navbar+.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom,0))}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translate3d(0,0px,0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,0px,0)}.toolbar~.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom))}.toolbar~.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-thumbs{transition-property:transform,background-color,color}.photo-browser-thumbs .swiper{width:100%;height:100%}.photo-browser-thumbs .swiper-slide{width:auto;display:flex;align-items:center;justify-content:center}.photo-browser-thumbs img{width:auto;height:75%;display:block;border-radius:2px;min-width:4px}.photo-browser-thumbs .swiper-slide img{transform:translateX(-4px);transition-duration:150ms}.photo-browser-thumbs .swiper-slide-active img{transform:scale(1.2)}.photo-browser-thumbs .swiper-slide-active~.swiper-slide img{transform:translateX(4px)}.photo-browser-caption{box-sizing:border-box;transition-duration:.4s;position:absolute;bottom:0;left:0;opacity:0;padding:4px 5px;width:100%;text-align:center;font-size:var(--f7-photobrowser-caption-font-size);font-weight:var(--f7-photobrowser-caption-font-weight)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .photo-browser-caption{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color)}.dark .photo-browser-caption,.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color)}.photo-browser-swiper-container{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:var(--f7-photobrowser-bg-color);transition:.4s;transition-property:background-color;touch-action:pan-x pan-y}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{width:100%;height:100%;position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-shrink:0;box-sizing:border-box}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{width:auto;height:auto;max-width:100%;max-height:100%;display:none}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{width:100%;height:100%}.photo-browser-slide .preloader{display:none;position:absolute;width:42px;height:42px;margin-left:-21px;margin-top:-21px;left:50%;top:50%}.navbar-photo-browser .right .link i,.navbar-photo-browser .right .link svg{width:24px;height:24px;display:block}.navbar-photo-browser .navbar-bg,.photo-browser-caption,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page{touch-action:manipulation}.photo-browser-page .navbar,.photo-browser-page .toolbar{transform:translate3d(0,0,0);transition-duration:.4s;color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color))}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar:not(.photo-browser-thumbs){opacity:0;visibility:hidden;pointer-events:none}.photo-browser-exposed .toolbar:not(.photo-browser-thumbs)~.photo-browser-captions,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-dark .photo-browser-thumbs,.photo-browser-dark .toolbar,.photo-browser-exposed .photo-browser-thumbs,.photo-browser-exposed .toolbar{background-color:var(--f7-photobrowser-dark-bars-bg-color)}.photo-browser-dark .photo-browser-caption,.photo-browser-exposed .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color);background-color:var(--f7-photobrowser-dark-bars-bg-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.photo-browser-page .toolbar:after,.photo-browser-page .toolbar:before{display:none!important}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{transform:translate3d(0,0,0) scale(.5);opacity:0}50%{transform:translate3d(0,0,0) scale(1.05);opacity:1}100%{transform:translate3d(0,0,0) scale(1);opacity:1}}@keyframes photo-browser-out{0%{transform:translate3d(0,0,0) scale(1);opacity:1}50%{transform:translate3d(0,0,0) scale(1.05);opacity:1}100%{transform:translate3d(0,0,0) scale(.5);opacity:0}}
@@ -3,11 +3,10 @@
3
3
  --f7-photobrowser-bars-bg-color: rgba(var(--f7-bars-bg-color-rgb), 0.95);
4
4
  --f7-photobrowser-bars-text-color: var(--f7-bars-text-color);
5
5
  --f7-photobrowser-bars-link-color: var(--f7-bars-link-color);
6
- --f7-photobrowser-caption-font-size: 14px;
6
+ --f7-photobrowser-caption-font-size: 13px;
7
+ --f7-photobrowser-caption-font-weight: 500;
7
8
  --f7-photobrowser-caption-light-text-color: #000;
8
- --f7-photobrowser-caption-light-bg-color: rgba(255, 255, 255, 0.8);
9
9
  --f7-photobrowser-caption-dark-text-color: #fff;
10
- --f7-photobrowser-caption-dark-bg-color: rgba(0, 0, 0, 0.8);
11
10
  --f7-photobrowser-exposed-bg-color: #000;
12
11
 
13
12
  --f7-photobrowser-dark-bg-color: #000;
@@ -1 +1 @@
1
- :root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb), 0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:14px;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-light-bg-color:rgba(255, 255, 255, 0.8);--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-caption-dark-bg-color:rgba(0, 0, 0, 0.8);--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27, 27, 27, 0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{position:absolute;left:0;top:0;width:100%;height:100%;z-index:400}.photo-browser-standalone.modal-in{transition-duration:0s;animation:photo-browser-in .4s}.photo-browser-standalone.modal-out{transition-duration:0s;animation:photo-browser-out .4s!important}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{transition:.4s;transition-property:transform;animation:none!important}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:0 0}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:0 0}.photo-browser-of{margin:0 5px}.photo-browser-captions{pointer-events:none;position:absolute;left:0;width:100%;bottom:var(--f7-safe-area-bottom);z-index:10;opacity:1;transition:.4s}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translate3d(0,0px,0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,0px,0)}.photo-browser-caption{box-sizing:border-box;transition:.3s;position:absolute;bottom:0;left:0;opacity:0;padding:4px 5px;width:100%;text-align:center;font-size:var(--f7-photobrowser-caption-font-size)}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color);background:var(--f7-photobrowser-caption-light-bg-color)}.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color);background:var(--f7-photobrowser-caption-dark-bg-color)}.photo-browser-swiper-container{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:var(--f7-photobrowser-bg-color);transition:.4s;transition-property:background-color}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{width:100%;height:100%;position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-shrink:0;box-sizing:border-box}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{width:auto;height:auto;max-width:100%;max-height:100%;display:none}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{width:100%;height:100%}.photo-browser-slide .preloader{display:none;position:absolute;width:42px;height:42px;margin-left:-21px;margin-top:-21px;left:50%;top:50%}.navbar-photo-browser .navbar-bg,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page .navbar,.photo-browser-page .toolbar{transform:translate3d(0,0,0);transition:.4s;color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color))}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar{opacity:0;visibility:hidden;pointer-events:none}.photo-browser-exposed .toolbar~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-exposed .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color);background:var(--f7-photobrowser-caption-dark-bg-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg,.photo-browser-page-dark .toolbar{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before,.photo-browser-page-dark .toolbar:after,.photo-browser-page-dark .toolbar:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{transform:translate3d(0,0,0) scale(.5);opacity:0}50%{transform:translate3d(0,0,0) scale(1.05);opacity:1}100%{transform:translate3d(0,0,0) scale(1);opacity:1}}@keyframes photo-browser-out{0%{transform:translate3d(0,0,0) scale(1);opacity:1}50%{transform:translate3d(0,0,0) scale(1.05);opacity:1}100%{transform:translate3d(0,0,0) scale(.5);opacity:0}}
1
+ :root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb), 0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:13px;--f7-photobrowser-caption-font-weight:500;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27, 27, 27, 0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{position:absolute;left:0;top:0;width:100%;height:100%;z-index:400}.photo-browser-standalone.modal-in{transition-duration:0s;animation:photo-browser-in .4s}.photo-browser-standalone.modal-out{transition-duration:0s;animation:photo-browser-out .4s!important}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{transition:.4s;animation:none!important}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:0 0}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:0 0}.photo-browser-of{margin:0 5px}.photo-browser-captions{pointer-events:none;position:absolute;left:0;width:100%;bottom:var(--f7-safe-area-bottom);z-index:10;opacity:1;transition-duration:.4s}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.toolbar.photo-browser-thumbs{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.page~.photo-browser-page:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-popup:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-standalone:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs{height:var(--f7-toolbar-height)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs{transform:translate3d(0,calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom,0)),0)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom,0))}.navbar+.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom,0))}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translate3d(0,0px,0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,0px,0)}.toolbar~.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom))}.toolbar~.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-thumbs{transition-property:transform,background-color,color}.photo-browser-thumbs .swiper{width:100%;height:100%}.photo-browser-thumbs .swiper-slide{width:auto;display:flex;align-items:center;justify-content:center}.photo-browser-thumbs img{width:auto;height:75%;display:block;border-radius:2px;min-width:4px}.photo-browser-thumbs .swiper-slide img{transform:translateX(-4px);transition-duration:150ms}.photo-browser-thumbs .swiper-slide-active img{transform:scale(1.2)}.photo-browser-thumbs .swiper-slide-active~.swiper-slide img{transform:translateX(4px)}.photo-browser-caption{box-sizing:border-box;transition-duration:.4s;position:absolute;bottom:0;left:0;opacity:0;padding:4px 5px;width:100%;text-align:center;font-size:var(--f7-photobrowser-caption-font-size);font-weight:var(--f7-photobrowser-caption-font-weight)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .photo-browser-caption{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color)}.dark .photo-browser-caption,.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color)}.photo-browser-swiper-container{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:var(--f7-photobrowser-bg-color);transition:.4s;transition-property:background-color;touch-action:pan-x pan-y}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{width:100%;height:100%;position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-shrink:0;box-sizing:border-box}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{width:auto;height:auto;max-width:100%;max-height:100%;display:none}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{width:100%;height:100%}.photo-browser-slide .preloader{display:none;position:absolute;width:42px;height:42px;margin-left:-21px;margin-top:-21px;left:50%;top:50%}.navbar-photo-browser .right .link i,.navbar-photo-browser .right .link svg{width:24px;height:24px;display:block}.navbar-photo-browser .navbar-bg,.photo-browser-caption,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page{touch-action:manipulation}.photo-browser-page .navbar,.photo-browser-page .toolbar{transform:translate3d(0,0,0);transition-duration:.4s;color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color))}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar:not(.photo-browser-thumbs){opacity:0;visibility:hidden;pointer-events:none}.photo-browser-exposed .toolbar:not(.photo-browser-thumbs)~.photo-browser-captions,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-dark .photo-browser-thumbs,.photo-browser-dark .toolbar,.photo-browser-exposed .photo-browser-thumbs,.photo-browser-exposed .toolbar{background-color:var(--f7-photobrowser-dark-bars-bg-color)}.photo-browser-dark .photo-browser-caption,.photo-browser-exposed .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color);background-color:var(--f7-photobrowser-dark-bars-bg-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.photo-browser-page .toolbar:after,.photo-browser-page .toolbar:before{display:none!important}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{transform:translate3d(0,0,0) scale(.5);opacity:0}50%{transform:translate3d(0,0,0) scale(1.05);opacity:1}100%{transform:translate3d(0,0,0) scale(1);opacity:1}}@keyframes photo-browser-out{0%{transform:translate3d(0,0,0) scale(1);opacity:1}50%{transform:translate3d(0,0,0) scale(1.05);opacity:1}100%{transform:translate3d(0,0,0) scale(.5);opacity:0}}
@@ -18,6 +18,8 @@ export namespace PhotoBrowser {
18
18
  interface Parameters {
19
19
  /** Array with URLs of photos or array of objects with "url" (or "html") and "caption" properties. */
20
20
  photos?: Photo[] | string[];
21
+ /** Array with URLs of thumbs. If not specified or empty array will not render thumbs */
22
+ thumbs?: string[];
21
23
  /** Enable disable exposition mode when clicking on Photo Browser. (default true) */
22
24
  exposition?: boolean;
23
25
  /** Set to true if you also want to hide captions in exposition mode (default false) */
@@ -44,7 +46,9 @@ export namespace PhotoBrowser {
44
46
  toolbar?: boolean;
45
47
  /** Text on back link in Photo Browser's navbar (default "Back") */
46
48
  pageBackLinkText?: string;
47
- /** Text on close link in Photo Browser's navbar when opened in Popup or as Standalone (default "Close") */
49
+ /** Close icon (x mark) in Photo Browser's navbar when opened in Popup or as Standalone (default true) */
50
+ popupCloseLinkIcon?: boolean;
51
+ /** Text on close link in Photo Browser's navbar when opened in Popup or as Standalone (default undefined) */
48
52
  popupCloseLinkText?: string;
49
53
  /** Text of "of" in photos counter: "3 of 5" (default "of") */
50
54
  navbarOfText?: string;
@@ -73,6 +77,8 @@ export namespace PhotoBrowser {
73
77
  renderLazyPhoto?: (photo: Photo | string, index: number) => string;
74
78
  /** Function to render photo as a swiper slide, must return slide HTML string */
75
79
  renderPhoto?: (photo: Photo | string, index: number) => string;
80
+ /** Function to render thumb image as a swiper slide, must return slide HTML string */
81
+ renderThumb?: (thumbUrl: string, index: number) => string;
76
82
  /** Function to render photobrowser page, must return full page HTML layout string */
77
83
  renderPage?: () => string;
78
84
  /** Function to render photobrowser popup, must return full popup HTML layout string */
@@ -5,6 +5,7 @@ export default {
5
5
  params: {
6
6
  photoBrowser: {
7
7
  photos: [],
8
+ thumbs: [],
8
9
  exposition: true,
9
10
  expositionHideCaptions: false,
10
11
  type: 'standalone',
@@ -16,7 +17,8 @@ export default {
16
17
  popupPush: false,
17
18
  swipeToClose: true,
18
19
  pageBackLinkText: 'Back',
19
- popupCloseLinkText: 'Close',
20
+ popupCloseLinkText: undefined,
21
+ popupCloseLinkIcon: true,
20
22
  navbarOfText: 'of',
21
23
  navbarShowCount: undefined,
22
24
  view: undefined,
@@ -31,6 +33,7 @@ export default {
31
33
  renderObject: undefined,
32
34
  renderLazyPhoto: undefined,
33
35
  renderPhoto: undefined,
36
+ renderThumb: undefined,
34
37
  renderPage: undefined,
35
38
  renderPopup: undefined,
36
39
  renderStandalone: undefined,
@@ -24,7 +24,6 @@
24
24
  }
25
25
  &.photo-browser-transitioning {
26
26
  transition: 400ms;
27
- transition-property: transform;
28
27
  animation: none !important;
29
28
  }
30
29
  }
@@ -64,11 +63,30 @@
64
63
  bottom: var(--f7-safe-area-bottom);
65
64
  z-index: 10;
66
65
  opacity: 1;
67
- transition: 400ms;
66
+ transition-duration: 400ms;
68
67
  &.photo-browser-captions-exposed {
69
68
  opacity: 0;
70
69
  }
71
70
  }
71
+ .toolbar ~ .toolbar.photo-browser-thumbs {
72
+ bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));
73
+ .page ~ .photo-browser-page:not(.photo-browser-exposed) &,
74
+ .photo-browser-popup:not(.photo-browser-exposed) &,
75
+ .photo-browser-standalone:not(.photo-browser-exposed) & {
76
+ height: var(--f7-toolbar-height);
77
+ }
78
+ .photo-browser-exposed & {
79
+ transform: translate3d(0, calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)), 0);
80
+ .swiper {
81
+ height: calc(100% - var(--f7-safe-area-bottom, 0));
82
+ }
83
+ }
84
+ }
85
+ .navbar + .toolbar.photo-browser-thumbs {
86
+ .swiper {
87
+ height: calc(100% - var(--f7-safe-area-bottom, 0));
88
+ }
89
+ }
72
90
  .toolbar ~ .photo-browser-captions {
73
91
  bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));
74
92
  transform: translate3d(0, 0px, 0);
@@ -76,10 +94,45 @@
76
94
  transform: translate3d(0, 0px, 0);
77
95
  }
78
96
  }
79
-
97
+ .toolbar ~ .toolbar ~ .photo-browser-captions {
98
+ bottom: calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom));
99
+ &.photo-browser-captions-exposed {
100
+ transform: translate3d(0, var(--f7-toolbar-height), 0);
101
+ }
102
+ }
103
+ .photo-browser-thumbs {
104
+ transition-property: transform, background-color, color;
105
+ .swiper {
106
+ width: 100%;
107
+ height: 100%;
108
+ }
109
+ .swiper-slide {
110
+ width: auto;
111
+ display: flex;
112
+ align-items: center;
113
+ justify-content: center;
114
+ }
115
+ img {
116
+ width: auto;
117
+ height: 75%;
118
+ display: block;
119
+ border-radius: 2px;
120
+ min-width: 4px;
121
+ }
122
+ .swiper-slide img {
123
+ transform: translateX(-4px);
124
+ transition-duration: 150ms;
125
+ }
126
+ .swiper-slide-active img {
127
+ transform: scale(1.2);
128
+ }
129
+ .swiper-slide-active ~ .swiper-slide img {
130
+ transform: translateX(4px);
131
+ }
132
+ }
80
133
  .photo-browser-caption {
81
134
  box-sizing: border-box;
82
- transition: 300ms;
135
+ transition-duration: 400ms;
83
136
  position: absolute;
84
137
  bottom: 0;
85
138
  left: 0;
@@ -88,6 +141,13 @@
88
141
  width: 100%;
89
142
  text-align: center;
90
143
  font-size: var(--f7-photobrowser-caption-font-size);
144
+ font-weight: var(--f7-photobrowser-caption-font-weight);
145
+ .ios-translucent-bars & {
146
+ @supports (backdrop-filter: blur(20px)) {
147
+ backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));
148
+ }
149
+ }
150
+
91
151
  &:empty {
92
152
  display: none;
93
153
  }
@@ -96,11 +156,10 @@
96
156
  }
97
157
  .photo-browser-captions-light & {
98
158
  color: var(--f7-photobrowser-caption-light-text-color);
99
- background: var(--f7-photobrowser-caption-light-bg-color);
100
159
  }
101
- .photo-browser-captions-dark & {
160
+ .photo-browser-captions-dark &,
161
+ .dark & {
102
162
  color: var(--f7-photobrowser-caption-dark-text-color);
103
- background: var(--f7-photobrowser-caption-dark-bg-color);
104
163
  }
105
164
  }
106
165
 
@@ -114,6 +173,7 @@
114
173
  background: var(--f7-photobrowser-bg-color);
115
174
  transition: 400ms;
116
175
  transition-property: background-color;
176
+ touch-action: pan-x pan-y;
117
177
  }
118
178
 
119
179
  .photo-browser-prev,
@@ -173,16 +233,26 @@
173
233
  top: 50%;
174
234
  }
175
235
  }
236
+ .navbar-photo-browser .right .link {
237
+ svg,
238
+ i {
239
+ width: 24px;
240
+ height: 24px;
241
+ display: block;
242
+ }
243
+ }
176
244
  .photo-browser-page .navbar-bg,
177
245
  .navbar-photo-browser .navbar-bg,
178
- .photo-browser-page .toolbar {
246
+ .photo-browser-page .toolbar,
247
+ .photo-browser-caption {
179
248
  background-color: var(--f7-photobrowser-bars-bg-color, rgba(var(--f7-bars-bg-color-rgb), 0.95));
180
249
  }
181
250
  .photo-browser-page {
251
+ touch-action: manipulation;
182
252
  .navbar,
183
253
  .toolbar {
184
254
  transform: translate3d(0, 0, 0);
185
- transition: 400ms;
255
+ transition-duration: 400ms;
186
256
  color: var(--f7-photobrowser-bars-text-color, var(--f7-bars-text-color));
187
257
  a {
188
258
  color: var(
@@ -194,20 +264,28 @@
194
264
  }
195
265
  .photo-browser-exposed {
196
266
  .navbar,
197
- .toolbar {
267
+ .toolbar:not(.photo-browser-thumbs) {
198
268
  opacity: 0;
199
269
  visibility: hidden;
200
270
  pointer-events: none;
201
271
  }
202
- .toolbar ~ .photo-browser-captions {
272
+ .toolbar:not(.photo-browser-thumbs) ~ .photo-browser-captions,
273
+ .toolbar ~ .toolbar.photo-browser-thumbs ~ .photo-browser-captions {
203
274
  transform: translate3d(0, var(--f7-toolbar-height), 0);
204
275
  }
205
276
  .photo-browser-swiper-container {
206
277
  background: var(--f7-photobrowser-exposed-bg-color);
207
278
  }
279
+ }
280
+ .photo-browser-exposed,
281
+ .photo-browser-dark {
282
+ .photo-browser-thumbs,
283
+ .toolbar {
284
+ background-color: var(--f7-photobrowser-dark-bars-bg-color);
285
+ }
208
286
  .photo-browser-caption {
209
287
  color: var(--f7-photobrowser-caption-dark-text-color);
210
- background: var(--f7-photobrowser-caption-dark-bg-color);
288
+ background-color: var(--f7-photobrowser-dark-bars-bg-color);
211
289
  }
212
290
  }
213
291
  .view.with-photo-browser-page-exposed {
@@ -216,10 +294,11 @@
216
294
  pointer-events: none;
217
295
  }
218
296
  }
219
-
297
+ .photo-browser-page .toolbar {
298
+ .hairline-remove-top-bottom();
299
+ }
220
300
  .photo-browser-page-dark .navbar-bg,
221
- .navbar-photo-browser-dark .navbar-bg,
222
- .photo-browser-page-dark .toolbar {
301
+ .navbar-photo-browser-dark .navbar-bg {
223
302
  background: var(--f7-photobrowser-dark-bars-bg-color);
224
303
  .hairline-remove-top-bottom();
225
304
  }