-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathconfirm-dialog.tsx
63 lines (59 loc) · 1.91 KB
/
confirm-dialog.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import React, { FC, useRef } from 'react'
import classNames from 'classnames'
import { DialogBaseProps, DialogBaseWithState, EbayDialogFooter } from '../ebay-dialog-base'
import { EbayButton } from '../ebay-button'
const classPrefix = 'confirm-dialog'
export interface Props<T = any> extends DialogBaseProps<T> {
open?: boolean;
confirmText: string;
rejectText: string;
onReject?: () => void;
onConfirm?: () => void;
}
const EbayConfirmDialog: FC<Props> = ({
a11yCloseText = 'Close Dialog',
confirmText,
rejectText,
onReject = () => {},
onConfirm = () => {},
...rest
}) => {
const confirmBtnRef = useRef(null)
const confirmId = 'confirm-dialog-confirm'
const mainId = 'confirm-dialog-main'
return (
<DialogBaseWithState
focus={confirmBtnRef}
{...rest}
a11yCloseText={a11yCloseText}
role="dialog"
mainId={mainId}
classPrefix={classPrefix}
className={classNames(rest.className, `${classPrefix}--mask-fade`)}
windowClass={`${classPrefix}__window ${classPrefix}__window--fade`}
buttonPosition="hidden"
onCloseBtnClick={onReject}
>
{rest.children}
<EbayDialogFooter>
<EbayButton
onClick={onReject}
className="confirm-dialog__reject"
>
{rejectText}
</EbayButton>
<EbayButton
ref={confirmBtnRef}
priority="primary"
onClick={onConfirm}
id={confirmId}
aria-describedby={mainId}
className="confirm-dialog__confirm"
>
{confirmText}
</EbayButton>
</EbayDialogFooter>
</DialogBaseWithState>
)
}
export default EbayConfirmDialog