diff --git a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.gjs b/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.gjs new file mode 100644 index 00000000000..b496b7e40d0 --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.gjs @@ -0,0 +1,77 @@ +import Component from "@glimmer/component"; +import { action } from "@ember/object"; +import { service } from "@ember/service"; +import DButton from "discourse/components/d-button"; +import DismissReadModal from "discourse/components/modal/dismiss-read"; +import I18n from "discourse-i18n"; + +export default class TopicDismissButtons extends Component { + @service currentUser; + @service modal; + + get showBasedOnPosition() { + return this.args.position === "top" || this.args.model.topics.length > 5; + } + + get dismissLabel() { + if (this.args.selectedTopics.length === 0) { + return I18n.t("topics.bulk.dismiss_button"); + } + + return I18n.t("topics.bulk.dismiss_button_with_selected", { + count: this.args.selectedTopics.length, + }); + } + + get dismissNewLabel() { + if (this.currentUser?.new_new_view_enabled) { + return I18n.t("topics.bulk.dismiss_button"); + } + + if (this.args.selectedTopics.length === 0) { + return I18n.t("topics.bulk.dismiss_new"); + } + + return I18n.t("topics.bulk.dismiss_new_with_selected", { + count: this.args.selectedTopics.length, + }); + } + + @action + dismissReadPosts() { + this.modal.show(DismissReadModal, { + model: { + title: this.args.selectedTopics.length + ? "topics.bulk.dismiss_read_with_selected" + : "topics.bulk.dismiss_read", + count: this.args.selectedTopics.length, + dismissRead: this.args.dismissRead, + }, + }); + } + + +} diff --git a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.hbs b/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.hbs deleted file mode 100644 index a9aa1e91faa..00000000000 --- a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{~#if this.showBasedOnPosition}} -
- {{~#if this.showDismissRead}} - - {{/if~}} - {{~#if this.showResetNew}} - - {{/if~}} -
-{{/if~}} \ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.js b/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.js deleted file mode 100644 index 18a3e6ba2d9..00000000000 --- a/app/assets/javascripts/discourse/app/components/topic-dismiss-buttons.js +++ /dev/null @@ -1,78 +0,0 @@ -import Component from "@ember/component"; -import { action } from "@ember/object"; -import { service } from "@ember/service"; -import DismissReadModal from "discourse/components/modal/dismiss-read"; -import discourseComputed from "discourse-common/utils/decorators"; -import I18n from "discourse-i18n"; - -export default Component.extend({ - tagName: "", - classNames: ["topic-dismiss-buttons"], - - currentUser: service(), - modal: service(), - - position: null, - selectedTopics: null, - model: null, - - @discourseComputed("position") - containerClass(position) { - return `dismiss-container-${position}`; - }, - - @discourseComputed("position") - dismissReadId(position) { - return `dismiss-topics-${position}`; - }, - - @discourseComputed("position") - dismissNewId(position) { - return `dismiss-new-${position}`; - }, - - @discourseComputed("position", "model.topics.length") - showBasedOnPosition(position, topicCount) { - if (position !== "top") { - return topicCount > 5; - } - return true; - }, - - @discourseComputed("selectedTopics.length") - dismissLabel(selectedTopicCount) { - if (selectedTopicCount === 0) { - return I18n.t("topics.bulk.dismiss_button"); - } - return I18n.t("topics.bulk.dismiss_button_with_selected", { - count: selectedTopicCount, - }); - }, - - @discourseComputed("selectedTopics.length") - dismissNewLabel(selectedTopicCount) { - if (this.currentUser?.new_new_view_enabled) { - return I18n.t("topics.bulk.dismiss_button"); - } else if (selectedTopicCount === 0) { - return I18n.t("topics.bulk.dismiss_new"); - } - return I18n.t("topics.bulk.dismiss_new_with_selected", { - count: selectedTopicCount, - }); - }, - - @action - dismissReadPosts() { - let dismissTitle = "topics.bulk.dismiss_read"; - if (this.selectedTopics.length) { - dismissTitle = "topics.bulk.dismiss_read_with_selected"; - } - this.modal.show(DismissReadModal, { - model: { - title: dismissTitle, - count: this.selectedTopics.length, - dismissRead: this.dismissRead, - }, - }); - }, -});