DEV: Convert TopicNavigationPopup to gjs (#29476)
This commit is contained in:
parent
81b95d3202
commit
671f7beadb
|
@ -0,0 +1,55 @@
|
||||||
|
import Component from "@glimmer/component";
|
||||||
|
import { tracked } from "@glimmer/tracking";
|
||||||
|
import { action } from "@ember/object";
|
||||||
|
import { service } from "@ember/service";
|
||||||
|
import DButton from "discourse/components/d-button";
|
||||||
|
|
||||||
|
// For use in plugins
|
||||||
|
export default class TopicNavigationPopup extends Component {
|
||||||
|
@service keyValueStore;
|
||||||
|
|
||||||
|
@tracked hidden = false;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
|
||||||
|
if (this.popupKey) {
|
||||||
|
const value = this.keyValueStore.getItem(this.popupKey);
|
||||||
|
|
||||||
|
if (value === true || value > +new Date()) {
|
||||||
|
this.hidden = true;
|
||||||
|
} else {
|
||||||
|
this.keyValueStore.removeItem(this.popupKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get popupKey() {
|
||||||
|
if (this.args.popupId) {
|
||||||
|
return `dismiss_topic_nav_popup_${this.args.popupId}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@action
|
||||||
|
close() {
|
||||||
|
this.hidden = true;
|
||||||
|
|
||||||
|
if (this.popupKey) {
|
||||||
|
if (this.args.dismissDuration) {
|
||||||
|
const expiry = +new Date() + this.args.dismissDuration;
|
||||||
|
this.keyValueStore.setItem(this.popupKey, expiry);
|
||||||
|
} else {
|
||||||
|
this.keyValueStore.setItem(this.popupKey, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
<template>
|
||||||
|
{{#unless this.hidden}}
|
||||||
|
<div class="topic-navigation-popup">
|
||||||
|
<DButton @action={{this.close}} @icon="xmark" class="close btn-flat" />
|
||||||
|
{{yield}}
|
||||||
|
</div>
|
||||||
|
{{/unless}}
|
||||||
|
</template>
|
||||||
|
}
|
|
@ -1,6 +0,0 @@
|
||||||
{{#unless this.hidden}}
|
|
||||||
<div class="topic-navigation-popup">
|
|
||||||
<DButton @action={{this.close}} @icon="xmark" class="close btn-flat" />
|
|
||||||
{{yield}}
|
|
||||||
</div>
|
|
||||||
{{/unless}}
|
|
|
@ -1,44 +0,0 @@
|
||||||
import Component from "@ember/component";
|
|
||||||
import { action } from "@ember/object";
|
|
||||||
import { tagName } from "@ember-decorators/component";
|
|
||||||
import discourseComputed from "discourse-common/utils/decorators";
|
|
||||||
|
|
||||||
@tagName("")
|
|
||||||
export default class TopicNavigationPopup extends Component {
|
|
||||||
popupId = null;
|
|
||||||
hidden = false;
|
|
||||||
|
|
||||||
init() {
|
|
||||||
super.init(...arguments);
|
|
||||||
|
|
||||||
if (this.popupKey) {
|
|
||||||
const value = this.keyValueStore.getItem(this.popupKey);
|
|
||||||
if (value === true || value > +new Date()) {
|
|
||||||
this.set("hidden", true);
|
|
||||||
} else {
|
|
||||||
this.keyValueStore.removeItem(this.popupKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@discourseComputed("popupId")
|
|
||||||
popupKey(popupId) {
|
|
||||||
if (popupId) {
|
|
||||||
return `dismiss_topic_nav_popup_${popupId}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@action
|
|
||||||
close() {
|
|
||||||
this.set("hidden", true);
|
|
||||||
|
|
||||||
if (this.popupKey) {
|
|
||||||
if (this.dismissDuration) {
|
|
||||||
const expiry = +new Date() + this.dismissDuration;
|
|
||||||
this.keyValueStore.setItem(this.popupKey, expiry);
|
|
||||||
} else {
|
|
||||||
this.keyValueStore.setItem(this.popupKey, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue