diff --git a/addons/web/static/src/core/datepicker/datepicker.js b/addons/web/static/src/core/datepicker/datepicker.js
index 599558b3e74..6a39dc93f78 100644
--- a/addons/web/static/src/core/datepicker/datepicker.js
+++ b/addons/web/static/src/core/datepicker/datepicker.js
@@ -268,6 +268,7 @@ DatePicker.defaultProps = {
today: "fa fa-calendar-check-o",
up: "fa fa-chevron-up",
},
+ inputId: "",
maxDate: DateTime.fromObject({ year: 9999, month: 12, day: 31 }),
minDate: DateTime.fromObject({ year: 1000 }),
useCurrent: false,
@@ -305,6 +306,7 @@ DatePicker.props = {
},
optional: true,
},
+ inputId: { type: String, optional: true },
keyBinds: { validate: (kb) => typeof kb === "object" || kb === null, optional: true },
locale: { type: String, optional: true },
maxDate: { type: DateTime, optional: true },
diff --git a/addons/web/static/src/core/datepicker/datepicker.xml b/addons/web/static/src/core/datepicker/datepicker.xml
index 66665ca7c52..31eb05907d9 100644
--- a/addons/web/static/src/core/datepicker/datepicker.xml
+++ b/addons/web/static/src/core/datepicker/datepicker.xml
@@ -7,6 +7,7 @@
diff --git a/addons/web/static/src/views/fields/daterange/daterange_field.xml b/addons/web/static/src/views/fields/daterange/daterange_field.xml
index 4632b869f16..0380d637b15 100644
--- a/addons/web/static/src/views/fields/daterange/daterange_field.xml
+++ b/addons/web/static/src/views/fields/daterange/daterange_field.xml
@@ -6,7 +6,7 @@
-
+
diff --git a/addons/web/static/src/views/fields/datetime/datetime_field.xml b/addons/web/static/src/views/fields/datetime/datetime_field.xml
index ea08911fde1..de6b6103ada 100644
--- a/addons/web/static/src/views/fields/datetime/datetime_field.xml
+++ b/addons/web/static/src/views/fields/datetime/datetime_field.xml
@@ -9,6 +9,7 @@
diff --git a/addons/web/static/tests/views/fields/date_field_tests.js b/addons/web/static/tests/views/fields/date_field_tests.js
index a26b6cc2179..a777c3254ef 100644
--- a/addons/web/static/tests/views/fields/date_field_tests.js
+++ b/addons/web/static/tests/views/fields/date_field_tests.js
@@ -349,6 +349,27 @@ QUnit.module("Fields", (hooks) => {
);
});
+ QUnit.test("DateField with label opens datepicker on click", async function (assert) {
+ await makeView({
+ type: "form",
+ resModel: "partner",
+ resId: 1,
+ serverData,
+ arch: `
+
`,
+ });
+
+ await click(target.querySelector("label.o_form_label"));
+ assert.containsOnce(
+ document.body,
+ ".bootstrap-datetimepicker-widget",
+ "datepicker should be opened"
+ );
+ });
+
QUnit.test("DateField with warn_future option", async function (assert) {
await makeView({
type: "form",
diff --git a/addons/web/static/tests/views/fields/daterange_field_tests.js b/addons/web/static/tests/views/fields/daterange_field_tests.js
index 3cdf6dc4f3d..fd9bab3ad42 100644
--- a/addons/web/static/tests/views/fields/daterange_field_tests.js
+++ b/addons/web/static/tests/views/fields/daterange_field_tests.js
@@ -381,6 +381,30 @@ QUnit.module("Fields", (hooks) => {
}
);
+ QUnit.test("DateRangeField with label opens datepicker on click", async function (assert) {
+ serverData.models.partner.fields.date_end = { string: "Date End", type: "date" };
+ serverData.models.partner.records[0].date_end = "2017-02-08";
+
+ await makeView({
+ type: "form",
+ resModel: "partner",
+ resId: 1,
+ serverData,
+ arch: `
+ `,
+ });
+
+ await click(target.querySelector("label.o_form_label"));
+ assert.isVisible(
+ document.querySelector(".daterangepicker[data-name='date']"),
+ "date range picker should be opened"
+ );
+ });
+
QUnit.test(
"Datetime field manually input value should send utc value to server",
async function (assert) {
diff --git a/addons/web/static/tests/views/fields/datetime_field_tests.js b/addons/web/static/tests/views/fields/datetime_field_tests.js
index 70eb8fd068d..e0a6f1d0718 100644
--- a/addons/web/static/tests/views/fields/datetime_field_tests.js
+++ b/addons/web/static/tests/views/fields/datetime_field_tests.js
@@ -598,4 +598,25 @@ QUnit.module("Fields", (hooks) => {
assert.strictEqual(target.querySelector(".o_field_widget input").value, "01/08/2022");
}
);
+
+ QUnit.test("DateTimeField with label opens datepicker on click", async function (assert) {
+ await makeView({
+ type: "form",
+ resModel: "partner",
+ resId: 1,
+ serverData,
+ arch: `
+ `,
+ });
+
+ await click(target.querySelector("label.o_form_label"));
+ assert.containsOnce(
+ document.body,
+ ".bootstrap-datetimepicker-widget",
+ "datepicker should be opened"
+ );
+ });
});