|
1 | 1 | import transitionDone from './misc/await-transition'
|
2 | 2 |
|
3 |
| -const header = document.querySelector('#header')! |
| 3 | +const header = document.querySelector('#header') |
4 | 4 | let counter = 0
|
5 | 5 |
|
6 |
| -header.querySelectorAll<HTMLElement>('.nav-toggle-menu').forEach((el) => |
| 6 | +header?.querySelectorAll<HTMLElement>('.nav-toggle-menu').forEach((el) => |
7 | 7 | el.addEventListener('click', async () => {
|
8 | 8 | const targetName = el.dataset.target
|
9 | 9 | if (targetName == null) return
|
@@ -93,11 +93,29 @@ function updateDropdowns(): void {
|
93 | 93 | window.addEventListener('resize', updateDropdowns)
|
94 | 94 | updateDropdowns()
|
95 | 95 |
|
96 |
| -const navSearch = header.querySelector<HTMLElement>('.nav-search')! |
| 96 | +const navSearch = header?.querySelector<HTMLElement>('.nav-search') |
97 | 97 | const searchUrls = [
|
98 |
| - ...navSearch.querySelector<HTMLSelectElement>('select')! |
| 98 | + ...(navSearch?.querySelector<HTMLSelectElement>('select') ?? []) |
99 | 99 | ].map((el) => el.value)
|
100 | 100 |
|
101 | 101 | if (searchUrls.includes(window.location.pathname)) {
|
102 |
| - navSearch.classList.add('nav-search-redundant') |
| 102 | + navSearch?.remove() |
| 103 | + document.querySelector('#menu-user-nav')?.classList.add('ms-md-auto') |
103 | 104 | }
|
| 105 | + |
| 106 | +const input = navSearch?.querySelector('input') |
| 107 | +const placeholder = input?.getAttribute('placeholder') ?? '' |
| 108 | +const isMac = navigator.userAgent.includes('Mac OS X') |
| 109 | +if (isMac) { |
| 110 | + // macOS |
| 111 | + input?.setAttribute('placeholder', `${placeholder} (⌘ + K)`) |
| 112 | +} else { |
| 113 | + input?.setAttribute('placeholder', `${placeholder} (Ctrl + K)`) |
| 114 | +} |
| 115 | + |
| 116 | +document.addEventListener('keydown', (e) => { |
| 117 | + if ((isMac ? e.metaKey : e.ctrlKey) && e.key === 'k') { |
| 118 | + e.preventDefault() |
| 119 | + input?.focus() |
| 120 | + } |
| 121 | +}) |
0 commit comments