|
|
@ -9,7 +9,6 @@ import { Button, SlideOut } from '@tih/ui';
|
|
|
|
|
|
|
|
|
|
|
|
import QuestionOverviewCard from '~/components/questions/card/question/QuestionOverviewCard';
|
|
|
|
import QuestionOverviewCard from '~/components/questions/card/question/QuestionOverviewCard';
|
|
|
|
import ContributeQuestionCard from '~/components/questions/ContributeQuestionCard';
|
|
|
|
import ContributeQuestionCard from '~/components/questions/ContributeQuestionCard';
|
|
|
|
import type { FilterOption } from '~/components/questions/filter/FilterSection';
|
|
|
|
|
|
|
|
import FilterSection from '~/components/questions/filter/FilterSection';
|
|
|
|
import FilterSection from '~/components/questions/filter/FilterSection';
|
|
|
|
import QuestionSearchBar from '~/components/questions/QuestionSearchBar';
|
|
|
|
import QuestionSearchBar from '~/components/questions/QuestionSearchBar';
|
|
|
|
import CompanyTypeahead from '~/components/questions/typeahead/CompanyTypeahead';
|
|
|
|
import CompanyTypeahead from '~/components/questions/typeahead/CompanyTypeahead';
|
|
|
@ -195,17 +194,17 @@ export default function QuestionsBrowsePage() {
|
|
|
|
const [loaded, setLoaded] = useState(false);
|
|
|
|
const [loaded, setLoaded] = useState(false);
|
|
|
|
const [filterDrawerOpen, setFilterDrawerOpen] = useState(false);
|
|
|
|
const [filterDrawerOpen, setFilterDrawerOpen] = useState(false);
|
|
|
|
|
|
|
|
|
|
|
|
const [selectedCompanyOptions, setSelectedCompanyOptions] = useState<
|
|
|
|
// Const [selectedCompanyOptions, setSelectedCompanyOptions] = useState<
|
|
|
|
Array<FilterOption>
|
|
|
|
// Array<FilterOption>
|
|
|
|
>([]);
|
|
|
|
// >([]);
|
|
|
|
|
|
|
|
|
|
|
|
const [selectedRoleOptions, setSelectedRoleOptions] = useState<
|
|
|
|
// const [selectedRoleOptions, setSelectedRoleOptions] = useState<
|
|
|
|
Array<FilterOption>
|
|
|
|
// Array<FilterOption>
|
|
|
|
>([]);
|
|
|
|
// >([]);
|
|
|
|
|
|
|
|
|
|
|
|
const [selectedLocationOptions, setSelectedLocationOptions] = useState<
|
|
|
|
// const [selectedLocationOptions, setSelectedLocationOptions] = useState<
|
|
|
|
Array<FilterOption>
|
|
|
|
// Array<FilterOption>
|
|
|
|
>([]);
|
|
|
|
// >([]);
|
|
|
|
|
|
|
|
|
|
|
|
const questionTypeFilterOptions = useMemo(() => {
|
|
|
|
const questionTypeFilterOptions = useMemo(() => {
|
|
|
|
return QUESTION_TYPES.map((questionType) => ({
|
|
|
|
return QUESTION_TYPES.map((questionType) => ({
|
|
|
@ -275,9 +274,37 @@ export default function QuestionsBrowsePage() {
|
|
|
|
sortType,
|
|
|
|
sortType,
|
|
|
|
]);
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const selectedCompanyOptions = useMemo(() => {
|
|
|
|
|
|
|
|
return selectedCompanies.map((company) => ({
|
|
|
|
|
|
|
|
checked: true,
|
|
|
|
|
|
|
|
id: company,
|
|
|
|
|
|
|
|
label: company,
|
|
|
|
|
|
|
|
value: company,
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
}, [selectedCompanies]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const selectedRoleOptions = useMemo(() => {
|
|
|
|
|
|
|
|
return selectedRoles.map((role) => ({
|
|
|
|
|
|
|
|
checked: true,
|
|
|
|
|
|
|
|
id: role,
|
|
|
|
|
|
|
|
label: role,
|
|
|
|
|
|
|
|
value: role,
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
}, [selectedRoles]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const selectedLocationOptions = useMemo(() => {
|
|
|
|
|
|
|
|
return selectedLocations.map((location) => ({
|
|
|
|
|
|
|
|
checked: true,
|
|
|
|
|
|
|
|
id: location,
|
|
|
|
|
|
|
|
label: location,
|
|
|
|
|
|
|
|
value: location,
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
}, [selectedLocations]);
|
|
|
|
|
|
|
|
|
|
|
|
if (!loaded) {
|
|
|
|
if (!loaded) {
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const filterSidebar = (
|
|
|
|
const filterSidebar = (
|
|
|
|
<div className="divide-y divide-slate-200 px-4">
|
|
|
|
<div className="divide-y divide-slate-200 px-4">
|
|
|
|
<Button
|
|
|
|
<Button
|
|
|
@ -293,9 +320,9 @@ export default function QuestionsBrowsePage() {
|
|
|
|
setSelectedQuestionAge('all');
|
|
|
|
setSelectedQuestionAge('all');
|
|
|
|
setSelectedRoles([]);
|
|
|
|
setSelectedRoles([]);
|
|
|
|
setSelectedLocations([]);
|
|
|
|
setSelectedLocations([]);
|
|
|
|
setSelectedCompanyOptions([]);
|
|
|
|
// SetSelectedCompanyOptions([]);
|
|
|
|
setSelectedRoleOptions([]);
|
|
|
|
// setSelectedRoleOptions([]);
|
|
|
|
setSelectedLocationOptions([]);
|
|
|
|
// setSelectedLocationOptions([]);
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
<FilterSection
|
|
|
|
<FilterSection
|
|
|
@ -306,8 +333,8 @@ export default function QuestionsBrowsePage() {
|
|
|
|
{...field}
|
|
|
|
{...field}
|
|
|
|
clearOnSelect={true}
|
|
|
|
clearOnSelect={true}
|
|
|
|
filterOption={(option) => {
|
|
|
|
filterOption={(option) => {
|
|
|
|
return !selectedCompanyOptions.some((selectedOption) => {
|
|
|
|
return !selectedCompanies.some((company) => {
|
|
|
|
return selectedOption.value === option.value;
|
|
|
|
return company === option.value;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
isLabelHidden={true}
|
|
|
|
isLabelHidden={true}
|
|
|
@ -323,19 +350,10 @@ export default function QuestionsBrowsePage() {
|
|
|
|
onOptionChange={(option) => {
|
|
|
|
onOptionChange={(option) => {
|
|
|
|
if (option.checked) {
|
|
|
|
if (option.checked) {
|
|
|
|
setSelectedCompanies([...selectedCompanies, option.label]);
|
|
|
|
setSelectedCompanies([...selectedCompanies, option.label]);
|
|
|
|
setSelectedCompanyOptions((prevOptions) => [
|
|
|
|
|
|
|
|
...prevOptions,
|
|
|
|
|
|
|
|
{ ...option, checked: true },
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
setSelectedCompanies(
|
|
|
|
setSelectedCompanies(
|
|
|
|
selectedCompanies.filter((company) => company !== option.label),
|
|
|
|
selectedCompanies.filter((company) => company !== option.label),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
setSelectedCompanyOptions((prevOptions) =>
|
|
|
|
|
|
|
|
prevOptions.filter(
|
|
|
|
|
|
|
|
(prevOption) => prevOption.label !== option.label,
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
@ -347,8 +365,8 @@ export default function QuestionsBrowsePage() {
|
|
|
|
{...field}
|
|
|
|
{...field}
|
|
|
|
clearOnSelect={true}
|
|
|
|
clearOnSelect={true}
|
|
|
|
filterOption={(option) => {
|
|
|
|
filterOption={(option) => {
|
|
|
|
return !selectedRoleOptions.some((selectedOption) => {
|
|
|
|
return !selectedRoles.some((role) => {
|
|
|
|
return selectedOption.value === option.value;
|
|
|
|
return role === option.value;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
isLabelHidden={true}
|
|
|
|
isLabelHidden={true}
|
|
|
@ -364,19 +382,10 @@ export default function QuestionsBrowsePage() {
|
|
|
|
onOptionChange={(option) => {
|
|
|
|
onOptionChange={(option) => {
|
|
|
|
if (option.checked) {
|
|
|
|
if (option.checked) {
|
|
|
|
setSelectedRoles([...selectedRoles, option.value]);
|
|
|
|
setSelectedRoles([...selectedRoles, option.value]);
|
|
|
|
setSelectedRoleOptions((prevOptions) => [
|
|
|
|
|
|
|
|
...prevOptions,
|
|
|
|
|
|
|
|
{ ...option, checked: true },
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
setSelectedRoles(
|
|
|
|
setSelectedRoles(
|
|
|
|
selectedCompanies.filter((role) => role !== option.value),
|
|
|
|
selectedCompanies.filter((role) => role !== option.value),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
setSelectedRoleOptions((prevOptions) =>
|
|
|
|
|
|
|
|
prevOptions.filter(
|
|
|
|
|
|
|
|
(prevOption) => prevOption.value !== option.value,
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
@ -413,8 +422,8 @@ export default function QuestionsBrowsePage() {
|
|
|
|
{...field}
|
|
|
|
{...field}
|
|
|
|
clearOnSelect={true}
|
|
|
|
clearOnSelect={true}
|
|
|
|
filterOption={(option) => {
|
|
|
|
filterOption={(option) => {
|
|
|
|
return !selectedLocationOptions.some((selectedOption) => {
|
|
|
|
return !selectedLocations.some((location) => {
|
|
|
|
return selectedOption.value === option.value;
|
|
|
|
return location === option.value;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
isLabelHidden={true}
|
|
|
|
isLabelHidden={true}
|
|
|
@ -430,19 +439,10 @@ export default function QuestionsBrowsePage() {
|
|
|
|
onOptionChange={(option) => {
|
|
|
|
onOptionChange={(option) => {
|
|
|
|
if (option.checked) {
|
|
|
|
if (option.checked) {
|
|
|
|
setSelectedLocations([...selectedLocations, option.value]);
|
|
|
|
setSelectedLocations([...selectedLocations, option.value]);
|
|
|
|
setSelectedLocationOptions((prevOptions) => [
|
|
|
|
|
|
|
|
...prevOptions,
|
|
|
|
|
|
|
|
{ ...option, checked: true },
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
setSelectedLocations(
|
|
|
|
setSelectedLocations(
|
|
|
|
selectedLocations.filter((role) => role !== option.value),
|
|
|
|
selectedLocations.filter((role) => role !== option.value),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
setSelectedLocationOptions((prevOptions) =>
|
|
|
|
|
|
|
|
prevOptions.filter(
|
|
|
|
|
|
|
|
(prevOption) => prevOption.value !== option.value,
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|