Skip to content

Commit b05c98f

Browse files
Drawer, Scrollbar, Scrollable, DateViewRollers, Scroller, Strategies(native, simulated): convert into ES6 class (DevExpress#29206)
1 parent e0b0d19 commit b05c98f

12 files changed

+1395
-876
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
@@ -276,6 +276,7 @@ class DateView extends Editor<DateViewProperties> {
276276
if (roller) {
277277
this._createRollerConfig(rollerType);
278278
const rollerConfig = this._rollerConfigs[rollerType];
279+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
279280
if (rollerType === ROLLER_TYPE.day || rollerConfig.displayItems.toString() !== roller.option('items').toString()) {
280281
roller.option({
281282
items: rollerConfig.displayItems,

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

Lines changed: 35 additions & 11 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';
910
import { each } from '@js/core/utils/iterator';
1011
import { getHeight } from '@js/core/utils/size';
11-
import type { Properties } from '@js/ui/scroll_view';
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,9 +23,27 @@ 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

25-
export interface DateViewRollerProperties extends Properties {}
26+
export interface DateViewRollerProperties extends ScrollableProperties {
27+
selectedIndex?: number;
28+
29+
items?: any[];
30+
31+
showOnClick?: boolean;
32+
33+
onClick?: () => void;
34+
}
2635

2736
class DateViewRoller extends Scrollable {
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+
2847
_getDefaultOptions(): DateViewRollerProperties {
2948
return {
3049
...super._getDefaultOptions(),
@@ -34,6 +53,7 @@ class DateViewRoller extends Scrollable {
3453
bounceEnabled: false,
3554
items: [],
3655
showOnClick: false,
56+
// @ts-expect-error ts-error
3757
onClick: null,
3858
onSelectedIndexChanged: null,
3959
scrollByContent: true,
@@ -56,7 +76,7 @@ class DateViewRoller extends Scrollable {
5676

5777
this._renderContainerClick();
5878
this._renderItems();
59-
// @ts-expect-error
79+
// @ts-expect-error ts-error
6080
this._renderSelectedValue();
6181
this._renderItemsClick();
6282
this._renderWheelEvent();
@@ -79,7 +99,7 @@ class DateViewRoller extends Scrollable {
7999
if (!this.option('showOnClick')) {
80100
return;
81101
}
82-
102+
// @ts-expect-error ts-error
83103
const eventName = addNamespace(clickEventName, this.NAME);
84104

85105
const clickAction = this._createActionByOption('onClick');
@@ -96,6 +116,7 @@ class DateViewRoller extends Scrollable {
96116

97117
$(this.content()).empty();
98118
// NOTE: rendering ~166+30+12+24+60 <div>s >> 50mc
119+
// @ts-expect-error ts-error
99120
items.forEach((item) => {
100121
$items = $items.add(
101122
// @ts-expect-error
@@ -126,6 +147,7 @@ class DateViewRoller extends Scrollable {
126147

127148
_fitIndex(index) {
128149
const items = this.option('items') || [];
150+
// @ts-expect-error ts-error
129151
const itemCount = items.length;
130152

131153
if (index >= itemCount) {
@@ -139,23 +161,24 @@ class DateViewRoller extends Scrollable {
139161
return index;
140162
}
141163

142-
_getItemPosition(index) {
164+
_getItemPosition(index): number {
143165
return Math.round(this._itemHeight() * index);
144166
}
145167

146-
_renderItemsClick() {
168+
_renderItemsClick(): void {
147169
const itemSelector = this._getItemSelector();
170+
// @ts-expect-error ts-error
148171
const eventName = addNamespace(clickEventName, this.NAME);
149172

150173
eventsEngine.off(this.$element(), eventName, itemSelector);
151174
eventsEngine.on(this.$element(), eventName, itemSelector, this._itemClickHandler.bind(this));
152175
}
153176

154-
_getItemSelector() {
177+
_getItemSelector(): string {
155178
return `.${DATEVIEW_ROLLER_ITEM_CLASS}`;
156179
}
157180

158-
_itemClickHandler(e) {
181+
_itemClickHandler(e): void {
159182
this.option('selectedIndex', this._itemElementIndex(e.currentTarget));
160183
}
161184

@@ -221,6 +244,7 @@ class DateViewRoller extends Scrollable {
221244
}
222245

223246
_fitSelectedIndexInRange(index) {
247+
// @ts-expect-error ts-error
224248
const itemsCount = this.option('items').length;
225249
return Math.max(Math.min(index, itemsCount - 1), 0);
226250
}
@@ -269,7 +293,7 @@ class DateViewRoller extends Scrollable {
269293
this._isWheelScrolled = false;
270294
}
271295

272-
_itemHeight() {
296+
_itemHeight(): number {
273297
const $item = this._$items.first();
274298

275299
return getHeight($item);
@@ -284,7 +308,7 @@ class DateViewRoller extends Scrollable {
284308
}
285309

286310
_fireSelectedIndexChanged(value, previousValue): void {
287-
this._selectedIndexChanged({
311+
this._selectedIndexChanged?.({
288312
value,
289313
previousValue,
290314
event: undefined,
@@ -348,7 +372,7 @@ class DateViewRoller extends Scrollable {
348372
super._dispose();
349373
}
350374
}
351-
// @ts-expect-error ts-error
375+
352376
registerComponent('dxDateViewRoller', DateViewRoller);
353377

354378
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)