Newer
Older
import {Component, ComponentInterface, Prop, h, Host, Element} from '@stencil/core';

Ekaterina Kondareva
committed
tag: 'hy-adjacent-image-text',
styleUrl: 'adjacent-image-text.scss',

Ekaterina Kondareva
committed
export class AdjacentImageText implements ComponentInterface {
@Element() el: HTMLElement;
@Prop() headerstyle: string = 'default';
Ekaterina Kondareva
committed
@Prop() imageUrl: string = null;
Ekaterina Kondareva
committed
@Prop() textTitle?: string;
@Prop() textDescription: string = null;
Ekaterina Kondareva
committed
Ekaterina Kondareva
committed
@Prop() mainUrl?: string;
@Prop() mainUrlTitle?: string;
@Prop() mainUrlAriaLabel?: string;
@Prop() mainUrlIsExternal: boolean = false;
Ekaterina Kondareva
committed
@Prop() mainUrl2?: string;
@Prop() mainUrlTitle2?: string;
@Prop() mainUrlAriaLabel2?: string;
@Prop() mainUrlIsExternal2: boolean = false;
componentDidLoad() {
let hyMainDiv = this.el.closest('.hy-main');
if (hyMainDiv) {
if (!hyMainDiv.classList.contains('with-sidebar')) {
this.headerstyle = 'large';
}
}
}
const classAttributes = ['hy-adjacent-image-text', `hy-adjacent-image-text__${this.headerstyle}`].join(' ');
Ekaterina Kondareva
committed
const contentClassAttributes = [

Ekaterina Kondareva
committed
'hy-adjacent-image-text__text-container',
'hy-adjacent-image-text__text-container--left',
Ekaterina Kondareva
committed

Ekaterina Kondareva
committed
const imageLeftClassAttributes = ['hy-adjacent-image-text__image-container'].join(' ');
const aspectRatioWidth = 6;
const aspectRatioHeight = 4;
Ekaterina Kondareva
committed
const aspect = (aspectRatioHeight / aspectRatioWidth) * 100;
const aspectRatio = {
'--aspectRatio': `${aspect}%` as 'aspectRatio',
Ekaterina Kondareva
committed
};
<Host>
<div class={classAttributes}>
<div class={imageLeftClassAttributes} style={aspectRatio}>
<img alt={this.imageAlt} class="hy-image__image" src={this.imageUrl} />
<div class={contentClassAttributes}>
<div class="hy-adjacent-image-text__text-container__info-wrapper">
<div class="hy-adjacent-image-text__text-container__title">{this.textTitle}</div>
<p
class={`hy-adjacent-image-text__text-container__description hy-adjacent-image-text__text-container__description__${this.headerstyle}`}
>
{this.textDescription}
</p>
</div>
<div class="hy-adjacent-image-text__text-container__links-wrapper">
{this.mainUrl && (
<div class="hy-adjacent-image-text__text-container__link">
<hy-cta-link
link-content={this.mainUrlTitle}
sc-label={this.mainUrlAriaLabel}
url={this.mainUrl}
is-external={this.mainUrlIsExternal}
/>
</div>
)}
{this.mainUrl2 && (
<div class="hy-adjacent-image-text__text-container__link">
<hy-cta-link
link-content={this.mainUrlTitle2}
sc-label={this.mainUrlAriaLabel2}
url={this.mainUrl2}
is-external={this.mainUrlIsExternal2}
/>
</div>
)}
</div>
Ekaterina Kondareva
committed
</div>
</div>