DEV: Remove buffered rendering from input tips

This is another refactoring in the multi-step process to remove all uses
of our custom Render Buffer.

Previous commit: 2290ec9e87 in this
series.

This commit affects the display of input tips. It is just a refactor and
does not change any functionality.
This commit is contained in:
Blake Erickson 2019-12-04 18:11:00 -07:00
parent d07f039468
commit fe9293b8b5
2 changed files with 24 additions and 14 deletions

View File

@ -1,21 +1,30 @@
import { alias, not } from "@ember/object/computed";
import Component from "@ember/component";
import { bufferedRender } from "discourse-common/lib/buffered-render";
import { iconHTML } from "discourse-common/lib/icon-library";
export default Component.extend(
bufferedRender({
classNameBindings: [":tip", "good", "bad"],
rerenderTriggers: ["validation"],
export default Component.extend({
classNameBindings: [":tip", "good", "bad"],
rerenderTriggers: ["validation"],
tipIcon: null,
tipReason: null,
bad: alias("validation.failed"),
good: not("bad"),
bad: alias("validation.failed"),
good: not("bad"),
buildBuffer(buffer) {
const reason = this.get("validation.reason");
if (reason) {
buffer.push(iconHTML(this.good ? "check" : "times") + " " + reason);
}
tipIconHTML() {
let icon = iconHTML(this.good ? "check" : "times");
return `${icon}`.htmlSafe();
},
didReceiveAttrs() {
this._super(...arguments);
let reason = this.get("validation.reason");
if (reason) {
this.set("tipIcon", this.tipIconHTML());
this.set("tipReason", reason);
} else {
this.set("tipIcon", null);
this.set("tipReason", null);
}
})
);
}
});

View File

@ -0,0 +1 @@
{{tipIcon}} {{tipReason}}