Skip to content

Commit f22e10f

Browse files
committed
Merge branch 'feat/angular-20'
2 parents ac7445b + bb2bd02 commit f22e10f

37 files changed

+4490
-4196
lines changed

.eslintrc.json

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
{
22
"root": true,
3-
"ignorePatterns": ["**/*"],
4-
"plugins": ["@nx"],
3+
"ignorePatterns": [
4+
"**/*"
5+
],
6+
"plugins": [
7+
"@nx"
8+
],
59
"overrides": [
610
{
7-
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
11+
"files": [
12+
"*.ts",
13+
"*.tsx",
14+
"*.js",
15+
"*.jsx"
16+
],
817
"rules": {
918
"@nx/enforce-module-boundaries": [
1019
"error",
@@ -14,29 +23,49 @@
1423
"depConstraints": [
1524
{
1625
"sourceTag": "*",
17-
"onlyDependOnLibsWithTags": ["*"]
26+
"onlyDependOnLibsWithTags": [
27+
"*"
28+
]
1829
}
1930
]
2031
}
2132
]
2233
}
2334
},
2435
{
25-
"files": ["*.ts", "*.tsx"],
26-
"extends": ["plugin:@nx/typescript"],
36+
"files": [
37+
"*.ts",
38+
"*.tsx"
39+
],
40+
"extends": [
41+
"plugin:@nx/typescript"
42+
],
2743
"rules": {}
2844
},
2945
{
30-
"files": ["*.js", "*.jsx"],
31-
"extends": ["plugin:@nx/javascript"],
46+
"files": [
47+
"*.js",
48+
"*.jsx"
49+
],
50+
"extends": [
51+
"plugin:@nx/javascript"
52+
],
3253
"rules": {}
3354
},
3455
{
35-
"files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
56+
"files": [
57+
"*.spec.ts",
58+
"*.spec.tsx",
59+
"*.spec.js",
60+
"*.spec.jsx"
61+
],
3662
"env": {
3763
"jest": true
3864
},
3965
"rules": {}
4066
}
67+
],
68+
"extends": [
69+
"plugin:storybook/recommended"
4170
]
42-
}
71+
}

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
---
22
name: Bug report
33
about: Create a report to help us improve
4-
54
---
65

76
**Describe the bug**
87
A clear and concise description of what the bug is.
98

109
**To Reproduce**
1110
Steps to reproduce the behavior:
11+
1212
1. Go to '...'
1313
2. Click on '....'
1414
3. Scroll down to '....'

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,5 @@ Thumbs.db
4343

4444
.nx/cache
4545
.nx/workspace-data
46+
.cursor/rules/nx-rules.mdc
47+
.github/instructions/nx.instructions.md

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## [Unreleased]
44

5+
### BREAKING CHANGES
6+
7+
- **Dependency**: Require Angular 20
8+
59
## [19.0.0] - 2024-12-11
610

711
### BREAKING CHANGES

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ A context menu component for Angular.
99
Documentation and demos https://perfectmemory.github.io/ngx-contextmenu/
1010

1111
[![Contextmenu Screenshot](./libs/ngx-contextmenu/src/stories/assets/contextmenu.png)](https://perfectmemory.github.io/ngx-contextmenu/)
12+
1213
## Features
1314

1415
- [x] Context menu triggered by right click or keyboard context menu key

apps/demo/project.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@
5959
"buildTarget": "demo:build:development"
6060
}
6161
},
62-
"defaultConfiguration": "development"
62+
"defaultConfiguration": "development",
63+
"continuous": true
6364
},
6465
"extract-i18n": {
6566
"executor": "@angular-devkit/build-angular:extract-i18n",
Lines changed: 62 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,27 @@
1+
@if (!disabled) {
12
<span
2-
*ngIf="!disabled; else disabledTemplate"
33
class="ngx-context-menu-focusable"
44
#ngxContextMenu="ngxContextMenu"
55
[contextMenu]="contextMenu"
66
[contextMenuValue]="value"
77
>
8-
<ng-container *ngIf="demoMode === 'simple'">
9-
When you right click on this text, a context menu will appear
10-
</ng-container>
11-
<ng-container *ngIf="demoMode === 'form'">
12-
When you right click on this text, a context menu with form inputs will
13-
appear
14-
</ng-container>
15-
<span *ngIf="dir === 'rtl'"> in the right to left direction</span>
8+
@if (demoMode === 'simple') { When you right click on this text, a context
9+
menu will appear } @if (demoMode === 'form') { When you right click on this
10+
text, a context menu with form inputs will appear } @if (dir === 'rtl') {
11+
<span> in the right to left direction</span>
12+
}
1613
<span>(is menu opened ? ) {{ ngxContextMenu.isOpen ? 'yes' : 'no' }}</span>
1714
</span>
18-
19-
<ng-template #disabledTemplate>
20-
<span
21-
class="ngx-context-menu-focusable"
22-
[contextMenu]="contextMenu"
23-
[contextMenuValue]="value"
24-
>
25-
When you right click on this text, no context menu will appear because it is
26-
disabled
27-
</span>
28-
</ng-template>
15+
} @else {
16+
<span
17+
class="ngx-context-menu-focusable"
18+
[contextMenu]="contextMenu"
19+
[contextMenuValue]="value"
20+
>
21+
When you right click on this text, no context menu will appear because it is
22+
disabled
23+
</span>
24+
}
2925

3026
<context-menu
3127
#contextMenu
@@ -38,72 +34,65 @@
3834
<ng-template contextMenuItem [passive]="true"
3935
><span class="menu-item-title">Context menu title</span></ng-template
4036
>
41-
<ng-template
42-
*ngIf="demoMode === 'simple'"
43-
contextMenuItem
44-
(execute)="execute('Cut', $event)"
45-
let-value
37+
@if (demoMode === 'simple'; as value) {
38+
<ng-template contextMenuItem (execute)="execute('Cut', $event)" let-value
4639
>Cut "{{ value }}"</ng-template
4740
>
48-
<ng-template
49-
*ngIf="demoMode === 'simple'"
50-
contextMenuItem
51-
(execute)="execute('Copy', $event)"
52-
let-value
41+
} @if (demoMode === 'simple'; as value) {
42+
<ng-template contextMenuItem (execute)="execute('Copy', $event)" let-value
5343
>Copy "{{ value }}"</ng-template
5444
>
55-
<ng-template
56-
*ngIf="demoMode === 'simple'"
57-
contextMenuItem
58-
(execute)="execute('Paste', $event)"
59-
let-value
45+
} @if (demoMode === 'simple'; as value) {
46+
<ng-template contextMenuItem (execute)="execute('Paste', $event)" let-value
6047
>Paste "{{ value }}"</ng-template
6148
>
62-
<ng-template *ngIf="demoMode === 'simple'" contextMenuItem [disabled]="true"
49+
} @if (demoMode === 'simple') {
50+
<ng-template contextMenuItem [disabled]="true"
6351
>Disabled menu item</ng-template
6452
>
65-
<ng-template
66-
*ngIf="demoMode === 'simple'"
67-
contextMenuItem
68-
[divider]="true"
69-
></ng-template>
70-
<ng-template
71-
*ngIf="demoMode === 'simple'"
72-
contextMenuItem
73-
[subMenu]="specialPast"
53+
} @if (demoMode === 'simple') {
54+
<ng-template contextMenuItem [divider]="true"></ng-template>
55+
} @if (demoMode === 'simple') {
56+
<ng-template contextMenuItem [subMenu]="specialPast"
7457
>Special pastes...</ng-template
7558
>
76-
77-
<ng-template *ngIf="demoMode === 'form'" contextMenuItem [passive]="true"
59+
} @if (demoMode === 'form') {
60+
<ng-template contextMenuItem [passive]="true"
7861
><label
7962
><input type="checkbox" value="Choice A" /> <span>Choice A</span></label
8063
></ng-template
8164
>
82-
<ng-template *ngIf="demoMode === 'form'" contextMenuItem [passive]="true"
65+
} @if (demoMode === 'form') {
66+
<ng-template contextMenuItem [passive]="true"
8367
><label
8468
><input type="checkbox" value="Choice B" /> <span>Choice B</span></label
8569
></ng-template
8670
>
87-
<ng-template *ngIf="demoMode === 'form'" contextMenuItem [passive]="true"
71+
} @if (demoMode === 'form') {
72+
<ng-template contextMenuItem [passive]="true"
8873
><label
8974
><input type="checkbox" value="Choice C" /> <span>Choice C</span></label
9075
></ng-template
9176
>
92-
<ng-template *ngIf="demoMode === 'form'" contextMenuItem [passive]="true"
77+
} @if (demoMode === 'form') {
78+
<ng-template contextMenuItem [passive]="true"
9379
><label
9480
><input type="checkbox" value="Choice D" /> <span>Choice D</span></label
9581
></ng-template
9682
>
97-
<ng-template *ngIf="demoMode === 'form'" contextMenuItem [passive]="true"
83+
} @if (demoMode === 'form') {
84+
<ng-template contextMenuItem [passive]="true"
9885
><label
9986
><input type="checkbox" value="Choice E" /> <span>Choice E</span></label
10087
></ng-template
10188
>
102-
<ng-template *ngIf="demoMode === 'form'" contextMenuItem [passive]="true"
89+
} @if (demoMode === 'form') {
90+
<ng-template contextMenuItem [passive]="true"
10391
><label
10492
><input type="checkbox" value="Choice E" /> <span>Choice E</span></label
10593
></ng-template
10694
>
95+
}
10796
</context-menu>
10897
<context-menu #specialPast>
10998
<ng-template contextMenuItem (execute)="execute('Paste as HTML', $event)"
@@ -112,37 +101,43 @@
112101
<ng-template contextMenuItem (execute)="execute('Paste unformatted', $event)"
113102
>Paste unformatted</ng-template
114103
>
115-
<ng-template
116-
contextMenuItem
117-
[subMenu]="subSubMenu1"
104+
<ng-template contextMenuItem [subMenu]="subSubMenu1"
118105
>Sub sub menu 1...</ng-template
119106
>
120-
<ng-template
121-
contextMenuItem
122-
[subMenu]="subSubMenu2"
107+
<ng-template contextMenuItem [subMenu]="subSubMenu2"
123108
>Sub sub menu 2...</ng-template
124109
>
125110
</context-menu>
126111
<context-menu #subSubMenu1>
127-
<ng-template contextMenuItem (execute)="execute('Sub sub menu item 1', $event)"
112+
<ng-template
113+
contextMenuItem
114+
(execute)="execute('Sub sub menu item 1', $event)"
128115
>Sub sub menu item 1 - A</ng-template
129116
>
130-
<ng-template contextMenuItem (execute)="execute('Sub sub menu item 2', $event)"
117+
<ng-template
118+
contextMenuItem
119+
(execute)="execute('Sub sub menu item 2', $event)"
131120
>Sub sub menu item 1 - B</ng-template
132121
>
133122
</context-menu>
134123
<context-menu #subSubMenu2>
135-
<ng-template contextMenuItem (execute)="execute('Sub sub menu item 1', $event)"
124+
<ng-template
125+
contextMenuItem
126+
(execute)="execute('Sub sub menu item 1', $event)"
136127
>Sub sub menu item 2 - A</ng-template
137128
>
138-
<ng-template contextMenuItem (execute)="execute('Sub sub menu item 2', $event)"
129+
<ng-template
130+
contextMenuItem
131+
(execute)="execute('Sub sub menu item 2', $event)"
139132
>Sub sub menu item 2 - B</ng-template
140133
>
141134
</context-menu>
142-
<br>
143-
<br>
144-
<br>
145-
<br>
146-
<button class="button" *ngIf="programmaticOpen" (click)="contextMenuDirective?.open($event)">
135+
<br />
136+
<br />
137+
<br />
138+
<br />
139+
@if (programmaticOpen) {
140+
<button class="button" (click)="contextMenuDirective?.open($event)">
147141
Click here to show the context menu normally attached to the text above
148142
</button>
143+
}

apps/demo/src/app-demo/app-demo.component.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import {
1111
} from '@perfectmemory/ngx-contextmenu';
1212

1313
@Component({
14-
selector: 'app-demo-context-menu',
15-
styles: [
16-
`
14+
selector: 'app-demo-context-menu',
15+
styles: [
16+
`
1717
.dashboardContainer {
1818
width: 100%;
1919
height: 100%;
@@ -32,9 +32,9 @@ import {
3232
position: absolute;
3333
}
3434
`,
35-
],
36-
templateUrl: './app-demo.component.html',
37-
standalone: false
35+
],
36+
templateUrl: './app-demo.component.html',
37+
standalone: false,
3838
})
3939
export class AppDemoComponent {
4040
@Input()

apps/demo/src/app/app.component.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import {
1111
} from '@perfectmemory/ngx-contextmenu';
1212

1313
@Component({
14-
selector: 'demo-context-menu-demo',
15-
styles: [
16-
`
14+
selector: 'demo-context-menu-demo',
15+
styles: [
16+
`
1717
.dashboardContainer {
1818
width: 100%;
1919
height: 100%;
@@ -32,9 +32,9 @@ import {
3232
position: absolute;
3333
}
3434
`,
35-
],
36-
templateUrl: './app.component.html',
37-
standalone: false
35+
],
36+
templateUrl: './app.component.html',
37+
standalone: false,
3838
})
3939
export class AppComponent {
4040
@Input()

0 commit comments

Comments
 (0)