Refactor messagerie helpers

This commit is contained in:
Paul Chavard 2018-10-09 11:43:38 +02:00
parent d18b1c8ddc
commit 3897d4abf4
2 changed files with 18 additions and 23 deletions

View file

@ -1,27 +1,17 @@
import $ from 'jquery';
import { scrollTo, scrollToBottom } from '@utils';
export function scrollMessagerie() {
const $ul = $('.messagerie ul').first();
const ul = document.querySelector('.messagerie ul');
if ($ul.length) {
const $elementToScroll = $('.date.highlighted').first();
if (ul) {
const elementToScroll = document.querySelector('.date.highlighted');
if ($elementToScroll.length != 0) {
scrollTo($ul, $elementToScroll);
if (elementToScroll) {
scrollTo(ul, elementToScroll);
} else {
scrollToBottom($ul);
scrollToBottom(ul);
}
}
}
function scrollTo($container, $scrollTo) {
$container.scrollTop(
$scrollTo.offset().top - $container.offset().top + $container.scrollTop()
);
}
function scrollToBottom($container) {
$container.scrollTop($container.prop('scrollHeight'));
}
addEventListener('turbolinks:load', scrollMessagerie);

View file

@ -37,15 +37,12 @@ export function getJSON(url, data, method = 'get') {
}
export function scrollTo(container, scrollTo) {
$(container).scrollTop(
$(scrollTo).offset().top -
$(container).offset().top +
$(container).scrollTop()
);
container.scrollTop =
offset(scrollTo).top - offset(container).top + container.scrollTop;
}
export function scrollToBottom(container) {
$(container).scrollTop(container.scrollHeight);
container.scrollTop = container.scrollHeight;
}
export function on(selector, eventName, fn) {
@ -53,3 +50,11 @@ export function on(selector, eventName, fn) {
element.addEventListener(eventName, event => fn(event, event.detail))
);
}
function offset(element) {
const rect = element.getBoundingClientRect();
return {
top: rect.top + document.body.scrollTop,
left: rect.left + document.body.scrollLeft
};
}