Skip to content

Commit 10b9ed4

Browse files
authored
Merge pull request #4274 from topcoder-platform/hot-fix-x-button-to-clear-search
Hot fix x button to clear search
2 parents 9b92cb0 + 2a9eb6b commit 10b9ed4

File tree

6 files changed

+54
-0
lines changed

6 files changed

+54
-0
lines changed

.circleci/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ workflows:
182182
filters:
183183
branches:
184184
only:
185+
- develop
185186
- feature-contentful
186187
- hot-fix-content-at-bottom-of-challenge-details
187188
# This is beta env for production soft releases

__tests__/shared/components/challenge-listing/Filters/__snapshots__/ChallengeFilters.jsx.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ exports[`Matches shallow shapshot shapshot 1`] = `
99
>
1010
<ChallengeSearchBar
1111
label="Search Challenges:"
12+
onClearSearch={[Function]}
1213
onSearch={[Function]}
1314
placeholder="Type the challenge name here"
1415
query=""
@@ -100,6 +101,7 @@ exports[`Matches shallow shapshot shapshot 2`] = `
100101
>
101102
<ChallengeSearchBar
102103
label="Search Challenges:"
104+
onClearSearch={[Function]}
103105
onSearch={[Function]}
104106
placeholder="Type the challenge name here"
105107
query=""

__tests__/shared/components/challenge-listing/Filters/__snapshots__/ChallengeSearchBar.jsx.snap

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ exports[`Matches shallow shapshot 1`] = `
1717
type="text"
1818
value="query"
1919
/>
20+
<span
21+
className="src-shared-components-challenge-listing-Filters-ChallengeSearchBar-___style__ClearButton___u_e0r src-shared-components-challenge-listing-Filters-ChallengeSearchBar-___style__active___8LjMb"
22+
onClick={[Function]}
23+
onKeyPress={[Function]}
24+
>
25+
26+
</span>
2027
<span
2128
className="src-shared-components-challenge-listing-Filters-ChallengeSearchBar-___style__SearchButton___3GzR0 src-shared-components-challenge-listing-Filters-ChallengeSearchBar-___style__active___8LjMb"
2229
onClick={[Function]}
@@ -53,6 +60,13 @@ exports[`Matches shallow shapshot 2`] = `
5360
type="text"
5461
value=""
5562
/>
63+
<span
64+
className="src-shared-components-challenge-listing-Filters-ChallengeSearchBar-___style__ClearButton___u_e0r"
65+
onClick={[Function]}
66+
onKeyPress={[Function]}
67+
>
68+
69+
</span>
5670
<span
5771
className="src-shared-components-challenge-listing-Filters-ChallengeSearchBar-___style__SearchButton___3GzR0"
5872
onClick={[Function]}

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: 22 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

@@ -43,6 +44,7 @@ $search-input-width: '100% - 56px';
4344
margin-bottom: 0;
4445
margin-left: 10px;
4546
vertical-align: middle;
47+
padding-right: 28px;
4648

4749
@include placeholder {
4850
@include roboto-light;
@@ -77,4 +79,24 @@ $search-input-width: '100% - 56px';
7779
width: 16px;
7880
}
7981
}
82+
83+
.ClearButton {
84+
display: none;
85+
cursor: pointer;
86+
position: absolute;
87+
right: $challenge-space-60 - 3;
88+
padding: $base-unit;
89+
border-radius: 0 $challenge-radius-4 $challenge-radius-4 0;
90+
vertical-align: middle;
91+
height: 38px;
92+
font-size: 25px;
93+
94+
&.active {
95+
display: inline-block;
96+
}
97+
98+
&:hover {
99+
color: $tc-red-110;
100+
}
101+
}
80102
}

0 commit comments

Comments
 (0)