1
- import React , { useState , useRef , useEffect } from "react" ;
2
- import { useHistory } from "react-router-dom" ;
3
- import Link from "@docusaurus/Link" ;
4
- import { useDocsSidebar } from "@docusaurus/plugin-content-docs/client" ;
5
- import useDocusaurusContext from "@docusaurus/useDocusaurusContext" ;
6
- import { translate } from "@docusaurus/Translate" ;
1
+ import React , { useState , useRef , useEffect } from 'react' ;
2
+ import { useHistory } from 'react-router-dom' ;
3
+ import Link from '@docusaurus/Link' ;
4
+ import { useDocsSidebar } from '@docusaurus/plugin-content-docs/client' ;
5
+ import useDocusaurusContext from '@docusaurus/useDocusaurusContext' ;
7
6
8
- import styles from " ./styles.module.css" ;
7
+ import styles from ' ./styles.module.css' ;
9
8
10
9
function DocsCategoryDropdown ( { dropdownCategory } ) {
11
10
const [ isOpen , setIsOpen ] = useState ( false ) ;
12
- const [ dropdownStyles , setDropdownStyles ] = useState ( {
13
- top : "0px" ,
14
- left : "0px" ,
15
- } ) ;
11
+ const [ dropdownStyles , setDropdownStyles ] = useState ( { top : '0px' , left : '0px' } ) ;
16
12
const dropdownMenuRef = useRef ( null ) ;
17
13
const triggerRef = useRef ( null ) ; // Reference for the individual menu item trigger
18
14
@@ -40,19 +36,15 @@ function DocsCategoryDropdown({ dropdownCategory }) {
40
36
left = triggerRect . right - dropdownRect . width ;
41
37
} else {
42
38
// Align to center
43
- left =
44
- triggerRect . left + triggerRect . width / 2 - dropdownRect . width / 2 ;
39
+ left = triggerRect . left + ( triggerRect . width / 2 ) - ( dropdownRect . width / 2 ) ;
45
40
}
46
41
47
42
// Ensure the dropdown doesn't go off-screen
48
- left = Math . max (
49
- 10 ,
50
- Math . min ( left , viewportWidth - dropdownRect . width - 10 ) ,
51
- ) ;
43
+ left = Math . max ( 10 , Math . min ( left , viewportWidth - dropdownRect . width - 10 ) ) ;
52
44
53
45
setDropdownStyles ( {
54
46
top : `${ triggerRect . bottom } px` , // Align the dropdown below the menu item
55
- left : `${ left } px` , // Align the dropdown with the menu item
47
+ left : `${ left } px` // Align the dropdown with the menu item
56
48
} ) ;
57
49
}
58
50
} , [ isOpen ] ) ; // This runs when the dropdown is opened
@@ -62,13 +54,13 @@ function DocsCategoryDropdown({ dropdownCategory }) {
62
54
// Safely call useDocsSidebar
63
55
try {
64
56
sidebar = useDocsSidebar ( ) ;
65
- } catch ( e ) { }
57
+ } catch ( e ) {
58
+ }
66
59
67
60
// Guard against undefined sidebar
68
- const isSelected =
69
- sidebar && sidebar . name && dropdownCategory
70
- ? sidebar . name === dropdownCategory . customProps . sidebar
71
- : false ;
61
+ const isSelected = sidebar && sidebar . name && dropdownCategory
62
+ ? sidebar . name === dropdownCategory . customProps . sidebar
63
+ : false ;
72
64
73
65
return (
74
66
< div
@@ -80,18 +72,9 @@ function DocsCategoryDropdown({ dropdownCategory }) {
80
72
className = { styles . docsNavDropdownToolbarLink }
81
73
ref = { triggerRef } // Attach the ref to the individual link that triggers the dropdown
82
74
>
83
- < Link
84
- className = { `${ styles . docsNavDropdownToolbarTopLevelLink } ${
85
- isSelected ? styles . docsNavSelected : ""
86
- } `}
87
- href = { dropdownCategory . customProps . href }
88
- >
89
- { translate ( {
90
- id : `sidebar.dropdownCategories.category.${ dropdownCategory . label } ` ,
91
- message : dropdownCategory . label ,
92
- } ) }
93
- </ Link > { " " }
94
- < DropdownCaret />
75
+ < Link className = { `${ styles . docsNavDropdownToolbarTopLevelLink } ${
76
+ isSelected ? styles . docsNavSelected : ''
77
+ } `} href = { dropdownCategory . customProps . href } > { dropdownCategory . label } </ Link > < DropdownCaret />
95
78
</ span >
96
79
{ isOpen && (
97
80
< DropdownContent
@@ -108,63 +91,51 @@ function DocsCategoryDropdown({ dropdownCategory }) {
108
91
export const DocsCategoryDropdownLinkOnly = ( { title, link } ) => {
109
92
return (
110
93
< div className = { styles . docsNavDropdownContainer } >
111
- < Link href = { link } className = { styles . docsNavDropdownToolbarTopLevelLink } >
112
- < span > { title } </ span >
113
- </ Link >
94
+ < Link href = { link } className = { styles . docsNavDropdownToolbarTopLevelLink } > < span > { title } </ span > </ Link >
114
95
</ div >
115
96
) ;
116
- } ;
97
+ }
117
98
118
- const DropdownContent = ( {
119
- dropdownCategory,
120
- handleMouseLeave,
121
- dropdownStyles,
122
- dropdownMenuRef,
123
- } ) => {
99
+ const DropdownContent = ( { dropdownCategory, handleMouseLeave, dropdownStyles, dropdownMenuRef } ) => {
124
100
const [ hovered , setHovered ] = useState ( null ) ;
125
101
126
102
return (
127
103
< div
128
104
ref = { dropdownMenuRef }
129
105
className = { styles . docsNavDropdownMenu }
130
- style = { { position : " fixed" , ...dropdownStyles } }
106
+ style = { { position : ' fixed' , ...dropdownStyles } }
131
107
>
132
- < div
133
- key = { 99 }
134
- className = { `${ styles . docsNavMenuItem } ${ hovered === 99 ? styles . docsNavHovered : "" } ` }
135
- onMouseEnter = { ( ) => setHovered ( 99 ) }
136
- onMouseLeave = { ( ) => setHovered ( null ) }
108
+ < div key = { 99 }
109
+ className = { `${ styles . docsNavMenuItem } ${ hovered === 99 ? styles . docsNavHovered : '' } ` }
110
+ onMouseEnter = { ( ) => setHovered ( 99 ) }
111
+ onMouseLeave = { ( ) => setHovered ( null ) }
137
112
>
138
113
< Link
139
- to = { dropdownCategory . customProps . href }
114
+ to = { dropdownCategory . customProps . href }
140
115
className = { styles . docsNavMenuHeader }
141
- onClick = { handleMouseLeave }
116
+ onClick = { handleMouseLeave }
142
117
>
143
118
{ dropdownCategory . label }
144
119
</ Link >
145
- < div className = { styles . docsNavMenuDescription } >
146
- { dropdownCategory . description }
147
- </ div >
120
+ < div className = { styles . docsNavMenuDescription } > { dropdownCategory . description } </ div >
148
121
</ div >
149
122
< hr className = { styles . docsNavMenuDivider } />
150
123
< div className = { styles . docsNavMenuItems } >
151
124
{ dropdownCategory . items . map ( ( item , index ) => (
152
125
< div
153
126
key = { index }
154
- className = { `${ styles . docsNavMenuItem } ${ hovered === index ? styles . docsNavHovered : "" } ` }
127
+ className = { `${ styles . docsNavMenuItem } ${ hovered === index ? styles . docsNavHovered : '' } ` }
155
128
onMouseEnter = { ( ) => setHovered ( index ) }
156
129
onMouseLeave = { ( ) => setHovered ( null ) }
157
130
>
158
131
< Link
159
- to = { item . href }
132
+ to = { item . href }
160
133
className = { styles . docsNavItemTitle }
161
- onClick = { handleMouseLeave }
134
+ onClick = { handleMouseLeave }
162
135
>
163
136
{ item . label }
164
137
</ Link >
165
- < div className = { styles . docsNavItemDescription } >
166
- { item . description }
167
- </ div >
138
+ < div className = { styles . docsNavItemDescription } > { item . description } </ div >
168
139
</ div >
169
140
) ) }
170
141
</ div >
@@ -174,20 +145,20 @@ const DropdownContent = ({
174
145
175
146
const DropdownCaret = ( ) => {
176
147
const commonStyle = {
177
- width : " 6px" ,
178
- height : " 10px" ,
179
- fill : " none" ,
180
- transition : " all 0.3s ease" ,
181
- color : " #6B7280" ,
148
+ width : ' 6px' ,
149
+ height : ' 10px' ,
150
+ fill : ' none' ,
151
+ transition : ' all 0.3s ease' ,
152
+ color : ' #6B7280' ,
182
153
} ;
183
154
184
155
const rotatedIconStyle = {
185
156
...commonStyle ,
186
- transform : " rotate(90deg)" ,
157
+ transform : ' rotate(90deg)' ,
187
158
} ;
188
159
189
160
return (
190
- < span style = { { marginLeft : " 8px" } } >
161
+ < span style = { { marginLeft : ' 8px' } } >
191
162
< svg
192
163
xmlns = "http://www.w3.org/2000/svg"
193
164
width = "6"
0 commit comments