@@ -37,10 +37,26 @@ export class DefaultReconnectDisplay implements ReconnectDisplay {
3737 ] ;
3838
3939 this . modal . style . cssText = modalStyles . join ( ';' ) ;
40- this . modal . innerHTML = '<h5 style="margin-top: 20px"></h5><button style="margin:5px auto 5px">Retry</button><p>Alternatively, <a href>reload</a></p>' ;
41- this . message = this . modal . querySelector ( 'h5' ) ! ;
42- this . button = this . modal . querySelector ( 'button' ) ! ;
43- this . reloadParagraph = this . modal . querySelector ( 'p' ) ! ;
40+
41+ this . message = this . document . createElement ( 'h5' ) as HTMLHeadingElement ;
42+ this . message . style . cssText = 'margin-top: 20px' ;
43+
44+ this . button = this . document . createElement ( 'button' ) as HTMLButtonElement ;
45+ this . button . style . cssText = 'margin:5px auto 5px' ;
46+ this . button . textContent = 'Retry' ;
47+
48+ const link = this . document . createElement ( 'a' ) ;
49+ link . addEventListener ( 'click' , ( ) => location . reload ( ) ) ;
50+ link . textContent = 'reload' ;
51+
52+ this . reloadParagraph = this . document . createElement ( 'p' ) as HTMLParagraphElement ;
53+ this . reloadParagraph . textContent = 'Alternatively, ' ;
54+ this . reloadParagraph . appendChild ( link ) ;
55+
56+ this . modal . appendChild ( this . message ) ;
57+ this . modal . appendChild ( this . button ) ;
58+ this . modal . appendChild ( this . reloadParagraph ) ;
59+
4460 this . loader = this . getLoader ( ) ;
4561
4662 this . message . after ( this . loader ) ;
@@ -63,7 +79,6 @@ export class DefaultReconnectDisplay implements ReconnectDisplay {
6379 this . failed ( ) ;
6480 }
6581 } ) ;
66- this . reloadParagraph . querySelector ( 'a' ) ! . addEventListener ( 'click' , ( ) => location . reload ( ) ) ;
6782 }
6883
6984 show ( ) : void {
@@ -98,16 +113,34 @@ export class DefaultReconnectDisplay implements ReconnectDisplay {
98113 this . button . style . display = 'block' ;
99114 this . reloadParagraph . style . display = 'none' ;
100115 this . loader . style . display = 'none' ;
101- this . message . innerHTML = 'Reconnection failed. Try <a href>reloading</a> the page if you\'re unable to reconnect.' ;
102- this . message . querySelector ( 'a' ) ! . addEventListener ( 'click' , ( ) => location . reload ( ) ) ;
116+
117+ const errorDescription = this . document . createTextNode ( 'Reconnection failed. Try ' ) ;
118+
119+ const link = this . document . createElement ( 'a' ) ;
120+ link . textContent = 'reloading' ;
121+ link . setAttribute ( 'href' , '' ) ;
122+ link . addEventListener ( 'click' , ( ) => location . reload ( ) ) ;
123+
124+ const errorInstructions = this . document . createTextNode ( ' the page if you\'re unable to reconnect.' ) ;
125+
126+ this . message . replaceChildren ( errorDescription , link , errorInstructions ) ;
103127 }
104128
105129 rejected ( ) : void {
106130 this . button . style . display = 'none' ;
107131 this . reloadParagraph . style . display = 'none' ;
108132 this . loader . style . display = 'none' ;
109- this . message . innerHTML = 'Could not reconnect to the server. <a href>Reload</a> the page to restore functionality.' ;
110- this . message . querySelector ( 'a' ) ! . addEventListener ( 'click' , ( ) => location . reload ( ) ) ;
133+
134+ const errorDescription = this . document . createTextNode ( 'Could not reconnect to the server. ' ) ;
135+
136+ const link = this . document . createElement ( 'a' ) ;
137+ link . textContent = 'Reload' ;
138+ link . setAttribute ( 'href' , '' ) ;
139+ link . addEventListener ( 'click' , ( ) => location . reload ( ) ) ;
140+
141+ const errorInstructions = this . document . createTextNode ( ' the page to restore functionality.' ) ;
142+
143+ this . message . replaceChildren ( errorDescription , link , errorInstructions ) ;
111144 }
112145
113146 private getLoader ( ) : HTMLDivElement {
0 commit comments