1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-05-03 00:26:41 +07:00

sticky sidebars

This commit is contained in:
Fedor Katurov 2020-04-19 17:18:03 +07:00
parent 776d4a8992
commit 54f5125b8f
7 changed files with 10659 additions and 24 deletions
src/components/containers/Sticky

View file

@ -0,0 +1,41 @@
import React, { FC, ReactComponentElement, DetailsHTMLAttributes, useEffect, useRef } from 'react';
import styles from './styles.scss';
import StickySidebar from 'sticky-sidebar';
import classnames from 'classnames';
import ResizeSensor from 'resize-sensor';
interface IProps extends DetailsHTMLAttributes<HTMLDivElement> {}
(window as any).StickySidebar = StickySidebar;
(window as any).ResizeSensor = ResizeSensor;
const Sticky: FC<IProps> = ({ children }) => {
const ref = useRef(null);
let sb = null;
useEffect(() => {
if (!ref.current) return;
sb = new StickySidebar(ref.current, {
resizeSensor: true,
topSpacing: 72,
bottomSpacing: 10,
});
return () => sb.destroy();
}, [ref.current, children]);
if (sb) {
sb.updateSticky();
}
return (
<div className={classnames(styles.wrap, 'sidebar_container')}>
<div className="sidebar" ref={ref}>
<div className={classnames(styles.sticky, 'sidebar__inner')}>{children}</div>
</div>
</div>
);
};
export { Sticky };