Skip to content
Snippets Groups Projects
heading.tsx 1.24 KiB
Newer Older
  • Learn to ignore specific revisions
  • Markus Kaarto's avatar
    Markus Kaarto committed
    import {Component, Prop, Host, h} from '@stencil/core';
    import {HeadingVarians, HeadingSectionVariants} from '../../utils/utils';
    
    Markus Kaarto's avatar
    Markus Kaarto committed
    
    @Component({
      tag: 'hy-heading',
    
      styleUrls: {default: 'heading.scss', wide: 'heading-fw.scss'},
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      scoped: true
    
    Markus Kaarto's avatar
    Markus Kaarto committed
    })
    export class Heading {
      @Prop() heading: HeadingVarians = HeadingVarians.default;
    
      @Prop() section: HeadingSectionVariants = HeadingSectionVariants.default;
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      @Prop() negative: boolean = false;
    
    Markus Kaarto's avatar
    Markus Kaarto committed
      render() {
        const headingInVariants = this.heading in HeadingVarians;
    
    Markus Kaarto's avatar
    Markus Kaarto committed
        const classAttributes = ['hy-heading', this.negative ? 'negative' : ''];
        const sectionClassAttributes = [`hy-heading__${this.section}`].join(' ');
    
    Markus Kaarto's avatar
    Markus Kaarto committed
        return (
    
    Markus Kaarto's avatar
    Markus Kaarto committed
          <Host>
            {headingInVariants ? (
              <div class="hy-heading__container">
                <this.heading class={classAttributes.join(' ')}>
                  <slot />
                </this.heading>
    
                <span class={sectionClassAttributes}></span>
              </div>
            ) : (
              <div class="hy-heading__container">
                <HeadingVarians.default class={classAttributes.join(' ')}>
                  <slot />
                </HeadingVarians.default>
    
    Markus Kaarto's avatar
    Markus Kaarto committed
                <span class={sectionClassAttributes}></span>
              </div>
            )}
          </Host>
    
    Markus Kaarto's avatar
    Markus Kaarto committed
        );
      }
    }