From 0e1f192aca5f6113f11cb16e84dbaf45141ae894 Mon Sep 17 00:00:00 2001 From: "ala'n (Alexey Stsefanovich)" Date: Thu, 27 Jun 2024 19:25:20 +0200 Subject: [PATCH] feat(esl-event-listener): add ability to prevent default wheel action trough ESLWheelTarget --- .../esl-event-listener/core/targets/wheel.target.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/modules/esl-event-listener/core/targets/wheel.target.ts b/src/modules/esl-event-listener/core/targets/wheel.target.ts index 2a7dd7b10..200a4d985 100644 --- a/src/modules/esl-event-listener/core/targets/wheel.target.ts +++ b/src/modules/esl-event-listener/core/targets/wheel.target.ts @@ -27,6 +27,8 @@ export interface ESLWheelTargetSetting { timeout?: number; /** Predicate to ignore wheel events */ ignore?: Predicate; + /** Prevent default action for wheel event */ + preventDefault?: boolean; } /** @@ -37,6 +39,7 @@ export class ESLWheelTarget extends SyntheticEventTarget { skipOnScroll: true, distance: 400, timeout: 100, + preventDefault: false, ignore: () => false }; @@ -79,6 +82,7 @@ export class ESLWheelTarget extends SyntheticEventTarget { const offsets = getParentScrollOffsets(event.target as Element, this.target); this.scrollData = this.scrollData.concat(offsets); } + if (this.config.preventDefault) event.preventDefault(); this.aggregateWheel(event); } @@ -148,7 +152,11 @@ export class ESLWheelTarget extends SyntheticEventTarget { super.addEventListener(event, callback); if (this.getEventListeners().length > 1) return; - ESLEventListener.subscribe(this, this._onWheel, {event: 'wheel', capture: false, target: this.target}); + ESLEventListener.subscribe(this, this._onWheel, { + event: 'wheel', + passive: !this.config.preventDefault, + target: this.target + }); } /** Unsubscribes from the observed target {@link Element} wheel events */