Skip to content

Commit e3eaa1b

Browse files
committed
Enhance search results display
1 parent 6179ffb commit e3eaa1b

File tree

3 files changed

+70
-18
lines changed

3 files changed

+70
-18
lines changed

components/items.js

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,14 @@ export default function Items ({ ssrData, variables = DEFAULT_VARIABLES, query,
5555
<div className={styles.grid}>
5656
{ad && <ListItem item={ad} ad />}
5757
{itemsWithPins.filter(filter).map((item, i) => (
58-
<ListItem key={`${item.id}-${i + 1}`} item={item} rank={rank && i + 1} itemClassName={variables.includeComments ? 'py-2' : ''} pinnable={isHome ? false : pins?.length > 0} />
58+
<ListItem
59+
key={`${item.id}-${i + 1}`}
60+
item={item}
61+
rank={rank && i + 1}
62+
itemClassName={variables.includeComments ? 'py-2' : ''}
63+
pinnable={isHome ? false : pins?.length > 0}
64+
isSearchResults={Boolean(variables.includeComments && variables.q)}
65+
/>
5966
))}
6067
</div>
6168
<Foooter
@@ -67,16 +74,31 @@ export default function Items ({ ssrData, variables = DEFAULT_VARIABLES, query,
6774
)
6875
}
6976

70-
export function ListItem ({ item, ...props }) {
71-
return (
72-
item.parentId
73-
? <CommentFlat item={item} noReply includeParent {...props} />
74-
: (item.isJob
75-
? <ItemJob item={item} />
76-
: (item.searchText
77-
? <ItemFull item={item} noReply {...props} />
78-
: <Item item={item} {...props} />))
79-
)
77+
export function ListItem ({ item, isSearchResults, ...props }) {
78+
const searchClasses = isSearchResults
79+
? [
80+
styles.searchResult,
81+
item.parentId ? styles.searchResultComment : styles.searchResultPost
82+
].join(' ')
83+
: ''
84+
85+
const content = item.parentId
86+
? <CommentFlat item={item} noReply includeParent {...props} />
87+
: (item.isJob
88+
? <ItemJob item={item} />
89+
: (item.searchText
90+
? <ItemFull item={item} noReply {...props} />
91+
: <Item item={item} {...props} />))
92+
93+
if (isSearchResults) {
94+
return (
95+
<div className={searchClasses}>
96+
{content}
97+
</div>
98+
)
99+
}
100+
101+
return content
80102
}
81103

82104
export function ItemsSkeleton ({ rank, startRank = 0, limit = LIMIT, Footer }) {

components/items.module.css

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,20 @@
11
.grid {
22
display: grid;
33
grid-template-columns: auto minmax(0, 1fr);
4+
}
5+
6+
.searchResult {
7+
background: var(--theme-commentBg);
8+
margin-bottom: 10px;
9+
padding-left: 0.75rem;
10+
grid-column: 1 / -1;
11+
}
12+
13+
.searchResultPost {
14+
border-left: 3px solid var(--bs-secondary);
15+
}
16+
17+
.searchResultComment {
18+
border-left: 3px solid var(--bs-info);
19+
border-radius: 0;
420
}

pages/search.js

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,27 @@ export default function Index ({ ssrData }) {
1919
return (
2020
<SearchLayout sub={sub}>
2121
{variables.q
22-
? <Items
23-
ssrData={ssrData}
24-
query={SUB_SEARCH}
25-
destructureData={data => data.search}
26-
variables={variables}
27-
noMoreText='NO MORE'
28-
/>
22+
? (
23+
<>
24+
<div className='text-muted small d-flex align-items-center gap-3 mb-2'>
25+
<div className='d-flex align-items-center gap-2'>
26+
<span style={{ display: 'inline-block', height: '14px', borderLeft: '3px solid var(--bs-secondary)' }} />
27+
<span>post</span>
28+
</div>
29+
<div className='d-flex align-items-center gap-2'>
30+
<span style={{ display: 'inline-block', height: '14px', borderLeft: '3px solid var(--bs-info)' }} />
31+
<span>comment</span>
32+
</div>
33+
</div>
34+
<Items
35+
ssrData={ssrData}
36+
query={SUB_SEARCH}
37+
destructureData={data => data.search}
38+
variables={variables}
39+
noMoreText='NO MORE'
40+
/>
41+
</>
42+
)
2943
: (
3044
<div className={styles.content}>
3145
<div className={styles.box}>

0 commit comments

Comments
 (0)