|
251 | 251 | {link.title} |
252 | 252 | </a> |
253 | 253 | {/each} |
254 | | - <select |
255 | | - class="language-select minecraft-button" |
256 | | - aria-label="Language" |
257 | | - value={lang} |
258 | | - onchange={switchLanguage} |
259 | | - > |
260 | | - {#each SUPPORTED_LANGUAGES as option} |
261 | | - <option value={option} lang={option}>{getLanguageName(option)}</option> |
262 | | - {/each} |
263 | | - </select> |
| 254 | + <!-- A select can't show an icon, so an invisible one covers this button --> |
| 255 | + <label class="language-select minecraft-button"> |
| 256 | + <MinecraftIcon path="icons/current/lang_file.svg" /> |
| 257 | + {getLanguageName(lang)} |
| 258 | + <select aria-label="Language" value={lang} onchange={switchLanguage}> |
| 259 | + {#each SUPPORTED_LANGUAGES as option} |
| 260 | + <option value={option} lang={option}>{getLanguageName(option)}</option> |
| 261 | + {/each} |
| 262 | + </select> |
| 263 | + </label> |
264 | 264 | </nav> |
265 | 265 | </header> |
266 | 266 |
|
|
410 | 410 | } |
411 | 411 |
|
412 | 412 | .language-select { |
| 413 | + position: relative; |
413 | 414 | font-family: var(--minecraft-font); |
414 | 415 | font-size: var(--font-size-small); |
415 | 416 | color: var(--minecraft-button-text-color); |
416 | 417 | cursor: pointer; |
417 | 418 | } |
418 | 419 |
|
| 420 | + .language-select select { |
| 421 | + position: absolute; |
| 422 | + inset: 0; |
| 423 | + width: 100%; |
| 424 | + height: 100%; |
| 425 | + opacity: 0; |
| 426 | + cursor: pointer; |
| 427 | + } |
| 428 | +
|
| 429 | + .language-select:focus-within { |
| 430 | + outline: 2px solid #00aced; |
| 431 | + outline-offset: 2px; |
| 432 | + } |
| 433 | +
|
419 | 434 | .docs-nav-toggle { |
420 | 435 | display: none; |
421 | 436 | font-family: var(--minecraft-font); |
|
646 | 661 | } |
647 | 662 |
|
648 | 663 | .docs-nav.open { |
| 664 | + display: grid; |
| 665 | + /* At most 5 columns, one per item, so wide menus have no empty cells */ |
| 666 | + grid-template-columns: repeat( |
| 667 | + auto-fill, |
| 668 | + minmax(max(140px, calc((100% - 48px) / 5)), 1fr) |
| 669 | + ); |
| 670 | + } |
| 671 | +
|
| 672 | + .docs-nav.open a, |
| 673 | + .docs-nav.open .language-select { |
649 | 674 | display: flex; |
| 675 | + flex-direction: column; |
| 676 | + align-items: center; |
| 677 | + justify-content: center; |
| 678 | + gap: 6px; |
| 679 | + margin: 0; |
| 680 | + padding-inline: 8px; |
| 681 | + white-space: nowrap; |
650 | 682 | } |
651 | 683 |
|
652 | | - .docs-nav.open { |
653 | | - display: grid; |
654 | | - grid-template-columns: 1fr; |
| 684 | + .docs-nav.open a :global(i), |
| 685 | + .docs-nav.open .language-select :global(i) { |
| 686 | + display: flex; |
| 687 | + align-items: center; |
| 688 | + height: 32px; |
| 689 | + margin: 0; |
| 690 | + } |
| 691 | +
|
| 692 | + /* The pressed button is shorter, so sink it to the row's bottom edge like the desktop header */ |
| 693 | + .docs-nav.open a.active { |
| 694 | + align-self: end; |
| 695 | + } |
| 696 | +
|
| 697 | + .docs-nav.open a.active::after { |
| 698 | + display: none; |
655 | 699 | } |
656 | 700 |
|
657 | 701 | .docs-header { |
|
0 commit comments