src/converter/multi-slot-container-converter/multi-slot-container-converter.ts
This class is a converter to transform container items from CmsComponent to MultiSlotContainerComponentData.
Properties |
|
Methods |
|
Public convert | ||||||
convert(source: CmsComponent)
|
||||||
Parameters :
Returns :
MultiSlotContainerComponentData
|
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');