// Angular imports // import { Component, OnInit, Input } from '@angular/core'; declare const angular: angular.IAngularStatic; // Components // // Interfaces // // Services // // Directives // // Other classes // import { FbFormWithOptionsBase } from '../fbFormWithOptionsBase'; import * as statics from '@fb/statics'; const styles: any[] = [require('./fb-form-dropdown.component.less')]; /** * Visar en dropdown * * Syntax: * * * @param model Modell * @param label Label att visa. Visas inte om tight eller noLabel är satt * @param disabled Disabled om satt till true * @param disableReason Används som tooltip vid disabled * @param noLabel Sätt till true för att dölja label * @param name Ange om man vill att name-attributet ska sättas * @param options Lista med objekt över de val som finns * @param showAttr Namn på vad propertyn som ska visas för objekten i listan heter * @param valueAttr Namn på vad propertyn som är värdet för objekten i listan heter, detta denna model.value matchar mot */ @Component({ selector: 'fb-form-dropdown', templateUrl: './fb-form-dropdown.component.html', styles: styles }) export class FbFormDropdownComponent extends FbFormWithOptionsBase implements OnInit { @Input() name: string; // @Input() adaptiveLabel: any; // Denna ska inte implementeras. Används ingenstans // @Input() modelNotInOptionsFn: any; // Denna ska inte implementeras. Separation of concerns! constructor() { super(); } ngOnInit(): void { super.ngOnInit(); if (!this.name) { this.name = statics.Guid.new(); } // Detta borde inte behövas // var selectElement = element.find('select'); // // Konsekvent beteende för att direkt välja val i select vid tangentbordsnavigering // selectElement.bind("keyup", function () { // selectElement.triggerHandler("change"); // }); } missValue(): boolean { let nullable: boolean = false; const self: FbFormDropdownComponent = this; angular.forEach(this.options, option => { if (option[self.valueAttr] === null) { nullable = true; } }); const isNull: boolean = this.model ? (this.model.value === null) : true; return isNull && !nullable; } }