diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-06-04 01:39:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-04 01:39:38 +0200 |
commit | 8ee2eb5d2e7bd3c601c0277f12d8ad0c5f84cc43 (patch) | |
tree | 2c51c5c5cd47273cf1b66d553e1cc5c7f762a0f8 /app/javascript/mastodon/features/ui/components/column.js | |
parent | 20b647020bf8de2af6d2ce44ed76566d137dd1f6 (diff) |
Allow mounting arbitrary columns (#3207)
* Allow mounting arbitrary columns * Refactor column headers, allow pinning/unpinning and moving columns around * Collapse animation * Re-introduce scroll to top * Save column settings properly, do not display pin options in single-column view, do not display collapse icon if there is nothing to collapse * Fix one instance of public timeline being closed closing the stream Fix back buttons inconsistently sending you back to / even if history exists * Getting started displays links to columns that are not mounted
Diffstat (limited to 'app/javascript/mastodon/features/ui/components/column.js')
-rw-r--r-- | app/javascript/mastodon/features/ui/components/column.js | 31 |
1 files changed, 3 insertions, 28 deletions
diff --git a/app/javascript/mastodon/features/ui/components/column.js b/app/javascript/mastodon/features/ui/components/column.js index e8973f595..fb3d35b98 100644 --- a/app/javascript/mastodon/features/ui/components/column.js +++ b/app/javascript/mastodon/features/ui/components/column.js @@ -2,34 +2,7 @@ import React from 'react'; import ColumnHeader from './column_header'; import PropTypes from 'prop-types'; import { debounce } from 'lodash'; - -const easingOutQuint = (x, t, b, c, d) => c*((t=t/d-1)*t*t*t*t + 1) + b; - -const scrollTop = (node) => { - const startTime = Date.now(); - const offset = node.scrollTop; - const targetY = -offset; - const duration = 1000; - let interrupt = false; - - const step = () => { - const elapsed = Date.now() - startTime; - const percentage = elapsed / duration; - - if (percentage > 1 || interrupt) { - return; - } - - node.scrollTop = easingOutQuint(0, elapsed, offset, targetY, duration); - requestAnimationFrame(step); - }; - - step(); - - return () => { - interrupt = true; - }; -}; +import scrollTop from '../../../scroll'; class Column extends React.PureComponent { @@ -43,9 +16,11 @@ class Column extends React.PureComponent { handleHeaderClick = () => { const scrollable = this.node.querySelector('.scrollable'); + if (!scrollable) { return; } + this._interruptScrollAnimation = scrollTop(scrollable); } |