Skip to content

Commit ed56c63

Browse files
authored
fix: [Security:Cases:Create page]Modal dialogs missing title from announcement (elastic#220756)
Part of: elastic#205615 > [!IMPORTANT] > `Syntax help` part will be fixed in the `elastic/eui` repo ## Changes made: 1. Added required **a11y** attributes for for `EuiConfirmModal` ## Screen: <img width="1516" alt="image" src="https://github.com/user-attachments/assets/29622975-864c-4927-892a-956f17002d8d" />
1 parent 288a479 commit ed56c63

6 files changed

Lines changed: 42 additions & 6 deletions

File tree

x-pack/platform/plugins/shared/cases/public/components/configure_cases/delete_confirmation_modal.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
import React from 'react';
9-
import { EuiConfirmModal } from '@elastic/eui';
9+
import { EuiConfirmModal, useGeneratedHtmlId } from '@elastic/eui';
1010
import * as i18n from '../custom_fields/translations';
1111

1212
interface ConfirmDeleteCaseModalProps {
@@ -22,6 +22,8 @@ const DeleteConfirmationModalComponent: React.FC<ConfirmDeleteCaseModalProps> =
2222
onCancel,
2323
onConfirm,
2424
}) => {
25+
const titleId = useGeneratedHtmlId();
26+
2527
return (
2628
<EuiConfirmModal
2729
buttonColor="danger"
@@ -31,7 +33,11 @@ const DeleteConfirmationModalComponent: React.FC<ConfirmDeleteCaseModalProps> =
3133
onCancel={onCancel}
3234
onConfirm={onConfirm}
3335
title={title}
36+
titleProps={{
37+
id: titleId,
38+
}}
3439
confirmButtonText={i18n.DELETE}
40+
aria-labelledby={titleId}
3541
>
3642
{message}
3743
</EuiConfirmModal>

x-pack/platform/plugins/shared/cases/public/components/confirm_delete_case/index.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
import React from 'react';
9-
import { EuiConfirmModal } from '@elastic/eui';
9+
import { EuiConfirmModal, useGeneratedHtmlId } from '@elastic/eui';
1010
import * as i18n from './translations';
1111

1212
interface ConfirmDeleteCaseModalProps {
@@ -20,6 +20,8 @@ const ConfirmDeleteCaseModalComp: React.FC<ConfirmDeleteCaseModalProps> = ({
2020
onCancel,
2121
onConfirm,
2222
}) => {
23+
const titleId = useGeneratedHtmlId();
24+
2325
return (
2426
<EuiConfirmModal
2527
buttonColor="danger"
@@ -30,6 +32,10 @@ const ConfirmDeleteCaseModalComp: React.FC<ConfirmDeleteCaseModalProps> = ({
3032
onCancel={onCancel}
3133
onConfirm={onConfirm}
3234
title={i18n.DELETE_CASE(totalCasesToBeDeleted)}
35+
titleProps={{
36+
id: titleId,
37+
}}
38+
aria-labelledby={titleId}
3339
>
3440
{i18n.CONFIRM_QUESTION(totalCasesToBeDeleted)}
3541
</EuiConfirmModal>

x-pack/platform/plugins/shared/cases/public/components/create/cancel_creation_confirmation_modal.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import React from 'react';
99
import type { EuiConfirmModalProps } from '@elastic/eui';
10-
import { EuiConfirmModal } from '@elastic/eui';
10+
import { EuiConfirmModal, useGeneratedHtmlId } from '@elastic/eui';
1111
import * as i18n from './translations';
1212

1313
type Props = Pick<
@@ -22,16 +22,22 @@ const CancelCreationConfirmationModalComponent: React.FC<Props> = ({
2222
onConfirm,
2323
onCancel,
2424
}) => {
25+
const titleId = useGeneratedHtmlId();
26+
2527
return (
2628
<EuiConfirmModal
2729
title={title}
30+
titleProps={{
31+
id: titleId,
32+
}}
2833
onCancel={onCancel}
2934
onConfirm={onConfirm}
3035
cancelButtonText={cancelButtonText}
3136
confirmButtonText={confirmButtonText}
3237
buttonColor="danger"
3338
defaultFocusedButton="confirm"
3439
data-test-subj="cancel-creation-confirmation-modal"
40+
aria-labelledby={titleId}
3541
/>
3642
);
3743
};

x-pack/platform/plugins/shared/cases/public/components/custom_fields/delete_confirmation_modal.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
import React from 'react';
9-
import { EuiConfirmModal } from '@elastic/eui';
9+
import { EuiConfirmModal, useGeneratedHtmlId } from '@elastic/eui';
1010
import * as i18n from './translations';
1111

1212
interface ConfirmDeleteCaseModalProps {
@@ -20,6 +20,8 @@ const DeleteConfirmationModalComponent: React.FC<ConfirmDeleteCaseModalProps> =
2020
onCancel,
2121
onConfirm,
2222
}) => {
23+
const titleId = useGeneratedHtmlId();
24+
2325
return (
2426
<EuiConfirmModal
2527
buttonColor="danger"
@@ -29,7 +31,11 @@ const DeleteConfirmationModalComponent: React.FC<ConfirmDeleteCaseModalProps> =
2931
onCancel={onCancel}
3032
onConfirm={onConfirm}
3133
title={i18n.DELETE_FIELD_TITLE(label)}
34+
titleProps={{
35+
id: titleId,
36+
}}
3237
confirmButtonText={i18n.DELETE}
38+
aria-labelledby={titleId}
3339
>
3440
{i18n.DELETE_FIELD_DESCRIPTION}
3541
</EuiConfirmModal>

x-pack/platform/plugins/shared/cases/public/components/observable_types/delete_confirmation_modal.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
import React from 'react';
9-
import { EuiConfirmModal } from '@elastic/eui';
9+
import { EuiConfirmModal, useGeneratedHtmlId } from '@elastic/eui';
1010
import * as i18n from './translations';
1111

1212
interface ConfirmDeleteCaseModalProps {
@@ -20,6 +20,8 @@ const DeleteConfirmationModalComponent: React.FC<ConfirmDeleteCaseModalProps> =
2020
onCancel,
2121
onConfirm,
2222
}) => {
23+
const titleId = useGeneratedHtmlId();
24+
2325
return (
2426
<EuiConfirmModal
2527
buttonColor="danger"
@@ -29,7 +31,11 @@ const DeleteConfirmationModalComponent: React.FC<ConfirmDeleteCaseModalProps> =
2931
onCancel={onCancel}
3032
onConfirm={onConfirm}
3133
title={i18n.DELETE_OBSERVABLE_TYPE_TITLE(label)}
34+
titleProps={{
35+
id: titleId,
36+
}}
3237
confirmButtonText={i18n.DELETE}
38+
aria-labelledby={titleId}
3339
>
3440
{i18n.DELETE_OBSERVABLE_TYPE_DESCRIPTION}
3541
</EuiConfirmModal>

x-pack/platform/plugins/shared/cases/public/components/user_actions/delete_attachment_confirmation_modal.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import React from 'react';
99
import type { EuiConfirmModalProps } from '@elastic/eui';
10-
import { EuiConfirmModal } from '@elastic/eui';
10+
import { EuiConfirmModal, useGeneratedHtmlId } from '@elastic/eui';
1111
import { CANCEL_BUTTON } from './property_actions/translations';
1212

1313
type Pros = Pick<EuiConfirmModalProps, 'title' | 'confirmButtonText' | 'onConfirm' | 'onCancel'>;
@@ -18,16 +18,22 @@ const DeleteAttachmentConfirmationModalComponent: React.FC<Pros> = ({
1818
onConfirm,
1919
onCancel,
2020
}) => {
21+
const titleId = useGeneratedHtmlId();
22+
2123
return (
2224
<EuiConfirmModal
2325
title={title}
26+
titleProps={{
27+
id: titleId,
28+
}}
2429
onCancel={onCancel}
2530
onConfirm={onConfirm}
2631
cancelButtonText={CANCEL_BUTTON}
2732
confirmButtonText={confirmButtonText}
2833
buttonColor="danger"
2934
defaultFocusedButton="confirm"
3035
data-test-subj="property-actions-confirm-modal"
36+
aria-labelledby={titleId}
3137
/>
3238
);
3339
};

0 commit comments

Comments
 (0)