Skip to content

Commit 107de44

Browse files
feat: Change search result list item hover/active/selected style
fix #179
1 parent 0b746f3 commit 107de44

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

src/webview/SearchSidebar/SearchResultList/MatchList.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,25 @@ const styles = stylex.create({
1616
background: 'var( --vscode-list-hoverBackground)',
1717
},
1818
},
19+
active: {
20+
background: 'var(--vscode-list-inactiveSelectionBackground)',
21+
':focus': {
22+
background: 'var(--vscode-list-activeSelectionBackground)',
23+
outline:
24+
'1px solid var(--vscode-list-focusAndSelectionOutline, var(--vscode-contrastActiveBorder, var(--vscode-list-focusOutline)))',
25+
outlineOffset: -1,
26+
},
27+
},
1928
})
2029

2130
function OneMatch({ match }: { match: DisplayResult }) {
22-
const [_active, setActive] = useActiveItem(match)
31+
const [active, setActive] = useActiveItem(match)
32+
const styleProps = stylex.props(styles.codeItem, active && styles.active)
2333
const [hoverable] = useHover(hovered => {
2434
return (
25-
<li {...stylex.props(styles.codeItem)} onClick={setActive}>
35+
<li {...styleProps} onClick={setActive} tabIndex={0}>
2636
<CodeBlock match={match} />
27-
{hovered && <MatchActions match={match} />}
37+
{(hovered || active) && <MatchActions match={match} />}
2838
</li>
2939
)
3040
})

src/webview/SearchSidebar/SearchResultList/TreeHeader.tsx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { FileLink } from './FileLink'
22
import { FileActions } from './Actions'
33
import type { DisplayResult } from '../../../types'
4+
import { useActiveItem } from './useListState'
45
import { VscChevronDown, VscChevronRight } from 'react-icons/vsc'
56
import { VSCodeBadge } from '@vscode/webview-ui-toolkit/react'
67
import * as stylex from '@stylexjs/stylex'
78
import { useHover } from 'react-use'
9+
import { useCallback } from 'react'
810

911
const styles = stylex.create({
1012
fileName: {
@@ -26,6 +28,12 @@ const styles = stylex.create({
2628
scrolled: {
2729
boxShadow: 'var(--vscode-scrollbar-shadow) 0 0 6px',
2830
},
31+
active: {
32+
background: 'var(--vscode-list-activeSelectionBackground)',
33+
outline:
34+
'1px solid var(--vscode-list-focusAndSelectionOutline, var(--vscode-contrastActiveBorder, var(--vscode-list-focusOutline)))',
35+
outlineOffset: -1,
36+
},
2937
toggleButton: {
3038
flex: 0,
3139
display: 'flex',
@@ -53,11 +61,18 @@ export default function TreeHeader({
5361
}: TreeHeaderProps) {
5462
const filePath = matches[0].file
5563
const hasReplace = Boolean(matches[0].replacement)
64+
const [active, setActive] = useActiveItem(matches)
65+
const styleProps = stylex.props(
66+
styles.fileName,
67+
isScrolled && styles.scrolled,
68+
active && styles.active,
69+
)
70+
const onClick = useCallback(() => {
71+
toggleIsExpanded()
72+
setActive()
73+
}, [toggleIsExpanded, setActive])
5674
const element = (hovered: boolean) => (
57-
<div
58-
{...stylex.props(styles.fileName, isScrolled && styles.scrolled)}
59-
onClick={toggleIsExpanded}
60-
>
75+
<div {...styleProps} onClick={onClick}>
6176
<div
6277
{...stylex.props(styles.toggleButton)}
6378
aria-label="expand/collapse button"

0 commit comments

Comments
 (0)