Skip to content

Commit 445c666

Browse files
committed
Allow searching languages
1 parent 1368997 commit 445c666

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

gh-pages/src/App.vue

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type SortBys = 'id' | 'name';
1414
const busy = ref<boolean>(true);
1515
const availableVersions = ref<string[] | null>(null);
1616
const wantedVersion = ref<string>('');
17+
const searchText = ref<string>('');
1718
const version = ref<Version | null>(null);
1819
const sortBy = ref<SortBys>('id');
1920
const differModal = ref<InstanceType<typeof DifferModal> | null>(null);
@@ -51,11 +52,19 @@ watch(wantedVersion, (v) => {
5152
5253
const comparer = new Intl.Collator('en', {sensitivity: 'base'});
5354
54-
const languages = computed<Language[]>(() => {
55+
const displayLanguages = computed<Language[]>(() => {
5556
if (!version.value) {
5657
return [];
5758
}
58-
const result = [...version.value.languages];
59+
let result = [...version.value.languages];
60+
if (searchText.value !== '') {
61+
const lowerCaseSearchText = searchText.value.toLowerCase();
62+
result = result.filter(
63+
(l) =>
64+
l.id.toLowerCase().includes(lowerCaseSearchText) ||
65+
l.name.toLowerCase().includes(lowerCaseSearchText),
66+
);
67+
}
5968
result.sort((a, b) => comparer.compare(a[sortBy.value], b[sortBy.value]));
6069
return result;
6170
});
@@ -64,19 +73,26 @@ const languages = computed<Language[]>(() => {
6473
<template>
6574
<div class="container" v-if="availableVersions !== null">
6675
<div class="row justify-content-center mb-3">
67-
<div class="col-12" style="max-width: 300px">
76+
<div class="col-12" style="max-width: 400px">
6877
<div class="input-group input-group-sm">
6978
<label for="wanted-version" class="input-group-text">Version</label>
7079
<select
7180
id="wanted-version"
7281
v-model="wantedVersion"
7382
:disabled="busy"
7483
class="form-control"
84+
style="max-width: 80px"
7585
>
7686
<option v-for="v in availableVersions" :value="v" :key="v">
7787
{{ v }}
7888
</option>
7989
</select>
90+
<input
91+
type="search"
92+
class="form-control"
93+
placeholder="Search"
94+
v-model="searchText"
95+
/>
8096
<button
8197
v-if="version !== null"
8298
type="button"
@@ -125,7 +141,7 @@ const languages = computed<Language[]>(() => {
125141
</thead>
126142
<tbody>
127143
<tr
128-
v-for="language in languages"
144+
v-for="language in displayLanguages"
129145
:key="`${language.id}@${version.version}`"
130146
>
131147
<td>

0 commit comments

Comments
 (0)