From a476622e2ac22d5b64db5c101a3803846f7c9df6 Mon Sep 17 00:00:00 2001 From: EugeniyKiyashko Date: Fri, 28 Aug 2026 21:52:02 +0400 Subject: [PATCH 1/2] Core(Events): remove m_ prefix from the pointer observer --- packages/devextreme/js/__internal/events/pointer/mouse.ts | 4 ++-- .../js/__internal/events/pointer/mouse_and_touch.ts | 2 +- .../__internal/events/pointer/{m_observer.ts => observer.ts} | 0 packages/devextreme/js/__internal/events/pointer/touch.ts | 2 +- packages/devextreme/js/common/core/events/pointer/observer.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) rename packages/devextreme/js/__internal/events/pointer/{m_observer.ts => observer.ts} (100%) diff --git a/packages/devextreme/js/__internal/events/pointer/mouse.ts b/packages/devextreme/js/__internal/events/pointer/mouse.ts index 15a42f69720a..847e57e46949 100644 --- a/packages/devextreme/js/__internal/events/pointer/mouse.ts +++ b/packages/devextreme/js/__internal/events/pointer/mouse.ts @@ -3,8 +3,8 @@ import { extend } from '@js/core/utils/extend'; import type { EmitterEvent } from '@ts/events/core/emitter'; import type { PointerEventInit } from '@ts/events/pointer/base'; import BaseStrategy from '@ts/events/pointer/base'; -import type { PointerEventMap } from '@ts/events/pointer/m_observer'; -import Observer from '@ts/events/pointer/m_observer'; +import type { PointerEventMap } from '@ts/events/pointer/observer'; +import Observer from '@ts/events/pointer/observer'; /* eslint-disable spellcheck/spell-checker */ const eventMap: PointerEventMap = { diff --git a/packages/devextreme/js/__internal/events/pointer/mouse_and_touch.ts b/packages/devextreme/js/__internal/events/pointer/mouse_and_touch.ts index a0636e6671b7..dec4cf6cfe63 100644 --- a/packages/devextreme/js/__internal/events/pointer/mouse_and_touch.ts +++ b/packages/devextreme/js/__internal/events/pointer/mouse_and_touch.ts @@ -3,8 +3,8 @@ import { extend } from '@js/core/utils/extend'; import type { EmitterEvent } from '@ts/events/core/emitter'; import type { PointerEventInit } from '@ts/events/pointer/base'; import BaseStrategy from '@ts/events/pointer/base'; -import type { PointerEventMap } from '@ts/events/pointer/m_observer'; import MouseStrategy from '@ts/events/pointer/mouse'; +import type { PointerEventMap } from '@ts/events/pointer/observer'; import TouchStrategy from '@ts/events/pointer/touch'; /* eslint-disable spellcheck/spell-checker */ diff --git a/packages/devextreme/js/__internal/events/pointer/m_observer.ts b/packages/devextreme/js/__internal/events/pointer/observer.ts similarity index 100% rename from packages/devextreme/js/__internal/events/pointer/m_observer.ts rename to packages/devextreme/js/__internal/events/pointer/observer.ts diff --git a/packages/devextreme/js/__internal/events/pointer/touch.ts b/packages/devextreme/js/__internal/events/pointer/touch.ts index e608f8b5f2a7..8713b9af7401 100644 --- a/packages/devextreme/js/__internal/events/pointer/touch.ts +++ b/packages/devextreme/js/__internal/events/pointer/touch.ts @@ -4,7 +4,7 @@ import devices from '@ts/core/m_devices'; import type { EmitterEvent, EmitterEventPointer } from '@ts/events/core/emitter'; import type { PointerEventInit } from '@ts/events/pointer/base'; import BaseStrategy from '@ts/events/pointer/base'; -import type { PointerEventMap } from '@ts/events/pointer/m_observer'; +import type { PointerEventMap } from '@ts/events/pointer/observer'; /* eslint-disable spellcheck/spell-checker */ const eventMap: PointerEventMap = { diff --git a/packages/devextreme/js/common/core/events/pointer/observer.js b/packages/devextreme/js/common/core/events/pointer/observer.js index 23d7d02347de..8177ba43a279 100644 --- a/packages/devextreme/js/common/core/events/pointer/observer.js +++ b/packages/devextreme/js/common/core/events/pointer/observer.js @@ -1 +1 @@ -export { default } from '../../../../__internal/events/pointer/m_observer'; +export { default } from '../../../../__internal/events/pointer/observer'; From 311c13b8488a0b24ab4d5961342f70a539cb2849 Mon Sep 17 00:00:00 2001 From: EugeniyKiyashko Date: Fri, 28 Aug 2026 21:55:47 +0400 Subject: [PATCH 2/2] Core(Events): address review notes on the pointer and keyboard modules --- .../events/core/keyboard_processor.ts | 52 ++++++++++++------- .../js/__internal/events/pointer/base.ts | 10 ++-- .../js/__internal/events/pointer/mouse.ts | 4 +- .../events/pointer/mouse_and_touch.ts | 4 +- .../js/__internal/events/pointer/observer.ts | 2 +- .../js/__internal/events/pointer/touch.ts | 4 +- 6 files changed, 46 insertions(+), 30 deletions(-) diff --git a/packages/devextreme/js/__internal/events/core/keyboard_processor.ts b/packages/devextreme/js/__internal/events/core/keyboard_processor.ts index a4160151ade3..cd111c7712e1 100644 --- a/packages/devextreme/js/__internal/events/core/keyboard_processor.ts +++ b/packages/devextreme/js/__internal/events/core/keyboard_processor.ts @@ -9,6 +9,10 @@ const COMPOSITION_END_EVENT = 'compositionend'; const KEYDOWN_EVENT = 'keydown'; const NAMESPACE = 'KeyboardProcessor'; +const KEYDOWN_NAMESPACED_EVENT = addNamespace(KEYDOWN_EVENT, NAMESPACE); +const COMPOSITION_START_NAMESPACED_EVENT = addNamespace(COMPOSITION_START_EVENT, NAMESPACE); +const COMPOSITION_END_NAMESPACED_EVENT = addNamespace(COMPOSITION_END_EVENT, NAMESPACE); + export interface KeyboardKeyDownEvent { keyName: string; key: string; @@ -42,12 +46,6 @@ const createKeyDownOptions = (e: DxEvent): KeyboardKeyDownEvent = }); class KeyboardProcessor { - _keydown = addNamespace(KEYDOWN_EVENT, NAMESPACE); - - _compositionStart = addNamespace(COMPOSITION_START_EVENT, NAMESPACE); - - _compositionEnd = addNamespace(COMPOSITION_END_EVENT, NAMESPACE); - _element?: dxElementWrapper; _focusTarget?: Element | Element[] | dxElementWrapper | null; @@ -64,14 +62,16 @@ class KeyboardProcessor { static createKeyDownOptions = createKeyDownOptions; - constructor(options: KeyboardProcessorOptions = {}) { - if (options.element) { - this._element = $(options.element); + constructor(options?: KeyboardProcessorOptions | null) { + const config = options ?? {}; + + if (config.element) { + this._element = $(config.element); } - if (options.focusTarget) { - this._focusTarget = options.focusTarget; + if (config.focusTarget) { + this._focusTarget = config.focusTarget; } - this._handler = options.handler; + this._handler = config.handler; if (this._element) { this._processFunction = (e: DxEvent): void => { @@ -90,17 +90,33 @@ class KeyboardProcessor { }; this._toggleProcessingWithContext = this.toggleProcessing.bind(this); - eventsEngine.on(this._element, this._keydown, this._processFunction); - eventsEngine.on(this._element, this._compositionStart, this._toggleProcessingWithContext); - eventsEngine.on(this._element, this._compositionEnd, this._toggleProcessingWithContext); + eventsEngine.on(this._element, KEYDOWN_NAMESPACED_EVENT, this._processFunction); + eventsEngine.on( + this._element, + COMPOSITION_START_NAMESPACED_EVENT, + this._toggleProcessingWithContext, + ); + eventsEngine.on( + this._element, + COMPOSITION_END_NAMESPACED_EVENT, + this._toggleProcessingWithContext, + ); } } dispose(): void { if (this._element) { - eventsEngine.off(this._element, this._keydown, this._processFunction); - eventsEngine.off(this._element, this._compositionStart, this._toggleProcessingWithContext); - eventsEngine.off(this._element, this._compositionEnd, this._toggleProcessingWithContext); + eventsEngine.off(this._element, KEYDOWN_NAMESPACED_EVENT, this._processFunction); + eventsEngine.off( + this._element, + COMPOSITION_START_NAMESPACED_EVENT, + this._toggleProcessingWithContext, + ); + eventsEngine.off( + this._element, + COMPOSITION_END_NAMESPACED_EVENT, + this._toggleProcessingWithContext, + ); } this._element = undefined; this._handler = undefined; diff --git a/packages/devextreme/js/__internal/events/pointer/base.ts b/packages/devextreme/js/__internal/events/pointer/base.ts index 92dd7b961444..70affe874acd 100644 --- a/packages/devextreme/js/__internal/events/pointer/base.ts +++ b/packages/devextreme/js/__internal/events/pointer/base.ts @@ -13,7 +13,7 @@ export interface PointerEventHandleObj { data?: Record; } -export interface PointerEventInit { +export interface PointerStrategyEventArgs { type: string; pointerType: string; originalEvent: EmitterEvent; @@ -50,7 +50,7 @@ class BaseStrategy { _handler(e: EmitterEvent): EmitterEvent | undefined { const delegateTarget = this._getDelegateTarget(e); - const event: PointerEventInit = { + const event: PointerStrategyEventArgs = { type: this._eventName, pointerType: e.pointerType || eventSource(e), originalEvent: e, @@ -76,7 +76,7 @@ class BaseStrategy { return delegateTarget; } - _fireEvent(args: PointerEventInit): EmitterEvent { + _fireEvent(args: PointerStrategyEventArgs): EmitterEvent { const event: EmitterEvent = fireEvent(args); return event; @@ -109,8 +109,8 @@ class BaseStrategy { } } - remove(handleObj: PointerEventHandleObj): void { - this._setSelector(handleObj); + remove(): void { + this._selector = null; if (!this.noBubble) { this._handlerCount -= 1; diff --git a/packages/devextreme/js/__internal/events/pointer/mouse.ts b/packages/devextreme/js/__internal/events/pointer/mouse.ts index 847e57e46949..8d3b00766892 100644 --- a/packages/devextreme/js/__internal/events/pointer/mouse.ts +++ b/packages/devextreme/js/__internal/events/pointer/mouse.ts @@ -1,7 +1,7 @@ import browser from '@js/core/utils/browser'; import { extend } from '@js/core/utils/extend'; import type { EmitterEvent } from '@ts/events/core/emitter'; -import type { PointerEventInit } from '@ts/events/pointer/base'; +import type { PointerStrategyEventArgs } from '@ts/events/pointer/base'; import BaseStrategy from '@ts/events/pointer/base'; import type { PointerEventMap } from '@ts/events/pointer/observer'; import Observer from '@ts/events/pointer/observer'; @@ -71,7 +71,7 @@ class MouseStrategy extends BaseStrategy { observer.reset(); }; - _fireEvent(args: PointerEventInit): EmitterEvent { + _fireEvent(args: PointerStrategyEventArgs): EmitterEvent { return super._fireEvent(extend(normalizeMouseEvent(args.originalEvent), args)); } } diff --git a/packages/devextreme/js/__internal/events/pointer/mouse_and_touch.ts b/packages/devextreme/js/__internal/events/pointer/mouse_and_touch.ts index dec4cf6cfe63..ea9fbd1a1104 100644 --- a/packages/devextreme/js/__internal/events/pointer/mouse_and_touch.ts +++ b/packages/devextreme/js/__internal/events/pointer/mouse_and_touch.ts @@ -1,7 +1,7 @@ import { isMouseEvent } from '@js/common/core/events/utils/index'; import { extend } from '@js/core/utils/extend'; import type { EmitterEvent } from '@ts/events/core/emitter'; -import type { PointerEventInit } from '@ts/events/pointer/base'; +import type { PointerStrategyEventArgs } from '@ts/events/pointer/base'; import BaseStrategy from '@ts/events/pointer/base'; import MouseStrategy from '@ts/events/pointer/mouse'; import type { PointerEventMap } from '@ts/events/pointer/observer'; @@ -75,7 +75,7 @@ class MouseAndTouchStrategy extends BaseStrategy { return super._handler(e); } - _fireEvent(args: PointerEventInit): EmitterEvent { + _fireEvent(args: PointerStrategyEventArgs): EmitterEvent { const normalizer = isMouseEvent(args.originalEvent) ? MouseStrategy.normalize : TouchStrategy.normalize; diff --git a/packages/devextreme/js/__internal/events/pointer/observer.ts b/packages/devextreme/js/__internal/events/pointer/observer.ts index 4102d7c469b2..1c1129d79eab 100644 --- a/packages/devextreme/js/__internal/events/pointer/observer.ts +++ b/packages/devextreme/js/__internal/events/pointer/observer.ts @@ -27,7 +27,7 @@ class Observer { onPointerAdding?: (e: Event) => void, ) { this._pointerEquals = pointerEquals; - this._onPointerAdding = onPointerAdding ?? function () { }; + this._onPointerAdding = onPointerAdding ?? ((): void => {}); this._pointers = []; /* eslint-disable spellcheck/spell-checker */ diff --git a/packages/devextreme/js/__internal/events/pointer/touch.ts b/packages/devextreme/js/__internal/events/pointer/touch.ts index 8713b9af7401..a394ea26ad7e 100644 --- a/packages/devextreme/js/__internal/events/pointer/touch.ts +++ b/packages/devextreme/js/__internal/events/pointer/touch.ts @@ -2,7 +2,7 @@ import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import devices from '@ts/core/m_devices'; import type { EmitterEvent, EmitterEventPointer } from '@ts/events/core/emitter'; -import type { PointerEventInit } from '@ts/events/pointer/base'; +import type { PointerStrategyEventArgs } from '@ts/events/pointer/base'; import BaseStrategy from '@ts/events/pointer/base'; import type { PointerEventMap } from '@ts/events/pointer/observer'; @@ -74,7 +74,7 @@ class TouchStrategy extends BaseStrategy { return super._handler(e); } - _fireEvent(args: PointerEventInit): EmitterEvent { + _fireEvent(args: PointerStrategyEventArgs): EmitterEvent { const touchEvent = args.originalEvent as TouchPointerEvent; return super._fireEvent(extend(normalizeTouchEvent(touchEvent), args));