UNPKG

angular-file-upload

Version:

Angular File Upload is a module for the AngularJS framework

81 lines (67 loc) 2.08 kB
'use strict'; import CONFIG from './../config.json'; let { extend } = angular; export default function __identity($compile, FileDirective) { return class FileSelect extends FileDirective { /** * Creates instance of {FileSelect} object * @param {Object} options * @constructor */ constructor(options) { let extendedOptions = extend(options, { // Map of events events: { $destroy: 'destroy', change: 'onChange' }, // Name of property inside uploader._directive object prop: 'select' }); super(extendedOptions); if(!this.uploader.isHTML5) { this.element.removeAttr('multiple'); } this.element.prop('value', null); // FF fix } /** * Returns options * @return {Object|undefined} */ getOptions() { } /** * Returns filters * @return {Array<Function>|String|undefined} */ getFilters() { } /** * If returns "true" then HTMLInputElement will be cleared * @returns {Boolean} */ isEmptyAfterSelection() { return !!this.element.attr('multiple'); } /** * Event handler */ onChange() { var files = this.uploader.isHTML5 ? this.element[0].files : this.element[0]; var options = this.getOptions(); var filters = this.getFilters(); if(!this.uploader.isHTML5) this.destroy(); this.uploader.addToQueue(files, options, filters); if(this.isEmptyAfterSelection()) { this.element.prop('value', null); this.element.replaceWith($compile(this.element.clone())(this.scope)); // IE fix } } } } __identity.$inject = [ '$compile', 'FileDirective' ];