Files
yellowjacket/frontend/index.ts
T
yonlu 7579a768be fix: virtual list and cover grid (#63)
* very basic slow buggy queue

* cover grid can now add albums to queue

* added virtualized lists to track list and cover grid components
2026-02-14 14:07:25 -06:00

54 lines
1.8 KiB
TypeScript

import '@components/audio-player/audio-player.ts';
import '@components/track-list/track-list.ts';
import '@components/cover-grid/cover-grid.ts';
import '@components/now-playing/now-playing.ts';
import '@components/sidebar/app-sidebar.ts';
import '@components/queue-panel/queue-panel.ts';
import '@awesome.me/webawesome/dist/styles/themes/default.css';
import '@awesome.me/webawesome/dist/components/icon/icon.js';
import { setBasePath } from '@awesome.me/webawesome/dist/webawesome.js';
setBasePath('/dist/webawesome');
// Navigation event listener for view switching
document.addEventListener('navigate', (e: Event) => {
const { view } = (e as CustomEvent).detail;
const mainContent = document.getElementById('main-content');
if (!mainContent) return;
switch (view) {
case 'albums':
mainContent.innerHTML = '<cover-grid></cover-grid>';
break;
case 'tracks':
mainContent.innerHTML = '<track-list></track-list>';
break;
default:
mainContent.innerHTML = `<div style="padding: 1em; color: #b3b3b3;">
<p>Coming soon: ${view}</p>
</div>`;
}
});
// Queue panel toggle
const queueButton = document.getElementById('queue-button');
const queuePanel = document.getElementById('queue-panel') as HTMLElement | null;
if (queueButton && queuePanel) {
queueButton.addEventListener('click', () => {
const isOpen = queuePanel.hasAttribute('open');
if (isOpen) {
queuePanel.removeAttribute('open');
} else {
queuePanel.setAttribute('open', '');
}
});
// Close panel when the component dispatches a close event
queuePanel.addEventListener('queue-panel-close', () => {
queuePanel.removeAttribute('open');
});
}