diff --git a/projects/components/src/menu-dropdown/menu-item/menu-item.component.scss b/projects/components/src/menu-dropdown/menu-item/menu-item.component.scss
index 7dc178294..3a0d0a341 100644
--- a/projects/components/src/menu-dropdown/menu-item/menu-item.component.scss
+++ b/projects/components/src/menu-dropdown/menu-item/menu-item.component.scss
@@ -2,4 +2,9 @@
.menu-item {
@include popover-menu-item;
+
+ &.disabled {
+ opacity: 0.4;
+ cursor: not-allowed;
+ }
}
diff --git a/projects/components/src/menu-dropdown/menu-item/menu-item.component.test.ts b/projects/components/src/menu-dropdown/menu-item/menu-item.component.test.ts
index 651d2a019..92ef2c7e6 100644
--- a/projects/components/src/menu-dropdown/menu-item/menu-item.component.test.ts
+++ b/projects/components/src/menu-dropdown/menu-item/menu-item.component.test.ts
@@ -27,4 +27,24 @@ describe('Menu Item Component', () => {
expect(spectator.query(IconComponent)?.icon).toBe(IconType.MoreHorizontal);
expect(spectator.query(IconComponent)?.color).toBe(Color.Gray1);
}));
+
+ test('should disable menu item as expected', fakeAsync(() => {
+ const spectator = createHost(
+ '',
+ {
+ hostProps: {
+ icon: IconType.MoreHorizontal,
+ label: 'Item',
+ iconColor: Color.Gray1,
+ disabled: true
+ }
+ }
+ );
+ expect(spectator.query('.menu-item')).toExist();
+ expect(spectator.query('.icon')).toExist();
+ expect(spectator.query('.label')).toHaveText('Item');
+ expect(spectator.query(IconComponent)?.icon).toBe(IconType.MoreHorizontal);
+ expect(spectator.query(IconComponent)?.color).toBe(Color.Gray1);
+ expect(spectator.query('.menu-item')?.classList.contains('disabled')).toBe(true);
+ }));
});
diff --git a/projects/components/src/menu-dropdown/menu-item/menu-item.component.ts b/projects/components/src/menu-dropdown/menu-item/menu-item.component.ts
index 66fd011c2..e905952cc 100644
--- a/projects/components/src/menu-dropdown/menu-item/menu-item.component.ts
+++ b/projects/components/src/menu-dropdown/menu-item/menu-item.component.ts
@@ -6,16 +6,18 @@ import { IconSize } from '../../icon/icon-size';
selector: 'ht-menu-item',
changeDetection: ChangeDetectionStrategy.OnPush,
styleUrls: ['./menu-item.component.scss'],
- template: `
`
+ template: ``
})
export class MenuItemComponent {
@Input()
@@ -26,4 +28,11 @@ export class MenuItemComponent {
@Input()
public iconColor?: string;
+
+ @Input()
+ public disabled?: boolean;
+
+ public getStyleClasses(): string[] {
+ return this.disabled ? ['disabled'] : [];
+ }
}