Newer
Older
iuav-ui / src / components / header / header-navbar-submenu-section.ts
/**
 * @license
 * Copyright 2019 Google LLC
 * SPDX-License-Identifier: BSD-3-Clause
 */

import {LitElement, html, css} from 'lit';
import {customElement, property} from 'lit/decorators.js';

/**
 * An example element.
 */

@customElement('iu-header-navbar-submenu-section')

export class SiteHeaderNavbarSubmenuSection extends LitElement {
  static override styles = css`
    :host{
      display: block;
      line-height: 1;
    }
    :host > li{
      break-inside: avoid;
      user-select: none;
      display: block;
    }
    li{
      margin: 0;
      padding: 0;
    }
    .section{
      padding-left: 0.125rem;
      font-weight: 700;
      border-bottom: 1px solid var(--iu-color-grey-200);
    }
    .section.no-submenu{
    }
    a{
      display: inline-block;
      width: 100%;
      box-sizing: border-box;
      text-decoration: none;
      color: var(--iu-color-black);
      padding-top: .5rem;
      padding-bottom: .5rem;
      font: var(--iu-f-0);
    }
    a:hover{
      background: var(--iu-color-black);
      color: var(--iu-color-white);
      border-color: var(--iu-color-black);
    }
    :host > li{
      margin-top: -1px;
    }
    :host > li > a {
      border-top: 1px solid var(--iu-color-black);
    }
    ul{
      margin: 0;
      padding: 0;
      list-style-type: none;
      width: 100%;
    }
    ul li {
      display: inline-block;
      width: 100%;
    }
    ul li:not(:last-child){
    }
    ul li a{
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      border-bottom: 1px solid var(--iu-color-grey-200);
    }
    ul li a span{
      grid-column: 2/5;
    }
  `;

  @property() href : string = '';
  @property() text : string = '';
  @property({ type: Array }) items: Array<{ text: string; href: string }> = [];

  override render() {
    return html`
      <li>
        <a class="section ${this.items.length == 0 ? `no-submenu` : ''}" href="${this.href}">${this.text}</a>
        ${this.items.length > 0 ? 
          html`
            <ul>
              ${this.items.map(
                (item) => html`
                  <li>
                    <a href="${item.href}"><span>${item.text}</span></a>
                  </li>
                `
              )} 
            </ul>
          ` : ''
        }
      </li>
    `;
  }

}

declare global {
  interface HTMLElementTagNameMap {
    'iu-header-navbar-submenu-section': SiteHeaderNavbarSubmenuSection;
  }
}