code: function () {
          var self = this;
  
          var toggleDragClass = function (e) {
            e.preventDefault();
            self.classes.toggle('dragenter');
            self.getEl().className = self.classes;
          };
  
          var filter = function (files) {
            var accept = self.settings.accept;
            if (typeof accept !== 'string') {
              return files;
            }
  
            var re = new RegExp('(' + accept.split(/\s*,\s*/).join('|') + ')$', 'i');
            return Tools.grep(files, function (file) {
              return re.test(file.name);
            });
          };
  
          self._super();
  
          self.$el.on('dragover', function (e) {
            e.preventDefault();
          });
  
          self.$el.on('dragenter', toggleDragClass);
          self.$el.on('dragleave', toggleDragClass);
  
          self.$el.on('drop', function (e) {
            e.preventDefault();
  
            if (self.state.get('disabled')) {
              return;
            }
  
            var files = filter(e.dataTransfer.files);
  
            self.value = function () {
              if (!files.length) {
                return null;
              } else if (self.settings.multiple) {
                return files;
              } else {
                return files[0];
              }
            };
  
            if (files.length) {
              self.fire('change', e);
            }
          });
        }
docs: Called after the control has been rendered.
  
  @method postRender