Skip to content

Commit a615a6c

Browse files
committed
Add X button to clear the challenge search.
1 parent 61f8c8b commit a615a6c

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

src/shared/components/challenge-listing/Filters/ChallengeFilters.jsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,17 @@ export default function ChallengeFilters({
5757
setFilterState(filterObj);
5858
};
5959

60+
const clearSearch = () => {
61+
setFilterState(Filter.setText(filterState, ''));
62+
setSearchText('');
63+
};
64+
6065
return (
6166
<div styleName="challenge-filters">
6267
<div styleName="filter-header">
6368
<ChallengeSearchBar
6469
onSearch={text => setFilterState(Filter.setText(filterState, text))}
70+
onClearSearch={() => clearSearch()}
6571
label={isReviewOpportunitiesBucket ? 'Search Review Opportunities:' : 'Search Challenges:'}
6672
placeholder={isReviewOpportunitiesBucket ? 'Search Review Opportunities' : 'Type the challenge name here'}
6773
query={searchText}

src/shared/components/challenge-listing/Filters/ChallengeSearchBar/index.jsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import ZoomIcon from './ui-zoom.svg';
1919

2020
export default function ChallengeSearchBar({
2121
onSearch,
22+
onClearSearch,
2223
placeholder,
2324
query,
2425
setQuery,
@@ -35,6 +36,13 @@ export default function ChallengeSearchBar({
3536
type="text"
3637
value={query}
3738
/>
39+
<span
40+
styleName={`ClearButton ${query ? 'active' : ''}`}
41+
onClick={() => onClearSearch()}
42+
onKeyPress={() => onClearSearch()}
43+
>
44+
&#10799;
45+
</span>
3846
<span
3947
styleName={`SearchButton ${query ? 'active' : ''}`}
4048
onClick={() => onSearch(query.trim())}
@@ -56,6 +64,7 @@ ChallengeSearchBar.defaultProps = {
5664

5765
ChallengeSearchBar.propTypes = {
5866
onSearch: PT.func.isRequired,
67+
onClearSearch: PT.func.isRequired,
5968
label: PT.string,
6069
placeholder: PT.string,
6170
query: PT.string.isRequired,

src/shared/components/challenge-listing/Filters/ChallengeSearchBar/style.scss

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ $challenge-space-15: $base-unit * 3;
44
$challenge-space-20: $base-unit * 4;
55
$challenge-space-30: $base-unit * 6;
66
$challenge-space-40: $base-unit * 8;
7+
$challenge-space-60: $base-unit * 12;
78
$challenge-radius-1: $corner-radius / 2;
89
$challenge-radius-4: $corner-radius * 2;
910

@@ -77,4 +78,24 @@ $search-input-width: '100% - 56px';
7778
width: 16px;
7879
}
7980
}
81+
82+
.ClearButton {
83+
display: none;
84+
cursor: pointer;
85+
position: absolute;
86+
right: $challenge-space-60 - 4;
87+
padding: $base-unit;
88+
border-radius: 0 $challenge-radius-4 $challenge-radius-4 0;
89+
vertical-align: middle;
90+
height: 40px;
91+
font-size: 25px;
92+
93+
&.active {
94+
display: inline-block;
95+
}
96+
97+
&:hover {
98+
color: $tc-red-110;
99+
}
100+
}
80101
}

0 commit comments

Comments
 (0)