mirror of
https://github.com/discourse/discourse.git
synced 2024-12-22 21:14:07 +08:00
41df705188
This commit introduces <NotificationsTracking /> which is a wrapper component around <DMenu /> which replaces the select-kit component <TopicNotificationsButton />. Each tracking case has its dedicated component: - topic -> `<TopicNotificationsTracking />` - group -> `<GroupNotificationsTracking />` - tag -> `<TagNotificationsTracking />` - category -> `<CategoryNotificationsTracking />` - chat thread -> `<ThreadNotificationsTracking />`
34 lines
814 B
JavaScript
34 lines
814 B
JavaScript
import { registerDestructor } from "@ember/destroyable";
|
|
import { service } from "@ember/service";
|
|
import Modifier from "ember-modifier";
|
|
import { bind } from "discourse-common/utils/decorators";
|
|
|
|
export default class FloatKitCloseOnEscape extends Modifier {
|
|
@service menu;
|
|
|
|
constructor(owner, args) {
|
|
super(owner, args);
|
|
registerDestructor(this, (instance) => instance.cleanup());
|
|
}
|
|
|
|
modify(element, [closeFn]) {
|
|
this.closeFn = closeFn;
|
|
this.element = element;
|
|
|
|
document.addEventListener("keydown", this.check, { capture: true });
|
|
}
|
|
|
|
@bind
|
|
check(event) {
|
|
if (event.key === "Escape") {
|
|
event.stopPropagation();
|
|
event.preventDefault();
|
|
this.closeFn();
|
|
}
|
|
}
|
|
|
|
cleanup() {
|
|
document.removeEventListener("keydown", this.check, { capture: true });
|
|
}
|
|
}
|