From 77e825cab24d99b34648e977e4ac02447bb84ca8 Mon Sep 17 00:00:00 2001 From: "Michael (mcm)" Date: Fri, 31 Mar 2023 11:47:43 +0000 Subject: [PATCH] [REF] web: replace odoo module by native one MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit converts almost all odoo module by native module. The goal is to deprecate odoo.define in favor of native module and then simplify boot.js by removing the regexp that finds module dependencies. task id: 3162300 closes odoo/odoo#117456 Signed-off-by: Géry Debongnie --- addons/im_livechat/__manifest__.py | 1 + addons/project/__manifest__.py | 2 + addons/web/__manifest__.py | 3 + .../frontend/keyboard_navigation_mixin.js | 11 +- addons/web/static/src/legacy/js/assets.js | 7 +- .../src/legacy/js/chrome/action_mixin.js | 12 +- addons/web/static/src/legacy/js/common_env.js | 22 ++-- .../src/legacy/js/components/action_menus.js | 16 ++- .../legacy/js/components/custom_file_input.js | 10 +- .../src/legacy/js/components/datepicker.js | 18 ++- .../src/legacy/js/components/dropdown_menu.js | 14 +-- .../js/components/dropdown_menu_item.js | 12 +- .../static/src/legacy/js/components/pager.js | 12 +- .../js/control_panel/comparison_menu.js | 18 ++- .../legacy/js/control_panel/control_panel.js | 28 +++-- .../control_panel_model_extension.js | 18 ++- .../js/control_panel/custom_favorite_item.js | 18 ++- .../js/control_panel/custom_filter_item.js | 22 ++-- .../legacy/js/control_panel/favorite_menu.js | 22 ++-- .../legacy/js/control_panel/filter_menu.js | 20 ++-- .../legacy/js/control_panel/groupby_menu.js | 20 ++-- .../src/legacy/js/control_panel/search_bar.js | 20 ++-- .../legacy/js/control_panel/search_utils.js | 14 +-- .../src/legacy/js/core/abstract_service.js | 14 +-- .../js/core/abstract_storage_service.js | 9 +- addons/web/static/src/legacy/js/core/ajax.js | 21 ++-- .../src/legacy/js/core/browser_detection.js | 11 +- addons/web/static/src/legacy/js/core/bus.js | 11 +- addons/web/static/src/legacy/js/core/class.js | 6 +- .../static/src/legacy/js/core/collections.js | 10 +- .../static/src/legacy/js/core/concurrency.js | 9 +- .../web/static/src/legacy/js/core/context.js | 11 +- .../static/src/legacy/js/core/cookie_utils.js | 6 +- .../web/static/src/legacy/js/core/dialog.js | 15 +-- addons/web/static/src/legacy/js/core/dom.js | 19 +-- .../static/src/legacy/js/core/dom_ready.js | 5 + .../web/static/src/legacy/js/core/domain.js | 10 +- .../src/legacy/js/core/local_storage.js | 11 +- addons/web/static/src/legacy/js/core/misc.js | 13 +-- .../web/static/src/legacy/js/core/mixins.js | 11 +- addons/web/static/src/legacy/js/core/mvc.js | 17 ++- .../static/src/legacy/js/core/owl_dialog.js | 12 +- .../web/static/src/legacy/js/core/popover.js | 10 +- .../web/static/src/legacy/js/core/py_utils.js | 8 +- addons/web/static/src/legacy/js/core/qweb.js | 9 +- .../static/src/legacy/js/core/ram_storage.js | 11 +- .../web/static/src/legacy/js/core/registry.js | 10 +- addons/web/static/src/legacy/js/core/rpc.js | 9 +- .../src/legacy/js/core/service_mixins.js | 108 +----------------- .../web/static/src/legacy/js/core/session.js | 19 ++- .../src/legacy/js/core/session_storage.js | 11 +- .../legacy/js/core/smooth_scroll_on_drag.js | 10 +- addons/web/static/src/legacy/js/core/time.js | 12 +- .../static/src/legacy/js/core/translation.js | 11 +- addons/web/static/src/legacy/js/core/utils.js | 11 +- .../web/static/src/legacy/js/core/widget.js | 15 +-- .../src/legacy/js/fields/abstract_field.js | 11 +- .../src/legacy/js/fields/basic_fields.js | 25 ++-- .../legacy/js/fields/field_registration.js | 38 ++++++ .../src/legacy/js/fields/field_registry.js | 51 +-------- .../src/legacy/js/fields/field_utils.js | 17 ++- .../src/legacy/js/fields/relational_fields.js | 27 ++--- addons/web/static/src/legacy/js/model.js | 14 +-- .../static/src/legacy/js/owl_compatibility.js | 12 +- .../static/src/legacy/js/public/lazyloader.js | 6 +- .../static/src/legacy/js/public/public_env.js | 10 +- .../src/legacy/js/services/ajax_service.js | 13 +-- .../static/src/legacy/js/services/config.js | 13 +-- .../web/static/src/legacy/js/services/core.js | 19 ++- .../src/legacy/js/services/data_manager.js | 26 ++--- .../js/services/local_storage_service.js | 13 +-- .../static/src/legacy/js/services/session.js | 9 +- .../js/services/session_storage_service.js | 13 +-- .../web/static/src/legacy/js/tools/tools.js | 7 +- .../src/legacy/js/views/basic/basic_model.js | 22 ++-- .../src/legacy/js/widgets/colorpicker.js | 14 +-- .../src/legacy/js/widgets/date_picker.js | 15 +-- .../src/legacy/js/widgets/domain_selector.js | 20 ++-- .../js/widgets/domain_selector_dialog.js | 14 +-- .../legacy/js/widgets/model_field_selector.js | 12 +- .../widgets/model_field_selector_popover.js | 12 +- .../legacy/js/widgets/name_and_signature.js | 14 +-- addons/web/static/src/legacy/legacy_setup.js | 2 +- .../static/src/legacy/pseudo_web_client.js | 32 ++++++ addons/web/static/src/legacy/root_widget.js | 17 ++- addons/web/static/src/legacy/web_client.js | 39 +------ addons/web/static/tests/helpers/legacy.js | 24 ---- addons/web/static/tests/helpers/session.js | 24 ++++ .../tests/legacy/component_extension_tests.js | 16 ++- .../legacy/components/action_menus_tests.js | 12 +- .../components/custom_file_input_tests.js | 10 +- .../legacy/components/datepicker_tests.js | 12 +- .../components/dropdown_menu_mobile_tests.js | 10 +- .../legacy/components/dropdown_menu_tests.js | 16 ++- .../tests/legacy/components/pager_tests.js | 12 +- .../control_panel/comparison_menu_tests.js | 16 ++- .../control_panel_model_extension_tests.js | 10 +- .../control_panel/control_panel_tests.js | 10 +- .../control_panel/custom_filter_item_tests.js | 20 ++-- .../legacy/control_panel/filter_menu_tests.js | 14 +-- .../control_panel/groupby_menu_tests.js | 14 +-- .../control_panel/search_utils_tests.js | 22 ++-- .../static/tests/legacy/core/class_tests.js | 7 +- .../tests/legacy/core/concurrency_tests.js | 9 +- .../static/tests/legacy/core/dialog_tests.js | 11 +- .../web/static/tests/legacy/core/dom_tests.js | 8 +- .../static/tests/legacy/core/domain_tests.js | 6 +- .../static/tests/legacy/core/mixins_tests.js | 24 ++-- .../tests/legacy/core/owl_dialog_tests.js | 26 ++--- .../static/tests/legacy/core/patch_tests.js | 6 +- .../static/tests/legacy/core/popover_tests.js | 16 ++- .../tests/legacy/core/py_utils_tests.js | 10 +- .../tests/legacy/core/registry_tests.js | 7 +- .../web/static/tests/legacy/core/rpc_tests.js | 7 +- .../static/tests/legacy/core/time_tests.js | 9 +- .../static/tests/legacy/core/util_tests.js | 7 +- .../static/tests/legacy/core/widget_tests.js | 17 ++- .../keyboard_navigation_mixin_tests.js | 10 +- .../tests/legacy/helpers/mock_server.js | 13 +-- .../static/tests/legacy/helpers/test_env.js | 18 ++- .../helpers/test_utils_control_panel.js | 12 +- .../tests/legacy/helpers/test_utils_create.js | 34 +++--- .../tests/legacy/helpers/test_utils_dom.js | 12 +- .../tests/legacy/helpers/test_utils_fields.js | 10 +- .../tests/legacy/helpers/test_utils_file.js | 7 +- .../tests/legacy/helpers/test_utils_form.js | 9 +- .../tests/legacy/helpers/test_utils_graph.js | 7 +- .../tests/legacy/helpers/test_utils_kanban.js | 11 +- .../tests/legacy/helpers/test_utils_mock.js | 39 +++---- .../tests/legacy/helpers/test_utils_modal.js | 12 +- .../tests/legacy/helpers/test_utils_pivot.js | 9 +- .../tests/legacy/helpers/test_utils_tests.js | 6 +- .../static/tests/legacy/mockserver_tests.js | 6 +- .../tests/legacy/owl_compatibility_tests.js | 26 ++--- addons/web/static/tests/legacy/qweb_tests.js | 8 +- .../tests/legacy/views/basic_model_tests.js | 12 +- .../widgets/model_field_selector_tests.js | 8 +- .../widgets/name_and_signature_tests.js | 10 +- addons/website_slides/__manifest__.py | 1 + 139 files changed, 813 insertions(+), 1231 deletions(-) create mode 100644 addons/web/static/src/legacy/js/core/dom_ready.js create mode 100644 addons/web/static/src/legacy/js/fields/field_registration.js create mode 100644 addons/web/static/src/legacy/pseudo_web_client.js create mode 100644 addons/web/static/tests/helpers/session.js diff --git a/addons/im_livechat/__manifest__.py b/addons/im_livechat/__manifest__.py index 99f457481d4..36b97d09a1a 100644 --- a/addons/im_livechat/__manifest__.py +++ b/addons/im_livechat/__manifest__.py @@ -171,6 +171,7 @@ Help your customers with this chat, and analyse their feedback. 'web/static/src/legacy/js/core/cookie_utils.js', 'web/static/src/legacy/js/core/utils.js', 'web/static/src/legacy/js/core/dom.js', + 'web/static/src/legacy/js/core/dom_ready.js', 'web/static/src/legacy/js/core/qweb.js', 'web/static/src/legacy/js/core/bus.js', 'web/static/src/legacy/js/services/core.js', diff --git a/addons/project/__manifest__.py b/addons/project/__manifest__.py index c5519040e14..d471af683e0 100644 --- a/addons/project/__manifest__.py +++ b/addons/project/__manifest__.py @@ -154,6 +154,7 @@ 'web/static/src/legacy/root_widget.js', 'web/static/src/legacy/backend_utils.js', 'web/static/src/legacy/utils.js', + 'web/static/src/legacy/pseudo_web_client.js', 'web/static/src/legacy/web_client.js', 'web/static/src/legacy/js/chrome/*', 'web/static/src/legacy/js/components/*', @@ -168,6 +169,7 @@ 'web/static/src/legacy/js/fields/field_utils.js', 'web/static/src/legacy/js/fields/relational_fields.js', 'web/static/src/legacy/js/fields/field_registry.js', + 'web/static/src/legacy/js/fields/field_registration.js', 'web/static/src/legacy/js/fields/field_utils.js', 'web/static/src/legacy/js/views/abstract_model.js', 'web/static/src/legacy/js/views/basic/basic_model.js', diff --git a/addons/web/__manifest__.py b/addons/web/__manifest__.py index 8478cd92bc3..84f7f4d82ad 100644 --- a/addons/web/__manifest__.py +++ b/addons/web/__manifest__.py @@ -146,6 +146,7 @@ This module provides the core of the Odoo Web Client. 'web/static/src/legacy/js/core/owl_dialog.js', 'web/static/src/legacy/js/core/popover.js', 'web/static/src/legacy/js/core/dom.js', + 'web/static/src/legacy/js/core/dom_ready.js', 'web/static/src/legacy/js/core/local_storage.js', 'web/static/src/legacy/js/core/mixins.js', 'web/static/src/legacy/js/core/qweb.js', @@ -232,6 +233,7 @@ This module provides the core of the Odoo Web Client. 'web/static/src/legacy/root_widget.js', 'web/static/src/legacy/backend_utils.js', 'web/static/src/legacy/utils.js', + 'web/static/src/legacy/pseudo_web_client.js', 'web/static/src/legacy/web_client.js', 'web/static/src/legacy/js/_deprecated/*', 'web/static/src/legacy/js/chrome/*', @@ -378,6 +380,7 @@ This module provides the core of the Odoo Web Client. 'web/static/src/legacy/js/core/owl_dialog.js', 'web/static/src/legacy/js/core/popover.js', 'web/static/src/legacy/js/core/dom.js', + 'web/static/src/legacy/js/core/dom_ready.js', 'web/static/src/legacy/js/core/local_storage.js', 'web/static/src/legacy/js/core/menu.js', 'web/static/src/legacy/js/core/mixins.js', diff --git a/addons/web/static/src/legacy/frontend/keyboard_navigation_mixin.js b/addons/web/static/src/legacy/frontend/keyboard_navigation_mixin.js index 52a4eb9198f..fc1e9aa8467 100644 --- a/addons/web/static/src/legacy/frontend/keyboard_navigation_mixin.js +++ b/addons/web/static/src/legacy/frontend/keyboard_navigation_mixin.js @@ -1,7 +1,6 @@ -odoo.define('web.KeyboardNavigationMixin', function (require) { - "use strict"; - var BrowserDetection = require('web.BrowserDetection'); - const core = require('web.core'); +/** @odoo-module alias=web.KeyboardNavigationMixin **/ + import BrowserDetection from "web.BrowserDetection"; + import core from "web.core"; /** * list of the key that should not be used as accesskeys. Either because we want to reserve them for a specific behavior in Odoo or @@ -265,6 +264,4 @@ odoo.define('web.KeyboardNavigationMixin', function (require) { }, }; - return KeyboardNavigationMixin; - -}); + export default KeyboardNavigationMixin; diff --git a/addons/web/static/src/legacy/js/assets.js b/addons/web/static/src/legacy/js/assets.js index 8768d84ec92..10c7bb1b397 100644 --- a/addons/web/static/src/legacy/js/assets.js +++ b/addons/web/static/src/legacy/js/assets.js @@ -1,7 +1,6 @@ -odoo.define('web.assets.qweb', function (require) { -"use strict"; +/** @odoo-module **/ -const {assets} = require('@web/core/assets'); +import {assets} from "@web/core/assets"; const loadXML = assets.loadXML; assets.loadXML = function (xml, app) { @@ -19,5 +18,3 @@ assets.loadXML = function (xml, app) { core.qweb.add_template(qwebTemplates); }); } - -}); diff --git a/addons/web/static/src/legacy/js/chrome/action_mixin.js b/addons/web/static/src/legacy/js/chrome/action_mixin.js index 82feba04102..1ea607700c3 100644 --- a/addons/web/static/src/legacy/js/chrome/action_mixin.js +++ b/addons/web/static/src/legacy/js/chrome/action_mixin.js @@ -1,6 +1,5 @@ -odoo.define('web.ActionMixin', function (require) { - "use strict"; - +/** @odoo-module alias=web.ActionMixin **/ + /** * We define here the ActionMixin, the generic notion of action (from the point * of view of the web client). In short, an action is a widget which controls @@ -21,8 +20,8 @@ odoo.define('web.ActionMixin', function (require) { * @extends WidgetAdapterMixin */ - const core = require('web.core'); - const { WidgetAdapterMixin } = require('web.OwlCompatibility'); + import core from "web.core"; + import { WidgetAdapterMixin } from "web.OwlCompatibility"; const ActionMixin = Object.assign({}, WidgetAdapterMixin, { template: 'Action', @@ -231,5 +230,4 @@ odoo.define('web.ActionMixin', function (require) { }, }); - return ActionMixin; -}); + export default ActionMixin; diff --git a/addons/web/static/src/legacy/js/common_env.js b/addons/web/static/src/legacy/js/common_env.js index 887f14868fd..e64f2980a04 100644 --- a/addons/web/static/src/legacy/js/common_env.js +++ b/addons/web/static/src/legacy/js/common_env.js @@ -1,6 +1,5 @@ -odoo.define("web.commonEnv", function (require) { - "use strict"; - +/** @odoo-module alias=web.commonEnv **/ + /** * This file defines the common environment, which contains everything that * is needed in the env for both the backend and the frontend (Odoo @@ -17,13 +16,13 @@ odoo.define("web.commonEnv", function (require) { * [1] https://github.com/odoo/owl/blob/master/doc/reference/environment.md#content-of-an-environment */ - const { jsonRpc } = require("web.ajax"); - const { device, isDebug } = require("web.config"); - const { bus } = require("web.core"); - const rpc = require("web.rpc"); - const session = require("web.session"); - const { _t } = require("web.translation"); - const {getCookie, setCookie} = require('web.utils.cookies'); + import { jsonRpc } from "web.ajax"; + import { device, isDebug } from "web.config"; + import { bus } from "web.core"; + import rpc from "web.rpc"; + import session from "web.session"; + import { _t } from "web.translation"; + import {getCookie, setCookie} from "web.utils.cookies"; const browser = { clearInterval: window.clearInterval.bind(window), @@ -96,5 +95,4 @@ odoo.define("web.commonEnv", function (require) { session, }; - return env; -}); + export default env; diff --git a/addons/web/static/src/legacy/js/components/action_menus.js b/addons/web/static/src/legacy/js/components/action_menus.js index 0a07ab92a99..c93e6e976f6 100644 --- a/addons/web/static/src/legacy/js/components/action_menus.js +++ b/addons/web/static/src/legacy/js/components/action_menus.js @@ -1,10 +1,9 @@ -odoo.define('web.ActionMenus', function (require) { - "use strict"; - - const Context = require('web.Context'); - const DropdownMenu = require('web.DropdownMenu'); - const Registry = require('web.Registry'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.ActionMenus **/ + + import Context from "web.Context"; + import DropdownMenu from "web.DropdownMenu"; + import Registry from "web.Registry"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { onMounted, @@ -204,5 +203,4 @@ odoo.define('web.ActionMenus', function (require) { }; ActionMenus.template = 'web.Legacy.ActionMenus'; - return ActionMenus; -}); + export default ActionMenus; diff --git a/addons/web/static/src/legacy/js/components/custom_file_input.js b/addons/web/static/src/legacy/js/components/custom_file_input.js index fd4a36a6722..e46f75b17be 100644 --- a/addons/web/static/src/legacy/js/components/custom_file_input.js +++ b/addons/web/static/src/legacy/js/components/custom_file_input.js @@ -1,7 +1,6 @@ -odoo.define('web.CustomFileInput', function (require) { - "use strict"; - - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.CustomFileInput **/ + + import { LegacyComponent } from "@web/legacy/legacy_component"; const { useRef } = owl; /** @@ -85,5 +84,4 @@ odoo.define('web.CustomFileInput', function (require) { }; CustomFileInput.template = 'web.CustomFileInput'; - return CustomFileInput; -}); + export default CustomFileInput; diff --git a/addons/web/static/src/legacy/js/components/datepicker.js b/addons/web/static/src/legacy/js/components/datepicker.js index b46413fa1bf..9cfb8489ef9 100644 --- a/addons/web/static/src/legacy/js/components/datepicker.js +++ b/addons/web/static/src/legacy/js/components/datepicker.js @@ -1,11 +1,10 @@ -odoo.define('web.DatePickerOwl', function (require) { - "use strict"; - - const config = require('web.config'); - const field_utils = require('web.field_utils'); - const time = require('web.time'); - const { useAutofocus } = require("@web/core/utils/hooks"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.DatePickerOwl **/ + + import config from "web.config"; + import field_utils from "web.field_utils"; + import time from "web.time"; + import { useAutofocus } from "@web/core/utils/hooks"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { onMounted, @@ -284,8 +283,7 @@ odoo.define('web.DatePickerOwl', function (require) { }, }); - return { + export default { DatePicker, DateTimePicker, }; -}); diff --git a/addons/web/static/src/legacy/js/components/dropdown_menu.js b/addons/web/static/src/legacy/js/components/dropdown_menu.js index 931ac33fbce..e459c54ea26 100644 --- a/addons/web/static/src/legacy/js/components/dropdown_menu.js +++ b/addons/web/static/src/legacy/js/components/dropdown_menu.js @@ -1,9 +1,8 @@ -odoo.define('web.DropdownMenu', function (require) { - "use strict"; - - const { _t } = require('web.core'); - const DropdownMenuItem = require('web.DropdownMenuItem'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.DropdownMenu **/ + + import { _t } from "web.core"; + import DropdownMenuItem from "web.DropdownMenuItem"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { useExternalListener, useRef, useState } = owl; @@ -187,5 +186,4 @@ odoo.define('web.DropdownMenu', function (require) { }; DropdownMenu.template = 'web.DropdownMenu'; - return DropdownMenu; -}); + export default DropdownMenu; diff --git a/addons/web/static/src/legacy/js/components/dropdown_menu_item.js b/addons/web/static/src/legacy/js/components/dropdown_menu_item.js index 71b41e46401..18558b3c41d 100644 --- a/addons/web/static/src/legacy/js/components/dropdown_menu_item.js +++ b/addons/web/static/src/legacy/js/components/dropdown_menu_item.js @@ -1,8 +1,7 @@ -odoo.define('web.DropdownMenuItem', function (require) { - "use strict"; - - const { useListener } = require("@web/core/utils/hooks"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.DropdownMenuItem **/ + + import { useListener } from "@web/core/utils/hooks"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { useExternalListener, useRef, useState } = owl; @@ -125,5 +124,4 @@ odoo.define('web.DropdownMenuItem', function (require) { DropdownMenuItem.template = 'web.DropdownMenuItem'; - return DropdownMenuItem; -}); + export default DropdownMenuItem; diff --git a/addons/web/static/src/legacy/js/components/pager.js b/addons/web/static/src/legacy/js/components/pager.js index 4812ce79b11..6b552f27c87 100644 --- a/addons/web/static/src/legacy/js/components/pager.js +++ b/addons/web/static/src/legacy/js/components/pager.js @@ -1,8 +1,7 @@ -odoo.define('web.Pager', function (require) { - "use strict"; - - const { useAutofocus } = require("@web/core/utils/hooks"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.Pager **/ + + import { useAutofocus } from "@web/core/utils/hooks"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { onWillUpdateProps, useState } = owl; @@ -222,5 +221,4 @@ odoo.define('web.Pager', function (require) { }; Pager.template = 'web.legacy.Pager'; - return Pager; -}); + export default Pager; diff --git a/addons/web/static/src/legacy/js/control_panel/comparison_menu.js b/addons/web/static/src/legacy/js/control_panel/comparison_menu.js index 733967e2499..eb7103c42d6 100644 --- a/addons/web/static/src/legacy/js/control_panel/comparison_menu.js +++ b/addons/web/static/src/legacy/js/control_panel/comparison_menu.js @@ -1,11 +1,10 @@ -odoo.define("web.ComparisonMenu", function (require) { - "use strict"; - - const { Dropdown } = require("@web/core/dropdown/dropdown"); - const { SearchDropdownItem } = require("@web/search/search_dropdown_item/search_dropdown_item"); - const { FACET_ICONS } = require("web.searchUtils"); - const { useModel } = require("web.Model"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.ComparisonMenu **/ + + import { Dropdown } from "@web/core/dropdown/dropdown"; + import { SearchDropdownItem } from "@web/search/search_dropdown_item/search_dropdown_item"; + import { FACET_ICONS } from "web.searchUtils"; + import { useModel } from "web.Model"; + import { LegacyComponent } from "@web/legacy/legacy_component"; class ComparisonMenu extends LegacyComponent { setup() { @@ -31,5 +30,4 @@ odoo.define("web.ComparisonMenu", function (require) { ComparisonMenu.template = "web.ComparisonMenu"; ComparisonMenu.components = { Dropdown, SearchDropdownItem }; - return ComparisonMenu; -}); + export default ComparisonMenu; diff --git a/addons/web/static/src/legacy/js/control_panel/control_panel.js b/addons/web/static/src/legacy/js/control_panel/control_panel.js index 7c8846b661b..7832a31ad70 100644 --- a/addons/web/static/src/legacy/js/control_panel/control_panel.js +++ b/addons/web/static/src/legacy/js/control_panel/control_panel.js @@ -1,16 +1,15 @@ -odoo.define('web.ControlPanel', function (require) { - "use strict"; - - const ActionMenus = require('web.ActionMenus'); - const ComparisonMenu = require('web.ComparisonMenu'); - const ActionModel = require('web.ActionModel'); - const FavoriteMenu = require('web.FavoriteMenu'); - const FilterMenu = require('web.FilterMenu'); - const GroupByMenu = require('web.GroupByMenu'); - const Pager = require('web.Pager'); - const SearchBar = require('web.SearchBar'); - const { useModel } = require('web.Model'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.ControlPanel **/ + + import ActionMenus from "web.ActionMenus"; + import ComparisonMenu from "web.ComparisonMenu"; + import ActionModel from "web.ActionModel"; + import FavoriteMenu from "web.FavoriteMenu"; + import FilterMenu from "web.FilterMenu"; + import GroupByMenu from "web.GroupByMenu"; + import Pager from "web.Pager"; + import SearchBar from "web.SearchBar"; + import { useModel } from "web.Model"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { onMounted, @@ -240,5 +239,4 @@ odoo.define('web.ControlPanel', function (require) { }; ControlPanel.template = 'web.Legacy.ControlPanel'; - return ControlPanel; -}); + export default ControlPanel; diff --git a/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js b/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js index e2ed43ebed1..32f8c654801 100644 --- a/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js +++ b/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js @@ -1,13 +1,12 @@ -odoo.define("web/static/src/js/control_panel/control_panel_model_extension.js", function (require) { - "use strict"; +/** @odoo-module alias=web/static/src/js/control_panel/control_panel_model_extension.js **/ + + import ActionModel from "web.ActionModel"; + import Domain from "web.Domain"; + import pyUtils from "web.py_utils"; - const ActionModel = require("web.ActionModel"); - const Domain = require('web.Domain'); - const pyUtils = require('web.py_utils'); - - const { DEFAULT_INTERVAL, DEFAULT_PERIOD, + import { DEFAULT_INTERVAL, DEFAULT_PERIOD, getComparisonOptions, getIntervalOptions, getPeriodOptions, - constructDateDomain, rankInterval, yearSelected } = require('web.searchUtils'); + constructDateDomain, rankInterval, yearSelected } from "web.searchUtils"; const FAVORITE_PRIVATE_GROUP = 1; const FAVORITE_SHARED_GROUP = 2; @@ -1671,5 +1670,4 @@ odoo.define("web/static/src/js/control_panel/control_panel_model_extension.js", ActionModel.registry.add("ControlPanel", ControlPanelModelExtension, 10); - return ControlPanelModelExtension; -}); + export default ControlPanelModelExtension; diff --git a/addons/web/static/src/legacy/js/control_panel/custom_favorite_item.js b/addons/web/static/src/legacy/js/control_panel/custom_favorite_item.js index 27db3b680b9..d5f8fc11ca3 100644 --- a/addons/web/static/src/legacy/js/control_panel/custom_favorite_item.js +++ b/addons/web/static/src/legacy/js/control_panel/custom_favorite_item.js @@ -1,11 +1,10 @@ -odoo.define('web.CustomFavoriteItem', function (require) { - "use strict"; - - const { CheckBox } = require("@web/core/checkbox/checkbox"); - const { Dropdown } = require("@web/core/dropdown/dropdown"); - const FavoriteMenu = require('web.FavoriteMenu'); - const { useModel } = require('web.Model'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.CustomFavoriteItem **/ + + import { CheckBox } from "@web/core/checkbox/checkbox"; + import { Dropdown } from "@web/core/dropdown/dropdown"; + import FavoriteMenu from "web.FavoriteMenu"; + import { useModel } from "web.Model"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { useState, useRef } = owl; @@ -147,5 +146,4 @@ odoo.define('web.CustomFavoriteItem', function (require) { FavoriteMenu.registry.add('favorite-generator-menu', CustomFavoriteItem, 0); - return CustomFavoriteItem; -}); + export default CustomFavoriteItem; diff --git a/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js b/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js index 69bb852dc4c..878264a121d 100644 --- a/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js +++ b/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js @@ -1,13 +1,12 @@ -odoo.define('web.CustomFilterItem', function (require) { - "use strict"; - - const { Dropdown } = require("@web/core/dropdown/dropdown"); - const { DatePicker, DateTimePicker } = require('web.DatePickerOwl'); - const Domain = require('web.Domain'); - const { FIELD_OPERATORS, FIELD_TYPES } = require('web.searchUtils'); - const field_utils = require('web.field_utils'); - const { useModel } = require('web.Model'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.CustomFilterItem **/ + + import { Dropdown } from "@web/core/dropdown/dropdown"; + import { DatePicker, DateTimePicker } from "web.DatePickerOwl"; + import Domain from "web.Domain"; + import { FIELD_OPERATORS, FIELD_TYPES } from "web.searchUtils"; + import field_utils from "web.field_utils"; + import { useModel } from "web.Model"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { useState } = owl; @@ -279,5 +278,4 @@ odoo.define('web.CustomFilterItem', function (require) { CustomFilterItem.props = { fields: Object }; CustomFilterItem.template = "web.CustomFilterItem"; - return CustomFilterItem; -}); + export default CustomFilterItem; diff --git a/addons/web/static/src/legacy/js/control_panel/favorite_menu.js b/addons/web/static/src/legacy/js/control_panel/favorite_menu.js index 3dfccacfef7..8f0ae39a53c 100644 --- a/addons/web/static/src/legacy/js/control_panel/favorite_menu.js +++ b/addons/web/static/src/legacy/js/control_panel/favorite_menu.js @@ -1,13 +1,12 @@ -odoo.define('web.FavoriteMenu', function (require) { - "use strict"; - - const { Dropdown } = require("@web/core/dropdown/dropdown"); - const { SearchDropdownItem } = require("@web/search/search_dropdown_item/search_dropdown_item"); - const Dialog = require('web.OwlDialog'); - const { FACET_ICONS } = require("web.searchUtils"); - const Registry = require('web.Registry'); - const { useModel } = require('web.Model'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.FavoriteMenu **/ + + import { Dropdown } from "@web/core/dropdown/dropdown"; + import { SearchDropdownItem } from "@web/search/search_dropdown_item/search_dropdown_item"; + import Dialog from "web.OwlDialog"; + import { FACET_ICONS } from "web.searchUtils"; + import Registry from "web.Registry"; + import { useModel } from "web.Model"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { useState } = owl; @@ -86,5 +85,4 @@ odoo.define('web.FavoriteMenu', function (require) { FavoriteMenu.components = { Dialog, Dropdown, SearchDropdownItem }; FavoriteMenu.template = 'web.Legacy.FavoriteMenu'; - return FavoriteMenu; -}); + export default FavoriteMenu; diff --git a/addons/web/static/src/legacy/js/control_panel/filter_menu.js b/addons/web/static/src/legacy/js/control_panel/filter_menu.js index 47568d92b83..e00d4baa302 100644 --- a/addons/web/static/src/legacy/js/control_panel/filter_menu.js +++ b/addons/web/static/src/legacy/js/control_panel/filter_menu.js @@ -1,12 +1,11 @@ -odoo.define('web.FilterMenu', function (require) { - "use strict"; - - const { Dropdown } = require("@web/core/dropdown/dropdown"); - const { SearchDropdownItem } = require("@web/search/search_dropdown_item/search_dropdown_item"); - const CustomFilterItem = require('web.CustomFilterItem'); - const { FACET_ICONS } = require("web.searchUtils"); - const { useModel } = require('web.Model'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.FilterMenu **/ + + import { Dropdown } from "@web/core/dropdown/dropdown"; + import { SearchDropdownItem } from "@web/search/search_dropdown_item/search_dropdown_item"; + import CustomFilterItem from "web.CustomFilterItem"; + import { FACET_ICONS } from "web.searchUtils"; + import { useModel } from "web.Model"; + import { LegacyComponent } from "@web/legacy/legacy_component"; /** * 'Filters' menu @@ -62,5 +61,4 @@ odoo.define('web.FilterMenu', function (require) { FilterMenu.template = "web.legacy.FilterMenu"; FilterMenu.components = { CustomFilterItem, Dropdown, SearchDropdownItem }; - return FilterMenu; -}); + export default FilterMenu; diff --git a/addons/web/static/src/legacy/js/control_panel/groupby_menu.js b/addons/web/static/src/legacy/js/control_panel/groupby_menu.js index ea75c68416e..087adf2f487 100644 --- a/addons/web/static/src/legacy/js/control_panel/groupby_menu.js +++ b/addons/web/static/src/legacy/js/control_panel/groupby_menu.js @@ -1,12 +1,11 @@ -odoo.define('web.GroupByMenu', function (require) { - "use strict"; - - const { Dropdown } = require("@web/core/dropdown/dropdown"); - const { SearchDropdownItem } = require("@web/search/search_dropdown_item/search_dropdown_item"); - const { CustomGroupByItem } = require('@web/search/group_by_menu/custom_group_by_item'); - const { FACET_ICONS, GROUPABLE_TYPES } = require('web.searchUtils'); - const { useModel } = require('web.Model'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.GroupByMenu **/ + + import { Dropdown } from "@web/core/dropdown/dropdown"; + import { SearchDropdownItem } from "@web/search/search_dropdown_item/search_dropdown_item"; + import { CustomGroupByItem } from "@web/search/group_by_menu/custom_group_by_item"; + import { FACET_ICONS, GROUPABLE_TYPES } from "web.searchUtils"; + import { useModel } from "web.Model"; + import { LegacyComponent } from "@web/legacy/legacy_component"; class GroupByMenu extends LegacyComponent { @@ -74,5 +73,4 @@ odoo.define('web.GroupByMenu', function (require) { GroupByMenu.props = { fields: Object }; GroupByMenu.template = "web.GroupByMenu"; - return GroupByMenu; -}); + export default GroupByMenu; diff --git a/addons/web/static/src/legacy/js/control_panel/search_bar.js b/addons/web/static/src/legacy/js/control_panel/search_bar.js index c90723cfa19..9e2cde752c8 100644 --- a/addons/web/static/src/legacy/js/control_panel/search_bar.js +++ b/addons/web/static/src/legacy/js/control_panel/search_bar.js @@ -1,12 +1,11 @@ -odoo.define('web.SearchBar', function (require) { - "use strict"; - - const Domain = require('web.Domain'); - const field_utils = require('web.field_utils'); - const { useAutofocus } = require("@web/core/utils/hooks"); - const { useModel } = require('web.Model'); - const { fuzzyTest } = require('@web/core/utils/search'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.SearchBar **/ + + import Domain from "web.Domain"; + import field_utils from "web.field_utils"; + import { useAutofocus } from "@web/core/utils/hooks"; + import { useModel } from "web.Model"; + import { fuzzyTest } from "@web/core/utils/search"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { onMounted, onWillUnmount, toRaw, useExternalListener, useState } = owl; const CHAR_FIELDS = ['char', 'html', 'many2many', 'many2one', 'one2many', 'text']; @@ -489,5 +488,4 @@ odoo.define('web.SearchBar', function (require) { }; SearchBar.template = 'web.Legacy.SearchBar'; - return SearchBar; -}); + export default SearchBar; diff --git a/addons/web/static/src/legacy/js/control_panel/search_utils.js b/addons/web/static/src/legacy/js/control_panel/search_utils.js index 56b327689f9..df654791ab1 100644 --- a/addons/web/static/src/legacy/js/control_panel/search_utils.js +++ b/addons/web/static/src/legacy/js/control_panel/search_utils.js @@ -1,9 +1,8 @@ -odoo.define('web.searchUtils', function (require) { - "use strict"; - - const { _lt, _t } = require('web.core'); - const Domain = require('web.Domain'); - const pyUtils = require('web.py_utils'); +/** @odoo-module alias=web.searchUtils **/ + + import { _lt, _t } from "web.core"; + import Domain from "web.Domain"; + import pyUtils from "web.py_utils"; //------------------------------------------------------------------------- // Constants @@ -527,7 +526,7 @@ odoo.define('web.searchUtils', function (require) { return selectedOptionIds.some(optionId => !!YEAR_OPTIONS[optionId]); } - return { + export default { COMPARISON_OPTIONS, DEFAULT_INTERVAL, DEFAULT_PERIOD, @@ -546,4 +545,3 @@ odoo.define('web.searchUtils', function (require) { rankInterval, yearSelected, }; -}); diff --git a/addons/web/static/src/legacy/js/core/abstract_service.js b/addons/web/static/src/legacy/js/core/abstract_service.js index 5157b5b55f4..3f282de42e2 100644 --- a/addons/web/static/src/legacy/js/core/abstract_service.js +++ b/addons/web/static/src/legacy/js/core/abstract_service.js @@ -1,10 +1,9 @@ -odoo.define('web.AbstractService', function (require) { -"use strict"; +/** @odoo-module alias=web.AbstractService **/ -var Class = require('web.Class'); -const { serviceRegistry } = require("web.core"); -var Mixins = require('web.mixins'); -var ServicesMixin = require('web.ServicesMixin'); +import Class from "web.Class"; +import { serviceRegistry } from "web.core"; +import Mixins from "web.mixins"; +import ServicesMixin from "web.ServicesMixin"; var AbstractService = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { dependencies: [], @@ -87,5 +86,4 @@ var AbstractService = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { } }); -return AbstractService; -}); +export default AbstractService; diff --git a/addons/web/static/src/legacy/js/core/abstract_storage_service.js b/addons/web/static/src/legacy/js/core/abstract_storage_service.js index 5d724f87911..8ebc12aa2d4 100644 --- a/addons/web/static/src/legacy/js/core/abstract_storage_service.js +++ b/addons/web/static/src/legacy/js/core/abstract_storage_service.js @@ -1,12 +1,11 @@ -odoo.define('web.AbstractStorageService', function (require) { -'use strict'; +/** @odoo-module alias=web.AbstractStorageService **/ /** * This module defines an abstraction for services that write into Storage * objects (e.g. localStorage or sessionStorage). */ -var AbstractService = require('web.AbstractService'); +import AbstractService from "web.AbstractService"; var AbstractStorageService = AbstractService.extend({ // the 'storage' attribute must be set by actual StorageServices extending @@ -83,6 +82,4 @@ var AbstractStorageService = AbstractService.extend({ }, }); -return AbstractStorageService; - -}); +export default AbstractStorageService; diff --git a/addons/web/static/src/legacy/js/core/ajax.js b/addons/web/static/src/legacy/js/core/ajax.js index 3e694c472cd..6b1445d5382 100644 --- a/addons/web/static/src/legacy/js/core/ajax.js +++ b/addons/web/static/src/legacy/js/core/ajax.js @@ -1,13 +1,12 @@ -odoo.define('web.ajax', function (require) { -"use strict"; +/** @odoo-module alias=web.ajax **/ -var config = require('web.config'); -var core = require('web.core'); -const {Markup} = require('web.utils'); -var time = require('web.time'); -var download = require('web.download'); -var contentdisposition = require('web.contentdisposition'); -const { session } = require('@web/session'); +import config from "web.config"; +import core from "web.core"; +import {Markup} from "web.utils"; +import time from "web.time"; +import download from "web.download"; +import contentdisposition from "web.contentdisposition"; +import { session } from "@web/session"; var _t = core._t; @@ -325,6 +324,4 @@ _.extend(ajax, { post: post, }); -return ajax; - -}); +export default ajax; diff --git a/addons/web/static/src/legacy/js/core/browser_detection.js b/addons/web/static/src/legacy/js/core/browser_detection.js index 4b6605bfeda..a6824c2e1c5 100644 --- a/addons/web/static/src/legacy/js/core/browser_detection.js +++ b/addons/web/static/src/legacy/js/core/browser_detection.js @@ -1,7 +1,6 @@ -odoo.define('web.BrowserDetection', function (require) { - "use strict"; - var Class = require('web.Class'); - const { isMacOS, isBrowserChrome } = require('@web/core/browser/feature_detection'); +/** @odoo-module alias=web.BrowserDetection **/ + import Class from "web.Class"; + import { isMacOS, isBrowserChrome } from "@web/core/browser/feature_detection"; var BrowserDetection = Class.extend({ init: function () { @@ -10,6 +9,4 @@ odoo.define('web.BrowserDetection', function (require) { isOsMac: isMacOS, isBrowserChrome, }); - return BrowserDetection; -}); - + export default BrowserDetection; diff --git a/addons/web/static/src/legacy/js/core/bus.js b/addons/web/static/src/legacy/js/core/bus.js index 5257453edab..f49b4eaab75 100644 --- a/addons/web/static/src/legacy/js/core/bus.js +++ b/addons/web/static/src/legacy/js/core/bus.js @@ -1,19 +1,16 @@ -odoo.define('web.Bus', function (require) { -"use strict"; +/** @odoo-module alias=web.Bus **/ -var Class = require('web.Class'); -var mixins = require('web.mixins'); +import Class from "web.Class"; +import mixins from "web.mixins"; /** * Event Bus used to bind events scoped in the current instance * * @class Bus */ -return Class.extend(mixins.EventDispatcherMixin, { +export default Class.extend(mixins.EventDispatcherMixin, { init: function (parent) { mixins.EventDispatcherMixin.init.call(this); this.setParent(parent); }, }); - -}); diff --git a/addons/web/static/src/legacy/js/core/class.js b/addons/web/static/src/legacy/js/core/class.js index 4fed1983ee5..6ced296cdd5 100644 --- a/addons/web/static/src/legacy/js/core/class.js +++ b/addons/web/static/src/legacy/js/core/class.js @@ -1,5 +1,4 @@ -odoo.define('web.Class', function () { -"use strict"; +/** @odoo-module alias=web.Class **/ /** * Improved John Resig's inheritance, based on: * @@ -152,5 +151,4 @@ OdooClass.extend = function() { return Class; }; -return OdooClass; -}); +export default OdooClass; diff --git a/addons/web/static/src/legacy/js/core/collections.js b/addons/web/static/src/legacy/js/core/collections.js index bc27a9021cc..c54e3fc4594 100644 --- a/addons/web/static/src/legacy/js/core/collections.js +++ b/addons/web/static/src/legacy/js/core/collections.js @@ -1,7 +1,6 @@ -odoo.define("web.collections", function (require) { - "use strict"; - - var Class = require("web.Class"); +/** @odoo-module alias=web.collections **/ + + import Class from "web.Class"; /** * Allows to build a tree representation of a data. @@ -38,7 +37,6 @@ odoo.define("web.collections", function (require) { }, }); - return { + export default { Tree: Tree, }; -}); diff --git a/addons/web/static/src/legacy/js/core/concurrency.js b/addons/web/static/src/legacy/js/core/concurrency.js index 840df367aff..f30e8ca573f 100644 --- a/addons/web/static/src/legacy/js/core/concurrency.js +++ b/addons/web/static/src/legacy/js/core/concurrency.js @@ -1,5 +1,4 @@ -odoo.define('web.concurrency', function (require) { -"use strict"; +/** @odoo-module alias=web.concurrency **/ /** * Concurrency Utils @@ -15,9 +14,9 @@ odoo.define('web.concurrency', function (require) { * we solved some concurrency issues, when we noticed that a pattern emerged. */ -var Class = require('web.Class'); +import Class from "web.Class"; -return { +export default { /** * Returns a promise resolved after 'wait' milliseconds * @@ -319,5 +318,3 @@ return { }); } }; - -}); diff --git a/addons/web/static/src/legacy/js/core/context.js b/addons/web/static/src/legacy/js/core/context.js index a7ce801708d..756f88fbd7a 100644 --- a/addons/web/static/src/legacy/js/core/context.js +++ b/addons/web/static/src/legacy/js/core/context.js @@ -1,8 +1,7 @@ -odoo.define('web.Context', function (require) { -"use strict"; +/** @odoo-module alias=web.Context **/ -var Class = require('web.Class'); -var pyUtils = require('web.py_utils'); +import Class from "web.Class"; +import pyUtils from "web.py_utils"; var Context = Class.extend({ init: function () { @@ -48,6 +47,4 @@ var Context = Class.extend({ }, }); -return Context; - -}); +export default Context; diff --git a/addons/web/static/src/legacy/js/core/cookie_utils.js b/addons/web/static/src/legacy/js/core/cookie_utils.js index a8049aa3543..a5c9766a12a 100644 --- a/addons/web/static/src/legacy/js/core/cookie_utils.js +++ b/addons/web/static/src/legacy/js/core/cookie_utils.js @@ -1,5 +1,4 @@ -odoo.define('web.utils.cookies', function (require) { -"use strict"; +/** @odoo-module alias=web.utils.cookies **/ const utils = { /** @@ -70,5 +69,4 @@ const utils = { ].join(';'); }, }; -return utils; -}); +export default utils; diff --git a/addons/web/static/src/legacy/js/core/dialog.js b/addons/web/static/src/legacy/js/core/dialog.js index efee6c79147..9dc8936b63c 100644 --- a/addons/web/static/src/legacy/js/core/dialog.js +++ b/addons/web/static/src/legacy/js/core/dialog.js @@ -1,10 +1,9 @@ -odoo.define('web.Dialog', function (require) { -"use strict"; +/** @odoo-module alias=web.Dialog **/ -var core = require('web.core'); -var dom = require('web.dom'); -var Widget = require('web.Widget'); -const OwlDialog = require('web.OwlDialog'); +import core from "web.core"; +import dom from "web.dom"; +import Widget from "web.Widget"; +import OwlDialog from "web.OwlDialog"; var QWeb = core.qweb; var _t = core._t; @@ -535,6 +534,4 @@ Dialog.safeConfirm = function (owner, message, options) { return dialog.open(); }; -return Dialog; - -}); +export default Dialog; diff --git a/addons/web/static/src/legacy/js/core/dom.js b/addons/web/static/src/legacy/js/core/dom.js index 8b27aca5c0c..a4125b3f3b8 100644 --- a/addons/web/static/src/legacy/js/core/dom.js +++ b/addons/web/static/src/legacy/js/core/dom.js @@ -1,14 +1,4 @@ -odoo.define('web.dom_ready', function (require) { -'use strict'; - - return new Promise(function (resolve, reject) { - $(resolve); - }); -}); -//============================================================================== - -odoo.define('web.dom', function (require) { -"use strict"; +/** @odoo-module alias=web.dom **/ /** * DOM Utility helpers @@ -19,8 +9,8 @@ odoo.define('web.dom', function (require) { * something happens in the DOM. */ -var concurrency = require('web.concurrency'); -var core = require('web.core'); +import concurrency from "web.concurrency"; +import core from "web.core"; var _t = core._t; /** @@ -634,5 +624,4 @@ var dom = { }); }, }; -return dom; -}); +export default dom; diff --git a/addons/web/static/src/legacy/js/core/dom_ready.js b/addons/web/static/src/legacy/js/core/dom_ready.js new file mode 100644 index 00000000000..9368c7d3a13 --- /dev/null +++ b/addons/web/static/src/legacy/js/core/dom_ready.js @@ -0,0 +1,5 @@ +/** @odoo-module alias=web.dom_ready **/ + +export default new Promise(function (resolve, reject) { + $(resolve); +}); diff --git a/addons/web/static/src/legacy/js/core/domain.js b/addons/web/static/src/legacy/js/core/domain.js index 4192b0066a8..edc920450d1 100644 --- a/addons/web/static/src/legacy/js/core/domain.js +++ b/addons/web/static/src/legacy/js/core/domain.js @@ -1,8 +1,7 @@ -odoo.define("web.Domain", function (require) { -"use strict"; +/** @odoo-module alias=web.Domain **/ -var collections = require("web.collections"); -var pyUtils = require("web.py_utils"); +import collections from "web.collections"; +import pyUtils from "web.py_utils"; var py = window.py; // look py.js const TRUE_LEAF = [1, '=', 1]; @@ -429,5 +428,4 @@ Domain.FALSE_LEAF = FALSE_LEAF; Domain.TRUE_DOMAIN = TRUE_DOMAIN; Domain.FALSE_DOMAIN = FALSE_DOMAIN; -return Domain; -}); +export default Domain; diff --git a/addons/web/static/src/legacy/js/core/local_storage.js b/addons/web/static/src/legacy/js/core/local_storage.js index f567ecb5841..544c8b7f75b 100644 --- a/addons/web/static/src/legacy/js/core/local_storage.js +++ b/addons/web/static/src/legacy/js/core/local_storage.js @@ -1,8 +1,7 @@ -odoo.define('web.local_storage', function (require) { -'use strict'; +/** @odoo-module alias=web.local_storage **/ -var RamStorage = require('web.RamStorage'); -var mixins = require('web.mixins'); +import RamStorage from "web.RamStorage"; +import mixins from "web.mixins"; // use a fake localStorage in RAM if the native localStorage is unavailable // (e.g. private browsing in Safari) @@ -49,6 +48,4 @@ try { storage = new RamStorage(); } -return storage; - -}); +export default storage; diff --git a/addons/web/static/src/legacy/js/core/misc.js b/addons/web/static/src/legacy/js/core/misc.js index a41ab21ed68..4fc11729ac3 100644 --- a/addons/web/static/src/legacy/js/core/misc.js +++ b/addons/web/static/src/legacy/js/core/misc.js @@ -1,9 +1,8 @@ -odoo.define('web.framework', function (require) { -"use strict"; +/** @odoo-module alias=web.framework **/ -var core = require('web.core'); -var ajax = require('web.ajax'); -var Widget = require('web.Widget'); +import core from "web.core"; +import ajax from "web.ajax"; +import Widget from "web.Widget"; var _t = core._t; @@ -141,10 +140,8 @@ if (!document.contains) { }; } -return { +export default { blockUI: blockUI, unblockUI: unblockUI, redirect: redirect, }; - -}); diff --git a/addons/web/static/src/legacy/js/core/mixins.js b/addons/web/static/src/legacy/js/core/mixins.js index 06f39e0fcfe..14f861a2baa 100644 --- a/addons/web/static/src/legacy/js/core/mixins.js +++ b/addons/web/static/src/legacy/js/core/mixins.js @@ -1,8 +1,7 @@ -odoo.define('web.mixins', function (require) { -"use strict"; +/** @odoo-module alias=web.mixins **/ -var Class = require('web.Class'); -var utils = require('web.utils'); +import Class from "web.Class"; +import utils from "web.utils"; /** * Mixin to structure objects' life-cycles folowing a parent-children @@ -409,10 +408,8 @@ var PropertiesMixin = _.extend({}, EventDispatcherMixin, { } }); -return { +export default { ParentedMixin: ParentedMixin, EventDispatcherMixin: EventDispatcherMixin, PropertiesMixin: PropertiesMixin, }; - -}); diff --git a/addons/web/static/src/legacy/js/core/mvc.js b/addons/web/static/src/legacy/js/core/mvc.js index e85e238206f..b1be3646016 100644 --- a/addons/web/static/src/legacy/js/core/mvc.js +++ b/addons/web/static/src/legacy/js/core/mvc.js @@ -1,5 +1,4 @@ -odoo.define('web.mvc', function (require) { -"use strict"; +/** @odoo-module alias=web.mvc **/ /** * This file contains a 'formalization' of a MVC pattern, applied to Odoo @@ -29,11 +28,11 @@ odoo.define('web.mvc', function (require) { * simple as possible. */ -var Class = require('web.Class'); -var mixins = require('web.mixins'); -var ServicesMixin = require('web.ServicesMixin'); -var Widget = require('web.Widget'); -const { loadBundle } = require('@web/core/assets'); +import Class from "web.Class"; +import mixins from "web.mixins"; +import ServicesMixin from "web.ServicesMixin"; +import Widget from "web.Widget"; +import { loadBundle } from "@web/core/assets"; /** @@ -240,11 +239,9 @@ var Factory = Class.extend({ }); -return { +export default { Factory: Factory, Model: Model, Renderer: Renderer, Controller: Controller, }; - -}); diff --git a/addons/web/static/src/legacy/js/core/owl_dialog.js b/addons/web/static/src/legacy/js/core/owl_dialog.js index eb75605f1ba..b56ef003c93 100644 --- a/addons/web/static/src/legacy/js/core/owl_dialog.js +++ b/addons/web/static/src/legacy/js/core/owl_dialog.js @@ -1,14 +1,13 @@ -odoo.define('web.OwlDialog', function (require) { - "use strict"; - +/** @odoo-module alias=web.OwlDialog **/ + const { useRef, onMounted, onWillUnmount } = owl; const SIZE_CLASSES = { 'extra-large': 'modal-xl', 'large': 'modal-lg', 'small': 'modal-sm', }; - const { renderToString } = require('@web/core/utils/render'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); + import { renderToString } from "@web/core/utils/render"; + import { LegacyComponent } from "@web/legacy/legacy_component"; /** * Dialog (owl version) @@ -286,5 +285,4 @@ odoo.define('web.OwlDialog', function (require) { }; Dialog.template = 'web.OwlDialog'; - return Dialog; -}); + export default Dialog; diff --git a/addons/web/static/src/legacy/js/core/popover.js b/addons/web/static/src/legacy/js/core/popover.js index 1e9d440df4c..92ea2039c44 100644 --- a/addons/web/static/src/legacy/js/core/popover.js +++ b/addons/web/static/src/legacy/js/core/popover.js @@ -1,7 +1,6 @@ -odoo.define('web.Popover', function (require) { - 'use strict'; - - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module alias=web.Popover **/ + + import { LegacyComponent } from "@web/legacy/legacy_component"; const { status, onWillUnmount, useEffect, useRef, useState } = owl; /** @@ -356,5 +355,4 @@ odoo.define('web.Popover', function (require) { }, }; - return Popover; -}); + export default Popover; diff --git a/addons/web/static/src/legacy/js/core/py_utils.js b/addons/web/static/src/legacy/js/core/py_utils.js index 1cf1150ab76..1f4b065717a 100644 --- a/addons/web/static/src/legacy/js/core/py_utils.js +++ b/addons/web/static/src/legacy/js/core/py_utils.js @@ -1,7 +1,6 @@ -odoo.define('web.py_utils', function (require) { -"use strict"; +/** @odoo-module alias=web.py_utils **/ -var core = require('web.core'); +import core from "web.core"; var _t = core._t; var py = window.py; // to silence linters @@ -547,7 +546,7 @@ function _normalizeDomainAST(domain) { return domain; } -return { +export default { context: pycontext, ensure_evaluated: ensure_evaluated, eval: pyeval, @@ -559,4 +558,3 @@ return { _formatAST: _formatAST, _normalizeDomainAST: _normalizeDomainAST, }; -}); diff --git a/addons/web/static/src/legacy/js/core/qweb.js b/addons/web/static/src/legacy/js/core/qweb.js index 0261abc528b..79c5eae3575 100644 --- a/addons/web/static/src/legacy/js/core/qweb.js +++ b/addons/web/static/src/legacy/js/core/qweb.js @@ -1,7 +1,6 @@ -odoo.define('web.QWeb', function (require) { -"use strict"; +/** @odoo-module alias=web.QWeb **/ -var translation = require('web.translation'); +import translation from "web.translation"; var _t = translation._t; @@ -57,6 +56,4 @@ function preprocess_node() { } } -return QWeb; - -}); +export default QWeb; diff --git a/addons/web/static/src/legacy/js/core/ram_storage.js b/addons/web/static/src/legacy/js/core/ram_storage.js index abad86c4538..eeed9e29734 100644 --- a/addons/web/static/src/legacy/js/core/ram_storage.js +++ b/addons/web/static/src/legacy/js/core/ram_storage.js @@ -1,5 +1,4 @@ -odoo.define('web.RamStorage', function (require) { -'use strict'; +/** @odoo-module alias=web.RamStorage **/ /** * This module defines an alternative of the Storage objects (localStorage, @@ -7,8 +6,8 @@ odoo.define('web.RamStorage', function (require) { * are unavailable (e.g. in private browsing on Safari). */ -var Class = require('web.Class'); -var mixins = require('web.mixins'); +import Class from "web.Class"; +import mixins from "web.mixins"; var RamStorage = Class.extend(mixins.EventDispatcherMixin, { @@ -77,6 +76,4 @@ var RamStorage = Class.extend(mixins.EventDispatcherMixin, { }, }); -return RamStorage; - -}); +export default RamStorage; diff --git a/addons/web/static/src/legacy/js/core/registry.js b/addons/web/static/src/legacy/js/core/registry.js index 1ab16236e59..1ef1d454782 100644 --- a/addons/web/static/src/legacy/js/core/registry.js +++ b/addons/web/static/src/legacy/js/core/registry.js @@ -1,7 +1,6 @@ -odoo.define("web.Registry", function (require) { - "use strict"; - - const { sortBy } = require("web.utils"); +/** @odoo-module alias=web.Registry **/ + + import { sortBy } from "web.utils"; /** * The registry is really pretty much only a mapping from some keys to some @@ -150,5 +149,4 @@ odoo.define("web.Registry", function (require) { } } - return Registry; -}); + export default Registry; diff --git a/addons/web/static/src/legacy/js/core/rpc.js b/addons/web/static/src/legacy/js/core/rpc.js index e0d33355001..d9ceaf225a9 100644 --- a/addons/web/static/src/legacy/js/core/rpc.js +++ b/addons/web/static/src/legacy/js/core/rpc.js @@ -1,7 +1,6 @@ -odoo.define('web.rpc', function (require) { -"use strict"; +/** @odoo-module alias=web.rpc **/ -var ajax = require('web.ajax'); +import ajax from "web.ajax"; const rpc = { /** @@ -123,6 +122,4 @@ const rpc = { }, }; -return rpc; - -}); +export default rpc; diff --git a/addons/web/static/src/legacy/js/core/service_mixins.js b/addons/web/static/src/legacy/js/core/service_mixins.js index 5c30d583545..f9e109ff08b 100644 --- a/addons/web/static/src/legacy/js/core/service_mixins.js +++ b/addons/web/static/src/legacy/js/core/service_mixins.js @@ -1,106 +1,6 @@ -odoo.define('web.ServiceProviderMixin', function (require) { -"use strict"; +/** @odoo-module alias=web.ServicesMixin **/ -var core = require('web.core'); - -// ServiceProviderMixin is deprecated. It is only used by the ProjectTimesheet -// app. As soon as it no longer uses it, we can remove it. -var ServiceProviderMixin = { - services: {}, // dict containing deployed service instances - UndeployedServices: {}, // dict containing classes of undeployed services - /** - * @override - */ - init: function (parent) { - var self = this; - // to properly instantiate services with this as parent, this mixin - // assumes that it is used along the EventDispatcherMixin, and that - // EventDispatchedMixin's init is called first - // as EventDispatcherMixin's init is already called, this handler has - // to be bound manually - this.on('call_service', this, this._call_service.bind(this)); - - // add already registered services from the service registry - _.each(core.serviceRegistry.map, function (Service, serviceName) { - if (serviceName in self.UndeployedServices) { - throw new Error('Service "' + serviceName + '" is already loaded.'); - } - self.UndeployedServices[serviceName] = Service; - }); - this._deployServices(); - - // listen on newly added services - core.serviceRegistry.onAdd(function (serviceName, Service) { - if (serviceName in self.services || serviceName in self.UndeployedServices) { - throw new Error('Service "' + serviceName + '" is already loaded.'); - } - self.UndeployedServices[serviceName] = Service; - self._deployServices(); - }); - }, - - //-------------------------------------------------------------------------- - // Private - //-------------------------------------------------------------------------- - - /** - * @private - */ - _deployServices: function () { - var self = this; - var done = false; - while (!done) { - var serviceName = _.findKey(this.UndeployedServices, function (Service) { - // no missing dependency - return !_.some(Service.prototype.dependencies, function (depName) { - return !self.services[depName]; - }); - }); - if (serviceName) { - var service = new this.UndeployedServices[serviceName](this); - this.services[serviceName] = service; - delete this.UndeployedServices[serviceName]; - service.start(); - } else { - done = true; - } - } - }, - - //-------------------------------------------------------------------------- - // Handlers - //-------------------------------------------------------------------------- - - /** - * Call the 'service', using data from the 'event' that - * has triggered the service call. - * - * For the ajax service, the arguments are extended with - * the target so that it can call back the caller. - * - * @private - * @param {OdooEvent} event - */ - _call_service: function (event) { - var args = event.data.args || []; - if (event.data.service === 'ajax' && event.data.method === 'rpc') { - // ajax service uses an extra 'target' argument for rpc - args = args.concat(event.target); - } - var service = this.services[event.data.service]; - var result = service[event.data.method].apply(service, args); - event.data.callback(result); - }, -}; - -return ServiceProviderMixin; - -}); - -odoo.define('web.ServicesMixin', function (require) { -"use strict"; - -var rpc = require('web.rpc'); +import rpc from "web.rpc"; /** * @mixin @@ -242,6 +142,4 @@ var ServicesMixin = { }, }; -return ServicesMixin; - -}); +export default ServicesMixin; diff --git a/addons/web/static/src/legacy/js/core/session.js b/addons/web/static/src/legacy/js/core/session.js index 4b78538fbb6..abf9e697302 100644 --- a/addons/web/static/src/legacy/js/core/session.js +++ b/addons/web/static/src/legacy/js/core/session.js @@ -1,12 +1,11 @@ -odoo.define('web.Session', function (require) { -"use strict"; +/** @odoo-module alias=web.Session **/ -var ajax = require('web.ajax'); -var core = require('web.core'); -var mixins = require('web.mixins'); -const {setCookie} = require('web.utils.cookies'); -const { session } = require('@web/session'); -const { loadJS } = require('@web/core/assets'); +import ajax from "web.ajax"; +import core from "web.core"; +import mixins from "web.mixins"; +import {setCookie} from "web.utils.cookies"; +import { session } from "@web/session"; +import { loadJS } from "@web/core/assets"; var _t = core._t; @@ -349,6 +348,4 @@ var Session = core.Class.extend(mixins.EventDispatcherMixin, { }, }); -return Session; - -}); +export default Session; diff --git a/addons/web/static/src/legacy/js/core/session_storage.js b/addons/web/static/src/legacy/js/core/session_storage.js index 0d5198fe2af..24b04cc8201 100644 --- a/addons/web/static/src/legacy/js/core/session_storage.js +++ b/addons/web/static/src/legacy/js/core/session_storage.js @@ -1,8 +1,7 @@ -odoo.define('web.sessionStorage', function (require) { -'use strict'; +/** @odoo-module alias=web.sessionStorage **/ -var RamStorage = require('web.RamStorage'); -var mixins = require('web.mixins'); +import RamStorage from "web.RamStorage"; +import mixins from "web.mixins"; // use a fake sessionStorage in RAM if the native sessionStorage is unavailable // (e.g. private browsing in Safari) @@ -51,6 +50,4 @@ try { storage = new RamStorage(); } -return storage; - -}); +export default storage; diff --git a/addons/web/static/src/legacy/js/core/smooth_scroll_on_drag.js b/addons/web/static/src/legacy/js/core/smooth_scroll_on_drag.js index 750e54daeec..86f6131a370 100644 --- a/addons/web/static/src/legacy/js/core/smooth_scroll_on_drag.js +++ b/addons/web/static/src/legacy/js/core/smooth_scroll_on_drag.js @@ -1,8 +1,7 @@ -odoo.define('web.smooth_scroll_on_drag', function (require) { -"use strict"; +/** @odoo-module alias=web.smooth_scroll_on_drag **/ -const Class = require('web.Class'); -const mixins = require('web.mixins'); +import Class from "web.Class"; +import mixins from "web.mixins"; /** * Provides a helper for SmoothScrollOnDrag options.offsetElements @@ -427,5 +426,4 @@ const SmoothScrollOnDrag = Class.extend(mixins.ParentedMixin, { }, }); -return SmoothScrollOnDrag; -}); +export default SmoothScrollOnDrag; diff --git a/addons/web/static/src/legacy/js/core/time.js b/addons/web/static/src/legacy/js/core/time.js index c5d81f6cdb0..a5841d5b629 100644 --- a/addons/web/static/src/legacy/js/core/time.js +++ b/addons/web/static/src/legacy/js/core/time.js @@ -1,8 +1,7 @@ -odoo.define('web.time', function (require) { -"use strict"; +/** @odoo-module alias=web.time **/ -var translation = require('web.translation'); -var utils = require('web.utils'); +import translation from "web.translation"; +import utils from "web.utils"; var lpad = utils.lpad; var rpad = utils.rpad; @@ -329,7 +328,7 @@ function getLangTimeFormatWoZero() { return timeFormatWoZeroCache[timeFormat]; } -return { +export default { date_to_utc: date_to_utc, str_to_datetime: str_to_datetime, str_to_date: str_to_date, @@ -347,6 +346,3 @@ return { getLangTimeFormatWoZero: getLangTimeFormatWoZero, getLangDatetimeFormat: getLangDatetimeFormat, }; - -}); - diff --git a/addons/web/static/src/legacy/js/core/translation.js b/addons/web/static/src/legacy/js/core/translation.js index 5adb9a5b9a7..9607bd81422 100644 --- a/addons/web/static/src/legacy/js/core/translation.js +++ b/addons/web/static/src/legacy/js/core/translation.js @@ -1,9 +1,8 @@ -odoo.define('web.translation', function (require) { -"use strict"; +/** @odoo-module alias=web.translation **/ -var Class = require('web.Class'); -const { _lt } = require("@web/core/l10n/translation"); +import Class from "web.Class"; +import { _lt } from "@web/core/l10n/translation"; var TranslationDataBase = Class.extend(/** @lends instance.TranslationDataBase# */{ init: function() { @@ -114,10 +113,8 @@ var _t = new TranslationDataBase().build_translation_function(); } -return { +export default { _t: _t, _lt: _lt, TranslationDataBase: TranslationDataBase, }; - -}); diff --git a/addons/web/static/src/legacy/js/core/utils.js b/addons/web/static/src/legacy/js/core/utils.js index 1cd7dd91bae..08fea185592 100644 --- a/addons/web/static/src/legacy/js/core/utils.js +++ b/addons/web/static/src/legacy/js/core/utils.js @@ -1,5 +1,4 @@ -odoo.define('web.utils', function (require) { -"use strict"; +/** @odoo-module alias=web.utils **/ /** * Utils @@ -7,9 +6,9 @@ odoo.define('web.utils', function (require) { * Various generic utility functions */ -var translation = require('web.translation'); +import translation from "web.translation"; -const { Component } = require("@odoo/owl"); +import { Component } from "@odoo/owl"; var _t = translation._t; var id = -1; @@ -1130,6 +1129,4 @@ const utils = { }, }; -return utils; - -}); +export default utils; diff --git a/addons/web/static/src/legacy/js/core/widget.js b/addons/web/static/src/legacy/js/core/widget.js index 9fd4bce7ad0..ae10ff2e19e 100644 --- a/addons/web/static/src/legacy/js/core/widget.js +++ b/addons/web/static/src/legacy/js/core/widget.js @@ -1,10 +1,9 @@ -odoo.define('web.Widget', function (require) { -"use strict"; +/** @odoo-module alias=web.Widget **/ -var core = require('web.core'); -var mixins = require('web.mixins'); -var ServicesMixin = require('web.ServicesMixin'); -const { loadBundle } = require("@web/core/assets"); +import core from "web.core"; +import mixins from "web.mixins"; +import ServicesMixin from "web.ServicesMixin"; +import { loadBundle } from "@web/core/assets"; /** @@ -430,6 +429,4 @@ var Widget = core.Class.extend(mixins.PropertiesMixin, ServicesMixin, { }, }); -return Widget; - -}); +export default Widget; diff --git a/addons/web/static/src/legacy/js/fields/abstract_field.js b/addons/web/static/src/legacy/js/fields/abstract_field.js index e3bfb03e009..5e5f5a94202 100644 --- a/addons/web/static/src/legacy/js/fields/abstract_field.js +++ b/addons/web/static/src/legacy/js/fields/abstract_field.js @@ -1,5 +1,4 @@ -odoo.define('web.AbstractField', function (require) { -"use strict"; +/** @odoo-module alias=web.AbstractField **/ /** * This is the basic field widget used by all the views to render a field in a view. @@ -30,8 +29,8 @@ odoo.define('web.AbstractField', function (require) { * @module web.AbstractField */ -var field_utils = require('web.field_utils'); -var Widget = require('web.Widget'); +import field_utils from "web.field_utils"; +import Widget from "web.Widget"; var AbstractField = Widget.extend({ events: { @@ -686,6 +685,4 @@ var AbstractField = Widget.extend({ }, }); -return AbstractField; - -}); +export default AbstractField; diff --git a/addons/web/static/src/legacy/js/fields/basic_fields.js b/addons/web/static/src/legacy/js/fields/basic_fields.js index a5c9cae284a..19047d52a1c 100644 --- a/addons/web/static/src/legacy/js/fields/basic_fields.js +++ b/addons/web/static/src/legacy/js/fields/basic_fields.js @@ -1,5 +1,4 @@ -odoo.define('web.basic_fields', function (require) { -"use strict"; +/** @odoo-module alias=web.basic_fields **/ /** * This module contains most of the basic (meaning: non relational) field @@ -7,15 +6,15 @@ odoo.define('web.basic_fields', function (require) { * BasicView, so, they can work with the records obtained from a BasicModel. */ -var AbstractField = require('web.AbstractField'); -var core = require('web.core'); -var datepicker = require('web.datepicker'); -var dom = require('web.dom'); -var framework = require('web.framework'); -var py_utils = require('web.py_utils'); -var session = require('web.session'); -var field_utils = require('web.field_utils'); -var utils = require('web.utils'); +import AbstractField from "web.AbstractField"; +import core from "web.core"; +import datepicker from "web.datepicker"; +import dom from "web.dom"; +import framework from "web.framework"; +import py_utils from "web.py_utils"; +import session from "web.session"; +import field_utils from "web.field_utils"; +import utils from "web.utils"; var _t = core._t; var _lt = core._lt; @@ -1760,7 +1759,7 @@ var FieldToggleBoolean = AbstractField.extend({ }, }); -return { +export default { TranslatableFieldMixin: TranslatableFieldMixin, DebouncedField: DebouncedField, FieldBinaryFile: FieldBinaryFile, @@ -1782,5 +1781,3 @@ return { NumericField: NumericField, UrlWidget: UrlWidget, }; - -}); diff --git a/addons/web/static/src/legacy/js/fields/field_registration.js b/addons/web/static/src/legacy/js/fields/field_registration.js new file mode 100644 index 00000000000..f9d5c421954 --- /dev/null +++ b/addons/web/static/src/legacy/js/fields/field_registration.js @@ -0,0 +1,38 @@ +/** @odoo-module **/ + +import AbstractField from "web.AbstractField"; +import basic_fields from "web.basic_fields"; +import relational_fields from "web.relational_fields"; +import registry from "web.field_registry"; + +// Basic fields +registry + .add('abstract', AbstractField) + .add('input', basic_fields.InputField) + .add('integer', basic_fields.FieldInteger) + .add('boolean', basic_fields.FieldBoolean) + .add('date', basic_fields.FieldDate) + .add('datetime', basic_fields.FieldDateTime) + .add('float', basic_fields.FieldFloat) + .add('char', basic_fields.FieldChar) + .add('text', basic_fields.FieldText) + .add('url', basic_fields.UrlWidget) + .add('binary', basic_fields.FieldBinaryFile) + .add('monetary', basic_fields.FieldMonetary) + .add('percentage', basic_fields.FieldPercentage) + .add('float_time', basic_fields.FieldFloatTime) + .add('float_factor', basic_fields.FieldFloatFactor) + .add('float_toggle', basic_fields.FieldFloatToggle) + .add('many2one_reference', basic_fields.FieldInteger) + +// Relational fields +registry + .add('many2one', relational_fields.FieldMany2One) + .add('many2one_avatar', relational_fields.Many2OneAvatar) + .add('many2many_tags', relational_fields.FieldMany2ManyTags) + .add('many2many_tags_avatar', relational_fields.FieldMany2ManyTagsAvatar) + .add('kanban.many2many_tags_avatar', relational_fields.KanbanMany2ManyTagsAvatar) + .add('list.many2many_tags_avatar', relational_fields.ListMany2ManyTagsAvatar) + .add('form.many2many_tags', relational_fields.FormFieldMany2ManyTags) + .add('radio', relational_fields.FieldRadio) + .add('selection', relational_fields.FieldSelection); diff --git a/addons/web/static/src/legacy/js/fields/field_registry.js b/addons/web/static/src/legacy/js/fields/field_registry.js index e826b6452e9..4275fc6da61 100644 --- a/addons/web/static/src/legacy/js/fields/field_registry.js +++ b/addons/web/static/src/legacy/js/fields/field_registry.js @@ -1,53 +1,10 @@ -odoo.define('web.field_registry', function (require) { - "use strict"; - - const Registry = require('web.Registry'); +/** @odoo-module alias=web.field_registry **/ + + import Registry from "web.Registry"; const { Component } = owl; - return new Registry( + export default new Registry( null, (value) => !(value.prototype instanceof Component) ); -}); - -odoo.define('web._field_registry', function (require) { -"use strict"; - -var AbstractField = require('web.AbstractField'); -var basic_fields = require('web.basic_fields'); -var relational_fields = require('web.relational_fields'); -var registry = require('web.field_registry'); - -// Basic fields -registry - .add('abstract', AbstractField) - .add('input', basic_fields.InputField) - .add('integer', basic_fields.FieldInteger) - .add('boolean', basic_fields.FieldBoolean) - .add('date', basic_fields.FieldDate) - .add('datetime', basic_fields.FieldDateTime) - .add('float', basic_fields.FieldFloat) - .add('char', basic_fields.FieldChar) - .add('text', basic_fields.FieldText) - .add('url', basic_fields.UrlWidget) - .add('binary', basic_fields.FieldBinaryFile) - .add('monetary', basic_fields.FieldMonetary) - .add('percentage', basic_fields.FieldPercentage) - .add('float_time', basic_fields.FieldFloatTime) - .add('float_factor', basic_fields.FieldFloatFactor) - .add('float_toggle', basic_fields.FieldFloatToggle) - .add('many2one_reference', basic_fields.FieldInteger) - -// Relational fields -registry - .add('many2one', relational_fields.FieldMany2One) - .add('many2one_avatar', relational_fields.Many2OneAvatar) - .add('many2many_tags', relational_fields.FieldMany2ManyTags) - .add('many2many_tags_avatar', relational_fields.FieldMany2ManyTagsAvatar) - .add('kanban.many2many_tags_avatar', relational_fields.KanbanMany2ManyTagsAvatar) - .add('list.many2many_tags_avatar', relational_fields.ListMany2ManyTagsAvatar) - .add('form.many2many_tags', relational_fields.FormFieldMany2ManyTags) - .add('radio', relational_fields.FieldRadio) - .add('selection', relational_fields.FieldSelection); -}); \ No newline at end of file diff --git a/addons/web/static/src/legacy/js/fields/field_utils.js b/addons/web/static/src/legacy/js/fields/field_utils.js index 44dd61baacf..c4ae46602fb 100644 --- a/addons/web/static/src/legacy/js/fields/field_utils.js +++ b/addons/web/static/src/legacy/js/fields/field_utils.js @@ -1,5 +1,4 @@ -odoo.define('web.field_utils', function (require) { -"use strict"; +/** @odoo-module alias=web.field_utils **/ /** * Field Utils @@ -15,11 +14,11 @@ odoo.define('web.field_utils', function (require) { * conversions. */ -var core = require('web.core'); -var dom = require('web.dom'); -var session = require('web.session'); -var time = require('web.time'); -var utils = require('web.utils'); +import core from "web.core"; +import dom from "web.dom"; +import session from "web.session"; +import time from "web.time"; +import utils from "web.utils"; var _t = core._t; @@ -745,7 +744,7 @@ function parseMany2one(value) { return value; } -return { +export default { format: { binary: formatBinary, boolean: formatBoolean, @@ -791,5 +790,3 @@ return { json: _.identity, // todo }, }; - -}); diff --git a/addons/web/static/src/legacy/js/fields/relational_fields.js b/addons/web/static/src/legacy/js/fields/relational_fields.js index 7e69c4fde13..3563b4d6b2c 100644 --- a/addons/web/static/src/legacy/js/fields/relational_fields.js +++ b/addons/web/static/src/legacy/js/fields/relational_fields.js @@ -1,5 +1,4 @@ -odoo.define('web.relational_fields', function (require) { -"use strict"; +/** @odoo-module alias=web.relational_fields **/ /** * Relational Fields @@ -13,16 +12,16 @@ odoo.define('web.relational_fields', function (require) { * the corresponding record(s), or alter some of their fields. */ -var AbstractField = require('web.AbstractField'); -var concurrency = require('web.concurrency'); -var core = require('web.core'); -var Dialog = require('web.Dialog'); -var dom = require('web.dom'); -const { FormViewDialog } = require("@web/views/view_dialogs/form_view_dialog"); -const { SelectCreateDialog } = require("@web/views/view_dialogs/select_create_dialog"); -const Domain = require('web.Domain'); -const { sprintf } = require("web.utils"); -const { escape } = require("@web/core/utils/strings"); +import AbstractField from "web.AbstractField"; +import concurrency from "web.concurrency"; +import core from "web.core"; +import Dialog from "web.Dialog"; +import dom from "web.dom"; +import { FormViewDialog } from "@web/views/view_dialogs/form_view_dialog"; +import { SelectCreateDialog } from "@web/views/view_dialogs/select_create_dialog"; +import Domain from "web.Domain"; +import { sprintf } from "web.utils"; +import { escape } from "@web/core/utils/strings"; var _t = core._t; var _lt = core._lt; @@ -1703,7 +1702,7 @@ var FieldRadio = FieldSelection.extend({ }, }); -return { +export default { FieldMany2One: FieldMany2One, Many2OneAvatar: Many2OneAvatar, FieldMany2ManyTags: FieldMany2ManyTags, @@ -1714,5 +1713,3 @@ return { FieldRadio: FieldRadio, FieldSelection: FieldSelection, }; - -}); diff --git a/addons/web/static/src/legacy/js/model.js b/addons/web/static/src/legacy/js/model.js index 7f5a2ce3e61..a46d0fc29f0 100644 --- a/addons/web/static/src/legacy/js/model.js +++ b/addons/web/static/src/legacy/js/model.js @@ -1,9 +1,8 @@ -odoo.define("web.Model", function (require) { - "use strict"; - - const { groupBy } = require("web.utils"); - const Registry = require("web.Registry"); - const { useBus } = require("@web/core/utils/hooks"); +/** @odoo-module alias=web.Model **/ + + import { groupBy } from "web.utils"; + import Registry from "web.Registry"; + import { useBus } from "@web/core/utils/hooks"; const { EventBus, onWillRender, useComponent } = owl; const isNotNull = (val) => val !== null && val !== undefined; @@ -473,8 +472,7 @@ odoo.define("web.Model", function (require) { return model; } - return { + export default { Model, useModel, }; -}); diff --git a/addons/web/static/src/legacy/js/owl_compatibility.js b/addons/web/static/src/legacy/js/owl_compatibility.js index 298ac31776d..96a1754a125 100644 --- a/addons/web/static/src/legacy/js/owl_compatibility.js +++ b/addons/web/static/src/legacy/js/owl_compatibility.js @@ -1,8 +1,7 @@ -odoo.define('web.OwlCompatibility', function (require) { - "use strict"; - - const { LegacyComponent } = require("@web/legacy/legacy_component"); - const { templates } = require("@web/core/assets"); +/** @odoo-module alias=web.OwlCompatibility **/ + + import { LegacyComponent } from "@web/legacy/legacy_component"; + import { templates } from "@web/core/assets"; /** * This file defines the necessary tools for the transition phase where Odoo @@ -753,10 +752,9 @@ odoo.define('web.OwlCompatibility', function (require) { } } - return { + export default { ComponentAdapter, ComponentWrapper, WidgetAdapterMixin, standaloneAdapter, }; -}); diff --git a/addons/web/static/src/legacy/js/public/lazyloader.js b/addons/web/static/src/legacy/js/public/lazyloader.js index 37b5cab17ad..e4c98b2ec38 100644 --- a/addons/web/static/src/legacy/js/public/lazyloader.js +++ b/addons/web/static/src/legacy/js/public/lazyloader.js @@ -1,5 +1,4 @@ -odoo.define('web.public.lazyloader', function (require) { -'use strict'; +/** @odoo-module alias=web.public.lazyloader **/ var blockEvents = ['submit', 'click']; var blockFunction = function (ev) { @@ -108,8 +107,7 @@ function _loadScripts(scripts, index) { script.removeAttribute('data-src'); } -return { +export default { loadScripts: _loadScripts, allScriptsLoaded: _allScriptsLoaded, }; -}); diff --git a/addons/web/static/src/legacy/js/public/public_env.js b/addons/web/static/src/legacy/js/public/public_env.js index 581cccd430b..6bb3c76da06 100644 --- a/addons/web/static/src/legacy/js/public/public_env.js +++ b/addons/web/static/src/legacy/js/public/public_env.js @@ -1,11 +1,9 @@ -odoo.define("web.public_env", function (require) { - "use strict"; - +/** @odoo-module alias=web.public_env **/ + /** * This file defines the env to use in the public side. */ - const commonEnv = require("web.commonEnv"); + import commonEnv from "web.commonEnv"; - return commonEnv; -}); + export default commonEnv; diff --git a/addons/web/static/src/legacy/js/services/ajax_service.js b/addons/web/static/src/legacy/js/services/ajax_service.js index cb83dd9d553..dfa8a04e761 100644 --- a/addons/web/static/src/legacy/js/services/ajax_service.js +++ b/addons/web/static/src/legacy/js/services/ajax_service.js @@ -1,9 +1,8 @@ -odoo.define('web.AjaxService', function (require) { -"use strict"; +/** @odoo-module alias=web.AjaxService **/ -var AbstractService = require('web.AbstractService'); -var core = require('web.core'); -var session = require('web.session'); +import AbstractService from "web.AbstractService"; +import core from "web.core"; +import session from "web.session"; var AjaxService = AbstractService.extend({ rpc: function (route, args, options, target) { @@ -27,6 +26,4 @@ var AjaxService = AbstractService.extend({ core.serviceRegistry.add('ajax', AjaxService); -return AjaxService; - -}); +export default AjaxService; diff --git a/addons/web/static/src/legacy/js/services/config.js b/addons/web/static/src/legacy/js/services/config.js index 9d49280db6b..d07ba6c9d2e 100644 --- a/addons/web/static/src/legacy/js/services/config.js +++ b/addons/web/static/src/legacy/js/services/config.js @@ -1,9 +1,8 @@ -odoo.define('web.config', function (require) { -"use strict"; +/** @odoo-module alias=web.config **/ -const Bus = require('web.Bus'); -const { hasTouch, isAndroid, isIOS, isMobileOS } = require('@web/core/browser/feature_detection'); -const { getMediaQueryLists } = require('@web/core/ui/ui_service'); +import Bus from "web.Bus"; +import { hasTouch, isAndroid, isIOS, isMobileOS } from "@web/core/browser/feature_detection"; +import { getMediaQueryLists } from "@web/core/ui/ui_service"; const bus = new Bus(); @@ -118,6 +117,4 @@ function _updateSizeProps() { _.invoke(medias, 'addListener', _updateSizeProps); _updateSizeProps(); -return config; - -}); +export default config; diff --git a/addons/web/static/src/legacy/js/services/core.js b/addons/web/static/src/legacy/js/services/core.js index 1d4619f6610..9f566654388 100644 --- a/addons/web/static/src/legacy/js/services/core.js +++ b/addons/web/static/src/legacy/js/services/core.js @@ -1,12 +1,11 @@ -odoo.define('web.core', function (require) { -"use strict"; +/** @odoo-module alias=web.core **/ -var Bus = require('web.Bus'); -var config = require('web.config'); -var Class = require('web.Class'); -var QWeb = require('web.QWeb'); -var Registry = require('web.Registry'); -var translation = require('web.translation'); +import Bus from "web.Bus"; +import config from "web.config"; +import Class from "web.Class"; +import QWeb from "web.QWeb"; +import Registry from "web.Registry"; +import translation from "web.translation"; /** * Whether the client is currently in "debug" mode @@ -26,7 +25,7 @@ _.each('resize,scroll'.split(','), function (evtype) { }); }); -return { +export default { qweb: new QWeb(config.isDebug()), // core classes and functions @@ -45,5 +44,3 @@ return { */ csrf_token: odoo.csrf_token, }; - -}); diff --git a/addons/web/static/src/legacy/js/services/data_manager.js b/addons/web/static/src/legacy/js/services/data_manager.js index bf7c2b82a56..8067d936e01 100644 --- a/addons/web/static/src/legacy/js/services/data_manager.js +++ b/addons/web/static/src/legacy/js/services/data_manager.js @@ -1,13 +1,12 @@ -odoo.define('web.DataManager', function (require) { -"use strict"; +/** @odoo-module alias=web.data_manager **/ -var config = require('web.config'); -var core = require('web.core'); -var rpc = require('web.rpc'); -var session = require('web.session'); -const { generateLegacyLoadViewsResult } = require("@web/legacy/legacy_load_views"); +import config from "web.config"; +import core from "web.core"; +import rpc from "web.rpc"; +import session from "web.session"; +import { generateLegacyLoadViewsResult } from "@web/legacy/legacy_load_views"; -return core.Class.extend({ +const DataManager = core.Class.extend({ init: function () { this._init_cache(); core.bus.on('clear_cache', this, this.invalidate.bind(this)); @@ -222,15 +221,6 @@ return core.Class.extend({ }, }); -}); - -odoo.define('web.data_manager', function (require) { -"use strict"; - -var DataManager = require('web.DataManager'); - var data_manager = new DataManager(); -return data_manager; - -}); +export default data_manager; diff --git a/addons/web/static/src/legacy/js/services/local_storage_service.js b/addons/web/static/src/legacy/js/services/local_storage_service.js index 694dc6dacd0..0c0d077ec1f 100644 --- a/addons/web/static/src/legacy/js/services/local_storage_service.js +++ b/addons/web/static/src/legacy/js/services/local_storage_service.js @@ -1,13 +1,12 @@ -odoo.define('web.LocalStorageService', function (require) { -'use strict'; +/** @odoo-module alias=web.LocalStorageService **/ /** * This module defines a service to access the localStorage object. */ -var AbstractStorageService = require('web.AbstractStorageService'); -var core = require('web.core'); -var localStorage = require('web.local_storage'); +import AbstractStorageService from "web.AbstractStorageService"; +import core from "web.core"; +import localStorage from "web.local_storage"; var LocalStorageService = AbstractStorageService.extend({ storage: localStorage, @@ -15,6 +14,4 @@ var LocalStorageService = AbstractStorageService.extend({ core.serviceRegistry.add('local_storage', LocalStorageService); -return LocalStorageService; - -}); +export default LocalStorageService; diff --git a/addons/web/static/src/legacy/js/services/session.js b/addons/web/static/src/legacy/js/services/session.js index 2ce9feecd44..1f84524b240 100644 --- a/addons/web/static/src/legacy/js/services/session.js +++ b/addons/web/static/src/legacy/js/services/session.js @@ -1,11 +1,8 @@ -odoo.define('web.session', function (require) { -"use strict"; +/** @odoo-module alias=web.session **/ -var Session = require('web.Session'); +import Session from "web.Session"; var session = new Session(undefined, undefined, {use_cors: false}); session.is_bound = session.session_bind(); -return session; - -}); +export default session; diff --git a/addons/web/static/src/legacy/js/services/session_storage_service.js b/addons/web/static/src/legacy/js/services/session_storage_service.js index 41c47af3923..7a061272b87 100644 --- a/addons/web/static/src/legacy/js/services/session_storage_service.js +++ b/addons/web/static/src/legacy/js/services/session_storage_service.js @@ -1,13 +1,12 @@ -odoo.define('web.SessionStorageService', function (require) { -'use strict'; +/** @odoo-module alias=web.SessionStorageService **/ /** * This module defines a service to access the sessionStorage object. */ -var AbstractStorageService = require('web.AbstractStorageService'); -var core = require('web.core'); -var sessionStorage = require('web.sessionStorage'); +import AbstractStorageService from "web.AbstractStorageService"; +import core from "web.core"; +import sessionStorage from "web.sessionStorage"; var SessionStorageService = AbstractStorageService.extend({ storage: sessionStorage, @@ -15,6 +14,4 @@ var SessionStorageService = AbstractStorageService.extend({ core.serviceRegistry.add('session_storage', SessionStorageService); -return SessionStorageService; - -}); +export default SessionStorageService; diff --git a/addons/web/static/src/legacy/js/tools/tools.js b/addons/web/static/src/legacy/js/tools/tools.js index 3df456de877..94e4e35dab7 100644 --- a/addons/web/static/src/legacy/js/tools/tools.js +++ b/addons/web/static/src/legacy/js/tools/tools.js @@ -1,5 +1,4 @@ -odoo.define('web.tools', function (require) { -"use strict"; +/** @odoo-module alias=web.tools **/ /** * Wrapper for deprecated functions that display a warning message. @@ -15,8 +14,6 @@ function deprecated(fn, message) { }; } -return { +export default { deprecated: deprecated, }; - -}); diff --git a/addons/web/static/src/legacy/js/views/basic/basic_model.js b/addons/web/static/src/legacy/js/views/basic/basic_model.js index 53ced035546..b3e90f62bce 100644 --- a/addons/web/static/src/legacy/js/views/basic/basic_model.js +++ b/addons/web/static/src/legacy/js/views/basic/basic_model.js @@ -1,5 +1,4 @@ -odoo.define('web.BasicModel', function (require) { -"use strict"; +/** @odoo-module alias=web.BasicModel **/ /** * Basic Model @@ -83,14 +82,14 @@ odoo.define('web.BasicModel', function (require) { * element, so it can be edited later. */ -var AbstractModel = require('web.AbstractModel'); -var concurrency = require('web.concurrency'); -var Context = require('web.Context'); -var core = require('web.core'); -var Domain = require('web.Domain'); -var session = require('web.session'); -var utils = require('web.utils'); -var viewUtils = require('web.viewUtils'); +import AbstractModel from "web.AbstractModel"; +import concurrency from "web.concurrency"; +import Context from "web.Context"; +import core from "web.core"; +import Domain from "web.Domain"; +import session from "web.session"; +import utils from "web.utils"; +import viewUtils from "web.viewUtils"; var _t = core._t; @@ -5428,5 +5427,4 @@ var BasicModel = AbstractModel.extend({ }, }); -return BasicModel; -}); +export default BasicModel; diff --git a/addons/web/static/src/legacy/js/widgets/colorpicker.js b/addons/web/static/src/legacy/js/widgets/colorpicker.js index 2200e55aac4..ca7e675692b 100644 --- a/addons/web/static/src/legacy/js/widgets/colorpicker.js +++ b/addons/web/static/src/legacy/js/widgets/colorpicker.js @@ -1,10 +1,9 @@ -odoo.define('web.Colorpicker', function (require) { -'use strict'; +/** @odoo-module alias=web.Colorpicker **/ -var core = require('web.core'); -var utils = require('web.utils'); -var Dialog = require('web.Dialog'); -var Widget = require('web.Widget'); +import core from "web.core"; +import utils from "web.utils"; +import Dialog from "web.Dialog"; +import Widget from "web.Widget"; var _t = core._t; @@ -736,8 +735,7 @@ const ColorpickerDialog = Dialog.extend({ }, }); -return { +export default { ColorpickerDialog: ColorpickerDialog, ColorpickerWidget: ColorpickerWidget, }; -}); diff --git a/addons/web/static/src/legacy/js/widgets/date_picker.js b/addons/web/static/src/legacy/js/widgets/date_picker.js index e2cee2f3fcd..b73dee9a6ba 100644 --- a/addons/web/static/src/legacy/js/widgets/date_picker.js +++ b/addons/web/static/src/legacy/js/widgets/date_picker.js @@ -1,10 +1,9 @@ -odoo.define('web.datepicker', function (require) { -"use strict"; +/** @odoo-module alias=web.datepicker **/ -var core = require('web.core'); -var field_utils = require('web.field_utils'); -var time = require('web.time'); -var Widget = require('web.Widget'); +import core from "web.core"; +import field_utils from "web.field_utils"; +import time from "web.time"; +import Widget from "web.Widget"; var _t = core._t; @@ -350,9 +349,7 @@ var DateTimeWidget = DateWidget.extend({ }, }); -return { +export default { DateWidget: DateWidget, DateTimeWidget: DateTimeWidget, }; - -}); diff --git a/addons/web/static/src/legacy/js/widgets/domain_selector.js b/addons/web/static/src/legacy/js/widgets/domain_selector.js index 6c4abf4ff36..ac9e33fc58b 100644 --- a/addons/web/static/src/legacy/js/widgets/domain_selector.js +++ b/addons/web/static/src/legacy/js/widgets/domain_selector.js @@ -1,13 +1,12 @@ -odoo.define("web.DomainSelector", function (require) { -"use strict"; +/** @odoo-module alias=web.DomainSelector **/ -var core = require("web.core"); -var datepicker = require("web.datepicker"); -var dom = require('web.dom'); -var Domain = require("web.Domain"); -var field_utils = require("web.field_utils"); -var ModelFieldSelector = require("web.ModelFieldSelector"); -var Widget = require("web.Widget"); +import core from "web.core"; +import datepicker from "web.datepicker"; +import dom from "web.dom"; +import Domain from "web.Domain"; +import field_utils from "web.field_utils"; +import ModelFieldSelector from "web.ModelFieldSelector"; +import Widget from "web.Widget"; var _t = core._t; var _lt = core._lt; @@ -1013,5 +1012,4 @@ function instantiateNode(parent, model, domain, options) { return null; } -return DomainSelector; -}); +export default DomainSelector; diff --git a/addons/web/static/src/legacy/js/widgets/domain_selector_dialog.js b/addons/web/static/src/legacy/js/widgets/domain_selector_dialog.js index eb7a2bc396b..a6d453351c1 100644 --- a/addons/web/static/src/legacy/js/widgets/domain_selector_dialog.js +++ b/addons/web/static/src/legacy/js/widgets/domain_selector_dialog.js @@ -1,17 +1,16 @@ -odoo.define("web.DomainSelectorDialog", function (require) { -"use strict"; +/** @odoo-module alias=web.DomainSelectorDialog **/ -var core = require("web.core"); -var Dialog = require("web.Dialog"); -var Domain = require("web.Domain"); -var DomainSelector = require("web.DomainSelector"); +import core from "web.core"; +import Dialog from "web.Dialog"; +import Domain from "web.Domain"; +import DomainSelector from "web.DomainSelector"; var _t = core._t; /** * @class DomainSelectorDialog */ -return Dialog.extend({ +export default Dialog.extend({ custom_events: _.extend({}, Dialog.prototype.custom_events, { domain_changed: "_onDomainChange", }), @@ -66,4 +65,3 @@ return Dialog.extend({ this.newDomain = ev.data.domain; }, }); -}); diff --git a/addons/web/static/src/legacy/js/widgets/model_field_selector.js b/addons/web/static/src/legacy/js/widgets/model_field_selector.js index 11cc2101383..5719a8d167c 100644 --- a/addons/web/static/src/legacy/js/widgets/model_field_selector.js +++ b/addons/web/static/src/legacy/js/widgets/model_field_selector.js @@ -1,9 +1,8 @@ -odoo.define("web.ModelFieldSelector", function (require) { -"use strict"; +/** @odoo-module alias=web.ModelFieldSelector **/ -var core = require("web.core"); -var Widget = require("web.Widget"); -var ModelFieldSelectorPopover = require("web.ModelFieldSelectorPopover"); +import core from "web.core"; +import Widget from "web.Widget"; +import ModelFieldSelectorPopover from "web.ModelFieldSelectorPopover"; /** * The ModelFieldSelector widget can be used to display/select a particular @@ -175,5 +174,4 @@ var ModelFieldSelector = Widget.extend({ }, }); -return ModelFieldSelector; -}); +export default ModelFieldSelector; diff --git a/addons/web/static/src/legacy/js/widgets/model_field_selector_popover.js b/addons/web/static/src/legacy/js/widgets/model_field_selector_popover.js index 23b30ef9c63..3b71d1890e2 100644 --- a/addons/web/static/src/legacy/js/widgets/model_field_selector_popover.js +++ b/addons/web/static/src/legacy/js/widgets/model_field_selector_popover.js @@ -1,9 +1,8 @@ -odoo.define("web.ModelFieldSelectorPopover", function (require) { -"use strict"; +/** @odoo-module alias=web.ModelFieldSelectorPopover **/ -var core = require("web.core"); -var Widget = require("web.Widget"); -const { fuzzyLookup } = require('@web/core/utils/search'); +import core from "web.core"; +import Widget from "web.Widget"; +import { fuzzyLookup } from "@web/core/utils/search"; var _t = core._t; @@ -702,7 +701,7 @@ var ModelFieldSelectorPopover = Widget.extend({ } }); -return ModelFieldSelectorPopover; +export default ModelFieldSelectorPopover; /** * Allows to transform a mapping field name -> field info in an array of the @@ -729,4 +728,3 @@ function sortFields(fields, model, order) { }, p[1]); }).value(); } -}); diff --git a/addons/web/static/src/legacy/js/widgets/name_and_signature.js b/addons/web/static/src/legacy/js/widgets/name_and_signature.js index 78cd845999b..d611aae55a3 100644 --- a/addons/web/static/src/legacy/js/widgets/name_and_signature.js +++ b/addons/web/static/src/legacy/js/widgets/name_and_signature.js @@ -1,10 +1,9 @@ -odoo.define('web.name_and_signature', function (require) { -'use strict'; +/** @odoo-module alias=web.name_and_signature **/ -var core = require('web.core'); -var config = require('web.config'); -var utils = require('web.utils'); -var Widget = require('web.Widget'); +import core from "web.core"; +import config from "web.config"; +import utils from "web.utils"; +import Widget from "web.Widget"; /** @@ -681,7 +680,6 @@ var NameAndSignature = Widget.extend({ }, }); -return { +export default { NameAndSignature: NameAndSignature, }; -}); diff --git a/addons/web/static/src/legacy/legacy_setup.js b/addons/web/static/src/legacy/legacy_setup.js index 4b310f10cd6..cb7333a236f 100644 --- a/addons/web/static/src/legacy/legacy_setup.js +++ b/addons/web/static/src/legacy/legacy_setup.js @@ -13,7 +13,7 @@ import { makeLegacyActionManagerService } from "./backend_utils"; import * as AbstractService from "web.AbstractService"; import legacyEnv from "web.env"; import * as session from "web.session"; -import * as makeLegacyWebClientService from "web.pseudo_web_client"; +import makeLegacyWebClientService from "web.pseudo_web_client"; import { templates } from "@web/core/assets"; import { Component, whenReady } from "@odoo/owl"; diff --git a/addons/web/static/src/legacy/pseudo_web_client.js b/addons/web/static/src/legacy/pseudo_web_client.js new file mode 100644 index 00000000000..e7003b8f140 --- /dev/null +++ b/addons/web/static/src/legacy/pseudo_web_client.js @@ -0,0 +1,32 @@ +/** @odoo-module alias=web.pseudo_web_client **/ +import FakeWebClient from "web.web_client"; + +function makeLegacyWebClientService(legacyEnv) { + const legacyPseudoWebClient = { + dependencies: ["title", "router"], + start(env) { + function setTitlePart(part, title = null) { + env.services.title.setParts({ [part]: title }); + } + legacyEnv.bus.on("set_title_part", null, (params) => { + const { part, title } = params; + setTitlePart(part, title || null); + }); + Object.assign(FakeWebClient, { + do_push_state(state) { + if ("title" in state) { + setTitlePart("action", state.title); + delete state.title; + } + env.services.router.pushState(state); + }, + set_title(title) { + setTitlePart("action", title); + }, + }); + }, + }; + return legacyPseudoWebClient; +} + +export default makeLegacyWebClientService; diff --git a/addons/web/static/src/legacy/root_widget.js b/addons/web/static/src/legacy/root_widget.js index 6a89449de8f..56d286b99da 100644 --- a/addons/web/static/src/legacy/root_widget.js +++ b/addons/web/static/src/legacy/root_widget.js @@ -1,13 +1,12 @@ +/** @odoo-module alias=root.widget **/ /** * This module exists so that web_tour can use it as the parent of the * TourManager so it can get access to _trigger_up. */ -odoo.define("root.widget", function (require) { - // need to wait for owl.Component.env to be set by web.legacySetup - require("web.legacySetup"); - const { ComponentAdapter } = require("web.OwlCompatibility"); - // for its method _trigger_up. We can't use a standalone adapter because it - // attempt to call env.isDebug which is not defined in the tests when this - // module is loaded. - return new ComponentAdapter({ Component: owl.Component }, owl.Component.env); -}); +// need to wait for owl.Component.env to be set by web.legacySetup +import "web.legacySetup"; +import { ComponentAdapter } from "web.OwlCompatibility"; +// for its method _trigger_up. We can't use a standalone adapter because it +// attempt to call env.isDebug which is not defined in the tests when this +// module is loaded. +export default new ComponentAdapter({ Component: owl.Component }, owl.Component.env); diff --git a/addons/web/static/src/legacy/web_client.js b/addons/web/static/src/legacy/web_client.js index 99751e7863b..0c37f16b749 100644 --- a/addons/web/static/src/legacy/web_client.js +++ b/addons/web/static/src/legacy/web_client.js @@ -1,37 +1,2 @@ -odoo.define("web.web_client", function () { - return {}; -}); - -odoo.define("web.pseudo_web_client", function (require) { - const FakeWebClient = require("web.web_client"); - - function makeLegacyWebClientService(legacyEnv) { - const legacyPseudoWebClient = { - dependencies: ["title", "router"], - start(env) { - function setTitlePart(part, title = null) { - env.services.title.setParts({ [part]: title }); - } - legacyEnv.bus.on("set_title_part", null, (params) => { - const { part, title } = params; - setTitlePart(part, title || null); - }); - Object.assign(FakeWebClient, { - do_push_state(state) { - if ("title" in state) { - setTitlePart("action", state.title); - delete state.title; - } - env.services.router.pushState(state); - }, - set_title(title) { - setTitlePart("action", title); - }, - }); - }, - }; - return legacyPseudoWebClient; - } - - return makeLegacyWebClientService; -}); +/** @odoo-module alias=web.web_client **/ +export default {}; diff --git a/addons/web/static/tests/helpers/legacy.js b/addons/web/static/tests/helpers/legacy.js index 1773298471e..aed6b798af1 100644 --- a/addons/web/static/tests/helpers/legacy.js +++ b/addons/web/static/tests/helpers/legacy.js @@ -1,27 +1,3 @@ -odoo.define("web.SessionOverrideForTests", (require) => { - // Override the Session.session_reload function - // The wowl test infrastructure does set a correct odoo global value before each test - // while the session is built only once for all tests. - // So if a test does a session_reload, it will merge the odoo global of that test - // into the session, and will alter every subsequent test of the suite. - // Obviously, we don't want that, ever. - const { session: sessionInfo } = require("@web/session"); - const initialSessionInfo = Object.assign({}, sessionInfo); - const Session = require("web.Session"); - const { patch } = require("@web/core/utils/patch"); - patch(Session.prototype, "web.SessionTestPatch", { - async session_reload() { - for (const key in sessionInfo) { - delete sessionInfo[key]; - } - for (const key in initialSessionInfo) { - sessionInfo[key] = initialSessionInfo[key]; - } - return await this._super(...arguments); - }, - }); -}); - odoo.define("web.test_legacy", async (require) => { require("web.SessionOverrideForTests"); require("web.test_utils"); diff --git a/addons/web/static/tests/helpers/session.js b/addons/web/static/tests/helpers/session.js new file mode 100644 index 00000000000..984a7b77026 --- /dev/null +++ b/addons/web/static/tests/helpers/session.js @@ -0,0 +1,24 @@ +/** @odoo-module alias=web.SessionOverrideForTests **/ + +// Override the Session.session_reload function +// The wowl test infrastructure does set a correct odoo global value before each test +// while the session is built only once for all tests. +// So if a test does a session_reload, it will merge the odoo global of that test +// into the session, and will alter every subsequent test of the suite. +// Obviously, we don't want that, ever. +import { session as sessionInfo } from "@web/session"; +const initialSessionInfo = Object.assign({}, sessionInfo); +import Session from "web.Session"; +import { patch } from "@web/core/utils/patch"; + +patch(Session.prototype, "web.SessionTestPatch", { + async session_reload() { + for (const key in sessionInfo) { + delete sessionInfo[key]; + } + for (const key in initialSessionInfo) { + sessionInfo[key] = initialSessionInfo[key]; + } + return await this._super(...arguments); + }, +}); diff --git a/addons/web/static/tests/legacy/component_extension_tests.js b/addons/web/static/tests/legacy/component_extension_tests.js index 0fdf1587298..d025cb3415b 100644 --- a/addons/web/static/tests/legacy/component_extension_tests.js +++ b/addons/web/static/tests/legacy/component_extension_tests.js @@ -1,13 +1,12 @@ -odoo.define('web.component_extension_tests', function (require) { - "use strict"; - - const makeTestEnvironment = require("web.test_env"); - const testUtils = require("web.test_utils"); - const { destroy, getFixture, mount } = require("@web/../tests/helpers/utils"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module **/ + + import makeTestEnvironment from "web.test_env"; + import testUtils from "web.test_utils"; + import { destroy, getFixture, mount } from "@web/../tests/helpers/utils"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { xml } = owl; - const { useListener } = require("@web/core/utils/hooks"); + import { useListener } from "@web/core/utils/hooks"; let target; QUnit.module("web", { beforeEach() { target = getFixture(); }}, function () { @@ -237,4 +236,3 @@ odoo.define('web.component_extension_tests', function (require) { assert.verifySteps(['Root custom1', 'Leaf custom1']); }); }); -}); diff --git a/addons/web/static/tests/legacy/components/action_menus_tests.js b/addons/web/static/tests/legacy/components/action_menus_tests.js index ef92bc76249..cbbf59f5e30 100644 --- a/addons/web/static/tests/legacy/components/action_menus_tests.js +++ b/addons/web/static/tests/legacy/components/action_menus_tests.js @@ -1,9 +1,8 @@ -odoo.define('web.action_menus_tests', function (require) { - "use strict"; - - const ActionMenus = require('web.ActionMenus'); - const Registry = require('web.Registry'); - const testUtils = require('web.test_utils'); +/** @odoo-module **/ + + import ActionMenus from "web.ActionMenus"; + import Registry from "web.Registry"; + import testUtils from "web.test_utils"; const { Component } = owl; const { createComponent } = testUtils; @@ -261,4 +260,3 @@ odoo.define('web.action_menus_tests', function (require) { await testUtils.controlPanel.toggleMenuItem(actionMenus, "What's taters, precious ?"); }); }); -}); diff --git a/addons/web/static/tests/legacy/components/custom_file_input_tests.js b/addons/web/static/tests/legacy/components/custom_file_input_tests.js index 19b6701b150..75f7a917730 100644 --- a/addons/web/static/tests/legacy/components/custom_file_input_tests.js +++ b/addons/web/static/tests/legacy/components/custom_file_input_tests.js @@ -1,8 +1,7 @@ -odoo.define('web.custom_file_input_tests', function (require) { - "use strict"; - - const CustomFileInput = require('web.CustomFileInput'); - const testUtils = require('web.test_utils'); +/** @odoo-module **/ + + import CustomFileInput from "web.CustomFileInput"; + import testUtils from "web.test_utils"; const { createComponent } = testUtils; @@ -83,4 +82,3 @@ odoo.define('web.custom_file_input_tests', function (require) { assert.verifySteps(['/web/binary/upload_attachment']); }); }); -}); diff --git a/addons/web/static/tests/legacy/components/datepicker_tests.js b/addons/web/static/tests/legacy/components/datepicker_tests.js index aead623c7b9..3c0f0bee8d4 100644 --- a/addons/web/static/tests/legacy/components/datepicker_tests.js +++ b/addons/web/static/tests/legacy/components/datepicker_tests.js @@ -1,9 +1,8 @@ -odoo.define('web.datepicker_tests', function (require) { - "use strict"; - - const { DatePicker, DateTimePicker } = require('web.DatePickerOwl'); - const testUtils = require('web.test_utils'); - const time = require('web.time'); +/** @odoo-module **/ + + import { DatePicker, DateTimePicker } from "web.DatePickerOwl"; + import testUtils from "web.test_utils"; + import time from "web.time"; const { createComponent } = testUtils; @@ -330,4 +329,3 @@ odoo.define('web.datepicker_tests', function (require) { testUtils.mock.unpatch(time); }); }); -}); diff --git a/addons/web/static/tests/legacy/components/dropdown_menu_mobile_tests.js b/addons/web/static/tests/legacy/components/dropdown_menu_mobile_tests.js index 584e5474b21..bffb3a257f0 100644 --- a/addons/web/static/tests/legacy/components/dropdown_menu_mobile_tests.js +++ b/addons/web/static/tests/legacy/components/dropdown_menu_mobile_tests.js @@ -1,8 +1,7 @@ -odoo.define('web.dropdown_menu_mobile_tests', function (require) { - "use strict"; - - const DropdownMenu = require('web.DropdownMenu'); - const testUtils = require('web.test_utils'); +/** @odoo-module **/ + + import DropdownMenu from "web.DropdownMenu"; + import testUtils from "web.test_utils"; const { createComponent } = testUtils; @@ -65,4 +64,3 @@ odoo.define('web.dropdown_menu_mobile_tests', function (require) { }); }); -}); diff --git a/addons/web/static/tests/legacy/components/dropdown_menu_tests.js b/addons/web/static/tests/legacy/components/dropdown_menu_tests.js index 1991165322a..69b4b251cbd 100644 --- a/addons/web/static/tests/legacy/components/dropdown_menu_tests.js +++ b/addons/web/static/tests/legacy/components/dropdown_menu_tests.js @@ -1,11 +1,10 @@ -odoo.define('web.dropdown_menu_tests', function (require) { - "use strict"; - - const DropdownMenu = require('web.DropdownMenu'); - const testUtils = require('web.test_utils'); - const makeTestEnvironment = require("web.test_env"); - const { mount } = require("@web/../tests/helpers/utils"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module **/ + + import DropdownMenu from "web.DropdownMenu"; + import testUtils from "web.test_utils"; + import makeTestEnvironment from "web.test_env"; + import { mount } from "@web/../tests/helpers/utils"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { useState, xml } = owl; const { createComponent } = testUtils; @@ -427,4 +426,3 @@ odoo.define('web.dropdown_menu_tests', function (require) { assert.hasClass(firstItemEl.querySelector("i"), "o_icon_right fa fa-caret-down"); }); }); -}); diff --git a/addons/web/static/tests/legacy/components/pager_tests.js b/addons/web/static/tests/legacy/components/pager_tests.js index 16344684fd4..84726aa1f23 100644 --- a/addons/web/static/tests/legacy/components/pager_tests.js +++ b/addons/web/static/tests/legacy/components/pager_tests.js @@ -1,9 +1,8 @@ -odoo.define('web.pager_tests', function (require) { - "use strict"; - - const Pager = require('web.Pager'); - const testUtils = require('web.test_utils'); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module **/ + + import Pager from "web.Pager"; + import testUtils from "web.test_utils"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { createComponent } = testUtils; @@ -185,4 +184,3 @@ odoo.define('web.pager_tests', function (require) { "pager edition is re-enabled"); }); }); -}); diff --git a/addons/web/static/tests/legacy/control_panel/comparison_menu_tests.js b/addons/web/static/tests/legacy/control_panel/comparison_menu_tests.js index d6754f4da02..6c4887e7c67 100644 --- a/addons/web/static/tests/legacy/control_panel/comparison_menu_tests.js +++ b/addons/web/static/tests/legacy/control_panel/comparison_menu_tests.js @@ -1,13 +1,12 @@ -odoo.define('web.comparison_menu_tests', function (require) { - "use strict"; - - const { browser } = require('@web/core/browser/browser'); - const { patchWithCleanup } = require('@web/../tests/helpers/utils'); - const cpHelpers = require('@web/../tests/search/helpers'); - const { +/** @odoo-module **/ + + import { browser } from "@web/core/browser/browser"; + import { patchWithCleanup } from "@web/../tests/helpers/utils"; + import * as cpHelpers from "@web/../tests/search/helpers"; + import { createControlPanel, mock, - } = require('web.test_utils'); + } from "web.test_utils"; const { patchDate } = mock; const searchMenuTypes = ['filter', 'comparison']; @@ -166,4 +165,3 @@ odoo.define('web.comparison_menu_tests', function (require) { assert.notOk("timeRanges" in controlPanel.getQuery()); }); }); -}); diff --git a/addons/web/static/tests/legacy/control_panel/control_panel_model_extension_tests.js b/addons/web/static/tests/legacy/control_panel/control_panel_model_extension_tests.js index e4641e67b5d..3487f2e31f3 100644 --- a/addons/web/static/tests/legacy/control_panel/control_panel_model_extension_tests.js +++ b/addons/web/static/tests/legacy/control_panel/control_panel_model_extension_tests.js @@ -1,8 +1,7 @@ -odoo.define("web/static/tests/control_panel/control_panel_model_extension_tests.js", function (require) { - "use strict"; - - const ActionModel = require("web.ActionModel"); - const makeTestEnvironment = require('web.test_env'); +/** @odoo-module **/ + + import ActionModel from "web.ActionModel"; + import makeTestEnvironment from "web.test_env"; function createModel(params = {}) { const archs = (params.arch && { search: params.arch, }) || {}; @@ -455,4 +454,3 @@ odoo.define("web/static/tests/control_panel/control_panel_model_extension_tests. }); }); -}); diff --git a/addons/web/static/tests/legacy/control_panel/control_panel_tests.js b/addons/web/static/tests/legacy/control_panel/control_panel_tests.js index 5b23b597743..c916a52728e 100644 --- a/addons/web/static/tests/legacy/control_panel/control_panel_tests.js +++ b/addons/web/static/tests/legacy/control_panel/control_panel_tests.js @@ -1,9 +1,8 @@ -odoo.define('web.control_panel_tests', function (require) { - "use strict"; +/** @odoo-module **/ + + import testUtils from "web.test_utils"; - const testUtils = require('web.test_utils'); - - const cpHelpers = require('@web/../tests/search/helpers'); + import * as cpHelpers from "@web/../tests/search/helpers"; const { createControlPanel } = testUtils; QUnit.module('ControlPanel', { @@ -304,4 +303,3 @@ odoo.define('web.control_panel_tests', function (require) { }); }); -}); diff --git a/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js b/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js index e51a968b6dc..2372d2d1eb8 100644 --- a/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js +++ b/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js @@ -1,14 +1,13 @@ -odoo.define('web.filter_menu_generator_tests', function (require) { - "use strict"; +/** @odoo-module **/ + + import Domain from "web.Domain"; + import CustomFilterItem from "web.CustomFilterItem"; + import ActionModel from "web.ActionModel"; + import pyUtils from "web.py_utils"; + import testUtils from "web.test_utils"; - const Domain = require('web.Domain'); - const CustomFilterItem = require('web.CustomFilterItem'); - const ActionModel = require('web.ActionModel'); - const pyUtils = require('web.py_utils'); - const testUtils = require('web.test_utils'); - - const { getFixture } = require('@web/../tests/helpers/utils'); - const cpHelpers = require('@web/../tests/search/helpers'); + import { getFixture } from "@web/../tests/helpers/utils"; + import * as cpHelpers from "@web/../tests/search/helpers"; const { createComponent } = testUtils; const toggleAddCustomFilterStandalone = async (el) => { @@ -621,4 +620,3 @@ odoo.define('web.filter_menu_generator_tests', function (require) { await cpHelpers.applyFilter(target); }); }); -}); diff --git a/addons/web/static/tests/legacy/control_panel/filter_menu_tests.js b/addons/web/static/tests/legacy/control_panel/filter_menu_tests.js index 56c86eb8403..1b674d7ad6f 100644 --- a/addons/web/static/tests/legacy/control_panel/filter_menu_tests.js +++ b/addons/web/static/tests/legacy/control_panel/filter_menu_tests.js @@ -1,11 +1,10 @@ -odoo.define('web.filter_menu_tests', function (require) { - "use strict"; +/** @odoo-module **/ + + import { browser } from "@web/core/browser/browser"; + import { patchWithCleanup } from "@web/../tests/helpers/utils"; + import testUtils from "web.test_utils"; - const { browser } = require('@web/core/browser/browser'); - const { patchWithCleanup } = require('@web/../tests/helpers/utils'); - const testUtils = require('web.test_utils'); - - const cpHelpers = require('@web/../tests/search/helpers'); + import * as cpHelpers from "@web/../tests/search/helpers"; const { createControlPanel, mock } = testUtils; const { patchDate } = mock; @@ -484,4 +483,3 @@ odoo.define('web.filter_menu_tests', function (require) { }); }); }); -}); diff --git a/addons/web/static/tests/legacy/control_panel/groupby_menu_tests.js b/addons/web/static/tests/legacy/control_panel/groupby_menu_tests.js index eed7b1423a7..bd407fea3db 100644 --- a/addons/web/static/tests/legacy/control_panel/groupby_menu_tests.js +++ b/addons/web/static/tests/legacy/control_panel/groupby_menu_tests.js @@ -1,11 +1,10 @@ -odoo.define('web.groupby_menu_tests', function (require) { - "use strict"; +/** @odoo-module **/ + + import { browser } from "@web/core/browser/browser"; + import { patchWithCleanup } from "@web/../tests/helpers/utils"; + import testUtils from "web.test_utils"; - const { browser } = require('@web/core/browser/browser'); - const { patchWithCleanup } = require('@web/../tests/helpers/utils'); - const testUtils = require('web.test_utils'); - - const cpHelpers = require('@web/../tests/search/helpers'); + import * as cpHelpers from "@web/../tests/search/helpers"; const { createControlPanel } = testUtils; const searchMenuTypes = ['groupBy']; @@ -469,4 +468,3 @@ odoo.define('web.groupby_menu_tests', function (require) { assert.deepEqual(cpHelpers.getFacetTexts(controlPanel), []); }); }); -}); diff --git a/addons/web/static/tests/legacy/control_panel/search_utils_tests.js b/addons/web/static/tests/legacy/control_panel/search_utils_tests.js index 5277f53c5c4..8f82a0553e6 100644 --- a/addons/web/static/tests/legacy/control_panel/search_utils_tests.js +++ b/addons/web/static/tests/legacy/control_panel/search_utils_tests.js @@ -1,14 +1,13 @@ -odoo.define('web.search_utils_tests', function (require) { - "use strict"; - - const { constructDateDomain } = require('web.searchUtils'); - const testUtils = require('web.test_utils'); - const { registry } = require("@web/core/registry"); - const { translatedTerms } = require("@web/core/l10n/translation"); - const { patchWithCleanup } = require("@web/../tests/helpers/utils"); - const { makeTestEnv } = require("@web/../tests/helpers/mock_env"); - const { makeFakeLocalizationService } = require("@web/../tests/helpers/mock_services"); - const { _t } = require('web.core'); +/** @odoo-module **/ + + import { constructDateDomain } from "web.searchUtils"; + import testUtils from "web.test_utils"; + import { registry } from "@web/core/registry"; + import { translatedTerms } from "@web/core/l10n/translation"; + import { patchWithCleanup } from "@web/../tests/helpers/utils"; + import { makeTestEnv } from "@web/../tests/helpers/mock_env"; + import { makeFakeLocalizationService } from "@web/../tests/helpers/mock_services"; + import { _t } from "web.core"; const patchDate = testUtils.mock.patchDate; @@ -366,4 +365,3 @@ odoo.define('web.search_utils_tests', function (require) { unpatchDate(); }); }); -}); diff --git a/addons/web/static/tests/legacy/core/class_tests.js b/addons/web/static/tests/legacy/core/class_tests.js index 438b137e6a1..9a2ad898963 100644 --- a/addons/web/static/tests/legacy/core/class_tests.js +++ b/addons/web/static/tests/legacy/core/class_tests.js @@ -1,7 +1,6 @@ -odoo.define('web.class_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var Class = require('web.Class'); +import Class from "web.Class"; QUnit.module('core', {}, function () { @@ -164,5 +163,3 @@ QUnit.module('core', {}, function () { }); - -}); diff --git a/addons/web/static/tests/legacy/core/concurrency_tests.js b/addons/web/static/tests/legacy/core/concurrency_tests.js index e88ae4b6eba..7b1b24bad4f 100644 --- a/addons/web/static/tests/legacy/core/concurrency_tests.js +++ b/addons/web/static/tests/legacy/core/concurrency_tests.js @@ -1,8 +1,7 @@ -odoo.define('web.concurrency_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var concurrency = require('web.concurrency'); -var testUtils = require('web.test_utils'); +import concurrency from "web.concurrency"; +import testUtils from "web.test_utils"; var makeTestPromise = testUtils.makeTestPromise; var makeTestPromiseWithAssert = testUtils.makeTestPromiseWithAssert; @@ -588,5 +587,3 @@ QUnit.module('core', {}, function () { }); }); - -}); diff --git a/addons/web/static/tests/legacy/core/dialog_tests.js b/addons/web/static/tests/legacy/core/dialog_tests.js index d52b0494781..0696719b02b 100644 --- a/addons/web/static/tests/legacy/core/dialog_tests.js +++ b/addons/web/static/tests/legacy/core/dialog_tests.js @@ -1,9 +1,8 @@ -odoo.define('web.dialog_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var Dialog = require('web.Dialog'); -var testUtils = require('web.test_utils'); -var Widget = require('web.Widget'); +import Dialog from "web.Dialog"; +import testUtils from "web.test_utils"; +import Widget from "web.Widget"; var ESCAPE_KEY = $.Event("keyup", { which: 27 }); @@ -322,5 +321,3 @@ QUnit.module('core', {}, function () { assert.containsNone(document.body, ".modal[role='dialog']"); }); }); - -}); diff --git a/addons/web/static/tests/legacy/core/dom_tests.js b/addons/web/static/tests/legacy/core/dom_tests.js index c57ced52099..9d5d3048505 100644 --- a/addons/web/static/tests/legacy/core/dom_tests.js +++ b/addons/web/static/tests/legacy/core/dom_tests.js @@ -1,8 +1,7 @@ -odoo.define('web.dom_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var dom = require('web.dom'); -var testUtils = require('web.test_utils'); +import dom from "web.dom"; +import testUtils from "web.test_utils"; /** * Create an autoresize text area with 'border-box' as box sizing rule. @@ -130,4 +129,3 @@ QUnit.module('dom', {}, function () { }); }); -}); diff --git a/addons/web/static/tests/legacy/core/domain_tests.js b/addons/web/static/tests/legacy/core/domain_tests.js index 827b880eccf..8f6ec255b5d 100644 --- a/addons/web/static/tests/legacy/core/domain_tests.js +++ b/addons/web/static/tests/legacy/core/domain_tests.js @@ -1,7 +1,6 @@ -odoo.define('web.domain_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var Domain = require('web.Domain'); +import Domain from "web.Domain"; QUnit.module('core', {}, function () { @@ -196,4 +195,3 @@ QUnit.module('core', {}, function () { assert.notOk(new Domain([['a', '=ilike', '%value']]).compute({ a: false })); }); }); -}); diff --git a/addons/web/static/tests/legacy/core/mixins_tests.js b/addons/web/static/tests/legacy/core/mixins_tests.js index dbc639120f7..9061dc13b99 100644 --- a/addons/web/static/tests/legacy/core/mixins_tests.js +++ b/addons/web/static/tests/legacy/core/mixins_tests.js @@ -1,16 +1,15 @@ -odoo.define('web.mixins_tests', function (require) { -"use strict"; +/** @odoo-module **/ -const AbstractAction = require("web.AbstractAction"); -const core = require("web.core"); -var testUtils = require('web.test_utils'); -var Widget = require('web.Widget'); +import AbstractAction from "web.AbstractAction"; +import core from "web.core"; +import testUtils from "web.test_utils"; +import Widget from "web.Widget"; -const { dialogService } = require('@web/core/dialog/dialog_service'); -const { errorService } = require("@web/core/errors/error_service"); -const { registry } = require('@web/core/registry'); -const { getFixture, nextTick, patchWithCleanup } = require('@web/../tests/helpers/utils'); -const { createWebClient, doAction } = require('@web/../tests/webclient/helpers'); +import { dialogService } from "@web/core/dialog/dialog_service"; +import { errorService } from "@web/core/errors/error_service"; +import { registry } from "@web/core/registry"; +import { getFixture, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; +import { createWebClient, doAction } from "@web/../tests/webclient/helpers"; QUnit.module('core', {}, function () { @@ -73,6 +72,3 @@ QUnit.module('core', {}, function () { assert.containsOnce(target, ".o_dialog"); }); }); - -}); - diff --git a/addons/web/static/tests/legacy/core/owl_dialog_tests.js b/addons/web/static/tests/legacy/core/owl_dialog_tests.js index 83a51f01360..13ee3a37beb 100644 --- a/addons/web/static/tests/legacy/core/owl_dialog_tests.js +++ b/addons/web/static/tests/legacy/core/owl_dialog_tests.js @@ -1,21 +1,20 @@ -odoo.define('web.owl_dialog_tests', function (require) { - "use strict"; +/** @odoo-module **/ + + import LegacyDialog from "web.Dialog"; + import makeTestEnvironment from "web.test_env"; + import Dialog from "web.OwlDialog"; + import testUtils from "web.test_utils"; - const LegacyDialog = require('web.Dialog'); - const makeTestEnvironment = require('web.test_env'); - const Dialog = require('web.OwlDialog'); - const testUtils = require('web.test_utils'); - - const { makeLegacyDialogMappingTestEnv } = require('@web/../tests/helpers/legacy_env_utils'); - const { Dialog: WowlDialog } = require("@web/core/dialog/dialog"); - const { WithEnv } = require("@web/core/utils/components"); - const { + import { makeLegacyDialogMappingTestEnv } from "@web/../tests/helpers/legacy_env_utils"; + import { Dialog as WowlDialog } from "@web/core/dialog/dialog"; + import { WithEnv } from "@web/core/utils/components"; + import { getFixture, nextTick, mount, destroy, - } = require("@web/../tests/helpers/utils"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); + } from "@web/../tests/helpers/utils"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { Component, useState, xml } = owl; const EscapeKey = { key: 'Escape', keyCode: 27, which: 27 }; @@ -413,4 +412,3 @@ odoo.define('web.owl_dialog_tests', function (require) { destroy(parent2); }); }); -}); diff --git a/addons/web/static/tests/legacy/core/patch_tests.js b/addons/web/static/tests/legacy/core/patch_tests.js index ee6c579cbc5..13b6405e319 100644 --- a/addons/web/static/tests/legacy/core/patch_tests.js +++ b/addons/web/static/tests/legacy/core/patch_tests.js @@ -1,7 +1,6 @@ -odoo.define("web.patch_tests", function (require) { -"use strict"; +/** @odoo-module **/ -const { AlreadyDefinedPatchError, patch, unpatch, UnknownPatchError } = require('web.utils'); +import { AlreadyDefinedPatchError, patch, unpatch, UnknownPatchError } from "web.utils"; function makeBaseClass(assert, assertInSetup) { class BaseClass { @@ -1213,4 +1212,3 @@ QUnit.module('core', {}, function () { }); }); }); -}); diff --git a/addons/web/static/tests/legacy/core/popover_tests.js b/addons/web/static/tests/legacy/core/popover_tests.js index 8cc68369908..26e58d90728 100644 --- a/addons/web/static/tests/legacy/core/popover_tests.js +++ b/addons/web/static/tests/legacy/core/popover_tests.js @@ -1,11 +1,10 @@ -odoo.define('web.popover_tests', function (require) { - 'use strict'; - - const makeTestEnvironment = require('web.test_env'); - const Popover = require('web.Popover'); - const testUtils = require('web.test_utils'); - const { click, mount } = require("@web/../tests/helpers/utils"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); +/** @odoo-module **/ + + import makeTestEnvironment from "web.test_env"; + import Popover from "web.Popover"; + import testUtils from "web.test_utils"; + import { click, mount } from "@web/../tests/helpers/utils"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { useState, xml } = owl; @@ -268,4 +267,3 @@ odoo.define('web.popover_tests', function (require) { assert.containsNone(body, '#close'); }); }); -}); diff --git a/addons/web/static/tests/legacy/core/py_utils_tests.js b/addons/web/static/tests/legacy/core/py_utils_tests.js index 6ef40ca4462..4fe4a729ca3 100644 --- a/addons/web/static/tests/legacy/core/py_utils_tests.js +++ b/addons/web/static/tests/legacy/core/py_utils_tests.js @@ -1,9 +1,8 @@ -odoo.define('web.py_utils_tests', function(require) { -"use strict"; +/** @odoo-module **/ -var Context = require('web.Context'); -var pyUtils = require('web.py_utils'); -var time = require('web.time'); +import Context from "web.Context"; +import pyUtils from "web.py_utils"; +import time from "web.time"; const r = String.raw; @@ -1403,4 +1402,3 @@ QUnit.module('core', function () { ); }); }); -}); diff --git a/addons/web/static/tests/legacy/core/registry_tests.js b/addons/web/static/tests/legacy/core/registry_tests.js index eb3389a4383..51fe074bc9f 100644 --- a/addons/web/static/tests/legacy/core/registry_tests.js +++ b/addons/web/static/tests/legacy/core/registry_tests.js @@ -1,7 +1,6 @@ -odoo.define('web.registry_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var Registry = require('web.Registry'); +import Registry from "web.Registry"; QUnit.module('core', {}, function () { @@ -86,5 +85,3 @@ QUnit.module('core', {}, function () { assert.verifySteps(["age"]); }); }); - -}); diff --git a/addons/web/static/tests/legacy/core/rpc_tests.js b/addons/web/static/tests/legacy/core/rpc_tests.js index 06763e38f0d..25f71a1677a 100644 --- a/addons/web/static/tests/legacy/core/rpc_tests.js +++ b/addons/web/static/tests/legacy/core/rpc_tests.js @@ -1,7 +1,6 @@ -odoo.define('web.rpc_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var rpc = require('web.rpc'); +import rpc from "web.rpc"; QUnit.module('core', {}, function () { @@ -312,5 +311,3 @@ QUnit.module('core', {}, function () { assert.deepEqual(query.params.sort, undefined, "should not enforce a default value for order"); }); }); - -}); diff --git a/addons/web/static/tests/legacy/core/time_tests.js b/addons/web/static/tests/legacy/core/time_tests.js index 54b8ccae825..c04afb3c430 100644 --- a/addons/web/static/tests/legacy/core/time_tests.js +++ b/addons/web/static/tests/legacy/core/time_tests.js @@ -1,8 +1,7 @@ -odoo.define('web.time_tests', function (require) { -"use strict"; +/** @odoo-module **/ -const core = require('web.core'); -var time = require('web.time'); +import core from "web.core"; +import time from "web.time"; QUnit.module('core', {}, function () { @@ -161,5 +160,3 @@ QUnit.module('core', {}, function () { }); }); - -}); \ No newline at end of file diff --git a/addons/web/static/tests/legacy/core/util_tests.js b/addons/web/static/tests/legacy/core/util_tests.js index c69be2ea31e..3b5f6a0fad9 100644 --- a/addons/web/static/tests/legacy/core/util_tests.js +++ b/addons/web/static/tests/legacy/core/util_tests.js @@ -1,7 +1,6 @@ -odoo.define('web.util_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var utils = require('web.utils'); +import utils from "web.utils"; QUnit.module('core', {}, function () { @@ -303,5 +302,3 @@ QUnit.module('core', {}, function () { assert.deepEqual(sortBy(objstrss, prop, 'desc'), [{ x: 'z' }, { x: 'b' }, { x: 'a' }]); }); }); - -}); diff --git a/addons/web/static/tests/legacy/core/widget_tests.js b/addons/web/static/tests/legacy/core/widget_tests.js index ed8fac6c789..ff72083602b 100644 --- a/addons/web/static/tests/legacy/core/widget_tests.js +++ b/addons/web/static/tests/legacy/core/widget_tests.js @@ -1,12 +1,11 @@ -odoo.define('web.widget_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var AjaxService = require('web.AjaxService'); -var core = require('web.core'); -var Dialog = require('web.Dialog'); -var QWeb = require('web.QWeb'); -var Widget = require('web.Widget'); -var testUtils = require('web.test_utils'); +import AjaxService from "web.AjaxService"; +import core from "web.core"; +import Dialog from "web.Dialog"; +import QWeb from "web.QWeb"; +import Widget from "web.Widget"; +import testUtils from "web.test_utils"; QUnit.module('core', {}, function () { @@ -526,5 +525,3 @@ QUnit.module('core', {}, function () { dialog.close(); }); }); - -}); diff --git a/addons/web/static/tests/legacy/frontend/keyboard_navigation_mixin_tests.js b/addons/web/static/tests/legacy/frontend/keyboard_navigation_mixin_tests.js index b0c638dd802..c3b5469b66b 100644 --- a/addons/web/static/tests/legacy/frontend/keyboard_navigation_mixin_tests.js +++ b/addons/web/static/tests/legacy/frontend/keyboard_navigation_mixin_tests.js @@ -1,9 +1,8 @@ -odoo.define('web.keyboard_navigation_mixin_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var KeyboardNavigationMixin = require('web.KeyboardNavigationMixin'); -var testUtils = require('web.test_utils'); -var Widget = require('web.Widget'); +import KeyboardNavigationMixin from "web.KeyboardNavigationMixin"; +import testUtils from "web.test_utils"; +import Widget from "web.Widget"; QUnit.module('KeyboardNavigationMixin', function () { QUnit.test('aria-keyshortcuts is added on elements with accesskey', async function (assert) { @@ -85,4 +84,3 @@ QUnit.module('KeyboardNavigationMixin', function () { parent.destroy(); }); }); -}); diff --git a/addons/web/static/tests/legacy/helpers/mock_server.js b/addons/web/static/tests/legacy/helpers/mock_server.js index 5578c7d6a8d..0051c9f7655 100644 --- a/addons/web/static/tests/legacy/helpers/mock_server.js +++ b/addons/web/static/tests/legacy/helpers/mock_server.js @@ -1,9 +1,8 @@ -odoo.define('web.MockServer', function (require) { -"use strict"; +/** @odoo-module alias=web.MockServer **/ -var Class = require('web.Class'); -var Domain = require('web.Domain'); -var pyUtils = require('web.py_utils'); +import Class from "web.Class"; +import Domain from "web.Domain"; +import pyUtils from "web.py_utils"; var MockServer = Class.extend({ /** @@ -2271,6 +2270,4 @@ var MockServer = Class.extend({ }, }); -return MockServer; - -}); +export default MockServer; diff --git a/addons/web/static/tests/legacy/helpers/test_env.js b/addons/web/static/tests/legacy/helpers/test_env.js index cededce739e..64634b3d1a1 100644 --- a/addons/web/static/tests/legacy/helpers/test_env.js +++ b/addons/web/static/tests/legacy/helpers/test_env.js @@ -1,11 +1,10 @@ -odoo.define('web.test_env', async function (require) { - "use strict"; - - const Bus = require('web.Bus'); - const session = require('web.session'); - const { makeTestEnvServices } = require('@web/../tests/legacy/helpers/test_services'); - const { templates, setLoadXmlDefaultApp } = require("@web/core/assets"); - const { renderToString } = require('@web/core/utils/render'); +/** @odoo-module alias=web.test_env **/ + + import Bus from "web.Bus"; + import session from "web.session"; + import { makeTestEnvServices } from "@web/../tests/legacy/helpers/test_services"; + import { templates, setLoadXmlDefaultApp } from "@web/core/assets"; + import { renderToString } from "@web/core/utils/render"; const { App, Component } = owl; let app; @@ -84,5 +83,4 @@ odoo.define('web.test_env', async function (require) { Component.env = makeTestEnvironment(); }); - return makeTestEnvironment; -}); + export default makeTestEnvironment; diff --git a/addons/web/static/tests/legacy/helpers/test_utils_control_panel.js b/addons/web/static/tests/legacy/helpers/test_utils_control_panel.js index f0b4391b478..8c13fbb809a 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_control_panel.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_control_panel.js @@ -1,8 +1,7 @@ -odoo.define('web.test_utils_control_panel', function (require) { - "use strict"; - - const { click, findItem, getNode, triggerEvent } = require('web.test_utils_dom'); - const { editInput, editSelect, editAndTrigger } = require('web.test_utils_fields'); +/** @odoo-module alias=web.test_utils_control_panel **/ + + import { click, findItem, getNode, triggerEvent } from "web.test_utils_dom"; + import { editInput, editSelect, editAndTrigger } from "web.test_utils_fields"; //------------------------------------------------------------------------- // Exported functions @@ -313,7 +312,7 @@ odoo.define('web.test_utils_control_panel', function (require) { await click(getNode(el).querySelector(`button.o_switch_view.o_${viewType}`)); } - return { + export default { // Generic interactions toggleMenu, toggleMenuItem, @@ -357,4 +356,3 @@ odoo.define('web.test_utils_control_panel', function (require) { // View switcher switchView, }; -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_create.js b/addons/web/static/tests/legacy/helpers/test_utils_create.js index e93e2161c4a..43f8495d118 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_create.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_create.js @@ -1,6 +1,5 @@ -odoo.define('web.test_utils_create', function (require) { - "use strict"; - +/** @odoo-module alias=web.test_utils_create **/ + /** * Create Test Utils * @@ -10,19 +9,19 @@ odoo.define('web.test_utils_create', function (require) { * testUtils file. */ - const ActionMenus = require('web.ActionMenus'); - const concurrency = require('web.concurrency'); - const ControlPanel = require('web.ControlPanel'); - const { useListener } = require("@web/core/utils/hooks"); - const dom = require('web.dom'); - const makeTestEnvironment = require('web.test_env'); - const ActionModel = require('web.ActionModel'); - const Registry = require('web.Registry'); - const testUtilsMock = require('web.test_utils_mock'); - const Widget = require('web.Widget'); - const { destroy, getFixture, mount, useChild } = require('@web/../tests/helpers/utils'); - const { registerCleanup } = require("@web/../tests/helpers/cleanup"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); + import ActionMenus from "web.ActionMenus"; + import concurrency from "web.concurrency"; + import ControlPanel from "web.ControlPanel"; + import { useListener } from "@web/core/utils/hooks"; + import dom from "web.dom"; + import makeTestEnvironment from "web.test_env"; + import ActionModel from "web.ActionModel"; + import Registry from "web.Registry"; + import testUtilsMock from "web.test_utils_mock"; + import Widget from "web.Widget"; + import { destroy, getFixture, mount, useChild } from "@web/../tests/helpers/utils"; + import { registerCleanup } from "@web/../tests/helpers/cleanup"; + import { LegacyComponent } from "@web/legacy/legacy_component"; const { Component, onMounted, onWillStart, useState, xml } = owl; @@ -391,7 +390,7 @@ odoo.define('web.test_utils_create', function (require) { return debug ? document.body : document.getElementById('qunit-fixture'); } - return { + export default { createCalendarView, createComponent, createControlPanel, @@ -400,4 +399,3 @@ odoo.define('web.test_utils_create', function (require) { createView, prepareTarget, }; -}); 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 cb4f09d9381..27cd3485e94 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_dom.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_dom.js @@ -1,8 +1,7 @@ -odoo.define('web.test_utils_dom', function (require) { - "use strict"; - - const concurrency = require('web.concurrency'); - const Widget = require('web.Widget'); +/** @odoo-module alias=web.test_utils_dom **/ + + import concurrency from "web.concurrency"; + import Widget from "web.Widget"; const { Component } = owl; @@ -588,7 +587,7 @@ odoo.define('web.test_utils_dom', function (require) { return element; } - return { + export default { click, clickFirst, clickLast, @@ -604,4 +603,3 @@ odoo.define('web.test_utils_dom', function (require) { triggerPositionalMouseEvent, triggerPositionalTapEvents, }; -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_fields.js b/addons/web/static/tests/legacy/helpers/test_utils_fields.js index 3e35235cfcc..7b84a131f95 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_fields.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_fields.js @@ -1,6 +1,5 @@ -odoo.define('web.test_utils_fields', function (require) { - "use strict"; - +/** @odoo-module alias=web.test_utils_fields **/ + /** * Field Test Utils * @@ -10,7 +9,7 @@ odoo.define('web.test_utils_fields', function (require) { * testUtils file. */ - const testUtilsDom = require('web.test_utils_dom'); + import testUtilsDom from "web.test_utils_dom"; const ARROW_KEYS_MAPPING = { down: 'ArrowDown', @@ -234,7 +233,7 @@ odoo.define('web.test_utils_fields', function (require) { return triggerKey('up', $el, keyCode); } - return { + export default { clickM2OCreateAndEdit, clickM2OHighlightedItem, clickM2OItem, @@ -247,4 +246,3 @@ odoo.define('web.test_utils_fields', function (require) { triggerKeydown, triggerKeyup, }; -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_file.js b/addons/web/static/tests/legacy/helpers/test_utils_file.js index ecdd85e52d6..94e19ee55c7 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_file.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_file.js @@ -1,5 +1,4 @@ -odoo.define('web.test_utils_file', function () { -"use strict"; +/** @odoo-module alias=web.test_utils_file **/ /** * FILE Test Utils @@ -147,12 +146,10 @@ function inputFiles(el, files) { // Exposed API //------------------------------------------------------------------------------ -return { +export default { createFile: createFile, dragoverFile: dragoverFile, dropFile: dropFile, dropFiles, inputFiles, }; - -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_form.js b/addons/web/static/tests/legacy/helpers/test_utils_form.js index b4bff154ce7..8b6f61c59e0 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_form.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_form.js @@ -1,5 +1,4 @@ -odoo.define('web.test_utils_form', function (require) { -"use strict"; +/** @odoo-module alias=web.test_utils_form **/ /** * Form Test Utils @@ -10,7 +9,7 @@ odoo.define('web.test_utils_form', function (require) { * testUtils file. */ -var testUtilsDom = require('web.test_utils_dom'); +import testUtilsDom from "web.test_utils_dom"; /** * Clicks on the Edit button in a form view, to set it to edit mode. Note that @@ -63,12 +62,10 @@ function reload(form, params) { return form.reload(params); } -return { +export default { clickEdit: clickEdit, clickSave: clickSave, clickCreate: clickCreate, clickDiscard: clickDiscard, reload: reload, }; - -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_graph.js b/addons/web/static/tests/legacy/helpers/test_utils_graph.js index f6b50a1b571..8549ffb6a16 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_graph.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_graph.js @@ -1,5 +1,4 @@ -odoo.define('web.test_utils_graph', function () { -"use strict"; +/** @odoo-module alias=web.test_utils_graph **/ /** * Graph Test Utils @@ -21,8 +20,6 @@ function reload(graph, params) { return graph.reload(params); } -return { +export default { reload: reload, }; - -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_kanban.js b/addons/web/static/tests/legacy/helpers/test_utils_kanban.js index 76af632b417..3ac5c2db0e5 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_kanban.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_kanban.js @@ -1,5 +1,4 @@ -odoo.define('web.test_utils_kanban', function (require) { -"use strict"; +/** @odoo-module alias=web.test_utils_kanban **/ /** * Kanban Test Utils @@ -10,8 +9,8 @@ odoo.define('web.test_utils_kanban', function (require) { * testUtils file. */ -var testUtilsDom = require('web.test_utils_dom'); -var testUtilsFields = require('web.test_utils_fields'); +import testUtilsDom from "web.test_utils_dom"; +import testUtilsFields from "web.test_utils_fields"; /** * Clicks on the Create button in a kanban view. Note that this method checks that @@ -91,12 +90,10 @@ function toggleRecordDropdown($record) { } -return { +export default { clickCreate: clickCreate, quickCreate: quickCreate, reload: reload, toggleGroupSettings: toggleGroupSettings, toggleRecordDropdown: toggleRecordDropdown, }; - -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_mock.js b/addons/web/static/tests/legacy/helpers/test_utils_mock.js index 5a8e2a0274d..23311be2de0 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_mock.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_mock.js @@ -1,5 +1,4 @@ -odoo.define('web.test_utils_mock', function (require) { -"use strict"; +/** @odoo-module alias=web.test_utils_mock **/ /** * Mock Test Utils @@ -10,23 +9,23 @@ odoo.define('web.test_utils_mock', function (require) { * testUtils file. */ -const AbstractStorageService = require('web.AbstractStorageService'); -const AjaxService = require('web.AjaxService'); -const basic_fields = require('web.basic_fields'); -const Bus = require('web.Bus'); -const config = require('web.config'); -const core = require('web.core'); -const dom = require('web.dom'); -const makeTestEnvironment = require('web.test_env'); -const MockServer = require('web.MockServer'); -const RamStorage = require('web.RamStorage'); -const session = require('web.session'); -const { patchWithCleanup, patchDate } = require("@web/../tests/helpers/utils"); -const { browser } = require("@web/core/browser/browser"); -const { assets } = require("@web/core/assets"); -const { processArch } = require("@web/legacy/legacy_load_views"); +import AbstractStorageService from "web.AbstractStorageService"; +import AjaxService from "web.AjaxService"; +import basic_fields from "web.basic_fields"; +import Bus from "web.Bus"; +import config from "web.config"; +import core from "web.core"; +import dom from "web.dom"; +import makeTestEnvironment from "web.test_env"; +import MockServer from "web.MockServer"; +import RamStorage from "web.RamStorage"; +import session from "web.session"; +import { patchWithCleanup, patchDate } from "@web/../tests/helpers/utils"; +import { browser } from "@web/core/browser/browser"; +import { assets } from "@web/core/assets"; +import { processArch } from "@web/legacy/legacy_load_views"; -const { Component } = require("@odoo/owl"); +import { Component } from "@odoo/owl"; const DebouncedField = basic_fields.DebouncedField; @@ -721,7 +720,7 @@ function patchSetTimeout() { }; } -return { +export default { addMockEnvironment: addMockEnvironment, getView: getView, addMockEnvironmentOwl: addMockEnvironmentOwl, @@ -731,5 +730,3 @@ return { unpatch: unpatch, patchSetTimeout: patchSetTimeout, }; - -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_modal.js b/addons/web/static/tests/legacy/helpers/test_utils_modal.js index ca3eeef11a7..010f88d0c91 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_modal.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_modal.js @@ -1,6 +1,5 @@ -odoo.define('web.test_utils_modal', function (require) { - "use strict"; - +/** @odoo-module alias=web.test_utils_modal **/ + /** * Modal Test Utils * @@ -10,8 +9,8 @@ odoo.define('web.test_utils_modal', function (require) { * testUtils file. */ - const { _t } = require('web.core'); - const testUtilsDom = require('web.test_utils_dom'); + import { _t } from "web.core"; + import testUtilsDom from "web.test_utils_dom"; /** * Click on a button in the footer of a modal (which contains a given string). @@ -22,5 +21,4 @@ odoo.define('web.test_utils_modal', function (require) { return testUtilsDom.click($(`.modal-footer button:contains(${_t(text)})`)); } - return { clickButton }; -}); + export default { clickButton }; diff --git a/addons/web/static/tests/legacy/helpers/test_utils_pivot.js b/addons/web/static/tests/legacy/helpers/test_utils_pivot.js index fe059b533ed..b041431a586 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_pivot.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_pivot.js @@ -1,7 +1,6 @@ -odoo.define('web.test_utils_pivot', function (require) { -"use strict"; +/** @odoo-module alias=web.test_utils_pivot **/ -var testUtilsDom = require('web.test_utils_dom'); +import testUtilsDom from "web.test_utils_dom"; /** * Pivot Test Utils @@ -48,10 +47,8 @@ function reload(pivot, params) { return pivot.reload(params); } -return { +export default { clickMeasure: clickMeasure, reload: reload, toggleMeasuresDropdown: toggleMeasuresDropdown, }; - -}); diff --git a/addons/web/static/tests/legacy/helpers/test_utils_tests.js b/addons/web/static/tests/legacy/helpers/test_utils_tests.js index d4f386625f7..7f1a5b9c8cb 100644 --- a/addons/web/static/tests/legacy/helpers/test_utils_tests.js +++ b/addons/web/static/tests/legacy/helpers/test_utils_tests.js @@ -1,7 +1,6 @@ -odoo.define('web.testUtilsTests', function (require) { -"use strict"; +/** @odoo-module **/ -var testUtils = require('web.test_utils'); +import testUtils from "web.test_utils"; QUnit.module('web', {}, function () { QUnit.module('testUtils', {}, function () { @@ -31,6 +30,5 @@ QUnit.test('new moment', function (assert) { unpatchDate(); }); -}); }); }); \ No newline at end of file diff --git a/addons/web/static/tests/legacy/mockserver_tests.js b/addons/web/static/tests/legacy/mockserver_tests.js index dd1f24359fc..b87cd855952 100644 --- a/addons/web/static/tests/legacy/mockserver_tests.js +++ b/addons/web/static/tests/legacy/mockserver_tests.js @@ -1,7 +1,6 @@ -odoo.define('web.mockserver_tests', function (require) { -"use strict"; +/** @odoo-module **/ -const MockServer = require("web.MockServer"); +import MockServer from "web.MockServer"; QUnit.module("Legacy MockServer", { beforeEach() { @@ -562,4 +561,3 @@ QUnit.module("Legacy MockServer", { ]); }); }); -}); diff --git a/addons/web/static/tests/legacy/owl_compatibility_tests.js b/addons/web/static/tests/legacy/owl_compatibility_tests.js index aa9b889f25b..3d0b7ff85a1 100644 --- a/addons/web/static/tests/legacy/owl_compatibility_tests.js +++ b/addons/web/static/tests/legacy/owl_compatibility_tests.js @@ -1,20 +1,19 @@ -odoo.define('web.OwlCompatibilityTests', function (require) { - "use strict"; - - const { +/** @odoo-module **/ + + import { ComponentAdapter, ComponentWrapper, WidgetAdapterMixin, - } = require('web.OwlCompatibility'); - const testUtils = require('web.test_utils'); - const Widget = require('web.Widget'); - const { registry } = require("@web/core/registry"); - const { LegacyComponent } = require("@web/legacy/legacy_component"); - const { mapLegacyEnvToWowlEnv, useWowlService } = require("@web/legacy/utils"); + } from "web.OwlCompatibility"; + import testUtils from "web.test_utils"; + import Widget from "web.Widget"; + import { registry } from "@web/core/registry"; + import { LegacyComponent } from "@web/legacy/legacy_component"; + import { mapLegacyEnvToWowlEnv, useWowlService } from "@web/legacy/utils"; - const makeTestEnvironment = require("web.test_env"); - const { makeTestEnv } = require("@web/../tests/helpers/mock_env"); - const { getFixture, mount, useLogLifeCycle, destroy } = require("@web/../tests/helpers/utils"); + import makeTestEnvironment from "web.test_env"; + import { makeTestEnv } from "@web/../tests/helpers/mock_env"; + import { getFixture, mount, useLogLifeCycle, destroy } from "@web/../tests/helpers/utils"; const makeTestPromise = testUtils.makeTestPromise; const nextTick = testUtils.nextTick; @@ -1679,4 +1678,3 @@ odoo.define('web.OwlCompatibilityTests', function (require) { await mount(MyComponent, getFixture(), { env: legacyEnv }); }); }); -}); diff --git a/addons/web/static/tests/legacy/qweb_tests.js b/addons/web/static/tests/legacy/qweb_tests.js index 2880988ad4a..8e9f3cc80d3 100644 --- a/addons/web/static/tests/legacy/qweb_tests.js +++ b/addons/web/static/tests/legacy/qweb_tests.js @@ -1,10 +1,9 @@ -odoo.define('web.qweb_tests', function (require) { -"use strict"; +/** @odoo-module **/ -const {Markup} = require('web.utils'); +import {Markup} from "web.utils"; var qwebPath = '/web/static/lib/qweb/'; -const {hushConsole} = require('@web/../tests/helpers/utils'); +import {hushConsole} from "@web/../tests/helpers/utils"; function trim(s) { return s.replace(/(^\s+|\s+$)/g, ''); @@ -189,4 +188,3 @@ QUnit.module('QWeb', { }); }) }); -}); diff --git a/addons/web/static/tests/legacy/views/basic_model_tests.js b/addons/web/static/tests/legacy/views/basic_model_tests.js index c7634c40fc2..7c6250cefa7 100644 --- a/addons/web/static/tests/legacy/views/basic_model_tests.js +++ b/addons/web/static/tests/legacy/views/basic_model_tests.js @@ -1,9 +1,8 @@ -odoo.define('web.basic_model_tests', function (require) { - "use strict"; - - var BasicModel = require('web.BasicModel'); - var testUtils = require('web.test_utils'); - const session = require('web.session'); +/** @odoo-module **/ + + import BasicModel from "web.BasicModel"; + import testUtils from "web.test_utils"; + import session from "web.session"; var createModel = testUtils.createModel; @@ -2494,4 +2493,3 @@ odoo.define('web.basic_model_tests', function (require) { 'basic_model _getEvalContext returns session.user_companies.current_company when session.user_context.allowed_company_ids is not set'); }); }); -}); diff --git a/addons/web/static/tests/legacy/widgets/model_field_selector_tests.js b/addons/web/static/tests/legacy/widgets/model_field_selector_tests.js index f01fb6a793d..7bca2e855ed 100644 --- a/addons/web/static/tests/legacy/widgets/model_field_selector_tests.js +++ b/addons/web/static/tests/legacy/widgets/model_field_selector_tests.js @@ -1,8 +1,7 @@ -odoo.define('web.model_field_selector_tests', function (require) { -"use strict"; +/** @odoo-module **/ -var ModelFieldSelector = require("web.ModelFieldSelector"); -var testUtils = require("web.test_utils"); +import ModelFieldSelector from "web.ModelFieldSelector"; +import testUtils from "web.test_utils"; QUnit.module('widgets', {}, function () { @@ -322,4 +321,3 @@ QUnit.module('ModelFieldSelector', { }); }); }); -}); diff --git a/addons/web/static/tests/legacy/widgets/name_and_signature_tests.js b/addons/web/static/tests/legacy/widgets/name_and_signature_tests.js index 948ae8a13a6..e619ac02821 100644 --- a/addons/web/static/tests/legacy/widgets/name_and_signature_tests.js +++ b/addons/web/static/tests/legacy/widgets/name_and_signature_tests.js @@ -1,8 +1,7 @@ -odoo.define('web.name_and_signature_tests', function (require) { - "use strict"; - - const { NameAndSignature } = require("web.name_and_signature"); - const testUtils = require("web.test_utils"); +/** @odoo-module **/ + + import { NameAndSignature } from "web.name_and_signature"; + import testUtils from "web.test_utils"; const MockedNameAndSignature = NameAndSignature.extend({ events: { ...NameAndSignature.prototype.events, @@ -77,4 +76,3 @@ odoo.define('web.name_and_signature_tests', function (require) { }); }); }); -}); diff --git a/addons/website_slides/__manifest__.py b/addons/website_slides/__manifest__.py index 99348388770..d3e767ed973 100644 --- a/addons/website_slides/__manifest__.py +++ b/addons/website_slides/__manifest__.py @@ -220,6 +220,7 @@ Featuring 'web/static/src/legacy/js/core/owl_dialog.js', 'web/static/src/legacy/js/core/popover.js', 'web/static/src/legacy/js/core/dom.js', + 'web/static/src/legacy/js/core/dom_ready.js', 'web/static/src/legacy/js/core/local_storage.js', 'web/static/src/legacy/js/core/mixins.js', 'web/static/src/legacy/js/core/qweb.js',