diff --git a/addons/web/static/src/legacy/js/libs/fullcalendar.js b/addons/web/static/src/legacy/js/libs/fullcalendar.js index 8101a4d2ffa..6fa72e016cf 100644 --- a/addons/web/static/src/legacy/js/libs/fullcalendar.js +++ b/addons/web/static/src/legacy/js/libs/fullcalendar.js @@ -219,12 +219,10 @@ odoo.define('/web/static/src/js/libs/fullcalendar.js', function () { */ _onYearDateClick(info) { const calendar = this.context.calendar; - const events = Object.values(this.events) + const events = this.events .filter(event => { - const startUTC = calendar.dateEnv.toDate(event._instance.range.start); - const endUTC = calendar.dateEnv.toDate(event._instance.range.end); - const start = moment(startUTC); - const end = moment(endUTC); + const start = moment(event.start); + const end = moment(event.end); const inclusivity = start.isSame(end, 'day') ? '[]' : '[)'; return moment(info.date).isBetween(start, end, 'day', inclusivity); }) diff --git a/addons/web/static/tests/legacy/helpers/test_utils_dom.js b/addons/web/static/tests/legacy/helpers/test_utils_dom.js index 94b6a814b05..9045377ab0e 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_dom.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_dom.js @@ -22,15 +22,15 @@ odoo.define('web.test_utils_dom', function (require) { const mouseEventMapping = args => Object.assign({}, args, { bubbles: true, cancelable: true, - clientX: args ? args.pageX : undefined, - clientY: args ? args.pageY : undefined, + clientX: args ? args.clientX || args.pageX : undefined, + clientY: args ? args.clientY || args.pageY : undefined, view: window, }); const mouseEventNoBubble = args => Object.assign({}, args, { bubbles: false, cancelable: false, - clientX: args ? args.pageX : undefined, - clientY: args ? args.pageY : undefined, + clientX: args ? args.clientX || args.pageX : undefined, + clientY: args ? args.clientY || args.pageY : undefined, view: window, }); const touchEventMapping = args => Object.assign({}, args, { @@ -520,14 +520,11 @@ odoo.define('web.test_utils_dom', function (require) { throw new Error(`no target found to trigger MouseEvent`); } const rect = el.getBoundingClientRect(); - // little fix since it seems on chrome, it triggers 1px too on the left - const left = rect.x + 1; - const top = rect.y; - return triggerEvent($el, type, { - which: 1, - pageX: left, layerX: left, screenX: left, - pageY: top, layerY: top, screenY: top, - }); + // try to click around the center of the element, biased to the bottom + // right as chrome messes up when clicking on the top-left corner... + const left = rect.x + Math.ceil(rect.width / 2); + const top = rect.y + Math.ceil(rect.height / 2); + return triggerEvent(el, type, {which: 1, clientX: left, clientY: top}); } /** diff --git a/addons/web/static/tests/legacy/views/list_tests.js b/addons/web/static/tests/legacy/views/list_tests.js index a6e8d978235..54ea0ac83e7 100644 --- a/addons/web/static/tests/legacy/views/list_tests.js +++ b/addons/web/static/tests/legacy/views/list_tests.js @@ -3152,8 +3152,12 @@ QUnit.module('Views', { arch: '', }); - const fooWidth = list.$('th[data-name="foo"]')[0].offsetWidth; - const textWidth = list.$('th[data-name="text"]')[0].offsetWidth; + const foo = list.el.querySelector('th[data-name="foo"]'); + const fooWidth = Math.ceil(foo.getBoundingClientRect().width); + + const text = list.el.querySelector('th[data-name="text"]'); + const textWidth = Math.ceil(text.getBoundingClientRect().width); + assert.strictEqual(fooWidth, textWidth, "both columns should have been given the same width"); const firstRowHeight = list.$('.o_data_row:nth(0)')[0].offsetHeight;