From 9fabaab31c561f7dadbb88caff392c501be9ec36 Mon Sep 17 00:00:00 2001 From: EugeniyKiyashko Date: Wed, 9 Sep 2026 14:53:45 +0400 Subject: [PATCH 1/2] Core: remove m_ prefix from events_strategy file --- .../core/{m_events_strategy.ts => events_strategy.ts} | 0 .../devextreme/js/__internal/integration/knockout/validation.ts | 2 +- packages/devextreme/js/core/events_strategy.js | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename packages/devextreme/js/__internal/core/{m_events_strategy.ts => events_strategy.ts} (100%) diff --git a/packages/devextreme/js/__internal/core/m_events_strategy.ts b/packages/devextreme/js/__internal/core/events_strategy.ts similarity index 100% rename from packages/devextreme/js/__internal/core/m_events_strategy.ts rename to packages/devextreme/js/__internal/core/events_strategy.ts diff --git a/packages/devextreme/js/__internal/integration/knockout/validation.ts b/packages/devextreme/js/__internal/integration/knockout/validation.ts index 945c78a188ed..ccdd10307bd4 100644 --- a/packages/devextreme/js/__internal/integration/knockout/validation.ts +++ b/packages/devextreme/js/__internal/integration/knockout/validation.ts @@ -1,6 +1,6 @@ +import { EventsStrategy } from '@ts/core/events_strategy'; import { Guid } from '@ts/core/guid'; import Class from '@ts/core/m_class'; -import { EventsStrategy } from '@ts/core/m_events_strategy'; import { Deferred } from '@ts/core/utils/m_deferred'; import { extend } from '@ts/core/utils/m_extend'; import { each, map } from '@ts/core/utils/m_iterator'; diff --git a/packages/devextreme/js/core/events_strategy.js b/packages/devextreme/js/core/events_strategy.js index d28bcbfc9214..dd556120ee5f 100644 --- a/packages/devextreme/js/core/events_strategy.js +++ b/packages/devextreme/js/core/events_strategy.js @@ -1,2 +1,2 @@ // deprecated -export { EventsStrategy } from '../__internal/core/m_events_strategy'; +export { EventsStrategy } from '../__internal/core/events_strategy'; From bf6ec98f030c975d00da9e2acab2f82bacd33d59 Mon Sep 17 00:00:00 2001 From: EugeniyKiyashko Date: Thu, 10 Sep 2026 17:02:23 +0400 Subject: [PATCH 2/2] Core: fix eslint/ts errors after rename events_strategy --- .../js/__internal/core/events_strategy.ts | 52 ++++++++++++++----- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/packages/devextreme/js/__internal/core/events_strategy.ts b/packages/devextreme/js/__internal/core/events_strategy.ts index 8a5e59ab5192..fc3ef62ca88d 100644 --- a/packages/devextreme/js/__internal/core/events_strategy.ts +++ b/packages/devextreme/js/__internal/core/events_strategy.ts @@ -1,33 +1,61 @@ -import Callbacks from '@js/core/utils/callbacks'; import { each } from '@js/core/utils/iterator'; import { isFunction, isPlainObject } from '@js/core/utils/type'; +import { Callbacks } from '@ts/core/utils/m_callbacks'; -export class EventsStrategy { - _events: any; +type EventHandler = Function; - _owner: any; +type EventHandlers = Record; - _options: any; +interface EventCallbacks { + add: (fn?: EventHandler) => void; + originalAdd?: (fn?: EventHandler) => void; + remove: (fn?: EventHandler) => void; + has: () => boolean; + empty: () => void; + fireWith: (context: unknown, args?: ArrayLike) => void; +} + +export interface EventsStrategyOptions { + syncStrategy?: boolean; +} + +export interface EventsStrategyInterface { + on: (eventName: string | EventHandlers, eventHandler?: EventHandler) => void; + off: (eventName: string, eventHandler?: EventHandler) => void; + fireEvent: (eventName: string, eventArgs?: ArrayLike) => unknown; + hasEvent: (eventName: string) => boolean; + dispose: () => void; +} + +export class EventsStrategy implements EventsStrategyInterface { + _events: Record; + + _owner: unknown; + + _options: EventsStrategyOptions; - constructor(owner, options = {}) { + constructor(owner: unknown, options: EventsStrategyOptions = {}) { this._events = {}; this._owner = owner; this._options = options; } - static create(owner, strategy) { + static create( + owner: unknown, + strategy?: EventsStrategyInterface | ((owner: unknown) => EventsStrategyInterface), + ): EventsStrategyInterface { if (strategy) { return isFunction(strategy) ? strategy(owner) : strategy; } return new EventsStrategy(owner); } - hasEvent(eventName) { + hasEvent(eventName: string): boolean { const callbacks = this._events[eventName]; return callbacks ? callbacks.has() : false; } - fireEvent(eventName, eventArgs) { + fireEvent(eventName: string, eventArgs?: ArrayLike): unknown { const callbacks = this._events[eventName]; if (callbacks) { callbacks.fireWith(this._owner, eventArgs); @@ -35,7 +63,7 @@ export class EventsStrategy { return this._owner; } - on(eventName, eventHandler) { + on(eventName: string | EventHandlers, eventHandler?: EventHandler): void { if (isPlainObject(eventName)) { each(eventName, (e, h) => { this.on(e, h); @@ -55,7 +83,7 @@ export class EventsStrategy { } } - off(eventName, eventHandler) { + off(eventName: string, eventHandler?: EventHandler): void { const callbacks = this._events[eventName]; if (callbacks) { if (isFunction(eventHandler)) { @@ -66,7 +94,7 @@ export class EventsStrategy { } } - dispose() { + dispose(): void { each(this._events, (eventName, event) => { event.empty(); });