diff --git a/bower.json b/bower.json index 7831bb1..1fabe4e 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "angular-smart-nav", "description": "Show or hide a navbar when scrolling in any particular direction and or minimise nav when scrolling pass the navbar", - "version": "0.1.1", + "version": "0.2.0", "homepage": "https://github.com/thisissoon/angular-smart-nav", "license": "MIT", "ignore": [ diff --git a/dist/angular-smart-nav.js b/dist/angular-smart-nav.js index ed0eba2..c04ae2c 100644 --- a/dist/angular-smart-nav.js +++ b/dist/angular-smart-nav.js @@ -1,4 +1,4 @@ -/*! angular-smart-nav - v0.1.1 - 2016-06-13 */ +/*! angular-smart-nav - v0.2.0 - 2016-06-13 */ 'use strict'; /** * Module that detects the last scroll direction and @@ -10,12 +10,12 @@ * minimized or hidden. * * When the user has scrolled down the page the class - * `scrolling-down` will be added, when scrolling up - * `scrolling-up`. If the user has scrolled beyond the - * height of the nav the class `minimised-mode`. + * `sn-nav-scrolling-down` will be added, when scrolling up + * `sn-nav-scrolling-up`. If the user has scrolled beyond the + * height of the nav the class `sn-nav-minimise`. * * If the element is at the top of the viewport or above - * it then the class `affix` will be added. This is useful + * it then the class `sn-nav-affix` will be added. This is useful * for making an element sticky when user has scrolled to it * * @module sn.smartNav @@ -25,17 +25,29 @@ angular.module('sn.smartNav', [ ]) +/** + * Contains all css class names + * @property {Object} SN_SMART_NAV_CLASSES + */ +.constant('SN_SMART_NAV_CLASSES', { + scrollingUp: 'sn-nav-scrolling-up', + scrollingDown: 'sn-nav-scrolling-down', + minimise: 'sn-nav-minimise', + affix: 'sn-nav-affix' +}) /** * @example * `` * @class snSmartNav * @param {Service} $window : Angular.js wrapper for window Object * @param {Service} $document : Angular.js wrapper for document Object + * @param {Object} SN_SMART_NAV_CLASSES : Angular.js wrapper for document Object */ .directive('snSmartNav',[ '$window', '$document', - function ($window, $document){ + 'SN_SMART_NAV_CLASSES', + function ($window, $document, SN_SMART_NAV_CLASSES){ return { restrict: 'A', link: function($scope, $element){ @@ -97,12 +109,12 @@ angular.module('sn.smartNav', [ var calScrollDir = function calScrollDir(scrollTop){ if ( scrollingDown && isScrollingUp(scrollTop) ) { scrollingDown = false; - $element.removeClass('scrolling-down'); - $element.addClass('scrolling-up'); + $element.removeClass(SN_SMART_NAV_CLASSES.scrollingDown); + $element.addClass(SN_SMART_NAV_CLASSES.scrollingUp); } else if ( !scrollingDown && isScrollingDown(scrollTop) ){ scrollingDown = true; - $element.removeClass('scrolling-up'); - $element.addClass('scrolling-down'); + $element.removeClass(SN_SMART_NAV_CLASSES.scrollingUp); + $element.addClass(SN_SMART_NAV_CLASSES.scrollingDown); } }; /** @@ -113,9 +125,9 @@ angular.module('sn.smartNav', [ */ var calMinimisedMode = function calMinimisedMode(scrollTop){ if (scrollTop > $element[0].offsetHeight) { - $element.addClass('minimised-mode'); + $element.addClass(SN_SMART_NAV_CLASSES.minimise); } else { - $element.removeClass('minimised-mode'); + $element.removeClass(SN_SMART_NAV_CLASSES.minimise); } }; /** @@ -126,9 +138,9 @@ angular.module('sn.smartNav', [ */ var calAffixedMode = function calAffixedMode(scrollTop){ if (scrollTop >= positionFromTop ) { - $element.addClass('affix'); + $element.addClass(SN_SMART_NAV_CLASSES.affix); } else { - $element.removeClass('affix'); + $element.removeClass(SN_SMART_NAV_CLASSES.affix); } }; /** diff --git a/dist/angular-smart-nav.min.js b/dist/angular-smart-nav.min.js index 7dbf58f..e7f2947 100644 --- a/dist/angular-smart-nav.min.js +++ b/dist/angular-smart-nav.min.js @@ -1,4 +1,4 @@ -/*! angular-smart-nav - v0.1.1 - 2016-06-13 */ +/*! angular-smart-nav - v0.2.0 - 2016-06-13 */ -!function(a){"use strict";angular.module("sn.smartNav",[]).directive("snSmartNav",["$window","$document",function(a,b){return{restrict:"A",link:function(c,d){var e=0,f=!1,g=function(){var a=b[0].documentElement,c=b[0].body,d=a&&a.scrollTop||c&&c.scrollTop||0;return d},h=g()+d[0].getBoundingClientRect().top,i=function(a){return a>e},j=function(a){return e>a},k=function(a){f&&j(a)?(f=!1,d.removeClass("scrolling-down"),d.addClass("scrolling-up")):!f&&i(a)&&(f=!0,d.removeClass("scrolling-up"),d.addClass("scrolling-down"))},l=function(a){a>d[0].offsetHeight?d.addClass("minimised-mode"):d.removeClass("minimised-mode")},m=function(a){a>=h?d.addClass("affix"):d.removeClass("affix")},n=function(){var a=g();k(a),l(a),m(a),e=a},o=function(){angular.element(a).off("scroll",n)};c.$on("$destroy",o),angular.element(a).on("scroll",n),n()}}}])}(window); +!function(a){"use strict";angular.module("sn.smartNav",[]).constant("SN_SMART_NAV_CLASSES",{scrollingUp:"sn-nav-scrolling-up",scrollingDown:"sn-nav-scrolling-down",minimise:"sn-nav-minimise",affix:"sn-nav-affix"}).directive("snSmartNav",["$window","$document","SN_SMART_NAV_CLASSES",function(a,b,c){return{restrict:"A",link:function(d,e){var f=0,g=!1,h=function(){var a=b[0].documentElement,c=b[0].body,d=a&&a.scrollTop||c&&c.scrollTop||0;return d},i=h()+e[0].getBoundingClientRect().top,j=function(a){return a>f},k=function(a){return f>a},l=function(a){g&&k(a)?(g=!1,e.removeClass(c.scrollingDown),e.addClass(c.scrollingUp)):!g&&j(a)&&(g=!0,e.removeClass(c.scrollingUp),e.addClass(c.scrollingDown))},m=function(a){a>e[0].offsetHeight?e.addClass(c.minimise):e.removeClass(c.minimise)},n=function(a){a>=i?e.addClass(c.affix):e.removeClass(c.affix)},o=function(){var a=h();l(a),m(a),n(a),f=a},p=function(){angular.element(a).off("scroll",o)};d.$on("$destroy",p),angular.element(a).on("scroll",o),o()}}}])}(window); //# sourceMappingURL=angular-smart-nav.min.js.map \ No newline at end of file diff --git a/package.json b/package.json index e3d3353..d2aae38 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "angular-smart-nav", "private": false, - "version": "0.1.1", + "version": "0.2.0", "description": "Show or hide a navbar when scrolling in any particular direction and or minimise nav when scrolling pass the navbar", "repository": "https://github.com/thisissoon/angular-smart-nav", "license": "MIT",