Blame view

frontend/web/js/new-owl/owl.autoheight.js 2.3 KB
b60a88b8   Anastasia   - main page
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
  /**
   * AutoHeight Plugin
   * @version 2.1.0
   * @author Bartosz Wojciechowski
   * @author David Deutsch
   * @license The MIT License (MIT)
   */
  ;(function($, window, document, undefined) {
  
  	/**
  	 * Creates the auto height plugin.
  	 * @class The Auto Height Plugin
  	 * @param {Owl} carousel - The Owl Carousel
  	 */
  	var AutoHeight = function(carousel) {
  		/**
  		 * Reference to the core.
  		 * @protected
  		 * @type {Owl}
  		 */
  		this._core = carousel;
  
  		/**
  		 * All event handlers.
  		 * @protected
  		 * @type {Object}
  		 */
  		this._handlers = {
  			'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) {
  				if (e.namespace && this._core.settings.autoHeight) {
  					this.update();
  				}
  			}, this),
  			'changed.owl.carousel': $.proxy(function(e) {
  				if (e.namespace && this._core.settings.autoHeight && e.property.name == 'position'){
  					this.update();
  				}
  			}, this),
  			'loaded.owl.lazy': $.proxy(function(e) {
  				if (e.namespace && this._core.settings.autoHeight
  					&& e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {
  					this.update();
  				}
  			}, this)
  		};
  
  		// set default options
  		this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);
  
  		// register event handlers
  		this._core.$element.on(this._handlers);
  	};
  
  	/**
  	 * Default options.
  	 * @public
  	 */
  	AutoHeight.Defaults = {
  		autoHeight: false,
  		autoHeightClass: 'owl-height'
  	};
  
  	/**
  	 * Updates the view.
  	 */
  	AutoHeight.prototype.update = function() {
  		var start = this._core._current,
  			end = start + this._core.settings.items,
  			visible = this._core.$stage.children().toArray().slice(start, end),
  			heights = [],
  			maxheight = 0;
  
  		$.each(visible, function(index, item) {
  			heights.push($(item).height());
  		});
  
  		maxheight = Math.max.apply(null, heights);
  
  		this._core.$stage.parent()
  			.height(maxheight)
  			.addClass(this._core.settings.autoHeightClass);
  	};
  
  	AutoHeight.prototype.destroy = function() {
  		var handler, property;
  
  		for (handler in this._handlers) {
  			this._core.$element.off(handler, this._handlers[handler]);
  		}
  		for (property in Object.getOwnPropertyNames(this)) {
  			typeof this[property] != 'function' && (this[property] = null);
  		}
  	};
  
  	$.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;
  
  })(window.Zepto || window.jQuery, window, document);