Skip to content
Snippets Groups Projects
button.ts 1.41 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { Type } from '@angular/core';
    
    import { ElementFactory } from 'common/util/element.factory';
    
    rhenck's avatar
    rhenck committed
    import {
      BasicStyles, PositionedUIElement, PositionProperties, UIElement
    } from 'common/models/elements/element';
    
    import { ButtonComponent } from 'common/components/button/button.component';
    import { ElementComponent } from 'common/directives/element-component.directive';
    
    export class ButtonElement extends UIElement implements PositionedUIElement {
    
      label: string = 'Navigationsknopf';
    
      imageSrc: string | null = null;
      asLink: boolean = false;
      action: null | 'unitNav' | 'pageNav' = null;
      actionParam: null | 'previous' | 'next' | 'first' | 'last' | 'end' | number = null;
      position: PositionProperties;
      styling: BasicStyles & {
        borderRadius: number;
      };
    
    
    rhenck's avatar
    rhenck committed
      constructor(element: Partial<ButtonElement>) {
        super(element);
    
        if (element.label !== undefined) this.label = element.label;
    
    rhenck's avatar
    rhenck committed
        if (element.imageSrc) this.imageSrc = element.imageSrc;
        if (element.asLink) this.asLink = element.asLink;
        if (element.action) this.action = element.action;
        if (element.actionParam) this.actionParam = element.actionParam;
    
        this.position = ElementFactory.initPositionProps(element.position);
        this.styling = {
          ...ElementFactory.initStylingProps<{ borderRadius: number; }>({ borderRadius: 0, ...element.styling })
        };
      }
    
    
      getElementComponent(): Type<ElementComponent> {
    
        return ButtonComponent;
      }
    }