{"version":3,"file":"angular-material-components-file-input.mjs","sources":["../../../../projects/file-input/src/lib/file-input.component.ts","../../../../projects/file-input/src/lib/file-input.component.html","../../../../projects/file-input/src/lib/file-input.module.ts","../../../../projects/file-input/src/lib/file-input-helper.ts","../../../../projects/file-input/src/lib/validators/max-size.validator.ts","../../../../projects/file-input/src/lib/validators/accept.validator.ts","../../../../projects/file-input/src/public-api.ts","../../../../projects/file-input/src/angular-material-components-file-input.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { ChangeDetectorRef, Component, ContentChild, Directive, DoCheck, ElementRef, forwardRef, Input, OnDestroy, Optional, Self, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\r\nimport { CanUpdateErrorState, ErrorStateMatcher, mixinErrorState, ThemePalette } from '@angular/material/core';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { FileOrArrayFile } from './file-input-type';\r\n\r\nlet nextUniqueId = 0;\r\n\r\nconst _NgxMatInputMixinBase = mixinErrorState(\r\n  class {\r\n\r\n    readonly stateChanges = new Subject<void>();\r\n\r\n    constructor(\r\n      public _defaultErrorStateMatcher: ErrorStateMatcher,\r\n      public _parentForm: NgForm,\r\n      public _parentFormGroup: FormGroupDirective,\r\n      /** @docs-private */\r\n      public ngControl: NgControl,\r\n    ) { }\r\n  },\r\n);\r\n\r\n@Directive({\r\n  selector: '[ngxMatFileInputIcon]'\r\n})\r\nexport class NgxMatFileInputIcon { }\r\n\r\n@Component({\r\n  selector: 'ngx-mat-file-input',\r\n  templateUrl: 'file-input.component.html',\r\n  styleUrls: ['file-input.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  host: {\r\n    'class': 'ngx-mat-file-input'\r\n  },\r\n  providers: [\r\n    { provide: MatFormFieldControl, useExisting: forwardRef(() => NgxMatFileInputComponent) }\r\n  ],\r\n  exportAs: 'ngx-mat-file-input'\r\n})\r\nexport class NgxMatFileInputComponent extends _NgxMatInputMixinBase implements MatFormFieldControl<FileOrArrayFile>,\r\n  OnDestroy, DoCheck, CanUpdateErrorState, ControlValueAccessor {\r\n\r\n  @ViewChild('inputFile', { static: true }) private _inputFileRef: ElementRef;\r\n  @ViewChild('inputValue', { static: true }) private _inputValueRef: ElementRef;\r\n\r\n  /** Custom icon set by the consumer. */\r\n  @ContentChild(NgxMatFileInputIcon) _customIcon: NgxMatFileInputIcon;\r\n\r\n  @Input() color: ThemePalette = 'primary';\r\n\r\n  public fileNames: string = null;\r\n\r\n  protected _uid = `ngx-mat-fileinput-${nextUniqueId++}`;\r\n  protected _previousNativeValue: any;\r\n  _ariaDescribedby: string;\r\n\r\n  readonly stateChanges: Subject<void> = new Subject<void>();\r\n  focused: boolean = false;\r\n  errorState: boolean;\r\n  controlType: string = 'ngx-mat-file-input';\r\n  autofilled: boolean = false;\r\n\r\n  /** Function when touched */\r\n  _onTouched = () => { };\r\n\r\n  /** Function when changed */\r\n  _onChange: (value: FileOrArrayFile) => void = () => { };\r\n\r\n  @Input()\r\n  get disabled(): boolean {\r\n    if (this.ngControl && this.ngControl.disabled !== null) {\r\n      return this.ngControl.disabled;\r\n    }\r\n    return this._disabled;\r\n  }\r\n  set disabled(value: boolean) {\r\n    this._disabled = coerceBooleanProperty(value);\r\n    if (this.focused) {\r\n      this.focused = false;\r\n      this.stateChanges.next();\r\n    }\r\n  }\r\n  protected _disabled = false;\r\n\r\n  @Input()\r\n  get id(): string { return this._id; }\r\n  set id(value: string) { this._id = value || this._uid; }\r\n  protected _id: string;\r\n\r\n  @Input()\r\n  get multiple(): boolean { return this._multiple; }\r\n  set multiple(value: boolean) {\r\n    this._multiple = coerceBooleanProperty(value);\r\n  }\r\n  protected _multiple = false;\r\n\r\n  @Input() placeholder: string = 'Choose a file';\r\n  @Input() separator: string = ',';\r\n\r\n  @Input()\r\n  get required(): boolean { return this._required; }\r\n  set required(value: boolean) { this._required = coerceBooleanProperty(value); }\r\n  protected _required = false;\r\n\r\n  @Input() errorStateMatcher: ErrorStateMatcher;\r\n\r\n  @Input()\r\n  get value(): FileOrArrayFile { return this._value; }\r\n  set value(value: FileOrArrayFile) {\r\n    this._value = value;\r\n  }\r\n  protected _value: FileOrArrayFile;\r\n\r\n  @Input()\r\n  get readonly(): boolean { return this._readonly; }\r\n  set readonly(value: boolean) { this._readonly = coerceBooleanProperty(value); }\r\n  private _readonly = true;\r\n\r\n  /**\r\n   * Limiting accepted file types\r\n   * Example: accept=\"image/png, image/jpeg\" or accept=\".png, .jpg, .jpeg\" — Accept PNG or JPEG files.\r\n   */\r\n  @Input()\r\n  get accept(): string { return this._accept; }\r\n  set accept(value: string) {\r\n    this._accept = value;\r\n  }\r\n  private _accept: string;\r\n\r\n  constructor(protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,\r\n    protected _platform: Platform,\r\n    private _cd: ChangeDetectorRef,\r\n    @Optional() @Self() public ngControl: NgControl,\r\n    @Optional() _parentForm: NgForm,\r\n    @Optional() _parentFormGroup: FormGroupDirective,\r\n    _defaultErrorStateMatcher: ErrorStateMatcher) {\r\n    super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\r\n\r\n    this.id = this.id;\r\n\r\n    if (this.ngControl) {\r\n      this.ngControl.valueAccessor = this;\r\n    }\r\n\r\n  }\r\n\r\n\r\n  ngOnChanges() {\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.stateChanges.complete();\r\n  }\r\n\r\n  ngDoCheck() {\r\n    if (this.ngControl) {\r\n      this.updateErrorState();\r\n    }\r\n  }\r\n\r\n  // Implemented as part of ControlValueAccessor.\r\n  writeValue(value: FileOrArrayFile): void {\r\n    this._updateInputValue(value);\r\n  }\r\n\r\n  // Implemented as part of ControlValueAccessor.\r\n  registerOnChange(fn: (value: any) => void): void {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  // Implemented as part of ControlValueAccessor.\r\n  registerOnTouched(fn: () => void): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  // Implemented as part of ControlValueAccessor.\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  /** Focuses the input. */\r\n  focus(options?: FocusOptions): void {\r\n    this._inputValueRef.nativeElement.focus(options);\r\n  }\r\n\r\n  _focusChanged(isFocused: boolean) {\r\n    if (isFocused !== this.focused && (!this.readonly || !isFocused)) {\r\n      this.focused = isFocused;\r\n      this.stateChanges.next();\r\n    }\r\n\r\n  }\r\n\r\n  /** Mark the field as touched */\r\n  _markAsTouched() {\r\n    this._onTouched();\r\n    this._cd.markForCheck();\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  protected _isBadInput() {\r\n    let validity = (this._inputValueRef.nativeElement as HTMLInputElement).validity;\r\n    return validity && validity.badInput;\r\n  }\r\n\r\n  get empty(): boolean {\r\n    return !this._inputValueRef.nativeElement.value && !this._isBadInput() &&\r\n      !this.autofilled;\r\n  }\r\n\r\n  get shouldLabelFloat(): boolean {\r\n    return this.focused || !this.empty;\r\n  }\r\n\r\n  setDescribedByIds(ids: string[]) {\r\n    this._ariaDescribedby = ids.join(' ');\r\n  }\r\n\r\n  openFilePicker(event?: MouseEvent) {\r\n    this._inputFileRef.nativeElement.click();\r\n    if (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n    }\r\n    this._markAsTouched();\r\n  }\r\n\r\n  handleFiles(filelist: FileList) {\r\n    if (filelist.length > 0) {\r\n      const files: Array<File> = new Array();\r\n      for (let i = 0; i < filelist.length; i++) {\r\n        files.push(filelist.item(i));\r\n      }\r\n      this._updateInputValue(files);\r\n      this._resetInputFile();\r\n      this._onChange(this.multiple ? files : files[0]);\r\n    }\r\n  }\r\n\r\n  /** Handles a click on the control's container. */\r\n  onContainerClick(event: MouseEvent) { };\r\n\r\n  private _resetInputFile() {\r\n    this._inputFileRef.nativeElement.value = \"\";\r\n  }\r\n\r\n  private _updateInputValue(files: FileOrArrayFile) {\r\n    let text = null;\r\n    if (files) {\r\n      if (Array.isArray(files)) {\r\n        text = this._multiple\r\n          ? files.map(x => x.name).join(this.separator)\r\n          : files[0].name;\r\n      } else {\r\n        text = files.name != null ? files.name : null;\r\n      }\r\n    }\r\n\r\n    this._inputValueRef.nativeElement.value = text;\r\n  }\r\n\r\n}\r\n","<input #inputValue autocomplete=\"off\"\r\n  class=\"mat-mdc-input-element  mat-mdc-form-field-input-control mdc-text-field__input\" [attr.id]='id'\r\n  [attr.placeholder]='placeholder' [disabled]='disabled' [required]='required' [attr.readonly]='readonly || null'\r\n  [attr.aria-describedby]='_ariaDescribedby || null' [attr.aria-invalid]='errorState'\r\n  [attr.aria-required]='required.toString()'>\r\n<div class=\"mat-mdc-form-field-suffix\">\r\n  <button matSuffix mat-icon-button [color]=\"color\" class=\"button-browse\" (click)=\"openFilePicker($event)\" type=\"button\"\r\n    [disabled]=\"disabled\">\r\n    <mat-icon *ngIf=\"!_customIcon\" class=\"ngx-mat-file-input--default-icon\">attach_file</mat-icon>\r\n    <ng-content select=\"[ngxMatFileInputIcon]\"></ng-content>\r\n  </button>\r\n</div>\r\n<input type=\"file\" #inputFile (change)=\"handleFiles($event.target.files)\" class=\"input-file\" [multiple]=\"multiple\"\r\n  [accept]=\"accept\">","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { NgxMatFileInputComponent, NgxMatFileInputIcon } from './file-input.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgxMatFileInputComponent,\r\n    NgxMatFileInputIcon\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    MatButtonModule,\r\n    MatIconModule,\r\n    MatFormFieldModule,\r\n    MatInputModule\r\n  ],\r\n  exports: [\r\n    NgxMatFileInputComponent,\r\n    NgxMatFileInputIcon\r\n  ]\r\n})\r\nexport class NgxMatFileInputModule { }\r\n","export function calculFileSize(number: number): string {\r\n    if (number < 1024) {\r\n        return number + 'bytes';\r\n    } else if (number >= 1024 && number < 1048576) {\r\n        return (number / 1024).toFixed(1) + 'KB';\r\n    } else if (number >= 1048576) {\r\n        return (number / 1048576).toFixed(1) + 'MB';\r\n    }\r\n}","import { AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\r\n\r\n/**\r\n * Validator for size of file\r\n * @param max Max of size of file (in bytes)\r\n */\r\nexport function MaxSizeValidator(max: number): ValidatorFn {\r\n    return (ctrl: AbstractControl): ValidationErrors | null => {\r\n        max = Number(max);\r\n        if (isNaN(max)) {\r\n            throw 'MaxSizeValidator: max of size of file is invalid';\r\n        }\r\n        if (!ctrl.value) return null;\r\n        let files: File[] = ctrl.value;\r\n        if (!Array.isArray(ctrl.value)) {\r\n            files = [ctrl.value];\r\n        }\r\n        if(!files.length) return null;\r\n        const add = (a: any, b: any): number => a + b;\r\n        const sumSize = files.map(x => x.size).reduce(add);\r\n        if (sumSize > max) {\r\n            return {\r\n                maxSize: true\r\n            };\r\n        }\r\n        return null;\r\n    }\r\n}","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\n/**\r\n * Validator for input file accept\r\n * @param accept Allowable type of file\r\n */\r\nexport function AcceptValidator(accept: string): ValidatorFn {\r\n    return (ctrl: AbstractControl): ValidationErrors | null => {\r\n        if (!accept) {\r\n            throw ('AcceptValidator: allowable type of file can not be empty');\r\n        }\r\n\r\n        if (ctrl.value == null) return null;\r\n\r\n        if (!accept.includes(ctrl.value.type)) {\r\n            return {\r\n                accept: true\r\n            };\r\n        }\r\n\r\n        return null;\r\n\r\n    }\r\n}","/*\r\n * Public API Surface of file-input\r\n */\r\n\r\nexport * from './lib/file-input.component';\r\nexport * from './lib/file-input.module';\r\nexport * from './lib/file-input-type';\r\nexport * from './lib/file-input-helper';\r\nexport * from './lib/validators';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}