@@ -14,6 +14,7 @@ type SortBys = 'id' | 'name';
1414const busy = ref <boolean >(true );
1515const availableVersions = ref <string [] | null >(null );
1616const wantedVersion = ref <string >(' ' );
17+ const searchText = ref <string >(' ' );
1718const version = ref <Version | null >(null );
1819const sortBy = ref <SortBys >(' id' );
1920const differModal = ref <InstanceType <typeof DifferModal > | null >(null );
@@ -51,11 +52,19 @@ watch(wantedVersion, (v) => {
5152
5253const 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 : 300 px " >
76+ <div class =" col-12" style =" max-width : 400 px " >
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