|
|
|
@ -15,6 +15,18 @@ export class Header extends HTMLElement { |
|
|
|
</svg>`, |
|
|
|
} |
|
|
|
|
|
|
|
textEn = { |
|
|
|
download: 'Download', |
|
|
|
rename: 'Rename', |
|
|
|
delete: 'Delete', |
|
|
|
} |
|
|
|
|
|
|
|
textEs = { |
|
|
|
download: 'Descargar', |
|
|
|
rename: 'Renombrar', |
|
|
|
delete: 'Borrar', |
|
|
|
} |
|
|
|
|
|
|
|
constructor() { |
|
|
|
super() |
|
|
|
this.editing = false |
|
|
|
@ -36,6 +48,94 @@ export class Header extends HTMLElement { |
|
|
|
}) |
|
|
|
this.addMenu() |
|
|
|
this.addPageMenu() |
|
|
|
//this.addDialogPanel()
|
|
|
|
} |
|
|
|
|
|
|
|
connectedCallback() { |
|
|
|
const style = document.createElement('style') |
|
|
|
style.textContent = ` |
|
|
|
:host { |
|
|
|
background: #111; |
|
|
|
color: #ddd; |
|
|
|
display: flex; |
|
|
|
flex-direction: row; |
|
|
|
padding: 0 4px; |
|
|
|
} |
|
|
|
button { |
|
|
|
border: none; |
|
|
|
background: inherit; |
|
|
|
color: inherit; |
|
|
|
font-size: 30px; |
|
|
|
width: 32px; |
|
|
|
} |
|
|
|
div.divider { |
|
|
|
flex-grow: 1; |
|
|
|
} |
|
|
|
div.menu { |
|
|
|
position: fixed; |
|
|
|
top: 0; |
|
|
|
left: -90vw; |
|
|
|
height: 100vh; |
|
|
|
width: 90vw; |
|
|
|
background-color: #fff; |
|
|
|
transition: left .25s ease-in-out; |
|
|
|
} |
|
|
|
div.menu.open { |
|
|
|
left: 0; |
|
|
|
} |
|
|
|
div.overlay { |
|
|
|
position: fixed; |
|
|
|
top: 0; |
|
|
|
left: -100vw; |
|
|
|
height: 100vh; |
|
|
|
width: 100vw; |
|
|
|
opacity: 0%; |
|
|
|
transition: opacity .25s ease-in; |
|
|
|
background: #777; |
|
|
|
} |
|
|
|
div.overlay.closing { |
|
|
|
left: 0; |
|
|
|
} |
|
|
|
div.overlay.open { |
|
|
|
left: 0; |
|
|
|
opacity: 15%; |
|
|
|
} |
|
|
|
div.overlay.open.dialog { |
|
|
|
opacity: 50%; |
|
|
|
} |
|
|
|
button.page { |
|
|
|
position: relative; |
|
|
|
} |
|
|
|
div.page-menu { |
|
|
|
position: fixed; |
|
|
|
top: 34px; |
|
|
|
right: 0; |
|
|
|
display: flex; |
|
|
|
align-items: flex-end; |
|
|
|
margin-right: 0; |
|
|
|
display: none; |
|
|
|
} |
|
|
|
div.page-menu.open { |
|
|
|
display: block; |
|
|
|
} |
|
|
|
svg { |
|
|
|
width: 20px; |
|
|
|
height: 20px; |
|
|
|
} |
|
|
|
div.dialog-panel { |
|
|
|
position: fixed; |
|
|
|
top: 34px; |
|
|
|
left: 0; |
|
|
|
right: 0; |
|
|
|
bottom: 0; |
|
|
|
display: flex; |
|
|
|
align-items: flex-end; |
|
|
|
} |
|
|
|
div.page-menu.open { |
|
|
|
display: block; |
|
|
|
} |
|
|
|
` |
|
|
|
this.shadowRoot.append(style) |
|
|
|
} |
|
|
|
|
|
|
|
addButton(html, cls, onClick) { |
|
|
|
@ -90,15 +190,36 @@ export class Header extends HTMLElement { |
|
|
|
el.click() |
|
|
|
this.shadowRoot.removeChild(el) |
|
|
|
}) |
|
|
|
/*this.pageMenu.add('rename', () => { |
|
|
|
const dialog = document.createElement('m-dialog') |
|
|
|
dialog.title = this.text.rename |
|
|
|
this.showDialog(dialog) |
|
|
|
}) |
|
|
|
this.pageMenu.add('delete', () => { |
|
|
|
|
|
|
|
})*/ |
|
|
|
this.pageMenu.addEventListener('close-menu', () => { |
|
|
|
this.close() |
|
|
|
}) |
|
|
|
|
|
|
|
this.pageMenuPanel = document.createElement('div') |
|
|
|
this.pageMenuPanel.appendChild(this.pageMenu) |
|
|
|
this.pageMenuPanel.classList.add('page-menu') |
|
|
|
this.shadowRoot.appendChild(this.pageMenuPanel) |
|
|
|
} |
|
|
|
|
|
|
|
addDialogPanel() { |
|
|
|
this.dialogPanel = document.createElement('div') |
|
|
|
this.dialogPanel.classList.add('dialog-panel') |
|
|
|
this.shadowRoot.appendChild(this.dialogPanel) |
|
|
|
} |
|
|
|
|
|
|
|
showDialog(dialog) { |
|
|
|
this.overlay.classList.add('open', 'dialog') |
|
|
|
this.dialogPanel.replaceChildren(dialog) |
|
|
|
this.dialogPanel.classList.add('open') |
|
|
|
} |
|
|
|
|
|
|
|
close() { |
|
|
|
this.overlay.classList.add('closing') |
|
|
|
this.overlay.classList.remove('open') |
|
|
|
@ -109,78 +230,6 @@ export class Header extends HTMLElement { |
|
|
|
}, 250) |
|
|
|
} |
|
|
|
|
|
|
|
connectedCallback() { |
|
|
|
const style = document.createElement('style') |
|
|
|
style.textContent = ` |
|
|
|
:host { |
|
|
|
width: 100%; |
|
|
|
background: #111; |
|
|
|
color: #ddd; |
|
|
|
display: flex; |
|
|
|
flex-direction: row; |
|
|
|
} |
|
|
|
button { |
|
|
|
border: none; |
|
|
|
background: inherit; |
|
|
|
color: inherit; |
|
|
|
font-size: 24px; |
|
|
|
width: 30px; |
|
|
|
} |
|
|
|
div.divider { |
|
|
|
flex-grow: 1; |
|
|
|
} |
|
|
|
div.menu { |
|
|
|
position: fixed; |
|
|
|
top: 0; |
|
|
|
left: -90vw; |
|
|
|
height: 100vh; |
|
|
|
width: 90vw; |
|
|
|
background-color: #fff; |
|
|
|
transition: left .25s ease-in-out; |
|
|
|
} |
|
|
|
div.menu.open { |
|
|
|
left: 0; |
|
|
|
} |
|
|
|
div.overlay { |
|
|
|
position: fixed; |
|
|
|
top: 0; |
|
|
|
left: -100vw; |
|
|
|
height: 100vh; |
|
|
|
width: 100vw; |
|
|
|
opacity: 0%; |
|
|
|
transition: opacity .25s ease-in; |
|
|
|
background: #777; |
|
|
|
} |
|
|
|
div.overlay.closing { |
|
|
|
left: 0; |
|
|
|
} |
|
|
|
div.overlay.open { |
|
|
|
left: 0; |
|
|
|
opacity: 15%; |
|
|
|
} |
|
|
|
button.page { |
|
|
|
position: relative; |
|
|
|
} |
|
|
|
div.page-menu { |
|
|
|
position: fixed; |
|
|
|
top: 34px; |
|
|
|
right: 0; |
|
|
|
display: flex; |
|
|
|
align-items: flex-end; |
|
|
|
margin-right: 0; |
|
|
|
display: none; |
|
|
|
} |
|
|
|
div.page-menu.open { |
|
|
|
display: block; |
|
|
|
} |
|
|
|
svg { |
|
|
|
width: 20px; |
|
|
|
height: 20px; |
|
|
|
} |
|
|
|
` |
|
|
|
this.shadowRoot.append(style) |
|
|
|
} |
|
|
|
|
|
|
|
getPages() { |
|
|
|
return Object.keys(localStorage).slice().sort() |
|
|
|
} |
|
|
|
@ -199,4 +248,17 @@ export class Header extends HTMLElement { |
|
|
|
get editIcon() { |
|
|
|
return this.editing ? this.icons.check : this.icons.edit |
|
|
|
} |
|
|
|
|
|
|
|
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) |
|
|
|
} |
|
|
|
} |