2018-11-01 18:32:17 +03:00
|
|
|
/*
|
|
|
|
Copyright 2018 New Vector Ltd
|
2020-03-26 13:05:27 +03:00
|
|
|
Copyright 2020 The Matrix.org Foundation C.I.C.
|
2018-11-01 18:32:17 +03:00
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
import React from "react";
|
|
|
|
|
|
|
|
export default class AutoHideScrollbar extends React.Component {
|
|
|
|
constructor(props) {
|
|
|
|
super(props);
|
|
|
|
this._collectContainerRef = this._collectContainerRef.bind(this);
|
2018-12-18 16:29:42 +03:00
|
|
|
}
|
|
|
|
|
2018-11-01 18:32:17 +03:00
|
|
|
_collectContainerRef(ref) {
|
|
|
|
if (ref && !this.containerRef) {
|
|
|
|
this.containerRef = ref;
|
|
|
|
}
|
2018-11-12 14:57:21 +03:00
|
|
|
if (this.props.wrappedRef) {
|
|
|
|
this.props.wrappedRef(ref);
|
|
|
|
}
|
2018-11-01 18:32:17 +03:00
|
|
|
}
|
|
|
|
|
2019-02-13 16:49:14 +03:00
|
|
|
getScrollTop() {
|
|
|
|
return this.containerRef.scrollTop;
|
|
|
|
}
|
|
|
|
|
2018-11-01 18:32:17 +03:00
|
|
|
render() {
|
|
|
|
return (<div
|
|
|
|
ref={this._collectContainerRef}
|
2019-03-12 18:30:06 +03:00
|
|
|
style={this.props.style}
|
2018-11-01 18:32:17 +03:00
|
|
|
className={["mx_AutoHideScrollbar", this.props.className].join(" ")}
|
2019-02-13 16:49:14 +03:00
|
|
|
onScroll={this.props.onScroll}
|
2019-04-05 18:43:29 +03:00
|
|
|
onWheel={this.props.onWheel}
|
2018-11-01 18:32:17 +03:00
|
|
|
>
|
2020-03-25 21:24:32 +03:00
|
|
|
{ this.props.children }
|
2018-11-01 18:32:17 +03:00
|
|
|
</div>);
|
|
|
|
}
|
|
|
|
}
|