diff --git a/setup/web_remember_tree_column_width/odoo/addons/web_remember_tree_column_width b/setup/web_remember_tree_column_width/odoo/addons/web_remember_tree_column_width new file mode 120000 index 000000000..b0895ab19 --- /dev/null +++ b/setup/web_remember_tree_column_width/odoo/addons/web_remember_tree_column_width @@ -0,0 +1 @@ +../../../../web_remember_tree_column_width \ No newline at end of file diff --git a/setup/web_remember_tree_column_width/setup.py b/setup/web_remember_tree_column_width/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/web_remember_tree_column_width/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/web_remember_tree_column_width/__manifest__.py b/web_remember_tree_column_width/__manifest__.py index df01cfc39..eb360cf5f 100644 --- a/web_remember_tree_column_width/__manifest__.py +++ b/web_remember_tree_column_width/__manifest__.py @@ -5,10 +5,11 @@ "website": "https://github.com/OCA/web", "license": "LGPL-3", "category": "Extra Tools", - "version": "15.0.1.0.1", + "version": "16.0.1.0.0", "maintainers": [ "frahikLV", "luisg123v", + "cuongnmtm", ], "depends": [ "web", @@ -16,8 +17,7 @@ "data": [], "assets": { "web.assets_backend": [ - "web_remember_tree_column_width/static/src/js/list_renderer.js", - "web_remember_tree_column_width/static/src/scss/main.scss", + "web_remember_tree_column_width/static/src/**/*", ], }, "installable": True, diff --git a/web_remember_tree_column_width/readme/CONTRIBUTORS.rst b/web_remember_tree_column_width/readme/CONTRIBUTORS.rst index e86bcd22f..c77606657 100644 --- a/web_remember_tree_column_width/readme/CONTRIBUTORS.rst +++ b/web_remember_tree_column_width/readme/CONTRIBUTORS.rst @@ -1,2 +1,5 @@ * Francisco Javier Luna Vázquez * Tomás Álvarez +* `Komit `_: + + * Cuong Nguyen Mtm diff --git a/web_remember_tree_column_width/readme/CREDITS.rst b/web_remember_tree_column_width/readme/CREDITS.rst index d0ec12698..c62809e1e 100644 --- a/web_remember_tree_column_width/readme/CREDITS.rst +++ b/web_remember_tree_column_width/readme/CREDITS.rst @@ -1 +1,5 @@ -Vauxoo +* Vauxoo + +The migration of this module from 15.0 to 16.0 was financially supported by: + +* Komit (https://komit-consulting.com/) diff --git a/web_remember_tree_column_width/static/src/js/list_renderer.esm.js b/web_remember_tree_column_width/static/src/js/list_renderer.esm.js new file mode 100644 index 000000000..eef04db1d --- /dev/null +++ b/web_remember_tree_column_width/static/src/js/list_renderer.esm.js @@ -0,0 +1,61 @@ +/** @odoo-module **/ + +import {ListRenderer} from "@web/views/list/list_renderer"; +import {browser} from "@web/core/browser/browser"; +import {patch} from "web.utils"; + +patch(ListRenderer.prototype, "web_remember_tree_column_width.ListRenderer", { + /** + * @override + */ + computeColumnWidthsFromContent() { + const columnWidths = this._super.apply(this, arguments); + const table = this.tableRef.el; + const thElements = [...table.querySelectorAll("thead th:not(.o_list_button)")]; + thElements.forEach((el, elIndex) => { + const fieldName = $(el).data("name"); + if (this.props.list.resModel && fieldName && browser.localStorage) { + const storedWidth = browser.localStorage.getItem( + `odoo.columnWidth.${this.props.list.resModel}.${fieldName}` + ); + if (storedWidth) { + columnWidths[elIndex] = parseInt(storedWidth, 10); + } + } + }); + return columnWidths; + }, + + /** + * @override + */ + onStartResize(ev) { + this._super.apply(this, arguments); + const resizeStoppingEvents = ["keydown", "mousedown", "mouseup"]; + const $th = $(ev.target.closest("th")); + if (!$th || !$th.is("th")) { + return; + } + const saveWidth = (saveWidthEv) => { + if (saveWidthEv.type === "mousedown" && saveWidthEv.which === 1) { + return; + } + ev.preventDefault(); + ev.stopPropagation(); + const fieldName = $th.length ? $th.data("name") : undefined; + if (this.props.list.resModel && fieldName && browser.localStorage) { + browser.localStorage.setItem( + "odoo.columnWidth." + this.props.list.resModel + "." + fieldName, + parseInt(($th[0].style.width || "0").replace("px", ""), 10) || 0 + ); + } + for (const eventType of resizeStoppingEvents) { + browser.removeEventListener(eventType, saveWidth); + } + document.activeElement.blur(); + }; + for (const eventType of resizeStoppingEvents) { + browser.addEventListener(eventType, saveWidth); + } + }, +}); diff --git a/web_remember_tree_column_width/static/src/js/list_renderer.js b/web_remember_tree_column_width/static/src/js/list_renderer.js deleted file mode 100644 index 9566660d2..000000000 --- a/web_remember_tree_column_width/static/src/js/list_renderer.js +++ /dev/null @@ -1,69 +0,0 @@ -odoo.define("web_remember_tree_column_width.ListRenderer", function (require) { - "use strict"; - - const ListRenderer = require("web.ListRenderer"); - ListRenderer.include({ - events: Object.assign({}, ListRenderer.prototype.events, { - "pointerdown th .o_resize": "_onMouseDownResize", - mouseup: "_onMouseUpResize", - }), - _onMouseDownResize: function () { - this.resizeInProgress = true; - }, - _getLocalStorageWidthColumnName: function (model, field) { - return "odoo.columnWidth." + model + "." + field; - }, - _onMouseUpResize: function (ev) { - if (this.resizeInProgress) { - this.resizeInProgress = false; - const target = $(ev.target); - const $th = target.is("th") ? target : target.parent("th"); - const fieldName = $th.length ? $th.data("name") : undefined; - if ( - this.state && - this.state.model && - fieldName && - window.localStorage - ) { - window.localStorage.setItem( - this._getLocalStorageWidthColumnName( - this.state.model, - fieldName - ), - parseInt(($th[0].style.width || "0").replace("px", "")) || 0 - ); - } - } - }, - _squeezeTable: function () { - const columnWidths = this._super.apply(this, arguments); - - const table = this.el.getElementsByTagName("table")[0]; - const thead = table.getElementsByTagName("thead")[0]; - const thElements = [...thead.getElementsByTagName("th")]; - - const self = this; - thElements.forEach(function (el, elIndex) { - const fieldName = $(el).data("name"); - if ( - self.state && - self.state.model && - fieldName && - window.localStorage - ) { - const storedWidth = window.localStorage.getItem( - self._getLocalStorageWidthColumnName( - self.state.model, - fieldName - ) - ); - if (storedWidth) { - columnWidths[elIndex] = parseInt(storedWidth); - } - } - }); - - return columnWidths; - }, - }); -}); diff --git a/web_remember_tree_column_width/static/src/scss/main.scss b/web_remember_tree_column_width/static/src/scss/main.scss index e3b3ba0ab..07b5aa024 100644 --- a/web_remember_tree_column_width/static/src/scss/main.scss +++ b/web_remember_tree_column_width/static/src/scss/main.scss @@ -2,7 +2,3 @@ th.o_column_sortable { max-width: none !important; min-width: 0 !important; } - -.o_optional_columns_dropdown_toggle { - height: 25px; -}