diff --git a/client/modules/crm/src/views/contact/fields/accounts.js b/client/modules/crm/src/views/contact/fields/accounts.js
index 99a669b2fa..bc13875d6c 100644
--- a/client/modules/crm/src/views/contact/fields/accounts.js
+++ b/client/modules/crm/src/views/contact/fields/accounts.js
@@ -191,6 +191,7 @@ define('crm:views/contact/fields/accounts', ['views/fields/link-multiple-with-co
let $a = $('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-action', 'setPrimary')
.attr('data-id', id)
.text(this.translate('Set Primary', 'labels', 'Account'));
diff --git a/client/res/templates/stream/panel.tpl b/client/res/templates/stream/panel.tpl
index 48a57cb817..e2c413767a 100644
--- a/client/res/templates/stream/panel.tpl
+++ b/client/res/templates/stream/panel.tpl
@@ -17,7 +17,7 @@
{{{attachments}}}
-
+
')
+ $('')
.addClass('collapse-button')
.attr('role', 'button')
+ .attr('tabindex', '-1')
.attr('data-action', 'collapseModal')
.append(
$('')
@@ -379,10 +380,11 @@ function (/** marked~ */marked, /** DOMPurify~ */ DOMPurify) {
if (this.closeButton) {
$header.prepend(
- $('')
+ $('')
.addClass('close')
.attr('data-dismiss', 'modal')
.attr('role', 'button')
+ .attr('tabindex', '-1')
.append(
$('')
.attr('aria-hidden', 'true')
@@ -477,6 +479,7 @@ function (/** marked~ */marked, /** DOMPurify~ */ DOMPurify) {
this.dropdownItemList.forEach(/** module:ui.Dialog~Button */o => {
let $a = $('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-name', o.name);
if (o.text) {
diff --git a/client/src/views/admin/field-manager/fields/options-with-style.js b/client/src/views/admin/field-manager/fields/options-with-style.js
index 2e1e983fe0..51ab575933 100644
--- a/client/src/views/admin/field-manager/fields/options-with-style.js
+++ b/client/src/views/admin/field-manager/fields/options-with-style.js
@@ -111,6 +111,7 @@ function (Dep) {
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-action', 'selectOptionItemStyle')
.attr('data-style', item)
.attr('data-value', value)
diff --git a/client/src/views/admin/field-manager/fields/options.js b/client/src/views/admin/field-manager/fields/options.js
index 23ef4ad134..fbd1e66365 100644
--- a/client/src/views/admin/field-manager/fields/options.js
+++ b/client/src/views/admin/field-manager/fields/options.js
@@ -82,6 +82,7 @@ define('views/admin/field-manager/fields/options', ['views/fields/array'], funct
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.addClass('pull-right')
.attr('data-value', value)
.attr('data-action', 'removeValue')
diff --git a/client/src/views/email/fields/email-address-varchar.js b/client/src/views/email/fields/email-address-varchar.js
index ffdd2ec144..3a4702d871 100644
--- a/client/src/views/email/fields/email-address-varchar.js
+++ b/client/src/views/email/fields/email-address-varchar.js
@@ -321,6 +321,7 @@ function (Dep, From, EmailAddress) {
$('')
.attr('data-address', address)
.attr('role', 'button')
+ .attr('tabindex', '0')
.addClass('pull-right'),
$text
);
diff --git a/client/src/views/email/fields/from-address-varchar.js b/client/src/views/email/fields/from-address-varchar.js
index d52b8bf439..6cf03aa092 100644
--- a/client/src/views/email/fields/from-address-varchar.js
+++ b/client/src/views/email/fields/from-address-varchar.js
@@ -218,6 +218,7 @@ define(
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-action', 'createContact')
.attr('data-address', address)
.text(this.translate('Create Contact', 'labels', 'Email'))
@@ -231,6 +232,7 @@ define(
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-action', 'createLead')
.attr('data-address', address)
.text(this.translate('Create Lead', 'labels', 'Email'))
@@ -244,6 +246,7 @@ define(
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-action', 'addToContact')
.attr('data-address', address)
.text(this.translate('Add to Lead', 'labels', 'Email'))
@@ -257,6 +260,7 @@ define(
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-action', 'addToLead')
.attr('data-address', address)
.text(this.translate('Add to Lead', 'labels', 'Email'))
diff --git a/client/src/views/fields/array.js b/client/src/views/fields/array.js
index f0beaeb7ca..6a886be73c 100644
--- a/client/src/views/fields/array.js
+++ b/client/src/views/fields/array.js
@@ -543,6 +543,7 @@ function (Dep, RegExpPattern, /** module:ui/multi-select*/MultiSelect) {
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.addClass('pull-right')
.attr('data-value', value)
.attr('data-action', 'removeValue')
diff --git a/client/src/views/fields/base.js b/client/src/views/fields/base.js
index 1acd94ed40..3539978f03 100644
--- a/client/src/views/fields/base.js
+++ b/client/src/views/fields/base.js
@@ -828,6 +828,7 @@ define('views/fields/base', ['view'], function (Dep) {
this.once('after:render', () => {
$a = $('')
.attr('role', 'button')
+ .attr('tabindex', '-1')
.addClass('text-muted field-info')
.append(
$('').addClass('fas fa-info-circle')
@@ -1223,12 +1224,14 @@ define('views/fields/base', ['view'], function (Dep) {
let $saveLink = $('')
.attr('role', 'button')
+ .attr('tabindex', '-1')
.addClass('pull-right inline-save-link')
.attr('title', 'Ctrl+Enter')
.text(this.translate('Update'));
let $cancelLink = $('')
.attr('role', 'button')
+ .attr('tabindex', '-1')
.addClass('pull-right inline-cancel-link')
.attr('title', 'Esc')
.text(this.translate('Cancel'));
diff --git a/client/src/views/fields/link-multiple-with-columns.js b/client/src/views/fields/link-multiple-with-columns.js
index c481b2a14e..f15bbbaa30 100644
--- a/client/src/views/fields/link-multiple-with-columns.js
+++ b/client/src/views/fields/link-multiple-with-columns.js
@@ -384,6 +384,7 @@ function (Dep, RegExpPattern) {
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-action', 'toggleBoolColumn')
.attr('data-column', column)
.attr('data-id', id)
@@ -417,6 +418,7 @@ function (Dep, RegExpPattern) {
let $remove = $('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-id', id)
.attr('data-action', 'clearLink')
.addClass('pull-right')
diff --git a/client/src/views/fields/link-multiple-with-primary.js b/client/src/views/fields/link-multiple-with-primary.js
index 85d8a9419b..dca901c6f0 100644
--- a/client/src/views/fields/link-multiple-with-primary.js
+++ b/client/src/views/fields/link-multiple-with-primary.js
@@ -201,6 +201,7 @@ define('views/fields/link-multiple-with-primary', ['views/fields/link-multiple']
let $remove = $('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-id', id)
.attr('data-action', 'clearLink')
.addClass('pull-right')
diff --git a/client/src/views/fields/link-multiple-with-role.js b/client/src/views/fields/link-multiple-with-role.js
index 67e1e4189c..6b43184704 100644
--- a/client/src/views/fields/link-multiple-with-role.js
+++ b/client/src/views/fields/link-multiple-with-role.js
@@ -277,6 +277,7 @@ define('views/fields/link-multiple-with-role', ['views/fields/link-multiple'], f
let $remove = $('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-id', id)
.attr('data-action', 'clearLink')
.addClass('pull-right')
diff --git a/client/src/views/fields/link-multiple.js b/client/src/views/fields/link-multiple.js
index 6c99edddd6..2ceae66f4b 100644
--- a/client/src/views/fields/link-multiple.js
+++ b/client/src/views/fields/link-multiple.js
@@ -623,6 +623,7 @@ define('views/fields/link-multiple', ['views/fields/base'], function (Dep) {
$('')
.addClass('pull-right')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-id', id)
.attr('data-action', 'clearLink')
.append(
diff --git a/client/src/views/modals/compose-email.js b/client/src/views/modals/compose-email.js
index 865c2d62c0..1909e4e025 100644
--- a/client/src/views/modals/compose-email.js
+++ b/client/src/views/modals/compose-email.js
@@ -103,6 +103,7 @@ define('views/modals/compose-email', ['views/modals/edit'], function (Dep) {
this.$header = $('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-action', 'fullFormDraft')
.text(this.getLanguage().translate('Compose Email'));
diff --git a/client/src/views/preferences/fields/dashboard-tab-list.js b/client/src/views/preferences/fields/dashboard-tab-list.js
index b44aca0e16..b77c4be8d6 100644
--- a/client/src/views/preferences/fields/dashboard-tab-list.js
+++ b/client/src/views/preferences/fields/dashboard-tab-list.js
@@ -73,6 +73,7 @@ define('views/preferences/fields/dashboard-tab-list', ['views/fields/array'], fu
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.addClass('pull-right')
.attr('data-value', value)
.attr('data-action', 'removeValue')
diff --git a/client/src/views/record/list.js b/client/src/views/record/list.js
index 7c6657c4cf..ed88de0be8 100644
--- a/client/src/views/record/list.js
+++ b/client/src/views/record/list.js
@@ -2241,6 +2241,7 @@ function (Dep, MassActionHelper, ExportHelper) {
html =
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.addClass('reset-custom-order')
.attr('title', this.translate('Reset'))
.append(
diff --git a/client/src/views/settings/fields/dashboard-layout.js b/client/src/views/settings/fields/dashboard-layout.js
index 5880242b09..615b18c9cb 100644
--- a/client/src/views/settings/fields/dashboard-layout.js
+++ b/client/src/views/settings/fields/dashboard-layout.js
@@ -386,6 +386,7 @@ define('views/settings/fields/dashboard-layout', ['views/fields/base', 'lib!grid
actions2Html += $('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.addClass('pull-right')
.attr('data-action', 'editDashlet')
.attr('data-id', id)
diff --git a/client/src/views/settings/fields/tab-list.js b/client/src/views/settings/fields/tab-list.js
index f0de719f38..a4f1346ae2 100644
--- a/client/src/views/settings/fields/tab-list.js
+++ b/client/src/views/settings/fields/tab-list.js
@@ -144,6 +144,7 @@ define('views/settings/fields/tab-list', ['views/fields/array'], function (Dep)
.append(
$('')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-value', item.id)
.attr('data-action', 'editGroup')
.css('margin-right', '7px')
@@ -155,6 +156,7 @@ define('views/settings/fields/tab-list', ['views/fields/array'], function (Dep)
$('')
.addClass('pull-right')
.attr('role', 'button')
+ .attr('tabindex', '0')
.attr('data-value', item.id)
.attr('data-action', 'removeValue')
.append(