@xyo-network/react-appbar 2.35.12 → 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.
Files changed (61) hide show
  1. package/dist/cjs/components/CollapsibleDrawer/CollapseToggle.d.ts.map +1 -1
  2. package/dist/cjs/components/CollapsibleDrawer/CollapseToggle.js +2 -5
  3. package/dist/cjs/components/CollapsibleDrawer/CollapseToggle.js.map +1 -1
  4. package/dist/cjs/components/CollapsibleDrawer/ExampleMenuData.d.ts +4 -0
  5. package/dist/cjs/components/CollapsibleDrawer/ExampleMenuData.d.ts.map +1 -0
  6. package/dist/cjs/components/CollapsibleDrawer/ExampleMenuData.js +69 -0
  7. package/dist/cjs/components/CollapsibleDrawer/ExampleMenuData.js.map +1 -0
  8. package/dist/cjs/components/SiteMenu/MenuIcon.d.ts +2 -2
  9. package/dist/cjs/components/SiteMenu/MenuIcon.d.ts.map +1 -1
  10. package/dist/cjs/components/SiteMenu/MenuIcon.js +1 -1
  11. package/dist/cjs/components/SiteMenu/MenuIcon.js.map +1 -1
  12. package/dist/cjs/components/SiteMenu/MenuItems.d.ts +12 -0
  13. package/dist/cjs/components/SiteMenu/MenuItems.d.ts.map +1 -1
  14. package/dist/cjs/components/SiteMenu/MenuItems.js +13 -2
  15. package/dist/cjs/components/SiteMenu/MenuItems.js.map +1 -1
  16. package/dist/cjs/components/SiteMenu/MenuListItemButtonEx.js +1 -1
  17. package/dist/cjs/components/SiteMenu/MenuListItemButtonEx.js.map +1 -1
  18. package/dist/cjs/components/SiteMenu/MenuSection.d.ts +10 -0
  19. package/dist/cjs/components/SiteMenu/MenuSection.d.ts.map +1 -0
  20. package/dist/cjs/components/SiteMenu/MenuSection.js +13 -0
  21. package/dist/cjs/components/SiteMenu/MenuSection.js.map +1 -0
  22. package/dist/cjs/components/SiteMenu/index.d.ts +1 -0
  23. package/dist/cjs/components/SiteMenu/index.d.ts.map +1 -1
  24. package/dist/cjs/components/SiteMenu/index.js +1 -0
  25. package/dist/cjs/components/SiteMenu/index.js.map +1 -1
  26. package/dist/docs.json +581 -138
  27. package/dist/esm/components/CollapsibleDrawer/CollapseToggle.d.ts.map +1 -1
  28. package/dist/esm/components/CollapsibleDrawer/CollapseToggle.js +2 -4
  29. package/dist/esm/components/CollapsibleDrawer/CollapseToggle.js.map +1 -1
  30. package/dist/esm/components/CollapsibleDrawer/ExampleMenuData.d.ts +4 -0
  31. package/dist/esm/components/CollapsibleDrawer/ExampleMenuData.d.ts.map +1 -0
  32. package/dist/esm/components/CollapsibleDrawer/ExampleMenuData.js +66 -0
  33. package/dist/esm/components/CollapsibleDrawer/ExampleMenuData.js.map +1 -0
  34. package/dist/esm/components/SiteMenu/MenuIcon.d.ts +2 -2
  35. package/dist/esm/components/SiteMenu/MenuIcon.d.ts.map +1 -1
  36. package/dist/esm/components/SiteMenu/MenuIcon.js +1 -1
  37. package/dist/esm/components/SiteMenu/MenuIcon.js.map +1 -1
  38. package/dist/esm/components/SiteMenu/MenuItems.d.ts +12 -0
  39. package/dist/esm/components/SiteMenu/MenuItems.d.ts.map +1 -1
  40. package/dist/esm/components/SiteMenu/MenuItems.js +13 -2
  41. package/dist/esm/components/SiteMenu/MenuItems.js.map +1 -1
  42. package/dist/esm/components/SiteMenu/MenuListItemButtonEx.js +1 -1
  43. package/dist/esm/components/SiteMenu/MenuListItemButtonEx.js.map +1 -1
  44. package/dist/esm/components/SiteMenu/MenuSection.d.ts +10 -0
  45. package/dist/esm/components/SiteMenu/MenuSection.d.ts.map +1 -0
  46. package/dist/esm/components/SiteMenu/MenuSection.js +7 -0
  47. package/dist/esm/components/SiteMenu/MenuSection.js.map +1 -0
  48. package/dist/esm/components/SiteMenu/index.d.ts +1 -0
  49. package/dist/esm/components/SiteMenu/index.d.ts.map +1 -1
  50. package/dist/esm/components/SiteMenu/index.js +1 -0
  51. package/dist/esm/components/SiteMenu/index.js.map +1 -1
  52. package/package.json +7 -6
  53. package/src/components/CollapsibleDrawer/CollapseDrawer.stories.tsx +9 -17
  54. package/src/components/CollapsibleDrawer/CollapseToggle.tsx +2 -4
  55. package/src/components/CollapsibleDrawer/ExampleMenuData.tsx +81 -0
  56. package/src/components/SiteMenu/MenuIcon.tsx +3 -4
  57. package/src/components/SiteMenu/MenuItem.stories.tsx +9 -10
  58. package/src/components/SiteMenu/MenuItems.tsx +65 -8
  59. package/src/components/SiteMenu/MenuListItemButtonEx.tsx +1 -1
  60. package/src/components/SiteMenu/MenuSection.tsx +22 -0
  61. 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
- children,
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 iconOnly={iconOnly} onClick={onButtonClick} collapseEnd={collapseEnd} dense={dense} to={to}>
34
- <MenuIcon icon={icon} />
35
- <MenuListItemText primary={primary} iconOnly={iconOnly} />
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
- {children}
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 { dense } = props
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
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './hooks'
2
2
  export * from './Menu'
3
3
  export * from './MenuItems'
4
+ export * from './MenuSection'