// Angular imports // import { Component, Input, OnInit, AfterViewInit, Inject } from '@angular/core'; // Components // // Interfaces // // Services // // Directives // // Filters // import { PhoneNumberPipe } from '@fb/common/pipes/phoneNumber.pipe'; // Utilities // import { IFbAction } from './fb-action.interface'; /** * Visar en action tooltip vid mouseenter och focus på ett givet container-element. Tooltipen visas över ett * givet host-element. * * Syntax: * * * @param action Actionobjekt * @param model Baserat på action.type, antingen ett telefonnummer eller en e-postadress * @param hostElement Elementet som tooltipen ska visas över * @param containerElement Elementet som triggar att tooltipen visas, vid mouseover och focus */ @Component({ selector: 'fb-action', templateUrl: './fb-action.component.html' }) export class FbActionComponent implements OnInit, AfterViewInit { @Input() action: IFbAction; @Input() model: string; @Input() hostElement: HTMLElement; @Input() containerElement: HTMLElement; visible: boolean = false; anvaenderRingLaenkar: boolean; anvaenderRingLaenkarCallTo: boolean; constructor( @Inject('InstaellningarService') private readonly instaellningarService: fb.IInstaellningarService, @Inject('SideDrawerService') private readonly sideDrawerService: fb.ISideDrawerService, private readonly phoneNumberPipe: PhoneNumberPipe ) { } ngOnInit(): void { const instaellningar: { [s: number]: fb.Instaellning } = this.instaellningarService.instaellningar.instaellningar; this.anvaenderRingLaenkar = instaellningar[fb.InstaellningTyp.AnvaenderRingLaenkar.id].InstaellningVaerde.value; this.anvaenderRingLaenkarCallTo = instaellningar[fb.InstaellningTyp.AnvaenderRingLaenkarCallTo.id].InstaellningVaerde.value; } ngAfterViewInit(): void { this.containerElement.onfocus = this.show.bind(this); this.containerElement.onmouseenter = this.show.bind(this); this.containerElement.onblur = this.hide.bind(this); this.containerElement.onmouseleave = this.hide.bind(this); } private show(): void { this.visible = !!this.model; } private hide(): void { this.visible = false; } sendSMS(): void { const recipient: fb.PersonMottagare[] = [new fb.PersonMottagare({ TelefonnummerMobil: this.phoneNumberPipe.transform(this.model), PersonNamn: this.action.personNamn ? this.action.personNamn : 'Person', PersonId: undefined, EjReklam: this.action.aerSpaerrad })]; this.sideDrawerService.setSideDrawer('SMSUtskick', { recipients: recipient, maeklarObjektId: this.action.maeklarObjektId }); } sendEmail(): void { const recipient: fb.PersonMottagare[] = [new fb.PersonMottagare({ PersonNamn: this.action.personNamn ? this.action.personNamn : '', MejlAdress: this.model ? this.model : '', PersonId: null, EjReklam: null, })]; this.sideDrawerService.setSideDrawer('EpostUtskick', { recipients: recipient, sender: null, body: null, maeklarObjektId: this.action.maeklarObjektId, subject: null }); } visaContactMedHittaSe(): void { const params: any = { searchTelefonnummer: this.model, kontakt: this.action.kontaktMedHittaSeGet(), callback: this.action.kontaktMedHittaSeCallback }; if (this.sideDrawerService.currentSideDrawer()) { this.sideDrawerService.stack('KontaktMedHittaSe', params); } else { this.sideDrawerService.setSideDrawer('KontaktMedHittaSe', params); } } }