30 lines
684 B
JavaScript
30 lines
684 B
JavaScript
/**
|
|
@license
|
|
Copyright (c) 2022 trading_peter
|
|
This program is available under Apache License Version 2.0
|
|
*/
|
|
|
|
/**
|
|
* Helps to automatically query elements in the shadow dom of the extended element.
|
|
*/
|
|
export const DomQuery = function(superClass) {
|
|
return class extends superClass {
|
|
|
|
constructor() {
|
|
super();
|
|
|
|
const handler = {
|
|
get: (o, selector) => {
|
|
const root = this.shadowRoot || this;
|
|
const el = selector[0] === '?' ? root.querySelector(selector.substring(1)) : root.querySelector(`#${selector}`);
|
|
if (el !== null) {
|
|
return el;
|
|
}
|
|
}
|
|
};
|
|
|
|
this.$ = new Proxy({}, handler);
|
|
}
|
|
};
|
|
}
|