class ResourceChart extends HTMLElement { constructor () { super(); this.attachShadow({ mode: "open" }); this.shadowRoot.innerHTML = `
`; this.responsiveStyle = this.shadowRoot.querySelector("#responsive-style"); this.canvas = this.shadowRoot.querySelector("canvas"); this.caption = this.shadowRoot.querySelector("figcaption"); } set data (data) { for (let line of data.title) { this.caption.innerHTML += `${line}` } this.canvas.role = "img"; this.canvas.ariaLabel = data.ariaLabel; const chartData = { type: "pie", data: data.data, options: { plugins: { title: { display: false }, legend: { display: false }, tooltip: { enabled: true } } }, } createChart(this.canvas, chartData); if (data.breakpoint) { this.responsiveStyle.media = `screen and (width <= ${data.breakpoint})`; } else { this.responsiveStyle.media = "not all"; } } get data () { return null; } } function createChart (ctx, data) { return new Chart(ctx, data); } customElements.define("resource-chart", ResourceChart);