1
1
import Component from " @glimmer/component" ;
2
2
import { tracked } from " @glimmer/tracking" ;
3
3
import { action } from " @ember/object" ;
4
- import didInsert from " @ember/render-modifiers/modifiers/did-insert" ;
5
- import willDestroy from " @ember/render-modifiers/modifiers/will-destroy" ;
4
+ import { modifier } from " ember-modifier" ;
6
5
import DButton from " discourse/components/d-button" ;
7
6
import htmlSafe from " discourse/helpers/html-safe" ;
8
7
9
8
export default class ChangesBanner extends Component {
10
9
@tracked isSaving = false ;
11
- _resizer = null ;
10
+
11
+ resizerModifier = modifier ((element ) => {
12
+ const container = document .getElementById (" main-container" );
13
+ const resizer = () => this .positionBanner (container, element);
14
+ resizer ();
15
+
16
+ window .addEventListener (" resize" , resizer);
17
+ return () => window .removeEventListener (" resize" , resizer);
18
+ });
12
19
13
20
@action
14
21
async save () {
@@ -21,21 +28,6 @@ export default class ChangesBanner extends Component {
21
28
}
22
29
}
23
30
24
- @action
25
- setupResizeObserver (element ) {
26
- const container = document .getElementById (" main-container" );
27
- this ._resizer = () => this .positionBanner (container, element);
28
-
29
- this ._resizer ();
30
-
31
- this ._resizeObserver = window .addEventListener (" resize" , this ._resizer );
32
- }
33
-
34
- @action
35
- teardownResizeObserver () {
36
- window .removeEventListener (" resize" , this ._resizer );
37
- }
38
-
39
31
positionBanner (container , element ) {
40
32
if (container) {
41
33
const { width } = container .getBoundingClientRect ();
@@ -45,11 +37,7 @@ export default class ChangesBanner extends Component {
45
37
}
46
38
47
39
<template >
48
- <div
49
- class =" admin-changes-banner"
50
- {{didInsert this . setupResizeObserver}}
51
- {{willDestroy this . teardownResizeObserver}}
52
- >
40
+ <div class =" admin-changes-banner" {{this .resizerModifier }} >
53
41
<span class =" admin-changes-banner__main-label" >{{htmlSafe
54
42
@ bannerLabel
55
43
}} </span >
0 commit comments