11import React , { Fragment , useState } from 'react' ;
22import { Link } from 'gatsby' ;
3- import { IoIosArrowDown , IoIosArrowForward } from 'react-icons/io ' ;
3+ import Collapsible from './Collapsible ' ;
44
55/**
66 * Interactive Sidebar with toggleable categories.
@@ -23,50 +23,45 @@ const Sidebar = ({ categories = [], currentPathname }) => {
2323 < nav className = "sidebar" >
2424 { categories . map ( ( { categoryName, entries } ) => (
2525 < Fragment key = { categoryName } >
26- < button
27- onClick = { ( ) =>
26+ < Collapsible
27+ className = "sidebar-category"
28+ openedClassName = "sidebar-category"
29+ transitionTime = { 150 }
30+ transitionCloseTime = { 50 }
31+ trigger = { categoryName }
32+ triggerTagName = "div"
33+ open = { selectedCategory === categoryName }
34+ onTriggerOpening = { ( ) =>
35+ selectCategory (
36+ selectedCategory === categoryName ? null : categoryName
37+ )
38+ }
39+ onTriggerClosing = { ( ) =>
2840 selectCategory (
2941 selectedCategory === categoryName ? null : categoryName
3042 )
3143 }
32- className = "sidebar-category"
33- >
34- { categoryName }
35- < IoIosArrowDown
36- className = "arrow"
37- style = { {
38- display : selectedCategory === categoryName ? 'block' : 'none' ,
39- } }
40- />
41- < IoIosArrowForward
42- className = "arrow"
43- style = { {
44- display : selectedCategory === categoryName ? 'none' : 'block' ,
45- } }
46- />
47- </ button >
48- < ul
49- id = { categoryName }
50- name = "Category"
51- className = "list-unstyled components show"
52- style = { {
53- display : selectedCategory === categoryName ? 'block' : 'none' ,
54- } }
5544 >
56- { entries . map ( ( element ) => (
57- < li
58- key = { element . node . frontmatter . title }
59- className = "sidebar-element"
60- >
61- < Link
62- to = { `/integrations/${ element . node . frontmatter . path } ` }
63- activeClassName = "active-Link"
45+ < ul
46+ id = { categoryName }
47+ name = "Category"
48+ className = "list-unstyled components show"
49+ >
50+ { entries . map ( ( element ) => (
51+ < li
52+ key = { element . node . frontmatter . title }
53+ className = "sidebar-element"
6454 >
65- { element . node . frontmatter . title }
66- </ Link >
67- </ li >
68- ) ) }
69- </ ul >
55+ < Link
56+ to = { `/integrations/${ element . node . frontmatter . path } ` }
57+ activeClassName = "active-Link"
58+ >
59+ { element . node . frontmatter . title }
60+ </ Link >
61+ </ li >
62+ ) ) }
63+ </ ul >
64+ </ Collapsible >
7065 </ Fragment >
7166 ) ) }
7267 </ nav >
0 commit comments