diff options
| author | HJ <30-hj@users.noreply.git.pleroma.social> | 2020-07-10 09:04:45 +0000 |
|---|---|---|
| committer | HJ <30-hj@users.noreply.git.pleroma.social> | 2020-07-10 09:04:45 +0000 |
| commit | c1a20079bef51dc38cb9826cee5bb2fbfe2cf68b (patch) | |
| tree | deed4aa330bcc8b983855df3a24c23ddb4bfeeb8 /src/components/chat/chat_layout_utils.js | |
| parent | d2f0e4e7d515afe4b15d4e6a0e52d9fee2349c4a (diff) | |
| parent | b756c83e8d275c0f9d210c15a319d36dca56d3c8 (diff) | |
Merge branch 'direct-conversations' into 'develop'
Chats
Closes #201
See merge request pleroma/pleroma-fe!1019
Diffstat (limited to 'src/components/chat/chat_layout_utils.js')
| -rw-r--r-- | src/components/chat/chat_layout_utils.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/components/chat/chat_layout_utils.js b/src/components/chat/chat_layout_utils.js new file mode 100644 index 00000000..609dc0c9 --- /dev/null +++ b/src/components/chat/chat_layout_utils.js @@ -0,0 +1,26 @@ +// Captures a scroll position +export const getScrollPosition = (el) => { + return { + scrollTop: el.scrollTop, + scrollHeight: el.scrollHeight, + offsetHeight: el.offsetHeight + } +} + +// A helper function that is used to keep the scroll position fixed as the new elements are added to the top +// Takes two scroll positions, before and after the update. +export const getNewTopPosition = (previousPosition, newPosition) => { + return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight) +} + +export const isBottomedOut = (el, offset = 0) => { + if (!el) { return } + const scrollHeight = el.scrollTop + offset + const totalHeight = el.scrollHeight - el.offsetHeight + return totalHeight <= scrollHeight +} + +// Height of the scrollable container. The dynamic height is needed to ensure the mobile browser panel doesn't overlap or hide the posting form. +export const scrollableContainerHeight = (inner, header, footer) => { + return inner.offsetHeight - header.clientHeight - footer.clientHeight +} |
