|
2 | 2 |
|
3 | 3 | (function() {
|
4 | 4 |
|
5 |
| - var initPhotoSwipeFromDOM = function(gallerySelector) { |
| 5 | + var initPhotoSwipeFromDOM = function(gallerySelector, galleryElementSelector) { |
6 | 6 |
|
7 |
| - var parseThumbnailElements = function(el) { |
8 |
| - var thumbElements = el.childNodes, |
| 7 | + var galleryElSelector = galleryElementSelector, |
| 8 | + parseThumbnailElements = function(el) { |
| 9 | + var thumbElements = el.querySelectorAll(galleryElSelector), |
9 | 10 | numNodes = thumbElements.length,
|
10 | 11 | items = [],
|
11 |
| - el, |
| 12 | + element, |
12 | 13 | childElements,
|
13 |
| - thumbnailEl, |
14 | 14 | size,
|
15 | 15 | item;
|
16 | 16 |
|
17 | 17 | for(var i = 0; i < numNodes; i++) {
|
18 |
| - el = thumbElements[i]; |
19 |
| - |
| 18 | + element = thumbElements[i]; |
20 | 19 | // include only element nodes
|
21 |
| - if(el.nodeType !== 1) { |
| 20 | + if(element.nodeType !== 1 && !element.getAttribute('data-size')) { |
22 | 21 | continue;
|
23 | 22 | }
|
24 | 23 |
|
25 |
| - childElements = el.children; |
26 |
| - |
27 |
| - size = el.getAttribute('data-size').split('x'); |
| 24 | + size = element.getAttribute('data-size').split('x'); |
28 | 25 |
|
29 | 26 | // create slide object
|
30 | 27 | item = {
|
31 |
| - src: el.getAttribute('href'), |
32 |
| - w: parseInt(size[0], 10), |
33 |
| - h: parseInt(size[1], 10), |
34 |
| - author: el.getAttribute('data-author') |
| 28 | + src: element.getAttribute('href'), |
| 29 | + w: parseInt(size[0], 10), |
| 30 | + h: parseInt(size[1], 10), |
| 31 | + author: element.getAttribute('data-author') |
35 | 32 | };
|
36 | 33 |
|
37 |
| - item.el = el; // save link to element for getThumbBoundsFn |
| 34 | + item.el = element; // save link to element for getThumbBoundsFn |
38 | 35 |
|
| 36 | + childElements = element.children; |
39 | 37 | if(childElements.length > 0) {
|
40 | 38 | item.msrc = childElements[0].getAttribute('src'); // thumbnail url
|
41 | 39 | if(childElements.length > 1) {
|
|
44 | 42 | }
|
45 | 43 |
|
46 | 44 |
|
47 |
| - var mediumSrc = el.getAttribute('data-med'); |
| 45 | + var mediumSrc = element.getAttribute('data-med'); |
48 | 46 | if(mediumSrc) {
|
49 |
| - size = el.getAttribute('data-med-size').split('x'); |
| 47 | + size = element.getAttribute('data-med-size').split('x'); |
50 | 48 | // "medium-sized" image
|
51 | 49 | item.m = {
|
52 | 50 | src: mediumSrc,
|
|
73 | 71 | };
|
74 | 72 |
|
75 | 73 | var onThumbnailsClick = function(e) {
|
76 |
| - e = e || window.event; |
77 |
| - e.preventDefault ? e.preventDefault() : e.returnValue = false; |
| 74 | + var event = e || window.event; |
| 75 | + event.returnValue = false; |
| 76 | + |
| 77 | + if ( typeof event.preventDefault !== 'undefined') { event.preventDefault(); } |
78 | 78 |
|
79 |
| - var eTarget = e.target || e.srcElement; |
| 79 | + var eTarget = event.target || event.srcElement; |
80 | 80 |
|
81 | 81 | var clickedListItem = closest(eTarget, function(el) {
|
82 | 82 | return el.tagName === 'A';
|
|
163 | 163 | return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
|
164 | 164 | },
|
165 | 165 |
|
166 |
| - addCaptionHTMLFn: function(item, captionEl, isFake) { |
| 166 | + addCaptionHTMLFn: function(item, captionEl) { |
167 | 167 | if(!item.title) {
|
168 | 168 | captionEl.children[0].innerText = '';
|
169 | 169 | return false;
|
|
179 | 179 | }
|
180 | 180 |
|
181 | 181 | // Pass data to PhotoSwipe and initialize it
|
| 182 | + /* global PhotoSwipe, PhotoSwipeUI_Default */ |
182 | 183 | gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
|
183 | 184 |
|
184 | 185 | // see: http://photoswipe.com/documentation/responsive-images.html
|
|
248 | 249 | }
|
249 | 250 | };
|
250 | 251 |
|
251 |
| - initPhotoSwipeFromDOM('.gallery'); |
| 252 | + initPhotoSwipeFromDOM('.gallery', '.demo-gallery__img--main'); |
252 | 253 |
|
253 | 254 | })();
|
0 commit comments