Skip to content

Commit faf6dfa

Browse files
author
Janusz Janczy
committed
Fix gallery rendering on page load so current breakpoint configuration isn't replaced on page load by any other configuration
1 parent 1e28f35 commit faf6dfa

File tree

2 files changed

+67
-12
lines changed

2 files changed

+67
-12
lines changed

dev/tests/js/jasmine/tests/lib/mage/gallery/gallery.test.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,53 @@ define([
9898
expect(gallery.settings.fotoramaApi).toBeDefined();
9999
expect(gallery.settings.data).toBeDefined();
100100
expect(gallery.settings.api).toBeDefined();
101+
expect(gallery.settings.activeBreakpoint).toEqual({});
101102

102103
$.fn.data = originSpy;
103104
});
105+
106+
it('Verify gallery navigation is set properly as dots if specified in options', function () {
107+
// added
108+
options.breakpoints = {
109+
mobile: {
110+
conditions: {
111+
'max-width': '767px'
112+
},
113+
options: {
114+
options: {
115+
nav: 'dots'
116+
}
117+
}
118+
},
119+
desktop: {
120+
conditions: {
121+
'min-width': '1024px'
122+
},
123+
options: {
124+
options: {
125+
nav: 'thumbs'
126+
}
127+
}
128+
}
129+
};
130+
131+
originSpy = $.fn.data;
132+
jqueryDataMock = {
133+
setOptions: jasmine.createSpy().and.returnValue(true),
134+
updateOptions: jasmine.createSpy().and.returnValue(true),
135+
};
136+
spyOn($.fn, 'data').and.callFake(function () {
137+
return jqueryDataMock;
138+
});
139+
140+
gallery = new Gallery(options, element);
141+
142+
options.breakpoints.mobile.options.options.arrows = false;
143+
expect(JSON.stringify(gallery.settings.activeBreakpoint))
144+
.toEqual(JSON.stringify(options.breakpoints.mobile.options));
145+
146+
$.fn.data = originSpy;
147+
});
148+
104149
});
105150
});

lib/web/mage/gallery/gallery.js

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -318,13 +318,17 @@ define([
318318
settings = this.settings,
319319
config = this.config,
320320
startConfig = this.startConfig,
321+
isInitialized = {},
321322
isTouchEnabled = this.isTouchEnabled;
322323

323324
if (_.isObject(settings.breakpoints)) {
324325
pairs = _.pairs(settings.breakpoints);
325326
_.each(pairs, function (pair) {
327+
var mediaQuery = pair[0];
328+
329+
isInitialized[mediaQuery] = false;
326330
mediaCheck({
327-
media: pair[0],
331+
media: mediaQuery,
328332

329333
/**
330334
* Is triggered when breakpoint enties.
@@ -339,29 +343,35 @@ define([
339343
}
340344

341345
if (isTouchEnabled) {
342-
settings.breakpoints[pair[0]].options.arrows = false;
346+
settings.breakpoints[mediaQuery].options.arrows = false;
343347

344-
if (settings.breakpoints[pair[0]].options.fullscreen) {
345-
settings.breakpoints[pair[0]].options.fullscreen.arrows = false;
348+
if (settings.breakpoints[mediaQuery].options.fullscreen) {
349+
settings.breakpoints[mediaQuery].options.fullscreen.arrows = false;
346350
}
347351
}
348352

349-
settings.api.updateOptions(settings.breakpoints[pair[0]].options, true);
350-
$.extend(true, config, settings.breakpoints[pair[0]]);
351-
settings.activeBreakpoint = settings.breakpoints[pair[0]];
353+
settings.api.updateOptions(settings.breakpoints[mediaQuery].options, true);
354+
$.extend(true, config, settings.breakpoints[mediaQuery]);
355+
settings.activeBreakpoint = settings.breakpoints[mediaQuery];
356+
357+
isInitialized[mediaQuery] = true;
352358
},
353359

354360
/**
355361
* Is triggered when breakpoint exits.
356362
*/
357363
exit: function () {
358-
$.extend(true, config, _.clone(startConfig));
359-
settings.api.updateOptions(settings.defaultConfig.options, true);
364+
if (isInitialized[mediaQuery]) {
365+
$.extend(true, config, _.clone(startConfig));
366+
settings.api.updateOptions(settings.defaultConfig.options, true);
360367

361-
if (settings.isFullscreen) {
362-
settings.api.updateOptions(settings.fullscreenConfig, true);
368+
if (settings.isFullscreen) {
369+
settings.api.updateOptions(settings.fullscreenConfig, true);
370+
}
371+
settings.activeBreakpoint = {};
372+
} else {
373+
isInitialized[mediaQuery] = true;
363374
}
364-
settings.activeBreakpoint = {};
365375
}
366376
});
367377
});

0 commit comments

Comments
 (0)