DEV: Convert topic-dismiss-buttons to glimmer/gjs (#27606)
This commit is contained in:
parent
7d4ff77a14
commit
d7a5defe3c
|
@ -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,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
<template>
|
||||||
|
{{~#if this.showBasedOnPosition~}}
|
||||||
|
<div class="row dismiss-container-{{@position}}">
|
||||||
|
{{~#if @showDismissRead~}}
|
||||||
|
<DButton
|
||||||
|
@action={{this.dismissReadPosts}}
|
||||||
|
@translatedLabel={{this.dismissLabel}}
|
||||||
|
@title="topics.bulk.dismiss_tooltip"
|
||||||
|
id="dismiss-topics-{{@position}}"
|
||||||
|
class="btn-default dismiss-read"
|
||||||
|
/>
|
||||||
|
{{~/if~}}
|
||||||
|
{{~#if @showResetNew~}}
|
||||||
|
<DButton
|
||||||
|
@action={{@resetNew}}
|
||||||
|
@translatedLabel={{this.dismissNewLabel}}
|
||||||
|
@icon="check"
|
||||||
|
id="dismiss-new-{{@position}}"
|
||||||
|
class="btn-default dismiss-read"
|
||||||
|
/>
|
||||||
|
{{~/if~}}
|
||||||
|
</div>
|
||||||
|
{{~/if~}}
|
||||||
|
</template>
|
||||||
|
}
|
|
@ -1,22 +0,0 @@
|
||||||
{{~#if this.showBasedOnPosition}}
|
|
||||||
<div class="row {{this.containerClass}}">
|
|
||||||
{{~#if this.showDismissRead}}
|
|
||||||
<DButton
|
|
||||||
@action={{this.dismissReadPosts}}
|
|
||||||
@translatedLabel={{this.dismissLabel}}
|
|
||||||
@title="topics.bulk.dismiss_tooltip"
|
|
||||||
id={{this.dismissReadId}}
|
|
||||||
class="btn-default dismiss-read"
|
|
||||||
/>
|
|
||||||
{{/if~}}
|
|
||||||
{{~#if this.showResetNew}}
|
|
||||||
<DButton
|
|
||||||
@action={{this.resetNew}}
|
|
||||||
@icon="check"
|
|
||||||
@translatedLabel={{this.dismissNewLabel}}
|
|
||||||
id={{this.dismissNewId}}
|
|
||||||
class="btn-default dismiss-read"
|
|
||||||
/>
|
|
||||||
{{/if~}}
|
|
||||||
</div>
|
|
||||||
{{/if~}}
|
|
|
@ -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,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
Loading…
Reference in New Issue