import {Component, Element, h, Host, Prop} from '@stencil/core'; import {HeadingSectionVariants, HeadingVarians} from '../../utils/utils'; @Component({ tag: 'hy-heading', styleUrls: {default: 'heading.scss', wide: 'heading-fw.scss'}, scoped: true, shadow: false, }) export class Heading { /** * @type {*} */ @Prop() heading: HeadingVarians = HeadingVarians.default as any; @Prop() isSearch: boolean = false; /** * @type {*} */ @Prop() section: HeadingSectionVariants = HeadingSectionVariants.default as any; @Prop() negative: boolean = false; @Prop() headerstyle: string = 'common'; @Element() el: HTMLElement; componentDidLoad() { let hyMainDiv = this.el.closest('.hy-main'); if (hyMainDiv) { if (!hyMainDiv.classList.contains('with-sidebar')) { this.headerstyle = 'large'; } } } render() { const headingInVariants = this.heading in HeadingVarians; const isHeadingH2 = this.heading == HeadingVarians.h2; const classAttributes = [ 'hy-heading', this.negative ? 'negative' : '', this.isSearch ? 'hy-heading__search' : '', this.isSearch ? `hy-heading__search__${this.headerstyle}` : '', `hy-heading__${this.section}`, `hy-heading__${this.headerstyle}`, `hy-heading__${this.section}__${this.headerstyle}`, ]; const sectionClassAttributes = [`hy-heading__${this.section}--divider`].join(' '); const containerSectionClass = [ 'hy-heading__container', `hy-heading__container__${this.section}`, `hy-heading__container__${this.headerstyle}`, ].join(' '); return ( <Host> {headingInVariants ? ( [ <div class={containerSectionClass}> {isHeadingH2 && ( <div> <hy-box pt="1.25, 1.25, 1.5, 2.5" /> </div> )} <this.heading class={classAttributes.join(' ')}> <slot /> </this.heading> <span class={sectionClassAttributes}></span> </div>, ] ) : ( <div class={containerSectionClass}> <HeadingVarians.default class={classAttributes.join(' ')}> <span> <slot /> </span> </HeadingVarians.default> <span class={sectionClassAttributes}></span> </div> )} </Host> ); } }