{"version":3,"file":"sin-directives.mjs","sources":["../../../projects/sin-directives/src/lib/directives/debounce-change.directive.ts","../../../projects/sin-directives/src/lib/directives/file-drag-and-drop.directive.ts","../../../projects/sin-directives/src/lib/directives/sin-table-sortable.directive.ts","../../../projects/sin-directives/src/lib/validators/sin-ngb-date-picker-validator.ts","../../../projects/sin-directives/src/lib/directives/sin-ngb-date-picker.directive.ts","../../../projects/sin-directives/src/lib/enum/lingua.enum.ts","../../../projects/sin-directives/src/lib/directives/sin-error.directive.ts","../../../projects/sin-directives/src/lib/directives/allow-input.directive.ts","../../../projects/sin-directives/src/lib/directives/percentage.directive.ts","../../../projects/sin-directives/src/lib/directives/thousand-separator.directive.ts","../../../projects/sin-directives/src/lib/directives/difference-from-default-value.directive.ts","../../../projects/sin-directives/src/lib/sin-directives.module.ts","../../../projects/sin-directives/src/public-api.ts","../../../projects/sin-directives/src/sin-directives.ts"],"sourcesContent":["import {Directive, Input, Output, EventEmitter, HostListener, OnInit, OnDestroy} from '@angular/core';\r\nimport { Subject, Subscription  } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n/**\r\n * Direttiva che da un debounce in ascolto sull'evento \"keyup\"\r\n */\r\n@Directive({\r\n  selector: '[SinDebounceChange]'\r\n})\r\nexport class SinDebounceChangeDirective implements OnInit, OnDestroy {\r\n  /**\r\n   * Tempo di delay\r\n   */\r\n  @Input() debounceTime = 500;\r\n\r\n  /**\r\n   * Evento che scaturisce alla fine del delay\r\n   */\r\n  @Output() debounceChange = new EventEmitter();\r\n  private digits = new Subject();\r\n  private subscription: Subscription;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n    this.subscription = this.digits.pipe(\r\n      debounceTime(this.debounceTime)\r\n    ).subscribe(e => this.debounceChange.emit(e));\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subscription.unsubscribe();\r\n  }\r\n\r\n  @HostListener('keyup', ['$event'])\r\n  clickEvent(event) {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.digits.next(event);\r\n  }\r\n\r\n}\r\n","\r\nimport { Directive, Output, EventEmitter, HostBinding, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[SinDragDrop]'\r\n})\r\nexport class SinDragDropDirective {\r\n\r\n  @Output() file = new EventEmitter<any>();\r\n\r\n  @HostBinding('style.background-color') private background = '#f5fcff';\r\n  @HostBinding('style.opacity') private opacity = '1';\r\n\r\n  // Dragover listener\r\n  @HostListener('dragover', ['$event']) public onDragOver(evt: DragEvent) {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n    this.background = '#9ecbec';\r\n    this.opacity = '0.8';\r\n  }\r\n\r\n  // Dragleave listener\r\n  @HostListener('dragleave', ['$event']) public onDragLeave(evt: DragEvent) {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n    this.background = '#f5fcff';\r\n    this.opacity = '1';\r\n  }\r\n\r\n  // Drop listener\r\n  @HostListener('drop', ['$event']) public onDrop(evt: DragEvent) {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n    this.background = '#f5fcff';\r\n    this.opacity = '1';\r\n    const files = evt.dataTransfer.files;\r\n    if (files.length > 0) {\r\n      this.file.emit(files);\r\n    }\r\n  }\r\n\r\n}\r\n\r\n","import {Directive, EventEmitter, Input, Output} from '@angular/core';\r\n\r\nexport type SortDirection = 'asc' | 'desc' | '';\r\nconst rotate: {[key: string]: SortDirection} = { asc : 'desc', desc: '', '': 'asc' };\r\n\r\nexport interface SortEvent {\r\n  field: string;\r\n  dir: SortDirection;\r\n  dataTypeForSort?: string;\r\n}\r\n\r\n@Directive({\r\n  selector: 'th[sortable]',\r\n  host: {\r\n    '[class.asc]': 'direction === \"asc\"',\r\n    '[class.desc]': 'direction === \"desc\"',\r\n    '(click)': 'rotate()'\r\n  }\r\n})\r\nexport class SinTableSortableDirective {\r\n\r\n  @Input() sortable: string;\r\n  @Input() direction: SortDirection = '';\r\n  @Output() sort = new EventEmitter<SortEvent>();\r\n\r\n  rotate() {\r\n    this.direction = rotate[this.direction];\r\n    this.sort.emit({field: this.sortable, dir: this.direction});\r\n  }\r\n}\r\n","import {AbstractControl, ValidatorFn} from '@angular/forms';\r\nimport {Datetime} from '../enum/datetime.enum';\r\nimport * as moment_ from 'moment';\r\nconst moment = (moment_ as any).default ? (moment_ as any).default : moment_;\r\n\r\n\r\nexport function sinNgbDatePickerValidator(): ValidatorFn {\r\n  return (control: AbstractControl): { [key: string]: any } | null => {\r\n    if (control.value == null || control.value === '') {\r\n      return null;\r\n    } else {\r\n      /*Se il value del datepicker è in formato DD/MM/YYYY vuol dire che il maiale di ngbDatePicker ha visto che la data non è valida e non ha chiamato il toModel del sin-date-adapter, quindi so già a prescindere\r\n        che la data non è valida. Se semplicemente chiamasse comunque il toModel oppure mettesse valid = false al control si poteva fare un controllo un pò più fine...\r\n      */\r\n      if (control.value.length === Datetime.DATE_MOMENT_VIEW_FORMAT.length) {\r\n        return {sinNgbDateInvalid: {value: control.value}};\r\n      } else {\r\n        const momentDate = moment(control.value, Datetime.DATE_MODEL_FORMAT);\r\n        const isValidDate = momentDate.isValid();\r\n        return isValidDate ? null : {sinNgbDateInvalid: {value: control.value}};\r\n      }\r\n    }\r\n  };\r\n}\r\n","import {AbstractControl, NG_VALIDATORS, Validator} from '@angular/forms';\r\nimport {Directive} from '@angular/core';\r\nimport {sinNgbDatePickerValidator} from '../validators/sin-ngb-date-picker-validator';\r\n\r\n@Directive({\r\n  // tslint:disable-next-line:directive-selector\r\n  selector: '[SinNgbDatePicker]',\r\n  providers: [{provide: NG_VALIDATORS, useExisting: SinNgbDatePickerDirective, multi: true}]\r\n})\r\n\r\n/*\r\n* Direttiva per validare con moment la data scritta nell'input del datepicker di Angular Bootstrap (ngb)\r\n* */\r\nexport class SinNgbDatePickerDirective implements Validator {\r\n  validate(control: AbstractControl): {[key: string]: any} | null {\r\n    return sinNgbDatePickerValidator()(control);\r\n  }\r\n}\r\n","export enum LinguaEnum {\r\n  Italiano = 'it-IT',\r\n  Spagnolo = 'es-ES'\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, Input, OnDestroy} from '@angular/core';\r\nimport {NgForm, UntypedFormControl, UntypedFormGroup} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\nimport {LinguaEnum} from '../enum/lingua.enum';\r\n\r\n@Directive({\r\n  // tslint:disable-next-line:directive-selector\r\n  selector: '[SinError]'\r\n})\r\nexport class SinErrorDirective implements AfterViewInit, OnDestroy {\r\n  constructor(private el: ElementRef) {\r\n  }\r\n\r\n  //\r\n  // Private\r\n  //\r\n  private _subscription: Subscription = new Subscription();\r\n\r\n  //\r\n  // Public\r\n  //\r\n  @Input() group: UntypedFormGroup = {} as UntypedFormGroup;\r\n  @Input() drivenForm: NgForm = {} as NgForm;\r\n  @Input() control = '';\r\n  @Input() singleControl: UntypedFormControl = {} as UntypedFormControl;\r\n  @Input() labelEstesa = '';\r\n  @Input() lingua: string = LinguaEnum.Italiano;\r\n\r\n  //\r\n  /// methods\r\n  //\r\n  ngAfterViewInit() {\r\n    if (Object.entries(this.singleControl).length) {\r\n      this._subscription.add(this.singleControl.valueChanges.subscribe(() => {\r\n        this.updateSingleErrors();\r\n      }));\r\n    } else if (Object.entries(this.group).length && this.control) {\r\n      this.group.controls[this.control].statusChanges.subscribe(() => {\r\n        this.updateErrors();\r\n      });\r\n      this.group.controls[this.control].valueChanges.subscribe(() => {\r\n        this.updateErrors();\r\n      });\r\n    } else if (Object.entries(this.drivenForm).length && this.control) {\r\n      this.drivenForm.form.statusChanges.subscribe(() => {\r\n        this.updateDrivenError();\r\n      });\r\n      this.drivenForm.form.valueChanges.subscribe(() => {\r\n        this.updateDrivenError();\r\n      });\r\n    }\r\n    this.el.nativeElement.style.color = 'red';\r\n    this.el.nativeElement.style.weight = 'bolder';\r\n  }\r\n\r\n  //\r\n  /// private\r\n  //\r\n\r\n  // ritorna il singolo errore\r\n  private updateErrors() {\r\n    switch (this.lingua) {\r\n      case LinguaEnum.Spagnolo:\r\n        this._updateErrorsES();\r\n        break;\r\n      case LinguaEnum.Italiano:\r\n      default:\r\n        this._updateErrorsIT();\r\n        break;\r\n    }\r\n  }\r\n\r\n  private _updateErrorsIT() {\r\n    if (this.group.controls[this.control].status === 'INVALID') {\r\n      if (this.group.controls[this.control].hasError('required')) {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} obbligatorio`;\r\n      } else if (this.group.controls[this.control].hasError('minlength')) {\r\n        this.el.nativeElement.innerHTML = `Il Campo ${this.labelEstesa} deve essere lungo almeno ${this.group.controls[this.control]?.errors?.minlength.requiredLength} caratteri`;\r\n      } else if (this.group.controls[this.control].hasError('email')) {\r\n        this.el.nativeElement.innerHTML = `Il formato della mail non è corretto`;\r\n      } else if (this.group.controls[this.control].hasError('maxlength')) {\r\n        this.el.nativeElement.innerHTML = `Il Campo ${this.labelEstesa} deve essere lungo al massimo ${this.group.controls[this.control]?.errors?.maxlength.requiredLength} caratteri`;\r\n      } else if (this.group.controls[this.control].hasError('pattern')) {\r\n        this.el.nativeElement.innerHTML = `Il formato del campo ${this.labelEstesa} non è valido`;\r\n      } else if (this.group.controls[this.control].hasError('custom')) {\r\n        const { custom } = this.group.controls[this.control].errors;\r\n        this.el.nativeElement.innerHTML = custom.text;\r\n      } else {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} non valido`;\r\n      }\r\n    } else {\r\n      this.el.nativeElement.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  private _updateErrorsES() {\r\n    if (this.group.controls[this.control].status === 'INVALID') {\r\n      if (this.group.controls[this.control].hasError('required')) {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} obligatorio`;\r\n      } else if (this.group.controls[this.control].hasError('minlength')) {\r\n        this.el.nativeElement.innerHTML = `El campo ${this.labelEstesa} debe tener al menos ${this.group.controls[this.control]?.errors?.minlength.requiredLength} caracteres`;\r\n      } else if (this.group.controls[this.control].hasError('email')) {\r\n        this.el.nativeElement.innerHTML = `El formato del correo no es correcto`;\r\n      } else if (this.group.controls[this.control].hasError('maxlength')) {\r\n        this.el.nativeElement.innerHTML = `El campo ${this.labelEstesa} debe tener como máximo ${this.group.controls[this.control]?.errors?.maxlength.requiredLength} caracteres`;\r\n      } else if (this.group.controls[this.control].hasError('pattern')) {\r\n        this.el.nativeElement.innerHTML = `El formato del campo ${this.labelEstesa} no es válido`;\r\n      } else if (this.group.controls[this.control].hasError('custom')) {\r\n        const { custom } = this.group.controls[this.control].errors;\r\n        this.el.nativeElement.innerHTML = custom.text;\r\n      } else {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} no válido`;\r\n      }\r\n    } else {\r\n      this.el.nativeElement.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  private updateSingleErrors() {\r\n    switch (this.lingua) {\r\n      case LinguaEnum.Spagnolo:\r\n        this._updateSingleErrorsES();\r\n        break;\r\n      case LinguaEnum.Italiano:\r\n      default:\r\n        this._updateSingleErrorsIT();\r\n        break;\r\n    }\r\n  }\r\n\r\n  private _updateSingleErrorsIT() {\r\n    if (this.singleControl.invalid) {\r\n      if (this.singleControl.hasError('required')) {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} obbligatorio`;\r\n      } else if (this.singleControl.hasError('minlength')) {\r\n        this.el.nativeElement.innerHTML = `Il Campo ${this.labelEstesa} deve essere lungo almeno ${this.singleControl?.errors?.minlength?.requiredLength} caratteri`;\r\n      } else if (this.singleControl.hasError('email')) {\r\n        this.el.nativeElement.innerHTML = `il formato della mail non è corretto`;\r\n      } else if (this.singleControl.hasError('maxlength')) {\r\n        this.el.nativeElement.innerHTML = `Il Campo ${this.labelEstesa} deve essere lungo al massimo ${this.singleControl?.errors?.maxlength?.requiredLength} caratteri`;\r\n      } else if (this.singleControl.hasError('pattern')) {\r\n        this.el.nativeElement.innerHTML = `Il formato del del campo ${this.labelEstesa} non è valido`;\r\n      } else if (this.group.controls[this.control].hasError('custom')) {\r\n        const { custom } = this.group.controls[this.control].errors;\r\n        this.el.nativeElement.innerHTML = custom.text;\r\n      } else {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} non valido`;\r\n      }\r\n    } else {\r\n      this.el.nativeElement.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  private _updateSingleErrorsES() {\r\n    if (this.singleControl.invalid) {\r\n      if (this.singleControl.hasError('required')) {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} obligatorio`;\r\n      } else if (this.singleControl.hasError('minlength')) {\r\n        this.el.nativeElement.innerHTML = `El campo ${this.labelEstesa} debe tener al menos ${this.singleControl?.errors?.minlength?.requiredLength} caracteres`;\r\n      } else if (this.singleControl.hasError('email')) {\r\n        this.el.nativeElement.innerHTML = `El formato del correo no es correcto`;\r\n      } else if (this.singleControl.hasError('maxlength')) {\r\n        this.el.nativeElement.innerHTML = `El campo ${this.labelEstesa} debe tener como máximo ${this.singleControl?.errors?.maxlength?.requiredLength} caracteres`;\r\n      } else if (this.singleControl.hasError('pattern')) {\r\n        this.el.nativeElement.innerHTML = `El formato del campo ${this.labelEstesa} no es válido`;\r\n      } else if (this.group.controls[this.control].hasError('custom')) {\r\n        const { custom } = this.group.controls[this.control].errors;\r\n        this.el.nativeElement.innerHTML = custom.text;\r\n      } else {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} no válido`;\r\n      }\r\n    } else {\r\n      this.el.nativeElement.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  updateDrivenError() {\r\n    switch (this.lingua) {\r\n      case LinguaEnum.Spagnolo:\r\n        this._updateDrivenErrorES();\r\n        break;\r\n      case LinguaEnum.Italiano:\r\n      default:\r\n        this._updateDrivenErrorIT();\r\n        break;\r\n    }\r\n  }\r\n\r\n  private _updateDrivenErrorIT() {\r\n    if (this.drivenForm.form.controls[this.control].invalid && !this.drivenForm.form.controls[this.control].pristine && this.drivenForm.form.controls[this.control].dirty) {\r\n      if (this.drivenForm.form.controls[this.control].hasError('required')) {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} obbligatorio`;\r\n      } else if (this.drivenForm.form.controls[this.control].hasError('pattern')) {\r\n        this.el.nativeElement.innerHTML = `Il formato del campo ${this.labelEstesa} non è valido`;\r\n      } else {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} non valido`;\r\n      }\r\n    } else {\r\n      this.el.nativeElement.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  private _updateDrivenErrorES() {\r\n    if (this.drivenForm.form.controls[this.control].invalid && !this.drivenForm.form.controls[this.control].pristine && this.drivenForm.form.controls[this.control].dirty) {\r\n      if (this.drivenForm.form.controls[this.control].hasError('required')) {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} obligatorio`;\r\n      } else if (this.drivenForm.form.controls[this.control].hasError('pattern')) {\r\n        this.el.nativeElement.innerHTML = `El formato del campo ${this.labelEstesa} no es válido`;\r\n      } else {\r\n        this.el.nativeElement.innerHTML = `Campo ${this.labelEstesa} no válido`;\r\n      }\r\n    } else {\r\n      this.el.nativeElement.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._subscription.unsubscribe();\r\n  }\r\n\r\n\r\n}\r\n","import { Directive, ElementRef, Renderer2, HostListener, Input, Optional, AfterViewInit } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n  // tslint:disable-next-line:directive-selector\r\n  selector: '[SinAllowInput]',\r\n})\r\nexport class SinAllowInputDirective implements AfterViewInit {\r\n  textbox!: HTMLInputElement;\r\n  @Input() allowNumber!: boolean;\r\n  @Input() allowLetter!: boolean;\r\n  @Input() allowSpecialCharacter!: string;\r\n  @Input() maxLength!: string;\r\n\r\n  constructor(private el: ElementRef, private renderer: Renderer2, @Optional() private ngControl: NgControl) {}\r\n\r\n  ngAfterViewInit() {\r\n    this.textbox =\r\n      this.el.nativeElement.tagName === 'INPUT' ? this.el.nativeElement : this.el.nativeElement.querySelector('input');\r\n    if (this.maxLength?.length > 0) {\r\n      this.renderer.setAttribute(this.textbox, 'maxlength', this.maxLength);\r\n    }\r\n  }\r\n\r\n  @HostListener('input', ['$event']) onInput() {\r\n    const initalValue = this.textbox.value;\r\n    let regexpStr = '';\r\n    if (this.allowLetter) {\r\n      regexpStr += 'a-zA-Z';\r\n    }\r\n    if (this.allowNumber) {\r\n      regexpStr += '0-9';\r\n    }\r\n    if (this.allowSpecialCharacter) {\r\n      regexpStr += this.allowSpecialCharacter;\r\n    }\r\n    if (regexpStr === '') {\r\n      return;\r\n    }\r\n    const regexp = new RegExp('[^' + regexpStr + ']*', 'g');\r\n\r\n    if (this.ngControl && this.ngControl.control) {\r\n      this.ngControl.control.setValue(initalValue.replace(regexp, ''), {\r\n        emitEvent: false,\r\n      });\r\n    } else {\r\n      this.renderer.setProperty(this.textbox, 'value', initalValue.replace(regexp, ''));\r\n      // if (initalValue !== this.textbox.value) {\r\n      //   event.stopPropagation();\r\n      // }\r\n    }\r\n  }\r\n}\r\n","import {Directive, ElementRef, Renderer2, HostListener, Optional, AfterViewInit, OnInit, Input} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { PercentPipe } from '@angular/common';\r\nimport '@angular/common/locales/global/it';\r\n\r\n@Directive({\r\n  // tslint:disable-next-line:directive-selector\r\n  selector: '[SinPercentage]',\r\n})\r\nexport class SinPercentageDirective implements AfterViewInit, OnInit {\r\n  textbox!: HTMLInputElement;\r\n\r\n  @Input() hidePercentage!: boolean;\r\n  @Input() noDecimals!: boolean;\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private renderer: Renderer2,\r\n    private percentPipe: PercentPipe,\r\n    @Optional() private ngControl: NgControl\r\n  ) {}\r\n\r\n  ngAfterViewInit() {\r\n    this.textbox =\r\n      this.el.nativeElement.tagName === 'INPUT' ? this.el.nativeElement : this.el.nativeElement.querySelector('input');\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.ngControl && this.ngControl.control && this.ngControl.valueChanges) {\r\n      this.ngControl.valueChanges.subscribe((value) => {\r\n        if (typeof value === 'number') {\r\n          this.percentage(value);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * evento di focus out dell'input\r\n   */\r\n  @HostListener('blur', ['$event']) onBlur() {\r\n    this.textbox.value = this.textbox.value.replace(/,/g, '.');\r\n    const percentValue = parseFloat(this.textbox.value) / 100;\r\n    this.percentage(percentValue);\r\n  }\r\n\r\n  /**\r\n   * evento di focus in dell'input\r\n   * tolgo il %\r\n   */\r\n  @HostListener('focus', ['$event']) onFocus() {\r\n    const initVal = this.textbox.value.replace(/%/gi, '');\r\n    this.renderer.setProperty(this.textbox, 'value', initVal);\r\n    this.textbox.select();\r\n  }\r\n\r\n  public percentage(value: any) {\r\n    let valueNumber = 0;\r\n    if (typeof value === 'string') {\r\n      value = value.replace(/,/g, '.');\r\n      valueNumber = parseFloat(value) / 100;\r\n    } else if (typeof value === 'number') {\r\n      valueNumber = value;\r\n    }\r\n\r\n    if (isNaN(valueNumber)) {\r\n      valueNumber = null;\r\n    }\r\n\r\n    let formato = '1.2-2';\r\n    if (this.noDecimals) {\r\n      formato = '1.0';\r\n    }\r\n\r\n    let formattedVal = this.percentPipe.transform(valueNumber, formato, 'it');\r\n\r\n    if (this.hidePercentage) {\r\n      formattedVal = formattedVal.replace('%', '');\r\n    }\r\n    // setto il valore del control con il percentuale\r\n    // setto il valore renderizzato con il valore formattato (separatore di migliaia e 2 decimali)\r\n    if (this.ngControl && this.ngControl.control) {\r\n      this.ngControl.control.setValue(valueNumber, { emitEvent: false });\r\n      this.renderer.setProperty(this.textbox, 'value', formattedVal);\r\n    } else {\r\n      this.renderer.setProperty(this.textbox, 'value', formattedVal);\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, Renderer2, HostListener, Optional, AfterViewInit, OnInit } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport '@angular/common/locales/global/it';\r\n\r\n@Directive({\r\n  // tslint:disable-next-line:directive-selector\r\n  selector: '[SinThousandSeparator]',\r\n})\r\nexport class SinThousandSeparatorDirective implements AfterViewInit, OnInit {\r\n  textbox!: HTMLInputElement;\r\n  private specialKeys: Array<string> = [\r\n    'Backspace',\r\n    'Tab',\r\n    'End',\r\n    'Home',\r\n    '-',\r\n    'ArrowLeft',\r\n    'ArrowRight',\r\n    'Del',\r\n    'Delete',\r\n  ];\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private renderer: Renderer2,\r\n    private decimalPipe: DecimalPipe,\r\n    @Optional() private ngControl: NgControl\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    if (this.ngControl && this.ngControl.control && this.ngControl.valueChanges) {\r\n      this.ngControl.valueChanges.pipe(debounceTime(200)).subscribe((value) => {\r\n        if (typeof value === 'number') {\r\n          this.migliaia(value);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.textbox =\r\n      this.el.nativeElement.tagName === 'INPUT' ? this.el.nativeElement : this.el.nativeElement.querySelector('input');\r\n  }\r\n\r\n  /**\r\n   * evento di focus out dell'input\r\n   */\r\n  @HostListener('blur', ['$event']) onBlur(event: KeyboardEvent) {\r\n    this.migliaia(this.textbox.value);\r\n  }\r\n\r\n  /**\r\n   * evento di focus in dell'input\r\n   * tolgo il separatore di migliaia solo nel valore renderizzato\r\n   */\r\n  @HostListener('focus', ['$event']) onFocus(event: KeyboardEvent) {\r\n    const initVal = this.textbox.value.replace(/\\./gi, '');\r\n    this.renderer.setProperty(this.textbox, 'value', initVal);\r\n    this.textbox.select();\r\n  }\r\n\r\n  public migliaia(value: any) {\r\n    let valueNumber = 0;\r\n\r\n    // Gestisco stringa da client\r\n    if (typeof value === 'string') {\r\n      // Arriva 1.000,50\r\n      value = value.replace('.', ''); // 1000,50\r\n      value = value.replace(/,/g, '.'); // 1000.50\r\n      valueNumber = parseFloat(value);\r\n    } else if (typeof value === 'number') {\r\n      valueNumber = value;\r\n    }\r\n\r\n    // Creo valore formattato it migliaia\r\n    const formattedVal = this.decimalPipe.transform(valueNumber, '1.2-2', 'it');\r\n\r\n    // Setto model e renderer\r\n    if (this.ngControl && this.ngControl.control) {\r\n      this.ngControl.control.setValue(valueNumber, { emitEvent: false });\r\n      this.renderer.setProperty(this.textbox, 'value', formattedVal);\r\n    } else {\r\n      this.renderer.setProperty(this.textbox, 'value', formattedVal);\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, HostListener, Optional, AfterViewInit, OnInit, Input } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n  // tslint:disable-next-line:directive-selector\r\n  selector: '[SinDifferenceFromDefaultValue]',\r\n})\r\nexport class SinDifferenceFromDefaultValueDirective implements AfterViewInit, OnInit {\r\n  textbox!: HTMLInputElement;\r\n\r\n  @Input() defaultValue!: any;\r\n\r\n  constructor(private el: ElementRef, @Optional() private ngControl: NgControl) {}\r\n\r\n  ngAfterViewInit() {\r\n    this.textbox =\r\n      this.el.nativeElement.tagName === 'INPUT' ? this.el.nativeElement : this.el.nativeElement.querySelector('input');\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.ngControl && this.ngControl.control && this.ngControl.valueChanges) {\r\n      this.ngControl.valueChanges.subscribe((value) => {\r\n        this.difference(value);\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * evento di focus out dell'input\r\n   */\r\n  @HostListener('blur', ['$event']) onBlur() {\r\n    if (this.ngControl && this.ngControl.control) {\r\n      this.difference(this.ngControl.value);\r\n    } else {\r\n      this.difference(this.textbox.value);\r\n    }\r\n  }\r\n\r\n  difference(value: any) {\r\n    if (value != null) {\r\n      const value1 = parseFloat(value.toString().trim().replace(/,/g, '.')).toFixed(2);\r\n      if (this.defaultValue != null) {\r\n        const value2 = parseFloat(this.defaultValue.toString().trim().replace(/,/g, '.')).toFixed(2);\r\n        if (value1 !== value2) {\r\n          this.textbox.style.backgroundColor = 'yellow';\r\n        } else {\r\n          this.textbox.style.backgroundColor = '';\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {SinDebounceChangeDirective} from './directives/debounce-change.directive';\r\nimport {SinDragDropDirective} from './directives/file-drag-and-drop.directive';\r\nimport {SinTableSortableDirective} from './directives/sin-table-sortable.directive';\r\nimport {SinNgbDatePickerDirective} from './directives/sin-ngb-date-picker.directive';\r\nimport {SinErrorDirective} from './directives/sin-error.directive';\r\nimport {SinAllowInputDirective} from './directives/allow-input.directive';\r\nimport {SinPercentageDirective} from './directives/percentage.directive';\r\nimport {SinThousandSeparatorDirective} from './directives/thousand-separator.directive';\r\nimport {SinDifferenceFromDefaultValueDirective} from './directives/difference-from-default-value.directive';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    SinDebounceChangeDirective,\r\n    SinDragDropDirective,\r\n    SinTableSortableDirective,\r\n    SinNgbDatePickerDirective,\r\n    SinErrorDirective,\r\n    SinAllowInputDirective,\r\n    SinPercentageDirective,\r\n    SinThousandSeparatorDirective,\r\n    SinDifferenceFromDefaultValueDirective\r\n  ],\r\n  imports: [],\r\n  exports: [\r\n    SinDebounceChangeDirective,\r\n    SinDragDropDirective,\r\n    SinTableSortableDirective,\r\n    SinNgbDatePickerDirective,\r\n    SinErrorDirective,\r\n    SinAllowInputDirective,\r\n    SinPercentageDirective,\r\n    SinThousandSeparatorDirective,\r\n    SinDifferenceFromDefaultValueDirective\r\n  ]\r\n})\r\nexport class SinDirectivesModule {\r\n}\r\n","/*\r\n * Public API Surface of sin-directives\r\n */\r\n\r\nexport * from './lib/sin-directives.module';\r\n\r\nexport * from './lib/enum/datetime.enum';\r\n\r\nexport * from './lib/directives/debounce-change.directive';\r\nexport * from './lib/directives/file-drag-and-drop.directive';\r\nexport * from './lib/directives/sin-table-sortable.directive';\r\nexport * from './lib/directives/sin-ngb-date-picker.directive';\r\nexport * from './lib/directives/sin-error.directive';\r\nexport * from './lib/directives/allow-input.directive';\r\nexport * from './lib/directives/percentage.directive';\r\nexport * from './lib/directives/thousand-separator.directive';\r\nexport * from './lib/directives/difference-from-default-value.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}