File

src/converter/multi-slot-container-converter/multi-slot-container-converter.ts

Description

This class is a converter to transform container items from CmsComponent to MultiSlotContainerComponentData.

Index

Properties
Methods

Methods

Public convert
convert(source: CmsComponent)
Parameters :
Name Type Optional
source CmsComponent No

Properties

Private target
Type : MultiSlotContainerComponentData
import { Injectable, InjectionToken } from '@angular/core';
import { Converter, CmsComponent } from '@spartacus/core';
import { MultiSlotContainerComponentData } from '../../components/multi-slot-container/multi-slot-container.model';
import { arrayify, nullSafe } from 'fs-spartacus-common';

/**
 * This class is a converter to transform container items from {@link CmsComponent} to {@link MultiSlotContainerComponentData}.
 *
 * @export
 * @class MultiSlotContainerConverter
 */
@Injectable({ providedIn: 'root' })
export class MultiSlotContainerConverter implements Converter<CmsComponent, CmsComponent> {
  private target: MultiSlotContainerComponentData;

  public convert(source: CmsComponent): MultiSlotContainerComponentData {
    this.target = {};
    const { otherProperties } = source;
    const { formData } = nullSafe(otherProperties, {});

    if (source.otherProperties != null) {
      this.target.previewId = otherProperties.previewId;
      this.target.headline = nullSafe(formData.st_title?.value, '');
      this.target.items = arrayify(formData.st_items?.value);
      this.target.items.forEach((item, i) => {
        item.childPreviewId = `#${i}`;
      });
    }

    return this.target as MultiSlotContainerComponentData;
  }
}

export const MultiSlotContainerConverterToken = new InjectionToken<Converter<CmsComponent, CmsComponent>>('MultiSlotContainerConverter');

results matching ""

    No results matching ""