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

Commit d32470e

Browse files
Merge branch 'develop' into issue-17
2 parents b79be37 + dc86d5b commit d32470e

File tree

6 files changed

+87
-17
lines changed

6 files changed

+87
-17
lines changed

client/src/components/FiltersSideMenu/filters.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,12 +230,18 @@ export default function SearchTabFilters({ locations, achievements }) {
230230
/>
231231
{search.isFilterActive(FILTERS.LOCATIONS) && (
232232
<div className={utilityStyles.mt32}>
233-
<Collapsible title="Location" collapsed={false}>
233+
<Collapsible
234+
onCollapsed={(isCollapsed) =>
235+
filterData("", locations, "name", setLocationsData)
236+
}
237+
title="Location"
238+
collapsed={false}
239+
>
234240
<SearchBox
235241
placeholder="Search for a location"
236242
name={"location search"}
237243
onChange={(q) =>
238-
filterData(q, locations, "name", setLocationsData)
244+
filterData(q.trim(), locations, "name", setLocationsData)
239245
}
240246
/>
241247
<TagList
@@ -290,12 +296,17 @@ export default function SearchTabFilters({ locations, achievements }) {
290296
)}
291297
{search.isFilterActive(FILTERS.ACHIEVEMENTS) && (
292298
<div className={utilityStyles.mt32}>
293-
<Collapsible title="Achievements">
299+
<Collapsible
300+
title="Achievements"
301+
onCollapsed={(isCollapsed) =>
302+
filterData("", achievements, "name", setAchievementsData)
303+
}
304+
>
294305
<SearchBox
295306
placeholder="Search for an achievement"
296307
name={"achievements search"}
297308
onChange={(q) =>
298-
filterData(q, achievements, "name", setAchievementsData)
309+
filterData(q.trim(), achievements, "name", setAchievementsData)
299310
}
300311
/>
301312
<TagList

client/src/components/Header/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export default function Header({
9797
</div>
9898
<div
9999
className={style.accountMenu}
100-
onClick={() => setShowAccountDropdown(!showAccountDropdown)}
100+
onMouseDown={() => setShowAccountDropdown(!showAccountDropdown)}
101101
>
102102
{user.nickname}
103103
{organization ? <>&nbsp;({organization.name})</> : ""}

client/src/components/SuggestionBox/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export default function SuggestionBox({
8686
const [suggestions, setSuggestions] = React.useState([]);
8787
const [value, setValue] = React.useState("");
8888

89-
const onChange = (event, { newValue }) => setValue(newValue);
89+
const onChange = (event, { newValue }) => setValue(newValue.trim());
9090

9191
const onSuggestionsFetchRequested = async ({ value }) => {
9292
if (purpose === "skills") {

client/src/components/collapsible/index.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,30 @@ import iconStyles from "../../styles/icons.module.css";
99
* childre: children component
1010
* collapse: if set to true the component is collapsed
1111
*/
12-
export default function Collapsible({ title, children, collapsed = false }) {
12+
export default function Collapsible({
13+
title,
14+
children,
15+
collapsed = false,
16+
onCollapsed,
17+
}) {
1318
const [isCollapsed, setIsCollapsed] = useState(collapsed);
1419

1520
const mainStyle = isCollapsed
1621
? styles.collapsibleContainerCollapsed
1722
: styles.collapsibleContainer;
1823

24+
const handleCollapseChange = () => {
25+
setIsCollapsed(!isCollapsed);
26+
if (onCollapsed) onCollapsed(isCollapsed);
27+
};
28+
1929
return (
2030
<div className={mainStyle}>
2131
<div className={styles.collapsibleHeader}>
2232
<div className={styles.collapsibleTitle}>{title}</div>
2333
<div
2434
className={styles.collapsibleChevronContainer}
25-
onClick={() => setIsCollapsed(!isCollapsed)}
35+
onClick={handleCollapseChange}
2636
>
2737
{isCollapsed ? (
2838
<div className={iconStyles.chevronDownG}></div>

client/src/components/editFiltersPopup/index.js

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export default function EditFiltersPopup({ onCancel, onDone }) {
5252
);
5353
const [filterGroups, setFilterGroups] = useState(initialFilters);
5454
const [selectedFilters, setSelectedFilters] = useState(initialSelection);
55-
const [sections, setSections] = useState(initialSections, initialSections);
55+
const [sections, setSections] = useState(initialSections);
5656

5757
const handleCancel = () => {
5858
if (onCancel) {
@@ -65,6 +65,41 @@ export default function EditFiltersPopup({ onCancel, onDone }) {
6565
onDone(selectedFilters);
6666
}
6767
search.setFilters(searchFilters);
68+
removeDataFromDisabledFilters(searchFilters);
69+
};
70+
71+
const removeDataFromDisabledFilters = (searchFilters) => {
72+
const companyAttrIdsToBeRemoved = [];
73+
for (const [key, value] of Object.entries(searchFilters)) {
74+
if (value.group === "General attributes") {
75+
if (!value.active) {
76+
removeGeneralAttr(value.text);
77+
}
78+
} else {
79+
if (!value.active) {
80+
companyAttrIdsToBeRemoved.push(key);
81+
}
82+
}
83+
}
84+
search.clearSelectCompanyAttributes(companyAttrIdsToBeRemoved);
85+
};
86+
87+
const removeGeneralAttr = (text) => {
88+
if (text === "Location") {
89+
search.selectLocations([]);
90+
}
91+
if (text === "Skills") {
92+
search.selectSkills([]);
93+
}
94+
if (text === "Achievements") {
95+
search.selectAchievements([]);
96+
}
97+
if (text === "Availability") {
98+
search.selectAvailability({
99+
isAvailableSelected: false,
100+
isUnavailableSelected: false,
101+
});
102+
}
68103
};
69104

70105
const handleFilterValueChanged = (filter, newValue) => {
@@ -73,27 +108,32 @@ export default function EditFiltersPopup({ onCancel, onDone }) {
73108
if (index === -1) {
74109
setSelectedFilters([filter, ...selectedFilters]);
75110
setSearchFilters({
76-
...search.filters,
77-
[filter]: { ...search.filters[filter], active: true },
111+
...searchFilters,
112+
[filter]: { ...searchFilters[filter], active: true },
78113
});
79114
}
80115
} else {
81116
if (index !== -1) {
82117
setSelectedFilters(selectedFilters.filter((_, i) => i !== index));
83118
setSearchFilters({
84-
...search.filters,
85-
[filter]: { ...search.filters[filter], active: false },
119+
...searchFilters,
120+
[filter]: { ...searchFilters[filter], active: false },
86121
});
87122
}
88123
}
89124
};
90125

91126
const handleSearch = (q) => {
92127
if (q.length === 0) {
93-
setFilterGroups(initialFilters);
128+
const [filteredSections, filteredGroups] = getInitialFilters(
129+
searchFilters,
130+
() => true
131+
);
132+
setSections(filteredSections);
133+
setFilterGroups(filteredGroups);
94134
} else if (q.length >= 3) {
95135
const [filteredSections, filteredGroups] = getInitialFilters(
96-
{ ...search.filters },
136+
searchFilters,
97137
(f) => {
98138
return f.text.toLowerCase().includes(q.toLowerCase());
99139
}
@@ -203,10 +243,10 @@ function PopupSection({ title, filters, onFilterValueChange }) {
203243
<>
204244
<PopupSectionTitle text={title} />
205245
<div>
206-
{filters.map((filter, index) => {
246+
{filters.map((filter) => {
207247
return (
208248
<PopupSectionRow
209-
key={index}
249+
key={filter.id}
210250
text={filter.name}
211251
filterActivated={filter.isActive}
212252
id={filter.id}

client/src/lib/search.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ function useProvideSearch() {
9494
});
9595
};
9696

97+
const clearSelectCompanyAttributes = (ids) => {
98+
const selectedCmpAttr = { ...selectedCompanyAttributes };
99+
for (let id of ids) {
100+
selectedCmpAttr[id] = [];
101+
}
102+
setSelectedCompanyAttributes(selectedCmpAttr);
103+
};
104+
97105
const getCompanyAttrActiveFilter = () => {
98106
const companyAttrActiveFilters = [];
99107
for (const filter in filters) {
@@ -120,6 +128,7 @@ function useProvideSearch() {
120128
selectAvailability: setSelectedAvailability,
121129
selectedCompanyAttributes,
122130
selectCompanyAttributes: setSelectedCompanyAttributes,
131+
clearSelectCompanyAttributes,
123132
popupShown,
124133
showPopup,
125134
filters,

0 commit comments

Comments
 (0)