From 04a2beb3624678178f24db1d919b31a553658854 Mon Sep 17 00:00:00 2001
From: SimoRubi
Date: Thu, 10 Jun 2021 11:13:33 +0200
Subject: [PATCH 1/9] [ADD] web_widget_char_size
---
web_widget_char_size/README.rst | 78 ++++
web_widget_char_size/__init__.py | 1 +
web_widget_char_size/__manifest__.py | 17 +
.../i18n/web_widget_char_size.pot | 13 +
web_widget_char_size/readme/DESCRIPTION.rst | 11 +
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 419 ++++++++++++++++++
.../static/src/js/char_widget.js | 16 +
web_widget_char_size/views/assets.xml | 19 +
9 files changed, 574 insertions(+)
create mode 100644 web_widget_char_size/README.rst
create mode 100644 web_widget_char_size/__init__.py
create mode 100644 web_widget_char_size/__manifest__.py
create mode 100644 web_widget_char_size/i18n/web_widget_char_size.pot
create mode 100644 web_widget_char_size/readme/DESCRIPTION.rst
create mode 100644 web_widget_char_size/static/description/icon.png
create mode 100644 web_widget_char_size/static/description/index.html
create mode 100644 web_widget_char_size/static/src/js/char_widget.js
create mode 100644 web_widget_char_size/views/assets.xml
diff --git a/web_widget_char_size/README.rst b/web_widget_char_size/README.rst
new file mode 100644
index 000000000000..2479dbe893ca
--- /dev/null
+++ b/web_widget_char_size/README.rst
@@ -0,0 +1,78 @@
+================
+Widget Char size
+================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
+ :target: https://github.com/OCA/web/tree/14.0/web_widget_char_size
+ :alt: OCA/web
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_widget_char_size
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/162/14.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+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
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Agile Business Group
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/web `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_widget_char_size/__init__.py b/web_widget_char_size/__init__.py
new file mode 100644
index 000000000000..7af42f99f860
--- /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 000000000000..15ec888af250
--- /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.1",
+ "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/i18n/web_widget_char_size.pot b/web_widget_char_size/i18n/web_widget_char_size.pot
new file mode 100644
index 000000000000..4d8b20f912ff
--- /dev/null
+++ b/web_widget_char_size/i18n/web_widget_char_size.pot
@@ -0,0 +1,13 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
diff --git a/web_widget_char_size/readme/DESCRIPTION.rst b/web_widget_char_size/readme/DESCRIPTION.rst
new file mode 100644
index 000000000000..afdfd0a79227
--- /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/description/icon.png b/web_widget_char_size/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/web_widget_char_size/static/description/index.html b/web_widget_char_size/static/description/index.html
new file mode 100644
index 000000000000..e6b10d5f3bf5
--- /dev/null
+++ b/web_widget_char_size/static/description/index.html
@@ -0,0 +1,419 @@
+
+
+
+
+
+
+Widget Char size
+
+
+
+
+
+
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 000000000000..9315f3ecc440
--- /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 000000000000..04961071d7e0
--- /dev/null
+++ b/web_widget_char_size/views/assets.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
From d14490b6f81e93a0300d10a828c0cd0d6512bedf Mon Sep 17 00:00:00 2001
From: Thanakrit Pintana
Date: Thu, 25 Nov 2021 17:13:00 +0700
Subject: [PATCH 2/9] [MIG] web_widget_char_size: Migration to 15.0
---
web_widget_char_size/README.rst | 23 ++++++------
web_widget_char_size/__manifest__.py | 8 ++---
.../i18n/web_widget_char_size.pot | 2 +-
web_widget_char_size/readme/CONTRIBUTERS.rst | 1 +
.../static/description/index.html | 35 ++++++++++---------
web_widget_char_size/views/assets.xml | 19 ----------
6 files changed, 37 insertions(+), 51 deletions(-)
create mode 100644 web_widget_char_size/readme/CONTRIBUTERS.rst
delete mode 100644 web_widget_char_size/views/assets.xml
diff --git a/web_widget_char_size/README.rst b/web_widget_char_size/README.rst
index 2479dbe893ca..097e5f3037e8 100644
--- a/web_widget_char_size/README.rst
+++ b/web_widget_char_size/README.rst
@@ -2,10 +2,13 @@
Widget Char size
================
-.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:5f94ad897a05e212eec3660aad1c9ae9d08a2ac7098917e2a0cb74868de392d1
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
@@ -14,16 +17,16 @@ Widget Char size
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
- :target: https://github.com/OCA/web/tree/14.0/web_widget_char_size
+ :target: https://github.com/OCA/web/tree/15.0/web_widget_char_size
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_widget_char_size
+ :target: https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_widget_char_size
:alt: Translate me on Weblate
-.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/162/14.0
- :alt: Try me on Runbot
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=15.0
+ :alt: Try me on Runboat
-|badge1| |badge2| |badge3| |badge4| |badge5|
+|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to add an option `size` to Char fields in web client:
@@ -47,8 +50,8 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
-If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -73,6 +76,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/web `_ project on GitHub.
+This module is part of the `OCA/web `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_widget_char_size/__manifest__.py b/web_widget_char_size/__manifest__.py
index 15ec888af250..d779de2a1467 100644
--- a/web_widget_char_size/__manifest__.py
+++ b/web_widget_char_size/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Widget Char size",
"summary": "Add size option to Char widget",
- "version": "14.0.1.0.1",
+ "version": "15.0.1.0.0",
"category": "Hidden",
"website": "https://github.com/OCA/web",
"author": "Agile Business Group, Odoo Community Association (OCA)",
@@ -11,7 +11,7 @@
"depends": [
"web",
],
- "data": [
- "views/assets.xml",
- ],
+ "assets": {
+ "web.assets_backend": ["web_widget_char_size/static/src/js/char_widget.js"]
+ },
}
diff --git a/web_widget_char_size/i18n/web_widget_char_size.pot b/web_widget_char_size/i18n/web_widget_char_size.pot
index 4d8b20f912ff..a11baf5cd77c 100644
--- a/web_widget_char_size/i18n/web_widget_char_size.pot
+++ b/web_widget_char_size/i18n/web_widget_char_size.pot
@@ -3,7 +3,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 14.0\n"
+"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
diff --git a/web_widget_char_size/readme/CONTRIBUTERS.rst b/web_widget_char_size/readme/CONTRIBUTERS.rst
new file mode 100644
index 000000000000..76a8b991c5ea
--- /dev/null
+++ b/web_widget_char_size/readme/CONTRIBUTERS.rst
@@ -0,0 +1 @@
+* Thanakrit Pintana
diff --git a/web_widget_char_size/static/description/index.html b/web_widget_char_size/static/description/index.html
index e6b10d5f3bf5..283fa57ea1a0 100644
--- a/web_widget_char_size/static/description/index.html
+++ b/web_widget_char_size/static/description/index.html
@@ -1,20 +1,19 @@
-
-
+
Widget Char size
-
From 73789dd9ca5b45d2906cd5d10fee35ca13a1f490 Mon Sep 17 00:00:00 2001
From: jmanuelmendozacoronado-hoverture
Date: Mon, 31 Aug 2026 23:02:06 +0200
Subject: [PATCH 9/9] [MIG] web_widget_char_size: Migration to 19.0
---
README.md | 1 +
web_widget_char_size/README.rst | 10 +--
web_widget_char_size/__manifest__.py | 7 +-
.../static/description/index.html | 6 +-
.../static/src/js/char_widget.esm.js | 67 ++++++++++++++-----
.../static/src/xml/char_widget.xml | 62 +++++++++++++++++
6 files changed, 127 insertions(+), 26 deletions(-)
create mode 100644 web_widget_char_size/static/src/xml/char_widget.xml
diff --git a/README.md b/README.md
index da907d11626a..ebffd2ad0b80 100644
--- a/README.md
+++ b/README.md
@@ -47,6 +47,7 @@ addon | version | maintainers | summary
[web_timeline](web_timeline/) | 19.0.1.0.0 | | Interactive visualization chart to show events in time
[web_tree_many2one_clickable](web_tree_many2one_clickable/) | 19.0.1.0.0 | | Open the linked resource when clicking on their name
[web_widget_bokeh_chart](web_widget_bokeh_chart/) | 19.0.1.0.1 |
| This widget allows to display charts using Bokeh library.
+[web_widget_char_size](web_widget_char_size/) | 19.0.1.0.0 | | Add size option to Char widget
[web_widget_numeric_step](web_widget_numeric_step/) | 19.0.1.0.0 |
| Web Widget Numeric Step
[web_widget_one2many_tree_line_duplicate](web_widget_one2many_tree_line_duplicate/) | 19.0.1.0.1 | | Web Widget One2many Tree Line Duplicate
[web_widget_product_label_section_and_note_full_label](web_widget_product_label_section_and_note_full_label/) | 19.0.1.0.0 | | Display the full label in the product_label_section_and_note widget.
diff --git a/web_widget_char_size/README.rst b/web_widget_char_size/README.rst
index a4ae3adf7a48..4f7db4492eb3 100644
--- a/web_widget_char_size/README.rst
+++ b/web_widget_char_size/README.rst
@@ -21,13 +21,13 @@ Widget Char size
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
- :target: https://github.com/OCA/web/tree/18.0/web_widget_char_size
+ :target: https://github.com/OCA/web/tree/19.0/web_widget_char_size
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_widget_char_size
+ :target: https://translation.odoo-community.org/projects/web-19-0/web-19-0-web_widget_char_size
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=18.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=19.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -55,7 +55,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -88,6 +88,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/web `_ project on GitHub.
+This module is part of the `OCA/web `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_widget_char_size/__manifest__.py b/web_widget_char_size/__manifest__.py
index 026d3f7a06ab..3273461ed579 100644
--- a/web_widget_char_size/__manifest__.py
+++ b/web_widget_char_size/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Widget Char size",
"summary": "Add size option to Char widget",
- "version": "18.0.1.0.0",
+ "version": "19.0.1.0.0",
"category": "Hidden",
"website": "https://github.com/OCA/web",
"author": "Agile Business Group, Odoo Community Association (OCA)",
@@ -12,6 +12,9 @@
"web",
],
"assets": {
- "web.assets_backend": ["web_widget_char_size/static/src/js/char_widget.esm.js"]
+ "web.assets_backend": [
+ "web_widget_char_size/static/src/xml/char_widget.xml",
+ "web_widget_char_size/static/src/js/char_widget.esm.js",
+ ]
},
}
diff --git a/web_widget_char_size/static/description/index.html b/web_widget_char_size/static/description/index.html
index 2c899413d193..82527b2d8f01 100644
--- a/web_widget_char_size/static/description/index.html
+++ b/web_widget_char_size/static/description/index.html
@@ -374,7 +374,7 @@ Widget Char size
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:cca69429dd9e19c4b757301e24c056176a91f557c446a6e2b204f16119541684
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

This module allows to add an option size to Char fields in web client:
<field name="sized_5_field" options="{'size': 5}"/>
@@ -400,7 +400,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -430,7 +430,7 @@
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/web project on GitHub.
+
This module is part of the OCA/web project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_widget_char_size/static/src/js/char_widget.esm.js b/web_widget_char_size/static/src/js/char_widget.esm.js
index 82107ff09c16..d8e27642e47f 100644
--- a/web_widget_char_size/static/src/js/char_widget.esm.js
+++ b/web_widget_char_size/static/src/js/char_widget.esm.js
@@ -1,22 +1,57 @@
-import {CharField, charField} from "@web/views/fields/char/char_field";
+import {CharField} from "@web/views/fields/char/char_field";
+import {UrlField, formUrlField} from "@web/views/fields/url/url_field";
+import {EmailField, formEmailField} from "@web/views/fields/email/email_field";
+import {PhoneField, formPhoneField} from "@web/views/fields/phone/phone_field";
import {patch} from "@web/core/utils/patch";
-// Extract the new prop from field options
-const _extractProps = charField.extractProps;
-charField.extractProps = ({attrs, options}) => {
- return Object.assign(_extractProps({attrs, options}), {
- maxLength: options.size,
- });
-};
+import {Field} from "@web/views/fields/field";
-// Let the CharField component know that there is a new prop
-CharField.props = {
- ...CharField.props,
- maxLength: {type: Number, optional: true},
-};
+// 1. Patch the global Field component to ALWAYS pass maxLength if options.size is present AND the component supports it
+patch(Field.prototype, {
+ get fieldComponentProps() {
+ const props = super.fieldComponentProps;
+ const fieldInfo = this.props.fieldInfo;
-patch(CharField.prototype, {
- get maxLength() {
- return this.props.maxLength || super.maxLength;
+ if (fieldInfo && fieldInfo.options && fieldInfo.options.size !== undefined) {
+ // Handle cases where the component doesn't define props or inherits them
+ const ComponentClass = this.field && this.field.component;
+ if (ComponentClass) {
+ // If it's one of our patched components, it should support maxLength
+ // In Owl, props could be inherited or undefined (meaning all props allowed).
+ // If it's explicitly defined and missing maxLength, we skip. Otherwise we inject.
+ const propsDef = ComponentClass.props;
+ if (!propsDef || "maxLength" in propsDef) {
+ props.maxLength = fieldInfo.options.size;
+ }
+ }
+ }
+ return props;
},
});
+
+// 2. Patch individual components to accept maxLength prop and enforce it on DOM
+function patchFieldProps(FieldComponent) {
+ if (FieldComponent) {
+ // Ensure maxLength prop is allowed by Owl
+ FieldComponent.props = {
+ ...FieldComponent.props,
+ maxLength: {type: Number, optional: true},
+ };
+
+ // Add getter to prototype
+ patch(FieldComponent.prototype, {
+ get maxLength() {
+ return this.props.maxLength || super.maxLength;
+ },
+ });
+ }
+}
+
+// 3. Patch all standard text-based fields
+patchFieldProps(CharField);
+patchFieldProps(UrlField);
+patchFieldProps(formUrlField.component);
+patchFieldProps(EmailField);
+patchFieldProps(formEmailField.component);
+patchFieldProps(PhoneField);
+patchFieldProps(formPhoneField.component);
diff --git a/web_widget_char_size/static/src/xml/char_widget.xml b/web_widget_char_size/static/src/xml/char_widget.xml
new file mode 100644
index 000000000000..169ed8edf5f3
--- /dev/null
+++ b/web_widget_char_size/static/src/xml/char_widget.xml
@@ -0,0 +1,62 @@
+
+
+
+
+ maxLength
+
+
+
+
+
+ maxLength
+
+
+
+
+
+ maxLength
+
+
+
+
+
+ maxLength
+
+
+
+
+
+ maxLength
+
+
+
+
+
+ maxLength
+
+
+