diff options
Diffstat (limited to 'js/page-dots.js')
-rw-r--r-- | js/page-dots.js | 61 |
1 files changed, 30 insertions, 31 deletions
diff --git a/js/page-dots.js b/js/page-dots.js index d604dfd..90b7210 100644 --- a/js/page-dots.js +++ b/js/page-dots.js @@ -1,22 +1,20 @@ +// page dots ( function( window, factory ) { - 'use strict'; // universal module definition - + /* jshint strict: false */ if ( typeof define == 'function' && define.amd ) { // AMD define( [ - 'eventie/eventie', './flickity', 'tap-listener/tap-listener', 'fizzy-ui-utils/utils' - ], function( eventie, Flickity, TapListener, utils ) { - return factory( window, eventie, Flickity, TapListener, utils ); + ], function( Flickity, TapListener, utils ) { + return factory( window, Flickity, TapListener, utils ); }); - } else if ( typeof exports == 'object' ) { + } else if ( typeof module == 'object' && module.exports ) { // CommonJS module.exports = factory( window, - require('eventie'), require('./flickity'), require('tap-listener'), require('fizzy-ui-utils') @@ -25,14 +23,13 @@ // browser global factory( window, - window.eventie, window.Flickity, window.TapListener, window.fizzyUIUtils ); } -}( window, function factory( window, eventie, Flickity, TapListener, utils ) { +}( window, function factory( window, Flickity, TapListener, utils ) { // -------------------------- PageDots -------------------------- // @@ -49,21 +46,11 @@ PageDots.prototype._create = function() { // create holder element this.holder = document.createElement('ol'); this.holder.className = 'flickity-page-dots'; - Flickity.setUnselectable( this.holder ); // create dots, array of elements this.dots = []; - // update on select - var _this = this; - this.onCellSelect = function() { - _this.updateSelected(); - }; - this.parent.on( 'cellSelect', this.onCellSelect ); // tap this.on( 'tap', this.onTap ); - // pointerDown - this.on( 'pointerDown', function onPointerDown( button, event ) { - _this.parent.childUIPointerDown( event ); - }); + }; PageDots.prototype.activate = function() { @@ -80,8 +67,8 @@ PageDots.prototype.deactivate = function() { }; PageDots.prototype.setDots = function() { - // get difference between number of cells and number of dots - var delta = this.parent.cells.length - this.dots.length; + // get difference between number of slides and number of dots + var delta = this.parent.slides.length - this.dots.length; if ( delta > 0 ) { this.addDots( delta ); } else if ( delta < 0 ) { @@ -107,10 +94,9 @@ PageDots.prototype.removeDots = function( count ) { // remove from this.dots collection var removeDots = this.dots.splice( this.dots.length - count, count ); // remove from DOM - for ( var i=0, len = removeDots.length; i < len; i++ ) { - var dot = removeDots[i]; + removeDots.forEach( function( dot ) { this.holder.removeChild( dot ); - } + }, this ); }; PageDots.prototype.updateSelected = function() { @@ -134,7 +120,7 @@ PageDots.prototype.onTap = function( event ) { } this.parent.uiChange(); - var index = utils.indexOf( this.dots, target ); + var index = this.dots.indexOf( target ); this.parent.select( index ); }; @@ -152,25 +138,38 @@ utils.extend( Flickity.defaults, { Flickity.createMethods.push('_createPageDots'); -Flickity.prototype._createPageDots = function() { +var proto = Flickity.prototype; + +proto._createPageDots = function() { if ( !this.options.pageDots ) { return; } this.pageDots = new PageDots( this ); + // events this.on( 'activate', this.activatePageDots ); - this.on( 'cellAddedRemoved', this.onCellAddedRemovedPageDots ); + this.on( 'select', this.updateSelectedPageDots ); + this.on( 'cellChange', this.updatePageDots ); + this.on( 'resize', this.updatePageDots ); this.on( 'deactivate', this.deactivatePageDots ); + + this.pageDots.on( 'pointerDown', function( button, event ) { + this.childUIPointerDown( event ); + }.bind( this )); }; -Flickity.prototype.activatePageDots = function() { +proto.activatePageDots = function() { this.pageDots.activate(); }; -Flickity.prototype.onCellAddedRemovedPageDots = function() { +proto.updateSelectedPageDots = function() { + this.pageDots.updateSelected(); +}; + +proto.updatePageDots = function() { this.pageDots.setDots(); }; -Flickity.prototype.deactivatePageDots = function() { +proto.deactivatePageDots = function() { this.pageDots.deactivate(); }; |