diff --git a/addons/web/static/src/core/datetime/datetime_picker.js b/addons/web/static/src/core/datetime/datetime_picker.js
index 8b12617bdad..d2fac0e04ad 100644
--- a/addons/web/static/src/core/datetime/datetime_picker.js
+++ b/addons/web/static/src/core/datetime/datetime_picker.js
@@ -315,7 +315,10 @@ export class DateTimePicker extends Component {
rounding: { type: Number, optional: true },
slots: {
type: Object,
- shape: { buttons: { type: Object, optional: true } },
+ shape: {
+ bottom_left: { type: Object, optional: true },
+ buttons: { type: Object, optional: true },
+ },
optional: true,
},
type: { type: [{ value: "date" }, { value: "datetime" }], optional: true },
diff --git a/addons/web/static/src/core/datetime/datetime_picker.xml b/addons/web/static/src/core/datetime/datetime_picker.xml
index 22b3137af81..5b958a99b71 100644
--- a/addons/web/static/src/core/datetime/datetime_picker.xml
+++ b/addons/web/static/src/core/datetime/datetime_picker.xml
@@ -86,7 +86,10 @@
-
diff --git a/addons/web/static/src/core/datetime/datetime_picker_popover.js b/addons/web/static/src/core/datetime/datetime_picker_popover.js
index a343596ddc9..07e92580388 100644
--- a/addons/web/static/src/core/datetime/datetime_picker_popover.js
+++ b/addons/web/static/src/core/datetime/datetime_picker_popover.js
@@ -23,6 +23,13 @@ export class DateTimePickerPopover extends Component {
static template = "web.DateTimePickerPopover";
+ get isDateTimeRange() {
+ return (
+ this.props.pickerProps.type === "datetime" ||
+ Array.isArray(this.props.pickerProps.value)
+ );
+ }
+
//-------------------------------------------------------------------------
// Lifecycle
//-------------------------------------------------------------------------
diff --git a/addons/web/static/src/core/datetime/datetime_picker_popover.xml b/addons/web/static/src/core/datetime/datetime_picker_popover.xml
index 1e595c3f9b0..6c7a1a5ab17 100644
--- a/addons/web/static/src/core/datetime/datetime_picker_popover.xml
+++ b/addons/web/static/src/core/datetime/datetime_picker_popover.xml
@@ -3,9 +3,9 @@
-
+
+
+
+
+
+
diff --git a/addons/web/static/tests/core/datetime/datetime_input_tests.js b/addons/web/static/tests/core/datetime/datetime_input_tests.js
index 5b1252a6932..045f2f51fcf 100644
--- a/addons/web/static/tests/core/datetime/datetime_input_tests.js
+++ b/addons/web/static/tests/core/datetime/datetime_input_tests.js
@@ -484,6 +484,22 @@ QUnit.module("Components", ({ beforeEach }) => {
assert.strictEqual(input.value, "08/02/1997 15:45:05");
});
+ QUnit.test("Clicking close button closes datetime picker", async function (assert) {
+ const input = await mountInput({
+ value: DateTime.fromFormat("09/01/1997 12:30:01", "dd/MM/yyyy HH:mm:ss"),
+ type: "datetime",
+ format: "dd MMM, yyyy HH:mm:ss",
+ });
+ await click(input);
+ await click(getFixture(), ".o_datetime_picker .o_datetime_buttons .btn-secondary");
+
+ assert.strictEqual(
+ getFixture().querySelector(".o_datetime_picker"),
+ null,
+ "Datetime picker is closed"
+ );
+ });
+
QUnit.test("arab locale, latin numbering system as input", async (assert) => {
patchWithCleanup(localization, {
dateFormat: "dd MMM, yyyy",