|
|
|
@ -105,7 +105,7 @@ class QueryField extends React.Component<any, any> { |
|
|
|
|
this.setState({ value }, () => { |
|
|
|
|
if (changed) { |
|
|
|
|
// call typeahead only if query changed
|
|
|
|
|
window.requestAnimationFrame(this.onTypeahead); |
|
|
|
|
requestAnimationFrame(() => this.onTypeahead()); |
|
|
|
|
this.onChangeQuery(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
@ -283,12 +283,18 @@ class QueryField extends React.Component<any, any> { |
|
|
|
|
const rect = node.parentElement.getBoundingClientRect(); |
|
|
|
|
const scrollX = window.scrollX; |
|
|
|
|
const scrollY = window.scrollY; |
|
|
|
|
const screenHeight = window.innerHeight; |
|
|
|
|
|
|
|
|
|
const menuLeft = rect.left + scrollX - 2; |
|
|
|
|
const menuTop = rect.top + scrollY + rect.height + 4; |
|
|
|
|
const menuHeight = screenHeight - menuTop - 10; |
|
|
|
|
|
|
|
|
|
// Write DOM
|
|
|
|
|
requestAnimationFrame(() => { |
|
|
|
|
menu.style.opacity = 1; |
|
|
|
|
menu.style.top = `${rect.top + scrollY + rect.height + 4}px`; |
|
|
|
|
menu.style.left = `${rect.left + scrollX - 2}px`; |
|
|
|
|
menu.style.top = `${menuTop}px`; |
|
|
|
|
menu.style.left = `${menuLeft}px`; |
|
|
|
|
menu.style.maxHeight = `${menuHeight}px`; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|