@xyo-network/react-appbar 2.35.11 → 2.35.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/CollapsibleDrawer/CollapseToggle.d.ts.map +1 -1
- package/dist/cjs/components/CollapsibleDrawer/CollapseToggle.js +2 -5
- package/dist/cjs/components/CollapsibleDrawer/CollapseToggle.js.map +1 -1
- package/dist/cjs/components/CollapsibleDrawer/ExampleMenuData.d.ts +4 -0
- package/dist/cjs/components/CollapsibleDrawer/ExampleMenuData.d.ts.map +1 -0
- package/dist/cjs/components/CollapsibleDrawer/ExampleMenuData.js +69 -0
- package/dist/cjs/components/CollapsibleDrawer/ExampleMenuData.js.map +1 -0
- package/dist/cjs/components/SiteMenu/MenuIcon.d.ts +2 -2
- package/dist/cjs/components/SiteMenu/MenuIcon.d.ts.map +1 -1
- package/dist/cjs/components/SiteMenu/MenuIcon.js +1 -1
- package/dist/cjs/components/SiteMenu/MenuIcon.js.map +1 -1
- package/dist/cjs/components/SiteMenu/MenuItems.d.ts +12 -0
- package/dist/cjs/components/SiteMenu/MenuItems.d.ts.map +1 -1
- package/dist/cjs/components/SiteMenu/MenuItems.js +13 -2
- package/dist/cjs/components/SiteMenu/MenuItems.js.map +1 -1
- package/dist/cjs/components/SiteMenu/MenuListItemButtonEx.js +1 -1
- package/dist/cjs/components/SiteMenu/MenuListItemButtonEx.js.map +1 -1
- package/dist/cjs/components/SiteMenu/MenuSection.d.ts +10 -0
- package/dist/cjs/components/SiteMenu/MenuSection.d.ts.map +1 -0
- package/dist/cjs/components/SiteMenu/MenuSection.js +13 -0
- package/dist/cjs/components/SiteMenu/MenuSection.js.map +1 -0
- package/dist/cjs/components/SiteMenu/index.d.ts +1 -0
- package/dist/cjs/components/SiteMenu/index.d.ts.map +1 -1
- package/dist/cjs/components/SiteMenu/index.js +1 -0
- package/dist/cjs/components/SiteMenu/index.js.map +1 -1
- package/dist/docs.json +581 -138
- package/dist/esm/components/CollapsibleDrawer/CollapseToggle.d.ts.map +1 -1
- package/dist/esm/components/CollapsibleDrawer/CollapseToggle.js +2 -4
- package/dist/esm/components/CollapsibleDrawer/CollapseToggle.js.map +1 -1
- package/dist/esm/components/CollapsibleDrawer/ExampleMenuData.d.ts +4 -0
- package/dist/esm/components/CollapsibleDrawer/ExampleMenuData.d.ts.map +1 -0
- package/dist/esm/components/CollapsibleDrawer/ExampleMenuData.js +66 -0
- package/dist/esm/components/CollapsibleDrawer/ExampleMenuData.js.map +1 -0
- package/dist/esm/components/SiteMenu/MenuIcon.d.ts +2 -2
- package/dist/esm/components/SiteMenu/MenuIcon.d.ts.map +1 -1
- package/dist/esm/components/SiteMenu/MenuIcon.js +1 -1
- package/dist/esm/components/SiteMenu/MenuIcon.js.map +1 -1
- package/dist/esm/components/SiteMenu/MenuItems.d.ts +12 -0
- package/dist/esm/components/SiteMenu/MenuItems.d.ts.map +1 -1
- package/dist/esm/components/SiteMenu/MenuItems.js +13 -2
- package/dist/esm/components/SiteMenu/MenuItems.js.map +1 -1
- package/dist/esm/components/SiteMenu/MenuListItemButtonEx.js +1 -1
- package/dist/esm/components/SiteMenu/MenuListItemButtonEx.js.map +1 -1
- package/dist/esm/components/SiteMenu/MenuSection.d.ts +10 -0
- package/dist/esm/components/SiteMenu/MenuSection.d.ts.map +1 -0
- package/dist/esm/components/SiteMenu/MenuSection.js +7 -0
- package/dist/esm/components/SiteMenu/MenuSection.js.map +1 -0
- package/dist/esm/components/SiteMenu/index.d.ts +1 -0
- package/dist/esm/components/SiteMenu/index.d.ts.map +1 -1
- package/dist/esm/components/SiteMenu/index.js +1 -0
- package/dist/esm/components/SiteMenu/index.js.map +1 -1
- package/package.json +7 -6
- package/src/components/CollapsibleDrawer/CollapseDrawer.stories.tsx +9 -17
- package/src/components/CollapsibleDrawer/CollapseToggle.tsx +2 -4
- package/src/components/CollapsibleDrawer/ExampleMenuData.tsx +81 -0
- package/src/components/SiteMenu/MenuIcon.tsx +3 -4
- package/src/components/SiteMenu/MenuItem.stories.tsx +9 -10
- package/src/components/SiteMenu/MenuItems.tsx +65 -8
- package/src/components/SiteMenu/MenuListItemButtonEx.tsx +1 -1
- package/src/components/SiteMenu/MenuSection.tsx +22 -0
- package/src/components/SiteMenu/index.ts +1 -0
@@ -1,8 +1,11 @@
|
|
1
|
-
import { ListItemProps, ListItemTextProps } from '@mui/material'
|
1
|
+
import { Collapse, IconButton, List, ListItemProps, ListItemTextProps, Tooltip, useTheme } from '@mui/material'
|
2
|
+
import { FlexCol, FlexRow } from '@xylabs/react-flexbox'
|
2
3
|
import { ListItemButtonExProps } from '@xyo-network/react-shared'
|
3
|
-
import { ReactNode } from 'react'
|
4
|
+
import { ReactNode, useState } from 'react'
|
5
|
+
import { VscChevronDown, VscInfo } from 'react-icons/vsc'
|
4
6
|
import { To } from 'react-router-dom'
|
5
7
|
|
8
|
+
import { useCollapsible } from '../../contexts'
|
6
9
|
import { SiteMenuListItemBase } from './lib'
|
7
10
|
import { MenuIcon } from './MenuIcon'
|
8
11
|
import { MenuListItem } from './MenuListItem'
|
@@ -12,14 +15,28 @@ import { MenuListItemText } from './MenuListItemText'
|
|
12
15
|
export interface SiteMenuListItemProps extends SiteMenuListItemBase, ListItemProps {
|
13
16
|
primary: ListItemTextProps['primary']
|
14
17
|
to?: To
|
18
|
+
href?: string
|
15
19
|
icon?: ReactNode
|
16
20
|
onButtonClick?: ListItemButtonExProps['onClick']
|
21
|
+
subNavListItems?: SubNavListItemProps[]
|
22
|
+
tooltip?: string
|
23
|
+
subNavOpen?: boolean
|
24
|
+
}
|
25
|
+
|
26
|
+
export interface SubNavListItemProps {
|
27
|
+
primary: ListItemTextProps['primary']
|
28
|
+
to?: To
|
29
|
+
href?: string
|
30
|
+
icon?: ReactNode
|
31
|
+
onButtonClick?: ListItemButtonExProps['onClick']
|
32
|
+
tooltip?: string
|
17
33
|
}
|
18
34
|
|
19
35
|
export const SiteMenuListItem: React.FC<SiteMenuListItemProps> = ({
|
20
36
|
style,
|
21
|
-
|
37
|
+
subNavListItems,
|
22
38
|
iconOnly,
|
39
|
+
tooltip,
|
23
40
|
collapseEnd,
|
24
41
|
icon,
|
25
42
|
primary,
|
@@ -28,13 +45,53 @@ export const SiteMenuListItem: React.FC<SiteMenuListItemProps> = ({
|
|
28
45
|
...props
|
29
46
|
}) => {
|
30
47
|
const { dense } = props
|
48
|
+
const theme = useTheme()
|
49
|
+
const { collapse } = useCollapsible()
|
50
|
+
const [openSubNav, setOpenSubNav] = useState(false)
|
51
|
+
const [hovered, setHovered] = useState(false)
|
31
52
|
return (
|
32
|
-
<MenuListItem style={{ whiteSpace: 'nowrap', ...style }} iconOnly={iconOnly} {...props}>
|
33
|
-
<MenuListItemButtonEx
|
34
|
-
|
35
|
-
|
53
|
+
<MenuListItem disableGutters style={{ whiteSpace: 'nowrap', ...style }} iconOnly={iconOnly} {...props}>
|
54
|
+
<MenuListItemButtonEx
|
55
|
+
iconOnly={iconOnly}
|
56
|
+
onClick={onButtonClick}
|
57
|
+
collapseEnd={collapseEnd}
|
58
|
+
dense={dense}
|
59
|
+
to={to}
|
60
|
+
sx={{ justifyContent: 'space-between' }}
|
61
|
+
onMouseEnter={() => setHovered(true)}
|
62
|
+
onMouseLeave={() => setHovered(false)}
|
63
|
+
>
|
64
|
+
<FlexRow>
|
65
|
+
<MenuIcon icon={icon} paddingRight={theme.spacing(1)} color={hovered ? 'primary' : 'inherit'} />
|
66
|
+
<MenuListItemText primary={primary} iconOnly={iconOnly} />
|
67
|
+
</FlexRow>
|
68
|
+
<FlexRow>
|
69
|
+
{subNavListItems ? (
|
70
|
+
<IconButton onClick={() => setOpenSubNav(!openSubNav)} sx={{ marginRight: theme.spacing(1) }}>
|
71
|
+
<VscChevronDown fontSize="16px" />
|
72
|
+
</IconButton>
|
73
|
+
) : null}
|
74
|
+
{tooltip ? (
|
75
|
+
<Tooltip title={tooltip} placement="right">
|
76
|
+
{/* Needs div so it can work, the hovering doesn't work with a FlexCol */}
|
77
|
+
<div>
|
78
|
+
<FlexCol justifyContent="center">
|
79
|
+
<VscInfo color="grey" />
|
80
|
+
</FlexCol>
|
81
|
+
</div>
|
82
|
+
</Tooltip>
|
83
|
+
) : null}
|
84
|
+
</FlexRow>
|
36
85
|
</MenuListItemButtonEx>
|
37
|
-
{
|
86
|
+
{subNavListItems ? (
|
87
|
+
<Collapse in={collapse == true ? false : openSubNav}>
|
88
|
+
<List>
|
89
|
+
{subNavListItems.map((item, index) => {
|
90
|
+
return <SiteMenuListItem sx={{ pl: theme.spacing(1) }} key={index} {...item} />
|
91
|
+
})}
|
92
|
+
</List>
|
93
|
+
</Collapse>
|
94
|
+
) : null}
|
38
95
|
</MenuListItem>
|
39
96
|
)
|
40
97
|
}
|
@@ -5,7 +5,7 @@ import { SiteMenuListItemBase } from './lib'
|
|
5
5
|
export interface MenuListItemButtonExProps extends SiteMenuListItemBase, ListItemButtonExProps {}
|
6
6
|
|
7
7
|
export const MenuListItemButtonEx: React.FC<MenuListItemButtonExProps> = ({ iconOnly, collapseEnd, sx, children, ...props }) => {
|
8
|
-
const
|
8
|
+
const dense = props
|
9
9
|
const listItemButtonSx = iconOnly ? { borderRadius: '50%', display: 'inline-flex', flexGrow: 0 } : {}
|
10
10
|
// wait till collapseEnds to remove the spacing between items
|
11
11
|
const spacingSx = collapseEnd ? { columnGap: 0 } : { columnGap: 1.5 }
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { List, ListProps, ListSubheader } from '@mui/material'
|
2
|
+
|
3
|
+
import { SiteMenuListItem, SiteMenuListItemProps } from './MenuItems'
|
4
|
+
|
5
|
+
export interface MenuSectionProps extends ListProps {
|
6
|
+
title: string
|
7
|
+
listItems: SiteMenuListItemProps[]
|
8
|
+
showTitle?: boolean
|
9
|
+
}
|
10
|
+
|
11
|
+
export const MenuSection: React.FC<MenuSectionProps> = ({ title, listItems, showTitle = true, ...props }) => {
|
12
|
+
return (
|
13
|
+
<List {...props}>
|
14
|
+
{showTitle ? <ListSubheader>{title}</ListSubheader> : null}
|
15
|
+
{listItems.map((item, index) => (
|
16
|
+
<>
|
17
|
+
<SiteMenuListItem key={index} {...item}></SiteMenuListItem>
|
18
|
+
</>
|
19
|
+
))}
|
20
|
+
</List>
|
21
|
+
)
|
22
|
+
}
|