diff --git a/setup/web_widget_char_size/odoo/addons/web_widget_char_size b/setup/web_widget_char_size/odoo/addons/web_widget_char_size
new file mode 120000
index 000000000..abd6fe84b
--- /dev/null
+++ b/setup/web_widget_char_size/odoo/addons/web_widget_char_size
@@ -0,0 +1 @@
+../../../../web_widget_char_size
\ No newline at end of file
diff --git a/setup/web_widget_char_size/setup.py b/setup/web_widget_char_size/setup.py
new file mode 100644
index 000000000..28c57bb64
--- /dev/null
+++ b/setup/web_widget_char_size/setup.py
@@ -0,0 +1,6 @@
+import setuptools
+
+setuptools.setup(
+ setup_requires=['setuptools-odoo'],
+ odoo_addon=True,
+)
diff --git a/web_widget_char_size/__init__.py b/web_widget_char_size/__init__.py
new file mode 100644
index 000000000..7af42f99f
--- /dev/null
+++ b/web_widget_char_size/__init__.py
@@ -0,0 +1 @@
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
diff --git a/web_widget_char_size/__manifest__.py b/web_widget_char_size/__manifest__.py
new file mode 100644
index 000000000..626c09854
--- /dev/null
+++ b/web_widget_char_size/__manifest__.py
@@ -0,0 +1,17 @@
+# Copyright 2021 Simone Rubino - Agile Business Group
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+{
+ "name": "Widget Char size",
+ "summary": "Add size option to Char widget",
+ "version": "14.0.1.0.0",
+ "category": "Hidden",
+ "website": "https://github.com/OCA/web",
+ "author": "Agile Business Group, Odoo Community Association (OCA)",
+ "license": "AGPL-3",
+ "depends": [
+ "web",
+ ],
+ "data": [
+ "views/assets.xml",
+ ],
+}
diff --git a/web_widget_char_size/readme/DESCRIPTION.rst b/web_widget_char_size/readme/DESCRIPTION.rst
new file mode 100644
index 000000000..afdfd0a79
--- /dev/null
+++ b/web_widget_char_size/readme/DESCRIPTION.rst
@@ -0,0 +1,11 @@
+This module allows to add an option `size` to Char fields in web client:
+
+.. code-block:: XML
+
+
+
+that allows to enter only the specified number of characters in the field.
+
+Note that adding the `size=` attribute in Char field definition raises the following warning:
+
+ unknown parameter 'size', if this is an actual parameter you may want to override the method _valid_field_parameter on the relevant model in order to allow it
diff --git a/web_widget_char_size/static/src/js/char_widget.js b/web_widget_char_size/static/src/js/char_widget.js
new file mode 100644
index 000000000..9315f3ecc
--- /dev/null
+++ b/web_widget_char_size/static/src/js/char_widget.js
@@ -0,0 +1,16 @@
+odoo.define("web_widget_char_size.char_widget", function (require) {
+ "use strict";
+
+ var BasicFields = require("web.basic_fields");
+
+ BasicFields.FieldChar.include({
+ _renderEdit: function () {
+ var def = this._super.apply(this, arguments);
+ var option_size = this.nodeOptions.size;
+ if (option_size && option_size > 0) {
+ this.$el.attr("maxlength", option_size);
+ }
+ return def;
+ },
+ });
+});
diff --git a/web_widget_char_size/views/assets.xml b/web_widget_char_size/views/assets.xml
new file mode 100644
index 000000000..04961071d
--- /dev/null
+++ b/web_widget_char_size/views/assets.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+