Skip to content
Snippets Groups Projects
hy-list-item.tsx 1.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • import {Component, h, Prop} from '@stencil/core';
    
    @Component({
      tag: 'hy-list-item',
      styleUrl: 'hy-list-item.scss',
      shadow: false,
    })
    export class HyListItem {
      @Prop() itemType?: string;
      @Prop() itemTitle?: string;
      @Prop() itemDescription?: string;
      @Prop() url?: string;
      @Prop() isExternal: boolean = false;
      @Prop() scLabel?: string;
    
      render() {
        const classAttributes = ['hy-list-item'].join(' ');
        const target = this.isExternal ? '_blank' : '_self';
    
        return (
          <article>
            <a class={classAttributes} href={this.url} target={target} aria-label={this.scLabel}>
              <div class="hy-list-item__info-container">
                <div class="hy-list-item__info-container__header">{this.itemType}</div>
                <div class="hy-list-item__info-container__title">{this.itemTitle}</div>
    
                <div class="hy-list-item__info-container__link-container">
                  <span class="hy-list-item__info-container__link__icon">
                    <hy-icon icon={'hy-icon-link'} size={15} />
                  </span>
                  <div class="hy-list-item__info-container__link">{this.url}</div>
                </div>
    
                {this.itemDescription && (
                  <div class="hy-list-item__info-container__description">{this.itemDescription}</div>
                )}
              </div>
            </a>
          </article>
        );
      }
    }