ng2-file-upload 1.1.4-2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ng2-file-upload.umd.js +1994 -1036
- package/bundles/ng2-file-upload.umd.js.map +1 -1
- package/bundles/ng2-file-upload.umd.min.js +2 -1
- package/bundles/ng2-file-upload.umd.min.js.map +1 -0
- package/esm2015/file-upload/file-drop.directive.js +139 -0
- package/esm2015/file-upload/file-item.class.js +268 -0
- package/esm2015/file-upload/file-like-object.class.js +60 -0
- package/esm2015/file-upload/file-select.directive.js +73 -0
- package/esm2015/file-upload/file-type.class.js +194 -0
- package/esm2015/file-upload/file-upload.module.js +18 -0
- package/esm2015/file-upload/file-uploader.class.js +845 -0
- package/esm2015/index.js +11 -0
- package/esm2015/ng2-file-upload.js +9 -0
- package/esm5/file-upload/file-drop.directive.js +171 -0
- package/esm5/file-upload/file-item.class.js +347 -0
- package/esm5/file-upload/file-like-object.class.js +67 -0
- package/esm5/file-upload/file-select.directive.js +84 -0
- package/esm5/file-upload/file-type.class.js +206 -0
- package/esm5/file-upload/file-upload.module.js +22 -0
- package/esm5/file-upload/file-uploader.class.js +1132 -0
- package/esm5/index.js +11 -0
- package/esm5/ng2-file-upload.js +9 -0
- package/fesm2015/ng2-file-upload.js +1599 -0
- package/fesm2015/ng2-file-upload.js.map +1 -0
- package/fesm5/ng2-file-upload.js +2020 -0
- package/fesm5/ng2-file-upload.js.map +1 -0
- package/file-upload/file-drop.directive.d.ts +6 -6
- package/file-upload/file-item.class.d.ts +3 -3
- package/file-upload/file-like-object.class.d.ts +1 -0
- package/file-upload/file-select.directive.d.ts +3 -2
- package/file-upload/file-type.class.d.ts +2 -1
- package/file-upload/file-uploader.class.d.ts +32 -24
- package/index.d.ts +2 -0
- package/ng2-file-upload.d.ts +4 -4
- package/ng2-file-upload.metadata.json +1 -1
- package/package.json +16 -25
- package/CHANGELOG.md +0 -91
- package/README.md +0 -64
- package/file-upload/file-drop.directive.js +0 -89
- package/file-upload/file-drop.directive.metadata.json +0 -1
- package/file-upload/file-item.class.js +0 -126
- package/file-upload/file-like-object.class.js +0 -27
- package/file-upload/file-select.directive.js +0 -40
- package/file-upload/file-select.directive.metadata.json +0 -1
- package/file-upload/file-type.class.js +0 -162
- package/file-upload/file-upload.module.js +0 -20
- package/file-upload/file-upload.module.metadata.json +0 -1
- package/file-upload/file-uploader.class.js +0 -398
- package/index.js +0 -9
- package/index.metadata.json +0 -1
- package/ng2-file-upload.js +0 -9
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ng2-file-upload.js","sources":["ng://ng2-file-upload/file-upload/file-like-object.class.ts","ng://ng2-file-upload/file-upload/file-item.class.ts","ng://ng2-file-upload/file-upload/file-type.class.ts","ng://ng2-file-upload/file-upload/file-uploader.class.ts","ng://ng2-file-upload/file-upload/file-select.directive.ts","ng://ng2-file-upload/file-upload/file-drop.directive.ts","ng://ng2-file-upload/file-upload/file-upload.module.ts"],"sourcesContent":["function isElement(node: any): boolean {\n return !!(node && (node.nodeName || node.prop && node.attr && node.find));\n}\n\nexport class FileLikeObject {\n public lastModifiedDate: any;\n public size: any;\n public type: string;\n public name: string;\n public rawFile: string;\n\n public constructor(fileOrInput: any) {\n this.rawFile = fileOrInput;\n let isInput = isElement(fileOrInput);\n let fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;\n let postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';\n let method = '_createFrom' + postfix;\n (this as any)[ method ](fakePathOrObject);\n }\n\n public _createFromFakePath(path: string): void {\n this.lastModifiedDate = void 0;\n this.size = void 0;\n this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();\n this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n }\n\n public _createFromObject(object: { size: number, type: string, name: string }): void {\n this.size = object.size;\n this.type = object.type;\n this.name = object.name;\n }\n}\n","import { FileLikeObject } from './file-like-object.class';\nimport { FileUploader, ParsedResponseHeaders, FileUploaderOptions } from './file-uploader.class';\n\nexport class FileItem {\n public file: FileLikeObject;\n public _file: File;\n public alias: string;\n public url: string = '/';\n public method: string;\n public headers: any = [];\n public withCredentials: boolean = true;\n public formData: any = [];\n public isReady: boolean = false;\n public isUploading: boolean = false;\n public isUploaded: boolean = false;\n public isSuccess: boolean = false;\n public isCancel: boolean = false;\n public isError: boolean = false;\n public progress: number = 0;\n public index: number = void 0;\n public _xhr: XMLHttpRequest;\n public _form: any;\n\n protected uploader: FileUploader;\n protected some: File;\n protected options: FileUploaderOptions;\n\n public constructor(uploader: FileUploader, some: File, options: FileUploaderOptions) {\n this.uploader = uploader;\n this.some = some;\n this.options = options;\n this.file = new FileLikeObject(some);\n this._file = some;\n if (uploader.options) {\n this.method = uploader.options.method || 'POST';\n this.alias = uploader.options.itemAlias || 'file';\n }\n this.url = uploader.options.url;\n }\n\n public upload(): void {\n try {\n this.uploader.uploadItem(this);\n } catch (e) {\n this.uploader._onCompleteItem(this, '', 0, {});\n this.uploader._onErrorItem(this, '', 0, {});\n }\n }\n\n public cancel(): void {\n this.uploader.cancelItem(this);\n }\n\n public remove(): void {\n this.uploader.removeFromQueue(this);\n }\n\n public onBeforeUpload(): void {\n return void 0;\n }\n\n public onBuildForm(form: any): any {\n return { form };\n }\n\n public onProgress(progress: number): any {\n return { progress };\n }\n\n public onSuccess(response: string, status: number, headers: ParsedResponseHeaders): any {\n return { response, status, headers };\n }\n\n public onError(response: string, status: number, headers: ParsedResponseHeaders): any {\n return { response, status, headers };\n }\n\n public onCancel(response: string, status: number, headers: ParsedResponseHeaders): any {\n return { response, status, headers };\n }\n\n public onComplete(response: string, status: number, headers: ParsedResponseHeaders): any {\n return { response, status, headers };\n }\n\n public _onBeforeUpload(): void {\n this.isReady = true;\n this.isUploading = true;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = false;\n this.progress = 0;\n this.onBeforeUpload();\n }\n\n public _onBuildForm(form: any): void {\n this.onBuildForm(form);\n }\n\n public _onProgress(progress: number): void {\n this.progress = progress;\n this.onProgress(progress);\n }\n\n public _onSuccess(response: string, status: number, headers: ParsedResponseHeaders): void {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = true;\n this.isCancel = false;\n this.isError = false;\n this.progress = 100;\n this.index = void 0;\n this.onSuccess(response, status, headers);\n }\n\n public _onError(response: string, status: number, headers: ParsedResponseHeaders): void {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = true;\n this.progress = 0;\n this.index = void 0;\n this.onError(response, status, headers);\n }\n\n public _onCancel(response: string, status: number, headers: ParsedResponseHeaders): void {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = true;\n this.isError = false;\n this.progress = 0;\n this.index = void 0;\n this.onCancel(response, status, headers);\n }\n\n public _onComplete(response: string, status: number, headers: ParsedResponseHeaders): void {\n this.onComplete(response, status, headers);\n\n if (this.uploader.options.removeAfterUpload) {\n this.remove();\n }\n }\n\n public _prepareToUploading(): void {\n this.index = this.index || ++this.uploader._nextIndex;\n this.isReady = true;\n }\n}\n","import { FileLikeObject } from \"../index\";\n\nexport class FileType {\n /* MS office */\n public static mime_doc: string[] = [\n 'application/msword',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'application/vnd.ms-word.document.macroEnabled.12',\n 'application/vnd.ms-word.template.macroEnabled.12'\n ];\n public static mime_xsl: string[] = [\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'application/vnd.ms-excel.template.macroEnabled.12',\n 'application/vnd.ms-excel.addin.macroEnabled.12',\n 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'\n ];\n public static mime_ppt: string[] = [\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.openxmlformats-officedocument.presentationml.template',\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n 'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'\n ];\n\n /* PSD */\n public static mime_psd: string[] = [\n 'image/photoshop',\n 'image/x-photoshop',\n 'image/psd',\n 'application/photoshop',\n 'application/psd',\n 'zz-application/zz-winassoc-psd'\n ];\n\n /* Compressed files */\n public static mime_compress: string[] = [\n 'application/x-gtar',\n 'application/x-gcompress',\n 'application/compress',\n 'application/x-tar',\n 'application/x-rar-compressed',\n 'application/octet-stream',\n 'application/x-zip-compressed',\n 'application/zip-compressed',\n 'application/x-7z-compressed',\n 'application/gzip',\n 'application/x-bzip2'\n ];\n\n public static getMimeClass(file: FileLikeObject): string {\n let mimeClass = 'application';\n if (this.mime_psd.indexOf(file.type) !== -1) {\n mimeClass = 'image';\n } else if (file.type.match('image.*')) {\n mimeClass = 'image';\n } else if (file.type.match('video.*')) {\n mimeClass = 'video';\n } else if (file.type.match('audio.*')) {\n mimeClass = 'audio';\n } else if (file.type === 'application/pdf') {\n mimeClass = 'pdf';\n } else if (this.mime_compress.indexOf(file.type) !== -1) {\n mimeClass = 'compress';\n } else if (this.mime_doc.indexOf(file.type) !== -1) {\n mimeClass = 'doc';\n } else if (this.mime_xsl.indexOf(file.type) !== -1) {\n mimeClass = 'xls';\n } else if (this.mime_ppt.indexOf(file.type) !== -1) {\n mimeClass = 'ppt';\n }\n if (mimeClass === 'application') {\n mimeClass = this.fileTypeDetection(file.name);\n }\n\n return mimeClass;\n }\n\n public static fileTypeDetection(inputFilename: string): string {\n let types: { [ key: string ]: string } = {\n 'jpg': 'image',\n 'jpeg': 'image',\n 'tif': 'image',\n 'psd': 'image',\n 'bmp': 'image',\n 'png': 'image',\n 'nef': 'image',\n 'tiff': 'image',\n 'cr2': 'image',\n 'dwg': 'image',\n 'cdr': 'image',\n 'ai': 'image',\n 'indd': 'image',\n 'pin': 'image',\n 'cdp': 'image',\n 'skp': 'image',\n 'stp': 'image',\n '3dm': 'image',\n 'mp3': 'audio',\n 'wav': 'audio',\n 'wma': 'audio',\n 'mod': 'audio',\n 'm4a': 'audio',\n 'compress': 'compress',\n 'zip': 'compress',\n 'rar': 'compress',\n '7z': 'compress',\n 'lz': 'compress',\n 'z01': 'compress',\n 'bz2': 'compress',\n 'gz': 'compress',\n 'pdf': 'pdf',\n 'xls': 'xls',\n 'xlsx': 'xls',\n 'ods': 'xls',\n 'mp4': 'video',\n 'avi': 'video',\n 'wmv': 'video',\n 'mpg': 'video',\n 'mts': 'video',\n 'flv': 'video',\n '3gp': 'video',\n 'vob': 'video',\n 'm4v': 'video',\n 'mpeg': 'video',\n 'm2ts': 'video',\n 'mov': 'video',\n 'doc': 'doc',\n 'docx': 'doc',\n 'eps': 'doc',\n 'txt': 'doc',\n 'odt': 'doc',\n 'rtf': 'doc',\n 'ppt': 'ppt',\n 'pptx': 'ppt',\n 'pps': 'ppt',\n 'ppsx': 'ppt',\n 'odp': 'ppt'\n };\n\n let chunks = inputFilename.split('.');\n if (chunks.length < 2) {\n return 'application';\n }\n let extension = chunks[ chunks.length - 1 ].toLowerCase();\n if (types[ extension ] === undefined) {\n return 'application';\n } else {\n return types[ extension ];\n }\n }\n}\n","import { EventEmitter } from '@angular/core';\nimport { FileLikeObject } from './file-like-object.class';\nimport { FileItem } from './file-item.class';\nimport { FileType } from './file-type.class';\n\nfunction isFile(value: any): boolean {\n return (File && value instanceof File);\n}\n\nexport interface Headers {\n name: string;\n value: string;\n}\n\nexport type ParsedResponseHeaders = { [ headerFieldName: string ]: string };\n\nexport type FilterFunction = {\n name: string,\n fn: (item?: FileLikeObject, options?: FileUploaderOptions) => boolean\n};\n\nexport interface FileUploaderOptions {\n allowedMimeType?: string[];\n allowedFileType?: string[];\n autoUpload?: boolean;\n isHTML5?: boolean;\n filters?: FilterFunction[];\n headers?: Headers[];\n method?: string;\n authToken?: string;\n maxFileSize?: number;\n queueLimit?: number;\n removeAfterUpload?: boolean;\n url?: string;\n disableMultipart?: boolean;\n itemAlias?: string;\n authTokenHeader?: string;\n additionalParameter?: { [ key: string ]: any };\n parametersBeforeFiles?: boolean;\n formatDataFunction?: Function;\n formatDataFunctionIsAsync?: boolean;\n}\n\nexport class FileUploader {\n\n public authToken: string;\n public isUploading: boolean = false;\n public queue: FileItem[] = [];\n public progress: number = 0;\n public _nextIndex: number = 0;\n public autoUpload: any;\n public authTokenHeader: string;\n public response: EventEmitter<any>;\n\n public options: FileUploaderOptions = {\n autoUpload: false,\n isHTML5: true,\n filters: [],\n removeAfterUpload: false,\n disableMultipart: false,\n formatDataFunction: (item: FileItem) => item._file,\n formatDataFunctionIsAsync: false\n };\n\n protected _failFilterIndex: number;\n\n public constructor(options: FileUploaderOptions) {\n this.setOptions(options);\n this.response = new EventEmitter<any>();\n }\n\n public setOptions(options: FileUploaderOptions): void {\n this.options = Object.assign(this.options, options);\n\n this.authToken = this.options.authToken;\n this.authTokenHeader = this.options.authTokenHeader || 'Authorization';\n this.autoUpload = this.options.autoUpload;\n this.options.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });\n\n if (this.options.maxFileSize) {\n this.options.filters.unshift({ name: 'fileSize', fn: this._fileSizeFilter });\n }\n\n if (this.options.allowedFileType) {\n this.options.filters.unshift({ name: 'fileType', fn: this._fileTypeFilter });\n }\n\n if (this.options.allowedMimeType) {\n this.options.filters.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });\n }\n\n for (let i = 0; i < this.queue.length; i++) {\n this.queue[ i ].url = this.options.url;\n }\n }\n\n public addToQueue(files: File[], options?: FileUploaderOptions, filters?: FilterFunction[] | string): void {\n let list: File[] = [];\n for (let file of files) {\n list.push(file);\n }\n let arrayOfFilters = this._getFilters(filters);\n let count = this.queue.length;\n let addedFileItems: FileItem[] = [];\n list.map((some: File) => {\n if (!options) {\n options = this.options;\n }\n\n let temp = new FileLikeObject(some);\n if (this._isValidFile(temp, arrayOfFilters, options)) {\n let fileItem = new FileItem(this, some, options);\n addedFileItems.push(fileItem);\n this.queue.push(fileItem);\n this._onAfterAddingFile(fileItem);\n } else {\n let filter = arrayOfFilters[ this._failFilterIndex ];\n this._onWhenAddingFileFailed(temp, filter, options);\n }\n });\n if (this.queue.length !== count) {\n this._onAfterAddingAll(addedFileItems);\n this.progress = this._getTotalProgress();\n }\n this._render();\n if (this.options.autoUpload) {\n this.uploadAll();\n }\n }\n\n public removeFromQueue(value: FileItem): void {\n let index = this.getIndexOfItem(value);\n let item = this.queue[ index ];\n if (item.isUploading) {\n item.cancel();\n }\n this.queue.splice(index, 1);\n this.progress = this._getTotalProgress();\n }\n\n public clearQueue(): void {\n while (this.queue.length) {\n this.queue[ 0 ].remove();\n }\n this.progress = 0;\n }\n\n public uploadItem(value: FileItem): void {\n let index = this.getIndexOfItem(value);\n let item = this.queue[ index ];\n let transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n item._prepareToUploading();\n if (this.isUploading) {\n return;\n }\n this.isUploading = true;\n (this as any)[ transport ](item);\n }\n\n public cancelItem(value: FileItem): void {\n let index = this.getIndexOfItem(value);\n let item = this.queue[ index ];\n let prop = this.options.isHTML5 ? item._xhr : item._form;\n if (item && item.isUploading) {\n prop.abort();\n }\n }\n\n public uploadAll(): void {\n let items = this.getNotUploadedItems().filter((item: FileItem) => !item.isUploading);\n if (!items.length) {\n return;\n }\n items.map((item: FileItem) => item._prepareToUploading());\n items[ 0 ].upload();\n }\n\n public cancelAll(): void {\n let items = this.getNotUploadedItems();\n items.map((item: FileItem) => item.cancel());\n }\n\n public isFile(value: any): boolean {\n return isFile(value);\n }\n\n public isFileLikeObject(value: any): boolean {\n return value instanceof FileLikeObject;\n }\n\n public getIndexOfItem(value: any): number {\n return typeof value === 'number' ? value : this.queue.indexOf(value);\n }\n\n public getNotUploadedItems(): any[] {\n return this.queue.filter((item: FileItem) => !item.isUploaded);\n }\n\n public getReadyItems(): any[] {\n return this.queue\n .filter((item: FileItem) => (item.isReady && !item.isUploading))\n .sort((item1: any, item2: any) => item1.index - item2.index);\n }\n\n public destroy(): void {\n return void 0;\n }\n\n public onAfterAddingAll(fileItems: any): any {\n return { fileItems };\n }\n\n public onBuildItemForm(fileItem: FileItem, form: any): any {\n return { fileItem, form };\n }\n\n public onAfterAddingFile(fileItem: FileItem): any {\n return { fileItem };\n }\n\n public onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any {\n return { item, filter, options };\n }\n\n public onBeforeUploadItem(fileItem: FileItem): any {\n return { fileItem };\n }\n\n public onProgressItem(fileItem: FileItem, progress: any): any {\n return { fileItem, progress };\n }\n\n public onProgressAll(progress: any): any {\n return { progress };\n }\n\n public onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n return { item, response, status, headers };\n }\n\n public onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n return { item, response, status, headers };\n }\n\n public onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n return { item, response, status, headers };\n }\n\n public onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n return { item, response, status, headers };\n }\n\n public onCompleteAll(): any {\n return void 0;\n }\n\n public _mimeTypeFilter(item: FileLikeObject): boolean {\n return !(this.options.allowedMimeType && this.options.allowedMimeType.indexOf(item.type) === -1);\n }\n\n public _fileSizeFilter(item: FileLikeObject): boolean {\n return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n }\n\n public _fileTypeFilter(item: FileLikeObject): boolean {\n return !(this.options.allowedFileType &&\n this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1);\n }\n\n public _onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n item._onError(response, status, headers);\n this.onErrorItem(item, response, status, headers);\n }\n\n public _onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n item._onComplete(response, status, headers);\n this.onCompleteItem(item, response, status, headers);\n let nextItem = this.getReadyItems()[ 0 ];\n this.isUploading = false;\n if (nextItem) {\n nextItem.upload();\n return;\n }\n this.onCompleteAll();\n this.progress = this._getTotalProgress();\n this._render();\n }\n\n protected _headersGetter(parsedHeaders: ParsedResponseHeaders): any {\n return (name: any): any => {\n if (name) {\n return parsedHeaders[ name.toLowerCase() ] || void 0;\n }\n return parsedHeaders;\n };\n }\n\n protected _xhrTransport(item: FileItem): any {\n let that = this;\n let xhr = item._xhr = new XMLHttpRequest();\n let sendable: any;\n this._onBeforeUploadItem(item);\n\n if (typeof item._file.size !== 'number') {\n throw new TypeError('The file specified is no longer valid');\n }\n if (!this.options.disableMultipart) {\n sendable = new FormData();\n this._onBuildItemForm(item, sendable);\n\n const appendFile = () => sendable.append(item.alias, item._file, item.file.name);\n if (!this.options.parametersBeforeFiles) {\n appendFile();\n }\n\n // For AWS, Additional Parameters must come BEFORE Files\n if (this.options.additionalParameter !== undefined) {\n Object.keys(this.options.additionalParameter).forEach((key: string) => {\n let paramVal = this.options.additionalParameter[ key ];\n // Allow an additional parameter to include the filename\n if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0) {\n paramVal = paramVal.replace('{{file_name}}', item.file.name);\n }\n sendable.append(key, paramVal);\n });\n }\n\n if (this.options.parametersBeforeFiles) {\n appendFile();\n }\n } else {\n sendable = this.options.formatDataFunction(item);\n }\n\n xhr.upload.onprogress = (event: any) => {\n let progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n this._onProgressItem(item, progress);\n };\n xhr.onload = () => {\n let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n let response = this._transformResponse(xhr.response, headers);\n let gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n let method = '_on' + gist + 'Item';\n (this as any)[ method ](item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.onerror = () => {\n let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n let response = this._transformResponse(xhr.response, headers);\n this._onErrorItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.onabort = () => {\n let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n let response = this._transformResponse(xhr.response, headers);\n this._onCancelItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n };\n xhr.open(item.method, item.url, true);\n xhr.withCredentials = item.withCredentials;\n if (this.options.headers) {\n for (let header of this.options.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (item.headers.length) {\n for (let header of item.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (this.authToken) {\n xhr.setRequestHeader(this.authTokenHeader, this.authToken);\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState == XMLHttpRequest.DONE) {\n that.response.emit(xhr.responseText)\n }\n }\n if (this.options.formatDataFunctionIsAsync) {\n sendable.then(\n (result: any) => xhr.send(JSON.stringify(result))\n );\n } else {\n xhr.send(sendable);\n }\n this._render();\n }\n\n protected _getTotalProgress(value: number = 0): number {\n if (this.options.removeAfterUpload) {\n return value;\n }\n let notUploaded = this.getNotUploadedItems().length;\n let uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n let ratio = 100 / this.queue.length;\n let current = value * ratio / 100;\n return Math.round(uploaded * ratio + current);\n }\n\n protected _getFilters(filters: FilterFunction[] | string): FilterFunction[] {\n if (!filters) {\n return this.options.filters;\n }\n if (Array.isArray(filters)) {\n return filters;\n }\n if (typeof filters === 'string') {\n let names = filters.match(/[^\\s,]+/g);\n return this.options.filters\n .filter((filter: any) => names.indexOf(filter.name) !== -1);\n }\n return this.options.filters;\n }\n\n protected _render(): any {\n return void 0;\n }\n\n protected _queueLimitFilter(): boolean {\n return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;\n }\n\n protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean {\n this._failFilterIndex = -1;\n return !filters.length ? true : filters.every((filter: FilterFunction) => {\n this._failFilterIndex++;\n return filter.fn.call(this, file, options);\n });\n }\n\n protected _isSuccessCode(status: number): boolean {\n return (status >= 200 && status < 300) || status === 304;\n }\n\n protected _transformResponse(response: string, headers: ParsedResponseHeaders): string {\n return response;\n }\n\n protected _parseHeaders(headers: string): ParsedResponseHeaders {\n let parsed: any = {};\n let key: any;\n let val: any;\n let i: any;\n if (!headers) {\n return parsed;\n }\n headers.split('\\n').map((line: any) => {\n i = line.indexOf(':');\n key = line.slice(0, i).trim().toLowerCase();\n val = line.slice(i + 1).trim();\n if (key) {\n parsed[ key ] = parsed[ key ] ? parsed[ key ] + ', ' + val : val;\n }\n });\n return parsed;\n }\n\n protected _onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): void {\n this.onWhenAddingFileFailed(item, filter, options);\n }\n\n protected _onAfterAddingFile(item: FileItem): void {\n this.onAfterAddingFile(item);\n }\n\n protected _onAfterAddingAll(items: any): void {\n this.onAfterAddingAll(items);\n }\n\n protected _onBeforeUploadItem(item: FileItem): void {\n item._onBeforeUpload();\n this.onBeforeUploadItem(item);\n }\n\n protected _onBuildItemForm(item: FileItem, form: any): void {\n item._onBuildForm(form);\n this.onBuildItemForm(item, form);\n }\n\n protected _onProgressItem(item: FileItem, progress: any): void {\n let total = this._getTotalProgress(progress);\n this.progress = total;\n item._onProgress(progress);\n this.onProgressItem(item, progress);\n this.onProgressAll(total);\n this._render();\n }\n\n protected _onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n item._onSuccess(response, status, headers);\n this.onSuccessItem(item, response, status, headers);\n }\n\n protected _onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n item._onCancel(response, status, headers);\n this.onCancelItem(item, response, status, headers);\n }\n}\n","import { Directive, EventEmitter, ElementRef, Input, HostListener, Output } from '@angular/core';\n\nimport { FileUploader } from './file-uploader.class';\n\n@Directive({ selector: '[ng2FileSelect]' })\nexport class FileSelectDirective {\n @Input() public uploader: FileUploader;\n @Output() public onFileSelected: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n protected element: ElementRef;\n\n public constructor(element: ElementRef) {\n this.element = element;\n }\n\n public getOptions(): any {\n return this.uploader.options;\n }\n\n public getFilters(): any {\n return {};\n }\n\n public isEmptyAfterSelection(): boolean {\n return !!this.element.nativeElement.attributes.multiple;\n }\n\n @HostListener('change')\n public onChange(): any {\n let files = this.element.nativeElement.files;\n let options = this.getOptions();\n let filters = this.getFilters();\n\n this.uploader.addToQueue(files, options, filters);\n this.onFileSelected.emit(files);\n\n if (this.isEmptyAfterSelection()) {\n this.element.nativeElement.value = '';\n }\n }\n}\n","import { Directive, EventEmitter, ElementRef, HostListener, Input, Output } from '@angular/core';\n\nimport { FileUploader, FileUploaderOptions } from './file-uploader.class';\n\n@Directive({ selector: '[ng2FileDrop]' })\nexport class FileDropDirective {\n @Input() public uploader: FileUploader;\n @Output() public fileOver: EventEmitter<any> = new EventEmitter();\n @Output() public onFileDrop: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n protected element: ElementRef;\n\n public constructor(element: ElementRef) {\n this.element = element;\n }\n\n public getOptions(): FileUploaderOptions {\n return this.uploader.options;\n }\n\n public getFilters(): any {\n return {};\n }\n\n @HostListener('drop', [ '$event' ])\n public onDrop(event: any): void {\n let transfer = this._getTransfer(event);\n if (!transfer) {\n return;\n }\n\n let options = this.getOptions();\n let filters = this.getFilters();\n this._preventAndStop(event);\n this.uploader.addToQueue(transfer.files, options, filters);\n this.fileOver.emit(false);\n this.onFileDrop.emit(transfer.files);\n }\n\n @HostListener('dragover', [ '$event' ])\n public onDragOver(event: any): void {\n let transfer = this._getTransfer(event);\n if (!this._haveFiles(transfer.types)) {\n return;\n }\n\n transfer.dropEffect = 'copy';\n this._preventAndStop(event);\n this.fileOver.emit(true);\n }\n\n @HostListener('dragleave', [ '$event' ])\n public onDragLeave(event: any): any {\n if ((this as any).element) {\n if (event.currentTarget === (this as any).element[ 0 ]) {\n return;\n }\n }\n\n this._preventAndStop(event);\n this.fileOver.emit(false);\n }\n\n protected _getTransfer(event: any): any {\n return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;\n }\n\n protected _preventAndStop(event: any): any {\n event.preventDefault();\n event.stopPropagation();\n }\n\n protected _haveFiles(types: any): any {\n if (!types) {\n return false;\n }\n\n if (types.indexOf) {\n return types.indexOf('Files') !== -1;\n } else if (types.contains) {\n return types.contains('Files');\n } else {\n return false;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FileDropDirective } from './file-drop.directive';\nimport { FileSelectDirective } from './file-select.directive';\n\n@NgModule({\n imports: [ CommonModule ],\n declarations: [ FileDropDirective, FileSelectDirective ],\n exports: [ FileDropDirective, FileSelectDirective ]\n})\nexport class FileUploadModule {\n}\n"],"names":[],"mappings":"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"}
|
@@ -1,17 +1,17 @@
|
|
1
1
|
import { EventEmitter, ElementRef } from '@angular/core';
|
2
|
-
import { FileUploader } from './file-uploader.class';
|
2
|
+
import { FileUploader, FileUploaderOptions } from './file-uploader.class';
|
3
3
|
export declare class FileDropDirective {
|
4
4
|
uploader: FileUploader;
|
5
5
|
fileOver: EventEmitter<any>;
|
6
6
|
onFileDrop: EventEmitter<File[]>;
|
7
|
-
|
7
|
+
protected element: ElementRef;
|
8
8
|
constructor(element: ElementRef);
|
9
|
-
getOptions():
|
9
|
+
getOptions(): FileUploaderOptions;
|
10
10
|
getFilters(): any;
|
11
11
|
onDrop(event: any): void;
|
12
12
|
onDragOver(event: any): void;
|
13
13
|
onDragLeave(event: any): any;
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
protected _getTransfer(event: any): any;
|
15
|
+
protected _preventAndStop(event: any): any;
|
16
|
+
protected _haveFiles(types: any): any;
|
17
17
|
}
|
@@ -19,9 +19,9 @@ export declare class FileItem {
|
|
19
19
|
index: number;
|
20
20
|
_xhr: XMLHttpRequest;
|
21
21
|
_form: any;
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
protected uploader: FileUploader;
|
23
|
+
protected some: File;
|
24
|
+
protected options: FileUploaderOptions;
|
25
25
|
constructor(uploader: FileUploader, some: File, options: FileUploaderOptions);
|
26
26
|
upload(): void;
|
27
27
|
cancel(): void;
|
@@ -1,8 +1,9 @@
|
|
1
|
-
import { ElementRef } from '@angular/core';
|
1
|
+
import { EventEmitter, ElementRef } from '@angular/core';
|
2
2
|
import { FileUploader } from './file-uploader.class';
|
3
3
|
export declare class FileSelectDirective {
|
4
4
|
uploader: FileUploader;
|
5
|
-
|
5
|
+
onFileSelected: EventEmitter<File[]>;
|
6
|
+
protected element: ElementRef;
|
6
7
|
constructor(element: ElementRef);
|
7
8
|
getOptions(): any;
|
8
9
|
getFilters(): any;
|
@@ -1,9 +1,10 @@
|
|
1
|
+
import { FileLikeObject } from "../index";
|
1
2
|
export declare class FileType {
|
2
3
|
static mime_doc: string[];
|
3
4
|
static mime_xsl: string[];
|
4
5
|
static mime_ppt: string[];
|
5
6
|
static mime_psd: string[];
|
6
7
|
static mime_compress: string[];
|
7
|
-
static getMimeClass(file:
|
8
|
+
static getMimeClass(file: FileLikeObject): string;
|
8
9
|
static fileTypeDetection(inputFilename: string): string;
|
9
10
|
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
1
2
|
import { FileLikeObject } from './file-like-object.class';
|
2
3
|
import { FileItem } from './file-item.class';
|
3
4
|
export interface Headers {
|
@@ -12,12 +13,12 @@ export declare type FilterFunction = {
|
|
12
13
|
fn: (item?: FileLikeObject, options?: FileUploaderOptions) => boolean;
|
13
14
|
};
|
14
15
|
export interface FileUploaderOptions {
|
15
|
-
allowedMimeType?:
|
16
|
-
allowedFileType?:
|
16
|
+
allowedMimeType?: string[];
|
17
|
+
allowedFileType?: string[];
|
17
18
|
autoUpload?: boolean;
|
18
19
|
isHTML5?: boolean;
|
19
|
-
filters?:
|
20
|
-
headers?:
|
20
|
+
filters?: FilterFunction[];
|
21
|
+
headers?: Headers[];
|
21
22
|
method?: string;
|
22
23
|
authToken?: string;
|
23
24
|
maxFileSize?: number;
|
@@ -27,17 +28,24 @@ export interface FileUploaderOptions {
|
|
27
28
|
disableMultipart?: boolean;
|
28
29
|
itemAlias?: string;
|
29
30
|
authTokenHeader?: string;
|
31
|
+
additionalParameter?: {
|
32
|
+
[key: string]: any;
|
33
|
+
};
|
34
|
+
parametersBeforeFiles?: boolean;
|
35
|
+
formatDataFunction?: Function;
|
36
|
+
formatDataFunctionIsAsync?: boolean;
|
30
37
|
}
|
31
38
|
export declare class FileUploader {
|
32
39
|
authToken: string;
|
33
40
|
isUploading: boolean;
|
34
|
-
queue:
|
41
|
+
queue: FileItem[];
|
35
42
|
progress: number;
|
36
43
|
_nextIndex: number;
|
37
44
|
autoUpload: any;
|
38
45
|
authTokenHeader: string;
|
46
|
+
response: EventEmitter<any>;
|
39
47
|
options: FileUploaderOptions;
|
40
|
-
|
48
|
+
protected _failFilterIndex: number;
|
41
49
|
constructor(options: FileUploaderOptions);
|
42
50
|
setOptions(options: FileUploaderOptions): void;
|
43
51
|
addToQueue(files: File[], options?: FileUploaderOptions, filters?: FilterFunction[] | string): void;
|
@@ -50,8 +58,8 @@ export declare class FileUploader {
|
|
50
58
|
isFile(value: any): boolean;
|
51
59
|
isFileLikeObject(value: any): boolean;
|
52
60
|
getIndexOfItem(value: any): number;
|
53
|
-
getNotUploadedItems():
|
54
|
-
getReadyItems():
|
61
|
+
getNotUploadedItems(): any[];
|
62
|
+
getReadyItems(): any[];
|
55
63
|
destroy(): void;
|
56
64
|
onAfterAddingAll(fileItems: any): any;
|
57
65
|
onBuildItemForm(fileItem: FileItem, form: any): any;
|
@@ -72,20 +80,20 @@ export declare class FileUploader {
|
|
72
80
|
_onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
73
81
|
protected _headersGetter(parsedHeaders: ParsedResponseHeaders): any;
|
74
82
|
protected _xhrTransport(item: FileItem): any;
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
83
|
+
protected _getTotalProgress(value?: number): number;
|
84
|
+
protected _getFilters(filters: FilterFunction[] | string): FilterFunction[];
|
85
|
+
protected _render(): any;
|
86
|
+
protected _queueLimitFilter(): boolean;
|
87
|
+
protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean;
|
88
|
+
protected _isSuccessCode(status: number): boolean;
|
89
|
+
protected _transformResponse(response: string, headers: ParsedResponseHeaders): string;
|
90
|
+
protected _parseHeaders(headers: string): ParsedResponseHeaders;
|
91
|
+
protected _onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): void;
|
92
|
+
protected _onAfterAddingFile(item: FileItem): void;
|
93
|
+
protected _onAfterAddingAll(items: any): void;
|
94
|
+
protected _onBeforeUploadItem(item: FileItem): void;
|
95
|
+
protected _onBuildItemForm(item: FileItem, form: any): void;
|
96
|
+
protected _onProgressItem(item: FileItem, progress: any): void;
|
97
|
+
protected _onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
98
|
+
protected _onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void;
|
91
99
|
}
|
package/index.d.ts
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
export * from './file-upload/file-select.directive';
|
2
2
|
export * from './file-upload/file-drop.directive';
|
3
3
|
export * from './file-upload/file-uploader.class';
|
4
|
+
export * from './file-upload/file-item.class';
|
5
|
+
export * from './file-upload/file-like-object.class';
|
4
6
|
export { FileUploadModule } from './file-upload/file-upload.module';
|
package/ng2-file-upload.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
export
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
@@ -1 +1 @@
|
|
1
|
-
{"__symbolic":"module","version":
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"FileSelectDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":4,"character":1},"arguments":[{"selector":"[ng2FileSelect]"}]}],"members":{"uploader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":6,"character":3}}]}],"onFileSelected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":7,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":11,"character":30}]}],"getOptions":[{"__symbolic":"method"}],"getFilters":[{"__symbolic":"method"}],"isEmptyAfterSelection":[{"__symbolic":"method"}],"onChange":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":27,"character":3},"arguments":["change"]}]}]}},"FileDropDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":4,"character":1},"arguments":[{"selector":"[ng2FileDrop]"}]}],"members":{"uploader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":6,"character":3}}]}],"fileOver":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":7,"character":3}}]}],"onFileDrop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":8,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":12,"character":30}]}],"getOptions":[{"__symbolic":"method"}],"getFilters":[{"__symbolic":"method"}],"onDrop":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":24,"character":3},"arguments":["drop",["$event"]]}]}],"onDragOver":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":39,"character":3},"arguments":["dragover",["$event"]]}]}],"onDragLeave":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":51,"character":3},"arguments":["dragleave",["$event"]]}]}],"_getTransfer":[{"__symbolic":"method"}],"_preventAndStop":[{"__symbolic":"method"}],"_haveFiles":[{"__symbolic":"method"}]}},"Headers":{"__symbolic":"interface"},"ParsedResponseHeaders":{"__symbolic":"interface"},"FilterFunction":{"__symbolic":"interface"},"FileUploaderOptions":{"__symbolic":"interface"},"FileUploader":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"setOptions":[{"__symbolic":"method"}],"addToQueue":[{"__symbolic":"method"}],"removeFromQueue":[{"__symbolic":"method"}],"clearQueue":[{"__symbolic":"method"}],"uploadItem":[{"__symbolic":"method"}],"cancelItem":[{"__symbolic":"method"}],"uploadAll":[{"__symbolic":"method"}],"cancelAll":[{"__symbolic":"method"}],"isFile":[{"__symbolic":"method"}],"isFileLikeObject":[{"__symbolic":"method"}],"getIndexOfItem":[{"__symbolic":"method"}],"getNotUploadedItems":[{"__symbolic":"method"}],"getReadyItems":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"onAfterAddingAll":[{"__symbolic":"method"}],"onBuildItemForm":[{"__symbolic":"method"}],"onAfterAddingFile":[{"__symbolic":"method"}],"onWhenAddingFileFailed":[{"__symbolic":"method"}],"onBeforeUploadItem":[{"__symbolic":"method"}],"onProgressItem":[{"__symbolic":"method"}],"onProgressAll":[{"__symbolic":"method"}],"onSuccessItem":[{"__symbolic":"method"}],"onErrorItem":[{"__symbolic":"method"}],"onCancelItem":[{"__symbolic":"method"}],"onCompleteItem":[{"__symbolic":"method"}],"onCompleteAll":[{"__symbolic":"method"}],"_mimeTypeFilter":[{"__symbolic":"method"}],"_fileSizeFilter":[{"__symbolic":"method"}],"_fileTypeFilter":[{"__symbolic":"method"}],"_onErrorItem":[{"__symbolic":"method"}],"_onCompleteItem":[{"__symbolic":"method"}],"_headersGetter":[{"__symbolic":"method"}],"_xhrTransport":[{"__symbolic":"method"}],"_getTotalProgress":[{"__symbolic":"method"}],"_getFilters":[{"__symbolic":"method"}],"_render":[{"__symbolic":"method"}],"_queueLimitFilter":[{"__symbolic":"method"}],"_isValidFile":[{"__symbolic":"method"}],"_isSuccessCode":[{"__symbolic":"method"}],"_transformResponse":[{"__symbolic":"method"}],"_parseHeaders":[{"__symbolic":"method"}],"_onWhenAddingFileFailed":[{"__symbolic":"method"}],"_onAfterAddingFile":[{"__symbolic":"method"}],"_onAfterAddingAll":[{"__symbolic":"method"}],"_onBeforeUploadItem":[{"__symbolic":"method"}],"_onBuildItemForm":[{"__symbolic":"method"}],"_onProgressItem":[{"__symbolic":"method"}],"_onSuccessItem":[{"__symbolic":"method"}],"_onCancelItem":[{"__symbolic":"method"}]}},"FileItem":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"FileUploader"},{"__symbolic":"error","message":"Could not resolve type","line":27,"character":51,"context":{"typeName":"File"},"module":"./file-upload/file-item.class"},{"__symbolic":"reference","name":"FileUploaderOptions"}]}],"upload":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"onBeforeUpload":[{"__symbolic":"method"}],"onBuildForm":[{"__symbolic":"method"}],"onProgress":[{"__symbolic":"method"}],"onSuccess":[{"__symbolic":"method"}],"onError":[{"__symbolic":"method"}],"onCancel":[{"__symbolic":"method"}],"onComplete":[{"__symbolic":"method"}],"_onBeforeUpload":[{"__symbolic":"method"}],"_onBuildForm":[{"__symbolic":"method"}],"_onProgress":[{"__symbolic":"method"}],"_onSuccess":[{"__symbolic":"method"}],"_onError":[{"__symbolic":"method"}],"_onCancel":[{"__symbolic":"method"}],"_onComplete":[{"__symbolic":"method"}],"_prepareToUploading":[{"__symbolic":"method"}]}},"FileLikeObject":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"_createFromFakePath":[{"__symbolic":"method"}],"_createFromObject":[{"__symbolic":"method"}]}},"FileUploadModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":13}],"declarations":[{"__symbolic":"reference","name":"FileDropDirective"},{"__symbolic":"reference","name":"FileSelectDirective"}],"exports":[{"__symbolic":"reference","name":"FileDropDirective"},{"__symbolic":"reference","name":"FileSelectDirective"}]}]}],"members":{}}},"origins":{"FileSelectDirective":"./file-upload/file-select.directive","FileDropDirective":"./file-upload/file-drop.directive","Headers":"./file-upload/file-uploader.class","ParsedResponseHeaders":"./file-upload/file-uploader.class","FilterFunction":"./file-upload/file-uploader.class","FileUploaderOptions":"./file-upload/file-uploader.class","FileUploader":"./file-upload/file-uploader.class","FileItem":"./file-upload/file-item.class","FileLikeObject":"./file-upload/file-like-object.class","FileUploadModule":"./file-upload/file-upload.module"},"importAs":"ng2-file-upload"}
|
package/package.json
CHANGED
@@ -1,30 +1,21 @@
|
|
1
1
|
{
|
2
2
|
"name": "ng2-file-upload",
|
3
|
-
"
|
4
|
-
"module": "index.js",
|
5
|
-
"typings": "index.d.ts",
|
3
|
+
"version": "1.4.0",
|
6
4
|
"peerDependencies": {
|
7
|
-
"@angular/common": "
|
8
|
-
"@angular/
|
9
|
-
"@angular/core": "^2.0.0",
|
10
|
-
"@angular/forms": "^2.0.0"
|
11
|
-
},
|
12
|
-
"version": "1.1.4-2",
|
13
|
-
"description": "angular2 file upload directives",
|
14
|
-
"keywords": [
|
15
|
-
"angular",
|
16
|
-
"angular2",
|
17
|
-
"bootstrap",
|
18
|
-
"angularjs",
|
19
|
-
"file-upload",
|
20
|
-
"angular-file-upload"
|
21
|
-
],
|
22
|
-
"author": "Vyacheslav Chub <vyacheslav.chub@valor-software.com>",
|
23
|
-
"license": "MIT",
|
24
|
-
"repository": {
|
25
|
-
"type": "git",
|
26
|
-
"url": "git+ssh://git@github.com/valor-software/ng2-file-upload.git"
|
5
|
+
"@angular/common": "*",
|
6
|
+
"@angular/core": "*"
|
27
7
|
},
|
28
|
-
"
|
29
|
-
"
|
8
|
+
"main": "bundles/ng2-file-upload.umd.js",
|
9
|
+
"module": "fesm5/ng2-file-upload.js",
|
10
|
+
"es2015": "fesm2015/ng2-file-upload.js",
|
11
|
+
"esm5": "esm5/ng2-file-upload.js",
|
12
|
+
"esm2015": "esm2015/ng2-file-upload.js",
|
13
|
+
"fesm5": "fesm5/ng2-file-upload.js",
|
14
|
+
"fesm2015": "fesm2015/ng2-file-upload.js",
|
15
|
+
"typings": "ng2-file-upload.d.ts",
|
16
|
+
"metadata": "ng2-file-upload.metadata.json",
|
17
|
+
"sideEffects": false,
|
18
|
+
"dependencies": {
|
19
|
+
"tslib": "^1.9.0"
|
20
|
+
}
|
30
21
|
}
|
package/CHANGELOG.md
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
<a name="1.1.3-0"></a>
|
2
|
-
## [1.1.3-0](https://github.com/valor-software/ng2-file-upload/compare/v1.1.2...v1.1.3-0) (2016-10-19)
|
3
|
-
|
4
|
-
|
5
|
-
### Bug Fixes
|
6
|
-
|
7
|
-
* **typing:** added authTokenHeader property to options and file upload class ([b55c852](https://github.com/valor-software/ng2-file-upload/commit/b55c852))
|
8
|
-
|
9
|
-
|
10
|
-
### Features
|
11
|
-
|
12
|
-
* **build:** added support for AoT and ng-cli ([f0b2879](https://github.com/valor-software/ng2-file-upload/commit/f0b2879)), closes [#436](https://github.com/valor-software/ng2-file-upload/issues/436)
|
13
|
-
* **file-upload:** Add the possibility of set the token header ([#213](https://github.com/valor-software/ng2-file-upload/issues/213)) ([282295c](https://github.com/valor-software/ng2-file-upload/commit/282295c))
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
<a name="1.1.2"></a>
|
18
|
-
## [1.1.2](https://github.com/valor-software/ng2-file-upload/compare/v1.1.1...v1.1.2) (2016-10-17)
|
19
|
-
|
20
|
-
|
21
|
-
### Features
|
22
|
-
|
23
|
-
* **package:** allow of ng2 v2.0.* and v2.*.* ([87395e6](https://github.com/valor-software/ng2-file-upload/commit/87395e6))
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
<a name="1.1.1"></a>
|
28
|
-
## [1.1.1](https://github.com/valor-software/ng2-file-upload/compare/v1.0.3...v1.1.1) (2016-10-17)
|
29
|
-
|
30
|
-
|
31
|
-
### Bug Fixes
|
32
|
-
|
33
|
-
* **uploader:** Add the ability to upload files via PUT instead of POST ([#239](https://github.com/valor-software/ng2-file-upload/issues/239)) ([e068511](https://github.com/valor-software/ng2-file-upload/commit/e068511))
|
34
|
-
* **zone.js:** error in Safari, Added Typings ([#221](https://github.com/valor-software/ng2-file-upload/issues/221)) ([db77e89](https://github.com/valor-software/ng2-file-upload/commit/db77e89))
|
35
|
-
|
36
|
-
|
37
|
-
### Features
|
38
|
-
|
39
|
-
* **multipart:** Create disableMultipart option in FileUploader ([#224](https://github.com/valor-software/ng2-file-upload/issues/224)) ([22307d2](https://github.com/valor-software/ng2-file-upload/commit/22307d2))
|
40
|
-
* **package:** angular ~2.0.1 stable release ([#425](https://github.com/valor-software/ng2-file-upload/issues/425)) ([3fec385](https://github.com/valor-software/ng2-file-upload/commit/3fec385))
|
41
|
-
* **package:** updated to typescript 2 ([4fef496](https://github.com/valor-software/ng2-file-upload/commit/4fef496))
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
<a name="1.1.0"></a>
|
46
|
-
# [1.1.0](https://github.com/valor-software/ng2-file-upload/compare/v1.0.3...v1.1.0) (2016-09-21)
|
47
|
-
|
48
|
-
|
49
|
-
### Bug Fixes
|
50
|
-
|
51
|
-
* **uploader:** Add the ability to upload files via PUT instead of POST ([#239](https://github.com/valor-software/ng2-file-upload/issues/239)) ([e068511](https://github.com/valor-software/ng2-file-upload/commit/e068511))
|
52
|
-
* **zone.js:** error in Safari, Added Typings ([#221](https://github.com/valor-software/ng2-file-upload/issues/221)) ([db77e89](https://github.com/valor-software/ng2-file-upload/commit/db77e89))
|
53
|
-
|
54
|
-
|
55
|
-
### Features
|
56
|
-
|
57
|
-
* **multipart:** Create disableMultipart option in FileUploader ([#224](https://github.com/valor-software/ng2-file-upload/issues/224)) ([22307d2](https://github.com/valor-software/ng2-file-upload/commit/22307d2))
|
58
|
-
* **package:** updated to typescript 2 ([4fef496](https://github.com/valor-software/ng2-file-upload/commit/4fef496))
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
<a name="1.0.3"></a>
|
63
|
-
## [1.0.3](https://github.com/valor-software/ng2-file-upload/compare/v1.0.2...v1.0.3) (2016-05-12)
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
<a name="1.0.2"></a>
|
68
|
-
## 1.0.2 (2016-05-12)
|
69
|
-
|
70
|
-
|
71
|
-
### Bug Fixes
|
72
|
-
|
73
|
-
* **upload:** merge fix and get filters fix ([ef6091c](https://github.com/valor-software/ng2-file-upload/commit/ef6091c))
|
74
|
-
|
75
|
-
|
76
|
-
### Chores
|
77
|
-
|
78
|
-
* **build:** ng2 style guide applied ([aee69d8](https://github.com/valor-software/ng2-file-upload/commit/aee69d8))
|
79
|
-
|
80
|
-
|
81
|
-
### Features
|
82
|
-
|
83
|
-
* **package:** upgrade to angular 2.0.0-rc.1 ([#176](https://github.com/valor-software/ng2-file-upload/issues/176)) ([13c5c35](https://github.com/valor-software/ng2-file-upload/commit/13c5c35)), closes [#180](https://github.com/valor-software/ng2-file-upload/issues/180)
|
84
|
-
|
85
|
-
|
86
|
-
### BREAKING CHANGES
|
87
|
-
|
88
|
-
- directives and selectors renamed to ng2FileSelect and ng2FileDrop
|
89
|
-
|
90
|
-
|
91
|
-
|
package/README.md
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
# ng2-file-upload [](http://badge.fury.io/js/ng2-file-upload)
|
2
|
-
Easy to use Angular2 directives for files upload ([demo](http://valor-software.github.io/ng2-file-upload/))
|
3
|
-
|
4
|
-
Follow me [](https://twitter.com/valorkin) to be notified about new releases.
|
5
|
-
|
6
|
-
[](https://github.com/mgechev/angular2-style-guide)
|
7
|
-
[](https://travis-ci.org/valor-software/ng2-file-upload)
|
8
|
-
[](https://codeclimate.com/github/valor-software/ng2-file-upload)
|
9
|
-
[](https://gitter.im/valor-software/ng2-bootstrap?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
10
|
-
[](https://david-dm.org/valor-software/ng2-file-upload)
|
11
|
-
[](https://david-dm.org/valor-software/ng2-file-upload#info=devDependencies)
|
12
|
-
[](https://waffle.io/valor-software/ng2-file-upload/metrics)
|
13
|
-
|
14
|
-
## Quick start
|
15
|
-
|
16
|
-
1. A recommended way to install ***ng2-file-upload*** is through [npm](https://www.npmjs.com/search?q=ng2-file-upload) package manager using the following command:
|
17
|
-
|
18
|
-
`npm i ng2-file-upload --save`
|
19
|
-
|
20
|
-
Alternatively, you can [download it in a ZIP file](https://github.com/valor-software/ng2-file-upload/archive/master.zip).
|
21
|
-
|
22
|
-
2. Currently `ng2-file-upload` contains two directives: `ng2-file-select` and `ng2-file-drop`. `ng2-file-select` is used for 'file-input' field of form and
|
23
|
-
`ng2-file-drop` is used for area that will be used for dropping of file or files.
|
24
|
-
|
25
|
-
3. More information regarding using of ***ng2-file-upload*** is located in
|
26
|
-
[demo](http://valor-software.github.io/ng2-file-upload/) and [demo sources](https://github.com/valor-software/ng2-file-upload/tree/master/demo).
|
27
|
-
|
28
|
-
## API for `ng2FileSelect`
|
29
|
-
|
30
|
-
### Properties
|
31
|
-
|
32
|
-
- `uploader` - (`FileUploader`) - uploader object. See using in [demo](https://github.com/valor-software/ng2-file-upload/blob/master/demo/components/file-upload/simple-demo.ts)
|
33
|
-
|
34
|
-
## API for `ng2FileDrop`
|
35
|
-
|
36
|
-
### Properties
|
37
|
-
|
38
|
-
- `uploader` - (`FileUploader`) - uploader object. See using in [demo](https://github.com/valor-software/ng2-file-upload/blob/master/demo/components/file-upload/simple-demo.ts)
|
39
|
-
|
40
|
-
Parameters supported by this object:
|
41
|
-
|
42
|
-
1. `url` - URL of File Uploader's route
|
43
|
-
2. `authToken` - Auth token that will be applied as 'Authorization' header during file send.
|
44
|
-
3. `disableMultipart` - If 'true', disable using a multipart form for file upload and instead stream the file. Some APIs (e.g. Amazon S3) may expect the file to be streamed rather than sent via a form. Defaults to false.
|
45
|
-
4. `itemAlias` - item alias (form name redefenition)
|
46
|
-
|
47
|
-
### Events
|
48
|
-
|
49
|
-
- `fileOver` - it fires during 'over' and 'out' events for Drop Area; returns `boolean`: `true` if file is over Drop Area, `false` in case of out.
|
50
|
-
See using in [ts demo](https://github.com/valor-software/ng2-file-upload/blob/master/demo/components/file-upload/simple-demo.ts) and
|
51
|
-
[html demo](https://github.com/valor-software/ng2-file-upload/blob/master/demo/components/file-upload/simple-demo.html)
|
52
|
-
|
53
|
-
# Troubleshooting
|
54
|
-
|
55
|
-
Please follow this guidelines when reporting bugs and feature requests:
|
56
|
-
|
57
|
-
1. Use [GitHub Issues](https://github.com/valor-software/ng2-file-upload/issues) board to report bugs and feature requests (not our email address)
|
58
|
-
2. Please **always** write steps to reproduce the error. That way we can focus on fixing the bug, not scratching our heads trying to reproduce it.
|
59
|
-
|
60
|
-
Thanks for understanding!
|
61
|
-
|
62
|
-
### License
|
63
|
-
|
64
|
-
The MIT License (see the [LICENSE](https://github.com/valor-software/ng2-file-upload/blob/master/LICENSE) file for the full text)
|