@@ -19,44 +19,73 @@ export class SPIDebugPanel extends HTMLElement {
19
19
// into the browser console.
20
20
if ( localStorage . getItem ( 'spiDebug' ) === 'true' ) {
21
21
this . classList . remove ( 'hidden' )
22
+
23
+ this . reset ( )
24
+ this . addButtons ( )
22
25
this . addCanonicalUrls ( )
23
26
}
27
+ }
28
+
29
+ disconnectedCallback ( ) {
30
+ console . log ( 'SPIDebugPanel disconnectedCallback' )
31
+ }
32
+
33
+ reset ( ) {
34
+ const buttonsContainer = this . querySelector ( '.buttons' )
35
+ if ( buttonsContainer ) buttonsContainer . remove ( )
24
36
25
- this . querySelector ( '.buttons > .hide' ) . addEventListener ( 'click' , ( ) => {
37
+ const dynamicRowElements = this . querySelectorAll ( 'tr:not([server-side])' )
38
+ dynamicRowElements . forEach ( ( row ) => row . remove ( ) )
39
+ }
40
+
41
+ addButtons ( ) {
42
+ const hideButton = document . createElement ( 'button' )
43
+ hideButton . innerText = 'Hide'
44
+ hideButton . title = 'Temporarily hide this panel'
45
+ hideButton . addEventListener ( 'click' , ( ) => {
26
46
this . classList . add ( 'hidden' )
27
47
} )
28
48
29
- this . querySelector ( '.buttons > .disable' ) . addEventListener ( 'click' , ( ) => {
30
- this . classList . add ( 'hidden' )
49
+ const disableButton = document . createElement ( 'button' )
50
+ disableButton . innerText = 'Disable'
51
+ disableButton . title = 'Disable the debug panel'
52
+ disableButton . addEventListener ( 'click' , ( ) => {
31
53
localStorage . setItem ( 'spiDebug' , 'false' )
54
+ this . classList . add ( 'hidden' )
32
55
} )
33
- }
34
56
35
- disconnectedCallback ( ) {
36
- console . log ( 'SPIDebugPanel disconnectedCallback' )
57
+ const buttonsContainer = document . createElement ( 'div' )
58
+ buttonsContainer . classList . add ( 'buttons' )
59
+ buttonsContainer . appendChild ( hideButton )
60
+ buttonsContainer . appendChild ( disableButton )
61
+ this . prepend ( buttonsContainer )
37
62
}
38
63
39
- newTableRow ( title , value ) {
64
+ newTableRow ( title , value , valueCssClass ) {
65
+ const tableElement = this . querySelector ( 'table > tbody' )
40
66
const rowElement = document . createElement ( 'tr' )
41
67
42
68
const titleCellElement = document . createElement ( 'td' )
43
69
titleCellElement . innerText = title
44
70
71
+ const valueSpanElement = document . createElement ( 'span' )
72
+ valueSpanElement . innerText = value
45
73
const valueCellElement = document . createElement ( 'td' )
46
- valueCellElement . innerText = value
74
+ valueCellElement . appendChild ( valueSpanElement )
75
+ if ( valueCssClass ) valueCellElement . classList . add ( valueCssClass )
47
76
48
77
rowElement . appendChild ( titleCellElement )
49
78
rowElement . appendChild ( valueCellElement )
50
- return rowElement
79
+ tableElement . appendChild ( rowElement )
51
80
}
52
81
53
82
addCanonicalUrls ( ) {
54
- const tableElement = this . querySelector ( 'table' )
55
83
const canonicalUrl = document . querySelector ( 'link[rel="canonical"]' ) . href
56
84
const windowUrl = window . location . href
85
+ const matchingCanonicalUrl = canonicalUrl === windowUrl
57
86
58
- tableElement . appendChild ( this . newTableRow ( 'Canonical URL' , canonicalUrl ) )
59
- tableElement . appendChild ( this . newTableRow ( 'Window URL' , windowUrl ) )
60
- tableElement . appendChild ( this . newTableRow ( 'URLs Match' , canonicalUrl === windowUrl ) )
87
+ this . newTableRow ( 'Canonical URL' , canonicalUrl )
88
+ this . newTableRow ( 'Window URL' , windowUrl )
89
+ this . newTableRow ( 'Canonical Match' , matchingCanonicalUrl , matchingCanonicalUrl ? 'green' : 'red' )
61
90
}
62
91
}
0 commit comments