87 lines
1.7 KiB
Plaintext
87 lines
1.7 KiB
Plaintext
|
import {
|
||
|
default as computed,
|
||
|
on
|
||
|
} from "ember-addons/ember-computed-decorators";
|
||
|
|
||
|
export default Ember.Component.extend({
|
||
|
classNames: ["share-report"],
|
||
|
|
||
|
group: null,
|
||
|
query: null,
|
||
|
visible: false,
|
||
|
|
||
|
@computed("group", "query")
|
||
|
link() {
|
||
|
return (
|
||
|
Discourse.BaseUrl +
|
||
|
"/g/" +
|
||
|
this.group +
|
||
|
"/reports/" +
|
||
|
this.query.id
|
||
|
);
|
||
|
},
|
||
|
|
||
|
_mouseDownHandler(event) {
|
||
|
if (!this.element || this.isDestroying || this.isDestroyed) {
|
||
|
return;
|
||
|
}
|
||
|
if ($(this.element).has(event.target).length !== 0) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
this.send("close");
|
||
|
|
||
|
return true;
|
||
|
},
|
||
|
|
||
|
_keydownHandler(event) {
|
||
|
if (!this.element || this.isDestroying || this.isDestroyed) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (event.keyCode === 27) {
|
||
|
this.send("close");
|
||
|
}
|
||
|
},
|
||
|
|
||
|
@on("init")
|
||
|
_setupHandlers() {
|
||
|
this._boundMouseDownHandler = Ember.run.bind(this, this._mouseDownHandler);
|
||
|
this._boundKeydownHandler = Ember.run.bind(this, this._keydownHandler);
|
||
|
},
|
||
|
|
||
|
didInsertElement() {
|
||
|
this._super(...arguments);
|
||
|
|
||
|
$("html")
|
||
|
.on("mousedown.outside-share-link", this._boundMouseDownHandler)
|
||
|
.on("keydown.share-view", this._boundKeydownHandler);
|
||
|
},
|
||
|
|
||
|
willDestroyElement() {
|
||
|
this._super(...arguments);
|
||
|
|
||
|
$("html")
|
||
|
.off("mousedown.outside-share-link", this._boundMouseDownHandler)
|
||
|
.off("keydown.share-view", this._boundKeydownHandler);
|
||
|
},
|
||
|
|
||
|
actions: {
|
||
|
open(e) {
|
||
|
this.set("visible", true);
|
||
|
window.setTimeout(
|
||
|
() =>
|
||
|
$(this.element)
|
||
|
.find("input")
|
||
|
.select()
|
||
|
.focus(),
|
||
|
160
|
||
|
);
|
||
|
},
|
||
|
|
||
|
close(e) {
|
||
|
this.set("visible", false);
|
||
|
}
|
||
|
}
|
||
|
});
|