mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 22:13:45 +08:00
Should fix an iOS regression in f5e8e73
. iOS does not pull up the keyboard if the `.focus()` call is delayed by a rendering timeout or an asynchronous ajax call. This PR adds earlier `.focus()` calls if the input element is present.
This commit is contained in:
parent
14f6dcb4d0
commit
bf3e908f66
|
@ -1004,6 +1004,10 @@ export default Component.extend(
|
|||
this.selectKit.options.filterable || this.selectKit.options.allowAny,
|
||||
});
|
||||
|
||||
if (this.selectKit.options.useHeaderFilter) {
|
||||
this._focusFilterInput();
|
||||
}
|
||||
|
||||
this.triggerSearch();
|
||||
|
||||
this._safeAfterRender(() => {
|
||||
|
@ -1044,14 +1048,16 @@ export default Component.extend(
|
|||
return;
|
||||
}
|
||||
|
||||
// setting focus as early as possible is best for iOS
|
||||
// because render/promise delays may cause keyboard not to show
|
||||
if (!forceHeader) {
|
||||
this._focusFilterInput();
|
||||
}
|
||||
|
||||
this._safeAfterRender(() => {
|
||||
const input = this.getFilterInput();
|
||||
if (!forceHeader && input) {
|
||||
input.focus({ preventScroll: true });
|
||||
|
||||
if (typeof input.selectionStart === "number") {
|
||||
input.selectionStart = input.selectionEnd = input.value.length;
|
||||
}
|
||||
this._focusFilterInput();
|
||||
} else if (!this.selectKit.options.preventHeaderFocus) {
|
||||
const headerContainer = this.getHeader();
|
||||
headerContainer && headerContainer.focus({ preventScroll: true });
|
||||
|
@ -1059,6 +1065,18 @@ export default Component.extend(
|
|||
});
|
||||
},
|
||||
|
||||
_focusFilterInput() {
|
||||
const input = this.getFilterInput();
|
||||
|
||||
if (input && document.activeElement !== input) {
|
||||
input.focus({ preventScroll: true });
|
||||
|
||||
if (typeof input.selectionStart === "number") {
|
||||
input.selectionStart = input.selectionEnd = input.value.length;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getFilterInput() {
|
||||
return document.querySelector(`#${this.selectKit.uniqueID}-filter input`);
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue
Block a user