Skip to content

Commit b90e869

Browse files
authored
Menu, ContextMenu: update Demos to use custom item types (#30874)
1 parent 52be080 commit b90e869

File tree

57 files changed

+372
-210
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+372
-210
lines changed

apps/demos/Demos/ContextMenu/Basics/Angular/app/app.component.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { NgModule, Component, enableProdMode } from '@angular/core';
22
import { BrowserModule } from '@angular/platform-browser';
33
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4+
45
import notify from 'devextreme/ui/notify';
5-
import { DxContextMenuModule, DxContextMenuTypes } from 'devextreme-angular/ui/context-menu';
6+
import { DxContextMenuModule, type DxContextMenuTypes } from 'devextreme-angular/ui/context-menu';
67

78
if (!document.location.host.includes('localhost')) {
89
enableProdMode();
@@ -14,13 +15,19 @@ if (window && window.config?.packageConfigPaths) {
1415
modulePrefix = '/app';
1516
}
1617

18+
class ContextMenuItem {
19+
text: string;
20+
21+
items?: ContextMenuItem[];
22+
}
23+
1724
@Component({
1825
selector: 'demo-app',
1926
templateUrl: `.${modulePrefix}/app.component.html`,
2027
styleUrls: [`.${modulePrefix}/app.component.css`],
2128
})
2229
export class AppComponent {
23-
items: Record<any, unknown>[];
30+
items: ContextMenuItem[];
2431

2532
constructor() {
2633
this.items = [{
@@ -35,7 +42,7 @@ export class AppComponent {
3542
];
3643
}
3744

38-
itemClick({ itemData }: DxContextMenuTypes.ItemClickEvent) {
45+
itemClick({ itemData }: DxContextMenuTypes.ItemClickEvent<ContextMenuItem>) {
3946
if (!itemData.items) {
4047
notify(`The "${itemData.text}" item was clicked`, 'success', 1500);
4148
}

apps/demos/Demos/ContextMenu/Basics/React/App.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import React, { useEffect } from 'react';
2-
import ContextMenu, { type ContextMenuTypes } from 'devextreme-react/context-menu';
2+
3+
import { ContextMenu, type ContextMenuTypes } from 'devextreme-react/context-menu';
34
import notify from 'devextreme/ui/notify';
5+
46
import { contextMenuItems as items } from './data.ts';
7+
import type { ContextMenuItem } from './types';
58

6-
function itemClick(e: ContextMenuTypes.ItemClickEvent) {
9+
function itemClick(e: ContextMenuTypes.ItemClickEvent<ContextMenuItem>) {
710
if (!e.itemData.items) {
811
notify(`The "${e.itemData.text}" item was clicked`, 'success', 1500);
912
}

apps/demos/Demos/ContextMenu/Basics/React/data.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export const contextMenuItems = [
1+
import type { ContextMenuItem } from './types';
2+
3+
export const contextMenuItems: ContextMenuItem[] = [
24
{
35
text: 'Share',
46
items: [
@@ -9,4 +11,3 @@ export const contextMenuItems = [
911
{ text: 'Comment' },
1012
{ text: 'Favorite' },
1113
];
12-
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface ContextMenuItem {
2+
text: string;
3+
items?: ContextMenuItem[]
4+
}

apps/demos/Demos/ContextMenu/Basics/ReactJs/App.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useEffect } from 'react';
2-
import ContextMenu from 'devextreme-react/context-menu';
2+
import { ContextMenu } from 'devextreme-react/context-menu';
33
import notify from 'devextreme/ui/notify';
44
import { contextMenuItems as items } from './data.js';
55

apps/demos/Demos/ContextMenu/Basics/Vue/App.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
</div>
1818
</template>
1919
<script setup lang="ts">
20-
import DxContextMenu, { type DxContextMenuTypes } from 'devextreme-vue/context-menu';
20+
import { DxContextMenu, type DxContextMenuTypes } from 'devextreme-vue/context-menu';
2121
import notify from 'devextreme/ui/notify';
2222
import { contextMenuItems as items } from './data.ts';
23+
import type { ContextMenuItem } from './types';
2324
24-
function itemClick({ itemData }: DxContextMenuTypes.ItemClickEvent) {
25+
function itemClick({ itemData }: DxContextMenuTypes.ItemClickEvent<ContextMenuItem>) {
2526
if (!itemData.items) {
2627
notify(`The "${itemData.text}" item was clicked`, 'success', 1500);
2728
}

apps/demos/Demos/ContextMenu/Basics/Vue/data.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export const contextMenuItems = [
1+
import type { ContextMenuItem } from './types';
2+
3+
export const contextMenuItems: ContextMenuItem[] = [
24
{
35
text: 'Share',
46
items: [
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface ContextMenuItem {
2+
text: string;
3+
items?: ContextMenuItem[]
4+
}

apps/demos/Demos/ContextMenu/Scrolling/Angular/app/app.component.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { NgModule, Component, enableProdMode } from '@angular/core';
22
import { BrowserModule } from '@angular/platform-browser';
33
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4+
45
import notify from 'devextreme/ui/notify'; // Import notify correctly
5-
import { DxContextMenuModule, DxContextMenuTypes } from 'devextreme-angular/ui/context-menu';
6-
import { ContextMenuItems, Service } from './app.service';
6+
import { DxContextMenuModule, type DxContextMenuTypes } from 'devextreme-angular/ui/context-menu';
7+
8+
import { Service, type ContextMenuItems } from './app.service';
79

810
if (!document.location.host.includes('localhost')) {
911
enableProdMode();
@@ -28,7 +30,7 @@ export class AppComponent {
2830
this.items = service.getMenuItems();
2931
}
3032

31-
itemClick({ itemData }: DxContextMenuTypes.ItemClickEvent) {
33+
itemClick({ itemData }: DxContextMenuTypes.ItemClickEvent<ContextMenuItems>) {
3234
if (!itemData.items) {
3335
notify(`The "${itemData.text}" item was clicked`, 'success', 1500);
3436
}

apps/demos/Demos/ContextMenu/Scrolling/React/App.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import React, { useEffect } from 'react';
2-
import ContextMenu, { type ContextMenuTypes } from 'devextreme-react/context-menu';
1+
import React from 'react';
2+
3+
import { ContextMenu, type ContextMenuTypes } from 'devextreme-react/context-menu';
34
import notify from 'devextreme/ui/notify';
5+
46
import { contextMenuItems as items } from './data.ts';
7+
import type { ContextMenuItem } from './types';
58

6-
function itemClick(e) {
9+
function itemClick(e: ContextMenuTypes.ItemClickEvent<ContextMenuItem>) {
710
if (!e.itemData.items) {
811
notify(`The "${e.itemData.text}" item was clicked`, 'success', 1500);
912
}

0 commit comments

Comments
 (0)