summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorRomain Estievenart <res@odoo.com>2020-03-03 08:29:33 +0000
committerRomain Estievenart <res@odoo.com>2020-03-06 15:34:21 +0000
commitc4755151bd9ef9e9342412ef8eec6b4e0e06da2d (patch)
treec1e937dea5aa04b23fcbcfe04df916a5a10314f9 /addons/web
parent55cecf91b710679422bf2db029a5923757d8976d (diff)
[FIX] web: the signature content is drop when the browser is resized
Step to reproduce: 1. Go to sign 2. Click on the button 'Share' inside a template. 3. Click on Sign now' 4. Click on a field signature 5. Draw a signature 6. Resize the browser Before this commit the code of the widget drops the content when a browser is triggering a resize. But with a mobile devices (like Android phone). A resize event is trigger when the keyboard is displayed. => The resize drop redraw all the widget content when the user fill the displayed input. Task ID: 2155601 X-original-commit: a6af5a12efb0da9d8ee7526e6b4738c9595f9816
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/static/src/js/widgets/name_and_signature.js34
1 files changed, 23 insertions, 11 deletions
diff --git a/addons/web/static/src/js/widgets/name_and_signature.js b/addons/web/static/src/js/widgets/name_and_signature.js
index 555a8bb496b..aa30b2c0521 100644
--- a/addons/web/static/src/js/widgets/name_and_signature.js
+++ b/addons/web/static/src/js/widgets/name_and_signature.js
@@ -142,7 +142,7 @@ var NameAndSignature = Widget.extend({
// May happen since this is debounced
return;
}
- self.resetSignature();
+ self.resizeSignature();
}, 250));
return this._super.apply(this, arguments);
@@ -204,6 +204,27 @@ var NameAndSignature = Widget.extend({
var signature = this.$signatureField.jSignature('getData');
return signature && this.emptySignature ? this.emptySignature === signature : true;
},
+ resizeSignature: function() {
+ if (!this.$signatureField) {
+ return;
+ }
+ // recompute size based on the current width
+ this.$signatureField.css({width: 'unset'});
+ const width = this.$signatureField.width();
+ const height = parseInt(width / this.displaySignatureRatio);
+
+ // necessary because the lib is adding invisible div with margin
+ // signature field too tall without this code
+ this.$signatureField.css({
+ width: width,
+ height: height,
+ });
+ this.$signatureField.find('canvas').css({
+ width: width,
+ height: height,
+ });
+ return {width, height};
+ },
/**
* (Re)initializes the signature area:
* - set the correct width and height of the drawing based on the width
@@ -219,17 +240,8 @@ var NameAndSignature = Widget.extend({
// no action if called before start
return Promise.reject();
}
- // recompute size based on the current width
- this.$signatureField.css({width: 'unset'});
- var width = this.$signatureField.width();
- var height = parseInt(width / this.displaySignatureRatio);
- // necessary because the lib is adding invisible div with margin
- // signature field too tall without this code
- this.$signatureField.css({
- width: width,
- height: height,
- });
+ const {width, height} = this.resizeSignature();
this.$signatureField
.empty()