RevelaOS/src/preloader.ts
2023-10-18 22:34:33 +01:00

39 lines
1.1 KiB
TypeScript

import flowIcon from './assets/flow.png'
class Preloader {
element: HTMLElement
constructor () {
this.element = document.createElement('preloader')
this.element.innerHTML = `
<img src="${flowIcon}" width="150px">
<div class="done"></div>
<div class="status"></div>
`
document.body.appendChild(this.element)
}
setStatus (value: string): void {
(this.element.querySelector('.status') as HTMLElement).innerText = value
}
setPending (value: string): void {
(this.element.querySelector('.done') as HTMLElement).innerHTML += `<div class="${value.split(' ').join('-')}"><i class='icon bx bx-minus' ></i>${value}</div>`
}
async setDone (value: string): Promise<void> {
const icon = this.element.querySelector('.done')?.querySelector(`.${value.split(' ').join('-')}`)?.querySelector('.icon')
icon?.classList.remove('bx-minus')
icon?.classList.add('bx-check')
await new Promise(resolve => setTimeout(resolve, 300))
}
finish (): void {
this.element.style.opacity = '0'
this.element.style.pointerEvents = 'none'
}
}
export default Preloader