diff --git a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Contact.json b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Contact.json index 56d185e3a0..5cd1641368 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Contact.json +++ b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Contact.json @@ -60,7 +60,9 @@ "layout": "listForContact", "createAttributeMap": { "accountId": "accountId", - "accountName": "accountName" + "accountName": "accountName", + "id": "contactId", + "name": "contactName" }, "selectHandler": "handlers/select-related/same-account" }, diff --git a/client/src/views/fields/link-multiple-with-columns-with-primary.js b/client/src/views/fields/link-multiple-with-columns-with-primary.js index c9680c0bbf..f262ef53d3 100644 --- a/client/src/views/fields/link-multiple-with-columns-with-primary.js +++ b/client/src/views/fields/link-multiple-with-columns-with-primary.js @@ -61,7 +61,7 @@ class LinkMultipleWithColumnsWithPrimaryFieldView extends LinkMultipleWithColumn const $target = $(e.currentTarget); const id = $target.data('id'); - LinkMultipleWithPrimaryFieldView.prototype.switchPrimary.call(this, id); + this.switchPrimary(id); }; this.primaryId = this.model.get(this.primaryIdAttribute); @@ -78,8 +78,23 @@ class LinkMultipleWithColumnsWithPrimaryFieldView extends LinkMultipleWithColumn this.primaryName = id ? this.nameHash[id] : null; + } - this.trigger('change'); + switchPrimary(id) { + const $switch = this.$el.find(`[data-id="${id}"][data-action="switchPrimary"]`); + + if (!$switch.hasClass('active')) { + this.$el.find('button[data-action="switchPrimary"]') + .removeClass('active') + .children() + .addClass('text-muted'); + + $switch.addClass('active').children().removeClass('text-muted'); + + this.setPrimaryId(id); + + this.trigger('change'); + } } renderLinks() { @@ -184,7 +199,14 @@ class LinkMultipleWithColumnsWithPrimaryFieldView extends LinkMultipleWithColumn if ($first.length) { $first.addClass('active').children().removeClass('text-muted'); - this.setPrimaryId($first.data('id')); + + const id = $first.data('id'); + + this.setPrimaryId(id); + + if (id !== this.primaryId) { + this.trigger('change'); + } } } } diff --git a/client/src/views/fields/link-multiple-with-primary.js b/client/src/views/fields/link-multiple-with-primary.js index 2a2339ac0a..f5344cdcc0 100644 --- a/client/src/views/fields/link-multiple-with-primary.js +++ b/client/src/views/fields/link-multiple-with-primary.js @@ -51,6 +51,8 @@ class LinkMultipleWithPrimaryFieldView extends LinkMultipleFieldView { $switch.addClass('active').children().removeClass('text-muted'); this.setPrimaryId(id); + + this.trigger('change'); } } @@ -100,8 +102,6 @@ class LinkMultipleWithPrimaryFieldView extends LinkMultipleFieldView { this.primaryName = id ? this.nameHash[id] : null; - - this.trigger('change'); } /** @@ -249,7 +249,13 @@ class LinkMultipleWithPrimaryFieldView extends LinkMultipleFieldView { if ($first.length) { $first.addClass('active').children().removeClass('text-muted'); - this.setPrimaryId($first.data('id')); + const id = $first.data('id'); + + this.setPrimaryId(id); + + if (id !== this.primaryId) { + this.trigger('change'); + } } } }