aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web
diff options
context:
space:
mode:
authorMathieu Suen <mathieu.suen@sonarsource.com>2022-08-29 11:08:27 +0200
committersonartech <sonartech@sonarsource.com>2022-08-30 20:03:14 +0000
commit40cf231e414587e98c44433583199899f47df08a (patch)
tree93773197d1b9b5570e292fe75dcbdeb2e98cfb8c /server/sonar-web
parentf675365a8e2faac393aa16243f022bc860201257 (diff)
downloadsonarqube-40cf231e414587e98c44433583199899f47df08a.tar.gz
sonarqube-40cf231e414587e98c44433583199899f47df08a.zip
SONAR-16826 Modal is closed, focus is not returned to trigger
Diffstat (limited to 'server/sonar-web')
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesApp-test.tsx.snap10
-rw-r--r--server/sonar-web/src/main/js/components/controls/buttons.tsx2
3 files changed, 19 insertions, 2 deletions
diff --git a/server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx b/server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx
index e1b7e1caaa5..ec5dce35d59 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx
@@ -148,10 +148,12 @@ const BRANCH_STATUS_REFRESH_INTERVAL = 1000;
export class App extends React.PureComponent<Props, State> {
mounted = false;
+ bulkButtonRef: React.RefObject<HTMLButtonElement>;
constructor(props: Props) {
super(props);
const query = parseQuery(props.location.query);
+ this.bulkButtonRef = React.createRef();
this.state = {
bulkChangeModal: false,
checked: [],
@@ -769,7 +771,11 @@ export class App extends React.PureComponent<Props, State> {
};
handleCloseBulkChange = () => {
- this.setState({ bulkChangeModal: false });
+ this.setState({ bulkChangeModal: false }, () => {
+ if (this.bulkButtonRef.current) {
+ this.bulkButtonRef.current.focus();
+ }
+ });
};
handleBulkChangeDone = () => {
@@ -857,6 +863,7 @@ export class App extends React.PureComponent<Props, State> {
title={translate('issues.select_all_issues')}
/>
<Button
+ innerRef={this.bulkButtonRef}
disabled={checked.length === 0}
id="issues-bulk-change"
onClick={this.handleOpenBulkChange}>
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesApp-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesApp-test.tsx.snap
index 7bb7a106350..59964536c18 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesApp-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesApp-test.tsx.snap
@@ -4,6 +4,11 @@ exports[`should check all issues, even the ones that are not visible 1`] = `
<Button
disabled={false}
id="issues-bulk-change"
+ innerRef={
+ Object {
+ "current": null,
+ }
+ }
onClick={[Function]}
>
issues.bulk_change_X_issues.250
@@ -14,6 +19,11 @@ exports[`should check max 500 issues 1`] = `
<Button
disabled={false}
id="issues-bulk-change"
+ innerRef={
+ Object {
+ "current": null,
+ }
+ }
onClick={[Function]}
>
issues.bulk_change_X_issues.500
diff --git a/server/sonar-web/src/main/js/components/controls/buttons.tsx b/server/sonar-web/src/main/js/components/controls/buttons.tsx
index 67548395ccb..e4cae47e83a 100644
--- a/server/sonar-web/src/main/js/components/controls/buttons.tsx
+++ b/server/sonar-web/src/main/js/components/controls/buttons.tsx
@@ -36,7 +36,7 @@ type AllowedButtonAttributes = Pick<
interface ButtonProps extends AllowedButtonAttributes {
autoFocus?: boolean;
children?: React.ReactNode;
- innerRef?: (node: HTMLElement | null) => void;
+ innerRef?: React.Ref<HTMLButtonElement>;
name?: string;
onClick?: () => void;
preventDefault?: boolean;