Skip to content

Commit e003bf1

Browse files
committed
feat($ionicSlideBoxDelegate): add enableSlide(true/false) method
Closes #1122
1 parent 793b9f4 commit e003bf1

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

js/angular/service/slideBoxDelegate.js

+7
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ IonicModule
5252
* @param {number=} speed The number of milliseconds for the change to take.
5353
*/
5454
'slide',
55+
/**
56+
* @ngdoc method
57+
* @name $ionicSlideBoxDelegate#enableSlide
58+
* @param {boolean=} shouldEnable Whether to enable sliding the slidebox.
59+
* @returns {boolean} Whether sliding is enabled.
60+
*/
61+
'enableSlide',
5562
/**
5663
* @ngdoc method
5764
* @name $ionicSlideBoxDelegate#previous

js/views/sliderView.js

+17-4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
ionic.views.Slider = ionic.views.View.inherit({
1313
initialize: function (options) {
14+
var slider = this;
15+
1416
// utilities
1517
var noop = function() {}; // simple no operation function
1618
var offloadFn = function(fn) { setTimeout(fn || noop, 0) }; // offload a functions execution
@@ -254,8 +256,8 @@ ionic.views.Slider = ionic.views.View.inherit({
254256
switch (event.type) {
255257
case 'mousedown': this.start(event); break;
256258
case 'touchstart': this.start(event); break;
257-
case 'touchmove': this.move(event); break;
258-
case 'mousemove': this.move(event); break;
259+
case 'touchmove': this.touchmove(event); break;
260+
case 'mousemove': this.touchmove(event); break;
259261
case 'touchend': offloadFn(this.end(event)); break;
260262
case 'mouseup': offloadFn(this.end(event)); break;
261263
case 'webkitTransitionEnd':
@@ -301,10 +303,15 @@ ionic.views.Slider = ionic.views.View.inherit({
301303
document.addEventListener('mouseup', this, false);
302304
}
303305
},
304-
move: function(event) {
306+
touchmove: function(event) {
305307

306308
// ensure swiping with one touch and not pinching
307-
if ( event.touches.length > 1 || event.scale && event.scale !== 1) return
309+
// ensure sliding is enabled
310+
if (event.touches.length > 1 ||
311+
event.scale && event.scale !== 1 ||
312+
slider.slideIsDisabled) {
313+
return;
314+
}
308315

309316
if (options.disableScroll) event.preventDefault();
310317

@@ -468,6 +475,12 @@ ionic.views.Slider = ionic.views.View.inherit({
468475
setup();
469476
};
470477

478+
this.enableSlide = function(shouldEnable) {
479+
if (arguments.length) {
480+
this.slideIsDisabled = !shouldEnable;
481+
}
482+
return !this.slideIsDisabled;
483+
},
471484
this.slide = function(to, speed) {
472485
// cancel slideshow
473486
stop();

0 commit comments

Comments
 (0)