blob: 040675b8429664c63634d655b35ed4a98c758d80 [file] [log] [blame]
{"version":3,"sources":["ng://@covalent/core/file/directives/file-select.directive.ts","node_modules/tslib/tslib.es6.js","ng://@covalent/core/file/directives/file-drop.directive.ts","ng://@covalent/core/file/file-input/file-input.component.ts","ng://@covalent/core/file/file-upload/file-upload.component.ts","ng://@covalent/core/file/services/file.service.ts","ng://@covalent/core/file/file.module.ts"],"names":["TdFileSelectDirective","Object","defineProperty","prototype","multiple","this","_multiple","coerceBooleanProperty","undefined","onChange","event","target","HTMLInputElement","files","length","value","model","update","emit","onFileSelect","Directive","args","selector","NgModel","decorators","type","Optional","Host","Input","Output","HostBinding","HostListener","EventEmitter","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","create","_super","_TdFileDropMixinBase","mixinDisabled","TdFileDropBase","TdFileDropDirective","tslib_1.__extends","disabled","onDrop","dataTransfer","onFileDrop","_renderer","removeClass","_element","nativeElement","_stopEvent","onDragOver","transfer","dropEffect","_typeCheck","types","items","mozItemCount","onDragEnter","addClass","onDragLeave","contains","indexOf","preventDefault","stopPropagation","inputs","Renderer2","ElementRef","_this","call","TemplatePortalDirective","TemplateRef","ViewContainerRef","TdFileInputLabelDirective","templateRef","viewContainerRef","_changeDetectorRef","_TdFileInputMixinBase","mixinControlValueAccessor","TdFileInputBase","TdFileInputComponent","_inputElement","handleSelect","writeValue","onSelect","clear","setProperty","inputElement","onDisabledChange","v","setDisabledState","isDisabled","Component","changeDetection","ChangeDetectionStrategy","OnPush","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","template","ChangeDetectorRef","ViewChild","_TdFileUploadMixinBase","TdFileUploadBase","TdFileUploadComponent","_required","required","uploadPressed","onUpload","cancel","onCancel","fileInput","ContentChild","defaultColor","activeColor","cancelColor","TdFileService","_progressObservable","upload","options","Observable","subscriber","xhr","XMLHttpRequest","formData","FormData","file","append","error","onprogress","progress","lengthComputable","Math","round","loaded","total","_progressSubject","next","onreadystatechange","readyState","status","response","complete","open","method","url","setRequestHeader","headers","key","send","Injectable","Subject","asObservable","TD_FILE","CovalentFileModule","NgModule","imports","FormsModule","CommonModule","MatIconModule","MatButtonModule","PortalModule","declarations","exports"],"mappings":"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","sourcesContent":["import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, Host, Optional } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdFileSelect]',\n})\nexport class TdFileSelectDirective {\n\n private _multiple: boolean = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be selected at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileSelect?: function\n * Event emitted when a file or files are selected in host [HTMLInputElement].\n * Emits a [FileList | File] object.\n * Alternative to not use [(ngModel)].\n */\n @Output('fileSelect') onFileSelect: EventEmitter<FileList | File> = new EventEmitter<FileList | File>();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string {\n return this._multiple ? '' : undefined;\n }\n\n constructor(@Optional() @Host() private model: NgModel) {\n }\n\n /**\n * Listens to 'change' host event to get [HTMLInputElement] files.\n * Emits the 'onFileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Uses [(ngModel)] if declared, instead of emitting 'onFileSelect' event.\n */\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n let fileInputEl: HTMLInputElement = (<HTMLInputElement>event.target);\n let files: FileList = fileInputEl.files;\n if (files.length) {\n let value: FileList | File = this._multiple ? (files.length > 1 ? files : files[0]) : files[0];\n this.model ? this.model.update.emit(value) : this.onFileSelect.emit(value);\n }\n }\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, ElementRef, Renderer2 } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable, mixinDisabled } from '@covalent/core/common';\n\nexport class TdFileDropBase {}\n\n/* tslint:disable-next-line */\nexport const _TdFileDropMixinBase = mixinDisabled(TdFileDropBase);\n\n@Directive({\n selector: '[tdFileDrop]',\n inputs: ['disabled'],\n})\nexport class TdFileDropDirective extends _TdFileDropMixinBase implements ICanDisable {\n\n private _multiple: boolean = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be dropped at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileDrop?: function\n * Event emitted when a file or files are dropped in host element after being validated.\n * Emits a [FileList | File] object.\n */\n @Output('fileDrop') onFileDrop: EventEmitter<FileList | File> = new EventEmitter<FileList | File>();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string {\n return this._multiple ? '' : undefined;\n }\n\n /**\n * Binds native 'disabled' attribute if [disabled] property is 'true'.\n */\n @HostBinding('attr.disabled')\n get disabledBinding(): string {\n return this.disabled ? '' : undefined;\n }\n\n constructor(private _renderer: Renderer2, private _element: ElementRef) {\n super();\n }\n\n /**\n * Listens to 'drop' host event to get validated transfer items.\n * Emits the 'onFileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Stops event propagation and default action from browser for 'drop' event.\n */\n @HostListener('drop', ['$event'])\n onDrop(event: Event): void {\n if (!this.disabled) {\n let transfer: DataTransfer = (<DragEvent>event).dataTransfer;\n let files: FileList = transfer.files;\n if (files.length) {\n let value: FileList | File = this._multiple ? (files.length > 1 ? files : files[0]) : files[0];\n this.onFileDrop.emit(value);\n }\n }\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragover' host event to validate transfer items.\n * Checks if 'multiple' attr exists in host to allow multiple file drops.\n * Stops event propagation and default action from browser for 'dragover' event.\n */\n @HostListener('dragover', ['$event'])\n onDragOver(event: Event): void {\n let transfer: DataTransfer = (<DragEvent>event).dataTransfer;\n transfer.dropEffect = this._typeCheck(transfer.types);\n if (this.disabled || (!this._multiple &&\n ((transfer.items && transfer.items.length > 1) || (<any>transfer).mozItemCount > 1))) {\n transfer.dropEffect = 'none';\n } else {\n transfer.dropEffect = 'copy';\n }\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.\n * Stops event propagation and default action from browser for 'dragenter' event.\n */\n @HostListener('dragenter', ['$event'])\n onDragEnter(event: Event): void {\n if (!this.disabled) {\n this._renderer.addClass(this._element.nativeElement, 'drop-zone');\n }\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragleave' host event to remove animation class 'drop-zone'.\n * Stops event propagation and default action from browser for 'dragleave' event.\n */\n @HostListener('dragleave', ['$event'])\n onDragLeave(event: Event): void {\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Validates if the transfer item types are 'Files'.\n */\n private _typeCheck(types: ReadonlyArray<string> | DOMStringList): string {\n let dropEffect: string = 'none';\n if (types) {\n if (((<any>types).contains && (<any>types).contains('Files'))\n || ((<any>types).indexOf && (<any>types).indexOf('Files') !== -1)) {\n dropEffect = 'copy';\n }\n }\n return dropEffect;\n }\n\n private _stopEvent(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Component, Directive, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild,\n ElementRef, Renderer2, TemplateRef, ViewContainerRef, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { ICanDisable, mixinDisabled, IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\n@Directive({\n selector: '[td-file-input-label]ng-template',\n})\nexport class TdFileInputLabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdFileInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdFileInputMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileInputBase));\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileInputComponent),\n multi: true,\n }],\n selector: 'td-file-input',\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-input.component.scss'],\n templateUrl: './file-input.component.html',\n})\nexport class TdFileInputComponent extends _TdFileInputMixinBase implements IControlValueAccessor, ICanDisable {\n\n private _multiple: boolean = false;\n\n /** The native `<input type=\"file\"> element */\n @ViewChild('fileInput') _inputElement: ElementRef;\n get inputElement(): HTMLInputElement {\n return this._inputElement.nativeElement;\n }\n\n /**\n * color?: string\n * Sets button color. Uses same color palette accepted as [MatButton].\n */\n @Input('color') color: string;\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input('accept') accept: string;\n\n /**\n * select?: function\n * Event emitted a file is selected\n * Emits a [File | FileList] object.\n */\n @Output('select') onSelect: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n constructor(private _renderer: Renderer2, _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(files: File | FileList): void {\n this.writeValue(files);\n this.onSelect.emit(files);\n }\n\n /**\n * Used to clear the selected files from the [TdFileInputComponent].\n */\n clear(): void {\n this.writeValue(undefined);\n this._renderer.setProperty(this.inputElement, 'value', '');\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this.clear();\n }\n }\n /**\n * Sets disable to the component. Implemented as part of ControlValueAccessor.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild, ContentChild, ChangeDetectorRef,\n forwardRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ICanDisable, mixinDisabled, IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\nimport { TdFileInputComponent, TdFileInputLabelDirective } from '../file-input/file-input.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport class TdFileUploadBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdFileUploadMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileUploadBase));\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileUploadComponent),\n multi: true,\n }],\n selector: 'td-file-upload',\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-upload.component.scss'],\n templateUrl: './file-upload.component.html',\n})\nexport class TdFileUploadComponent extends _TdFileUploadMixinBase implements IControlValueAccessor, ICanDisable {\n\n private _multiple: boolean = false;\n private _required: boolean = false;\n\n @ViewChild(TdFileInputComponent) fileInput: TdFileInputComponent;\n\n @ContentChild(TdFileInputLabelDirective) inputLabel: TdFileInputLabelDirective;\n\n /**\n * defaultColor?: string\n * Sets browse button color. Uses same color palette accepted as [MatButton] and defaults to 'primary'.\n */\n @Input('defaultColor') defaultColor: string = 'primary';\n\n /**\n * activeColor?: string\n * Sets upload button color. Uses same color palette accepted as [MatButton] and defaults to 'accent'.\n */\n @Input('activeColor') activeColor: string = 'accent';\n\n /**\n * cancelColor?: string\n * Sets cancel button color. Uses same color palette accepted as [MatButton] and defaults to 'warn'.\n */\n @Input('cancelColor') cancelColor: string = 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileUploadComponent].\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * required?: boolean\n * Forces at least one file upload.\n * Defaults to 'false'\n */\n @Input('required')\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input('accept') accept: string;\n\n /**\n * select?: function\n * Event emitted when a file is selected.\n * Emits a [File | FileList] object.\n */\n @Output('select') onSelect: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n /**\n * upload?: function\n * Event emitted when upload button is clicked.\n * Emits a [File | FileList] object.\n */\n @Output('upload') onUpload: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n /**\n * cancel?: function\n * Event emitted when cancel button is clicked.\n */\n @Output('cancel') onCancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(_changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when upload button is clicked.\n */\n uploadPressed(): void {\n if (this.value) {\n this.onUpload.emit(this.value);\n }\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(value: File | FileList): void {\n this.value = value;\n this.onSelect.emit(value);\n }\n\n /**\n * Methods executed when cancel button is clicked.\n * Clears files.\n */\n cancel(): void {\n this.value = undefined;\n this.onCancel.emit(undefined);\n // check if the file input is rendered before clearing it\n if (this.fileInput) {\n this.fileInput.clear();\n }\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this.cancel();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscriber } from 'rxjs';\n\nexport interface IUploadOptions {\n url: string;\n method: 'post' | 'put';\n file?: File;\n headers?: {[key: string]: string};\n formData?: FormData;\n}\n\n@Injectable()\nexport class TdFileService {\n\n private _progressSubject: Subject<number> = new Subject<number>();\n private _progressObservable: Observable<number>;\n\n /**\n * Gets progress observable to keep track of the files being uploaded.\n * Needs to be supported by backend.\n */\n get progress(): Observable<number> {\n return this._progressObservable;\n }\n\n constructor() {\n this._progressObservable = this._progressSubject.asObservable();\n }\n\n /**\n * params:\n * - options: IUploadOptions {\n * url: string,\n * method: 'post' | 'put',\n * file?: File,\n * headers?: {[key: string]: string},\n * formData?: FormData\n * }\n *\n * Uses underlying [XMLHttpRequest] to upload a file to a url.\n * Will be depricated when Angular fixes [Http] to allow [FormData] as body.\n */\n upload(options: IUploadOptions): Observable<any> {\n return new Observable<any>((subscriber: Subscriber<any>) => {\n let xhr: XMLHttpRequest = new XMLHttpRequest();\n let formData: FormData = new FormData();\n\n if (options.file !== undefined) {\n formData.append('file', options.file);\n } else if (options.formData !== undefined) {\n formData = options.formData;\n } else {\n return subscriber.error('For [IUploadOptions] you have to set either the [file] or the [formData] property.');\n }\n\n xhr.upload.onprogress = (event: ProgressEvent) => {\n let progress: number = 0;\n if (event.lengthComputable) {\n progress = Math.round(event.loaded / event.total * 100);\n }\n this._progressSubject.next(progress);\n };\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n subscriber.next(xhr.response);\n subscriber.complete();\n } else {\n subscriber.error(xhr.response);\n }\n }\n };\n\n xhr.open(options.method, options.url, true);\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n if (options.headers) {\n for (let key in options.headers) {\n xhr.setRequestHeader(key, options.headers[key]);\n }\n }\n\n xhr.send(formData);\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdFileSelectDirective } from './directives/file-select.directive';\nimport { TdFileDropDirective } from './directives/file-drop.directive';\nimport { TdFileUploadComponent } from './file-upload/file-upload.component';\nimport { TdFileInputComponent, TdFileInputLabelDirective } from './file-input/file-input.component';\nimport { TdFileService } from './services/file.service';\n\nconst TD_FILE: Type<any>[] = [\n TdFileSelectDirective,\n TdFileDropDirective,\n TdFileUploadComponent,\n TdFileInputComponent,\n TdFileInputLabelDirective,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n PortalModule,\n ],\n declarations: [\n TD_FILE,\n ],\n exports: [\n TD_FILE,\n ],\n providers: [\n TdFileService,\n ],\n})\nexport class CovalentFileModule {\n\n}\n"]}