Skip to content

Commit 91f55d0

Browse files
Hierarchical collection: improve typings and convert DataAdapter and DataConverter to ES6 classes (DevExpress#30285)
1 parent 8f77e14 commit 91f55d0

File tree

9 files changed

+646
-421
lines changed

9 files changed

+646
-421
lines changed

packages/devextreme/js/__internal/ui/context_menu/m_menu_base.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import type { Item, SubmenuShowMode } from '@js/ui/menu';
1212
import { render } from '@js/ui/widget/utils.ink_ripple';
1313
import MenuItem from '@ts/ui/collection/item';
1414
import MenuBaseEditStrategy from '@ts/ui/context_menu/menu_base.edit.strategy';
15+
import type { BaseDataAdapterOptions } from '@ts/ui/hierarchical_collection/m_data_adapter';
1516
import HierarchicalCollectionWidget from '@ts/ui/hierarchical_collection/m_hierarchical_collection_widget';
1617

1718
const DX_MENU_CLASS = 'dx-menu';
@@ -210,7 +211,8 @@ class MenuBase extends HierarchicalCollectionWidget<Properties> {
210211
return $popOutContainer;
211212
}
212213

213-
_getDataAdapterOptions() {
214+
// eslint-disable-next-line class-methods-use-this
215+
_getDataAdapterOptions(): BaseDataAdapterOptions {
214216
return {
215217
rootValue: 0,
216218
multipleSelection: false,
@@ -224,6 +226,7 @@ class MenuBase extends HierarchicalCollectionWidget<Properties> {
224226
if (!selectedItem) return;
225227

226228
const nodeToSelect = this._dataAdapter.getNodeByItem(selectedItem);
229+
// @ts-expect-error ts-error
227230
this._dataAdapter.toggleSelection(nodeToSelect.internalFields.key, true);
228231
}
229232

@@ -237,7 +240,7 @@ class MenuBase extends HierarchicalCollectionWidget<Properties> {
237240
return;
238241
}
239242

240-
const node = this._dataAdapter.getNodeByKey(selectedKey);
243+
const node = this._dataAdapter.getNodeByKey(selectedKey) as Item;
241244

242245
if (node.selectable === false) return;
243246

@@ -492,7 +495,7 @@ class MenuBase extends HierarchicalCollectionWidget<Properties> {
492495
}
493496

494497
_refreshItem($item: dxElementWrapper, item: Item): void {
495-
const node = this._dataAdapter.getNodeByItem(item);
498+
const node = this._dataAdapter.getNodeByItem(item) as Item;
496499

497500
// @ts-expect-error
498501
const index: number = $item.data(this._itemIndexKey());
@@ -536,7 +539,7 @@ class MenuBase extends HierarchicalCollectionWidget<Properties> {
536539
return;
537540
}
538541

539-
const node = this._dataAdapter.getNodeByItem(args.itemData);
542+
const node = this._dataAdapter.getNodeByItem(args.itemData) as Item;
540543

541544
if (node.internalFields.key === selectedIndex[0]) {
542545
$itemElement.addClass(this._selectedItemClass());
@@ -635,6 +638,7 @@ class MenuBase extends HierarchicalCollectionWidget<Properties> {
635638
const selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];
636639

637640
if (node && node.internalFields.key !== selectedKey) {
641+
// @ts-expect-error ts-error
638642
if (node.selectable === false) break;
639643

640644
if (selectedKey) {
@@ -699,7 +703,7 @@ class MenuBase extends HierarchicalCollectionWidget<Properties> {
699703
const itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;
700704
const selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];
701705
const selectedItem = this.option('selectedItem');
702-
const node = this._dataAdapter.getNodeByItem(itemData);
706+
const node = this._dataAdapter.getNodeByItem(itemData) as Item;
703707

704708
if (node.internalFields.key !== selectedKey) {
705709
if (selectedKey) {
@@ -713,7 +717,7 @@ class MenuBase extends HierarchicalCollectionWidget<Properties> {
713717

714718
unselectItem(itemElement: Element): void {
715719
const itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;
716-
const node = this._dataAdapter.getNodeByItem(itemData);
720+
const node = this._dataAdapter.getNodeByItem(itemData) as Item;
717721
const selectedItem = this.option('selectedItem');
718722

719723
if (node.internalFields.selected) {

0 commit comments

Comments
 (0)