File

src/converter/teaser/fs-teaser.model.ts

Extends

CmsComponent

Index

Properties

Properties

href
href: string
Type : string
Optional
media
media: MediaData
Type : MediaData
Optional
overlays
overlays: literal type
Type : literal type
Optional
previewId
previewId: string
Type : string
Optional
import { CmsComponent, Product } from '@spartacus/core';
import { Observable } from 'rxjs';

export interface MediaData {
  url: string | null;
  resolution: string;
  resolutions: {
    [k: string]: ResolutionMetaDataElement;
  };
  altText?: string;
  mime?: string;
  previewId?: string;
}

export type FontSize = 'medium' | 'big' | 'small';

export interface TextData {
  value: string;
  fontSize: FontSize;
  color: string;
}

/**
 * This interface represents information of a category, product or content link.
 *
 * @export
 * @interface LinkData
 */
export interface LinkData {
  href: any[] | string | undefined;
  product?: Observable<Product>;
  tooltip: string;
}

export interface OverlayDimension {
  width?: number;
  height?: number;
  widthRatio?: string;
  heightRatio?: string;
}

export interface OverlayPosition {
  left?: string;
  right?: string;
  top?: string;
  bottom?: string;
}

export type OverlayText = TextData & OverlayPosition & OverlayDimension;

export type OverlayLink = LinkData & OverlayPosition & OverlayDimension;

export type OverlayImage = MediaData & OverlayPosition & OverlayDimension;

export interface TeaserComponentData extends CmsComponent {
  previewId?: string;
  media?: MediaData;
  href?: string;
  overlays?: {
    images: OverlayImage[];
    texts: OverlayText[];
    links: OverlayLink[];
  };
}

export interface FsTeaserOverlayFactoryInterface<T> {
  create(): T;
}

export interface ResolutionMetaDataElement {
  fileSize: number;
  extension: string;
  mimeType: string;
  width: number;
  height: number;
  url: string;
}

export interface CaasMediaDocument {
  _id: string;
  fsType: string;
  name: string;
  displayName: string;
  identifier: string;
  uid: string;
  uidType: string;
  fileName: string;
  languageDependent: boolean;
  mediaType: string;
  description: string | null;
  metaFormData: Record<string, unknown>;
  resolutionsMetaData: {
    [k: string]: ResolutionMetaDataElement;
  };
  locale: {
    identifier: string;
    country: string;
    language: string;
  };
  previewId: string;
}

export interface AreaItem {
  fsType: 'Area';
  areaType: 'rect';
  leftTop: {
    x: number;
    y: number;
  };
  rightBottom: {
    x: number;
    y: number;
  };
}

export interface CmsInputTextFormData {
  fsType: 'CMS_INPUT_TEXT';
  identifier: string;
  value: string;
}

export interface CmsInputComboBoxFormData {
  fsType: 'CMS_INPUT_COMBOBOX';
  identifier: string;
  value: {
    fsType: 'Option';
    label: string;
    identifier: string;
  };
}

export interface CmsInputNumberFormData {
  fsType: 'CMS_INPUT_NUMBER';
  identifier: string;
  value: string;
}

export interface CmsMediaFormData {
  fsType: 'FS_REFERENCE';
  value: {
    fsType: 'Media';
    url: string;
    resolutions: CaasMediaDocument;
  };
}

export interface FsIndexFormData {
  fsType: 'FS_INDEX';
  value: Array<{
    fsType: 'Record';
    identifier: string;
  }>;
}

export interface FsReferenceFormData {
  fsType: 'FS_REFERENCE';
  value: {
    fsType: 'PageRef';
    name: string;
    identifier: string;
    uid: string;
    uidType: 'SITESTORE_LEAF';
    url: string;
  };
}

export interface TextLinkTemplate extends AreaItem {
  link: {
    template: {
      uid: string;
    };
    formData: {
      lt_color_r: CmsInputNumberFormData;
      lt_color_g: CmsInputNumberFormData;
      lt_color_b: CmsInputNumberFormData;
      lt_font_size: CmsInputComboBoxFormData;
      lt_text: CmsInputTextFormData;
    };
  };
}

export interface SearchLinkLinkTemplate extends AreaItem {
  link: {
    template: {
      uid: string;
    };
    formData: {
      lt_search_term: CmsInputTextFormData;
      lt_tooltip_text: CmsInputTextFormData;
    };
  };
}

export interface CategoryLinkTemplate extends AreaItem {
  link: {
    template: {
      uid: string;
    };
    formData: {
      lt_category: FsIndexFormData;
      lt_tooltip_text: CmsInputTextFormData;
    };
  };
}

export interface ProductLinkTemplate extends AreaItem {
  link: {
    template: {
      uid: string;
    };
    formData: {
      lt_product: FsIndexFormData;
      lt_tooltip_text: CmsInputTextFormData;
    };
  };
}

export interface ImageLinkTemplate extends AreaItem {
  link: {
    template: {
      uid: string;
    };
    formData: {
      st_alt_text: CmsInputTextFormData;
      st_picture: CmsMediaFormData;
    };
  };
}

export interface ContentLinkTemplate extends AreaItem {
  link: {
    template: {
      uid: string;
    };
    formData: {
      lt_page: FsReferenceFormData;
      lt_tooltip_text: CmsInputTextFormData;
    };
  };
}

export interface PictureMetaData {
  width: number;
  height: number;
  mimeType: string;
}

export interface CmsImageMapMedia {
  fsType: 'Media';
  url: string;
  resolutions: CaasMediaDocument;
  pictureMetaData: PictureMetaData;
}

export interface CmsImageMapResolution {
  fsType: string;
  uid: string;
  width: number;
  height: number;
}

export interface CmsImageMap {
  fsType: 'CMS_INPUT_IMAGEMAP';
  value: {
    areas: Array<ImageLinkTemplate | TextLinkTemplate | SearchLinkLinkTemplate | CategoryLinkTemplate | ProductLinkTemplate>;
    media: CmsImageMapMedia;
    resolution: CmsImageMapResolution;
  };
}

export interface ExpectedTeaserStructureFromCaas extends CmsComponent {
  otherProperties?: {
    previewId: string;
    formData: {
      [k: string]: CmsImageMap | CmsInputTextFormData;
    };
  };
}

results matching ""

    No results matching ""