diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2022-09-06 22:30:23 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2022-09-06 22:33:00 +0200 |
commit | 93b66b6a2693ebbd8eb234a9436b457b0bdaba12 (patch) | |
tree | d99882d3ffd67b87cfed73ee1de8df2ced8a54e9 | |
parent | ee1750c23c1e40c2c1cb4f7e33f622ea86e84ef8 (diff) | |
download | xK-93b66b6a2693ebbd8eb234a9436b457b0bdaba12.tar.gz xK-93b66b6a2693ebbd8eb234a9436b457b0bdaba12.tar.xz xK-93b66b6a2693ebbd8eb234a9436b457b0bdaba12.zip |
xP: scroll to bottom and focus the input on switch
-rw-r--r-- | xP/public/xP.js | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/xP/public/xP.js b/xP/public/xP.js index af20c2b..dba8a99 100644 --- a/xP/public/xP.js +++ b/xP/public/xP.js @@ -165,8 +165,11 @@ rpc.addEventListener('BufferRemove', event => { rpc.addEventListener('BufferActivate', event => { let e = event.detail bufferCurrent = e.bufferName - // TODO: Somehow scroll to the end of it immediately. - // TODO: Focus the textarea. + setTimeout(() => { + let el = document.getElementById('input') + if (el !== null) + el.focus() + }) }) rpc.addEventListener('BufferLine', event => { @@ -306,6 +309,19 @@ let Content = { } let Buffer = { + oncreate: vnode => { + if (vnode.dom === undefined) + return + + let el = vnode.dom.children[1] + if (el !== null) + el.scrollTop = el.scrollHeight + }, + + onupdate: vnode => { + Buffer.oncreate(vnode) + }, + view: vnode => { let lines = [] let b = buffers.get(bufferCurrent) @@ -376,7 +392,7 @@ function onKeyDown(event) { // and we'll probably have to intercept /all/ key presses. let Input = { view: vnode => { - return m('textarea', { + return m('textarea#input', { rows: 1, onkeydown: onKeyDown, }) |