@acorel/contentful-integration
Version:
Contentful integration with SAP Composable Storefront by Acorel
35 lines (28 loc) • 1.09 kB
text/typescript
import {CmsService, ComponentDecorator, ContentSlotComponentData} from "@spartacus/core";
import {Injectable, Renderer2} from "@angular/core";
import {take, tap} from "rxjs/operators";
({
providedIn: 'root',
})
export class ContentfulComponentDecorator extends ComponentDecorator {
constructor(private cmsService: CmsService) {
super();
}
decorate(element: Element, renderer: Renderer2, component?: ContentSlotComponentData): void {
if (component?.uid) {
let cmsComponent = this.cmsService.getComponentData(component?.uid);
this.cmsService.getComponentData(component.uid).subscribe(component => {
console.log('setting classes', component?.styleClasses);
if (component?.styleClasses) {
renderer.setAttribute(element, "class", component.styleClasses);
}
})
}
if (component?.graphqlComponent) {
if (component.uid) {
renderer.setAttribute(element, "data-contentful-entry-id", component.uid);
renderer.setAttribute(element, "data-contentful-field-id", "dummy");
}
}
}
}