summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2019-03-20 10:08:44 +0000
committerAaron Bohy <aab@odoo.com>2019-04-02 11:55:57 +0000
commitd0164d834bb18f37f15a129e911f7d8e1c54b7c3 (patch)
treed8a54db700bd97aaa91815b202c992815e4ebc50 /addons/web/static/src/js
parent9fbb4fb44ff92cdee53454ab328c10ae66a11aa0 (diff)
[IMP] web,account: editable list: no more position absolute
Before this rev., widgets were absolutely positioned in table cells. This cause an undesired effect with text fields, as their textarea overflowed and overlapped the next lines. With this rev., wigdets are now statically positioned, and the cells height and width don't change when switching a row to edit mode. Part of task 1915702
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/core/dom.js2
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js14
-rw-r--r--addons/web/static/src/js/fields/field_registry.js1
-rw-r--r--addons/web/static/src/js/views/list/list_editable_renderer.js9
4 files changed, 23 insertions, 3 deletions
diff --git a/addons/web/static/src/js/core/dom.js b/addons/web/static/src/js/core/dom.js
index e618b644eaa..81211788246 100644
--- a/addons/web/static/src/js/core/dom.js
+++ b/addons/web/static/src/js/core/dom.js
@@ -102,7 +102,7 @@ var dom = {
}
options = options || {};
- minHeight = (options && options.min_height) || 50;
+ minHeight = 'min_height' in options ? options.min_height : 50;
$fixedTextarea = $('<textarea disabled>', {
class: $textarea[0].className,
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index 1c5c19ebcf8..5919f100bcc 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -1112,6 +1112,7 @@ var FieldText = InputField.extend(TranslatableFieldMixin, {
if (this.mode === 'edit') {
this.tagName = 'textarea';
}
+ this.autoResizeOptions = {parent: this};
},
/**
* As it it done in the start function, the autoresize is done only once.
@@ -1120,7 +1121,7 @@ var FieldText = InputField.extend(TranslatableFieldMixin, {
*/
start: function () {
if (this.mode === 'edit') {
- dom.autoresize(this.$el, {parent: this});
+ dom.autoresize(this.$el, this.autoResizeOptions);
this.$el = this.$el.add(this._renderTranslateButton());
}
@@ -1157,6 +1158,16 @@ var FieldText = InputField.extend(TranslatableFieldMixin, {
},
});
+var ListFieldText = FieldText.extend({
+ /**
+ * @override
+ */
+ init: function () {
+ this._super.apply(this, arguments);
+ this.autoResizeOptions.min_height = 0;
+ },
+});
+
/**
* Displays a handle to modify the sequence.
*/
@@ -2995,6 +3006,7 @@ return {
FieldPhone: FieldPhone,
FieldProgressBar: FieldProgressBar,
FieldText: FieldText,
+ ListFieldText: ListFieldText,
FieldToggleBoolean: FieldToggleBoolean,
HandleWidget: HandleWidget,
InputField: InputField,
diff --git a/addons/web/static/src/js/fields/field_registry.js b/addons/web/static/src/js/fields/field_registry.js
index cd4c92087eb..ccd5dabdff1 100644
--- a/addons/web/static/src/js/fields/field_registry.js
+++ b/addons/web/static/src/js/fields/field_registry.js
@@ -26,6 +26,7 @@ registry
.add('datetime', basic_fields.FieldDateTime)
.add('domain', basic_fields.FieldDomain)
.add('text', basic_fields.FieldText)
+ .add('list.text', basic_fields.ListFieldText)
.add('html', basic_fields.FieldText)
.add('float', basic_fields.FieldFloat)
.add('char', basic_fields.FieldChar)
diff --git a/addons/web/static/src/js/views/list/list_editable_renderer.js b/addons/web/static/src/js/views/list/list_editable_renderer.js
index 687f046b7e6..040a186d4ee 100644
--- a/addons/web/static/src/js/views/list/list_editable_renderer.js
+++ b/addons/web/static/src/js/views/list/list_editable_renderer.js
@@ -119,6 +119,10 @@ ListRenderer.include({
* - There is no line in edition (all lines are saved so they are all valid)
* - The line in edition can be saved
*
+ * If the given recordID is a record in the list, toggle a className on its
+ * row's cells for invalid fields, so that we can style those cells
+ * differently.
+ *
* @override
* @param {string} [recordID]
* @returns {string[]}
@@ -130,7 +134,10 @@ ListRenderer.include({
return [];
}
}
- return this._super(recordID);
+ var fieldNames = this._super(recordID);
+ this.$('.o_selected_row .o_data_cell').removeClass('o_invalid_cell');
+ this.$('.o_selected_row .o_data_cell:has(> .o_field_invalid)').addClass('o_invalid_cell');
+ return fieldNames;
},
/**
* We need to override the confirmChange method from BasicRenderer to