/
more-examples.js
144 lines (138 loc) · 3.99 KB
/
more-examples.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/**
* WordPress dependencies
*/
import { useEffect, useState } from '@wordpress/element';
import { Icon, wordpress, home } from '@wordpress/icons';
/**
* Internal dependencies
*/
import Navigation from '..';
import NavigationGroup from '../group';
import NavigationItem from '../item';
import NavigationMenu from '../menu';
export function MoreExamplesStory() {
const [ activeItem, setActiveItem ] = useState( 'child-1' );
const [ delayedBadge, setDelayedBadge ] = useState();
useEffect( () => {
const timeout = setTimeout( () => setDelayedBadge( 2 ), 1500 );
return () => clearTimeout( timeout );
} );
const [ backButtonBadge, setBackButtonBadge ] = useState( 1 );
const [ backButtonPreventedBadge, setBackButtonPreventedBadge ] = useState(
1
);
return (
<Navigation activeItem={ activeItem } className="navigation-story">
<NavigationMenu title="Home">
<NavigationGroup title="Items without Active State">
<NavigationItem item="item-1" title="Item 1" />
<NavigationItem item="item-2" title="Item 2" />
</NavigationGroup>
<NavigationGroup title="Items with Unusual Features">
<NavigationItem
icon={ home }
item="item-sub-menu"
navigateToMenu="sub-menu"
title="Sub-Menu with Custom Back Label"
/>
<NavigationItem
item="item-custom-back-click-handler"
navigateToMenu="custom-back-click-handler-menu"
title="Custom Back Click Handler"
badge={ backButtonBadge }
/>
<NavigationItem
item="item-custom-back-click-handler-prevented"
navigateToMenu="custom-back-click-handler-prevented-menu"
title="Prevent back navigation"
/>
<NavigationItem
item="item-nonexistent-menu"
navigateToMenu="nonexistent-menu"
title="Navigate to Nonexistent Menu"
/>
<NavigationItem
badge={ delayedBadge }
item="item-delayed-badge"
onClick={ () => setActiveItem( 'item-delayed-badge' ) }
title="Item with a Delayed Badge"
/>
</NavigationGroup>
<NavigationGroup title="External Links">
<NavigationItem
href="https://wordpress.org/"
item="item-4"
target="_blank"
title="WordPress.org"
/>
<NavigationItem item="item-5">
<a
className="navigation-story__wordpress-icon"
href="https://wordpress.org/"
target="_blank"
rel="noreferrer"
>
<Icon icon={ wordpress } />
<em>Custom Content</em>
</a>
</NavigationItem>
</NavigationGroup>
<NavigationGroup title="Text only items">
<NavigationItem
item="item-text-only"
title="This is just text, doesn't have any functionality"
isText
/>
<NavigationItem
item="item-text-only-with-badge"
title="Text with badge"
badge="2"
isText
/>
</NavigationGroup>
</NavigationMenu>
<NavigationMenu
backButtonLabel="Custom Back Button Label"
menu="sub-menu"
parentMenu="root"
title="Sub-Menu with Custom Back Label"
>
<NavigationItem
item="child-1"
onClick={ () => setActiveItem( 'child-1' ) }
title="Child 1"
/>
<NavigationItem
item="child-2"
onClick={ () => setActiveItem( 'child-2' ) }
title="Child 2"
/>
</NavigationMenu>
<NavigationMenu
menu="custom-back-click-handler-menu"
title="Custom back button click handler"
parentMenu="root"
onBackButtonClick={ () =>
setBackButtonBadge( backButtonBadge + 1 )
}
backButtonLabel="Increment badge and go back"
/>
<NavigationMenu
menu="custom-back-click-handler-prevented-menu"
title="Custom back button click handler prevented"
parentMenu="root"
onBackButtonClick={ ( event ) => {
event.preventDefault();
setBackButtonPreventedBadge( backButtonPreventedBadge + 1 );
} }
backButtonLabel="Increment badge"
>
<NavigationItem
item="custom-back-click-prevented-child-1"
title="You can't go back from here"
badge={ backButtonPreventedBadge }
/>
</NavigationMenu>
</Navigation>
);
}