From 8fcae8ea8430784fa4bac977553f98d301f5fa0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 1 May 2020 00:24:46 +0200 Subject: [PATCH] Set width of numeric input according to digits issue9282 review317311002 --- src/sao.less | 5 ----- src/view/form.js | 23 ++++++++++++++++++++++- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/sao.less b/src/sao.less index ade93dd2b3..68da3da15f 100644 --- a/src/sao.less +++ b/src/sao.less @@ -442,11 +442,6 @@ img.icon { } } - .form-integer, .form-float { - input { - max-width: 8em; - } - } .form-url, .form-email, .form-callto, .form-sip { a > img { width: 1em; diff --git a/src/view/form.js b/src/view/form.js index 1d0f910f7e..8583378af4 100644 --- a/src/view/form.js +++ b/src/view/form.js @@ -1823,10 +1823,14 @@ function eval_pyson(value){ } return value; }, + get width() { + return 8; + }, display: function() { Sao.View.Form.Integer._super.display.call(this); var field = this.field; var value = ''; + this.el.css('width', this.width + 'ch'); if (field) { value = field.get_client(this.record, this.factor); } @@ -1850,12 +1854,29 @@ function eval_pyson(value){ Sao.View.Form.Float = Sao.class_(Sao.View.Form.Integer, { class_: 'form-float', + get digits() { + var record = this.record, + field = this.field; + if (record && field) { + return field.digits(record, this.factor); + } + }, + get width() { + var digits = this.digits; + if (digits) { + return digits.reduce(function(acc, cur) { + return acc + cur; + }); + } else { + return 18; + } + }, display: function() { var record = this.record; var field = this.field; var step = 'any'; if (record) { - var digits = field.digits(record, this.factor); + var digits = this.digits; if (digits) { step = Math.pow(10, -digits[1]).toFixed(digits[1]); }