mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-22 05:21:52 +08:00
chore(types): add types to slide gestures
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
import {Menu} from './menu';
|
import {Menu} from './menu';
|
||||||
import {SlideEdgeGesture} from '../../gestures/slide-edge-gesture';
|
import {SlideEdgeGesture} from '../../gestures/slide-edge-gesture';
|
||||||
|
import {SlideData} from '../../gestures/slide-gesture';
|
||||||
import {assign} from '../../util/util';
|
import {assign} from '../../util/util';
|
||||||
|
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ export class MenuContentGesture extends SlideEdgeGesture {
|
|||||||
}, options));
|
}, options));
|
||||||
}
|
}
|
||||||
|
|
||||||
canStart(ev) {
|
canStart(ev: any) {
|
||||||
let menu = this.menu;
|
let menu = this.menu;
|
||||||
|
|
||||||
if (!menu.enabled || !menu.swipeEnabled) {
|
if (!menu.enabled || !menu.swipeEnabled) {
|
||||||
@ -68,12 +68,12 @@ export class MenuContentGesture extends SlideEdgeGesture {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set CSS, then wait one frame for it to apply before sliding starts
|
// Set CSS, then wait one frame for it to apply before sliding starts
|
||||||
onSlideBeforeStart(slide, ev) {
|
onSlideBeforeStart(slide: SlideData, ev: any) {
|
||||||
console.debug('menu gesture, onSlideBeforeStart', this.menu.side);
|
console.debug('menu gesture, onSlideBeforeStart', this.menu.side);
|
||||||
this.menu.swipeStart();
|
this.menu.swipeStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
onSlide(slide, ev) {
|
onSlide(slide: SlideData, ev: any) {
|
||||||
let z = (this.menu.side === 'right' ? slide.min : slide.max);
|
let z = (this.menu.side === 'right' ? slide.min : slide.max);
|
||||||
let stepValue = (slide.distance / z);
|
let stepValue = (slide.distance / z);
|
||||||
console.debug('menu gesture, onSlide', this.menu.side, 'distance', slide.distance, 'min', slide.min, 'max', slide.max, 'z', z, 'stepValue', stepValue);
|
console.debug('menu gesture, onSlide', this.menu.side, 'distance', slide.distance, 'min', slide.min, 'max', slide.max, 'z', z, 'stepValue', stepValue);
|
||||||
@ -81,7 +81,7 @@ export class MenuContentGesture extends SlideEdgeGesture {
|
|||||||
this.menu.swipeProgress(stepValue);
|
this.menu.swipeProgress(stepValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
onSlideEnd(slide, ev) {
|
onSlideEnd(slide: SlideData, ev: any) {
|
||||||
let z = (this.menu.side === 'right' ? slide.min : slide.max);
|
let z = (this.menu.side === 'right' ? slide.min : slide.max);
|
||||||
|
|
||||||
let shouldComplete = (Math.abs(ev.velocityX) > 0.2) ||
|
let shouldComplete = (Math.abs(ev.velocityX) > 0.2) ||
|
||||||
@ -94,7 +94,7 @@ export class MenuContentGesture extends SlideEdgeGesture {
|
|||||||
this.menu.swipeEnd(shouldComplete, currentStepValue);
|
this.menu.swipeEnd(shouldComplete, currentStepValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
getElementStartPos(slide, ev) {
|
getElementStartPos(slide: SlideData, ev: any) {
|
||||||
if (this.menu.side === 'right') {
|
if (this.menu.side === 'right') {
|
||||||
// right menu
|
// right menu
|
||||||
return this.menu.isOpen ? slide.min : slide.max;
|
return this.menu.isOpen ? slide.min : slide.max;
|
||||||
|
@ -3,7 +3,7 @@ import {clamp} from '../util';
|
|||||||
|
|
||||||
|
|
||||||
export class SlideGesture extends DragGesture {
|
export class SlideGesture extends DragGesture {
|
||||||
public slide: any = null;
|
public slide: SlideData = null;
|
||||||
|
|
||||||
constructor(element, opts = {}) {
|
constructor(element, opts = {}) {
|
||||||
super(element, opts);
|
super(element, opts);
|
||||||
@ -14,7 +14,7 @@ export class SlideGesture extends DragGesture {
|
|||||||
* Get the min and max for the slide. pageX/pageY.
|
* Get the min and max for the slide. pageX/pageY.
|
||||||
* Only called on dragstart.
|
* Only called on dragstart.
|
||||||
*/
|
*/
|
||||||
getSlideBoundaries(slide, ev) {
|
getSlideBoundaries(slide: SlideData, ev: any) {
|
||||||
return {
|
return {
|
||||||
min: 0,
|
min: 0,
|
||||||
max: this.element.offsetWidth
|
max: this.element.offsetWidth
|
||||||
@ -26,7 +26,7 @@ export class SlideGesture extends DragGesture {
|
|||||||
* For example, an open side menu starts at 100% and a closed
|
* For example, an open side menu starts at 100% and a closed
|
||||||
* sidemenu starts at 0%.
|
* sidemenu starts at 0%.
|
||||||
*/
|
*/
|
||||||
getElementStartPos(slide, ev) {
|
getElementStartPos(slide: SlideData, ev: any) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ export class SlideGesture extends DragGesture {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
onDragStart(ev): boolean {
|
onDragStart(ev: any): boolean {
|
||||||
if (!this.canStart(ev)) {
|
if (!this.canStart(ev)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -70,14 +70,25 @@ export class SlideGesture extends DragGesture {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
onDragEnd(ev) {
|
onDragEnd(ev: any) {
|
||||||
if (!this.slide || !this.slide.started) return;
|
if (!this.slide || !this.slide.started) return;
|
||||||
this.onSlideEnd(this.slide, ev);
|
this.onSlideEnd(this.slide, ev);
|
||||||
this.slide = null;
|
this.slide = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
onSlideBeforeStart(slide?: any, ev?: any): void {}
|
onSlideBeforeStart(slide?: SlideData, ev?: any): void {}
|
||||||
onSlideStart(slide?: any, ev?: any): void {}
|
onSlideStart(slide?: SlideData, ev?: any): void {}
|
||||||
onSlide(slide?: any, ev?: any): void {}
|
onSlide(slide?: SlideData, ev?: any): void {}
|
||||||
onSlideEnd(slide?: any, ev?: any): void {}
|
onSlideEnd(slide?: SlideData, ev?: any): void {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SlideData {
|
||||||
|
min?: number;
|
||||||
|
max?: number;
|
||||||
|
distance?: number;
|
||||||
|
delta?: number;
|
||||||
|
started?: boolean;
|
||||||
|
pos?: any;
|
||||||
|
pointerStartPos?: number;
|
||||||
|
elementStartPos?: number;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user