mirror of
https://github.com/niklasvh/html2canvas.git
synced 2023-08-10 21:13:10 +03:00
52 lines
1.8 KiB
JavaScript
52 lines
1.8 KiB
JavaScript
|
customElements.define('summary-display',
|
||
|
class extends HTMLElement {
|
||
|
constructor() {
|
||
|
super();
|
||
|
|
||
|
const template = document.getElementById('summary-display-template');
|
||
|
const templateContent = template.content;
|
||
|
|
||
|
const shadowRoot = this.attachShadow({mode: 'open'});
|
||
|
shadowRoot.appendChild(templateContent.cloneNode(true));
|
||
|
|
||
|
const items = Array.from(this.querySelectorAll('li'));
|
||
|
const descriptions = Array.from(this.querySelectorAll('p'));
|
||
|
|
||
|
items.forEach(item => {
|
||
|
handleClick(item);
|
||
|
});
|
||
|
|
||
|
descriptions.forEach(description => {
|
||
|
updateDisplay(description, items[1]);
|
||
|
});
|
||
|
|
||
|
function handleClick(item) {
|
||
|
item.addEventListener('click', function() {
|
||
|
items.forEach(item => {
|
||
|
item.style.backgroundColor = 'white';
|
||
|
});
|
||
|
|
||
|
descriptions.forEach(description => {
|
||
|
updateDisplay(description, item);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function updateDisplay(description, item) {
|
||
|
description.removeAttribute('slot');
|
||
|
|
||
|
if(description.getAttribute('data-name') === item.textContent) {
|
||
|
description.setAttribute('slot', 'choice');
|
||
|
item.style.backgroundColor = '#bad0e4';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const slots = this.shadowRoot.querySelectorAll('slot');
|
||
|
slots[1].addEventListener('slotchange', function(e) {
|
||
|
const nodes = slots[1].assignedNodes();
|
||
|
console.log(`Element in Slot "${slots[1].name}" changed to "${nodes[0].outerHTML}".`);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
);
|