PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
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 / UnsavedChangesDialog.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
UnsavedChangesDialog.js
76 lines
1 import { __ } from '@wordpress/i18n';
2 import { useState } from 'react';
3 import { Dialog, Button, Loader } from '@bsf/force-ui';
4
5 const UnsavedChangesDialog = ( { open, onSave, onDiscard, onCancel } ) => {
6 const [ isSaving, setIsSaving ] = useState( false );
7
8 const handleSave = async () => {
9 setIsSaving( true );
10 try {
11 await onSave?.();
12 } finally {
13 setIsSaving( false );
14 }
15 };
16
17 return (
18 <Dialog
19 design="simple"
20 exitOnEsc
21 scrollLock
22 open={ open }
23 setOpen={ ( next ) => {
24 if ( ! next ) {
25 onCancel?.();
26 }
27 } }
28 >
29 <Dialog.Backdrop />
30 <Dialog.Panel>
31 <Dialog.Header>
32 <Dialog.Title>
33 { __( 'Unsaved changes', 'presto-player' ) }
34 </Dialog.Title>
35 <Dialog.Description>
36 { __(
37 'You have unsaved changes on this page. What would you like to do?',
38 'presto-player'
39 ) }
40 </Dialog.Description>
41 </Dialog.Header>
42
43 <Dialog.Footer>
44 <Button
45 variant="outline"
46 onClick={ onDiscard }
47 disabled={ isSaving }
48 >
49 { __( 'Discard Changes', 'presto-player' ) }
50 </Button>
51 <Button
52 variant="primary"
53 onClick={ handleSave }
54 disabled={ isSaving }
55 icon={
56 isSaving && (
57 <Loader
58 icon={ null }
59 size="sm"
60 variant="primary"
61 className="bg-transparent"
62 />
63 )
64 }
65 iconPosition="right"
66 >
67 { __( 'Save & Continue', 'presto-player' ) }
68 </Button>
69 </Dialog.Footer>
70 </Dialog.Panel>
71 </Dialog>
72 );
73 };
74
75 export default UnsavedChangesDialog;
76