diff --git a/addons/web/static/src/views/list/list_renderer.js b/addons/web/static/src/views/list/list_renderer.js
index f306137eaa5..7c0c27e3f40 100644
--- a/addons/web/static/src/views/list/list_renderer.js
+++ b/addons/web/static/src/views/list/list_renderer.js
@@ -20,6 +20,7 @@ import { useBounceButton } from "@web/views/view_hook";
import { Widget } from "@web/views/widgets/widget";
import { getFormattedValue } from "../utils";
import { localization } from "@web/core/l10n/localization";
+import { uniqueId } from "@web/core/utils/functions";
import {
Component,
@@ -73,6 +74,26 @@ function getElementToFocus(cell, index) {
return getTabableElements(cell).at(index) || cell;
}
+/**
+ * Here be dragons. 🐉
+ * This is a workaround to avoid clipping issues in Firefox and Safari.
+ * cf. https://bugzilla.mozilla.org/show_bug.cgi?id=1887116
+ */
+class OptionalFieldsDropdown extends Dropdown {
+ static template = "web.ListRenderer.OptionalFieldsDropdown";
+ static props = {
+ ...Dropdown.props,
+ listRendererClass: String,
+ };
+
+ onWindowClicked(ev) {
+ if (ev.target.closest(".o_optional_columns_dropdown.o-dropdown--menu")) {
+ return;
+ }
+ super.onWindowClicked(...arguments);
+ }
+}
+
export class ListRenderer extends Component {
setup() {
this.uiService = useService("ui");
@@ -215,6 +236,7 @@ export class ListRenderer extends Component {
this.lastEditedCell = null;
});
this.isRTL = localization.direction === "rtl";
+ this.uniqueRendererClass = uniqueId("o_list_renderer_");
}
displaySaveNotification() {
@@ -2137,7 +2159,7 @@ ListRenderer.rowsTemplate = "web.ListRenderer.Rows";
ListRenderer.recordRowTemplate = "web.ListRenderer.RecordRow";
ListRenderer.groupRowTemplate = "web.ListRenderer.GroupRow";
-ListRenderer.components = { DropdownItem, Field, ViewButton, CheckBox, Dropdown, Pager, Widget };
+ListRenderer.components = { DropdownItem, Field, ViewButton, CheckBox, Dropdown: OptionalFieldsDropdown, Pager, Widget };
ListRenderer.props = [
"activeActions?",
"list",
diff --git a/addons/web/static/src/views/list/list_renderer.xml b/addons/web/static/src/views/list/list_renderer.xml
index 5571b3ae35d..ed414c83b8d 100644
--- a/addons/web/static/src/views/list/list_renderer.xml
+++ b/addons/web/static/src/views/list/list_renderer.xml
@@ -5,6 +5,7 @@