-
-
Notifications
You must be signed in to change notification settings - Fork 530
Expand file tree
/
Copy pathPreferencesMenuView.tsx
More file actions
59 lines (54 loc) · 1.81 KB
/
PreferencesMenuView.tsx
File metadata and controls
59 lines (54 loc) · 1.81 KB
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
import { observer } from 'mobx-react-lite'
import { FunctionComponent, useMemo } from 'react'
import Dropdown from '../Dropdown/Dropdown'
import { DropdownItem } from '../Dropdown/DropdownItem'
import PreferencesMenuItem from './PreferencesComponents/MenuItem'
import { PreferencesSessionController } from './Controller/PreferencesSessionController'
type Props = {
menu: PreferencesSessionController
}
const PreferencesMenuView: FunctionComponent<Props> = ({ menu }) => {
const { selectedPaneId, selectPane, menuItems } = menu
const dropdownMenuItems: DropdownItem[] = useMemo(
() =>
menuItems.map((menuItem) => ({
icon: menuItem.icon,
label: menuItem.label,
value: menuItem.id,
})),
[menuItems],
)
return (
<div className="border-b border-border bg-default px-5 py-2 md:border-0 md:bg-[--preferences-background-color] md:px-0 md:py-0">
<div className="hidden min-w-55 flex-col overflow-y-auto px-3 py-6 md:flex">
{menuItems.map((pref) => (
<PreferencesMenuItem
key={pref.id}
iconType={pref.icon}
label={pref.label}
selected={pref.selected}
bubbleCount={pref.bubbleCount}
hasErrorIndicator={pref.hasErrorIndicator}
onClick={() => {
selectPane(pref.id)
}}
/>
))}
</div>
<div className="md:hidden">
<Dropdown
items={dropdownMenuItems}
label="Preferences Menu"
value={selectedPaneId}
onChange={selectPane}
classNameOverride={{
wrapper: 'relative',
button: 'focus:outline-none focus:shadow-none focus:ring-none',
}}
popoverPlacement="bottom"
/>
</div>
</div>
)
}
export default observer(PreferencesMenuView)