MOBILE-3401 search: Show/hide search history checking focus

main
Pau Ferrer Ocaña 2020-06-23 15:04:54 +02:00
parent 206afd7505
commit 8f21507b78
3 changed files with 15 additions and 8 deletions

View File

@ -9,7 +9,7 @@
<ion-icon name="close"></ion-icon> <ion-icon name="close"></ion-icon>
</button> </button>
</ion-item> </ion-item>
<ion-list class="core-search-history with-borders"> <ion-list class="core-search-history with-borders" [hidden]="!historyShown">
<a ion-item text-wrap *ngFor="let item of history" (click)="historyClicked($event, item.searchedtext)" class="core-clickable" tabindex="1"> <a ion-item text-wrap *ngFor="let item of history" (click)="historyClicked($event, item.searchedtext)" class="core-clickable" tabindex="1">
<core-icon name="fa-history" item-start></core-icon> <core-icon name="fa-history" item-start></core-icon>
{{item.searchedtext}} {{item.searchedtext}}

View File

@ -23,7 +23,6 @@ ion-app.app-root core-search-box {
} }
.core-search-history { .core-search-history {
display: none;
max-height: calc(-120px + 80vh); max-height: calc(-120px + 80vh);
overflow-y: auto; overflow-y: auto;
@ -35,10 +34,4 @@ ion-app.app-root core-search-box {
border-bottom: 0; border-bottom: 0;
} }
} }
form:focus-within {
.core-search-history {
display: block;
}
}
} }

View File

@ -78,6 +78,19 @@ export class CoreSearchBoxComponent implements OnInit {
if (this.searchArea) { if (this.searchArea) {
this.loadHistory(); this.loadHistory();
} }
this.formElement.nativeElement.addEventListener('focus', () => {
this.historyShown = true;
}, true);
this.formElement.nativeElement.addEventListener('blur', () => {
// Wait the new element to be focused.
setTimeout(() => {
if (document.activeElement.closest('form') != this.formElement.nativeElement) {
this.historyShown = false;
}
});
}, true);
} }
/** /**
@ -100,6 +113,7 @@ export class CoreSearchBoxComponent implements OnInit {
this.domUtils.triggerFormSubmittedEvent(this.formElement, false, this.sitesProvider.getCurrentSiteId()); this.domUtils.triggerFormSubmittedEvent(this.formElement, false, this.sitesProvider.getCurrentSiteId());
this.historyShown = false;
this.searched = this.searchText; this.searched = this.searchText;
this.onSubmit.emit(this.searchText); this.onSubmit.emit(this.searchText);
} }