From 39f956fa13e05002194487460981bbd7b950cfdd Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Wed, 19 Jan 2022 12:43:00 -0500 Subject: [PATCH] DEV: Add outlet + scroll event to support DiscoTOC (#75) --- .../discourse/components/docs-topic.js.es6 | 24 +++++++++++++------ .../discourse/templates/docs-index.hbs | 1 + 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/assets/javascripts/discourse/components/docs-topic.js.es6 b/assets/javascripts/discourse/components/docs-topic.js.es6 index 7300654..78e35cb 100644 --- a/assets/javascripts/discourse/components/docs-topic.js.es6 +++ b/assets/javascripts/discourse/components/docs-topic.js.es6 @@ -1,18 +1,16 @@ import Component from "@ember/component"; import { reads } from "@ember/object/computed"; -import computed from "discourse-common/utils/decorators"; +import computed, { bind } from "discourse-common/utils/decorators"; +import discourseDebounce from "discourse-common/lib/debounce"; export default Component.extend({ classNames: "docs-topic", originalPostContent: reads("post.cooked"), - @computed("topic") - post() { - return this.store.createRecord( - "post", - this.topic.post_stream.posts.firstObject - ); + @computed("topic.post_stream") + post(stream) { + return this.store.createRecord("post", stream?.posts.firstObject); }, @computed("post", "topic") @@ -26,15 +24,27 @@ export default Component.extend({ return post; }, + @bind + _emitScrollEvent() { + this.appEvents.trigger("docs-topic:current-post-scrolled"); + }, + + @bind + debounceScrollEvent() { + discourseDebounce(this, this._emitScrollEvent, 200); + }, + didInsertElement() { this._super(...arguments); document.querySelector("body").classList.add("archetype-docs-topic"); + document.addEventListener("scroll", this.debounceScrollEvent); }, willDestroyElement() { this._super(...arguments); document.querySelector("body").classList.remove("archetype-docs-topic"); + document.removeEventListener("scroll", this.debounceScrollEvent); }, }); diff --git a/assets/javascripts/discourse/templates/docs-index.hbs b/assets/javascripts/discourse/templates/docs-index.hbs index a370452..10cc018 100644 --- a/assets/javascripts/discourse/templates/docs-index.hbs +++ b/assets/javascripts/discourse/templates/docs-index.hbs @@ -88,6 +88,7 @@ {{#if selectedTopic}} {{#conditional-loading-spinner condition=isTopicLoading}} {{docs-topic topic=topic return=(action "returnToList")}} + {{plugin-outlet name="below-docs-topic" tagName="" connectorTagName="div"}} {{/conditional-loading-spinner}} {{else}}