DEV: Convert expand-post to glimmer/gjs/dbutton (#28339)
This commit is contained in:
parent
355dbb928a
commit
41593a5d7d
|
@ -0,0 +1,50 @@
|
|||
import Component from "@glimmer/component";
|
||||
import { tracked } from "@glimmer/tracking";
|
||||
import { action } from "@ember/object";
|
||||
import DButton from "discourse/components/d-button";
|
||||
import concatClass from "discourse/helpers/concat-class";
|
||||
import { ajax } from "discourse/lib/ajax";
|
||||
|
||||
export default class ExpandPost extends Component {
|
||||
@tracked expanded = false;
|
||||
loading = false;
|
||||
|
||||
@action
|
||||
async toggleItem() {
|
||||
if (this.loading) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.expanded) {
|
||||
this.expanded = false;
|
||||
this.args.item.set("expandedExcerpt", null);
|
||||
return;
|
||||
}
|
||||
|
||||
this.loading = true;
|
||||
try {
|
||||
const result = await ajax(
|
||||
`/posts/by_number/${this.args.item.topic_id}/${this.args.item.post_number}.json`
|
||||
);
|
||||
|
||||
this.expanded = true;
|
||||
this.args.item.set("expandedExcerpt", result.cooked);
|
||||
} finally {
|
||||
this.loading = false;
|
||||
}
|
||||
}
|
||||
|
||||
<template>
|
||||
{{#if @item.truncated}}
|
||||
<DButton
|
||||
@action={{this.toggleItem}}
|
||||
@icon={{if this.expanded "chevron-up" "chevron-down"}}
|
||||
@title="post.expand_collapse"
|
||||
class={{concatClass
|
||||
"btn-transparent"
|
||||
(if this.expanded "collapse-item" "expand-item")
|
||||
}}
|
||||
/>
|
||||
{{/if}}
|
||||
</template>
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
{{#if this.item.truncated}}
|
||||
<a
|
||||
href
|
||||
class={{if this.expanded "collapse-item" "expand-item"}}
|
||||
onclick={{action "toggleItem"}}
|
||||
title={{i18n "post.expand_collapse"}}
|
||||
>
|
||||
{{#if this.expanded}}
|
||||
{{d-icon "chevron-up"}}
|
||||
{{else}}
|
||||
{{d-icon "chevron-down"}}
|
||||
{{/if}}
|
||||
</a>
|
||||
{{/if}}
|
|
@ -1,36 +0,0 @@
|
|||
import Component from "@ember/component";
|
||||
import { ajax } from "discourse/lib/ajax";
|
||||
|
||||
export default Component.extend({
|
||||
tagName: "",
|
||||
expanded: null,
|
||||
_loading: false,
|
||||
|
||||
actions: {
|
||||
toggleItem() {
|
||||
if (this._loading) {
|
||||
return false;
|
||||
}
|
||||
const item = this.item;
|
||||
|
||||
if (this.expanded) {
|
||||
this.set("expanded", false);
|
||||
item.set("expandedExcerpt", null);
|
||||
return false;
|
||||
}
|
||||
|
||||
const topicId = item.get("topic_id");
|
||||
const postNumber = item.get("post_number");
|
||||
|
||||
this._loading = true;
|
||||
ajax(`/posts/by_number/${topicId}/${postNumber}.json`)
|
||||
.then((result) => {
|
||||
this.set("expanded", true);
|
||||
item.set("expandedExcerpt", result.cooked);
|
||||
})
|
||||
.finally(() => (this._loading = false));
|
||||
|
||||
return false;
|
||||
},
|
||||
},
|
||||
});
|
Loading…
Reference in New Issue