PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.3
GiveWP – Donation Plugin and Fundraising Platform v3.0.3
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Views / Components / AdminUI / ModalDialog / index.tsx
give / src / Views / Components / AdminUI / ModalDialog Last commit date
index.tsx 2 years ago style.scss 2 years ago
index.tsx
99 lines
1 import {MouseEventHandler, useCallback, useEffect} from 'react';
2 import {createPortal} from 'react-dom';
3 import {__} from '@wordpress/i18n';
4 import {ExitIcon} from '@givewp/components/AdminUI/Icons';
5 import './style.scss';
6
7 export interface ModalProps {
8 children: JSX.Element | JSX.Element[];
9 title: string;
10 isOpen?: boolean;
11 icon?: JSX.Element | JSX.Element[];
12 insertInto?: string;
13 handleClose?: MouseEventHandler;
14 showHeader?: boolean;
15 showCloseIcon?: boolean;
16 }
17
18 export default function Modal
19 ({
20 title,
21 icon,
22 children,
23 insertInto,
24 handleClose,
25 isOpen = true,
26 showHeader = true,
27 showCloseIcon = true
28 }: ModalProps) {
29 // ESC key closes modal
30 const closeModal = useCallback(e => {
31 if (e.keyCode === 27 && typeof handleClose === 'function') {
32 handleClose(e);
33 }
34 }, []);
35
36 useEffect(() => {
37 document.addEventListener('keydown', closeModal, false);
38
39 return () => {
40 document.removeEventListener('keydown', closeModal, false);
41 };
42 }, []);
43
44 if (!isOpen) return null;
45
46 return createPortal(
47 <div className="givewp-modal-wrapper">
48 <div
49 role="dialog"
50 aria-label={title}
51 className="givewp-modal-dialog"
52 >
53 {showHeader ? (
54 <div className="givewp-modal-header">
55 {icon && (
56 <div className="givewp-modal-icon-header">
57 {icon}
58 </div>
59 )}
60 {title}
61 {showCloseIcon && handleClose && (
62 <button
63 aria-label={__('Close dialog', 'give')}
64 className="givewp-modal-close"
65 onClick={handleClose}
66 >
67 <ExitIcon aria-label={__('Close dialog icon', 'give')} />
68 </button>
69 )}
70 </div>
71 ) : (
72 <>
73 {showCloseIcon && handleClose && (
74 <button
75 aria-label={__('Close dialog', 'give')}
76 className="givewp-modal-close-headless"
77 onClick={handleClose}
78 >
79 <ExitIcon aria-label={__('Close dialog icon', 'give')} />
80 </button>
81 )}
82 {icon && (
83 <div className="givewp-modal-icon-center">
84 {icon}
85 </div>
86 )}
87 </>
88 )}
89
90 <div className="givewp-modal-content">
91 {children}
92 </div>
93 </div>
94 </div>,
95 insertInto ? document.querySelector(insertInto) : document.body
96 );
97 }
98
99