diff --git a/.agignore b/.agignore
new file mode 100644
index 00000000000..30b81dbfd01
--- /dev/null
+++ b/.agignore
@@ -0,0 +1 @@
+release
\ No newline at end of file
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 00000000000..0c6255fc0a6
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,36 @@
+{
+ "env": {
+ "browser": true
+ },
+ "globals": {
+ "ionic": true,
+ "IonicModule": true,
+ "angular": true,
+ "jqLite": true,
+ "forEach": true,
+ "isDefined": true,
+ "isNumber": true,
+ "isString": true,
+ "noop": true,
+ "extend": true,
+ "deprecated": true,
+ "cordova": true,
+ "DocumentTouch": true
+ },
+ "rules": {
+ "quotes": false,
+ "no-underscore-dangle": false,
+ "no-unused-expressions": false,
+ "curly": [2, "multi-line"],
+ "strict": false,
+ "no-use-before-define": false,
+ "eqeqeq": false,
+ "new-cap": [2, {"capIsNew": false}],
+ "dot-notation": [2, {"allowKeywords": false}],
+ "no-console": false,
+ "no-return-assign": false,
+ "no-shadow": false,
+ "comma-dangle": false,
+ "camelcase": [2, {"properties": "never"}]
+ }
+}
\ No newline at end of file
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index fe01d3d406d..00000000000
--- a/.jshintrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "expr": true
-}
diff --git a/gulpfile.js b/gulpfile.js
index d3d591ccf7e..10e0c9f40a7 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -25,7 +25,7 @@ var concat = require('gulp-concat');
var footer = require('gulp-footer');
var gulpif = require('gulp-if');
var header = require('gulp-header');
-var jshint = require('gulp-jshint');
+var eslint = require('gulp-eslint');
var jscs = require('gulp-jscs');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');
@@ -61,7 +61,7 @@ if (argv.dist) {
gulp.task('default', ['build']);
gulp.task('build', ['bundle', 'sass']);
-gulp.task('validate', ['jshint', 'ddescribe-iit', 'karma']);
+gulp.task('validate', ['eslint', 'ddescribe-iit', 'karma']);
var IS_WATCH = false;
gulp.task('watch', ['build'], function() {
@@ -135,16 +135,11 @@ gulp.task('jscs', function() {
}));
});
-gulp.task('jshint', function() {
+gulp.task('eslint', function() {
return gulp.src(['js/**/*.js'])
- .pipe(jshint('.jshintrc'))
- .pipe(jshint.reporter(require('jshint-summary')({
- fileColCol: ',bold',
- positionCol: ',bold',
- codeCol: 'green,bold',
- reasonCol: 'cyan'
- })))
- .pipe(jshint.reporter('fail'));
+ .pipe(eslint())
+ .pipe(eslint.format())
+ .pipe(eslint.failOnError());
});
gulp.task('ddescribe-iit', function() {
diff --git a/js/angular/controller/infiniteScrollController.js b/js/angular/controller/infiniteScrollController.js
index 3e6d8b561a1..113be8a28bc 100644
--- a/js/angular/controller/infiniteScrollController.js
+++ b/js/angular/controller/infiniteScrollController.js
@@ -4,7 +4,7 @@ IonicModule
'$attrs',
'$element',
'$timeout',
- function($scope, $attrs, $element, $timeout) {
+function($scope, $attrs, $element, $timeout) {
var self = this;
self.isLoading = false;
@@ -92,7 +92,7 @@ IonicModule
self.getNativeMaxScroll = function() {
var maxValues = {
left: self.scrollEl.scrollWidth,
- top: self.scrollEl.scrollHeight
+ top: self.scrollEl.scrollHeight
};
var computedStyle = window.getComputedStyle(self.scrollEl) || {};
return {
@@ -109,8 +109,8 @@ IonicModule
// determine pixel refresh distance based on % or value
function calculateMaxValue(maximum) {
- distance = ($attrs.distance || '2.5%').trim();
- isPercent = distance.indexOf('%') !== -1;
+ var distance = ($attrs.distance || '2.5%').trim();
+ var isPercent = distance.indexOf('%') !== -1;
return isPercent ?
maximum * (1 - parseFloat(distance) / 100) :
maximum - parseFloat(distance);
diff --git a/js/angular/controller/listController.js b/js/angular/controller/listController.js
index 9d7dd277e66..48e7c8f66c7 100644
--- a/js/angular/controller/listController.js
+++ b/js/angular/controller/listController.js
@@ -1,4 +1,3 @@
-
/**
* @ngdoc service
* @name $ionicListDelegate
@@ -32,8 +31,7 @@
* }
* ```
*/
-IonicModule
-.service('$ionicListDelegate', ionic.DelegateService([
+IonicModule.service('$ionicListDelegate', ionic.DelegateService([
/**
* @ngdoc method
* @name $ionicListDelegate#showReorder
diff --git a/js/angular/controller/navBarController.js b/js/angular/controller/navBarController.js
index 1dd229922ca..0555816f44a 100644
--- a/js/angular/controller/navBarController.js
+++ b/js/angular/controller/navBarController.js
@@ -43,7 +43,7 @@ function($scope, $element, $attrs, $compile, $timeout, $ionicNavBarDelegate, $io
};
- self.createHeaderBar = function(isActive, navBarClass) {
+ self.createHeaderBar = function(isActive) {
var containerEle = jqLite('
');
ionic.DomUtil.cachedAttr(containerEle, 'nav-bar', isActive ? 'active' : 'cached');
diff --git a/js/angular/controller/navViewController.js b/js/angular/controller/navViewController.js
index 2e87d9ee59e..bedd568b1e5 100644
--- a/js/angular/controller/navViewController.js
+++ b/js/angular/controller/navViewController.js
@@ -26,7 +26,6 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
var activeEleId;
var navViewAttr = $ionicViewSwitcher.navViewAttr;
var disableRenderStartViewId, disableAnimation;
- var transitionDuration, transitionTiming;
self.scope = $scope;
self.element = $element;
@@ -39,7 +38,7 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
// off the DOM so child directives can find it.
var parent = $element.parent().inheritedData('$uiView');
var parentViewName = ((parent && parent.state) ? parent.state.name : '');
- if (navViewName.indexOf('@') < 0) navViewName = navViewName + '@' + parentViewName;
+ if (navViewName.indexOf('@') < 0) navViewName = navViewName + '@' + parentViewName;
var viewData = { name: navViewName, state: null };
$element.data('$uiView', viewData);
@@ -478,7 +477,7 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
function getAssociatedNavBarCtrl() {
if (navBarDelegate) {
- for (var x=0; x < $ionicNavBarDelegate._instances.length; x++) {
+ for (var x = 0; x < $ionicNavBarDelegate._instances.length; x++) {
if ($ionicNavBarDelegate._instances[x].$$delegateHandle == navBarDelegate) {
return $ionicNavBarDelegate._instances[x];
}
diff --git a/js/angular/controller/refresherController.js b/js/angular/controller/refresherController.js
index 5c5892531b8..16b31bdd671 100644
--- a/js/angular/controller/refresherController.js
+++ b/js/angular/controller/refresherController.js
@@ -5,7 +5,7 @@ IonicModule
'$element',
'$ionicBind',
'$timeout',
- function($scope, $attrs, $element, $ionicBind, $timeout) {
+ function($scope, $attrs, $element, $ionicBind, $timeout) {
var self = this,
isDragging = false,
isOverscrolling = false,
@@ -51,22 +51,21 @@ IonicModule
dragOffset = 0;
isOverscrolling = false;
setScrollLock(false);
- return true;
- }
- isDragging = false;
- dragOffset = 0;
+ } else {
+ isDragging = false;
+ dragOffset = 0;
- // the user has scroll far enough to trigger a refresh
- if (lastOverscroll > ptrThreshold) {
- start();
- scrollTo(ptrThreshold, scrollTime);
+ // the user has scroll far enough to trigger a refresh
+ if (lastOverscroll > ptrThreshold) {
+ start();
+ scrollTo(ptrThreshold, scrollTime);
- // the user has overscrolled but not far enough to trigger a refresh
- } else {
- scrollTo(0, scrollTime, deactivate);
- isOverscrolling = false;
+ // the user has overscrolled but not far enough to trigger a refresh
+ } else {
+ scrollTo(0, scrollTime, deactivate);
+ isOverscrolling = false;
+ }
}
- return true;
}
function handleTouchmove(e) {
@@ -91,15 +90,14 @@ IonicModule
}
if (isDragging) {
- nativescroll(scrollParent,parseInt(deltaY - dragOffset, 10) * -1);
+ nativescroll(scrollParent, parseInt(deltaY - dragOffset, 10) * -1);
}
// if we're not at overscroll 0 yet, 0 out
if (lastOverscroll !== 0) {
overscroll(0);
}
-
- return true;
+ return;
} else if (deltaY > 0 && scrollParent.scrollTop === 0 && !isOverscrolling) {
// starting overscroll, but drag started below scrollTop 0, so we need to offset the position
@@ -297,7 +295,7 @@ IonicModule
$element[0].classList.remove('invisible');
}
- function hide() {
+ function hide() {
// showCallback
$element[0].classList.add('invisible');
}
@@ -310,6 +308,6 @@ IonicModule
// for testing
self.__handleTouchmove = handleTouchmove;
self.__getScrollChild = function() { return scrollChild; };
- self.__getScrollParent= function() { return scrollParent; };
+ self.__getScrollParent = function() { return scrollParent; };
}
]);
diff --git a/js/angular/controller/scrollController.js b/js/angular/controller/scrollController.js
index 4dfe07dcdae..131c39487bb 100644
--- a/js/angular/controller/scrollController.js
+++ b/js/angular/controller/scrollController.js
@@ -148,7 +148,7 @@ function($scope,
var hash = $location.hash();
var elm = hash && $document[0].getElementById(hash);
if (!(hash && elm)) {
- scrollView.scrollTo(0,0, !!shouldAnimate);
+ scrollView.scrollTo(0, 0, !!shouldAnimate);
return;
}
var curElm = elm;
diff --git a/js/angular/controller/sideMenuController.js b/js/angular/controller/sideMenuController.js
index bb4025dd72d..21d2c9f7cb0 100644
--- a/js/angular/controller/sideMenuController.js
+++ b/js/angular/controller/sideMenuController.js
@@ -7,7 +7,8 @@ IonicModule
'$ionicBody',
'$ionicHistory',
'$ionicScrollDelegate',
-function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $ionicHistory, $ionicScrollDelegate) {
+ 'IONIC_BACK_PRIORITY',
+function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $ionicHistory, $ionicScrollDelegate, IONIC_BACK_PRIORITY) {
var self = this;
var rightShowing, leftShowing, isDragging;
var startX, lastX, offsetX, isAsideExposed;
@@ -142,7 +143,6 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
if (self.left && percentage >= 0) {
self.openAmount(self.left.width * p);
} else if (self.right && percentage < 0) {
- var maxRight = self.right.width;
self.openAmount(self.right.width * p);
}
@@ -413,7 +413,7 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
if (isOpen) {
deregisterBackButtonAction = $ionicPlatform.registerBackButtonAction(
closeSideMenu,
- PLATFORM_BACK_BUTTON_PRIORITY_SIDE_MENU
+ IONIC_BACK_PRIORITY.sideMenu
);
}
});
diff --git a/js/angular/controller/spinnerController.js b/js/angular/controller/spinnerController.js
index 93f3d3e8cf0..9b7748b3e93 100644
--- a/js/angular/controller/spinnerController.js
+++ b/js/angular/controller/spinnerController.js
@@ -228,7 +228,7 @@
};
},
t: 1
- },{
+ }, {
fn: function() {
return {
an: 'y2',
@@ -238,7 +238,7 @@
};
},
t: 1
- },{
+ }, {
fn: function() {
return {
an: STROKE_OPACITY,
@@ -278,7 +278,7 @@
};
},
t: 1
- },{
+ }, {
fn: function() {
return {
an: STROKE_OPACITY,
diff --git a/js/angular/controller/viewController.js b/js/angular/controller/viewController.js
index f600598285a..c23b3f7d1b5 100644
--- a/js/angular/controller/viewController.js
+++ b/js/angular/controller/viewController.js
@@ -5,8 +5,7 @@ IonicModule
'$attrs',
'$compile',
'$rootScope',
- '$ionicViewSwitcher',
-function($scope, $element, $attrs, $compile, $rootScope, $ionicViewSwitcher) {
+function($scope, $element, $attrs, $compile, $rootScope) {
var self = this;
var navElementHtml = {};
var navViewCtrl;
diff --git a/js/angular/deprecated.js b/js/angular/deprecated.js
deleted file mode 100644
index bb95297919e..00000000000
--- a/js/angular/deprecated.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * deprecated.js
- * https://github.com/wearefractal/deprecated/
- * Copyright (c) 2014 Fractal
- * License MIT
- */
-//Interval object
-var deprecated = {
- method: function(msg, log, fn) {
- var called = false;
- return function deprecatedMethod() {
- if (!called) {
- called = true;
- log(msg);
- }
- return fn.apply(this, arguments);
- };
- },
-
- field: function(msg, log, parent, field, val) {
- var called = false;
- var getter = function() {
- if (!called) {
- called = true;
- log(msg);
- }
- return val;
- };
- var setter = function(v) {
- if (!called) {
- called = true;
- log(msg);
- }
- val = v;
- return v;
- };
- Object.defineProperty(parent, field, {
- get: getter,
- set: setter,
- enumerable: true
- });
- return;
- }
-};
diff --git a/js/angular/directive/collectionRepeat.js b/js/angular/directive/collectionRepeat.js
index 719bb30d9b2..67c2dadc2ba 100644
--- a/js/angular/directive/collectionRepeat.js
+++ b/js/angular/directive/collectionRepeat.js
@@ -356,14 +356,16 @@ function CollectionRepeatDirective($ionicCollectionManager, $parse, $window, $$r
dimensionData.getValue = dimensionData === heightData ?
function heightGetter(scope, locals) {
var result = parsedValue(scope, locals);
- if (result.charAt && result.charAt(result.length - 1) === '%')
+ if (result.charAt && result.charAt(result.length - 1) === '%') {
return Math.floor(parseInt(result) / 100 * scrollView.__clientHeight);
+ }
return parseInt(result);
} :
function widthGetter(scope, locals) {
var result = parsedValue(scope, locals);
- if (result.charAt && result.charAt(result.length - 1) === '%')
+ if (result.charAt && result.charAt(result.length - 1) === '%') {
return Math.floor(parseInt(result) / 100 * scrollView.__clientWidth);
+ }
return parseInt(result);
};
}
@@ -461,7 +463,6 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
var itemsEntering = [];
var itemsShownMap = {};
var nextItemId = 0;
- var estimatedItemsAcross;
var scrollViewSetDimensions = isVertical ?
function() { scrollView.setDimensions(null, null, null, view.getContentSize(), true); } :
@@ -484,7 +485,6 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
scrollView.__$callback = scrollView.__callback;
scrollView.__callback = function(transformLeft, transformTop, zoom, wasResize) {
var scrollValue = view.getScrollValue();
- if(window.d)dump('_-callback render', scrollValue, view.scrollPrimarySize + renderAfterBoundary);
if (renderStartIndex === -1 ||
scrollValue + view.scrollPrimarySize > renderAfterBoundary ||
scrollValue < renderBeforeBoundary) {
@@ -495,7 +495,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
var isLayoutReady = false;
var isDataReady = false;
- this.refreshLayout = function(itemsAfterRepeater) {
+ this.refreshLayout = function() {
if (data.length) {
estimatedHeight = heightGetter(0, data[0]);
estimatedWidth = widthGetter(0, data[0]);
@@ -523,7 +523,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
} while( ionic.DomUtil.contains(scrollView.__content, current = current.offsetParent) );
var containerPrevNode = containerNode.previousElementSibling;
- var beforeStyle = containerPrevNode ? $window.getComputedStyle(containerPrevNode) : {};
+ var beforeStyle = containerPrevNode ? $window.getComputedStyle(containerPrevNode) : {};
var beforeMargin = parseInt(beforeStyle[isVertical ? 'marginBottom' : 'marginRight'] || 0);
// Because we position the collection container with position: relative, it doesn't take
@@ -594,6 +594,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
function render(forceRerender) {
if (render.destroyed) return;
var i;
+ var ii;
var item;
var dim;
var scope;
@@ -637,7 +638,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
scope.$first = (i === 0);
scope.$last = (i === (data.length - 1));
scope.$middle = !(scope.$first || scope.$last);
- scope.$odd = !(scope.$even = (i&1) === 0);
+ scope.$odd = !(scope.$even = (i & 1) === 0);
if (scope.$$disconnected) ionic.Utils.reconnectScope(item.scope);
@@ -697,14 +698,6 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
}
}
- function getNextItem() {
- if (itemsLeaving.length)
- return itemsLeaving.pop();
- else if (itemsPool.length)
- return itemsPool.shift();
- return new RepeatItem();
- }
-
function digestEnteringItems() {
var item;
if (digestEnteringItems.running) return;
@@ -725,7 +718,7 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
function RepeatItem() {
var self = this;
this.scope = scope.$new();
- this.id = 'item'+ (nextItemId++);
+ this.id = 'item' + (nextItemId++);
transclude(this.scope, function(clone) {
self.element = clone;
self.element.data('$$collectionRepeatItem', self);
@@ -899,9 +892,11 @@ function RepeatManagerFactory($rootScope, $window, $$rAF) {
};
this.onRefreshData = function() {
+ var i;
+ var ii;
// Make sure dimensions has as many items as data.length.
// This is to be sure we don't have to allocate objects while scrolling.
- for (i = dimensions.length, len = data.length; i < len; i++) {
+ for (i = dimensions.length, ii = data.length; i < ii; i++) {
dimensions.push({});
}
dimensionsIndex = -1;
diff --git a/js/angular/directive/content.js b/js/angular/directive/content.js
index 64e62f68696..6032ab8328d 100644
--- a/js/angular/directive/content.js
+++ b/js/angular/directive/content.js
@@ -69,10 +69,10 @@ function($timeout, $controller, $ionicBind, $ionicConfig) {
}
return { pre: prelink };
- function prelink($scope, $element, $attr, navViewCtrl) {
+ function prelink($scope, $element, $attr) {
var parentScope = $scope.$parent;
$scope.$watch(function() {
- return (parentScope.$hasHeader ? ' has-header' : '') +
+ return (parentScope.$hasHeader ? ' has-header' : '') +
(parentScope.$hasSubheader ? ' has-subheader' : '') +
(parentScope.$hasFooter ? ' has-footer' : '') +
(parentScope.$hasSubfooter ? ' has-subfooter' : '') +
@@ -122,7 +122,7 @@ function($timeout, $controller, $ionicBind, $ionicConfig) {
delegateHandle: attr.delegateHandle,
startX: $scope.$eval($scope.startX) || 0,
startY: $scope.$eval($scope.startY) || 0,
- nativeScrolling:true
+ nativeScrolling: true
};
} else {
diff --git a/js/angular/directive/exposeAsideWhen.js b/js/angular/directive/exposeAsideWhen.js
index bd3594e4766..77abcdee5c0 100644
--- a/js/angular/directive/exposeAsideWhen.js
+++ b/js/angular/directive/exposeAsideWhen.js
@@ -39,7 +39,7 @@
* For a complete side menu example, see the
* {@link ionic.directive:ionSideMenus} documentation.
*/
-IonicModule.directive('exposeAsideWhen', ['$window', '$timeout', function($window, $timeout) {
+IonicModule.directive('exposeAsideWhen', ['$window', function($window) {
return {
restrict: 'A',
require: '^ionSideMenus',
diff --git a/js/angular/directive/headerFooterBar.js b/js/angular/directive/headerFooterBar.js
index 07ede0805ce..4376eddd3ae 100644
--- a/js/angular/directive/headerFooterBar.js
+++ b/js/angular/directive/headerFooterBar.js
@@ -118,11 +118,11 @@ function tapScrollToTopDirective() {
}
function headerFooterBarDirective(isHeader) {
- return ['$document', '$timeout',function($document, $timeout) {
+ return ['$document', '$timeout', function($document, $timeout) {
return {
restrict: 'E',
controller: '$ionicHeaderBar',
- compile: function(tElement, $attr) {
+ compile: function(tElement) {
tElement.addClass(isHeader ? 'bar bar-header' : 'bar bar-footer');
// top style tabs? if so, remove bottom border for seamless display
$timeout(function() {
diff --git a/js/angular/directive/infiniteScroll.js b/js/angular/directive/infiniteScroll.js
index b23933f0d1b..a4cff096ffb 100644
--- a/js/angular/directive/infiniteScroll.js
+++ b/js/angular/directive/infiniteScroll.js
@@ -89,7 +89,7 @@ IonicModule
scrollCtrl.$element.on('scroll', infiniteScrollCtrl.checkBounds);
} else {
// grabbing the scrollable element, to determine dimensions, and current scroll pos
- var scrollEl = ionic.DomUtil.getParentOrSelfWithClass($element[0].parentNode,'overflow-scroll');
+ var scrollEl = ionic.DomUtil.getParentOrSelfWithClass($element[0].parentNode, 'overflow-scroll');
infiniteScrollCtrl.scrollEl = scrollEl;
// if there's no scroll controller, and no overflow scroll div, infinite scroll wont work
if (!scrollEl) {
diff --git a/js/angular/directive/item.js b/js/angular/directive/item.js
index 218a07282c1..5e25f278d07 100644
--- a/js/angular/directive/item.js
+++ b/js/angular/directive/item.js
@@ -29,7 +29,6 @@ var ITEM_TPL_CONTENT =
*/
IonicModule
.directive('ionItem', ['$$rAF', function($$rAF) {
- var nextId = 0;
return {
restrict: 'E',
controller: ['$scope', '$element', function($scope, $element) {
@@ -56,7 +55,6 @@ IonicModule
}
return function link($scope, $element, $attrs) {
- var listCtrl;
$scope.$href = function() {
return $attrs.href || $attrs.ngHref;
};
diff --git a/js/angular/directive/itemOptionButton.js b/js/angular/directive/itemOptionButton.js
index 91fe8a71e9a..a9e3f239298 100644
--- a/js/angular/directive/itemOptionButton.js
+++ b/js/angular/directive/itemOptionButton.js
@@ -27,8 +27,7 @@ var ITEM_TPL_OPTION_BUTTONS =
*
* ```
*/
-IonicModule
-.directive('ionOptionButton', ['$compile', function($compile) {
+IonicModule.directive('ionOptionButton', [function() {
function stopPropagation(e) {
e.stopPropagation();
}
diff --git a/js/angular/directive/itemReorderButton.js b/js/angular/directive/itemReorderButton.js
index 6a2d47227bc..ccd85efdefc 100644
--- a/js/angular/directive/itemReorderButton.js
+++ b/js/angular/directive/itemReorderButton.js
@@ -69,7 +69,10 @@ IonicModule
// prevent clicks from bubbling up to the item
if(!$attr.ngClick && !$attr.onClick && !$attr.onclick){
- $element[0].onclick = function(e){e.stopPropagation(); return false;};
+ $element[0].onclick = function(e){
+ e.stopPropagation();
+ return false;
+ };
}
var container = jqLite(ITEM_TPL_REORDER_BUTTON);
diff --git a/js/angular/directive/keyboardAttach.js b/js/angular/directive/keyboardAttach.js
index 2d4b4a15d3a..dfecf9e067e 100644
--- a/js/angular/directive/keyboardAttach.js
+++ b/js/angular/directive/keyboardAttach.js
@@ -29,7 +29,7 @@
IonicModule
.directive('keyboardAttach', function() {
- return function(scope, element, attrs) {
+ return function(scope, element) {
ionic.on('native.keyboardshow', onShow, window);
ionic.on('native.keyboardhide', onHide, window);
diff --git a/js/angular/directive/modalView.js b/js/angular/directive/modalView.js
index b2cc85ac2ee..49fa46742b5 100644
--- a/js/angular/directive/modalView.js
+++ b/js/angular/directive/modalView.js
@@ -2,7 +2,7 @@ IonicModule
.directive('ionModalView', function() {
return {
restrict: 'E',
- compile: function(element, attr) {
+ compile: function(element) {
element.addClass('modal');
}
};
diff --git a/js/angular/directive/ngClick.js b/js/angular/directive/ngClick.js
index 73598442b22..8fe77ad2abb 100644
--- a/js/angular/directive/ngClick.js
+++ b/js/angular/directive/ngClick.js
@@ -25,7 +25,7 @@ IonicModule
// Hack for iOS Safari's benefit. It goes searching for onclick handlers and is liable to click
// something else nearby.
- element.onclick = function(event) { };
+ element.onclick = noop;
};
}])
diff --git a/js/angular/directive/pane.js b/js/angular/directive/pane.js
index 119e865ac08..5f818eaba88 100644
--- a/js/angular/directive/pane.js
+++ b/js/angular/directive/pane.js
@@ -11,7 +11,7 @@ IonicModule
.directive('ionPane', function() {
return {
restrict: 'E',
- link: function(scope, element, attr) {
+ link: function(scope, element) {
element.addClass('pane');
}
};
diff --git a/js/angular/directive/scroll.js b/js/angular/directive/scroll.js
index 34f922807a9..8406bc7f10f 100644
--- a/js/angular/directive/scroll.js
+++ b/js/angular/directive/scroll.js
@@ -49,7 +49,7 @@ function($timeout, $controller, $ionicBind) {
restrict: 'E',
scope: true,
controller: function() {},
- compile: function(element, attr) {
+ compile: function(element) {
element.addClass('scroll-view ionic-scroll');
//We cannot transclude here because it breaks element.data() inheritance on compile
@@ -59,8 +59,6 @@ function($timeout, $controller, $ionicBind) {
return { pre: prelink };
function prelink($scope, $element, $attr) {
- var scrollView, scrollCtrl;
-
$ionicBind($scope, $attr, {
direction: '@',
paging: '@',
@@ -86,7 +84,7 @@ function($timeout, $controller, $ionicBind) {
if(!$scope.direction) { $scope.direction = 'y'; }
var isPaging = $scope.$eval($scope.paging) === true;
- var scrollViewOptions= {
+ var scrollViewOptions = {
el: $element[0],
delegateHandle: $attr.delegateHandle,
locking: ($attr.locking || 'true') === 'true',
@@ -106,11 +104,10 @@ function($timeout, $controller, $ionicBind) {
scrollViewOptions.bouncing = false;
}
- scrollCtrl = $controller('$ionicScroll', {
+ $controller('$ionicScroll', {
$scope: $scope,
scrollViewOptions: scrollViewOptions
});
- scrollView = $scope.$parent.scrollView = scrollCtrl.scrollView;
}
}
};
diff --git a/js/angular/directive/sideMenuContent.js b/js/angular/directive/sideMenuContent.js
index adca21d1c07..ec706879ffa 100644
--- a/js/angular/directive/sideMenuContent.js
+++ b/js/angular/directive/sideMenuContent.js
@@ -131,8 +131,8 @@ function($timeout, $ionicGesture, $window) {
var content = {
element: element[0],
- onDrag: function(e) {},
- endDrag: function(e) {},
+ onDrag: function() {},
+ endDrag: function() {},
getTranslateX: function() {
return $scope.sideMenuContentTranslateX || 0;
},
@@ -182,8 +182,8 @@ function($timeout, $ionicGesture, $window) {
// add gesture handlers
var gestureOpts = { stop_browser_behavior: false };
- if (ionic.DomUtil.getParentOrSelfWithClass($element[0],'overflow-scroll')) {
- gestureOpts.prevent_default_directions = ['left','right'];
+ if (ionic.DomUtil.getParentOrSelfWithClass($element[0], 'overflow-scroll')) {
+ gestureOpts.prevent_default_directions = ['left', 'right'];
}
var contentTapGesture = $ionicGesture.on('tap', onContentTap, $element, gestureOpts);
var dragRightGesture = $ionicGesture.on('dragright', onDragX, $element, gestureOpts);
diff --git a/js/angular/directive/slideBox.js b/js/angular/directive/slideBox.js
index 58f72dc6d28..68abbc7ef3d 100644
--- a/js/angular/directive/slideBox.js
+++ b/js/angular/directive/slideBox.js
@@ -152,7 +152,7 @@ function($timeout, $compile, $ionicSlideBoxDelegate, $ionicHistory, $ionicScroll
'
' +
'',
- link: function($scope, $element, $attr, slideBoxCtrl) {
+ link: function($scope, $element, $attr) {
// if showPager is undefined, show the pager
if (!isDefined($attr.showPager)) {
$scope.showPager = true;
@@ -181,10 +181,8 @@ function($timeout, $compile, $ionicSlideBoxDelegate, $ionicHistory, $ionicScroll
return {
restrict: 'E',
require: '^ionSlideBox',
- compile: function(element, attr) {
+ compile: function(element) {
element.addClass('slider-slide');
- return function($scope, $element, $attr) {
- };
}
};
})
diff --git a/js/angular/directive/tabNav.js b/js/angular/directive/tabNav.js
index cde1260f305..e56ee5c774b 100644
--- a/js/angular/directive/tabNav.js
+++ b/js/angular/directive/tabNav.js
@@ -23,41 +23,39 @@ IonicModule
badgeStyle: '@',
'class': '@'
},
- compile: function(element, attr, transclude) {
- return function link($scope, $element, $attrs, ctrls) {
- var tabsCtrl = ctrls[0],
- tabCtrl = ctrls[1];
+ link: function($scope, $element, $attrs, ctrls) {
+ var tabsCtrl = ctrls[0],
+ tabCtrl = ctrls[1];
- //Remove title attribute so browser-tooltip does not apear
- $element[0].removeAttribute('title');
+ //Remove title attribute so browser-tooltip does not apear
+ $element[0].removeAttribute('title');
- $scope.selectTab = function(e) {
- e.preventDefault();
- tabsCtrl.select(tabCtrl.$scope, true);
- };
- if (!$attrs.ngClick) {
- $element.on('click', function(event) {
- $scope.$apply(function() {
- $scope.selectTab(event);
- });
+ $scope.selectTab = function(e) {
+ e.preventDefault();
+ tabsCtrl.select(tabCtrl.$scope, true);
+ };
+ if (!$attrs.ngClick) {
+ $element.on('click', function(event) {
+ $scope.$apply(function() {
+ $scope.selectTab(event);
});
- }
+ });
+ }
- $scope.isHidden = function() {
- if ($attrs.hidden === 'true' || $attrs.hidden === true) return true;
- return false;
- };
+ $scope.isHidden = function() {
+ if ($attrs.hidden === 'true' || $attrs.hidden === true) return true;
+ return false;
+ };
- $scope.getIconOn = function() {
- return $scope.iconOn || $scope.icon;
- };
- $scope.getIconOff = function() {
- return $scope.iconOff || $scope.icon;
- };
+ $scope.getIconOn = function() {
+ return $scope.iconOn || $scope.icon;
+ };
+ $scope.getIconOff = function() {
+ return $scope.iconOff || $scope.icon;
+ };
- $scope.isTabActive = function() {
- return tabsCtrl.selectedTab() === tabCtrl.$scope;
- };
+ $scope.isTabActive = function() {
+ return tabsCtrl.selectedTab() === tabCtrl.$scope;
};
}
};
diff --git a/js/angular/directive/tabs.js b/js/angular/directive/tabs.js
index dbee465b5ee..71535ff228d 100644
--- a/js/angular/directive/tabs.js
+++ b/js/angular/directive/tabs.js
@@ -50,8 +50,7 @@ IonicModule
.directive('ionTabs', [
'$ionicTabsDelegate',
'$ionicConfig',
- '$ionicHistory',
-function($ionicTabsDelegate, $ionicConfig, $ionicHistory) {
+function($ionicTabsDelegate, $ionicConfig) {
return {
restrict: 'E',
scope: true,
diff --git a/js/angular/main.js b/js/angular/main.js
index 40b363c4623..588efbb512b 100644
--- a/js/angular/main.js
+++ b/js/angular/main.js
@@ -1,3 +1,4 @@
+/* eslint no-unused-vars:0 */
var IonicModule = angular.module('ionic', ['ngAnimate', 'ngSanitize', 'ui.router']),
extend = angular.extend,
forEach = angular.forEach,
diff --git a/js/angular/service/actionSheet.js b/js/angular/service/actionSheet.js
index 4de466c4c08..ea054b8da49 100644
--- a/js/angular/service/actionSheet.js
+++ b/js/angular/service/actionSheet.js
@@ -57,7 +57,8 @@ IonicModule
'$ionicTemplateLoader',
'$ionicPlatform',
'$ionicBody',
-function($rootScope, $compile, $animate, $timeout, $ionicTemplateLoader, $ionicPlatform, $ionicBody) {
+ 'IONIC_BACK_PRIORITY',
+function($rootScope, $compile, $animate, $timeout, $ionicTemplateLoader, $ionicPlatform, $ionicBody, IONIC_BACK_PRIORITY) {
return {
show: actionSheet
@@ -169,7 +170,7 @@ function($rootScope, $compile, $animate, $timeout, $ionicTemplateLoader, $ionicP
function() {
$timeout(scope.cancel);
},
- PLATFORM_BACK_BUTTON_PRIORITY_ACTION_SHEET
+ IONIC_BACK_PRIORITY.actionSheet
);
// called when the user presses the cancel button
diff --git a/js/angular/service/backdrop.js b/js/angular/service/backdrop.js
index 8433a63c4f8..4b89bddbc8c 100644
--- a/js/angular/service/backdrop.js
+++ b/js/angular/service/backdrop.js
@@ -34,12 +34,11 @@
*/
IonicModule
.factory('$ionicBackdrop', [
- '$document', '$timeout', '$$rAF', '$$q',
-function($document, $timeout, $$rAF, $$q) {
+ '$document', '$timeout', '$$rAF',
+function($document, $timeout, $$rAF) {
var el = jqLite('');
var backdropHolds = 0;
- var backdropIsActive = false;
$document[0].body.appendChild(el[0]);
diff --git a/js/angular/service/decorators/location.js b/js/angular/service/decorators/location.js
index bb25412c6b6..aab17af0509 100644
--- a/js/angular/service/decorators/location.js
+++ b/js/angular/service/decorators/location.js
@@ -14,8 +14,9 @@ function($provide) {
if (isDefined(value)) {
$timeout(function() {
var scroll = document.querySelector('.scroll-content');
- if (scroll)
+ if (scroll) {
scroll.scrollTop = 0;
+ }
}, 0, false);
}
return $location.__hash(value);
diff --git a/js/angular/service/history.js b/js/angular/service/history.js
index d285e4e5021..6060a99bde0 100644
--- a/js/angular/service/history.js
+++ b/js/angular/service/history.js
@@ -75,7 +75,6 @@ function($rootScope, $state, $location, $window, $timeout, $ionicViewSwitcher, $
}
$location.url(this.url);
- return;
}
return null;
@@ -313,8 +312,8 @@ function($rootScope, $state, $location, $window, $timeout, $ionicViewSwitcher, $
// the forward has a history
for (x = tmp.stack.length - 1; x >= forwardView.index; x--) {
// starting from the end destroy all forwards in this history from this point
- var stack_x = tmp.stack[x];
- stack_x && stack_x.destroy && stack_x.destroy();
+ var stackItem = tmp.stack[x];
+ stackItem && stackItem.destroy && stackItem.destroy();
tmp.stack.splice(x);
}
historyId = forwardView.historyId;
@@ -664,7 +663,7 @@ function($rootScope, $state, $location, $window, $timeout, $ionicViewSwitcher, $
},
isAbstractEle: function(ele, viewLocals) {
- if (viewLocals && viewLocals.$$state && viewLocals.$$state.self.abstract) {
+ if (viewLocals && viewLocals.$$state && viewLocals.$$state.self['abstract']) {
return true;
}
return !!(ele && (isAbstractTag(ele) || isAbstractTag(ele.children())));
@@ -727,7 +726,8 @@ function($rootScope, $state, $location, $window, $timeout, $ionicViewSwitcher, $
'$document',
'$ionicPlatform',
'$ionicHistory',
-function($rootScope, $state, $location, $document, $ionicPlatform, $ionicHistory) {
+ 'IONIC_BACK_PRIORITY',
+function($rootScope, $state, $location, $document, $ionicPlatform, $ionicHistory, IONIC_BACK_PRIORITY) {
// always reset the keyboard state when change stage
$rootScope.$on('$ionicView.beforeEnter', function() {
@@ -735,7 +735,7 @@ function($rootScope, $state, $location, $document, $ionicPlatform, $ionicHistory
});
$rootScope.$on('$ionicHistory.change', function(e, data) {
- if (!data) return;
+ if (!data) return null;
var viewHistory = $ionicHistory.viewHistory();
@@ -792,7 +792,7 @@ function($rootScope, $state, $location, $document, $ionicPlatform, $ionicHistory
}
$ionicPlatform.registerBackButtonAction(
onHardwareBackButton,
- PLATFORM_BACK_BUTTON_PRIORITY_VIEW
+ IONIC_BACK_PRIORITY.view
);
}]);
diff --git a/js/angular/service/loading.js b/js/angular/service/loading.js
index 8ce29a29e8e..9223089079b 100644
--- a/js/angular/service/loading.js
+++ b/js/angular/service/loading.js
@@ -67,7 +67,8 @@ IonicModule
'$compile',
'$ionicPlatform',
'$rootScope',
-function($ionicLoadingConfig, $ionicBody, $ionicTemplateLoader, $ionicBackdrop, $timeout, $q, $log, $compile, $ionicPlatform, $rootScope) {
+ 'IONIC_BACK_PRIORITY',
+function($ionicLoadingConfig, $ionicBody, $ionicTemplateLoader, $ionicBackdrop, $timeout, $q, $log, $compile, $ionicPlatform, $rootScope, IONIC_BACK_PRIORITY) {
var loaderInstance;
//default values
@@ -142,7 +143,7 @@ function($ionicLoadingConfig, $ionicBody, $ionicTemplateLoader, $ionicBackdrop,
//Disable hardware back button while loading
deregisterBackAction = $ionicPlatform.registerBackButtonAction(
noop,
- PLATFORM_BACK_BUTTON_PRIORITY_LOADING
+ IONIC_BACK_PRIORITY.loading
);
templatePromise.then(function(html) {
@@ -209,15 +210,20 @@ function($ionicLoadingConfig, $ionicBody, $ionicTemplateLoader, $ionicBackdrop,
});
return {
- hide: deprecated.method(LOADING_HIDE_DEPRECATED, $log.error, hideLoader),
- show: deprecated.method(LOADING_SHOW_DEPRECATED, $log.error, function() {
- showLoader(options);
- }),
- setContent: deprecated.method(LOADING_SET_DEPRECATED, $log.error, function(content) {
- getLoader().then(function(loader) {
+ hide: function deprecatedHide() {
+ $log.error(LOADING_HIDE_DEPRECATED);
+ return hideLoader.apply(this, arguments);
+ },
+ show: function deprecatedShow() {
+ $log.error(LOADING_SHOW_DEPRECATED);
+ return showLoader.apply(this, arguments);
+ },
+ setContent: function deprecatedSetContent(content) {
+ $log.error(LOADING_SET_DEPRECATED);
+ return getLoader().then(function(loader) {
loader.show({ template: content });
});
- })
+ }
};
}
diff --git a/js/angular/service/modal.js b/js/angular/service/modal.js
index 8ed1f8dce4f..181a1638ee0 100644
--- a/js/angular/service/modal.js
+++ b/js/angular/service/modal.js
@@ -74,7 +74,8 @@ IonicModule
'$log',
'$ionicClickBlock',
'$window',
-function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTemplateLoader, $$q, $log, $ionicClickBlock, $window) {
+ 'IONIC_BACK_PRIORITY',
+function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTemplateLoader, $$q, $log, $ionicClickBlock, $window, IONIC_BACK_PRIORITY) {
/**
* @ngdoc controller
@@ -122,7 +123,7 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
var self = this;
if (self.scope.$$destroyed) {
- $log.error('Cannot call ' + self.viewType + '.show() after remove(). Please create a new ' + self.viewType + ' instance.');
+ $log.error('Cannot call ' + self.viewType + '.show() after remove(). Please create a new ' + self.viewType + ' instance.');
return $$q.when();
}
@@ -148,8 +149,8 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
self.positionView(target, modalEl);
// set up a listener for in case the window size changes
- self._onWindowResize = function(ev) {
- if (self._isShown) self.positionView(target,modalEl);
+ self._onWindowResize = function() {
+ if (self._isShown) self.positionView(target, modalEl);
};
$window.addEventListener('resize', self._onWindowResize);
}
@@ -161,7 +162,7 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
self._isShown = true;
self._deregisterBackButton = $ionicPlatform.registerBackButtonAction(
self.hardwareBackButtonClose ? angular.bind(self, self.hide) : noop,
- PLATFORM_BACK_BUTTON_PRIORITY_MODAL
+ IONIC_BACK_PRIORITY.modal
);
ionic.views.Modal.prototype.show.call(self);
diff --git a/js/angular/service/platform.js b/js/angular/service/platform.js
index 4bbd54ecd00..205b27f3c89 100644
--- a/js/angular/service/platform.js
+++ b/js/angular/service/platform.js
@@ -1,9 +1,3 @@
-var PLATFORM_BACK_BUTTON_PRIORITY_VIEW = 100;
-var PLATFORM_BACK_BUTTON_PRIORITY_SIDE_MENU = 150;
-var PLATFORM_BACK_BUTTON_PRIORITY_MODAL = 200;
-var PLATFORM_BACK_BUTTON_PRIORITY_ACTION_SHEET = 300;
-var PLATFORM_BACK_BUTTON_PRIORITY_POPUP = 400;
-var PLATFORM_BACK_BUTTON_PRIORITY_LOADING = 500;
/**
* @ngdoc service
@@ -16,9 +10,17 @@ var PLATFORM_BACK_BUTTON_PRIORITY_LOADING = 500;
* Android back button in PhoneGap/Cordova.
*/
IonicModule
+.constant('IONIC_BACK_PRIORITY', {
+ view: 100,
+ sideMenu: 150,
+ modal: 200,
+ actionSheet: 300,
+ popup: 400,
+ loading: 500
+})
.provider('$ionicPlatform', function() {
return {
- $get: ['$q', '$rootScope', function($q, $rootScope) {
+ $get: ['$q', function($q) {
var self = {
/**
@@ -68,12 +70,12 @@ IonicModule
* Close action sheet = 300
* Dismiss popup = 400
* Dismiss loading overlay = 500
- *
+ *
* Your back button action will override each of the above actions
* whose priority is less than the priority you provide. For example,
* an action assigned a priority of 101 will override the 'return to
* previous view' action, but not any of the other actions.
- *
+ *
* @param {function} callback Called when the back button is pressed,
* if this listener is the highest priority.
* @param {number} priority Only the highest priority will execute.
diff --git a/js/angular/service/popup.js b/js/angular/service/popup.js
index 8a75b46b8c1..dd07a1dd5ce 100644
--- a/js/angular/service/popup.js
+++ b/js/angular/service/popup.js
@@ -113,7 +113,8 @@ IonicModule
'$ionicBody',
'$compile',
'$ionicPlatform',
-function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicBody, $compile, $ionicPlatform) {
+ 'IONIC_BACK_PRIORITY',
+function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicBody, $compile, $ionicPlatform, IONIC_BACK_PRIORITY) {
//TODO allow this to be configured
var config = {
stackPushDelay: 75
@@ -360,7 +361,7 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
});
}
- function onHardwareBackButton(e) {
+ function onHardwareBackButton() {
var last = popupStack[popupStack.length - 1];
last && last.responseDeferred.resolve();
}
@@ -379,7 +380,7 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
//only show the backdrop on the first popup
$ionicPopup._backButtonActionDone = $ionicPlatform.registerBackButtonAction(
onHardwareBackButton,
- PLATFORM_BACK_BUTTON_PRIORITY_POPUP
+ IONIC_BACK_PRIORITY.popup
);
resultDeferred = doShowPopup();
}
@@ -448,7 +449,7 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
buttons: [{
text: opts.okText || 'OK',
type: opts.okType || 'button-positive',
- onTap: function(e) {
+ onTap: function() {
return true;
}
}]
@@ -460,11 +461,11 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
buttons: [{
text: opts.cancelText || 'Cancel',
type: opts.cancelType || 'button-default',
- onTap: function(e) { return false; }
+ onTap: function() { return false; }
}, {
text: opts.okText || 'OK',
type: opts.okType || 'button-positive',
- onTap: function(e) { return true; }
+ onTap: function() { return true; }
}]
}, opts || {}));
}
@@ -484,11 +485,11 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
buttons: [{
text: opts.cancelText || 'Cancel',
type: opts.cancelType || 'button-default',
- onTap: function(e) {}
+ onTap: function() {}
}, {
text: opts.okText || 'OK',
type: opts.okType || 'button-positive',
- onTap: function(e) {
+ onTap: function() {
return scope.data.response || '';
}
}]
diff --git a/js/angular/service/templateCache.js b/js/angular/service/templateCache.js
index 4079bd7b266..020484a7e05 100644
--- a/js/angular/service/templateCache.js
+++ b/js/angular/service/templateCache.js
@@ -71,6 +71,7 @@ function($http, $templateCache, $timeout) {
// run through methods - internal method
function run() {
+ var template;
$ionicTemplateCache._runCount++;
hasRun = true;
diff --git a/js/angular/service/viewSwitcher.js b/js/angular/service/viewSwitcher.js
index 0629459e7c9..f000a264e3d 100644
--- a/js/angular/service/viewSwitcher.js
+++ b/js/angular/service/viewSwitcher.js
@@ -3,8 +3,7 @@
* TODO document
*/
-IonicModule
-.factory('$ionicViewSwitcher',[
+IonicModule.factory('$ionicViewSwitcher', [
'$timeout',
'$document',
'$q',
@@ -21,7 +20,6 @@ function($timeout, $document, $q, $ionicClickBlock, $ionicConfig, $ionicNavBarDe
var DATA_FALLBACK_TIMER = '$fallbackTimer';
var DATA_VIEW = '$viewData';
var NAV_VIEW_ATTR = 'nav-view';
- var HISTORY_CURSOR_ATTR = 'history-cursor';
var VIEW_STATUS_ACTIVE = 'active';
var VIEW_STATUS_CACHED = 'cached';
var VIEW_STATUS_STAGED = 'stage';
@@ -425,7 +423,7 @@ function($timeout, $document, $q, $ionicClickBlock, $ionicConfig, $ionicNavBarDe
function getViewElementIdentifier(locals, view) {
- if (viewState(locals).abstract) return viewState(locals).name;
+ if (viewState(locals)['abstract']) return viewState(locals).name;
if (view) return view.stateId || view.viewId;
return ionic.Utils.nextUid();
}
diff --git a/js/utils/activator.js b/js/utils/activator.js
index 1d832d34247..0709064c30d 100644
--- a/js/utils/activator.js
+++ b/js/utils/activator.js
@@ -9,8 +9,6 @@
ionic.activator = {
start: function(e) {
- var self = this;
-
var hitX = ionic.tap.pointerCoord(e).x;
if (hitX > 0 && hitX < 30) {
return;
diff --git a/js/utils/dom.js b/js/utils/dom.js
index e84d7f80cdb..aed79406c18 100644
--- a/js/utils/dom.js
+++ b/js/utils/dom.js
@@ -21,9 +21,9 @@
// Put it on window just to preserve its context
// without having to use .call
window._rAF = (function() {
- return window.requestAnimationFrame ||
+ return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
- window.mozRequestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 16);
};
diff --git a/js/utils/events.js b/js/utils/events.js
index 27c86057431..be1886764bb 100644
--- a/js/utils/events.js
+++ b/js/utils/events.js
@@ -150,7 +150,7 @@
gesture && gesture.off(type, callback);
},
- handlePopState: function(event) {}
+ handlePopState: function() {}
};
diff --git a/js/utils/gestures.js b/js/utils/gestures.js
index 4af6bde2614..17caa028c83 100644
--- a/js/utils/gestures.js
+++ b/js/utils/gestures.js
@@ -1,3 +1,4 @@
+/* eslint camelcase:0 */
/**
* Simple gesture controllers with some common gestures that emit
* gesture events.
@@ -109,7 +110,7 @@
// so we can't listen for events on it.
if(element === null) {
console.error('Null element passed to gesture (element does not exist). Not listening for gesture');
- return;
+ return this;
}
// setup ionic.GesturesJS window events and register all gestures
@@ -152,7 +153,7 @@
*/
on: function onEvent(gesture, handler){
var gestures = gesture.split(' ');
- for(var t=0; t
drag_lock_min_distance
// This way, locking occurs only when the distance has become large enough to reliably determine the direction
- drag_lock_min_distance : 25,
+ drag_lock_min_distance: 25,
// prevent default if the gesture is going the given direction
- prevent_default_directions : []
+ prevent_default_directions: []
},
triggered: false,
handler: function dragGesture(ev, inst) {
@@ -1179,7 +1179,7 @@
// current gesture isnt drag, but dragged is true
// this means an other gesture is busy. now call dragend
if(ionic.Gestures.detection.current.name != this.name && this.triggered) {
- inst.trigger(this.name +'end', ev);
+ inst.trigger(this.name + 'end', ev);
this.triggered = false;
return;
}
@@ -1210,7 +1210,7 @@
// When a drag is triggered, set the event center to drag_min_distance pixels from the original event center.
// Without this correction, the dragged distance would jumpstart at drag_min_distance pixels instead of at 0.
// It might be useful to save the original start point somewhere
- var factor = Math.abs(inst.options.drag_min_distance/ev.distance);
+ var factor = Math.abs(inst.options.drag_min_distance / ev.distance);
ionic.Gestures.detection.current.startEvent.center.pageX += ev.deltaX * factor;
ionic.Gestures.detection.current.startEvent.center.pageY += ev.deltaY * factor;
@@ -1220,7 +1220,7 @@
}
// lock drag to axis?
- if(ionic.Gestures.detection.current.lastEvent.drag_locked_to_axis || (inst.options.drag_lock_to_axis && inst.options.drag_lock_min_distance<=ev.distance)) {
+ if(ionic.Gestures.detection.current.lastEvent.drag_locked_to_axis || (inst.options.drag_lock_to_axis && inst.options.drag_lock_min_distance <= ev.distance)) {
ev.drag_locked_to_axis = true;
}
var last_direction = ionic.Gestures.detection.current.lastEvent.direction;
@@ -1236,7 +1236,7 @@
// first time, trigger dragstart event
if(!this.triggered) {
- inst.trigger(this.name +'start', ev);
+ inst.trigger(this.name + 'start', ev);
this.triggered = true;
}
@@ -1256,7 +1256,7 @@
case ionic.Gestures.EVENT_END:
// trigger dragend
if(this.triggered) {
- inst.trigger(this.name +'end', ev);
+ inst.trigger(this.name + 'end', ev);
}
this.triggered = false;
@@ -1276,20 +1276,20 @@
index: 45,
defaults: {
// factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1
- transform_min_scale : 0.01,
+ transform_min_scale: 0.01,
// rotation in degrees
- transform_min_rotation : 1,
+ transform_min_rotation: 1,
// prevent default browser behavior when two touches are on the screen
// but it makes the element a blocking element
// when you are using the transform gesture, it is a good practice to set this true
- transform_always_block : false
+ transform_always_block: false
},
triggered: false,
handler: function transformGesture(ev, inst) {
// current gesture isnt drag, but dragged is true
// this means an other gesture is busy. now call dragend
if(ionic.Gestures.detection.current.name != this.name && this.triggered) {
- inst.trigger(this.name +'end', ev);
+ inst.trigger(this.name + 'end', ev);
this.triggered = false;
return;
}
@@ -1310,7 +1310,7 @@
break;
case ionic.Gestures.EVENT_MOVE:
- var scale_threshold = Math.abs(1-ev.scale);
+ var scale_threshold = Math.abs(1 - ev.scale);
var rotation_threshold = Math.abs(ev.rotation);
// when the distance we moved is too small we skip this gesture
@@ -1325,7 +1325,7 @@
// first time, trigger dragstart event
if(!this.triggered) {
- inst.trigger(this.name +'start', ev);
+ inst.trigger(this.name + 'start', ev);
this.triggered = true;
}
@@ -1339,14 +1339,14 @@
// trigger pinch event
if(scale_threshold > inst.options.transform_min_scale) {
inst.trigger('pinch', ev);
- inst.trigger('pinch'+ ((ev.scale < 1) ? 'in' : 'out'), ev);
+ inst.trigger('pinch' + ((ev.scale < 1) ? 'in' : 'out'), ev);
}
break;
case ionic.Gestures.EVENT_END:
// trigger dragend
if(this.triggered) {
- inst.trigger(this.name +'end', ev);
+ inst.trigger(this.name + 'end', ev);
}
this.triggered = false;
@@ -1385,7 +1385,7 @@
ev.preventDefault();
}
- if(ev.eventType == ionic.Gestures.EVENT_START) {
+ if(ev.eventType == ionic.Gestures.EVENT_START) {
inst.trigger(this.name, ev);
}
}
@@ -1401,7 +1401,7 @@
name: 'release',
index: Infinity,
handler: function releaseGesture(ev, inst) {
- if(ev.eventType == ionic.Gestures.EVENT_END) {
+ if(ev.eventType == ionic.Gestures.EVENT_END) {
inst.trigger(this.name, ev);
}
}
diff --git a/js/utils/keyboard.js b/js/utils/keyboard.js
index 8d62c251437..204f9869650 100644
--- a/js/utils/keyboard.js
+++ b/js/utils/keyboard.js
@@ -286,7 +286,7 @@ function keyboardFocusIn(e) {
// an exact keyboard height
// if the keyboard is already open, go ahead and scroll the input into view
// if necessary
- if (!ionic.keyboard.isOpen && !keyboardHasPlugin()) {
+ if (!ionic.keyboard.isOpen && !keyboardHasPlugin()) {
keyboardWaitForResize(keyboardShow, true);
} else if (ionic.keyboard.isOpen) {
@@ -299,7 +299,7 @@ function keyboardFocusIn(e) {
* calls keyboardWaitForResize with keyboardHide as the callback after a small
* timeout.
*/
-function keyboardFocusOut(e) {
+function keyboardFocusOut() {
clearTimeout(keyboardFocusOutTimer);
//console.log("keyboardFocusOut fired at: " + Date.now());
//console.log("keyboardFocusOut event type: " + e.type);
@@ -537,6 +537,7 @@ function keyboardShow() {
return details;
}
+/* eslint no-unused-vars:0 */
function keyboardGetHeight() {
// check if we already have a keyboard height from the plugin or resize calculations
if ( ionic.keyboard.height ) {
diff --git a/js/utils/platform.js b/js/utils/platform.js
index 6f3630827af..d26b968c0be 100644
--- a/js/utils/platform.js
+++ b/js/utils/platform.js
@@ -150,9 +150,9 @@
if (self.isWebView()) {
self.platforms.push('webview');
- if(!(!window.cordova && !window.PhoneGap && !window.phonegap)) {
+ if (!(!window.cordova && !window.PhoneGap && !window.phonegap)) {
self.platforms.push('cordova');
- } else if(!!window.forge) {
+ } else if (window.forge) {
self.platforms.push('trigger');
}
} else {
@@ -295,7 +295,7 @@
};
if (versionMatch[pName]) {
v = self.ua.match(versionMatch[pName]);
- if (v && v.length > 2) {
+ if (v && v.length > 2) {
platformVersion = parseFloat(v[1] + '.' + v[2]);
}
}
diff --git a/js/utils/poly.js b/js/utils/poly.js
index ac6c915251e..c716289a185 100644
--- a/js/utils/poly.js
+++ b/js/utils/poly.js
@@ -33,7 +33,7 @@
ionic.CSS.TRANSITION_DURATION = (isWebkit ? '-webkit-' : '') + 'transition-duration';
// To be sure transitionend works everywhere, include *both* the webkit and non-webkit events
- ionic.CSS.TRANSITIONEND = (isWebkit ? 'webkitTransitionEnd ' : '') + 'transitionend';
+ ionic.CSS.TRANSITIONEND = (isWebkit ? 'webkitTransitionEnd ' : '') + 'transitionend';
})();
// classList polyfill for them older Androids
diff --git a/js/utils/tap.js b/js/utils/tap.js
index 21dcba9f37b..73aca5dcded 100644
--- a/js/utils/tap.js
+++ b/js/utils/tap.js
@@ -277,7 +277,7 @@ ionic.tap = {
pointerCoord: function(event) {
// This method can get coordinates for both a mouse click
// or a touch depending on the given event
- var c = { x:0, y:0 };
+ var c = { x: 0, y: 0 };
if (event) {
var touches = event.touches && event.touches.length ? event.touches : [event];
var e = (event.changedTouches && event.changedTouches[0]) || touches[0];
@@ -327,7 +327,7 @@ function tapClickGateKeeper(e) {
//console.log('click ' + Date.now() + ' isIonicTap: ' + (e.isIonicTap ? true : false));
if (e.target.type == 'submit' && e.detail === 0) {
// do not prevent click if it came from an "Enter" or "Go" keypress submit
- return;
+ return null;
}
// do not allow through any click events that were not created by ionic.tap
@@ -347,7 +347,7 @@ function tapClickGateKeeper(e) {
// MOUSE
function tapMouseDown(e) {
//console.log('mousedown ' + Date.now());
- if (e.isIonicTap || tapIgnoreEvent(e)) return;
+ if (e.isIonicTap || tapIgnoreEvent(e)) return null;
if (tapEnabledTouchEvents) {
console.log('mousedown', 'stop event');
@@ -452,7 +452,7 @@ function tapTouchMove(e) {
}
}
-function tapTouchCancel(e) {
+function tapTouchCancel() {
tapEventListener(tapTouchMoveListener, false);
ionic.activator.end();
tapPointerMoved = false;
@@ -542,7 +542,7 @@ function tapFocusIn(e) {
ionic.scroll.isScrolling = false;
}
-function tapFocusOut(e) {
+function tapFocusOut() {
//console.log("focusout");
tapActiveElement(null);
}
diff --git a/js/utils/utils.js b/js/utils/utils.js
index 2058b96971f..24681671263 100644
--- a/js/utils/utils.js
+++ b/js/utils/utils.js
@@ -1,7 +1,6 @@
(function(ionic) {
-
- /* for nextUid() function below */
- var uid = ['0','0','0'];
+ /* for nextUid function below */
+ var nextId = 0;
/**
* Various utilities used throughout Ionic
@@ -10,14 +9,14 @@
*/
ionic.Utils = {
- arrayMove: function(arr, old_index, new_index) {
- if (new_index >= arr.length) {
- var k = new_index - arr.length;
+ arrayMove: function(arr, oldIndex, newIndex) {
+ if (newIndex >= arr.length) {
+ var k = newIndex - arr.length;
while ((k--) + 1) {
arr.push(undefined);
}
}
- arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
+ arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);
return arr;
},
@@ -144,34 +143,8 @@
return obj;
},
- /**
- * A consistent way of creating unique IDs in angular. The ID is a sequence of alpha numeric
- * characters such as '012ABC'. The reason why we are not using simply a number counter is that
- * the number string gets longer over time, and it can also overflow, where as the nextId
- * will grow much slower, it is a string, and it will never overflow.
- *
- * @returns an unique alpha-numeric string
- */
nextUid: function() {
- var index = uid.length;
- var digit;
-
- while (index) {
- index--;
- digit = uid[index].charCodeAt(0);
- if (digit == 57 /*'9'*/) {
- uid[index] = 'A';
- return uid.join('');
- }
- if (digit == 90 /*'Z'*/) {
- uid[index] = '0';
- } else {
- uid[index] = String.fromCharCode(digit + 1);
- return uid.join('');
- }
- }
- uid.unshift('0');
- return uid.join('');
+ return 'ion' + (nextId++);
},
disconnectScope: function disconnectScope(scope) {
diff --git a/js/views/listView.js b/js/views/listView.js
index 6103f1390f1..442daddb12b 100644
--- a/js/views/listView.js
+++ b/js/views/listView.js
@@ -11,13 +11,10 @@
var DragOp = function() {};
DragOp.prototype = {
- start: function(e) {
- },
- drag: function(e) {
- },
- end: function(e) {
- },
- isSameItem: function(item) {
+ start: function(){},
+ drag: function(){},
+ end: function(){},
+ isSameItem: function() {
return false;
}
};
@@ -233,7 +230,6 @@
};
ReorderDrag.prototype.start = function(e) {
- var content;
var startIndex = ionic.DomUtil.getChildIndex(this.el, this.el.nodeName.toLowerCase());
var elementHeight = this.el.scrollHeight;
@@ -313,7 +309,6 @@
ReorderDrag.prototype._getReorderIndex = function() {
var self = this;
- var placeholder = self._currentDrag.placeholder;
var siblings = Array.prototype.slice.call(self._currentDrag.placeholder.parentNode.children)
.filter(function(el) {
return el.nodeName === self.el.nodeName && el !== self.el;
@@ -376,7 +371,7 @@
var self = this;
opts = ionic.extend({
- onReorder: function(el, oldIndex, newIndex) {},
+ onReorder: function() {},
virtualRemoveThreshold: -200,
virtualAddThreshold: 200,
canSwipe: function() {
@@ -396,8 +391,8 @@
var gestureOpts = {};
// don't prevent native scrolling
- if (ionic.DomUtil.getParentOrSelfWithClass(self.el,'overflow-scroll')) {
- gestureOpts.prevent_default_directions = ['left','right'];
+ if (ionic.DomUtil.getParentOrSelfWithClass(self.el, 'overflow-scroll')) {
+ gestureOpts.prevent_default_directions = ['left', 'right'];
}
window.ionic.onGesture('release', function(e) {
@@ -442,18 +437,12 @@
if (self.isVirtual) {
var itemHeight = self.itemHeight;
- // TODO: This would be inaccurate if we are windowed
- var totalItems = self.listEl.children.length;
-
// Grab the total height of the list
var scrollHeight = e.target.scrollHeight;
// Get the viewport height
var viewportHeight = self.el.parentNode.offsetHeight;
- // scrollTop is the current scroll position
- var scrollTop = e.scrollTop;
-
// High water is the pixel position of the first element to include (everything before
// that will be removed)
var highWater = Math.max(0, e.scrollTop + self.virtualRemoveThreshold);
@@ -462,9 +451,6 @@
// that will be removed)
var lowWater = Math.min(scrollHeight, Math.abs(e.scrollTop) + viewportHeight + self.virtualAddThreshold);
- // Compute how many items per viewport size can show
- var itemsPerViewport = Math.floor((lowWater - highWater) / itemHeight);
-
// Get the first and last elements in the list based on how many can fit
// between the pixel range of lowWater and highWater
var first = parseInt(Math.abs(highWater / itemHeight), 10);
@@ -473,17 +459,13 @@
// Get the items we need to remove
self._virtualItemsToRemove = Array.prototype.slice.call(self.listEl.children, 0, first);
- // Grab the nodes we will be showing
- var nodes = Array.prototype.slice.call(self.listEl.children, first, first + itemsPerViewport);
-
self.renderViewport && self.renderViewport(highWater, lowWater, first, last);
}
},
- didStopScrolling: function(e) {
+ didStopScrolling: function() {
if (this.isVirtual) {
for (var i = 0; i < this._virtualItemsToRemove.length; i++) {
- var el = this._virtualItemsToRemove[i];
//el.parentNode.removeChild(el);
this.didHideItem && this.didHideItem(i);
}
@@ -528,8 +510,6 @@
_startDrag: function(e) {
var self = this;
- var didStart = false;
-
self._isDragging = false;
var lastDragOp = self._lastDragOp;
@@ -605,7 +585,7 @@
* Process the drag event to move the item to the left or right.
*/
_handleDrag: function(e) {
- var self = this, content, buttons;
+ var self = this;
if (Math.abs(e.gesture.deltaY) > 5) {
self._didDragUpOrDown = true;
diff --git a/js/views/scrollView.js b/js/views/scrollView.js
index 2879a8e2bb4..a1d5333e498 100644
--- a/js/views/scrollView.js
+++ b/js/views/scrollView.js
@@ -65,7 +65,7 @@ var zyngaCore = { effect: {} };
var intervalHandle = null;
var lastActive = +new Date();
- return function(callback, root) {
+ return function(callback) {
var callbackHandle = rafHandle++;
// Store callback
@@ -246,8 +246,6 @@ var zyngaCore = { effect: {} };
* License: MIT + Apache (V2)
*/
-var Scroller;
-
(function(ionic) {
var NOOP = function(){};
@@ -369,10 +367,10 @@ ionic.views.Scroll = ionic.views.View.inherit({
scrollingComplete: NOOP,
/** This configures the amount of change applied to deceleration when reaching boundaries **/
- penetrationDeceleration : 0.03,
+ penetrationDeceleration: 0.03,
/** This configures the amount of change applied to acceleration when reaching boundaries **/
- penetrationAcceleration : 0.08,
+ penetrationAcceleration: 0.08,
// The ms interval for triggering scroll events
scrollEventInterval: 10,
@@ -750,7 +748,7 @@ ionic.views.Scroll = ionic.views.View.inherit({
e.stopPropagation();
};
- self.resetScrollView = function(e) {
+ self.resetScrollView = function() {
//return scrollview to original height once keyboard has hidden
if ( self.isShrunkForKeyboard ) {
self.isShrunkForKeyboard = false;
@@ -1096,7 +1094,8 @@ ionic.views.Scroll = ionic.views.View.inherit({
* Move and scale the scrollbars as the page scrolls.
*/
__repositionScrollbars: function() {
- var self = this, width, heightScale,
+ var self = this,
+ heightScale, widthScale,
widthDiff, heightDiff,
x, y,
xstop = 0, ystop = 0;
@@ -1107,7 +1106,7 @@ ionic.views.Scroll = ionic.views.View.inherit({
// Don't go all the way to the right if we have a vertical scrollbar as well
if (self.__indicatorY) xstop = 10;
- x = Math.round(self.__indicatorX.sizeRatio * self.__scrollLeft) || 0,
+ x = Math.round(self.__indicatorX.sizeRatio * self.__scrollLeft) || 0;
// The the difference between the last content X position, and our overscrolled one
widthDiff = self.__scrollLeft - (self.__maxScrollLeft - xstop);
@@ -1310,8 +1309,8 @@ ionic.views.Scroll = ionic.views.View.inherit({
} else {
return function(left, top, zoom, wasResize) {
- content.style.marginLeft = left ? (-left/zoom) + 'px' : '';
- content.style.marginTop = top ? (-top/zoom) + 'px' : '';
+ content.style.marginLeft = left ? (-left / zoom) + 'px' : '';
+ content.style.marginTop = top ? (-top / zoom) + 'px' : '';
content.style.zoom = zoom || '';
self.__repositionScrollbars();
if (!wasResize) {
@@ -1412,12 +1411,12 @@ ionic.views.Scroll = ionic.views.View.inherit({
var self = this;
self.__refreshHeight = height;
- self.__refreshActivate = function() {ionic.requestAnimationFrame(refresherMethods.activate);};
- self.__refreshDeactivate = function() {ionic.requestAnimationFrame(refresherMethods.deactivate);};
- self.__refreshStart = function() {ionic.requestAnimationFrame(refresherMethods.start);};
- self.__refreshShow = function() {ionic.requestAnimationFrame(refresherMethods.show);};
- self.__refreshHide = function() {ionic.requestAnimationFrame(refresherMethods.hide);};
- self.__refreshTail = function() {ionic.requestAnimationFrame(refresherMethods.tail);};
+ self.__refreshActivate = function() { ionic.requestAnimationFrame(refresherMethods.activate); };
+ self.__refreshDeactivate = function() { ionic.requestAnimationFrame(refresherMethods.deactivate); };
+ self.__refreshStart = function() { ionic.requestAnimationFrame(refresherMethods.start); };
+ self.__refreshShow = function() { ionic.requestAnimationFrame(refresherMethods.show); };
+ self.__refreshHide = function() { ionic.requestAnimationFrame(refresherMethods.hide); };
+ self.__refreshTail = function() { ionic.requestAnimationFrame(refresherMethods.tail); };
self.__refreshTailTime = 100;
self.__minSpinTime = 600;
},
@@ -1465,8 +1464,8 @@ ionic.views.Scroll = ionic.views.View.inherit({
}
self.scrollTo(self.__scrollLeft, self.__scrollTop, true);
- },self.__refreshTailTime);
- },delay);
+ }, self.__refreshTailTime);
+ }, delay);
},
@@ -1861,7 +1860,7 @@ ionic.views.Scroll = ionic.views.View.inherit({
// Slow down on the edges
if (self.options.bouncing) {
- scrollLeft += (moveX / 2 * self.options.speedMultiplier);
+ scrollLeft += (moveX / 2 * self.options.speedMultiplier);
} else if (scrollLeft > maxScrollLeft) {
@@ -2244,7 +2243,7 @@ ionic.views.Scroll = ionic.views.View.inherit({
* Called when a touch sequence end and the speed of the finger was high enough
* to switch into deceleration mode.
*/
- __startDeceleration: function(timeStamp) {
+ __startDeceleration: function() {
var self = this;
if (self.options.paging) {
@@ -2299,7 +2298,7 @@ ionic.views.Scroll = ionic.views.View.inherit({
return shouldContinue;
};
- var completed = function(renderedFramesPerSecond, animationId, wasFinished) {
+ var completed = function() {
self.__isDecelerating = false;
if (self.__didDecelerationComplete) {
self.__scrollingComplete();
@@ -2453,7 +2452,7 @@ ionic.views.Scroll = ionic.views.View.inherit({
__getDistance: function getDistance(touch1, touch2) {
var x = touch2.pageX - touch1.pageX,
y = touch2.pageY - touch1.pageY;
- return Math.sqrt((x*x) + (y*y));
+ return Math.sqrt((x * x) + (y * y));
},
diff --git a/js/views/scrollViewNative.js b/js/views/scrollViewNative.js
index 3503d4d4bd5..6567854aea8 100644
--- a/js/views/scrollViewNative.js
+++ b/js/views/scrollViewNative.js
@@ -13,10 +13,10 @@
self.__scrollTop = self.el.scrollTop;
self.__scrollLeft = self.el.scrollLeft;
- self.__clientHeight = self.__content.clientHeight,
- self.__clientWidth = self.__content.clientWidth,
- self.__maxScrollTop = Math.max((self.__contentHeight) - self.__clientHeight, 0),
- self.__maxScrollLeft = Math.max((self.__contentWidth) - self.__clientWidth, 0),
+ self.__clientHeight = self.__content.clientHeight;
+ self.__clientWidth = self.__content.clientWidth;
+ self.__maxScrollTop = Math.max((self.__contentHeight) - self.__clientHeight, 0);
+ self.__maxScrollLeft = Math.max((self.__contentWidth) - self.__clientWidth, 0);
self.options = {
@@ -39,7 +39,7 @@
/**
* Sets isScrolling to true, and automatically deactivates if not called again in 80ms.
*/
- self.onScroll = function(event) {
+ self.onScroll = function() {
if (!ionic.scroll.isScrolling) {
ionic.scroll.isScrolling = true;
}
@@ -56,10 +56,10 @@
},
/** Methods not used in native scrolling */
- __callback: function() {depreciated('__callback');},
- zoomTo: function() {depreciated('zoomTo');},
- zoomBy: function() {depreciated('zoomBy');},
- activatePullToRefresh: function() {depreciated('activatePullToRefresh');},
+ __callback: function() { depreciated('__callback'); },
+ zoomTo: function() { depreciated('zoomTo'); },
+ zoomBy: function() { depreciated('zoomBy'); },
+ activatePullToRefresh: function() { depreciated('activatePullToRefresh'); },
/**
* Returns the scroll position and zooming values
@@ -297,7 +297,7 @@
// should be unnecessary in native scrolling, but keep in case bugs show up
self.scrollChildIntoView = NOOP;
- self.resetScrollView = function(e) {
+ self.resetScrollView = function() {
//return scrollview to original height once keyboard has hidden
if (self.isScrolledIntoView) {
self.isScrolledIntoView = false;
diff --git a/js/views/sideMenuView.js b/js/views/sideMenuView.js
index 3e772b343c8..0bb600d226c 100644
--- a/js/views/sideMenuView.js
+++ b/js/views/sideMenuView.js
@@ -38,8 +38,8 @@
initialize: function(opts) {
ionic.extend(this, {
animationClass: 'menu-animated',
- onDrag: function(e) {},
- onEndDrag: function(e) {}
+ onDrag: function() {},
+ onEndDrag: function() {}
}, opts);
ionic.onGesture('drag', ionic.proxy(this._onDrag, this), this.el);
diff --git a/js/views/sliderView.js b/js/views/sliderView.js
index c239e345f6e..d9300816086 100644
--- a/js/views/sliderView.js
+++ b/js/views/sliderView.js
@@ -87,8 +87,8 @@ ionic.views.Slider = ionic.views.View.inherit({
// reposition elements before and after index
if (options.continuous && browser.transitions) {
- move(circle(index-1), -width, 0);
- move(circle(index+1), width, 0);
+ move(circle(index - 1), -width, 0);
+ move(circle(index + 1), width, 0);
}
if (!browser.transitions) element.style.left = (index * -width) + 'px';
@@ -100,15 +100,15 @@ ionic.views.Slider = ionic.views.View.inherit({
function prev(slideSpeed) {
- if (options.continuous) slide(index-1, slideSpeed);
- else if (index) slide(index-1, slideSpeed);
+ if (options.continuous) slide(index - 1, slideSpeed);
+ else if (index) slide(index - 1, slideSpeed);
}
function next(slideSpeed) {
- if (options.continuous) slide(index+1, slideSpeed);
- else if (index < slides.length - 1) slide(index+1, slideSpeed);
+ if (options.continuous) slide(index + 1, slideSpeed);
+ else if (index < slides.length - 1) slide(index + 1, slideSpeed);
}
@@ -126,20 +126,20 @@ ionic.views.Slider = ionic.views.View.inherit({
if (browser.transitions) {
- var direction = Math.abs(index-to) / (index-to); // 1: backward, -1: forward
+ var direction = Math.abs(index - to) / (index - to); // 1: backward, -1: forward
// get the actual position of the slide
if (options.continuous) {
- var natural_direction = direction;
+ var naturalDirection = direction;
direction = -slidePos[circle(to)] / width;
// if going forward but to < index, use to = slides.length + to
// if going backward but to > index, use to = -slides.length + to
- if (direction !== natural_direction) to = -direction * slides.length + to;
+ if (direction !== naturalDirection) to = -direction * slides.length + to;
}
- var diff = Math.abs(index-to) - 1;
+ var diff = Math.abs(index - to) - 1;
// move all the slides between index and to in the right direction
while (diff--) move( circle((to > index ? to : index) - diff - 1), width * direction, 0);
@@ -345,9 +345,9 @@ ionic.views.Slider = ionic.views.View.inherit({
// increase resistance if first or last slide
if (options.continuous) { // we don't add resistance at the end
- translate(circle(index-1), delta.x + slidePos[circle(index-1)], 0);
+ translate(circle(index - 1), delta.x + slidePos[circle(index - 1)], 0);
translate(index, delta.x + slidePos[index], 0);
- translate(circle(index+1), delta.x + slidePos[circle(index+1)], 0);
+ translate(circle(index + 1), delta.x + slidePos[circle(index + 1)], 0);
} else {
@@ -361,16 +361,16 @@ ionic.views.Slider = ionic.views.View.inherit({
: 1 ); // no resistance if false
// translate 1:1
- translate(index-1, delta.x + slidePos[index-1], 0);
+ translate(index - 1, delta.x + slidePos[index - 1], 0);
translate(index, delta.x + slidePos[index], 0);
- translate(index+1, delta.x + slidePos[index+1], 0);
+ translate(index + 1, delta.x + slidePos[index + 1], 0);
}
options.onDrag && options.onDrag();
}
},
- end: function(event) {
+ end: function() {
// measure duration
var duration = +new Date() - start.time;
@@ -379,7 +379,7 @@ ionic.views.Slider = ionic.views.View.inherit({
var isValidSlide =
Number(duration) < 250 && // if slide duration is less than 250ms
Math.abs(delta.x) > 20 || // and if slide amt is greater than 20px
- Math.abs(delta.x) > width/2; // or if slide amt is greater than half the width
+ Math.abs(delta.x) > width / 2; // or if slide amt is greater than half the width
// determine if slide attempt is past start and end
var isPastBounds = (!index && delta.x > 0) || // if first slide and slide amt is greater than 0
@@ -399,30 +399,30 @@ ionic.views.Slider = ionic.views.View.inherit({
if (options.continuous) { // we need to get the next in this direction in place
- move(circle(index-1), -width, 0);
- move(circle(index+2), width, 0);
+ move(circle(index - 1), -width, 0);
+ move(circle(index + 2), width, 0);
} else {
- move(index-1, -width, 0);
+ move(index - 1, -width, 0);
}
- move(index, slidePos[index]-width, speed);
- move(circle(index+1), slidePos[circle(index+1)]-width, speed);
- index = circle(index+1);
+ move(index, slidePos[index] - width, speed);
+ move(circle(index + 1), slidePos[circle(index + 1)] - width, speed);
+ index = circle(index + 1);
} else {
if (options.continuous) { // we need to get the next in this direction in place
- move(circle(index+1), width, 0);
- move(circle(index-2), -width, 0);
+ move(circle(index + 1), width, 0);
+ move(circle(index - 2), -width, 0);
} else {
- move(index+1, width, 0);
+ move(index + 1, width, 0);
}
- move(index, slidePos[index]+width, speed);
- move(circle(index-1), slidePos[circle(index-1)]+width, speed);
- index = circle(index-1);
+ move(index, slidePos[index] + width, speed);
+ move(circle(index - 1), slidePos[circle(index - 1)] + width, speed);
+ index = circle(index - 1);
}
@@ -432,15 +432,15 @@ ionic.views.Slider = ionic.views.View.inherit({
if (options.continuous) {
- move(circle(index-1), -width, speed);
+ move(circle(index - 1), -width, speed);
move(index, 0, speed);
- move(circle(index+1), width, speed);
+ move(circle(index + 1), width, speed);
} else {
- move(index-1, -width, speed);
+ move(index - 1, -width, speed);
move(index, 0, speed);
- move(index+1, width, speed);
+ move(index + 1, width, speed);
}
}
@@ -491,7 +491,8 @@ ionic.views.Slider = ionic.views.View.inherit({
this.slideIsDisabled = !shouldEnable;
}
return !this.slideIsDisabled;
- },
+ };
+
this.slide = this.select = function(to, speed) {
// cancel slideshow
stop();
diff --git a/js/views/toggleView.js b/js/views/toggleView.js
index 7f9dabb6b8e..99f5c96df63 100644
--- a/js/views/toggleView.js
+++ b/js/views/toggleView.js
@@ -40,7 +40,7 @@
ionic.offGesture(this.dragReleaseGesture, 'release', this.releaseHandler);
},
- tap: function(e) {
+ tap: function() {
if(this.el.getAttribute('disabled') !== 'disabled') {
this.val( !this.checkbox.checked );
}
@@ -71,13 +71,9 @@
// Stop any parent dragging
e.gesture.srcEvent.preventDefault();
- ionic.requestAnimationFrame(function(amount) {
+ ionic.requestAnimationFrame(function () {
if (!self._dragInfo) { return; }
- var slidePageLeft = self.track.offsetLeft + (self.handle.offsetWidth / 2);
- var slidePageRight = self.track.offsetLeft + self.track.offsetWidth - (self.handle.offsetWidth / 2);
- var dx = e.gesture.deltaX;
-
var px = e.gesture.touches[0].pageX - self._dragInfo.left;
var mx = self._dragInfo.width - self.triggerThreshold;
@@ -99,11 +95,11 @@
});
},
- endDrag: function(e) {
+ endDrag: function() {
this._dragInfo = null;
},
- hold: function(e) {
+ hold: function() {
this.el.classList.add('dragging');
},
release: function(e) {
diff --git a/package.json b/package.json
index 3e4dac188a4..29054ecbe45 100644
--- a/package.json
+++ b/package.json
@@ -18,11 +18,11 @@
"github": "^0.2.1",
"gulp": "^3.7.0",
"gulp-concat": "^2.1.7",
+ "gulp-eslint": "^0.9.0",
"gulp-footer": "^1.0.4",
"gulp-header": "^1.0.2",
"gulp-if": "0.0.5",
"gulp-jscs": "^1.3.0",
- "gulp-jshint": "^1.5.0",
"gulp-minify-css": "^0.3.0",
"gulp-rename": "^1.1.0",
"gulp-sass": "^0.7.1",
diff --git a/test/unit/angular/controller/sideMenuController.unit.js b/test/unit/angular/controller/sideMenuController.unit.js
index a19e5f4ebff..fbdf7103e87 100644
--- a/test/unit/angular/controller/sideMenuController.unit.js
+++ b/test/unit/angular/controller/sideMenuController.unit.js
@@ -302,7 +302,7 @@ describe('$ionicSideMenus controller', function() {
expect(ctrl.getOpenPercentage()).toEqual(-100);
});
- it('should register with backButton on open and dereg on close', inject(function($ionicPlatform) {
+ it('should register with backButton on open and dereg on close', inject(function($ionicPlatform, IONIC_BACK_PRIORITY) {
var openAmount = 0;
var deregSpy = jasmine.createSpy('deregister');
spyOn($ionicPlatform, 'registerBackButtonAction').andReturn(deregSpy);
@@ -314,7 +314,7 @@ describe('$ionicSideMenus controller', function() {
ctrl.$scope.$apply();
expect($ionicPlatform.registerBackButtonAction).toHaveBeenCalledWith(
jasmine.any(Function),
- PLATFORM_BACK_BUTTON_PRIORITY_SIDE_MENU
+ IONIC_BACK_PRIORITY.sideMenu
);
expect(deregSpy).not.toHaveBeenCalled();
openAmount = 0;
diff --git a/test/unit/angular/service/loading.unit.js b/test/unit/angular/service/loading.unit.js
index e3dee335fc1..503740e97f8 100644
--- a/test/unit/angular/service/loading.unit.js
+++ b/test/unit/angular/service/loading.unit.js
@@ -159,13 +159,13 @@ describe('$ionicLoading service', function() {
}));
describe("back button", function() {
- it('.show() should register back button action', inject(function($ionicLoading, $ionicPlatform, $timeout) {
+ it('.show() should register back button action', inject(function($ionicLoading, $ionicPlatform, $timeout, IONIC_BACK_PRIORITY) {
spyOn($ionicPlatform, 'registerBackButtonAction');
$ionicLoading.show();
$timeout.flush();
expect($ionicPlatform.registerBackButtonAction).toHaveBeenCalledWith(
angular.noop,
- PLATFORM_BACK_BUTTON_PRIORITY_LOADING
+ IONIC_BACK_PRIORITY.loading
);
}));
it('.hide() should deregister back button action', inject(function($ionicLoading, $ionicPlatform, $timeout) {
diff --git a/test/unit/angular/service/modal.unit.js b/test/unit/angular/service/modal.unit.js
index dc722c9805a..c1bfd4ad968 100644
--- a/test/unit/angular/service/modal.unit.js
+++ b/test/unit/angular/service/modal.unit.js
@@ -109,7 +109,7 @@ describe('Ionic Modal', function() {
expect(instance.isShown()).toBe(false);
}));
- it('should not close on hardware back button if option', inject(function($ionicPlatform) {
+ it('should not close on hardware back button if option', inject(function($ionicPlatform, IONIC_BACK_PRIORITY) {
var template = '';
var instance = modal.fromTemplate(template, {
hardwareBackButtonClose: false
@@ -117,7 +117,10 @@ describe('Ionic Modal', function() {
spyOn($ionicPlatform, 'registerBackButtonAction').andCallThrough();
instance.show();
timeout.flush();
- expect($ionicPlatform.registerBackButtonAction).toHaveBeenCalledWith(jasmine.any(Function), PLATFORM_BACK_BUTTON_PRIORITY_MODAL);
+ expect($ionicPlatform.registerBackButtonAction).toHaveBeenCalledWith(
+ jasmine.any(Function),
+ IONIC_BACK_PRIORITY.modal
+ );
ionicPlatform.hardwareBackButtonClick();
diff --git a/test/unit/angular/service/popover.unit.js b/test/unit/angular/service/popover.unit.js
index 65c9f3d9156..1bb7b2bce3a 100644
--- a/test/unit/angular/service/popover.unit.js
+++ b/test/unit/angular/service/popover.unit.js
@@ -128,7 +128,7 @@ describe('Ionic Popover', function() {
expect(instance.isShown()).toBe(false);
}));
- it('should not close on hardware back button if option', inject(function($ionicPlatform) {
+ it('should not close on hardware back button if option', inject(function($ionicPlatform, IONIC_BACK_PRIORITY) {
var template = '';
var instance = popover.fromTemplate(template, {
hardwareBackButtonClose: false
@@ -136,7 +136,10 @@ describe('Ionic Popover', function() {
spyOn($ionicPlatform, 'registerBackButtonAction').andCallThrough();
instance.show();
timeout.flush();
- expect($ionicPlatform.registerBackButtonAction).toHaveBeenCalledWith(jasmine.any(Function), PLATFORM_BACK_BUTTON_PRIORITY_MODAL);
+ expect($ionicPlatform.registerBackButtonAction).toHaveBeenCalledWith(
+ jasmine.any(Function),
+ IONIC_BACK_PRIORITY.modal
+ );
ionicPlatform.hardwareBackButtonClick();
diff --git a/test/unit/angular/service/popup.unit.js b/test/unit/angular/service/popup.unit.js
index fcf33be056a..89cf178c4ce 100644
--- a/test/unit/angular/service/popup.unit.js
+++ b/test/unit/angular/service/popup.unit.js
@@ -174,7 +174,7 @@ describe('$ionicPopup service', function() {
document.body.classList.remove('popup-open');
});
- it('should add popup-open and retain backdrop and register back button action if no previous popup', inject(function($ionicBackdrop, $timeout, $ionicPlatform) {
+ it('should add popup-open and retain backdrop and register back button action if no previous popup', inject(function($ionicBackdrop, $timeout, $ionicPlatform, IONIC_BACK_PRIORITY) {
spyOn($ionicPlatform, 'registerBackButtonAction').andReturn('actionReturn');
spyOn($ionicBackdrop, 'retain');
$ionicPopup.show();
@@ -183,7 +183,7 @@ describe('$ionicPopup service', function() {
expect($ionicBackdrop.retain).toHaveBeenCalled();
expect($ionicPlatform.registerBackButtonAction).toHaveBeenCalledWith(
jasmine.any(Function),
- PLATFORM_BACK_BUTTON_PRIORITY_POPUP
+ IONIC_BACK_PRIORITY.popup
);
expect($ionicPopup._backButtonActionDone).toBe('actionReturn');
}));