Skip to content

Commit d4000a8

Browse files
authored
Merge pull request #3020 from eduardmarcinco/issue/2726
fix: breadcrumb overflow menu icon alignment
2 parents ec69414 + a57fbe0 commit d4000a8

File tree

5 files changed

+65
-23
lines changed

5 files changed

+65
-23
lines changed

src/breadcrumb/breadcrumb.component.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,14 @@ const MINIMUM_OVERFLOW_THRESHOLD = 4;
7171
</ng-template>
7272
</cds-breadcrumb-item>
7373
<cds-breadcrumb-item>
74-
<cds-overflow-menu>
74+
<ng-template #overflowMenuTrigger>
75+
<svg class="cds--overflow-menu__icon" cdsIcon="overflow-menu--horizontal" size="16"></svg>
76+
</ng-template>
77+
<cds-overflow-menu
78+
[customTrigger]="overflowMenuTrigger"
79+
triggerClass="cds--btn--icon-only"
80+
[description]="description"
81+
[autoAlign]="autoAlign">
7582
<li class="cds--overflow-menu-options__option"
7683
*ngFor="let item of overflowItems">
7784
<a class="cds--overflow-menu-options__btn"
@@ -150,6 +157,12 @@ export class Breadcrumb implements AfterContentInit {
150157
return this._threshold;
151158
}
152159

160+
/**
161+
* **Experimental**: Auto align menu tooltip position
162+
*/
163+
@Input() autoAlign = false;
164+
@Input() description: string = this.i18n.get().BREADCRUMB.OVERFLOW_MENU_DESCRIPTION;
165+
153166
/**
154167
* Emits the navigation status promise when the link is activated
155168
*/

src/breadcrumb/breadcrumb.module.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import { I18nModule } from "carbon-components-angular/i18n";
66

77
import { Breadcrumb } from "./breadcrumb.component";
88
import { BreadcrumbItemComponent } from "./breadcrumb-item.component";
9+
import { ButtonModule } from "carbon-components-angular/button";
10+
import { IconModule } from "carbon-components-angular/icon";
911

1012
@NgModule({
1113
declarations: [
@@ -18,8 +20,10 @@ import { BreadcrumbItemComponent } from "./breadcrumb-item.component";
1820
],
1921
imports: [
2022
CommonModule,
23+
ButtonModule,
2124
DialogModule,
22-
I18nModule
25+
I18nModule,
26+
IconModule
2327
]
2428
})
2529
export class BreadcrumbModule { }

src/dialog/dialog.module.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import { PlaceholderModule } from "carbon-components-angular/placeholder";
1717
import { ExperimentalModule } from "carbon-components-angular/experimental";
1818
import { UtilsModule } from "carbon-components-angular/utils";
1919
import { IconModule } from "carbon-components-angular/icon";
20+
import { ButtonModule } from "carbon-components-angular/button";
21+
import { TooltipModule } from "carbon-components-angular/tooltip";
2022

2123
@NgModule({
2224
declarations: [
@@ -44,7 +46,9 @@ import { IconModule } from "carbon-components-angular/icon";
4446
PlaceholderModule,
4547
ExperimentalModule,
4648
UtilsModule,
47-
IconModule
49+
IconModule,
50+
ButtonModule,
51+
TooltipModule
4852
]
4953
})
5054
export class DialogModule {}

src/dialog/overflow-menu/overflow-menu.component.ts

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
} from "@angular/core";
1111
import { I18n } from "carbon-components-angular/i18n";
1212
import { OverflowMenuDirective } from "./overflow-menu.directive";
13+
import { BaseIconButton } from "carbon-components-angular/button";
1314

1415
/**
1516
* The OverFlow menu component encapsulates the OverFlowMenu directive, and the menu iconography into one convienent component.
@@ -32,22 +33,36 @@ import { OverflowMenuDirective } from "./overflow-menu.directive";
3233
@Component({
3334
selector: "cds-overflow-menu, ibm-overflow-menu",
3435
template: `
35-
<button
36-
[cdsOverflowMenu]="options"
37-
[ngClass]="{'cds--overflow-menu--open': open}"
38-
class="cds--overflow-menu {{triggerClass}}"
39-
[attr.aria-label]="buttonLabel"
40-
[flip]="flip"
41-
[isOpen]="open"
42-
(isOpenChange)="handleOpenChange($event)"
43-
[offset]="offset"
44-
[wrapperClass]="wrapperClass"
45-
aria-haspopup="true"
46-
class="cds--overflow-menu"
47-
type="button"
48-
[placement]="placement">
49-
<ng-template *ngIf="customTrigger; else defaultIcon" [ngTemplateOutlet]="customTrigger"></ng-template>
50-
</button>
36+
<cds-tooltip
37+
class="cds--icon-tooltip"
38+
[description]="description"
39+
[caret]="caret"
40+
[dropShadow]="dropShadow"
41+
[highContrast]="highContrast"
42+
[isOpen]="isOpen"
43+
[align]="align"
44+
[autoAlign]="autoAlign"
45+
[enterDelayMs]="enterDelayMs"
46+
[leaveDelayMs]="leaveDelayMs">
47+
<button
48+
cdsButton="ghost"
49+
[cdsOverflowMenu]="options"
50+
[ngClass]="{'cds--overflow-menu--open': open}"
51+
class="cds--overflow-menu {{triggerClass}}"
52+
[iconOnly]="true"
53+
[attr.aria-label]="buttonLabel"
54+
[flip]="flip"
55+
[isOpen]="open"
56+
(isOpenChange)="handleOpenChange($event)"
57+
[offset]="offset"
58+
[wrapperClass]="wrapperClass"
59+
aria-haspopup="true"
60+
type="button"
61+
[placement]="placement">
62+
<ng-template *ngIf="customTrigger; else defaultIcon" [ngTemplateOutlet]="customTrigger"></ng-template>
63+
</button>
64+
</cds-tooltip>
65+
5166
<ng-template #options>
5267
<ng-content></ng-content>
5368
</ng-template>
@@ -74,9 +89,11 @@ import { OverflowMenuDirective } from "./overflow-menu.directive";
7489
`],
7590
encapsulation: ViewEncapsulation.None
7691
})
77-
export class OverflowMenu {
92+
export class OverflowMenu extends BaseIconButton {
7893
@Input() buttonLabel = this.i18n.get().OVERFLOW_MENU.OVERFLOW;
7994

95+
@Input() description = this.i18n.get().OVERFLOW_MENU.ICON_DESCRIPTION;
96+
8097
@Input() flip = false;
8198

8299
@Input() placement: "bottom" | "top" = "bottom";
@@ -103,7 +120,9 @@ export class OverflowMenu {
103120

104121
@ContentChild(OverflowMenuDirective) overflowMenuDirective: OverflowMenuDirective;
105122

106-
constructor(protected elementRef: ElementRef, protected i18n: I18n) {}
123+
constructor(protected elementRef: ElementRef, protected i18n: I18n) {
124+
super();
125+
}
107126

108127
handleOpenChange(event: boolean) {
109128
this.open = event;

src/i18n/en.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export default {
22
"BREADCRUMB": {
3-
"LABEL": "Breadcrumb"
3+
"LABEL": "Breadcrumb",
4+
"OVERFLOW_MENU_DESCRIPTION": "Options"
45
},
56
"CODE_SNIPPET": {
67
"CODE_SNIPPET_TEXT": "Code Snippet Text",
@@ -54,7 +55,8 @@ export default {
5455
"DECREMENT": "Decrement value"
5556
},
5657
"OVERFLOW_MENU": {
57-
"OVERFLOW": "Overflow"
58+
"OVERFLOW": "Overflow",
59+
"ICON_DESCRIPTION": "Options"
5860
},
5961
"SEARCH": {
6062
"LABEL": "Search",

0 commit comments

Comments
 (0)