diff --git a/bower.json b/bower.json index 0542c6f..a0b4544 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "angular-swiper", - "version": "0.3.2", + "version": "0.3.4-alpha.3", "homepage": "https://github.com/ksachdeva/angular-swiper", "authors": [ "Kapil Sachdeva " @@ -20,7 +20,7 @@ "tests" ], "dependencies": { - "swiper": "~3.0.5", + "swiper": "~3.2.7", "angular": ">=1.3" } -} \ No newline at end of file +} diff --git a/dist/angular-swiper.js b/dist/angular-swiper.js index 9d086c4..305e150 100644 --- a/dist/angular-swiper.js +++ b/dist/angular-swiper.js @@ -1 +1 @@ -!function(e,i,r){"use strict";function t(){for(var e=[],i="0123456789abcdef",r=0;36>r;r++)e[r]=i.substr(Math.floor(16*Math.random()),1);e[14]="4",e[19]=i.substr(3&e[19]|8,1),e[8]=e[13]=e[18]=e[23]="-";var t=e.join("");return t}function a(){return{restrict:"E",transclude:!0,scope:{onReady:"&",slidesPerView:"=",slidesPerColumn:"=",spaceBetween:"=",parallax:"=",parallaxTransition:"@",paginationIsActive:"=",paginationClickable:"=",showNavButtons:"=",showScrollBar:"=",loop:"=",autoplay:"=",initialSlide:"=",containerCls:"@",wrapperCls:"@",paginationCls:"@",slideCls:"@",direction:"@",swiper:"=",overrideParameters:"="},controller:["$scope","$element","$timeout",function(e,r,a){var n=t();e.swiper_uuid=n;var s={slidesPerView:e.slidesPerView||1,slidesPerColumn:e.slidesPerColumn||1,spaceBetween:e.spaceBetween||0,direction:e.direction||"horizontal",loop:e.loop||!1,initialSlide:e.initialSlide||0,showNavButtons:!1};i.isUndefined(e.autoplay)||"number"!=typeof e.autoplay||(s=i.extend({},s,{autoplay:e.autoplay})),e.paginationIsActive===!0&&(s=i.extend({},s,{paginationClickable:e.paginationClickable||!0,pagination:"#paginator-"+e.swiper_uuid})),e.showNavButtons===!0&&(s.nextButton="#nextButton-"+e.swiper_uuid,s.prevButton="#prevButton-"+e.swiper_uuid),e.showScrollBar===!0&&(s.scrollbar="#scrollBar-"+e.swiper_uuid),e.overrideParameters&&(s=i.extend({},s,e.overrideParameters)),a(function(){var t=null;i.isObject(e.swiper)?(e.swiper=new Swiper(r[0].firstChild,s),t=e.swiper):t=new Swiper(r[0].firstChild,s),i.isUndefined(e.onReady)||e.onReady({swiper:t})})}],link:function(e,r){var t=e.swiper_uuid,a="paginator-"+t,n="prevButton-"+t,s="nextButton-"+t,o="scrollBar-"+t,l=r[0];i.element(l.querySelector(".swiper-pagination")).attr("id",a),i.element(l.querySelector(".swiper-button-next")).attr("id",s),i.element(l.querySelector(".swiper-button-prev")).attr("id",n),i.element(r[0].querySelector(".swiper-scrollbar")).attr("id",o)},template:'
'}}function n(){return{restrict:"E",require:"^ksSwiperContainer",transclude:!0,template:'
',replace:!0}}i.module("ksSwiper",[]).directive("ksSwiperContainer",a).directive("ksSwiperSlide",n)}(window,angular,void 0); \ No newline at end of file +!function(e,i,r){"use strict";function t(){for(var e=[],i="0123456789abcdef",r=0;36>r;r++)e[r]=i.substr(Math.floor(16*Math.random()),1);e[14]="4",e[19]=i.substr(3&e[19]|8,1),e[8]=e[13]=e[18]=e[23]="-";var t=e.join("");return t}function a(){return{restrict:"E",transclude:!0,scope:{onReady:"&",slidesPerView:"=",slidesPerColumn:"=",spaceBetween:"=",parallax:"=",parallaxTransition:"@",paginationIsActive:"=",paginationClickable:"=",showNavButtons:"=",showScrollBar:"=",loop:"=",autoplay:"=",initialSlide:"=",containerCls:"@",wrapperCls:"@",paginationCls:"@",slideCls:"@",direction:"@",swiper:"=",overrideParameters:"=",currentSlide:"="},controller:["$scope","$element","$timeout",function(e,r,a){var n=t();e.swiper_uuid=n;var s={slidesPerView:e.slidesPerView||1,slidesPerColumn:e.slidesPerColumn||1,spaceBetween:e.spaceBetween||0,direction:e.direction||"horizontal",loop:e.loop||!1,initialSlide:e.initialSlide||0,showNavButtons:!1};i.isUndefined(e.autoplay)||"number"!=typeof e.autoplay||(s=i.extend({},s,{autoplay:e.autoplay})),e.paginationIsActive===!0&&(s=i.extend({},s,{paginationClickable:e.paginationClickable||!0,pagination:"#paginator-"+e.swiper_uuid})),e.showNavButtons===!0&&(s.nextButton="#nextButton-"+e.swiper_uuid,s.prevButton="#prevButton-"+e.swiper_uuid),e.showScrollBar===!0&&(s.scrollbar="#scrollBar-"+e.swiper_uuid),e.overrideParameters&&(s=i.extend({},s,e.overrideParameters)),a(function(){var t=null;i.isObject(e.swiper)?(e.swiper=new Swiper(r[0].firstChild,s),t=e.swiper):t=new Swiper(r[0].firstChild,s),i.isUndefined(e.currentSlide)||t.on("slideChangeEnd",function(){a(function(){if(e.internalSlide=!0,t.params.loop){var i=r[0].querySelector(".swiper-slide-active"),a=i.attributes["data-swiper-slide-index"].value;e.currentSlide=parseInt(a,10)}else e.currentSlide=Math.abs(t.activeIndex)})}),e.$watch("currentSlide",function(r,a){if(e.internalSlide)return void(e.internalSlide=!1);if(!i.isUndefined(r)&&r!=a)if(t.params.loop)for(var n=0;n
'}}function n(){return{restrict:"E",require:"^ksSwiperContainer",transclude:!0,template:'
',replace:!0}}i.module("ksSwiper",[]).directive("ksSwiperContainer",a).directive("ksSwiperSlide",n)}(window,angular,void 0); \ No newline at end of file diff --git a/package.js b/package.js index 9211016..d56a490 100644 --- a/package.js +++ b/package.js @@ -1,6 +1,6 @@ var packageName = 'aaronroberson:angular-swiper'; var where = 'client'; -var version = '0.3.2'; +var version = '0.3.4-alpha.3'; var summary = 'Angular directive for iDangero.us Swiper re-packaged for Meteor.'; var gitLink = 'https://github.com/aaronroberson/angular-swiper'; var documentationFile = 'README.md'; @@ -21,4 +21,4 @@ Package.onUse(function(api) { api.use('swiper:swiper@3.0.5', where); api.addFiles('dist/angular-swiper.js', where); -}); \ No newline at end of file +}); diff --git a/package.json b/package.json index 4c5e8c1..2bc589d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-swiper", - "version": "0.3.2", + "version": "0.3.4-alpha.3", "description": "Angular directive for nolimits4web/swiper", "main": "dist/angular-swiper.js", "scripts": { @@ -26,4 +26,4 @@ "gulp-uglify": "^1.1.0", "gulp-webserver": "^0.9.0" } -} \ No newline at end of file +} diff --git a/src/angular-swiper.js b/src/angular-swiper.js index e57492e..3d894bd 100644 --- a/src/angular-swiper.js +++ b/src/angular-swiper.js @@ -46,7 +46,8 @@ slideCls: '@', direction: '@', swiper: '=', - overrideParameters: '=' + overrideParameters: '=', + currentSlide: '=' }, controller: function($scope, $element, $timeout) { var uuid = createUUID(); @@ -100,6 +101,43 @@ swiper = new Swiper($element[0].firstChild, params); } + if (!angular.isUndefined($scope.currentSlide)){ + swiper.on('slideChangeEnd', function(){ + $timeout (function(){ + $scope.internalSlide = true; + if (swiper.params.loop){ + var currentSlideElement = $element[0].querySelector('.swiper-slide-active'); + var currentSlideIndexString = currentSlideElement.attributes['data-swiper-slide-index'].value; + $scope.currentSlide = parseInt(currentSlideIndexString, 10); + } else { + $scope.currentSlide = Math.abs(swiper.activeIndex); + } + }); + }); + } + + $scope.$watch('currentSlide', function(newValue, oldValue){ + if ($scope.internalSlide){ + $scope.internalSlide = false; + return; + } + if ((!angular.isUndefined(newValue)) && (newValue != oldValue)){ + if (swiper.params.loop){ + var possibleDestinationIndexes = []; + for (var index = 0; index < swiper.slides.length; index++){ + var slide = swiper.slides[index]; + var dataIndex = parseInt(slide.attributes['data-swiper-slide-index'].value, 10); + if(dataIndex === newValue){ + swiper.slideTo(index); + break; + } + } + } else { + swiper.slideTo(newValue); + } + } + }); + //If specified, calls this function when the swiper object is available if (!angular.isUndefined($scope.onReady)) { $scope.onReady({ @@ -155,4 +193,4 @@ }; } -})(window, angular, undefined); \ No newline at end of file +})(window, angular, undefined);