Skip to content

Commit

Permalink
Extract identical logic
Browse files Browse the repository at this point in the history
  • Loading branch information
marcustyphoon committed Jul 28, 2023
1 parent ec85f70 commit be4736f
Showing 1 changed file with 13 additions and 22 deletions.
35 changes: 13 additions & 22 deletions src/scripts/scroll_to_bottom.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,36 +77,27 @@ const stopScrolling = () => {
const onClick = () => active ? stopScrolling() : startScrolling();
const onKeyDown = ({ key }) => key === '.' && stopScrolling();

const addButtonToPage = async function ([scrollToTopButton]) {
if (!scrollToBottomButton) {
const hiddenClasses = keyToClasses('hidden');

scrollToBottomButton = scrollToTopButton.cloneNode(true);
hiddenClasses.forEach(className => scrollToBottomButton.classList.remove(className));
scrollToBottomButton.removeAttribute('aria-label');
scrollToBottomButton.addEventListener('click', onClick);
scrollToBottomButton.classList.add(buttonClass);
const cloneButton = target => {
const clonedButton = target.cloneNode(true);
keyToClasses('hidden').forEach(className => clonedButton.classList.remove(className));
clonedButton.removeAttribute('aria-label');
clonedButton.addEventListener('click', onClick);
clonedButton.classList.add(buttonClass);

clonedButton.classList[active ? 'add' : 'remove'](activeClass);
return clonedButton;
};

scrollToBottomButton.classList[active ? 'add' : 'remove'](activeClass);
}
const addButtonToPage = async function ([scrollToTopButton]) {
scrollToBottomButton ??= cloneButton(scrollToTopButton);

scrollToTopButton.after(scrollToBottomButton);
scrollToTopButton.addEventListener('click', stopScrolling);
document.documentElement.addEventListener('keydown', onKeyDown);
};

const addModalButtonToPage = async function ([modalScrollToTopButton]) {
if (!modalScrollToBottomButton) {
const hiddenClasses = keyToClasses('hidden');

modalScrollToBottomButton = modalScrollToTopButton.cloneNode(true);
hiddenClasses.forEach(className => modalScrollToBottomButton.classList.remove(className));
modalScrollToBottomButton.removeAttribute('aria-label');
modalScrollToBottomButton.addEventListener('click', onClick);
modalScrollToBottomButton.classList.add(buttonClass);

modalScrollToBottomButton.classList[active ? 'add' : 'remove'](activeClass);
}
modalScrollToBottomButton ??= cloneButton(modalScrollToTopButton);

modalScrollToTopButton.after(modalScrollToBottomButton);
modalScrollToTopButton.addEventListener('click', stopScrolling);
Expand Down

0 comments on commit be4736f

Please sign in to comment.