add button to clear search

This commit is contained in:
marlon-erler
2026-09-21 20:55:52 +02:00
parent dac38c3d12
commit ea422b3de6
9 changed files with 22 additions and 2 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+13 -2
View File
@@ -28,9 +28,9 @@ export function SearchModal<T>(
<div>
<main>
<h2>{headline}</h2>
<div class="flex-row width-input">
<div class="flex-row">
<input
id="focused"
id="focused"
placeholder={
coreViewModel.translations.general.searchLabel
}
@@ -46,6 +46,17 @@ export function SearchModal<T>(
StringToOption,
]}
></datalist>
<button
class="standard"
aria-label={
coreViewModel.translations.general
.searchButtonClearAudioLabel
}
on:click={searchViewModel.clear}
toggle:disabled={searchViewModel.cannotClear}
>
<span class="icon">close</span>
</button>
<button
class="primary"
aria-label={
+1
View File
@@ -6,6 +6,7 @@ const englishTranslations = {
general: {
deleteItemButtonAudioLabel: "delete item",
searchButtonAudioLabel: "search",
searchButtonClearAudioLabel: "clear search query",
abortButton: "Abort",
cancelButton: "Cancel",
Binary file not shown.
Binary file not shown.
+8
View File
@@ -18,6 +18,10 @@ export default class SearchViewModel<T> {
[this.searchInput, this.appliedQuery],
() => this.searchInput.value == this.appliedQuery.value,
);
cannotClear: React.State<boolean> = React.createProxyState(
[this.searchInput],
() => this.searchInput.value == "",
);
// methods
search = (searchTerm: string): void => {
@@ -37,6 +41,10 @@ export default class SearchViewModel<T> {
}
};
clear = (): void => {
this.searchInput.value = "";
}
// init
constructor(
allObjects: React.ListState<T> | React.MapState<T>,