Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
frontend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
frontend
Commits
c65d3a60
Commit
c65d3a60
authored
Aug 27, 2022
by
tom
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
network menu
parent
c4669d53
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
141 additions
and
35 deletions
+141
-35
Burger.tsx
ui/header/Burger.tsx
+17
-19
NavigationMobile.tsx
ui/navigation/NavigationMobile.tsx
+30
-0
NetworkMenu.tsx
ui/navigation/networkMenu/NetworkMenu.tsx
+5
-16
NetworkMenuButton.tsx
ui/navigation/networkMenu/NetworkMenuButton.tsx
+44
-0
NetworkMenuContentMobile.tsx
ui/navigation/networkMenu/NetworkMenuContentMobile.tsx
+45
-0
No files found.
ui/header/Burger.tsx
View file @
c65d3a60
import
{
Icon
,
Box
,
Flex
,
VStack
,
Drawer
,
DrawerOverlay
,
DrawerContent
,
DrawerBody
,
useColorModeValue
,
useDisclosure
}
from
'
@chakra-ui/react
'
;
import
{
Icon
,
Box
,
Flex
,
Drawer
,
DrawerOverlay
,
DrawerContent
,
DrawerBody
,
useColorModeValue
,
useDisclosure
}
from
'
@chakra-ui/react
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
burgerIcon
from
'
icons/burger.svg
'
;
import
burgerIcon
from
'
icons/burger.svg
'
;
import
useNavItems
from
'
lib/hooks/useNavItems
'
;
import
NavigationMobile
from
'
ui/navigation/NavigationMobile
'
;
import
NavFooter
from
'
ui/navigation/NavFooter
'
;
import
NavLink
from
'
ui/navigation/NavLink
'
;
import
NetworkLogo
from
'
ui/navigation/NetworkLogo
'
;
import
NetworkLogo
from
'
ui/navigation/NetworkLogo
'
;
import
NetworkMenuButton
from
'
ui/navigation/networkMenu/NetworkMenuButton
'
;
import
NetworkMenuContentMobile
from
'
ui/navigation/networkMenu/NetworkMenuContentMobile
'
;
const
Burger
=
()
=>
{
const
Burger
=
()
=>
{
const
iconColor
=
useColorModeValue
(
'
gray.600
'
,
'
white
'
);
const
iconColor
=
useColorModeValue
(
'
gray.600
'
,
'
white
'
);
const
{
isOpen
,
onOpen
,
onClose
}
=
useDisclosure
();
const
{
isOpen
,
onOpen
,
onClose
}
=
useDisclosure
();
const
{
mainNavItems
,
accountNavItems
}
=
useNavItems
();
const
[
isNetworkMenuOpened
,
setNetworkMenuVisibility
]
=
React
.
useState
(
false
);
const
router
=
useRouter
();
const
handleNetworkMenuButtonClick
=
React
.
useCallback
(()
=>
{
setNetworkMenuVisibility
((
flag
)
=>
!
flag
);
},
[]);
return
(
return
(
<>
<>
...
@@ -32,20 +34,16 @@ const Burger = () => {
...
@@ -32,20 +34,16 @@ const Burger = () => {
<
DrawerOverlay
bgColor=
"blackAlpha.800"
/>
<
DrawerOverlay
bgColor=
"blackAlpha.800"
/>
<
DrawerContent
maxWidth=
"260px"
>
<
DrawerContent
maxWidth=
"260px"
>
<
DrawerBody
p=
{
6
}
>
<
DrawerBody
p=
{
6
}
>
<
Flex
>
<
Flex
alignItems=
"center"
justifyContent=
"space-between"
>
<
NetworkLogo
/>
<
NetworkLogo
/>
<
NetworkMenuButton
isCollapsed
isMobile
isActive=
{
isNetworkMenuOpened
}
onClick=
{
handleNetworkMenuButtonClick
}
/>
</
Flex
>
</
Flex
>
<
Box
as=
"nav"
mt=
{
8
}
>
{
isNetworkMenuOpened
?
<
NetworkMenuContentMobile
/>
:
<
NavigationMobile
/>
}
<
VStack
as=
"ul"
spacing=
"2"
alignItems=
"flex-start"
overflow=
"hidden"
>
{
mainNavItems
.
map
((
item
)
=>
<
NavLink
key=
{
item
.
text
}
{
...
item
}
isActive=
{
router
.
asPath
===
item
.
pathname
}
/>)
}
</
VStack
>
</
Box
>
<
Box
as=
"nav"
mt=
{
6
}
>
<
VStack
as=
"ul"
spacing=
"2"
alignItems=
"flex-start"
overflow=
"hidden"
>
{
accountNavItems
.
map
((
item
)
=>
<
NavLink
key=
{
item
.
text
}
{
...
item
}
isActive=
{
router
.
asPath
===
item
.
pathname
}
/>)
}
</
VStack
>
</
Box
>
<
NavFooter
/>
</
DrawerBody
>
</
DrawerBody
>
</
DrawerContent
>
</
DrawerContent
>
</
Drawer
>
</
Drawer
>
...
...
ui/navigation/NavigationMobile.tsx
0 → 100644
View file @
c65d3a60
import
{
Box
,
VStack
}
from
'
@chakra-ui/react
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
from
'
react
'
;
import
useNavItems
from
'
lib/hooks/useNavItems
'
;
import
NavFooter
from
'
ui/navigation/NavFooter
'
;
import
NavLink
from
'
ui/navigation/NavLink
'
;
const
NavigationMobile
=
()
=>
{
const
{
mainNavItems
,
accountNavItems
}
=
useNavItems
();
const
router
=
useRouter
();
return
(
<>
<
Box
as=
"nav"
mt=
{
8
}
>
<
VStack
as=
"ul"
spacing=
"2"
alignItems=
"flex-start"
overflow=
"hidden"
>
{
mainNavItems
.
map
((
item
)
=>
<
NavLink
key=
{
item
.
text
}
{
...
item
}
isActive=
{
router
.
asPath
===
item
.
pathname
}
/>)
}
</
VStack
>
</
Box
>
<
Box
as=
"nav"
mt=
{
6
}
>
<
VStack
as=
"ul"
spacing=
"2"
alignItems=
"flex-start"
overflow=
"hidden"
>
{
accountNavItems
.
map
((
item
)
=>
<
NavLink
key=
{
item
.
text
}
{
...
item
}
isActive=
{
router
.
asPath
===
item
.
pathname
}
/>)
}
</
VStack
>
</
Box
>
<
NavFooter
/>
</>
);
};
export
default
NavigationMobile
;
ui/navigation/networkMenu/NetworkMenu.tsx
View file @
c65d3a60
import
{
Popover
,
PopoverTrigger
,
Icon
,
useColorModeValue
,
Button
}
from
'
@chakra-ui/react
'
;
import
{
Popover
,
PopoverTrigger
,
Box
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
networksIcon
from
'
icons/networks.svg
'
;
import
NetworkMenuButton
from
'
./NetworkMenuButton
'
;
import
getDefaultTransitionProps
from
'
theme/utils/getDefaultTransitionProps
'
;
import
NetworkMenuPopup
from
'
./NetworkMenuPopup
'
;
import
NetworkMenuPopup
from
'
./NetworkMenuPopup
'
;
interface
Props
{
interface
Props
{
...
@@ -14,18 +12,9 @@ const NetworkMenu = ({ isCollapsed }: Props) => {
...
@@ -14,18 +12,9 @@ const NetworkMenu = ({ isCollapsed }: Props) => {
return
(
return
(
<
Popover
openDelay=
{
300
}
placement=
"right-start"
gutter=
{
22
}
isLazy
>
<
Popover
openDelay=
{
300
}
placement=
"right-start"
gutter=
{
22
}
isLazy
>
<
PopoverTrigger
>
<
PopoverTrigger
>
<
Button
variant=
"unstyled"
display=
"inline-flex"
alignSelf=
"stretch"
alignItems=
"center"
>
<
Box
>
<
Icon
<
NetworkMenuButton
isCollapsed=
{
isCollapsed
}
/>
as=
{
networksIcon
}
</
Box
>
width=
"16px"
height=
"16px"
color=
{
useColorModeValue
(
'
gray.500
'
,
'
gray.400
'
)
}
_hover=
{
{
color
:
'
blue.400
'
}
}
marginLeft=
{
isCollapsed
?
'
0px
'
:
'
27px
'
}
cursor=
"pointer"
{
...
getDefaultTransitionProps
({
transitionProperty
:
'
margin
'
})
}
/>
</
Button
>
</
PopoverTrigger
>
</
PopoverTrigger
>
<
NetworkMenuPopup
/>
<
NetworkMenuPopup
/>
</
Popover
>
</
Popover
>
...
...
ui/navigation/networkMenu/NetworkMenuButton.tsx
0 → 100644
View file @
c65d3a60
import
{
Icon
,
useColorModeValue
,
Button
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
networksIcon
from
'
icons/networks.svg
'
;
import
getDefaultTransitionProps
from
'
theme/utils/getDefaultTransitionProps
'
;
interface
Props
{
isCollapsed
?:
boolean
;
isMobile
?:
boolean
;
isActive
?:
boolean
;
onClick
?:
()
=>
void
;
}
const
NetworkMenuButton
=
({
isCollapsed
,
isMobile
,
isActive
,
onClick
}:
Props
,
ref
:
React
.
ForwardedRef
<
HTMLButtonElement
>
)
=>
{
const
defaultIconColor
=
useColorModeValue
(
'
gray.600
'
,
'
gray.400
'
);
return
(
<
Button
variant=
"unstyled"
display=
"inline-flex"
alignSelf=
"stretch"
alignItems=
"center"
ref=
{
ref
}
h=
"36px"
borderRadius=
"base"
backgroundColor=
{
isMobile
&&
isActive
?
'
blue.50
'
:
'
none
'
}
onClick=
{
onClick
}
>
<
Icon
as=
{
networksIcon
}
width=
"36px"
height=
"36px"
padding=
"10px"
color=
{
isMobile
&&
isActive
?
'
blue.700
'
:
defaultIconColor
}
_hover=
{
{
color
:
isMobile
?
undefined
:
'
blue.400
'
}
}
marginLeft=
{
isCollapsed
?
'
0px
'
:
'
7px
'
}
cursor=
"pointer"
{
...
getDefaultTransitionProps
({
transitionProperty
:
'
margin
'
})
}
/>
</
Button
>
);
};
export
default
React
.
forwardRef
(
NetworkMenuButton
);
ui/navigation/networkMenu/NetworkMenuContentMobile.tsx
0 → 100644
View file @
c65d3a60
import
{
Box
,
Select
,
VStack
}
from
'
@chakra-ui/react
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
from
'
react
'
;
import
type
{
NetworkGroup
}
from
'
types/networks
'
;
import
{
NETWORKS
}
from
'
lib/networks
'
;
import
NetworkMenuLink
from
'
./NetworkMenuLink
'
;
const
TABS
:
Array
<
NetworkGroup
>
=
[
'
mainnets
'
,
'
testnets
'
,
'
other
'
];
const
NetworkMenuContentMobile
=
()
=>
{
const
router
=
useRouter
();
const
routeName
=
router
.
pathname
.
replace
(
'
/[network_type]/[network_sub_type]
'
,
''
);
const
selectedNetwork
=
NETWORKS
.
find
((
network
)
=>
router
.
query
.
network_type
===
network
.
type
&&
router
.
query
.
network_sub_type
===
network
.
subType
);
const
[
selectedTab
,
setSelectedTab
]
=
React
.
useState
<
NetworkGroup
>
(
TABS
.
find
((
tab
)
=>
selectedNetwork
?.
group
===
tab
)
||
'
mainnets
'
);
const
handleSelectChange
=
React
.
useCallback
((
event
:
React
.
ChangeEvent
<
HTMLSelectElement
>
)
=>
{
setSelectedTab
(
event
.
target
.
value
as
NetworkGroup
);
},
[]);
return
(
<
Box
mt=
{
6
}
>
<
Select
size=
"sm"
borderRadius=
"base"
value=
{
selectedTab
}
onChange=
{
handleSelectChange
}
>
{
TABS
.
map
((
tab
)
=>
<
option
key=
{
tab
}
value=
{
tab
}
>
{
tab
.
charAt
(
0
).
toUpperCase
()
+
tab
.
slice
(
1
)
}
</
option
>)
}
</
Select
>
<
VStack
as=
"ul"
spacing=
{
2
}
alignItems=
"stretch"
mt=
{
6
}
>
{
NETWORKS
.
filter
(({
group
})
=>
group
===
selectedTab
)
.
map
((
network
)
=>
(
<
NetworkMenuLink
key=
{
network
.
name
}
{
...
network
}
isActive=
{
network
.
name
===
selectedNetwork
?.
name
}
routeName=
{
routeName
}
/>
))
}
</
VStack
>
</
Box
>
);
};
export
default
NetworkMenuContentMobile
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment