Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit 0524b7c

Browse files
committed
changes for #15
1 parent ee4604a commit 0524b7c

File tree

3 files changed

+46
-23
lines changed

3 files changed

+46
-23
lines changed

client/src/components/FiltersSideMenu/filters.js

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { useModal } from "../../lib/modal";
1515

1616
import styles from "./filters.module.css";
1717
import utilityStyles from "../../styles/utility.module.css";
18+
import config from "../../config";
1819

1920
/**
2021
* SearchTabFilters - component containing all the filters on the search tab page
@@ -23,7 +24,6 @@ import utilityStyles from "../../styles/utility.module.css";
2324
*/
2425
export default function SearchTabFilters({ locations, achievements }) {
2526
const search = useSearch();
26-
const [locationsData, setLocationsData] = useState(locations);
2727
const [achievementsData, setAchievementsData] = useState(achievements);
2828

2929
/**
@@ -49,7 +49,6 @@ export default function SearchTabFilters({ locations, achievements }) {
4949
};
5050

5151
useEffect(() => {
52-
setLocationsData(locations);
5352
setAchievementsData(achievements);
5453
}, [locations, achievements]);
5554

@@ -134,6 +133,28 @@ export default function SearchTabFilters({ locations, achievements }) {
134133
}
135134
};
136135

136+
const addLocationToFilter = (location) => {
137+
const locationFilters = JSON.parse(JSON.stringify(search.selectedLocations));
138+
139+
if (locationFilters.findIndex((s) => s.id === location.id) !== -1) {
140+
return;
141+
}
142+
locationFilters.push({ name: location.value, id: location.id });
143+
search["selectLocations"](locationFilters);
144+
};
145+
146+
const removeLocationFromFilter = (location) => {
147+
const locationFilters = JSON.parse(JSON.stringify(search.selectedLocations));
148+
const index = locationFilters.findIndex((s) => s.id === location.id);
149+
150+
if (index === -1) {
151+
return;
152+
}
153+
154+
locationFilters.splice(index, 1);
155+
search["selectLocations"](locationFilters);
156+
};
157+
137158
const addSkillToFilter = (skill) => {
138159
const skillFilters = JSON.parse(JSON.stringify(search.selectedSkills));
139160

@@ -230,27 +251,27 @@ export default function SearchTabFilters({ locations, achievements }) {
230251
/>
231252
{search.isFilterActive(FILTERS.LOCATIONS) && (
232253
<div className={utilityStyles.mt32}>
233-
<Collapsible
234-
onCollapsed={(isCollapsed) =>
235-
filterData("", locations, "name", setLocationsData)
236-
}
237-
title="Location"
238-
collapsed={false}
239-
>
240-
<SearchBox
241-
placeholder="Search for a location"
242-
name={"location search"}
243-
onChange={(q) =>
244-
filterData(q.trim(), locations, "name", setLocationsData)
245-
}
246-
/>
247-
<TagList
248-
key="l"
249-
tags={locationsData}
250-
selected={search.selectedLocations}
251-
selector={"selectLocations"}
252-
noResultsText={"No location found"}
254+
<Collapsible title="Location">
255+
<SuggestionBox
256+
placeholder={"Search for a location"}
257+
onSelect={addLocationToFilter}
258+
purpose="locations"
259+
companyAttrId={config.STANDARD_USER_ATTRIBUTES.location}
253260
/>
261+
{search.selectedLocations.length > 0 && (
262+
<div className={utilityStyles.mt16}>
263+
{search.selectedLocations.map((location) => {
264+
return (
265+
<Pill
266+
key={location.id}
267+
name={location.name}
268+
removable={true}
269+
onRemove={() => removeLocationFromFilter(location)}
270+
/>
271+
);
272+
})}
273+
</div>
274+
)}
254275
</Collapsible>
255276
</div>
256277
)}

client/src/components/SuggestionBox/index.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ export default function SuggestionBox({
128128
const onSuggestionSelected = (event, { suggestion }) => {
129129
if (purpose === "skills") {
130130
if (suggestion.name !== NO_RESULTS_FOUND) onSelect(suggestion);
131+
} else if (purpose === "locations") {
132+
if (suggestion.name !== NO_RESULTS_FOUND) onSelect(suggestion);
131133
} else {
132134
if (suggestion.name !== NO_RESULTS_FOUND)
133135
onSelect(companyAttrId, suggestion);

client/src/pages/Search/Global.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ export default function SearchGlobal({ keyword }) {
145145
searchContext.filters[FILTERS.LOCATIONS].active &&
146146
searchContext.selectedLocations.length > 0
147147
) {
148-
criteria.locations = searchContext.selectedLocations;
148+
criteria.locations = searchContext.selectedLocations.map((l) => l.name);
149149
}
150150
if (
151151
searchContext.filters[FILTERS.SKILLS].active &&

0 commit comments

Comments
 (0)