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",