| <!DOCTYPE html> |
| <body> |
| <p>Test passes if you see a single 100px by 100px green box below.</p> |
| <div id="t1"> |
| <span>FAIL</span> |
| </div> |
| <div id="t2"> |
| <span slot="second-slot">FAIL</span> |
| </div> |
| <div id="t3"> |
| <span>FAIL</span> |
| </div> |
| <div id="t4"> |
| <span>FAIL</span> |
| </div> |
| <div id="t5"> |
| <span selected>FAIL</span> |
| </div> |
| <div> |
| </div> |
| <script> |
| |
| function attachShadow(host, selector) |
| { |
| const shadow = host.attachShadow({mode: 'closed'}); |
| shadow.innerHTML = ` |
| <style> |
| :host { |
| width: 100px; |
| height: 20px; |
| background: green; |
| color: red; |
| } |
| ${selector} { |
| color: green; |
| } |
| </style> |
| <slot></slot> |
| <slot name="second-slot"></slot>`; |
| return shadow; |
| } |
| |
| { |
| const host = document.querySelector('#t1'); |
| attachShadow(host, '::slotted(.selected)'); |
| const span = host.querySelector('span'); |
| getComputedStyle(span).backgroundColor; |
| span.className = 'selected'; |
| } |
| |
| { |
| const host = document.querySelector('#t2'); |
| attachShadow(host, '[name=second-slot]::slotted(#selected)'); |
| const span = host.querySelector('span'); |
| getComputedStyle(span).backgroundColor |
| span.id = 'selected'; |
| } |
| |
| { |
| const host = document.querySelector('#t3'); |
| attachShadow(host, '::slotted([selected])'); |
| const span = host.querySelector('span'); |
| getComputedStyle(span).backgroundColor; |
| span.setAttribute('selected', 'selected'); |
| } |
| |
| { |
| const host = document.querySelector('#t4'); |
| const shadow = host.attachShadow({mode: 'closed'}); |
| shadow.innerHTML = `<div><slot></slot></div>`; |
| const deepHost = shadow.querySelector('div'); |
| attachShadow(deepHost, '::slotted(.selected)'); |
| const span = host.querySelector('span'); |
| getComputedStyle(span).backgroundColor; |
| span.className = 'selected'; |
| } |
| |
| { |
| const host = document.querySelector('#t5'); |
| const shadow = host.attachShadow({mode: 'closed'}); |
| shadow.innerHTML = `<div><slot slot="second-slot"></slot></div>`; |
| const deepHost = shadow.querySelector('div'); |
| attachShadow(deepHost, '[name=second-slot]::slotted(:not([selected]))'); |
| const span = host.querySelector('span'); |
| getComputedStyle(span).backgroundColor; |
| span.removeAttribute('selected'); |
| } |
| |
| </script> |