UNPKG

11.9 kBtext/lessView Raw
1@import (reference) './imports/global';
2@import (reference) './imports/mixins/focus';
3
4/*! AUI Navigation */
5
6/* Nav defaults - put very little here!
7-------------------- */
8.aui-nav,
9.aui-nav > li {
10 list-style: none;
11 margin: 0;
12 padding: 0;
13}
14
15/* Horizontal, breadcrumbs and pagination are all horizontal */
16.aui-nav-breadcrumbs:after,
17.aui-nav-pagination:after,
18.aui-nav-horizontal:after,
19.aui-navgroup-horizontal .aui-nav:after,
20.aui-navgroup-horizontal .aui-navgroup-inner:after {
21 clear: both;
22 content: " ";
23 display: table;
24}
25.aui-nav-breadcrumbs > li,
26.aui-nav-pagination > li {
27 float: left;
28 & > a:focus {
29 #aui.with-focus-ring();
30 border-radius: 2px;
31 }
32}
33
34/* Navigation headings
35-------------------- */
36.aui-nav-heading {
37 #aui.typography.h100(@aui-nav-heading-text-color);
38 line-height: unit(20 / @aui-nav-heading-text-font-size);
39 padding: 0 @aui-nav-link-spacing-horizontal; // to match the nav-item layout.
40
41 & > strong {
42 font-size: inherit;
43 font-weight: inherit;
44 line-height: inherit;
45 }
46}
47
48/* Breadcrumb navigation
49-------------------- */
50.aui-nav-breadcrumbs > li {
51 padding: 0 @aui-grid 0 0;
52}
53
54.aui-nav-breadcrumbs > li + li:before {
55 color: var(--aui-border-strong);
56 content: "/";
57 padding-right: @aui-grid;
58}
59
60/* Pagination
61-------------------- */
62.aui-nav-pagination {
63 margin: @aui-grid 0 0 0;
64}
65.aui-nav-pagination > li {
66 padding: 0;
67}
68/* Need padding on the A elements for big click areas.
69 Set equal left/right to help align the inline dialog on truncation. */
70.aui-nav-pagination > li > a {
71 padding: @aui-grid @aui-grid 0 @aui-grid;
72}
73/* Don't set top/bottom as that throws non-linked items out of whack. */
74.aui-nav-pagination > li.aui-nav-selected,
75.aui-nav-pagination > li.aui-nav-truncation {
76 padding-left: @aui-grid;
77 padding-right: @aui-grid;
78}
79.aui-nav-pagination .aui-nav-truncation > a {
80 padding-left: 0;
81 padding-right: 0;
82}
83/* Remove whitespace from first and last child */
84.aui-nav-pagination > li:first-child > a,
85.aui-nav-pagination > li.aui-nav-truncation:first-child,
86.aui-nav-pagination > li.aui-nav-selected:first-child {
87 padding-left: 0;
88}
89.aui-nav-pagination > li:last-child > a,
90.aui-nav-pagination > li.aui-nav-truncation:last-child,
91.aui-nav-pagination > li.aui-nav-selected:last-child {
92 padding-right: 0;
93}
94
95.aui-nav-pagination a[aria-disabled="true"],
96.aui-nav-pagination a[aria-disabled="true"]:link,
97.aui-nav-pagination a[aria-disabled="true"]:visited,
98.aui-nav-pagination a[aria-disabled="true"]:focus,
99.aui-nav-pagination a[aria-disabled="true"]:hover,
100.aui-nav-pagination a[aria-disabled="true"]:active {
101 color: @aui-nav-pagination-active-text-color;
102 text-decoration: none;
103}
104
105.aui-nav-pagination > li.aui-nav-selected {
106 color: @aui-nav-pagination-text-color;
107 font-weight: @aui-font-weight-semibold;
108}
109
110/* Vertical Navigation
111-------------------- */
112
113/** by AUI-5164:
114 * The following CSS has been adjusted to allow generic content as a direct ancestor of the nav list
115 * basic styling (default and active state) is applied to the list element itself
116 * interactive styling (hover, active, focus) is applied to the assumed interactive element (<a>)
117 * thanks to this - we can fill in the nav list with non-interactive elements without generating visual glitches.
118 */
119.aui-navgroup-vertical .aui-nav > li,
120.aui-nav-vertical > li {
121 #aui-nav.item-base();
122 overflow-wrap: break-word;
123 #aui-nav.item-style(normal, true);
124
125 & > a {
126 #aui-nav.item-base();
127 #aui-nav.item-base-inner-link();
128 #aui-nav.item-style(normal);
129
130 &:hover {
131 #aui-nav.item-style(hover);
132 }
133
134 &:active {
135 #aui-nav.item-style(active);
136 }
137
138 &:focus {
139 #aui.with-focus-ring();
140 text-decoration: none;
141 }
142 }
143}
144
145.aui-navgroup-vertical .aui-nav .aui-nav-selected,
146.aui-nav-vertical .aui-nav .aui-nav-selected {
147 #aui-nav.item-style(selected);
148}
149
150.aui-navgroup-vertical .aui-nav,
151.aui-navgroup-vertical .aui-nav-heading {
152 margin: 0;
153}
154
155.aui-navgroup-vertical .aui-nav + .aui-nav {
156 // If a sequential group does not have a heading, add a divider between them.
157 margin-top: @aui-grid;
158 padding-top: @aui-grid;
159 border-top: 1px solid @aui-nav-group-divider-color;
160}
161
162.aui-navgroup-vertical .aui-nav + .aui-nav-heading {
163 // If a sequential group *does* have a heading, don't add a divider, but space it out a little bit more.
164 margin-top: @aui-grid * 2;
165}
166
167.aui-navgroup-vertical .aui-nav:first-child,
168.aui-navgroup-vertical .aui-navgroup-inner > .aui-nav-heading:first-child,
169.aui-navgroup-vertical .aui-navgroup-primary > .aui-nav-heading:first-child {
170 margin-top: 0;
171 padding-top: 0;
172}
173
174/* nested vertical navigation menus
175----------------------------------- */
176.aui-navgroup-vertical .aui-nav {
177
178 // the sub-menu styles
179 .aui-nav {
180 margin-top: 0;
181 padding: 0 0 0 @aui-nav-subtree-toggle-icon-size;
182
183 > li {
184 position: relative;
185 }
186 }
187
188 // the twixi and submenu expansion/collapsing styles
189 > li[aria-expanded] {
190 position: relative;
191
192 .aui-nav-heading {
193 padding-left: 0;
194 }
195
196 .aui-nav-subtree-toggle {
197 // All of these calculations exist because of two problems with the markup pattern:
198 // (1) the subtree toggle sits outside and to the left of the aui-nav-item
199 // (2) the nested list sits inside the <li> adjacent to the sutree toggle and nav item.
200 // these both mean that using flexbox is... inadvisable.
201 @box-size: (@aui-nav-link-effective-height); // note: it is assumed, but not guaranteed, that the .aui-nav-item will be the same height.
202 -webkit-appearance: none;
203 background: transparent;
204 border: 0;
205 border-radius: @aui-border-radius-smallish;
206 box-sizing: border-box;
207 color: @aui-nav-subtree-toggle-icon-color;
208 left: 0;
209 margin: 0;
210 position: absolute;
211 padding: ((@aui-nav-subtree-toggle-icon-size - @aui-icon-size-small) / 2);
212 top: ((@box-size - @aui-nav-subtree-toggle-icon-size) / 2);
213 width: @aui-nav-subtree-toggle-icon-size;
214 outline-radius: @aui-border-radius-smallish;
215 z-index: 1; // because it needs to sit "above" the link it's for.
216
217 > .aui-icon {
218 display: block;
219 margin: 0 auto;
220 }
221
222 + .aui-nav-item {
223 padding-left: @aui-nav-subtree-toggle-icon-size + @aui-nav-link-spacing-horizontal;
224 }
225 }
226
227 li {
228 position: relative;
229 }
230
231 &[aria-expanded="false"] {
232 > * {
233 display: none;
234 }
235
236 > .aui-nav-subtree-toggle,
237 > .aui-nav-item {
238 display: inherit;
239 }
240 }
241 }
242}
243
244/* RHS actions dropdown
245------------------------ */
246
247.aui-navgroup-vertical .aui-nav .aui-nav-item-actions {
248 @actions-glyph-size: unit(@aui-icon-size-small * 0.75, px);
249 @actions-button-size: @aui-icon-size-small;
250 @aui-nav-item-actions-top-offset: ((@aui-nav-link-effective-height - @actions-button-size) / 2);
251 @aui-nav-item-actions-left-offset: 4px;
252 @aui-nav-item-actions-border-radius: 2px; // because it's a tiny button. 3px would probably work, though.
253
254 #aui-buttons.aui-subtle-button-style(normal);
255 border-radius: @aui-nav-item-actions-border-radius;
256 display: block;
257 height: @actions-button-size;
258 margin: 0;
259 overflow: hidden;
260 padding: 0;
261 position: absolute;
262 right: (@aui-grid / 2);
263 text-indent: -999em;
264 top: @aui-nav-item-actions-top-offset;
265 width: @actions-button-size;
266
267 &::after {
268 #aui.aui-dropdown2-trigger-chevron-icon(@actions-glyph-size, @actions-button-size);
269 content: @aui-glyph-more-actions;
270 }
271
272 &:hover,
273 &:focus {
274 #aui-buttons.aui-button-style(hover);
275 }
276
277 &:active {
278 #aui-buttons.aui-button-style(active);
279
280 &:after {
281 border-top-color: @aui-text-color;
282 }
283 }
284
285 &.active {
286 #aui-buttons.aui-button-style(selected);
287 }
288
289 ~ .aui-nav-item-label {
290 margin-right: (@aui-grid * 1.5);
291 }
292}
293
294
295/* Horizontal Navigation
296-------------------- */
297.aui-nav-horizontal,
298.aui-navgroup-horizontal .aui-nav {
299 display: flex;
300 flex-direction: row;
301
302 > li a {
303 padding-right: @aui-grid;
304 }
305}
306
307/* Horizontal Navgroup
308-------------------- */
309.aui-navgroup-horizontal {
310 #aui.horizontal-tab-indicator(@aui-tabs-tab-border-color, auto, 0);
311
312 // The base styles
313 margin: 0;
314 padding: 0;
315
316 .aui-navgroup-inner {
317 padding: 0 @aui-grid;
318 }
319
320 // Use flexbox to arrange all the innards of horizontal nav.
321 // The wrapping is a bit different to floated items, but hopefully in a good way.
322 .aui-navgroup-inner,
323 .aui-navgroup-primary,
324 .aui-navgroup-secondary,
325 .aui-nav {
326 display: flex;
327 flex-wrap: wrap;
328 }
329
330 .aui-navgroup-inner {
331 justify-content: space-between;
332 }
333
334 .aui-navgroup-primary {
335 flex-grow: 1;
336 order: 0;
337 }
338
339 .aui-navgroup-secondary {
340 order: 1;
341 }
342
343 /* Nav in a Navbar */
344 .aui-nav {
345 > li > a,
346 > li > span:not(.assistive) {
347 display: block;
348 margin: 0;
349 padding: (@aui-grid - 1) @aui-grid;
350 position: relative;
351
352 &,
353 &:link,
354 &:visited {
355 color: @aui-tabs-tab-text-color;
356 text-decoration: none;
357 }
358
359 &:focus,
360 &:hover {
361 color: @aui-tabs-tab-hover-text-color;
362 }
363
364 &:focus {
365 #aui.with-focus-ring();
366 border-radius: 2px;
367 z-index: 1;
368 }
369 }
370
371 > .aui-nav-selected > a,
372 > .aui-nav-selected > span:not(.assistive) {
373 #aui.horizontal-tab-indicator(@aui-tabs-tab-active-border-color, 1);
374 font-weight: @aui-font-weight-medium;
375
376 &,
377 &:link,
378 &:visited,
379 &.active {
380 color: @aui-tabs-tab-active-text-color;
381 }
382 }
383 }
384
385 /* Horizontal navgroup + Dropdown2 integration. Note: ADG prohibits dropdowns in vertical nav. */
386 .aui-dropdown2-trigger::after {
387 #aui.aui-dropdown2-trigger-chevron-icon();
388 }
389
390 /* Breadcrumbs in navbar */
391 .aui-nav-breadcrumbs > li,
392 .aui-nav-breadcrumbs > li:before {
393 padding: 0;
394 }
395
396 .aui-nav-breadcrumbs > li a {
397 display: inline-block;
398 }
399
400 /* Bulletproofing - headings shouldn't be here but will at least not look heinously broken. */
401 .aui-nav-heading {
402 padding: @aui-grid @aui-grid 0 @aui-grid; /* 0 bottom required to unfuck IE9 */
403 }
404}
405
406.aui-nav-actions-list {
407 font-size: 0;
408 list-style: none;
409 margin: @aui-nav-actions-list-margin-top 0 0 0;
410 padding: 0;
411
412 &:first-child {
413 margin-top: 0;
414 }
415
416 > li {
417 display: inline-block;
418 font-size: @aui-nav-actions-list-item-font-size;
419 margin-bottom: @aui-nav-actions-list-item-margin-bottom;
420
421 + li::before {
422 content: "";
423 border-radius: @aui-nav-actions-list-divider-size;
424 width: @aui-nav-actions-list-divider-size;
425 height: @aui-nav-actions-list-divider-size;
426 background-color: @aui-nav-actions-list-divider-color;
427 display: inline-block;
428 vertical-align: middle;
429 margin-left: @aui-nav-actions-list-divider-spacing;
430 margin-right: @aui-nav-actions-list-divider-spacing;
431 }
432 }
433}