Skip to content

Commit b7e8868

Browse files
fix(menu): submenu flickering issue
1 parent 2eb6d1d commit b7e8868

File tree

4 files changed

+39
-22
lines changed

4 files changed

+39
-22
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"@ng-icons/lucide": "^31.4.0",
3131
"@tailwindcss/postcss": "^4.0.15",
3232
"express": "^4.18.2",
33-
"ng-primitives": "^0.46.0",
33+
"ng-primitives": "^0.47.0",
3434
"ngx-highlightjs": "^14.0.0",
3535
"postcss": "^8.5.3",
3636
"rxjs": "~7.8.0",

projects/core/src/lib/menu.ts

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { computed, Directive, effect, input, TemplateRef } from '@angular/core';
1+
import { computed, Directive, input } from '@angular/core';
22
import { NgpMenu, NgpMenuItem, NgpMenuTrigger, NgpSubmenuTrigger } from "ng-primitives/menu";
33
import { NgpSeparator } from 'ng-primitives/separator';
44
import { tv } from 'tailwind-variants';
@@ -33,12 +33,36 @@ export class UiMenu {
3333
exportAs: 'uiMenuTrigger',
3434
hostDirectives: [{
3535
directive: NgpMenuTrigger,
36-
inputs: ['ngpMenuTrigger: uiMenuTrigger']
36+
inputs: [
37+
'ngpMenuTrigger: uiMenuTrigger',
38+
'ngpMenuTriggerDisabled: uiMenuTriggerDisabled',
39+
'ngpMenuTriggerPlacement: uiMenuTriggerPlacement',
40+
'ngpMenuTriggerOffset: uiMenuTriggerOffset',
41+
'ngpMenuTriggerFlip: uiMenuTriggerFlip',
42+
'ngpMenuTriggerContainer: uiMenuTriggerContainer',
43+
'ngpMenuTriggerScrollBehavior: uiMenuTriggerScrollBehavior',
44+
'ngpMenuTriggerContext: uiMenuTriggerContext'
45+
]
3746
}],
3847
})
3948
export class UiMenuTrigger {
4049
}
4150

51+
@Directive({
52+
selector: '[uiMenuItem]',
53+
exportAs: 'uiMenuItem',
54+
hostDirectives: [{
55+
directive: NgpMenuItem
56+
}],
57+
host: {
58+
'[class]': 'computedClass()'
59+
}
60+
})
61+
export class UiMenuItem {
62+
inputClass = input<string>('', { alias: 'class' });
63+
computedClass = computed(() => itemVariant({ class: this.inputClass() }));
64+
}
65+
4266
@Directive({
4367
selector: '[uiMenuShortcut]',
4468
exportAs: 'uiMenuShortcut',
@@ -76,25 +100,18 @@ export class UiMenuLabel {
76100
computedClass = computed(() => labelVariant({ class: this.inputClass() }));
77101
}
78102

79-
@Directive({
80-
selector: '[uiMenuItem]',
81-
exportAs: 'uiMenuItem',
82-
hostDirectives: [NgpMenuItem],
83-
host: {
84-
'[class]': 'computedClass()'
85-
}
86-
})
87-
export class UiMenuItem {
88-
inputClass = input<string>('', { alias: 'class' });
89-
computedClass = computed(() => itemVariant({ class: this.inputClass() }));
90-
}
91-
92103
@Directive({
93104
selector: '[uiSubmenuTrigger]',
94105
exportAs: 'uiSubmenuTrigger',
95106
hostDirectives: [{
96107
directive: NgpSubmenuTrigger,
97-
inputs: ['ngpSubmenuTrigger: uiSubmenuTrigger']
108+
inputs: [
109+
'ngpSubmenuTrigger: uiSubmenuTrigger',
110+
'ngpSubmenuTriggerDisabled: uiSubmenuTriggerDisabled',
111+
'ngpSubmenuTriggerPlacement: uiSubmenuTriggerPlacement',
112+
'ngpSubmenuTriggerOffset: uiSubmenuTriggerOffset',
113+
'ngpSubmenuTriggerFlip: uiSubmenuTriggerFlip'
114+
]
98115
}],
99116
})
100117
export class UiSubmenuTrigger {

projects/docs/src/app/pages/docs/components/dropdown-menu/dropdown-menu.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ <h1 class="text-2xl font-semibold">Dropdown Menu</h1>
2323
<div uiMenuSeparator></div>
2424
<button uiMenuItem>Github</button>
2525
<button uiMenuItem>Support</button>
26-
<button uiMenuItem disabled>API</button>
26+
<button uiMenuItem>API</button>
2727
<div uiMenuSeparator></div>
2828
<button uiMenuItem>Logout <div uiMenuShortcut>⇧⌘Q</div></button>
2929
</div>

0 commit comments

Comments
 (0)