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'] : []; + } }