Skip to content

Commit b1d605b

Browse files
committed
Fix command-up
1 parent cdf4642 commit b1d605b

File tree

2 files changed

+31
-14
lines changed

2 files changed

+31
-14
lines changed

create-search-index.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,6 @@ function generateSearchIndex(version) {
9494
}
9595
};
9696

97-
var primaryKeywords = [];
98-
// TODO: collect and assign secondary keywords.
99-
var secondaryKeywords = [];
100-
10197
(protocol.domains).forEach(function (domain, idx) {
10298
var domainName = domain.domain;
10399
var domainPath = SITE_ROOT + version.slug + '/' + domainName + '/';

pages/scripts/index.js

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ class KeywordsModel {
1010
this.index = index;
1111
this.keys = Object.keys(index);
1212
}
13-
getMatches(str) {
14-
if (!str) {
13+
getMatches(searchString) {
14+
if (!searchString) {
1515
return [];
1616
}
17+
let str = searchString.toLowerCase();
1718
let useCache = false;
1819
if (this.prevKey_) {
1920
const occurredAt = str.indexOf(this.prevKey_);
@@ -160,34 +161,49 @@ class CRSearchResults extends HTMLElement {
160161
this.navigate(event.currentTarget);
161162
}
162163

164+
get results() {
165+
return this.shadowRoot.querySelectorAll('a');
166+
}
167+
163168
get selectedResult() {
164-
return this.shadowRoot.querySelectorAll('a')[this._selected];
169+
return this.results[this._selected];
170+
}
171+
172+
focusSelectedResult() {
173+
if (this.selectedResult) {
174+
this.selectedResult.classList.add('selected');
175+
this.selectedResult.scrollIntoView({block: 'center'});
176+
}
165177
}
166178

167179
focusDown() {
168180
if (this._selected === undefined) {
169181
this._selected = 0;
170182
} else {
171-
this.selectedResult.classList.remove('selected');
183+
if (this.selectedResult) {
184+
this.selectedResult.classList.remove('selected');
185+
}
172186
this._selected = Math.min(this._selected + 1, this.matches.length - 1);
173187
}
174188

175-
this.selectedResult.classList.add('selected');
189+
this.focusSelectedResult();
176190
}
177191

178192
focusUp() {
179193
if (this._selected === undefined) {
180194
return;
181195
}
182196

183-
this.selectedResult.classList.remove('selected');
197+
if (this.selectedResult) {
198+
this.selectedResult.classList.remove('selected');
199+
}
184200
this._selected = Math.max(this._selected - 1, 0);
185201

186-
this.selectedResult.classList.add('selected');
202+
this.focusSelectedResult();
187203
}
188204

189205
select() {
190-
if (this._selected === undefined) {
206+
if (this._selected === undefined || this.selectedResult === undefined) {
191207
return;
192208
}
193209

@@ -288,6 +304,11 @@ customElements.define('cr-search-control', class extends HTMLElement {
288304
return;
289305
}
290306

307+
if (event.code === 'Escape') {
308+
this.inputElement.value = '';
309+
this.inputElement.blur();
310+
}
311+
291312
const textValue = this.inputElement.value;
292313

293314
if (textValue === '') {
@@ -304,8 +325,8 @@ customElements.define('cr-search-control', class extends HTMLElement {
304325
});
305326

306327
document.addEventListener('keydown', (event) => {
307-
// One of `a-zA-Z`
308-
if (event.keyCode >= 65 && event.keyCode <= 122) {
328+
// One of `a-z` or `A-Z`
329+
if (event.keyCode >= 65 && event.keyCode <= 90) {
309330
document.querySelector('cr-search-control').inputElement.focus();
310331
}
311332
})

0 commit comments

Comments
 (0)