Recent searches open only after a real tap/click/key; close when the app is backgrounded
This commit is contained in:
@@ -7961,8 +7961,18 @@ function wireUI() {
|
|||||||
els.searchRecent.classList.remove('hidden');
|
els.searchRecent.classList.remove('hidden');
|
||||||
}
|
}
|
||||||
function hideRecentSearches() { els.searchRecent.classList.add('hidden'); }
|
function hideRecentSearches() { els.searchRecent.classList.add('hidden'); }
|
||||||
// Only a user's own focus opens the list, never the start-up focus below.
|
// Only a user's own focus opens the list: never the start-up focus below, nor
|
||||||
els.searchInput.addEventListener('focus', () => { if (!els.searchInput._bootFocus) showRecentSearches(); });
|
// a focus iOS restores when the app is reopened. A real tap/click/key must
|
||||||
|
// have happened just before.
|
||||||
|
let lastGestureAt = 0;
|
||||||
|
for (const n of ['pointerdown', 'keydown', 'touchstart']) addEventListener(n, () => { lastGestureAt = Date.now(); }, { capture: true, passive: true });
|
||||||
|
els.searchInput.addEventListener('focus', () => {
|
||||||
|
if (!els.searchInput._bootFocus && Date.now() - lastGestureAt < 1000) showRecentSearches();
|
||||||
|
});
|
||||||
|
// Leaving the app closes the list, so it is not still open on return.
|
||||||
|
document.addEventListener('visibilitychange', () => { if (document.visibilityState !== 'visible') hideRecentSearches(); });
|
||||||
|
addEventListener('pagehide', hideRecentSearches);
|
||||||
|
addEventListener('pageshow', () => { if (Date.now() - lastGestureAt > 1000) hideRecentSearches(); });
|
||||||
// Already focused (start-up) — a click or tap on the box still opens it.
|
// Already focused (start-up) — a click or tap on the box still opens it.
|
||||||
els.searchInput.addEventListener('pointerdown', () => { if (document.activeElement === els.searchInput) showRecentSearches(); });
|
els.searchInput.addEventListener('pointerdown', () => { if (document.activeElement === els.searchInput) showRecentSearches(); });
|
||||||
els.searchInput.addEventListener('input', () => {
|
els.searchInput.addEventListener('input', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user