handle focus for iframe

This commit is contained in:
Kévin Cocchi 2022-02-06 18:41:40 +01:00
parent 26ab8e2821
commit 9b87f7436f

View File

@ -32,16 +32,34 @@ export class SearchBox extends Component {
this.value = props.value this.value = props.value
this.onSearch = props.onSearch this.onSearch = props.onSearch
this.onReset = props.onReset this.onReset = props.onReset
this.hasBeenFocused = false
this.focusInput = this.focusInput.bind(this)
this.search = this.search.bind(this) this.search = this.search.bind(this)
this.clearSearch = this.clearSearch.bind(this) this.clearSearch = this.clearSearch.bind(this)
} }
componentDidMount() { focusInput() {
// hack required for firefox
const inputInWebView = document.querySelector('.search-box input') const inputInWebView = document.querySelector('.search-box input')
if (inputInWebView && this.autofocus) { if (inputInWebView && this.autofocus) {
inputInWebView.focus() inputInWebView.focus()
this.hasBeenFocused = true
}
}
componentDidMount() {
this.focusInput()
}
componentDidUpdate() {
// check if we're in an iframe (Element desktop)
if (window.self !== window.top) {
// check if the iframe is not closed
if (document.querySelector('.search-box').offsetParent === null) {
this.focusInput()
} else {
this.hasBeenFocused = false
}
} }
} }