11import React from 'react'
22import ListItemButton from '@mui/material/ListItemButton'
3+ import ListItem from '@mui/material/ListItem'
34import ListItemText from '@mui/material/ListItemText'
45
56import Retired from '../common/Retired'
@@ -23,21 +24,9 @@ const getBestSynonym = synonyms => {
2324}
2425
2526
26- const Concept = ( { firstChild, concept, setShowHighlights, isShown, onCardClick, onMap, isSelectedForMap, noScore, repoVersion, isAIRecommended} ) => {
27- const id = concept ?. version_url || concept ?. url || concept ?. id
28- const isSelectedToShow = isShown ? isShown ( id ) : false
29-
30- let synonymPrefix = ''
31- const highlights = concept ?. search_meta ?. search_highlight
32- const synonymHighlight = highlights ?. synonyms
33- const nameHighlight = highlights ?. name
34- if ( ! nameHighlight ?. length && synonymHighlight ?. length ) {
35- const bestMatch = getBestSynonym ( synonymHighlight ) || synonymHighlight [ 0 ]
36- synonymPrefix = bestMatch . replace ( '<em>' , "<b className='searchable'>" ) . replace ( '</em>' , '</b>' )
37- }
38-
27+ const Item = ( { concept, setShowHighlights, onMap, isSelectedForMap, noScore, repoVersion, synonymPrefix, isAIRecommended} ) => {
3928 return (
40- < ListItemButton selected = { isSelectedToShow } onClick = { onCardClick ? event => onCardClick ( event , id ) : undefined } sx = { { padding : '8px' , borderTop : firstChild ? undefined : '1px solid rgba(0, 0, 0, 0.1)' } } >
29+ < >
4130 < ListItemText
4231 className = 'searchable'
4332 primary = {
@@ -80,8 +69,38 @@ const Concept = ({firstChild, concept, setShowHighlights, isShown, onCardClick,
8069 />
8170 }
8271 </ span >
83- </ ListItemButton >
72+ </ >
8473 )
8574}
8675
76+
77+ const Concept = ( { firstChild, concept, setShowHighlights, isShown, onCardClick, onMap, isSelectedForMap, noScore, repoVersion, isAIRecommended, sx, notClickable} ) => {
78+ const id = concept ?. version_url || concept ?. url || concept ?. id
79+ const isSelectedToShow = isShown ? isShown ( id ) : false
80+
81+ let synonymPrefix = ''
82+ const highlights = concept ?. search_meta ?. search_highlight
83+ const synonymHighlight = highlights ?. synonyms
84+ const nameHighlight = highlights ?. name
85+ if ( ! nameHighlight ?. length && synonymHighlight ?. length ) {
86+ const bestMatch = getBestSynonym ( synonymHighlight ) || synonymHighlight [ 0 ]
87+ synonymPrefix = bestMatch . replace ( '<em>' , "<b className='searchable'>" ) . replace ( '</em>' , '</b>' )
88+ }
89+
90+ const props = {
91+ selected : isSelectedToShow ,
92+ sx : { padding : '8px' , borderTop : firstChild ? undefined : '1px solid rgba(0, 0, 0, 0.1)' , ...sx }
93+ }
94+
95+ return notClickable ? (
96+ < ListItem { ...props } >
97+ < Item concept = { concept } repoVersion = { repoVersion } synonymPrefix = { synonymPrefix } setShowHighlights = { setShowHighlights } isAIRecommended = { isAIRecommended } isSelectedForMap = { isSelectedForMap } onMap = { onMap } noScore = { noScore } />
98+ </ ListItem >
99+ ) : (
100+ < ListItemButton { ...props } onClick = { onCardClick ? event => onCardClick ( event , id ) : undefined } >
101+ < Item concept = { concept } repoVersion = { repoVersion } synonymPrefix = { synonymPrefix } setShowHighlights = { setShowHighlights } isAIRecommended = { isAIRecommended } isSelectedForMap = { isSelectedForMap } onMap = { onMap } noScore = { noScore } />
102+ </ ListItemButton >
103+ )
104+ }
105+
87106export default Concept ;
0 commit comments