PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.3
Presto Player v4.3.3
4.3.3 4.3.2 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 2 months ago LabelWithTooltip.js 2 months ago ProGate.js 2 months ago SectionCard.js 2 months ago SettingsDataProvider.js 2 months ago SettingsPageShell.js 2 months ago UnsavedChangesDialog.js 2 months ago navigationGuard.js 2 months 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