Skip to content

Commit 6d872c3

Browse files
Drawer, Scrollbar, Scrollable, DateViewRollers, Scroller, Strategies(native, simulated): convert into ES6 class (DevExpress#29226)
1 parent 3ecfaaf commit 6d872c3

12 files changed

+1403
-878
lines changed

packages/devextreme/js/__internal/ui/date_box/m_date_view.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ const DateView = (Editor as any).inherit({
245245
if (roller) {
246246
this._createRollerConfig(rollerType);
247247
const rollerConfig = this._rollerConfigs[rollerType];
248+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
248249
if (rollerType === ROLLER_TYPE.day || rollerConfig.displayItems.toString() !== roller.option('items').toString()) {
249250
roller.option({
250251
items: rollerConfig.displayItems,

packages/devextreme/js/__internal/ui/date_box/m_date_view_roller.ts

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import eventsEngine from '@js/common/core/events/core/events_engine';
55
import { addNamespace } from '@js/common/core/events/utils/index';
66
import registerComponent from '@js/core/component_registrator';
77
import devices from '@js/core/devices';
8+
import type { dxElementWrapper } from '@js/core/renderer';
89
import $ from '@js/core/renderer';
9-
import { extend } from '@js/core/utils/extend';
1010
import { each } from '@js/core/utils/iterator';
1111
import { getHeight } from '@js/core/utils/size';
1212
import { convertToLocation } from '@ts/ui/scroll_view/utils/convert_location';
1313

14+
import type { ScrollableProperties } from '../scroll_view/m_scrollable';
1415
import Scrollable from '../scroll_view/m_scrollable';
1516

1617
const DATEVIEW_ROLLER_CLASS = 'dx-dateviewroller';
@@ -22,19 +23,41 @@ const DATEVIEW_ROLLER_ITEM_SELECTED_CLASS = 'dx-dateview-item-selected';
2223
const DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS = 'dx-dateview-item-selected-frame';
2324
const DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS = 'dx-dateview-item-selected-border';
2425

26+
export interface DateViewRollerProperties extends ScrollableProperties {
27+
selectedIndex?: number;
28+
29+
items?: any[];
30+
31+
showOnClick?: boolean;
32+
33+
onClick?: () => void;
34+
}
35+
2536
class DateViewRoller extends Scrollable {
26-
_getDefaultOptions() {
27-
return extend(super._getDefaultOptions(), {
37+
_visibilityTimer?: ReturnType<typeof setTimeout>;
38+
39+
_selectedIndexChanged?: (e?: Record<string, unknown>) => void;
40+
41+
_isWheelScrolled?: boolean;
42+
43+
_$items!: dxElementWrapper;
44+
45+
_animation?: boolean;
46+
47+
_getDefaultOptions(): DateViewRollerProperties {
48+
return {
49+
...super._getDefaultOptions(),
2850
showScrollbar: 'never',
2951
useNative: false,
3052
selectedIndex: 0,
3153
bounceEnabled: false,
3254
items: [],
3355
showOnClick: false,
56+
// @ts-expect-error ts-error
3457
onClick: null,
3558
onSelectedIndexChanged: null,
3659
scrollByContent: true,
37-
});
60+
};
3861
}
3962

4063
_init(): void {
@@ -53,7 +76,7 @@ class DateViewRoller extends Scrollable {
5376

5477
this._renderContainerClick();
5578
this._renderItems();
56-
// @ts-expect-error
79+
// @ts-expect-error ts-error
5780
this._renderSelectedValue();
5881
this._renderItemsClick();
5982
this._renderWheelEvent();
@@ -76,7 +99,7 @@ class DateViewRoller extends Scrollable {
7699
if (!this.option('showOnClick')) {
77100
return;
78101
}
79-
102+
// @ts-expect-error ts-error
80103
const eventName = addNamespace(clickEventName, this.NAME);
81104

82105
const clickAction = this._createActionByOption('onClick');
@@ -93,6 +116,7 @@ class DateViewRoller extends Scrollable {
93116

94117
$(this.content()).empty();
95118
// NOTE: rendering ~166+30+12+24+60 <div>s >> 50mc
119+
// @ts-expect-error ts-error
96120
items.forEach((item) => {
97121
$items = $items.add(
98122
// @ts-expect-error
@@ -123,6 +147,7 @@ class DateViewRoller extends Scrollable {
123147

124148
_fitIndex(index) {
125149
const items = this.option('items') || [];
150+
// @ts-expect-error ts-error
126151
const itemCount = items.length;
127152

128153
if (index >= itemCount) {
@@ -136,23 +161,24 @@ class DateViewRoller extends Scrollable {
136161
return index;
137162
}
138163

139-
_getItemPosition(index) {
164+
_getItemPosition(index): number {
140165
return Math.round(this._itemHeight() * index);
141166
}
142167

143-
_renderItemsClick() {
168+
_renderItemsClick(): void {
144169
const itemSelector = this._getItemSelector();
170+
// @ts-expect-error ts-error
145171
const eventName = addNamespace(clickEventName, this.NAME);
146172

147173
eventsEngine.off(this.$element(), eventName, itemSelector);
148174
eventsEngine.on(this.$element(), eventName, itemSelector, this._itemClickHandler.bind(this));
149175
}
150176

151-
_getItemSelector() {
177+
_getItemSelector(): string {
152178
return `.${DATEVIEW_ROLLER_ITEM_CLASS}`;
153179
}
154180

155-
_itemClickHandler(e) {
181+
_itemClickHandler(e): void {
156182
this.option('selectedIndex', this._itemElementIndex(e.currentTarget));
157183
}
158184

@@ -218,6 +244,7 @@ class DateViewRoller extends Scrollable {
218244
}
219245

220246
_fitSelectedIndexInRange(index) {
247+
// @ts-expect-error ts-error
221248
const itemsCount = this.option('items').length;
222249
return Math.max(Math.min(index, itemsCount - 1), 0);
223250
}
@@ -266,7 +293,7 @@ class DateViewRoller extends Scrollable {
266293
this._isWheelScrolled = false;
267294
}
268295

269-
_itemHeight() {
296+
_itemHeight(): number {
270297
const $item = this._$items.first();
271298

272299
return getHeight($item);
@@ -281,7 +308,7 @@ class DateViewRoller extends Scrollable {
281308
}
282309

283310
_fireSelectedIndexChanged(value, previousValue): void {
284-
this._selectedIndexChanged({
311+
this._selectedIndexChanged?.({
285312
value,
286313
previousValue,
287314
event: undefined,
@@ -345,7 +372,7 @@ class DateViewRoller extends Scrollable {
345372
super._dispose();
346373
}
347374
}
348-
// @ts-expect-error ts-error
375+
349376
registerComponent('dxDateViewRoller', DateViewRoller);
350377

351378
export default DateViewRoller;

packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.overlap.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import $ from '@js/core/renderer';
33
import { ensureDefined } from '@js/core/utils/common';
44
import { camelize } from '@js/core/utils/inflector';
55
import { getWidth } from '@js/core/utils/size';
6-
import Overlay from '@js/ui/overlay/ui.overlay';
6+
import Overlay from '@ts/ui/overlay/m_overlay';
77

88
import { animation } from './m_drawer.animation';
99
import DrawerStrategy from './m_drawer.rendering.strategy';

0 commit comments

Comments
 (0)