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