diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 0bb2f8914..3b9cd70c7 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -145,6 +145,7 @@ All definitions files include a header with the author and editors, so at some p * [jQuery.dataTables](http://www.datatables.net) (by [Armin Sander](https://github.com/pragmatrix)) * [jQuery.datetimepicker](http://trentrichardson.com/examples/timepicker/) (by [Doug McDonald](https://github.com/dougajmcdonald)) * [jQuery.dynatree](http://code.google.com/p/dynatree/) (by [François de Campredon](https://github.com/fdecampredon)) +* [jQuery.Fileupload](https://github.com/blueimp/jQuery-File-Upload/) (by [Rob Alarcon](https://github.com/rob-alarcon)) * [jQuery.Finger](http://ngryman.sh/jquery.finger/) (by [Max Ackley](https://github.com/maxackley)) * [jQuery.Flot](http://www.flotcharts.org/) (by [Matt Burland](https://github.com/burlandm)) * [jQuery.form](http://malsup.com/jquery/form/) (by [François Guillot](http://fguillot.developpez.com/)) diff --git a/jquery.fileupload/jquery.fileupload-tests.ts b/jquery.fileupload/jquery.fileupload-tests.ts new file mode 100644 index 000000000..87149e015 --- /dev/null +++ b/jquery.fileupload/jquery.fileupload-tests.ts @@ -0,0 +1,43 @@ +/// + +/* +* Handle the event of adding a file to the jQuery Upload plugin. +* +*/ +var __handleAddingFile = function (event:any, data:any) +{ + event.preventDefault(); + + // [PERFORM VALIDATION] + // If the data is valid submit the document + data.submit(); +}; + +class TestFileInput { + + // The whole body will be the container for this test + $el = $('body'); + + // Reference to the whole jQueryFileUpload object of the class + fileInput:JQueryFileUpload; + + constructor() { + + // The file upload object receives a fileInputOptions configuration object + this.fileInput = this.$el.fileupload({ + + dataType: 'json', + + // By default, each file of a selection is uploaded using an individual + // request for XHR type uploads. Set to false to upload file + // selections in one request each: + singleFileUploads: true, + // To limit the number of files uploaded with one XHR request, + // set the following option to an integer greater than 0: + limitMultiFileUploads: 1, + + add: __handleAddingFile + + }); + } +} diff --git a/jquery.fileupload/jquery.fileupload.d.ts b/jquery.fileupload/jquery.fileupload.d.ts new file mode 100644 index 000000000..0ac8b98f9 --- /dev/null +++ b/jquery.fileupload/jquery.fileupload.d.ts @@ -0,0 +1,164 @@ +// Type definitions for jQuery File Upload Plugin 5.40.1 +// Project: https://github.com/blueimp/jQuery-File-Upload +// Definitions by: Rob Alarcon +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + + +// Interface options for the plugin +interface JQueryFileInputOptions { + + // The drop target element(s), by the default the complete document. + // Set to null to disable drag & drop support: + dropZone?: HTMLElement; + + // The paste target element(s), by the default the complete document. + // Set to null to disable paste support: + pasteZone?: HTMLElement; + + // The file input field(s), that are listened to for change events. + // If undefined, it is set to the file input fields inside + // of the widget element on plugin initialization. + // Set to null to disable the change listener. + fileInput?: HTMLElement; + + // By default, the file input field is replaced with a clone after + // each input field change event. This is required for iframe transport + // queues and allows change events to be fired for the same file + // selection, but can be disabled by setting the following option to false: + replaceFileInput?: boolean; + + + // The parameter name for the file form data (the request argument name). + // If undefined or empty, the name property of the file input field is + // used, or "files[]" if the file input name property is also empty, + // can be a string or an array of strings: + paramName?: any; + + // By default, each file of a selection is uploaded using an individual + // request for XHR type uploads. Set to false to upload file + // selections in one request each: + singleFileUploads?: boolean; + + // To limit the number of files uploaded with one XHR request, + // set the following option to an integer greater than 0: + limitMultiFileUploads?: number; + + // The following option limits the number of files uploaded with one + // XHR request to keep the request size under or equal to the defined + // limit in bytes: + limitMultiFileUploadSize?: number; + + // Multipart file uploads add a number of bytes to each uploaded file, + // therefore the following option adds an overhead for each file used + // in the limitMultiFileUploadSize configuration: + limitMultiFileUploadSizeOverhead?: number; + + // Set the following option to true to issue all file upload requests + // in a sequential order: + sequentialUploads?: boolean; + + // To limit the number of concurrent uploads, + // set the following option to an integer greater than 0: + limitConcurrentUploads?: number; + + // Set the following option to true to force iframe transport uploads: + forceIframeTransport?: boolean; + + // Set the following option to the location of a redirect url on the + // origin server, for cross-domain iframe transport uploads: + redirect?: string; + + // The parameter name for the redirect url, sent as part of the form + // data and set to 'redirect' if this option is empty: + redirectParamName?: string; + + // Set the following option to the location of a postMessage window, + // to enable postMessage transport uploads: + postMessage?: string; + + // By default, XHR file uploads are sent as multipart/form-data. + // The iframe transport is always using multipart/form-data. + // Set to false to enable non-multipart XHR uploads: + multipart?: boolean; + + // To upload large files in smaller chunks, set the following option + // to a preferred maximum chunk size. If set to 0, null or undefined, + // or the browser does not support the required Blob API, files will + // be uploaded as a whole. + maxChunkSize?: number; + + // When a non-multipart upload or a chunked multipart upload has been + // aborted, this option can be used to resume the upload by setting + // it to the size of the already uploaded bytes. This option is most + // useful when modifying the options object inside of the "add" or + // "send" callbacks, as the options are cloned for each file upload. + uploadedBytes?: number; + + // By default, failed (abort or error) file uploads are removed from the + // global progress calculation. Set the following option to false to + // prevent recalculating the global progress data: + recalculateProgress?: boolean; + + // Interval in milliseconds to calculate and trigger progress events: + progressInterval?: number; + + // Interval in milliseconds to calculate progress bitrate: + bitrateInterval?: number; + + // By default, uploads are started automatically when adding files: + autoUpload?: boolean; + + // Error and info messages: + messages?: any; + + // Translation function, gets the message key to be translated + // and an object with context specific data as arguments: + i18n?: any; + + // Additional form data to be sent along with the file uploads can be set + // using this option, which accepts an array of objects with name and + // value properties, a function returning such an array, a FormData + // object (for XHR file uploads), or a simple object. + // The form of the first fileInput is given as parameter to the function: + formData?: any; + + // The add callback is invoked as soon as files are added to the fileupload + // widget (via file input selection, drag & drop, paste or add API call). + // If the singleFileUploads option is enabled, this callback will be + // called once for each file in the selection for XHR file uploads, else + // once for each file selection. + // + // The upload starts when the submit method is invoked on the data parameter. + // The data object contains a files property holding the added files + // and allows you to override plugin options as well as define ajax settings. + // + // Listeners for this callback can also be bound the following way: + // .bind('fileuploadadd', func); + // + // data.submit() returns a Promise object and allows to attach additional + // handlers using jQuery's Deferred callbacks: + // data.submit().done(func).fail(func).always(func); + add?: any; + + // The plugin options are used as settings object for the ajax calls. + // The following are jQuery ajax settings required for the file uploads: + processData?: boolean; + + contentType?: string; + + cache?: boolean; + +} + +interface JQueryFileUpload { + + contentType:string; +} + +interface JQuery +{ + // Interface to the main method of jQuery File Upload + fileupload(settings: JQueryFileInputOptions): JQueryFileUpload; +} \ No newline at end of file