vendor/assets/javascripts/base/_layout.js in active_frontend-14.1.22 vs vendor/assets/javascripts/base/_layout.js in active_frontend-14.1.23
- old
+ new
@@ -6,24 +6,28 @@
var Layout = function (element, options) {
this.$element = $(element);
this.$window = $(window);
this.settings = {
- direction: this.$element.data('direction'),
- effect: this.$element.data('effect'),
- target: this.$element.data('target')
+ autoDetect: this.$element.data('auto-detect') || Layout.DEFAULTS.autoDetect,
+ direction: this.$element.data('direction') || Layout.DEFAULTS.direction,
+ effect: this.$element.data('effect') || Layout.DEFAULTS.effect,
+ target: this.$element.data('target') || Layout.DEFAULTS.target
};
this.options = $.extend({}, Layout.DEFAULTS, this.settings, options);
+ this.$initialClass = $(this.options.target).attr('class');
+
this.init();
this.toggleViewport();
};
if (!$.fn.animation) throw new Error('Layout requires animation.js');
Layout.VERSION = '1.0.0';
Layout.DEFAULTS = {
+ autoDetect: true,
direction: 'left',
effect: 'slide',
onToggleCallback: function (toggle) {},
target: '#layout-target'
};
@@ -55,21 +59,31 @@
});
};
Layout.prototype.togglePosition = function (klass) {
var target = $(this.options.target);
+ var isMobile = this.$window.width() < 767;
- if (this.$window.width() < 767) {
- target.addClass(klass);
+ if (this.options.autoDetect === true) {
+ if (isMobile) {
+ target.addClass(klass);
+ } else {
+ target.removeClass(klass);
+ }
} else {
- target.removeClass(klass);
+ if (isMobile) {
+ target.addClass(klass);
+ } else {
+ target.removeClass(klass)
+ .addClass(this.$initialClass);
+ }
}
};
Layout.prototype.toggleViewport = function () {
var _self = this;
- this.togglePosition('hidden fixed');
+ if (this.options.autoDetect === true) this.togglePosition('hidden fixed');
this.$window.on('resize.bs.layout orientationChange.bs.layout', function () {
_self.togglePosition('hidden fixed');
});
};