Skip to content

Commit 1b8eddb

Browse files
committed
feat: use active key for tabs
1 parent dc6fc17 commit 1b8eddb

File tree

1 file changed

+41
-8
lines changed

1 file changed

+41
-8
lines changed

apps/frontend/src/app/question/page.tsx

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -299,18 +299,22 @@ export default function QuestionListPage() {
299299
const [visibleTests, setVisibleTests] = useState<Test[]>([]);
300300
const [hiddenTests, setHiddenTests] = useState<Test[]>([]);
301301
const [isTestsLoading, setIsTestsLoading] = useState<boolean>(true);
302+
const [activeKey, setActiveKey] = useState<string | undefined>(undefined);
303+
const [testActiveKey, setTestActiveKey] = useState<string>("1");
302304

303305
const handleAddVisibleTest = () => {
304306
const newKey = uuidv4();
305307
setVisibleTests([
306308
...visibleTests,
307309
{ key: newKey, input: "", expected: "" },
308310
]);
311+
setActiveKey(newKey);
309312
};
310313

311314
const handleAddHiddenTest = () => {
312315
const newKey = uuidv4();
313316
setHiddenTests([...hiddenTests, { key: newKey, input: "", expected: "" }]);
317+
setActiveKey(newKey);
314318
};
315319

316320
const handleRemoveVisibleTest = (targetKey: string) => {
@@ -353,12 +357,13 @@ export default function QuestionListPage() {
353357

354358
// Add a unique key to each test
355359
if (visibleTests) {
356-
setVisibleTests(
357-
visibleTests.map((test) => ({
358-
...test,
359-
key: uuidv4(),
360-
}))
361-
);
360+
const keyedVisibleTests = visibleTests.map((test, index) => ({
361+
...test,
362+
key: uuidv4(),
363+
}));
364+
setVisibleTests(keyedVisibleTests);
365+
setActiveKey(keyedVisibleTests[0].key);
366+
setTestActiveKey("1");
362367
}
363368
if (hiddenTests) {
364369
setHiddenTests(
@@ -530,7 +535,16 @@ export default function QuestionListPage() {
530535
allowClear
531536
/>
532537
</Form.Item>
533-
<Tabs defaultActiveKey="1">
538+
<Tabs
539+
defaultActiveKey="1"
540+
onChange={(key) => {
541+
setActiveKey(
542+
key == "1" ? visibleTests[0].key : hiddenTests[0]?.key
543+
);
544+
setTestActiveKey(key);
545+
}}
546+
activeKey={testActiveKey}
547+
>
534548
{/* Visible Tests Tab */}
535549
<TabPane
536550
tab={
@@ -550,6 +564,8 @@ export default function QuestionListPage() {
550564
? handleAddVisibleTest()
551565
: handleRemoveVisibleTest(targetKey.toString())
552566
}
567+
onChange={(key) => setActiveKey(key)}
568+
activeKey={activeKey}
553569
>
554570
{visibleTests.map((test: Test, index: number) => (
555571
<TabPane
@@ -630,6 +646,8 @@ export default function QuestionListPage() {
630646
? handleAddHiddenTest()
631647
: handleRemoveHiddenTest(targetKey.toString())
632648
}
649+
onChange={(key) => setActiveKey(key)}
650+
activeKey={activeKey}
633651
>
634652
{hiddenTests.map((test: Test, index: number) => (
635653
<TabPane tab={`Test ${index + 1}`} key={test.key}>
@@ -942,7 +960,18 @@ export default function QuestionListPage() {
942960
/>
943961
</Form.Item>
944962
{/* REFACTOR: should abstract out tabs to a common component for reusability */}
945-
<Tabs defaultActiveKey="1">
963+
<Tabs
964+
defaultActiveKey="1"
965+
onChange={(key) => {
966+
setActiveKey(
967+
key == "1"
968+
? visibleTests[0].key
969+
: hiddenTests[0]?.key
970+
);
971+
setTestActiveKey(key);
972+
}}
973+
activeKey={testActiveKey}
974+
>
946975
{/* Visible Tests Tab */}
947976
<TabPane
948977
tab={
@@ -959,6 +988,8 @@ export default function QuestionListPage() {
959988
? handleAddVisibleTest()
960989
: handleRemoveVisibleTest(targetKey.toString())
961990
}
991+
onChange={(key) => setActiveKey(key)}
992+
activeKey={activeKey}
962993
>
963994
{visibleTests.map((test: Test, index: number) => (
964995
<TabPane
@@ -1033,6 +1064,8 @@ export default function QuestionListPage() {
10331064
? handleAddHiddenTest()
10341065
: handleRemoveHiddenTest(targetKey.toString())
10351066
}
1067+
onChange={(key) => setActiveKey(key)}
1068+
activeKey={activeKey}
10361069
>
10371070
{hiddenTests.map((test: Test, index: number) => (
10381071
<TabPane tab={`Test ${index + 1}`} key={test.key}>

0 commit comments

Comments
 (0)