DocSpace-buildtools/web/ASC.Web.Common/src/components/Layout/MobileLayout.js

82 lines
1.9 KiB
JavaScript
Raw Normal View History

2020-11-17 08:36:49 +00:00
import React, { Component, createRef } from "react";
import { Scrollbar } from "asc-web-components";
import { LayoutContextProvider } from "./context";
2020-11-17 08:36:49 +00:00
class MobileLayout extends Component {
constructor(props) {
super(props);
2020-11-17 08:36:49 +00:00
this.state = {
prevScrollPosition: window.pageYOffset,
visibleContent: true,
};
2020-11-17 08:36:49 +00:00
this.scrollRefPage = createRef();
}
2020-11-17 08:36:49 +00:00
componentDidMount() {
2020-11-24 08:26:10 +00:00
this.documentElement = document.getElementById("customScrollBar");
2020-11-17 08:36:49 +00:00
this.documentElement.addEventListener(
"scroll",
this.scrolledTheVerticalAxis
);
}
componentWillUnmount() {
this.documentElement.removeEventListener(
"scroll",
this.scrolledTheVerticalAxis
);
}
scrolledTheVerticalAxis = () => {
const { prevScrollPosition } = this.state;
const currentScrollPosition =
this.documentElement.scrollTop > 0
? this.documentElement.scrollTop
: window.pageYOffset;
2020-11-17 08:36:49 +00:00
let visibleContent = prevScrollPosition >= currentScrollPosition;
if (
currentScrollPosition >=
this.documentElement.scrollHeight - this.documentElement.clientHeight &&
this.documentElement.scrollHeight !== this.documentElement.clientHeight
) {
visibleContent = false;
}
2020-11-17 08:36:49 +00:00
if (
!visibleContent &&
this.documentElement.scrollHeight - this.documentElement.clientHeight < 57
) {
visibleContent = true;
}
2020-11-17 08:36:49 +00:00
this.setState({
prevScrollPosition: currentScrollPosition,
visibleContent,
});
};
render() {
const scrollProp = { ref: this.scrollRefPage };
const { children } = this.props;
return (
<Scrollbar {...scrollProp} stype="mediumBlack">
<LayoutContextProvider
value={{
scrollRefLayout: this.scrollRefPage,
isVisible: this.state.visibleContent,
}}
>
{children}
</LayoutContextProvider>
</Scrollbar>
);
}
2020-11-17 08:36:49 +00:00
}
2020-11-17 08:36:49 +00:00
export default MobileLayout;