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]);
}