11import template from './component.html?raw' ;
2+ import styleSheet from './style.css?raw' ;
23
34class UIHTMLElement extends HTMLElement {
45
56 connectedCallback ( ) {
6- this . innerHTML = template ;
7+ const shadow = this . attachShadow ( { mode : 'open' } )
8+
9+ // Create adoptable stylesheet
10+ const sheet = new CSSStyleSheet ( )
11+ sheet . replaceSync ( styleSheet )
12+ shadow . adoptedStyleSheets = [ sheet ]
13+
14+ shadow . innerHTML = template
715 } ;
816
917 processUIEvent ( event ) {
@@ -12,15 +20,17 @@ class UIHTMLElement extends HTMLElement {
1220 const format = event . format || "FORMAT_SIMPLE" ;
1321 const value = event . value || 0 ;
1422
15- var element = this . querySelector ( '[data-label="' + label + '"]' ) ;
23+ const container = this . shadowRoot ;
24+
25+ var element = container . querySelector ( '[data-label="' + label + '"]' ) ;
1626 if ( element === null ) {
1727 // Create new element
1828 element = document . createElement ( 'div' ) ;
1929 element . className = 'ui-value-entry' ;
2030 element . setAttribute ( 'data-label' , label ) ;
2131 element . innerHTML = `${ value } ` ;
2232
23- this . appendChild ( element ) ;
33+ container . appendChild ( element ) ;
2434 } else {
2535 element . innerHTML = `${ value } ` ;
2636 }
@@ -29,7 +39,7 @@ class UIHTMLElement extends HTMLElement {
2939 } ;
3040
3141 clear ( ) {
32- this . innerHTML = template ;
42+ this . shadowRoot . innerHTML = template ;
3343 }
3444} ;
3545
0 commit comments