diff --git a/js/src/forum/components/PostStreamScrubber.js b/js/src/forum/components/PostStreamScrubber.js index 5371c8c04..056175533 100644 --- a/js/src/forum/components/PostStreamScrubber.js +++ b/js/src/forum/components/PostStreamScrubber.js @@ -7,20 +7,22 @@ import ScrollListener from '../../common/utils/ScrollListener'; * The `PostStreamScrubber` component displays a scrubber which can be used to * navigate/scrub through a post stream. * - * ### Props + * ### Attrs * * - `stream` * - `className` */ export default class PostStreamScrubber extends Component { - init() { - this.stream = this.props.stream; + oninit(vnode) { + super.oninit(vnode); + + this.stream = this.attrs.stream; this.handlers = {}; this.scrollListener = new ScrollListener(this.updateScrubberValues.bind(this, { fromScroll: true, forceHeightChange: true })); } - view() { + view(vnode) { const count = this.stream.count(); // Index is left blank for performance reasons, it is filled in in updateScubberValues @@ -29,26 +31,26 @@ export default class PostStreamScrubber extends Component { count: {formatNumber(count)}, }); - const unreadCount = this.stream.discussion.unreadCount(); + const unreadCount = this.attrs.discussion.unreadCount(); const unreadPercent = count ? Math.min(count - this.stream.index, unreadCount) / count : 0; - function styleUnread(element, isInitialized, context) { - const $element = $(element); + function styleUnread(vnode) { + const $element = $(vnode.dom); const newStyle = { top: 100 - unreadPercent * 100 + '%', height: unreadPercent * 100 + '%', }; - if (context.oldStyle) { - $element.stop(true).css(context.oldStyle).animate(newStyle); + if (vnode.oldStyle) { + $element.stop(true).css(vnode.oldStyle).animate(newStyle); } else { $element.css(newStyle); } - context.oldStyle = newStyle; + vnode.oldStyle = newStyle; } const classNames = ['PostStreamScrubber', 'Dropdown']; - if (this.props.className) classNames.push(this.props.className); + if (this.attrs.className) classNames.push(this.attrs.className); return (