From 44a7d87cb1f5df953b6c14c16c59e2e4ead1bcb9 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Mon, 20 Feb 2023 03:20:59 +0100 Subject: Rename JSX files with proper `.jsx` extension (#23733) --- app/javascript/mastodon/components/column.jsx | 62 +++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 app/javascript/mastodon/components/column.jsx (limited to 'app/javascript/mastodon/components/column.jsx') diff --git a/app/javascript/mastodon/components/column.jsx b/app/javascript/mastodon/components/column.jsx new file mode 100644 index 000000000..5780a1397 --- /dev/null +++ b/app/javascript/mastodon/components/column.jsx @@ -0,0 +1,62 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { supportsPassiveEvents } from 'detect-passive-events'; +import { scrollTop } from '../scroll'; + +export default class Column extends React.PureComponent { + + static propTypes = { + children: PropTypes.node, + label: PropTypes.string, + bindToDocument: PropTypes.bool, + }; + + scrollTop () { + const scrollable = this.props.bindToDocument ? document.scrollingElement : this.node.querySelector('.scrollable'); + + if (!scrollable) { + return; + } + + this._interruptScrollAnimation = scrollTop(scrollable); + } + + handleWheel = () => { + if (typeof this._interruptScrollAnimation !== 'function') { + return; + } + + this._interruptScrollAnimation(); + }; + + setRef = c => { + this.node = c; + }; + + componentDidMount () { + if (this.props.bindToDocument) { + document.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false); + } else { + this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false); + } + } + + componentWillUnmount () { + if (this.props.bindToDocument) { + document.removeEventListener('wheel', this.handleWheel); + } else { + this.node.removeEventListener('wheel', this.handleWheel); + } + } + + render () { + const { label, children } = this.props; + + return ( +
+ {children} +
+ ); + } + +} -- cgit