-
Notifications
You must be signed in to change notification settings - Fork 4.2k
/
rename-modal.js
62 lines (54 loc) · 1.53 KB
/
rename-modal.js
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
/**
* WordPress dependencies
*/
import {
__experimentalHStack as HStack,
__experimentalVStack as VStack,
Button,
TextControl,
Modal,
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { useState } from '@wordpress/element';
const notEmptyString = ( testString ) => testString?.trim()?.length > 0;
export default function RenameModal( { menuTitle, onClose, onSave } ) {
const [ editedMenuTitle, setEditedMenuTitle ] = useState( menuTitle );
const titleHasChanged = editedMenuTitle !== menuTitle;
const isEditedMenuTitleValid =
titleHasChanged && notEmptyString( editedMenuTitle );
return (
<Modal title={ __( 'Rename' ) } onRequestClose={ onClose }>
<form className="sidebar-navigation__rename-modal-form">
<VStack spacing="3">
<TextControl
__nextHasNoMarginBottom
value={ editedMenuTitle }
placeholder={ __( 'Navigation title' ) }
onChange={ setEditedMenuTitle }
/>
<HStack justify="right">
<Button variant="tertiary" onClick={ onClose }>
{ __( 'Cancel' ) }
</Button>
<Button
disabled={ ! isEditedMenuTitleValid }
variant="primary"
type="submit"
onClick={ ( e ) => {
e.preventDefault();
if ( ! isEditedMenuTitleValid ) {
return;
}
onSave( { title: editedMenuTitle } );
// Immediate close avoids ability to hit save multiple times.
onClose();
} }
>
{ __( 'Save' ) }
</Button>
</HStack>
</VStack>
</form>
</Modal>
);
}