mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-18 19:21:34 +08:00
refactor(gesture): update Gesture API to latest (#19671)
This commit is contained in:
@ -36,14 +36,14 @@ export class Content implements ComponentInterface {
|
|||||||
event: undefined!,
|
event: undefined!,
|
||||||
startX: 0,
|
startX: 0,
|
||||||
startY: 0,
|
startY: 0,
|
||||||
startTimeStamp: 0,
|
startTime: 0,
|
||||||
currentX: 0,
|
currentX: 0,
|
||||||
currentY: 0,
|
currentY: 0,
|
||||||
velocityX: 0,
|
velocityX: 0,
|
||||||
velocityY: 0,
|
velocityY: 0,
|
||||||
deltaX: 0,
|
deltaX: 0,
|
||||||
deltaY: 0,
|
deltaY: 0,
|
||||||
timeStamp: 0,
|
currentTime: 0,
|
||||||
data: undefined,
|
data: undefined,
|
||||||
isScrolling: true,
|
isScrolling: true,
|
||||||
};
|
};
|
||||||
@ -379,19 +379,19 @@ const updateScrollDetail = (
|
|||||||
) => {
|
) => {
|
||||||
const prevX = detail.currentX;
|
const prevX = detail.currentX;
|
||||||
const prevY = detail.currentY;
|
const prevY = detail.currentY;
|
||||||
const prevT = detail.timeStamp;
|
const prevT = detail.currentTime;
|
||||||
const currentX = el.scrollLeft;
|
const currentX = el.scrollLeft;
|
||||||
const currentY = el.scrollTop;
|
const currentY = el.scrollTop;
|
||||||
const timeDelta = timestamp - prevT;
|
const timeDelta = timestamp - prevT;
|
||||||
|
|
||||||
if (shouldStart) {
|
if (shouldStart) {
|
||||||
// remember the start positions
|
// remember the start positions
|
||||||
detail.startTimeStamp = timestamp;
|
detail.startTime = timestamp;
|
||||||
detail.startX = currentX;
|
detail.startX = currentX;
|
||||||
detail.startY = currentY;
|
detail.startY = currentY;
|
||||||
detail.velocityX = detail.velocityY = 0;
|
detail.velocityX = detail.velocityY = 0;
|
||||||
}
|
}
|
||||||
detail.timeStamp = timestamp;
|
detail.currentTime = timestamp;
|
||||||
detail.currentX = detail.scrollLeft = currentX;
|
detail.currentX = detail.scrollLeft = currentX;
|
||||||
detail.currentY = detail.scrollTop = currentY;
|
detail.currentY = detail.scrollTop = currentY;
|
||||||
detail.deltaX = currentX - detail.startX;
|
detail.deltaX = currentX - detail.startX;
|
||||||
|
@ -55,7 +55,7 @@ export class ItemSliding implements ComponentInterface {
|
|||||||
@Watch('disabled')
|
@Watch('disabled')
|
||||||
disabledChanged() {
|
disabledChanged() {
|
||||||
if (this.gesture) {
|
if (this.gesture) {
|
||||||
this.gesture.setDisabled(this.disabled);
|
this.gesture.enable(!this.disabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ AFTER:
|
|||||||
|
|
||||||
@Listen('click', { capture: true })
|
@Listen('click', { capture: true })
|
||||||
onBackdropClick(ev: any) {
|
onBackdropClick(ev: any) {
|
||||||
if (this._isOpen && this.lastOnEnd < ev.timeStamp - 100) {
|
if (this._isOpen && this.lastOnEnd < ev.currentTime - 100) {
|
||||||
const shouldClose = (ev.composedPath)
|
const shouldClose = (ev.composedPath)
|
||||||
? !ev.composedPath().includes(this.menuInnerEl)
|
? !ev.composedPath().includes(this.menuInnerEl)
|
||||||
: false;
|
: false;
|
||||||
@ -428,7 +428,7 @@ AFTER:
|
|||||||
shouldOpen = true;
|
shouldOpen = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.lastOnEnd = detail.timeStamp;
|
this.lastOnEnd = detail.currentTime;
|
||||||
|
|
||||||
// Account for rounding errors in JS
|
// Account for rounding errors in JS
|
||||||
let newStepValue = (shouldComplete) ? 0.001 : -0.001;
|
let newStepValue = (shouldComplete) ? 0.001 : -0.001;
|
||||||
@ -520,7 +520,7 @@ AFTER:
|
|||||||
private updateState() {
|
private updateState() {
|
||||||
const isActive = this._isActive();
|
const isActive = this._isActive();
|
||||||
if (this.gesture) {
|
if (this.gesture) {
|
||||||
this.gesture.setDisabled(!isActive || !this.swipeGesture);
|
this.gesture.enable(isActive && this.swipeGesture);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close menu immediately
|
// Close menu immediately
|
||||||
|
@ -38,7 +38,7 @@ export class Nav implements NavOutlet {
|
|||||||
@Watch('swipeGesture')
|
@Watch('swipeGesture')
|
||||||
swipeGestureChanged() {
|
swipeGestureChanged() {
|
||||||
if (this.gesture) {
|
if (this.gesture) {
|
||||||
this.gesture.setDisabled(this.swipeGesture !== true);
|
this.gesture.enable(this.swipeGesture === true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ export class PickerColumnCmp implements ComponentInterface {
|
|||||||
onMove: ev => this.onMove(ev),
|
onMove: ev => this.onMove(ev),
|
||||||
onEnd: ev => this.onEnd(ev),
|
onEnd: ev => this.onEnd(ev),
|
||||||
});
|
});
|
||||||
this.gesture.setDisabled(false);
|
this.gesture.enable();
|
||||||
this.tmrId = setTimeout(() => {
|
this.tmrId = setTimeout(() => {
|
||||||
this.noAnimate = false;
|
this.noAnimate = false;
|
||||||
this.refresh(true);
|
this.refresh(true);
|
||||||
|
@ -113,7 +113,7 @@ export class Range implements ComponentInterface {
|
|||||||
@Watch('disabled')
|
@Watch('disabled')
|
||||||
protected disabledChanged() {
|
protected disabledChanged() {
|
||||||
if (this.gesture) {
|
if (this.gesture) {
|
||||||
this.gesture.setDisabled(this.disabled);
|
this.gesture.enable(!this.disabled);
|
||||||
}
|
}
|
||||||
this.emitStyle();
|
this.emitStyle();
|
||||||
}
|
}
|
||||||
@ -194,7 +194,7 @@ export class Range implements ComponentInterface {
|
|||||||
onMove: ev => this.onMove(ev),
|
onMove: ev => this.onMove(ev),
|
||||||
onEnd: ev => this.onEnd(ev),
|
onEnd: ev => this.onEnd(ev),
|
||||||
});
|
});
|
||||||
this.gesture.setDisabled(this.disabled);
|
this.gesture.enable(!this.disabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ export class Refresher implements ComponentInterface {
|
|||||||
@Watch('disabled')
|
@Watch('disabled')
|
||||||
disabledChanged() {
|
disabledChanged() {
|
||||||
if (this.gesture) {
|
if (this.gesture) {
|
||||||
this.gesture.setDisabled(this.disabled);
|
this.gesture.enable(!this.disabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ export class ReorderGroup implements ComponentInterface {
|
|||||||
@Watch('disabled')
|
@Watch('disabled')
|
||||||
disabledChanged() {
|
disabledChanged() {
|
||||||
if (this.gesture) {
|
if (this.gesture) {
|
||||||
this.gesture.setDisabled(this.disabled);
|
this.gesture.enable(!this.disabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ export class RouterOutlet implements ComponentInterface, NavOutlet {
|
|||||||
@Watch('swipeHandler')
|
@Watch('swipeHandler')
|
||||||
swipeHandlerChanged() {
|
swipeHandlerChanged() {
|
||||||
if (this.gesture) {
|
if (this.gesture) {
|
||||||
this.gesture.setDisabled(this.swipeHandler === undefined);
|
this.gesture.enable(this.swipeHandler !== undefined);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ export class Toggle implements ComponentInterface {
|
|||||||
disabledChanged() {
|
disabledChanged() {
|
||||||
this.emitStyle();
|
this.emitStyle();
|
||||||
if (this.gesture) {
|
if (this.gesture) {
|
||||||
this.gesture.setDisabled(this.disabled);
|
this.gesture.enable(!this.disabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,14 +31,14 @@ export const createGesture = (config: GestureConfig): Gesture => {
|
|||||||
type: 'pan',
|
type: 'pan',
|
||||||
startX: 0,
|
startX: 0,
|
||||||
startY: 0,
|
startY: 0,
|
||||||
startTimeStamp: 0,
|
startTime: 0,
|
||||||
currentX: 0,
|
currentX: 0,
|
||||||
currentY: 0,
|
currentY: 0,
|
||||||
velocityX: 0,
|
velocityX: 0,
|
||||||
velocityY: 0,
|
velocityY: 0,
|
||||||
deltaX: 0,
|
deltaX: 0,
|
||||||
deltaY: 0,
|
deltaY: 0,
|
||||||
timeStamp: 0,
|
currentTime: 0,
|
||||||
event: undefined as any,
|
event: undefined as any,
|
||||||
data: undefined
|
data: undefined
|
||||||
};
|
};
|
||||||
@ -59,7 +59,7 @@ export const createGesture = (config: GestureConfig): Gesture => {
|
|||||||
updateDetail(ev, detail);
|
updateDetail(ev, detail);
|
||||||
detail.startX = detail.currentX;
|
detail.startX = detail.currentX;
|
||||||
detail.startY = detail.currentY;
|
detail.startY = detail.currentY;
|
||||||
detail.startTimeStamp = detail.timeStamp = timeStamp;
|
detail.startTime = detail.currentTime = timeStamp;
|
||||||
detail.velocityX = detail.velocityY = detail.deltaX = detail.deltaY = 0;
|
detail.velocityX = detail.velocityY = detail.deltaX = detail.deltaY = 0;
|
||||||
detail.event = ev;
|
detail.event = ev;
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ export const createGesture = (config: GestureConfig): Gesture => {
|
|||||||
// more accurate value of the velocity.
|
// more accurate value of the velocity.
|
||||||
detail.startX = detail.currentX;
|
detail.startX = detail.currentX;
|
||||||
detail.startY = detail.currentY;
|
detail.startY = detail.currentY;
|
||||||
detail.startTimeStamp = detail.timeStamp;
|
detail.startTime = detail.currentTime;
|
||||||
|
|
||||||
if (onWillStart) {
|
if (onWillStart) {
|
||||||
onWillStart(detail).then(fireOnStart);
|
onWillStart(detail).then(fireOnStart);
|
||||||
@ -202,11 +202,11 @@ export const createGesture = (config: GestureConfig): Gesture => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
setDisabled(disabled: boolean) {
|
enable(enable = true) {
|
||||||
if (disabled && hasCapturedPan) {
|
if (!enable && hasCapturedPan) {
|
||||||
pointerUp(undefined);
|
pointerUp(undefined);
|
||||||
}
|
}
|
||||||
pointerEvents.setDisabled(disabled);
|
pointerEvents.enable(enable);
|
||||||
},
|
},
|
||||||
destroy() {
|
destroy() {
|
||||||
gesture.destroy();
|
gesture.destroy();
|
||||||
@ -221,13 +221,13 @@ const calcGestureData = (detail: GestureDetail, ev: UIEvent | undefined) => {
|
|||||||
}
|
}
|
||||||
const prevX = detail.currentX;
|
const prevX = detail.currentX;
|
||||||
const prevY = detail.currentY;
|
const prevY = detail.currentY;
|
||||||
const prevT = detail.timeStamp;
|
const prevT = detail.currentTime;
|
||||||
|
|
||||||
updateDetail(ev, detail);
|
updateDetail(ev, detail);
|
||||||
|
|
||||||
const currentX = detail.currentX;
|
const currentX = detail.currentX;
|
||||||
const currentY = detail.currentY;
|
const currentY = detail.currentY;
|
||||||
const timestamp = detail.timeStamp = now(ev);
|
const timestamp = detail.currentTime = now(ev);
|
||||||
const timeDelta = timestamp - prevT;
|
const timeDelta = timestamp - prevT;
|
||||||
if (timeDelta > 0 && timeDelta < 100) {
|
if (timeDelta > 0 && timeDelta < 100) {
|
||||||
const velocityX = (currentX - prevX) / timeDelta;
|
const velocityX = (currentX - prevX) / timeDelta;
|
||||||
@ -268,14 +268,14 @@ export interface GestureDetail {
|
|||||||
type: string;
|
type: string;
|
||||||
startX: number;
|
startX: number;
|
||||||
startY: number;
|
startY: number;
|
||||||
startTimeStamp: number;
|
startTime: number;
|
||||||
currentX: number;
|
currentX: number;
|
||||||
currentY: number;
|
currentY: number;
|
||||||
velocityX: number;
|
velocityX: number;
|
||||||
velocityY: number;
|
velocityY: number;
|
||||||
deltaX: number;
|
deltaX: number;
|
||||||
deltaY: number;
|
deltaY: number;
|
||||||
timeStamp: number;
|
currentTime: number;
|
||||||
event: UIEvent;
|
event: UIEvent;
|
||||||
data?: any;
|
data?: any;
|
||||||
}
|
}
|
||||||
@ -283,7 +283,7 @@ export interface GestureDetail {
|
|||||||
export type GestureCallback = (detail: GestureDetail) => boolean | void;
|
export type GestureCallback = (detail: GestureDetail) => boolean | void;
|
||||||
|
|
||||||
export interface Gesture {
|
export interface Gesture {
|
||||||
setDisabled(disabled: boolean): void;
|
enable(enable?: boolean): void;
|
||||||
destroy(): void;
|
destroy(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,8 +92,8 @@ export const createPointerEvents = (
|
|||||||
stopMouse();
|
stopMouse();
|
||||||
};
|
};
|
||||||
|
|
||||||
const setDisabled = (disabled: boolean) => {
|
const enable = (enable = true) => {
|
||||||
if (disabled) {
|
if (!enable) {
|
||||||
if (rmTouchStart) {
|
if (rmTouchStart) {
|
||||||
rmTouchStart();
|
rmTouchStart();
|
||||||
}
|
}
|
||||||
@ -114,12 +114,12 @@ export const createPointerEvents = (
|
|||||||
};
|
};
|
||||||
|
|
||||||
const destroy = () => {
|
const destroy = () => {
|
||||||
setDisabled(true);
|
enable(false);
|
||||||
pointerUp = pointerMove = pointerDown = undefined;
|
pointerUp = pointerMove = pointerDown = undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
setDisabled,
|
enable,
|
||||||
stop,
|
stop,
|
||||||
destroy
|
destroy
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user