UNPKG

angular-jsf-components

Version:
71 lines (62 loc) 1.94 kB
import {Component, EventEmitter, Input, Output} from '@angular/core'; import {IAjaxEventParameter} from '../../interfaces/ajax-event-parameter'; import {HFormService} from '../../services/h-form.service'; import {JsfService} from '../../services/jsf.service'; import {JsfCore} from '../../superclass/jsf-core'; @Component({ selector: 'f-ajax', templateUrl: './f-ajax.component.html', styleUrls: ['./f-ajax.component.css'], }) export class FAjaxComponent { @Input() event = 'click'; @Input() execute: string; // just for compatibility purposes, angular renders what is has to render anyway @Input() render: string; @Input() immediate = false; @Output() listener = new EventEmitter<IAjaxEventParameter>(); this: object; constructor(private hFormService: HFormService, private jsfService: JsfService) { } /** * trigger ajax call */ call(caller: JsfCore) { let execElem: JsfCore; let renderElem: JsfCore; switch (this.execute) { case '@all': execElem = this.jsfService.all; break; case '@form': execElem = this.hFormService.form; break; case '@this': default: execElem = caller; break; } switch (this.render) { // @all is no longer useful, the ajax function itself is contained in the page component itself which is basically @all case '@all': renderElem = this.jsfService.all; break; case '@form': renderElem = this.hFormService.form; break; case '@this': default: renderElem = caller; break; } this.listener.emit({ render: renderElem, exec: execElem, }); } }