Skip to content

Commit 4b4adca

Browse files
committed
fix: allow views to add custom gesture options with tapGestureOptions... properties
1 parent 0bb5e22 commit 4b4adca

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

src/gesturehandler/gesturehandler.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@ import { BaseGestureRootView, HandlerType, OptionsTypeMap, TypeMap } from './ges
66
export { GestureState, GestureHandlerStateEvent, GestureHandlerTouchEvent, GestureStateEventData, GestureTouchEventData, HandlerType } from './gesturehandler.common';
77
// export * from './gesturehandler.ios';
88

9+
declare module '@nativescript/core/ui/core/view' {
10+
interface View {
11+
tapGestureOptions: Partial<TapGestureHandlerOptions>;
12+
panGestureOptions: Partial<PanGestureHandlerOptions>;
13+
doubleTapGestureOptions: Partial<TapGestureHandlerOptions>;
14+
longPressGestureOptions: Partial<LongPressGestureHandlerOptions>;
15+
swipeGestureOptions: Partial<FlingGestureHandlerOptions>;
16+
pinchGestureOptions: Partial<PinchGestureHandlerOptions>;
17+
rotationGestureOptions: Partial<RotationGestureHandlerOptions>;
18+
}
19+
}
20+
921
export enum FlingDirection {
1022
DIRECTION_LEFT,
1123
DIRECTION_UP,

src/gesturehandler/gestures_override.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,50 +201,57 @@ export class GesturesObserver {
201201
if (type & GestureTypes.tap) {
202202
gestureHandler = manager.createGestureHandler(HandlerType.TAP, target['TAP_HANDLER_TAG'], {
203203
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG],
204-
waitFor: [target['LONGPRESS_HANDLER_TAG'], target['DOUBLE_TAP_HANDLER_TAG']]
204+
waitFor: [target['LONGPRESS_HANDLER_TAG'], target['DOUBLE_TAP_HANDLER_TAG']],
205+
...(target.tapGestureOptions || {})
205206
});
206207
gestureHandler.on(GestureHandlerStateEvent, this.onGestureStateChange(GestureTypes.tap, GestureState.ACTIVE), this);
207208
}
208209
if (type & GestureTypes.longPress) {
209210
gestureHandler = manager.createGestureHandler(HandlerType.LONG_PRESS, target['LONGPRESS_HANDLER_TAG'], {
210-
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG]
211+
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG],
212+
...(target.longPressGestureOptions || {})
211213
});
212214
gestureHandler.on(GestureHandlerStateEvent, this.onGestureStateChange(GestureTypes.longPress, __IOS__ ? GestureState.BEGAN : GestureState.ACTIVE), this);
213215
}
214216
if (type & GestureTypes.doubleTap) {
215217
gestureHandler = manager.createGestureHandler(HandlerType.TAP, target['DOUBLE_TAP_HANDLER_TAG'], {
216218
numberOfTaps: 2,
217-
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG]
219+
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG],
220+
...(target.doubleTapGestureOptions || {})
218221
});
219222
gestureHandler.on(GestureHandlerStateEvent, this.onGestureStateChange(GestureTypes.doubleTap, GestureState.ACTIVE), this);
220223
}
221224

222225
if (type & GestureTypes.pinch) {
223226
gestureHandler = manager.createGestureHandler(HandlerType.PINCH, target['PINCH_HANDLER_TAG'], {
224-
simultaneousHandlers: [target['PAN_HANDLER_TAG'], ROOT_GESTURE_HANDLER_TAG]
227+
simultaneousHandlers: [target['PAN_HANDLER_TAG'], ROOT_GESTURE_HANDLER_TAG],
228+
...(target.pinchGestureOptions || {})
225229
});
226230
gestureHandler.on(GestureHandlerStateEvent, this.onGestureStateChange(GestureTypes.pinch), this);
227231
gestureHandler.on(GestureHandlerTouchEvent, this.onGestureTouchChange(GestureTypes.pinch), this);
228232
}
229233

230234
if (type & GestureTypes.swipe) {
231235
gestureHandler = manager.createGestureHandler(HandlerType.FLING, TAG++, {
232-
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG]
236+
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG],
237+
...(target.swipeGestureOptions || {})
233238
});
234239
gestureHandler.on(GestureHandlerStateEvent, this.onGestureStateChange(GestureTypes.swipe, GestureState.ACTIVE), this);
235240
}
236241

237242
if (type & GestureTypes.pan) {
238243
gestureHandler = manager.createGestureHandler(HandlerType.PAN, target['PAN_HANDLER_TAG'], {
239-
simultaneousHandlers: [target['PINCH_HANDLER_TAG'], ROOT_GESTURE_HANDLER_TAG]
244+
simultaneousHandlers: [target['PINCH_HANDLER_TAG'], ROOT_GESTURE_HANDLER_TAG],
245+
...(target.panGestureOptions || {})
240246
});
241247
gestureHandler.on(GestureHandlerStateEvent, this.onGestureStateChange(GestureTypes.pan), this);
242248
gestureHandler.on(GestureHandlerTouchEvent, this.onGestureTouchChange(GestureTypes.pan), this);
243249
}
244250

245251
if (type & GestureTypes.rotation) {
246252
gestureHandler = manager.createGestureHandler(HandlerType.ROTATION, TAG++, {
247-
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG]
253+
simultaneousHandlers: [ROOT_GESTURE_HANDLER_TAG],
254+
...(target.rotationGestureOptions || {})
248255
});
249256
gestureHandler.on(GestureHandlerStateEvent, this.onGestureStateChange(GestureTypes.rotation, GestureState.ACTIVE), this);
250257
gestureHandler.on(GestureHandlerTouchEvent, this.onGestureTouchChange(GestureTypes.rotation), this);

0 commit comments

Comments
 (0)