diff --git a/src/components/Jobs/JobList.tsx b/src/components/Jobs/JobList.tsx index a76a369..891149c 100644 --- a/src/components/Jobs/JobList.tsx +++ b/src/components/Jobs/JobList.tsx @@ -28,27 +28,23 @@ const JobList = ({ return ( - {Object.entries(jobs) - .filter(([businessUnit, _]) => - !activeBUs?.length ? true : activeBUs.includes(businessUnit), - ) - .map(([businessUnit, jobList]) => ( - - - {title ?? businessUnit} - - - {jobList?.length ? ( - jobList.map((job: any) => ) - ) : ( - - No Open Positions - {/*

Please get in touch on our Discord.

*/} -
- )} -
-
- ))} + {Object.entries(jobs).map(([businessUnit, jobList]) => ( + + + {title ?? businessUnit} + + + {jobList?.length ? ( + jobList.map((job: any) => ) + ) : ( + + No Open Positions + {/*

Please get in touch on our Discord.

*/} +
+ )} +
+
+ ))}
) } @@ -58,6 +54,7 @@ const Container = styled.div` width: 100%; justify-content: space-between; border-top: 1px solid rgba(0, 0, 0, 0.18); + scroll-margin-top: 24px; @media (max-width: ${breakpoints.md}px) { margin-top: 60px; diff --git a/src/components/Jobs/JobFilter.tsx b/src/components/Jobs/JobPicker.tsx similarity index 72% rename from src/components/Jobs/JobFilter.tsx rename to src/components/Jobs/JobPicker.tsx index 76419a8..316a009 100644 --- a/src/components/Jobs/JobFilter.tsx +++ b/src/components/Jobs/JobPicker.tsx @@ -1,5 +1,6 @@ import { breakpoints, uiConfigs } from '@/configs/ui.configs' import styled from '@emotion/styled' +import Link from 'next/link' import { calculatElementCount } from '../../../utils/count' import { FilterTitle } from '../Filter' import { Tag } from '../Tag' @@ -15,7 +16,7 @@ type Props = { setActiveBUs: React.Dispatch> } -const JobFilter = ({ data, activeBUs, setActiveBUs }: Props) => { +const JobPicker = ({ data, activeBUs, setActiveBUs }: Props) => { if (data == null) { return
Something went wrong
} @@ -26,7 +27,7 @@ const JobFilter = ({ data, activeBUs, setActiveBUs }: Props) => { if (activeBUs.includes(bu)) { setActiveBUs((prevBUs) => prevBUs.filter((item) => item !== bu)) } else { - setActiveBUs((prevBUs) => [...prevBUs, bu]) + setActiveBUs([bu]) } } @@ -35,18 +36,21 @@ const JobFilter = ({ data, activeBUs, setActiveBUs }: Props) => { - setActiveBUs([])}> - All Jobs - + + setActiveBUs([])}> + All Jobs + + {businessUnits?.length ? businessUnits.map((bu: string) => ( - toggleBU(bu)} - > - {bu} - + + toggleBU(bu)} + > + {bu} + + )) : null} @@ -92,4 +96,8 @@ const Border = styled.hr` margin: 0; ` -export default JobFilter +const CustomLink = styled(Link)` + text-decoration: none; +` + +export default JobPicker diff --git a/src/components/Jobs/index.ts b/src/components/Jobs/index.ts index da9d0a5..da4260e 100644 --- a/src/components/Jobs/index.ts +++ b/src/components/Jobs/index.ts @@ -1,3 +1,3 @@ -export { default as JobFilter } from './JobFilter' export { default as JobItem } from './JobItem' export { default as JobList } from './JobList' +export { default as JobPicker } from './JobPicker' diff --git a/src/components/Services/ServiceList.tsx b/src/components/Services/ServiceList.tsx index caf96f1..7ff6fbf 100644 --- a/src/components/Services/ServiceList.tsx +++ b/src/components/Services/ServiceList.tsx @@ -1,5 +1,6 @@ import { breakpoints } from '@/configs/ui.configs' import styled from '@emotion/styled' +import { toBuInUrl } from '../../../utils/bu' import ServiceItem, { ServiceType } from './ServiceItem' // adjust path accordingly type Props = { @@ -17,7 +18,7 @@ const ServiceList = ({ services, activeServices }: Props) => { !activeServices?.length ? true : activeServices.includes(service.title), ) .map((service, idx) => ( - + {service.title} @@ -33,6 +34,7 @@ const Container = styled.div` width: 100%; justify-content: space-between; border-top: 1px solid rgba(0, 0, 0, 0.18); + scroll-margin-top: 24px; @media (max-width: ${breakpoints.md}px) { margin-top: 60px; diff --git a/src/components/Services/ServiceFilter.tsx b/src/components/Services/ServicePicker.tsx similarity index 77% rename from src/components/Services/ServiceFilter.tsx rename to src/components/Services/ServicePicker.tsx index daff433..06a36f5 100644 --- a/src/components/Services/ServiceFilter.tsx +++ b/src/components/Services/ServicePicker.tsx @@ -1,5 +1,7 @@ import { breakpoints, uiConfigs } from '@/configs/ui.configs' import styled from '@emotion/styled' +import Link from 'next/link' +import { toBuInUrl } from '../../../utils/bu' import { FilterTitle } from '../Filter' import { Tag } from '../Tag' import { ServiceType } from './ServiceItem' @@ -10,7 +12,7 @@ type Props = { setActiveServices: React.Dispatch> } -const ServiceFilter = ({ +const ServicePicker = ({ services, activeServices, setActiveServices, @@ -25,10 +27,7 @@ const ServiceFilter = ({ prevServicesContainer.filter((item) => item !== service), ) } else { - setActiveServices((prevServicesContainer) => [ - ...prevServicesContainer, - service, - ]) + setActiveServices([service]) } } @@ -39,13 +38,17 @@ const ServiceFilter = ({ {services?.length ? services.map((service) => ( - toggleService(service.title)} + href={`#${toBuInUrl(service.title)}`} > - {service.title} - + toggleService(service.title)} + > + {service.title} + + )) : null} @@ -95,4 +98,8 @@ const Border = styled.hr` margin: 0; ` -export default ServiceFilter +const CustomLink = styled(Link)` + text-decoration: none; +` + +export default ServicePicker diff --git a/src/components/Services/index.ts b/src/components/Services/index.ts index f122aba..0dd6e89 100644 --- a/src/components/Services/index.ts +++ b/src/components/Services/index.ts @@ -1,3 +1,3 @@ -export { default as ServiceFilter } from './ServiceFilter' export { default as ServiceItem } from './ServiceItem' export { default as ServiceList } from './ServiceList' +export { default as ServicePicker } from './ServicePicker' diff --git a/src/pages/jobs.tsx b/src/pages/jobs.tsx index 2c55741..383bbb0 100644 --- a/src/pages/jobs.tsx +++ b/src/pages/jobs.tsx @@ -1,5 +1,5 @@ import { Box } from '@/components/Box' -import { JobFilter, JobList } from '@/components/Jobs' +import { JobList, JobPicker } from '@/components/Jobs' import { SEO } from '@/components/SEO' import { breakpoints } from '@/configs/ui.configs' import { SubPageLayout } from '@/layouts/SubPageLayout' @@ -21,7 +21,7 @@ const Page = ({ jobs }: any) => {
- {
- { return '' } } + +export function toBuInUrl(bu: string) { + return bu + .toLowerCase() + .trim() + .replace(/\s+/g, '-') + .replace(/[^\w\-]+/g, '') + .replace(/\-\-+/g, '-') +}