@@ -3,6 +3,7 @@ import { customElement, property, state } from 'lit/decorators.js';
33import { classMap } from 'lit/directives/class-map.js' ;
44import './code-icon' ;
55import './overlays/tooltip' ;
6+ import { focusableBaseStyles } from './styles/lit/a11y.css' ;
67
78export type CollapsibleState = 'none' | 'collapsed' | 'expanded' ;
89
@@ -57,81 +58,90 @@ export class GlBreadcrumbs extends LitElement {
5758
5859@customElement ( 'gl-breadcrumb-item' )
5960export class GlBreadcrumbItem extends LitElement {
60- static override styles = css `
61- * {
62- box-sizing: border-box;
63- }
64-
65- :host {
66- display: flex;
67- flex-direction: row;
68- align-items: center;
69- gap: 0.4rem;
70- white-space: nowrap;
71- overflow: hidden;
72- min-width: 0;
73- flex-shrink: var(--gl-breadcrumb-item-shrink, 1);
74- }
75-
76- :host([icon]) {
77- min-width: calc(24px + 0.6rem);
78- }
79-
80- :host(:hover) {
81- flex-shrink: 0;
82- }
83-
84- .breadcrumb-item {
85- display: flex;
86- flex-direction: row;
87- align-items: center;
88- gap: 0.4rem;
89- white-space: nowrap;
90- overflow: hidden;
91- min-width: 0;
92- width: 100%;
93- }
94-
95- .breadcrumb-content {
96- display: inline-flex;
97- align-items: center;
98- gap: 0.6rem;
99- vertical-align: middle;
100- }
101-
102- .breadcrumb-icon {
103- flex-shrink: 0;
104- z-index: 2;
105- }
106-
107- .collapsible .breadcrumb-icon {
108- cursor: pointer;
109- }
110-
111- .breadcrumb-label {
112- display: inline-block;
113- overflow: hidden;
114- text-overflow: ellipsis;
115- white-space: nowrap;
116- max-width: 100vw;
117- transition: max-width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
118- }
119-
120- slot[name='children'] {
121- display: flex;
122- flex-direction: row;
123- align-items: center;
124- gap: 0.4rem;
125- overflow: hidden;
126- max-width: 100vw;
127- transition: max-width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
128- }
129-
130- :host([collapsed]) .breadcrumb-item:not(:hover) .breadcrumb-label,
131- :host([collapsed]) .breadcrumb-item:not(:hover) slot[name='children'] {
132- max-width: 0;
133- }
134- ` ;
61+ static override styles = [
62+ focusableBaseStyles ,
63+ css `
64+ * {
65+ box-sizing: border-box;
66+ }
67+
68+ :host {
69+ display: flex;
70+ flex-direction: row;
71+ align-items: center;
72+ gap: 0.4rem;
73+ white-space: nowrap;
74+ overflow: hidden;
75+ min-width: 0;
76+ flex-shrink: var(--gl-breadcrumb-item-shrink, 1);
77+ }
78+
79+ :host([icon]) {
80+ min-width: calc(24px + 0.6rem);
81+ }
82+
83+ :host(:hover) {
84+ flex-shrink: 0;
85+ }
86+
87+ .breadcrumb-item {
88+ display: flex;
89+ flex-direction: row;
90+ align-items: center;
91+ gap: 0.4rem;
92+ white-space: nowrap;
93+ overflow: hidden;
94+ min-width: 0;
95+ width: 100%;
96+ }
97+
98+ .breadcrumb-content {
99+ display: inline-flex;
100+ align-items: center;
101+ gap: 0.6rem;
102+ vertical-align: middle;
103+ }
104+
105+ .breadcrumb-icon {
106+ flex-shrink: 0;
107+ z-index: 2;
108+ }
109+
110+ .collapsible .breadcrumb-icon {
111+ cursor: pointer;
112+ }
113+
114+ .breadcrumb-label {
115+ display: inline-block;
116+ overflow: hidden;
117+ text-overflow: ellipsis;
118+ white-space: nowrap;
119+ max-width: 100vw;
120+ transition: max-width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
121+ }
122+
123+ .breadcrumb-tooltip {
124+ display: inline-flex;
125+ align-items: center;
126+ vertical-align: middle;
127+ }
128+
129+ slot[name='children'] {
130+ display: flex;
131+ flex-direction: row;
132+ align-items: center;
133+ gap: 0.4rem;
134+ overflow: hidden;
135+ max-width: 100vw;
136+ transition: max-width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
137+ }
138+
139+ :host([collapsed]) .breadcrumb-item:not(:hover) .breadcrumb-label,
140+ :host([collapsed]) .breadcrumb-item:not(:hover) slot[name='children'] {
141+ max-width: 0;
142+ }
143+ ` ,
144+ ] ;
135145
136146 @state ( )
137147 private _collapsed : boolean | undefined ;
@@ -182,19 +192,21 @@ export class GlBreadcrumbItem extends LitElement {
182192 < code-icon
183193 class ="breadcrumb-icon "
184194 icon ="${ this . icon } "
195+ tabindex ="0 "
185196 @click =${ collapsible ? this . onToggleCollapse : undefined }
186197 > </ code-icon >
187198 </ gl-tooltip >
188199 < gl-tooltip class ="breadcrumb-label " content ="${ this . tooltip } " placement ="bottom ">
189200 < span > < slot > </ slot > </ span >
190201 </ gl-tooltip >
191202 </ span > `
192- : html `< gl-tooltip content ="${ this . tooltip } " placement ="bottom ">
203+ : html `< gl-tooltip class =" breadcrumb-tooltip " content ="${ this . tooltip } " placement ="bottom ">
193204 < span class ="breadcrumb-content ">
194205 ${ this . icon
195206 ? html `< code-icon
196207 class ="breadcrumb-icon "
197208 icon ="${ this . icon } "
209+ tabindex ="0 "
198210 @click =${ collapsible ? this . onToggleCollapse : undefined }
199211 > </ code-icon > `
200212 : nothing }
0 commit comments