PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / dashboard / pages / settings / shared / ConfirmDialog.js
presto-player / src / admin / dashboard / pages / settings / shared Last commit date
ConfirmDialog.js 1 month ago LabelWithTooltip.js 1 month ago ProGate.js 1 month ago SectionCard.js 1 month ago SettingsDataProvider.js 1 month ago SettingsPageShell.js 1 month ago UnsavedChangesDialog.js 1 month ago navigationGuard.js 1 month ago
ConfirmDialog.js
77 lines
1 import { __ } from '@wordpress/i18n';
2 import { useState } from 'react';
3 import { Dialog, Button } from '@bsf/force-ui';
4
5 const ConfirmDialog = ( {
6 open,
7 title,
8 description,
9 confirmLabel,
10 cancelLabel,
11 confirmVariant = 'primary',
12 confirmDestructive = false,
13 onConfirm,
14 onCancel,
15 children,
16 } ) => {
17 const [ isBusy, setIsBusy ] = useState( false );
18
19 const handleConfirm = async () => {
20 setIsBusy( true );
21 try {
22 await onConfirm?.();
23 } finally {
24 setIsBusy( false );
25 }
26 };
27
28 return (
29 <Dialog
30 design="simple"
31 exitOnEsc
32 scrollLock
33 open={ open }
34 setOpen={ ( next ) => {
35 if ( ! next ) {
36 onCancel?.();
37 }
38 } }
39 >
40 <Dialog.Backdrop />
41 <Dialog.Panel>
42 <Dialog.Header>
43 <Dialog.Title>{ title }</Dialog.Title>
44 </Dialog.Header>
45
46 { ( description || children ) && (
47 <Dialog.Body>
48 { description && (
49 <Dialog.Description>
50 { description }
51 </Dialog.Description>
52 ) }
53 { children }
54 </Dialog.Body>
55 ) }
56
57 <Dialog.Footer>
58 <Button variant="ghost" onClick={ onCancel } disabled={ isBusy }>
59 { cancelLabel || __( 'Cancel', 'presto-player' ) }
60 </Button>
61 <Button
62 variant={ confirmVariant }
63 destructive={ confirmDestructive }
64 onClick={ handleConfirm }
65 disabled={ isBusy }
66 loading={ isBusy }
67 >
68 { confirmLabel || __( 'Confirm', 'presto-player' ) }
69 </Button>
70 </Dialog.Footer>
71 </Dialog.Panel>
72 </Dialog>
73 );
74 };
75
76 export default ConfirmDialog;
77