lion/src/components/ui-portal-main-nav.js
okadurin 70b0241189 feat: initial Astro integration
Co-authored-by: Oleksii Kadurin <ovkadurin@gmail.com>; Thijs Louisse <Thijs.Louisse@ing.com>
2025-10-03 09:37:32 +02:00

34 lines
865 B
JavaScript

// eslint-disable-next-line import/no-extraneous-dependencies
import { LitElement, html, nothing } from 'lit';
const tagName = 'ui-portal-main-nav';
// TODO: apply https://web.dev/website-navigation/ (aria-current="page" etc.)
export class UiPortalMainNav extends LitElement {
static properties = {
navData: { type: Array, attribute: 'nav-data' },
};
constructor() {
super();
this.navData = [];
}
render() {
return html` <nav>${this._renderNavLevel({ children: this.navData })}</nav> `;
}
_renderNavLevel({ children }) {
return html`<ul>
${children.map(
item => html`<li>
<a href="${item.url}">${item.name}</a>
${item.children?.length ? this._renderNavLevel({ children: item.children }) : nothing}
</li>`,
)}
</ul>`;
}
}
customElements.define(tagName, UiPortalMainNav);