diff options
author | Mathieu Suen <mathieu.suen@sonarsource.com> | 2022-08-29 11:08:27 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2022-08-30 20:03:14 +0000 |
commit | 40cf231e414587e98c44433583199899f47df08a (patch) | |
tree | 93773197d1b9b5570e292fe75dcbdeb2e98cfb8c /server/sonar-web | |
parent | f675365a8e2faac393aa16243f022bc860201257 (diff) | |
download | sonarqube-40cf231e414587e98c44433583199899f47df08a.tar.gz sonarqube-40cf231e414587e98c44433583199899f47df08a.zip |
SONAR-16826 Modal is closed, focus is not returned to trigger
Diffstat (limited to 'server/sonar-web')
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; |