changeset 39d86c4cd4de in sao:default
details: https://hg.tryton.org/sao?cmd=changeset;node=39d86c4cd4de
description:
        Set width of numeric input according to digits

        issue9282
        review317311002
diffstat:

 src/sao.less     |   5 -----
 src/view/form.js |  23 ++++++++++++++++++++++-
 2 files changed, 22 insertions(+), 6 deletions(-)

diffs (64 lines):

diff -r c72aec680424 -r 39d86c4cd4de src/sao.less
--- a/src/sao.less      Tue Apr 28 00:31:05 2020 +0200
+++ b/src/sao.less      Fri May 01 00:24:46 2020 +0200
@@ -442,11 +442,6 @@
         }
     }
 
-    .form-integer, .form-float {
-        input {
-            max-width: 8em;
-        }
-    }
     .form-url, .form-email, .form-callto, .form-sip {
         a > img {
             width: 1em;
diff -r c72aec680424 -r 39d86c4cd4de src/view/form.js
--- a/src/view/form.js  Tue Apr 28 00:31:05 2020 +0200
+++ b/src/view/form.js  Fri May 01 00:24:46 2020 +0200
@@ -1823,10 +1823,14 @@
             }
             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 @@
 
     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]);
                 }

Reply via email to