diff --git a/addons/account/static/src/components/bills_upload/bills_upload.js b/addons/account/static/src/components/bills_upload/bills_upload.js
index 12c5ddcebf9..e94e1b7263c 100644
--- a/addons/account/static/src/components/bills_upload/bills_upload.js
+++ b/addons/account/static/src/components/bills_upload/bills_upload.js
@@ -82,10 +82,10 @@ export const accountFileUploader = {
btnClass: attrs.btnClass || "",
linkText: attrs.linkText || _lt("Upload"),
}),
- fieldDependencies: {
- id: { type: "integer" },
- type: { type: "selection" },
- },
+ fieldDependencies: [
+ { name: "id", type: "integer" },
+ { name: "type", type: "selection" },
+ ],
};
registry.category("view_widgets").add("account_file_uploader", accountFileUploader);
diff --git a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js
index b15cfa83630..e81315fd89b 100644
--- a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js
+++ b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js
@@ -591,9 +591,7 @@ AnalyticDistribution.props = {
export const analyticDistribution = {
component: AnalyticDistribution,
supportedTypes: ["char", "text"],
- fieldDependencies: {
- analytic_precision: { type: "integer" },
- },
+ fieldDependencies: [{ name:"analytic_precision", type: "integer" }],
extractProps: ({ attrs }) => ({
business_domain: attrs.options.business_domain,
account_field: attrs.options.account_field,
diff --git a/addons/mail/static/src/backend_components/activity_exception/activity_exception.js b/addons/mail/static/src/backend_components/activity_exception/activity_exception.js
index 71a32b81650..3f0a910b77e 100644
--- a/addons/mail/static/src/backend_components/activity_exception/activity_exception.js
+++ b/addons/mail/static/src/backend_components/activity_exception/activity_exception.js
@@ -23,8 +23,6 @@ Object.assign(ActivityException, {
registry.category("fields").add("activity_exception", {
component: ActivityException,
- fieldDependencies: {
- activity_exception_icon: { type: "char" },
- },
+ fieldDependencies: [{ name: "activity_exception_icon", type: "char" }],
noLabel: true,
});
diff --git a/addons/mail/static/src/backend_components/kanban_field_activity_view/kanban_field_activity_view_container.js b/addons/mail/static/src/backend_components/kanban_field_activity_view/kanban_field_activity_view_container.js
index 58cb199de29..d0df0e07415 100644
--- a/addons/mail/static/src/backend_components/kanban_field_activity_view/kanban_field_activity_view_container.js
+++ b/addons/mail/static/src/backend_components/kanban_field_activity_view/kanban_field_activity_view_container.js
@@ -86,14 +86,14 @@ Object.assign(KanbanFieldActivityViewContainer, {
export const kanbanFieldActivityViewContainer = {
component: KanbanFieldActivityViewContainer,
- fieldDependencies: {
- activity_exception_decoration: { type: "selection" },
- activity_exception_icon: { type: "char" },
- activity_state: { type: "selection" },
- activity_summary: { type: "char" },
- activity_type_icon: { type: "char" },
- activity_type_id: { type: "many2one", relation: "mail.activity.type" },
- },
+ fieldDependencies: [
+ { name: "activity_exception_decoration", type: "selection" },
+ { name: "activity_exception_icon", type: "char" },
+ { name: "activity_state", type: "selection" },
+ { name: "activity_summary", type: "char" },
+ { name: "activity_type_icon", type: "char" },
+ { name: "activity_type_id", type: "many2one", relation: "mail.activity.type" },
+ ],
};
registry.category("fields").add("kanban_activity", kanbanFieldActivityViewContainer);
diff --git a/addons/mail/static/src/backend_components/list_field_activity_view/list_field_activity_view_container.js b/addons/mail/static/src/backend_components/list_field_activity_view/list_field_activity_view_container.js
index ad507248c3f..f5525e1912e 100644
--- a/addons/mail/static/src/backend_components/list_field_activity_view/list_field_activity_view_container.js
+++ b/addons/mail/static/src/backend_components/list_field_activity_view/list_field_activity_view_container.js
@@ -86,14 +86,14 @@ Object.assign(ListFieldActivityViewContainer, {
export const listFieldActivityViewContainer = {
component: ListFieldActivityViewContainer,
- fieldDependencies: {
- activity_exception_decoration: { type: "selection" },
- activity_exception_icon: { type: "char" },
- activity_state: { type: "selection" },
- activity_summary: { type: "char" },
- activity_type_icon: { type: "char" },
- activity_type_id: { type: "many2one", relation: "mail.activity.type" },
- },
+ fieldDependencies: [
+ { name: "activity_exception_decoration", type: "selection" },
+ { name: "activity_exception_icon", type: "char" },
+ { name: "activity_state", type: "selection" },
+ { name: "activity_summary", type: "char" },
+ { name: "activity_type_icon", type: "char" },
+ { name: "activity_type_id", type: "many2one", relation: "mail.activity.type" },
+ ],
};
registry.category("fields").add("list_activity", listFieldActivityViewContainer);
diff --git a/addons/web/static/src/views/fields/image/image_field.js b/addons/web/static/src/views/fields/image/image_field.js
index 7e65fed0858..b4b48923246 100644
--- a/addons/web/static/src/views/fields/image/image_field.js
+++ b/addons/web/static/src/views/fields/image/image_field.js
@@ -132,9 +132,7 @@ export const imageField = {
component: ImageField,
displayName: _lt("Image"),
supportedTypes: ["binary"],
- fieldDependencies: {
- write_date: { type: "datetime" },
- },
+ fieldDependencies: [{ name: "write_date", type: "datetime" }],
extractProps: ({ attrs }) => ({
enableZoom: attrs.options.zoom,
zoomDelay: attrs.options.zoom_delay,
diff --git a/addons/web/static/src/views/legacy_utils.js b/addons/web/static/src/views/legacy_utils.js
index 27c69d45586..82bdb804948 100644
--- a/addons/web/static/src/views/legacy_utils.js
+++ b/addons/web/static/src/views/legacy_utils.js
@@ -96,7 +96,7 @@ export function mapActiveFieldsToFieldsInfo(activeFields, fields, viewType, env)
specialData: fieldDescr.field && fieldDescr.field.legacySpecialData,
domain,
context: fieldDescr.context,
- fieldDependencies: {}, // ??
+ fieldDependencies: [], // ??
force_save: fieldDescr.forceSave,
mode,
modifiers: fieldDescr.modifiers,
diff --git a/addons/web/static/src/views/utils.js b/addons/web/static/src/views/utils.js
index 78891d7e414..2e4d1e1865f 100644
--- a/addons/web/static/src/views/utils.js
+++ b/addons/web/static/src/views/utils.js
@@ -24,8 +24,9 @@ const NUMERIC_TYPES = ["integer", "float", "monetary"];
* @param {Object} activeFields
* @param {Object} [dependencies={}]
*/
-export function addFieldDependencies(activeFields, fields, dependencies = {}) {
- for (const [name, dependency] of Object.entries(dependencies)) {
+export function addFieldDependencies(activeFields, fields, dependencies = []) {
+ for (const dependency of dependencies) {
+ const { name } = dependency;
if (!(name in activeFields)) {
activeFields[name] = Object.assign({ name, rawAttrs: {} }, dependency, {
modifiers: { invisible: true },
diff --git a/addons/web/static/src/views/widgets/week_days/week_days.js b/addons/web/static/src/views/widgets/week_days/week_days.js
index 792e806bf42..d2881fcf930 100644
--- a/addons/web/static/src/views/widgets/week_days/week_days.js
+++ b/addons/web/static/src/views/widgets/week_days/week_days.js
@@ -30,15 +30,15 @@ export class WeekDays extends Component {
export const weekDays = {
component: WeekDays,
- fieldDependencies: {
- sun: { type: "boolean", string: _lt("Sun") },
- mon: { type: "boolean", string: _lt("Mon") },
- tue: { type: "boolean", string: _lt("Tue") },
- wed: { type: "boolean", string: _lt("Wed") },
- thu: { type: "boolean", string: _lt("Thu") },
- fri: { type: "boolean", string: _lt("Fri") },
- sat: { type: "boolean", string: _lt("Sat") },
- },
+ fieldDependencies: [
+ { name: "sun", type: "boolean", string: _lt("Sun") },
+ { name: "mon", type: "boolean", string: _lt("Mon") },
+ { name: "tue", type: "boolean", string: _lt("Tue") },
+ { name: "wed", type: "boolean", string: _lt("Wed") },
+ { name: "thu", type: "boolean", string: _lt("Thu") },
+ { name: "fri", type: "boolean", string: _lt("Fri") },
+ { name: "sat", type: "boolean", string: _lt("Sat") },
+ ],
};
registry.category("view_widgets").add("week_days", weekDays);
diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js
index 6fce347c9c6..b375089c625 100644
--- a/addons/web/static/tests/views/form/form_view_tests.js
+++ b/addons/web/static/tests/views/form/form_view_tests.js
@@ -693,7 +693,7 @@ QUnit.module("Views", (hooks) => {
class MyField extends CharField {}
fieldRegistry.add("my_widget", {
component: MyField,
- fieldDependencies: { int_field: { type: "integer" } },
+ fieldDependencies: [{ name: "int_field", type: "integer" }],
});
serverData.models.partner.records[1].p = [1];
await makeView({
@@ -12576,9 +12576,7 @@ QUnit.module("Views", (hooks) => {
component: class CustomField extends Component {
static template = xml``;
},
- fieldDependencies: {
- int_field: { type: "integer" },
- },
+ fieldDependencies: [{ name: "int_field", type: "integer" }],
};
registry.category("fields").add("custom_field", customField);
@@ -12606,9 +12604,7 @@ QUnit.module("Views", (hooks) => {
component: class CustomField extends Component {
static template = xml``;
},
- fieldDependencies: {
- product_id: { type: "many2one", relation: "product" },
- },
+ fieldDependencies: [{ name: "product_id", type: "many2one", relation: "product" }],
};
registry.category("fields").add("custom_field", customField);
diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js
index a35ec6d07b4..3fe096e0a6b 100644
--- a/addons/web/static/tests/views/kanban_view_tests.js
+++ b/addons/web/static/tests/views/kanban_view_tests.js
@@ -12141,9 +12141,7 @@ QUnit.module("Views", (hooks) => {
component: class CustomField extends Component {
static template = xml``;
},
- fieldDependencies: {
- int_field: { type: "integer" },
- },
+ fieldDependencies: [{ name: "int_field", type: "integer" }],
};
registry.category("fields").add("custom_field", customField);
@@ -12174,9 +12172,7 @@ QUnit.module("Views", (hooks) => {
component: class CustomField extends Component {
static template = xml``;
},
- fieldDependencies: {
- product_id: { type: "many2one", relation: "product" },
- },
+ fieldDependencies: [{ name: "product_id", type: "many2one", relation: "product" }],
};
registry.category("fields").add("custom_field", customField);
diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js
index 516b7ca1b32..82dde9e62cb 100644
--- a/addons/web/static/tests/views/list_view_tests.js
+++ b/addons/web/static/tests/views/list_view_tests.js
@@ -16412,9 +16412,7 @@ QUnit.module("Views", (hooks) => {
component: class CustomField extends Component {
static template = xml``;
},
- fieldDependencies: {
- int_field: { type: "integer" },
- },
+ fieldDependencies: [{ name: "int_field", type: "integer" }],
};
registry.category("fields").add("custom_field", customField);
@@ -16439,9 +16437,7 @@ QUnit.module("Views", (hooks) => {
component: class CustomField extends Component {
static template = xml``;
},
- fieldDependencies: {
- m2o: { type: "many2one", relation: "bar" },
- },
+ fieldDependencies: [{ name: "m2o", type: "many2one", relation: "bar" }],
};
registry.category("fields").add("custom_field", customField);