1- import React , { useState , useContext } from "react" ;
1+ import React , { useState } from "react" ;
22import { Dropdown , FormControl , Spinner } from "react-bootstrap" ;
3- import MainButton from "../MainButton" ;
43import { FormattedMessage } from "react-intl" ;
5- import ThemeColorContext from "../../ThemeColorProvider" ;
64import usePostHeaderQuickSearch from "../../models/usePostHeaderQuickSearch" ;
75
86export default function HeaderQuickSearch ( ) {
97 const [ search , setSearch ] = useState ( "" ) ;
108 const [ showDropdown , setShowDropdown ] = useState ( false ) ;
11- const theme = useContext ( ThemeColorContext ) ;
129
1310 const { searchResults, loading } = usePostHeaderQuickSearch ( search ) ;
1411
@@ -17,7 +14,7 @@ export default function HeaderQuickSearch() {
1714 } ;
1815
1916 const handleClearSearch = ( ) => {
20- setSearch ( "" ) ; //
17+ setSearch ( "" ) ;
2118 setShowDropdown ( false ) ;
2219 } ;
2320
@@ -55,7 +52,11 @@ export default function HeaderQuickSearch() {
5552 } }
5653 onClick = { handleClearSearch }
5754 >
58- < i className = "bi bi-x" > </ i >
55+ { search ? (
56+ < i className = "bi bi-x" > </ i >
57+ ) : (
58+ < i className = "bi bi-search" > </ i >
59+ ) }
5960 </ button >
6061 </ div >
6162
@@ -87,62 +88,58 @@ export default function HeaderQuickSearch() {
8788 </ Dropdown . Item >
8889 ) }
8990 { ! loading &&
90- searchResults . map ( ( result , index ) => (
91- < React . Fragment key = { index } >
92- < Dropdown . Item
93- key = { index }
94- as = "button"
95- target = "_blank"
96- rel = "noopener noreferrer"
97- onMouseDown = { ( e ) => {
98- e . preventDefault ( ) ;
99- window . open ( `/individuals.jsp?id=${ result . id } ` ) ;
100- } }
101- >
102- < div className = "d-flex flex-row justify-content-between" >
91+ searchResults . map ( ( result , index ) => {
92+ const context = result ?. id
93+ ?. toLowerCase ( )
94+ . includes ( search . toLowerCase ( ) )
95+ ? "SYSTEM_ID"
96+ : "FILTER_NAME" ;
97+
98+ let value = result . id ;
99+
100+ if ( context === "SYSTEM_ID" ) {
101+ value = result . id ;
102+ } else {
103+ value =
104+ result . names . find ( ( name ) =>
105+ name . toLowerCase ( ) . includes ( search . toLowerCase ( ) ) ,
106+ ) || result . names . join ( " | " ) ;
107+ }
108+
109+ return (
110+ < React . Fragment key = { index } >
111+ < Dropdown . Item
112+ key = { index }
113+ as = "button"
114+ target = "_blank"
115+ rel = "noopener noreferrer"
116+ onMouseDown = { ( e ) => {
117+ e . preventDefault ( ) ;
118+ window . open ( `/individuals.jsp?id=${ result . id } ` ) ;
119+ } }
120+ >
103121 < div
104- className = "individual-name "
122+ className = "d-flex flex-row justify-content-between "
105123 style = { {
106- width : "180px" ,
107- fontSize : "0.8rem" ,
108- overflow : "hidden" ,
124+ height : "40px" ,
109125 } }
110126 >
111- < div > { search } </ div >
112- < div > { result . taxonomy } </ div >
127+ < div
128+ className = "individual-name w-100"
129+ style = { {
130+ fontSize : "0.8rem" ,
131+ overflow : "hidden" ,
132+ } }
133+ >
134+ < div > { value } </ div >
135+ < div > { result . taxonomy } </ div >
136+ </ div >
113137 </ div >
114- < MainButton
115- noArrow = { true }
116- style = { {
117- width : "80px" ,
118- height : "30px" ,
119- color : "white" ,
120- fontSize : "0.8rem" ,
121- marginRight : 0 ,
122- } }
123- backgroundColor = { theme . primaryColors . primary500 }
124- >
125- < FormattedMessage
126- id = {
127- result ?. id
128- ?. toLowerCase ( )
129- . includes ( search . toLowerCase ( ) )
130- ? "SYSTEM_ID"
131- : result ?. names ?. some ( ( name ) =>
132- name
133- . toLowerCase ( )
134- . includes ( search . toLowerCase ( ) ) ,
135- )
136- ? "FILTER_NAME"
137- : "UNKNOWN"
138- }
139- />
140- </ MainButton >
141- </ div >
142- { index < searchResults . length - 1 && < Dropdown . Divider /> }
143- </ Dropdown . Item >
144- </ React . Fragment >
145- ) ) }
138+ { index < searchResults . length - 1 && < Dropdown . Divider /> }
139+ </ Dropdown . Item >
140+ </ React . Fragment >
141+ ) ;
142+ } ) }
146143 </ Dropdown . Menu >
147144 </ Dropdown >
148145 </ div >
0 commit comments