forked from Techsystech/web
[IMP] web_widget_one2many_product_picker: Prevent lost search input focus
parent
b51144a0b7
commit
eec959b820
|
@ -154,7 +154,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
false,
|
false,
|
||||||
true,
|
true,
|
||||||
search_record_index
|
search_record_index
|
||||||
)
|
)[0]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -233,7 +233,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
// Need add a new one?
|
// Need add a new one?
|
||||||
if (!exists && search_record_index !== -1) {
|
if (!exists && search_record_index !== -1) {
|
||||||
var new_search_record = _.extend({}, search_record, {__id: state.id});
|
var new_search_record = _.extend({}, search_record, {__id: state.id});
|
||||||
defs.push(this.appendSearchRecords([new_search_record], false, true, search_record_index));
|
defs.push(this.appendSearchRecords([new_search_record], false, true, search_record_index)[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.widgets = _.compact(this.widgets);
|
this.widgets = _.compact(this.widgets);
|
||||||
|
@ -254,7 +254,8 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
this.$extraButtonsContainer = $(qweb.render("One2ManyProductPicker.ExtraButtons"));
|
this.$extraButtonsContainer = $(qweb.render("One2ManyProductPicker.ExtraButtons"));
|
||||||
this.$btnLoadMore = this.$extraButtonsContainer.find("#productPickerLoadMore");
|
this.$btnLoadMore = this.$extraButtonsContainer.find("#productPickerLoadMore");
|
||||||
return $.Deferred(function (d) {
|
return $.Deferred(function (d) {
|
||||||
self.appendSearchRecords(self.search_data, true).then(function () {
|
var defs = self.appendSearchRecords(self.search_data, true);
|
||||||
|
defs[0].then(function () {
|
||||||
_.invoke(oldWidgets, "destroy");
|
_.invoke(oldWidgets, "destroy");
|
||||||
self.$el.empty();
|
self.$el.empty();
|
||||||
self.$el.append(self.$recordsContainer);
|
self.$el.append(self.$recordsContainer);
|
||||||
|
@ -263,7 +264,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
if (self._isInDom) {
|
if (self._isInDom) {
|
||||||
_.invoke(self.widgets, "on_attach_callback");
|
_.invoke(self.widgets, "on_attach_callback");
|
||||||
}
|
}
|
||||||
d.resolve();
|
d.resolve(defs[1]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -398,7 +399,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
* @param {Boolean} no_attach_widgets
|
* @param {Boolean} no_attach_widgets
|
||||||
* @param {Boolean} no_process_records
|
* @param {Boolean} no_process_records
|
||||||
* @param {Number} position
|
* @param {Number} position
|
||||||
* @returns {Deferred}
|
* @returns {Array[Deferred]}
|
||||||
*/
|
*/
|
||||||
appendSearchRecords: function (search_records, no_attach_widgets, no_process_records, position) {
|
appendSearchRecords: function (search_records, no_attach_widgets, no_process_records, position) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -411,15 +412,17 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
delete this.defs;
|
delete this.defs;
|
||||||
var defsVirtualState = this.defsVirtualState;
|
var defsVirtualState = this.defsVirtualState;
|
||||||
delete this.defsVirtualState;
|
delete this.defsVirtualState;
|
||||||
$.when.apply($, defsVirtualState).then(function () {
|
return [
|
||||||
self.trigger_up("loading_records", {finished:true});
|
$.when.apply($, defs).then(function () {
|
||||||
});
|
if (!no_attach_widgets && self._isInDom) {
|
||||||
return $.when.apply($, defs).then(function () {
|
var new_widgets = self.widgets.slice(cur_widget_index);
|
||||||
if (!no_attach_widgets && self._isInDom) {
|
_.invoke(new_widgets, "on_attach_callback");
|
||||||
var new_widgets = self.widgets.slice(cur_widget_index);
|
}
|
||||||
_.invoke(new_widgets, "on_attach_callback");
|
}),
|
||||||
}
|
$.when.apply($, defsVirtualState).then(function () {
|
||||||
});
|
self.trigger_up("loading_records", {finished:true});
|
||||||
|
}),
|
||||||
|
];
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -270,7 +270,11 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun
|
||||||
return $.Deferred(function (d) {
|
return $.Deferred(function (d) {
|
||||||
self._getSearchRecords().then(function () {
|
self._getSearchRecords().then(function () {
|
||||||
self.renderer.$el.scrollTop(0);
|
self.renderer.$el.scrollTop(0);
|
||||||
self.renderer._renderView().then(d.resolve);
|
self.renderer._renderView().then(function (virtualStateDefs) {
|
||||||
|
virtualStateDefs.then(function () {
|
||||||
|
d.resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -546,8 +550,11 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
_onClickSearchEraser: function () {
|
_onClickSearchEraser: function () {
|
||||||
|
var self = this;
|
||||||
this._clearSearchInput();
|
this._clearSearchInput();
|
||||||
this.doRenderSearchRecords();
|
this.doRenderSearchRecords().then(function () {
|
||||||
|
self.$searchInput.focus();
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue