Skip to content

Commit 86c6620

Browse files
committed
wip: target feat/include-nomenclatures-in-csv-parser branch
1 parent 9f9cfdf commit 86c6620

4 files changed

Lines changed: 36 additions & 40 deletions

File tree

tools/specs/client/src/components/nomenclature-drawer.tsx

Lines changed: 19 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { createContext, useContext, useState, type ReactNode } from "react";
21
import {
32
Sheet,
43
SheetContent,
@@ -7,20 +6,7 @@ import {
76
} from "@/components/ui/sheet";
87
import { Skeleton } from "@/components/ui/skeleton";
98
import { useNomenclature } from "@/hooks/use-nomenclature";
10-
11-
const NomenclatureDrawerContext = createContext<
12-
((name: string) => void) | null
13-
>(null);
14-
15-
function useNomenclatureDrawer() {
16-
const open = useContext(NomenclatureDrawerContext);
17-
if (!open) {
18-
throw new Error(
19-
"useNomenclatureDrawer must be used within a NomenclatureDrawerProvider",
20-
);
21-
}
22-
return open;
23-
}
9+
import { useSchemaStore } from "@/store/schema-store";
2410

2511
function NomenclatureHeader({ name }: { name: string }) {
2612
const { data, isPending } = useNomenclature(name);
@@ -86,37 +72,36 @@ function NomenclatureContent({ name }: { name: string }) {
8672
);
8773
}
8874

89-
export function NomenclatureDrawerProvider({
90-
children,
91-
}: {
92-
children: ReactNode;
93-
}) {
94-
const [name, setName] = useState<string | null>(null);
75+
export function NomenclatureDrawer() {
76+
const name = useSchemaStore((s) => s.nomenclatureDrawerName);
77+
const closeNomenclatureDrawer = useSchemaStore(
78+
(s) => s.closeNomenclatureDrawer,
79+
);
9580

9681
return (
97-
<NomenclatureDrawerContext.Provider value={setName}>
98-
{children}
99-
<Sheet open={name !== null} onOpenChange={(open) => !open && setName(null)}>
100-
<SheetContent className={"w-full max-w-4xl!"}>
101-
<SheetHeader className="border-b">{name && <NomenclatureHeader name={name} />}</SheetHeader>
102-
<div className="min-h-0 flex-1 overflow-y-auto w-full">
103-
{name && <NomenclatureContent name={name} />}
104-
</div>
105-
</SheetContent>
106-
</Sheet>
107-
</NomenclatureDrawerContext.Provider>
82+
<Sheet
83+
open={name !== null}
84+
onOpenChange={(open) => !open && closeNomenclatureDrawer()}
85+
>
86+
<SheetContent className={"w-full max-w-4xl!"}>
87+
<SheetHeader className="border-b">{name && <NomenclatureHeader name={name} />}</SheetHeader>
88+
<div className="min-h-0 flex-1 overflow-y-auto w-full">
89+
{name && <NomenclatureContent name={name} />}
90+
</div>
91+
</SheetContent>
92+
</Sheet>
10893
);
10994
}
11095

11196
export function NomenclatureBadge({ name }: { name: string }) {
112-
const open = useNomenclatureDrawer();
97+
const openNomenclatureDrawer = useSchemaStore((s) => s.openNomenclatureDrawer);
11398

11499
return (
115100
<button
116101
type="button"
117102
onClick={(e) => {
118103
e.stopPropagation();
119-
open(name);
104+
openNomenclatureDrawer(name);
120105
}}
121106
className="rounded bg-primary px-1.5 py-0.5 font-mono text-xs text-primary-foreground hover:bg-primary/90"
122107
>

tools/specs/client/src/components/schema-detail.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Button } from "@/components/ui/button";
99
import { Skeleton } from "@/components/ui/skeleton";
1010
import {
1111
NomenclatureBadge,
12-
NomenclatureDrawerProvider,
12+
NomenclatureDrawer,
1313
} from "@/components/nomenclature-drawer";
1414
import type {
1515
JsonSchemaDefinitions,
@@ -209,7 +209,8 @@ export function SchemaDetail({ schema }: SchemaDetailProps) {
209209
const definitions = schema.definitions ?? schema.$defs ?? {};
210210

211211
return (
212-
<NomenclatureDrawerProvider>
212+
<>
213+
<NomenclatureDrawer />
213214
<div className="min-h-0 flex-1 overflow-y-auto p-8 w-full max-w-7xl mx-auto">
214215
<div className="flex items-start justify-between gap-4">
215216
<div>
@@ -243,7 +244,7 @@ export function SchemaDetail({ schema }: SchemaDetailProps) {
243244
</div>
244245
)}
245246
</div>
246-
</NomenclatureDrawerProvider>
247+
</>
247248
);
248249
}
249250

tools/specs/client/src/config.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ export const apiDomain =
1111
window.__ENV__?.VITE_SPECS_API_DOMAIN ||
1212
import.meta.env.VITE_SPECS_API_DOMAIN;
1313

14-
export const messageListUrl =
15-
"https://raw.githubusercontent.com/ansforge/SAMU-Hub-Modeles/main/src/main/resources/sample/examples/messagesList.json";
1614

17-
export const defaultBranch = "main";
15+
16+
export const defaultBranch = "feat/include-nomenclatures-in-csv-parser";
17+
18+
19+
export const messageListUrl =
20+
`https://raw.githubusercontent.com/ansforge/SAMU-Hub-Modeles/${defaultBranch}/src/main/resources/sample/examples/messagesList.json`;

tools/specs/client/src/store/schema-store.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ interface SchemaState {
77
setSchemasFromArray: (schemas: SchemaReference[]) => void;
88
selectSchema: (name: string) => void;
99
getSchema: (name: string) => SchemaReference | undefined;
10+
nomenclatureDrawerName: string | null;
11+
openNomenclatureDrawer: (name: string) => void;
12+
closeNomenclatureDrawer: () => void;
1013
}
1114

1215
export const useSchemaStore = create<SchemaState>((set, get) => ({
1316
schemas: {},
1417
selectedName: null,
18+
nomenclatureDrawerName: null,
1519

1620
setSchemasFromArray: (schemas) =>
1721
set({
@@ -23,4 +27,7 @@ export const useSchemaStore = create<SchemaState>((set, get) => ({
2327

2428
selectSchema: (name) => set({ selectedName: name }),
2529
getSchema: (name) => get().schemas[name],
30+
31+
openNomenclatureDrawer: (name) => set({ nomenclatureDrawerName: name }),
32+
closeNomenclatureDrawer: () => set({ nomenclatureDrawerName: null }),
2633
}));

0 commit comments

Comments
 (0)