@@ -5,6 +5,7 @@ import { tracked } from '@glimmer/tracking';
55import t from ' ember-intl/helpers/t' ;
66import type RouterService from ' @ember/routing/router-service' ;
77import { service } from ' @ember/service' ;
8+ import { clickOutside } from ' ember-click-outside-modifier' ;
89
910import EditIcon from ' #src/assets/icons/edit.gts' ;
1011import RenameIcon from ' #src/assets/icons/rename.gts' ;
@@ -24,39 +25,16 @@ class CurriculumMoreActions extends Component<CurriculumMoreActionsSignature> {
2425
2526 @tracked isOpen = false ;
2627
27- private handleClickOutside = (event : MouseEvent ) => {
28- const target = event .target as HTMLElement ;
29- const popup = document .querySelector (' .curriculum-popup' );
30-
31- if (popup && ! popup .contains (target )) {
32- this .isOpen = false ;
33- }
34- };
35-
3628 @action
37- toggle(event : MouseEvent ) {
38- event .stopPropagation ();
29+ toggle() {
3930 this .isOpen = ! this .isOpen ;
40-
41- if (this .isOpen ) {
42- document .addEventListener (' click' , this .handleClickOutside );
43- } else {
44- document .removeEventListener (' click' , this .handleClickOutside );
45- }
46- }
47-
48- willDestroy() {
49- super .willDestroy ();
50- document .removeEventListener (' click' , this .handleClickOutside );
5131 }
5232
5333 @action
54- rename(event : MouseEvent ) {
34+ rename(event : MouseEvent ) {
5535 event .stopPropagation ();
5636
5737 this .isOpen = false ;
58- document .removeEventListener (' click' , this .handleClickOutside );
59-
6038 this .args .onRename ?.();
6139 }
6240
@@ -75,7 +53,7 @@ class CurriculumMoreActions extends Component<CurriculumMoreActionsSignature> {
7553 <button
7654 type =" button"
7755 class =" cursor-pointer p-2 rounded-full w-8 h-8 flex items-center justify-center bg-white shadow-lg hover:border-blue-500 hover:bg-blue-50 hover:border transition-colors duration-200"
78- {{on " click" this . toggle}}
56+ {{clickOutside this . close }} {{ on " click" this . toggle}}
7957 >
8058 <span class =" text-lg" >⋮</span >
8159 </button >
0 commit comments