File

src/converter/teaser/fs-teaser-content-link-overlay.ts

Description

This class is a factory to create content links from a ContentLinkTemplate.

Implements

FsTeaserOverlayFactoryInterface

Index

Methods

Constructor

constructor(area: ContentLinkTemplate, positionAndDimension, semanticPathService: SemanticPathService)
Parameters :
Name Type Optional
area ContentLinkTemplate No
positionAndDimension No
semanticPathService SemanticPathService No

Methods

Public create
create()
Returns : OverlayLink
Private createContentLinkOverlay
createContentLinkOverlay(contentPageIdentifier: string, ltTooltipText: CmsInputTextFormData)
Parameters :
Name Type Optional
contentPageIdentifier string No
ltTooltipText CmsInputTextFormData No
Returns : OverlayLink
Private getLinkUrl
getLinkUrl(contentPageIdentifier: string | undefined)
Parameters :
Name Type Optional
contentPageIdentifier string | undefined No
Returns : [] | undefined
import {
  ContentLinkTemplate,
  CmsInputTextFormData,
  FsTeaserOverlayFactoryInterface,
  OverlayDimension,
  OverlayLink,
  OverlayPosition,
} from './fs-teaser.model';
import { nullSafe } from 'fs-spartacus-common';
import { SemanticPathService } from '@spartacus/core';

/**
 * This class is a factory to create content links from a {@link ContentLinkTemplate}.
 *
 * @export
 * @class FsTeaserContentLinkOverlay
 */
export class FsTeaserContentLinkOverlay implements FsTeaserOverlayFactoryInterface<OverlayLink> {
  constructor(
    private area: ContentLinkTemplate,
    private positionAndDimension: OverlayPosition & OverlayDimension,
    private semanticPathService: SemanticPathService
  ) {}

  public create(): OverlayLink {
    if (this.area.link != null && this.area.link.formData != null) {
      const { lt_page, lt_tooltip_text } = this.area.link.formData;
      if (lt_page != null && lt_page.value != null && lt_page.value.uid != null) {
        return this.createContentLinkOverlay(lt_page.value.uid, lt_tooltip_text);
      }
    }
    return undefined;
  }

  private createContentLinkOverlay(contentPageIdentifier: string, ltTooltipText: CmsInputTextFormData): OverlayLink {
    return {
      href: this.getLinkUrl(contentPageIdentifier),
      tooltip: nullSafe(ltTooltipText?.value, ''),
      ...this.positionAndDimension,
    };
  }

  private getLinkUrl(contentPageIdentifier: string | undefined): any[] | undefined {
    if (contentPageIdentifier != null && contentPageIdentifier.length > 0) {
      return this.semanticPathService.transform(contentPageIdentifier);
    }
  }
}

results matching ""

    No results matching ""