File

projects/core/src/cms/services/dynamic-attribute.service.ts

Description

Service that used to add dynamic attributes to CMS component and slot elements.

Index

Properties
Methods

Constructor

constructor(unifiedInjector: UnifiedInjector)
Parameters :
Name Type Optional
unifiedInjector UnifiedInjector No

Methods

addAttributesToComponent
addAttributesToComponent(element: Element, renderer: Renderer2, componentData?: ContentSlotComponentData)

Add dynamic attributes to CMS component element

Parameters :
Name Type Optional Description
element Element No

: CMS component element

renderer Renderer2 No
componentData ContentSlotComponentData Yes

: component data

Returns : void
addAttributesToSlot
addAttributesToSlot(element: Element, renderer: Renderer2, slotData?: ContentSlotData)

Add dynamic attributes to CMS slot element

Parameters :
Name Type Optional Description
element Element No

: CMS slot element

renderer Renderer2 No
slotData ContentSlotData Yes

: slot data

Returns : void

Properties

Private componentDecorators$
Default value : this.unifiedInjector .getMulti(ComponentDecorator) .pipe(shareReplay(1))
Private slotDecorators$
Default value : this.unifiedInjector .getMulti(SlotDecorator) .pipe(shareReplay(1))
import { Injectable, Renderer2 } from '@angular/core';
import { shareReplay } from 'rxjs/operators';
import { UnifiedInjector } from '../../lazy-loading/unified-injector';
import { getLastValueSync } from '../../util/rxjs/get-last-value-sync';
import { ComponentDecorator } from '../decorators/component-decorator';
import { SlotDecorator } from '../decorators/slot-decorator';
import { ContentSlotComponentData } from '../model/content-slot-component-data.model';
import { ContentSlotData } from '../model/content-slot-data.model';

/**
 * Service that used to add dynamic attributes to CMS component
 * and slot elements.
 */
@Injectable({
  providedIn: 'root',
})
export class DynamicAttributeService {
  private componentDecorators$ = this.unifiedInjector
    .getMulti(ComponentDecorator)
    .pipe(shareReplay(1));

  private slotDecorators$ = this.unifiedInjector
    .getMulti(SlotDecorator)
    .pipe(shareReplay(1));

  constructor(protected unifiedInjector: UnifiedInjector) {}

  /**
   * Add dynamic attributes to CMS component element
   * @param element: CMS component element
   * @param renderer
   * @param componentData: component data
   */
  addAttributesToComponent(
    element: Element,
    renderer: Renderer2,
    componentData?: ContentSlotComponentData
  ) {
    (getLastValueSync(this.componentDecorators$) || []).forEach((decorator) =>
      decorator.decorate(element, renderer, componentData)
    );
  }

  /**
   * Add dynamic attributes to CMS slot element
   * @param element: CMS slot element
   * @param renderer
   * @param slotData: slot data
   */
  addAttributesToSlot(
    element: Element,
    renderer: Renderer2,
    slotData?: ContentSlotData
  ) {
    (getLastValueSync(this.slotDecorators$) || []).forEach((decorator) =>
      decorator.decorate(element, renderer, slotData)
    );
  }
}

result-matching ""

    No results matching ""