Fix flickering issue

pull/5424/head
Kamran Ahmed 1 year ago
parent 5bdfe48cad
commit f8f29d2a17
  1. 84
      src/components/Roadmaps/RoadmapsPage.tsx
  2. 28
      src/components/Roadmaps/RoadmapsPageHeader.tsx
  3. 31
      src/pages/roadmaps.astro

@ -365,54 +365,58 @@ const groups: GroupType[] = [
}, },
]; ];
const roleRoadmaps = groups.flatMap((group) =>
group.roadmaps.filter((roadmap) => roadmap.type === 'role'),
);
const skillRoadmaps = groups.flatMap((group) =>
group.roadmaps.filter((roadmap) => roadmap.type === 'skill'),
);
const allGroups = [
{
group: 'Role Based Roadmaps',
roadmaps: roleRoadmaps,
},
{
group: 'Skill Based Roadmaps',
roadmaps: skillRoadmaps,
},
];
export function RoadmapsPage() { export function RoadmapsPage() {
const [activeGroup, setActiveGroup] = useState<AllowGroupNames>(''); const [activeGroup, setActiveGroup] = useState<AllowGroupNames>('');
const [visibleGroups, setVisibleGroups] = useState<GroupType[]>([]); const [visibleGroups, setVisibleGroups] = useState<GroupType[]>(allGroups);
useEffect(() => { useEffect(() => {
if (!activeGroup) { if (!activeGroup) {
const roleRoadmaps = groups.flatMap((group) => setVisibleGroups(allGroups);
group.roadmaps.filter((roadmap) => roadmap.type === 'role'), return;
); }
const skillRoadmaps = groups.flatMap((group) =>
group.roadmaps.filter((roadmap) => roadmap.type === 'skill'),
);
setVisibleGroups([ const group = groups.find((group) => group.group === activeGroup);
{ if (!group) {
group: 'Role Based Roadmaps', return;
roadmaps: roleRoadmaps, }
},
{
group: 'Skill Based Roadmaps',
roadmaps: skillRoadmaps,
},
]);
} else {
const group = groups.find((group) => group.group === activeGroup);
if (group) { // other groups that have a roadmap that is in the same group
// other groups that have a roadmap that is in the same group const otherGroups = groups.filter((g) => {
const otherGroups = groups.filter((g) => { return (
return ( g.group !== group.group &&
g.group !== group.group && g.roadmaps.some((roadmap) => {
g.roadmaps.some((roadmap) => { return roadmap.otherGroups?.includes(group.group);
return roadmap.otherGroups?.includes(group.group); })
}) );
); });
});
setVisibleGroups([ setVisibleGroups([
group, group,
...otherGroups.map((g) => ({ ...otherGroups.map((g) => ({
...g, ...g,
roadmaps: g.roadmaps.filter((roadmap) => roadmaps: g.roadmaps.filter((roadmap) =>
roadmap.otherGroups?.includes(group.group), roadmap.otherGroups?.includes(group.group),
), ),
})), })),
]); ]);
}
}
}, [activeGroup]); }, [activeGroup]);
return ( return (

@ -0,0 +1,28 @@
export function RoadmapsPageHeader() {
return (
<div className="bg-white py-12">
<div className="container">
<div className="flex flex-col items-center bg-white">
<h1 className="text-5xl font-bold">Developer Roadmaps</h1>
<p className="my-3 text-lg">
Browse ever-growing list of up-to-date, community driven roadmaps
</p>
<p className="flex flex-row gap-3">
<a
className="inline-block rounded-md bg-black px-3.5 py-1.5 text-base text-white"
href="#"
>
Draw your own roadmap
</a>
<a
className="inline-block rounded-md bg-gray-300 px-3.5 py-1.5 text-base text-black"
href="#"
>
Generate Roadmap with AI
</a>
</p>
</div>
</div>
</div>
);
}

@ -1,5 +1,6 @@
--- ---
import { RoadmapsPage } from '../components/Roadmaps/RoadmapsPage'; import { RoadmapsPage } from '../components/Roadmaps/RoadmapsPage';
import { RoadmapsPageHeader } from '../components/Roadmaps/RoadmapsPageHeader';
import GridItem from '../components/GridItem.astro'; import GridItem from '../components/GridItem.astro';
import SimplePageHeader from '../components/SimplePageHeader.astro'; import SimplePageHeader from '../components/SimplePageHeader.astro';
import BaseLayout from '../layouts/BaseLayout.astro'; import BaseLayout from '../layouts/BaseLayout.astro';
@ -11,32 +12,6 @@ import { getRoadmapsByTag } from '../lib/roadmap';
description={'Step by step guides and paths to learn different tools or technologies'} description={'Step by step guides and paths to learn different tools or technologies'}
permalink={'/roadmaps'} permalink={'/roadmaps'}
> >
<div class=''> <RoadmapsPageHeader client:load />
<div class='bg-white py-12'> <RoadmapsPage client:load />
<div class='container'>
<div class='flex flex-col items-center bg-white'>
<h1 class='text-5xl font-bold'>Developer Roadmaps</h1>
<p class='my-3 text-lg'>
Browse ever-growing list of up-to-date, community driven roadmaps
</p>
<p class='flex flex-row gap-3'>
<a
class='inline-block rounded-md bg-black px-3.5 py-1.5 text-base text-white'
href='#'
>
Draw your own roadmap
</a>
<a
class='inline-block rounded-md bg-gray-300 px-3.5 py-1.5 text-base text-black'
href='#'
>
Generate Roadmap with AI
</a>
</p>
</div>
</div>
</div>
<RoadmapsPage client:load />
</div>
</BaseLayout> </BaseLayout>

Loading…
Cancel
Save