-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathheroCarousel.min.js
More file actions
8 lines (8 loc) · 5.16 KB
/
heroCarousel.min.js
File metadata and controls
8 lines (8 loc) · 5.16 KB
1
2
3
4
5
6
7
8
/*!
heroCarousel v1.0.2 (https://github.com/TechTarget/heroCarousel)
Author: Morgan Wigmanich <okize123@gmail.com> (http://github.com/okize)
Copyright (c) 2013 | Licensed under the MIT license
http://www.opensource.org/licenses/mit-license.php
*/
(function(){!function(t){return"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(t){"use strict";var i,o,e;e="heroCarousel",o={autoplay:!1,autoplaySpeed:5e3,autoplayPauseOnHover:!0,itemsToShow:3,heroImageLink:!0,showHeroText:!0,counter:!1,pagination:!0,navigation:!0,navigationPosition:"Outside"},i=function(){function i(i,n){this.element=i,this.options=t.extend({},o,n),this._defaults=o,this._name=e,this.el=t(this.element),this.container=this.el.children(".heroCarouselWindow").children("ul"),this.heroImage=this.container.find(".heroCarouselImage"),this.heroText=this.container.find(".heroCarouselContent"),this.items=this.container.find("> li"),this.itemCount=this.items.size(),this.itemWidth=this.items.outerWidth(),this.itemsToShow=this.options.itemsToShow,this.containerWidth=this.itemWidth*this.itemCount,this.windowWidth=this.itemWidth*this.itemsToShow,this.itemGroupTotal=Math.ceil(this.itemCount/this.itemsToShow),this.itemGroupShowing=0,this.showControls=this.options.navigation||this.options.pagination,this.timer=null,this.init()}return i.prototype.init=function(){var t=this;if(this.showControls&&!(this.itemCount<=this.itemsToShow))return this.container.width(this.containerWidth),this.showControls&&(this.options.navigation&&this.navigationInit(),this.options.navigation&&this.paginationInit(),this.renderControls(),this.bindEvents()),this.options.showHeroText||this.heroText.hide(),this.options.heroImageLink||this.removeLink(),this.options.autoplay&&(this.autoplayStart(),this.options.autoplayPauseOnHover)?this.el.on({mouseenter:function(){return t.autoplayStop()},mouseleave:function(){return t.autoplayStart()}}):void 0},i.prototype.autoplayStart=function(){this.timer=setInterval(t.proxy(this.autoplayMove,this),this.options.autoplaySpeed)},i.prototype.autoplayMove=function(){return this.itemGroupShowing<this.itemGroupTotal-1?this.itemGroupShowing++:this.itemGroupShowing=0,this.updateControlsState(),this.moveItems()},i.prototype.autoplayStop=function(){return clearTimeout(this.timer)},i.prototype.bindEvents=function(){var i=this;return this.el.on("click","a",function(o){var e,n;return o.preventDefault(),e=t(o.target),n=i.itemGroupShowing,e.hasClass("disabled")||e.hasClass("heroCarouselNext")&&i.itemGroupShowing<i.itemGroupTotal-1&&i.itemGroupShowing++,e.hasClass("disabled")||e.hasClass("heroCarouselPrevious")&&i.itemGroupShowing>0&&i.itemGroupShowing--,e.hasClass("heroCarouselPaginationButton")&&(i.itemGroupShowing=e.data("heroCarouselGroup")),i.itemGroupShowing!==n?(i.updateControlsState(),i.moveItems()):void 0})},i.prototype.moveItems=function(){return this.container.css("left",-(this.windowWidth*this.itemGroupShowing))},i.prototype.navigationInit=function(){return this.el.addClass("heroCarouselNavigationShow").addClass("heroCarouselNavigation"+this.options.navigationPosition)},i.prototype.paginationInit=function(){return this.el.addClass("heroCarouselPaginationShow")},i.prototype.buildNavigationHtml=function(){return this.options.navigation?(this.btnPrev=t("<a>",{"class":"heroCarouselPrevious disabled",href:"#",title:"Previous",text:"Previous"}),this.btnNext=t("<a>",{"class":"heroCarouselNext",href:"#",title:"Next",text:"Next"}),this):""},i.prototype.buildCounterHtml=function(){var i;return this.options.counter?i=t("<div>",{"class":"heroCarouselNavigationCounter",html:'<span class="heroCarouselNavigationCounterCurrent">'+(this.itemGroupShowing+1)+'</span> - <span class="heroCarouselNavigationCounterTotal">'+this.itemGroupTotal+"</span>"}):""},i.prototype.buildPaginationHtml=function(){var i,o,e,n;if(!this.options.pagination)return"";for(n=[],i=["active"],o=0;o<this.itemGroupTotal;)n.push('<a href="#" class="heroCarouselPaginationButton '+(i[o]||"")+'" data-hero-carousel-group="'+o+'">'+(o+1)+"</a>"),o++;return e=t("<span/>",{"class":"heroCarouselPagination",html:n})},i.prototype.renderControls=function(){var i,o;return i={outer:t("<div/>",{"class":"heroCarouselControls"}),counter:this.buildCounterHtml(),navigation:this.buildNavigationHtml(),pagination:this.buildPaginationHtml()},o=i.outer.append(i.navigation.btnPrev).append(i.counter).append(i.pagination).append(i.navigation.btnNext),this.el.append(o)},i.prototype.updateControlsState=function(){var t;return this.options.navigation&&(t=this.el.find(".heroCarouselPrevious, .heroCarouselNext").removeClass("disabled"),0===this.itemGroupShowing?t.eq(0).addClass("disabled"):this.itemGroupShowing===this.itemGroupTotal-1&&t.eq(1).addClass("disabled")),this.options.pagination&&this.el.find(".heroCarouselPaginationButton").removeClass("active").eq(this.itemGroupShowing).addClass("active"),this.options.counter?this.el.find(".heroCarouselNavigationCounterCurrent").text(this.itemGroupShowing+1):void 0},i.prototype.removeLink=function(){return this.heroImage.find("img").unwrap("a")},i}(),t.fn[e]=function(o){return this.each(function(){t.data(this,"plugin_#{pluginName}")||t.data(this,"plugin_#{pluginName}",new i(this,o))})}})}).call(this);
//# sourceMappingURL=heroCarousel.min.js.map