[FIX] web: File upload input on_clear event not propagated

The handler function was used directly in the code. The MouseEvent wasn't provided in that case.
This FIX split the handler function and the processing function so that it doesn't interfere.

closes odoo/odoo#27929
This commit is contained in:
TWA
2018-10-18 08:55:07 +00:00
parent 0ac93c3828
commit 972c8e9ff5
@@ -1363,7 +1363,7 @@ var AbstractFieldBinary = AbstractField.extend({
'click .o_select_file_button': function () {
this.$('.o_input_file').click();
},
'click .o_clear_file_button': 'on_clear',
'click .o_clear_file_button': '_onClearClick',
}),
init: function (parent, name, record) {
this._super.apply(this, arguments);
@@ -1449,11 +1449,33 @@ var AbstractFieldBinary = AbstractField.extend({
});
}
},
on_clear: function () {
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* Clear the file input
*
* @private
*/
_clearFile: function (){
this.set_filename('');
this._setValue(false);
this._render();
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* On "clear file" button click
*
* @param {MouseEvent} ev
* @private
*/
_onClearClick: function (ev) {
this._clearFile();
},
});
var FieldBinaryImage = AbstractFieldBinary.extend({
@@ -1510,7 +1532,7 @@ var FieldBinaryImage = AbstractFieldBinary.extend({
this.$('> img').remove();
this.$el.prepend($img);
$img.on('error', function () {
self.on_clear();
self._clearFile();
$img.attr('src', self.placeholder);
self.do_warn(_t("Image"), _t("Could not display the selected image."));
});