src/converter/teaser/fs-teaser-text-overlay.ts
This class creates teaser text overlays.
FsTeaserOverlayFactoryInterface
Methods |
|
constructor(area: TextLinkTemplate, positionAndDimension)
|
|||||||||
Parameters :
|
Public create |
create()
|
Returns :
OverlayText
|
Private createTextOverlay | ||||||||||||||||||
createTextOverlay(ltText: CmsInputTextFormData, ltColorR: CmsInputNumberFormData, ltColorG: CmsInputNumberFormData, ltColorB: CmsInputNumberFormData, ltFontSize: CmsInputComboBoxFormData)
|
||||||||||||||||||
Parameters :
Returns :
OverlayText
|
import {
CmsInputComboBoxFormData,
CmsInputNumberFormData,
TextLinkTemplate,
CmsInputTextFormData,
FontSize,
OverlayDimension,
OverlayPosition,
OverlayText,
FsTeaserOverlayFactoryInterface,
} from './fs-teaser.model';
import { nullSafe, toRgbString } from 'fs-spartacus-common';
function isOfTypeFontSize(fontSize: string | null | undefined): fontSize is FontSize {
return ['medium', 'small', 'big'].includes(fontSize);
}
/**
* This class creates teaser text overlays.
*
* @export
* @class FsTeaserTextOverlay
*/
export class FsTeaserTextOverlay implements FsTeaserOverlayFactoryInterface<OverlayText> {
constructor(private area: TextLinkTemplate, private positionAndDimension: OverlayPosition & OverlayDimension) {}
private createTextOverlay(
ltText: CmsInputTextFormData,
ltColorR: CmsInputNumberFormData,
ltColorG: CmsInputNumberFormData,
ltColorB: CmsInputNumberFormData,
ltFontSize: CmsInputComboBoxFormData
): OverlayText {
const colorR = nullSafe(ltColorR?.value, 0);
const colorG = nullSafe(ltColorG?.value, 0);
const colorB = nullSafe(ltColorB?.value, 0);
const fontSizeString = nullSafe(ltFontSize?.value?.identifier as FontSize, '');
const fontSize = isOfTypeFontSize(fontSizeString) ? fontSizeString : 'medium';
const text: OverlayText = {
fontSize,
value: nullSafe(ltText?.value, ''),
color: toRgbString(colorR, colorG, colorB),
...this.positionAndDimension,
};
return text;
}
public create(): OverlayText {
if (this.area?.link?.formData != null) {
const { lt_color_b, lt_color_g, lt_color_r, lt_font_size, lt_text } = this.area.link.formData;
if (lt_text != null) {
return this.createTextOverlay(lt_text, lt_color_r, lt_color_g, lt_color_b, lt_font_size);
}
}
}
}