File

projects/storefrontlib/cms-components/content/banner/banner.component.ts

Metadata

changeDetection ChangeDetectionStrategy.OnPush
selector cx-banner
templateUrl ./banner.component.html

Index

Properties
Methods
HostBindings

Constructor

constructor(component: CmsComponentData<CmsBannerComponent>)
Parameters :
Name Type Optional
component CmsComponentData<CmsBannerComponent> No

HostBindings

class
Type : string | undefined

Methods

getImage
getImage(data: CmsBannerComponent)
Parameters :
Name Type Optional
data CmsBannerComponent No
getTarget
getTarget(data: CmsBannerComponent)

Returns _blank to force opening the link in a new window whenever the data.external flag is set to true.

Parameters :
Name Type Optional
data CmsBannerComponent No
Returns : string | null

Properties

data$
Type : Observable<CmsBannerComponent>
Default value : this.component.data$.pipe( tap((data) => (this.styleClasses = data.styleClasses)) )
styleClasses
Type : string | undefined
Decorators :
@HostBinding('class')
import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
import { CmsBannerComponent, Image, ImageGroup } from '@spartacus/core';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import { CmsComponentData } from '../../../cms-structure/page/model/cms-component-data';

@Component({
  selector: 'cx-banner',
  templateUrl: './banner.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class BannerComponent {
  @HostBinding('class') styleClasses: string | undefined;

  data$: Observable<CmsBannerComponent> = this.component.data$.pipe(
    tap((data) => (this.styleClasses = data.styleClasses))
  );

  constructor(protected component: CmsComponentData<CmsBannerComponent>) {}

  /**
   * Returns `_blank` to force opening the link in a new window whenever the
   * `data.external` flag is set to true.
   */
  getTarget(data: CmsBannerComponent): string | null {
    return data.external === 'true' || data.external === true ? '_blank' : null;
  }

  getImage(data: CmsBannerComponent): Image | ImageGroup | undefined {
    if (data.media) {
      if ('url' in data.media) {
        return data.media as Image;
      } else {
        return data.media as ImageGroup;
      }
    }
  }
}
<ng-container *ngIf="data$ | async as data">
  <cx-generic-link
    *ngIf="data.urlLink"
    [url]="data.urlLink"
    [target]="getTarget(data)"
  >
    <p class="headline" *ngIf="data.headline" [innerHTML]="data.headline"></p>
    <cx-media [container]="getImage(data)"></cx-media>
    <p class="content" *ngIf="data.content" [innerHTML]="data.content"></p>
  </cx-generic-link>
</ng-container>
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""