|
|
|
|
@ -1,4 +1,14 @@
|
|
|
|
|
export class PageMenu extends HTMLElement {
|
|
|
|
|
icons = {}
|
|
|
|
|
|
|
|
|
|
textEn = {
|
|
|
|
|
download: 'Download',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
textEs = {
|
|
|
|
|
download: 'Descargar',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
|
super()
|
|
|
|
|
this.attachShadow({mode: 'open'})
|
|
|
|
|
@ -9,37 +19,48 @@ export class PageMenu extends HTMLElement {
|
|
|
|
|
const style = document.createElement('style')
|
|
|
|
|
style.textContent = `
|
|
|
|
|
:host {
|
|
|
|
|
background: #222;
|
|
|
|
|
color: #ddd;
|
|
|
|
|
padding: 3px;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
color: #000;
|
|
|
|
|
align-items: stretch;
|
|
|
|
|
min-width: 180px;
|
|
|
|
|
}
|
|
|
|
|
h1 {
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
margin: 0;
|
|
|
|
|
padding: 5px;
|
|
|
|
|
}
|
|
|
|
|
a {
|
|
|
|
|
display: block;
|
|
|
|
|
button {
|
|
|
|
|
background: #222;
|
|
|
|
|
font-size: 120%;
|
|
|
|
|
border: none;
|
|
|
|
|
color: inherit;
|
|
|
|
|
padding: 4px 10px;
|
|
|
|
|
text-align: left;
|
|
|
|
|
}
|
|
|
|
|
`
|
|
|
|
|
this.shadowRoot.append(style)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
add(name, handler) {
|
|
|
|
|
const btn = document.createElement('button')
|
|
|
|
|
btn.innerText = this.text[name]
|
|
|
|
|
this.shadowRoot.appendChild(btn)
|
|
|
|
|
btn.addEventListener('click', () => {
|
|
|
|
|
this.dispatchEvent(new CustomEvent(
|
|
|
|
|
'close', {bubbles: true}
|
|
|
|
|
))
|
|
|
|
|
handler()
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get language() {
|
|
|
|
|
return this._language
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set language(language) {
|
|
|
|
|
this._language = language
|
|
|
|
|
this.text = this.langEs ? this.textEs : this.textEn
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get langEs() {
|
|
|
|
|
return /^es\b/.test(this.language)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get pagesText() {
|
|
|
|
|
return this.langEs ? 'Páginas' : 'Pages'
|
|
|
|
|
}
|
|
|
|
|
}
|