|
|
@@ -6,6 +6,7 @@
|
|
|
cancelRequest,
|
|
|
deleteBody,
|
|
|
deleteHeader,
|
|
|
+ deleteQueryParam,
|
|
|
insertHeader,
|
|
|
sendRequest,
|
|
|
setEntryAuth,
|
|
|
@@ -258,13 +259,14 @@
|
|
|
<Tabs.List class="shrink-0">
|
|
|
<Tabs.Trigger value="params">Parameters</Tabs.Trigger>
|
|
|
<Tabs.Trigger value="headers">Headers</Tabs.Trigger>
|
|
|
- <Tabs.Trigger value="body">Body</Tabs.Trigger>
|
|
|
<Tabs.Trigger value="auth">Auth</Tabs.Trigger>
|
|
|
</Tabs.List>
|
|
|
|
|
|
<div class="flex-1 overflow-auto p-2">
|
|
|
<!-- ================= PARAMETERS ================= -->
|
|
|
|
|
|
+ <!-- ================= PATH ================= -->
|
|
|
+
|
|
|
<Tabs.Content value="params" class="space-y-4">
|
|
|
{#if _state.entry?.path?.length > 0}
|
|
|
<div>
|
|
|
@@ -296,11 +298,13 @@
|
|
|
</div>
|
|
|
{/if}
|
|
|
|
|
|
+ <!-- ================= QUERY ================= -->
|
|
|
+
|
|
|
{#if _state.entry?.query?.length > 0}
|
|
|
<div>
|
|
|
<h3 class="mb-2 text-sm font-medium">Query</h3>
|
|
|
<div
|
|
|
- class="grid grid-cols-[5%_1fr_1fr] items-center justify-center gap-2 text-sm"
|
|
|
+ class="grid grid-cols-[2%_1fr_1fr_2%] items-center justify-center gap-2 text-sm"
|
|
|
>
|
|
|
{#each _state.entry.query as param}
|
|
|
<div class="flex justify-center">
|
|
|
@@ -335,10 +339,64 @@
|
|
|
param,
|
|
|
})}
|
|
|
/>
|
|
|
+ <div class="flex justify-center">
|
|
|
+ <Trash
|
|
|
+ class="h-4 w-4 cursor-pointer text-muted-foreground hover:text-destructive"
|
|
|
+ onclick={() => deleteQueryParam(param)}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
{/each}
|
|
|
</div>
|
|
|
</div>
|
|
|
{/if}
|
|
|
+
|
|
|
+ <!-- ================= BODY ================= -->
|
|
|
+
|
|
|
+ <div class="space-y-4">
|
|
|
+ <h3 class="mb-2 text-sm font-medium">Body</h3>
|
|
|
+ <Tabs.Root value={_state.entry.body === null ? "none" : "json"}>
|
|
|
+ <Tabs.List>
|
|
|
+ <Tabs.Trigger value="none" onclick={deleteBody}
|
|
|
+ >None</Tabs.Trigger
|
|
|
+ >
|
|
|
+ <Tabs.Trigger value="json">JSON</Tabs.Trigger>
|
|
|
+ <Tabs.Trigger value="form">Form</Tabs.Trigger>
|
|
|
+ <Tabs.Trigger value="text">Text</Tabs.Trigger>
|
|
|
+ </Tabs.List>
|
|
|
+
|
|
|
+ <Tabs.Content value="json">
|
|
|
+ <BodyEditor
|
|
|
+ input={_state.entry.body?.content}
|
|
|
+ type={_state.entry.body?.ty}
|
|
|
+ onStateChange={(update) => {
|
|
|
+ if (
|
|
|
+ update.docChanged &&
|
|
|
+ _state.entry!!.body?.content !==
|
|
|
+ update.state.doc.toString()
|
|
|
+ ) {
|
|
|
+ updateBodyContent(
|
|
|
+ update.state.doc.toString(),
|
|
|
+ "Json",
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </Tabs.Content>
|
|
|
+
|
|
|
+ <Tabs.Content value="form">
|
|
|
+ <p class="text-sm text-muted-foreground">
|
|
|
+ Form body editor coming soon.
|
|
|
+ </p>
|
|
|
+ </Tabs.Content>
|
|
|
+
|
|
|
+ <Tabs.Content value="text">
|
|
|
+ <textarea
|
|
|
+ class="w-full min-h-[200px] rounded-md border bg-background p-2 font-mono text-sm"
|
|
|
+ placeholder="Raw text body"
|
|
|
+ ></textarea>
|
|
|
+ </Tabs.Content>
|
|
|
+ </Tabs.Root>
|
|
|
+ </div>
|
|
|
</Tabs.Content>
|
|
|
|
|
|
<!-- ================= HEADERS ================= -->
|
|
|
@@ -377,50 +435,6 @@
|
|
|
</div>
|
|
|
</Tabs.Content>
|
|
|
|
|
|
- <!-- ================= BODY ================= -->
|
|
|
-
|
|
|
- <Tabs.Content value="body" class="space-y-4">
|
|
|
- <Tabs.Root value={_state.entry.body === null ? "none" : "json"}>
|
|
|
- <Tabs.List>
|
|
|
- <Tabs.Trigger value="none" onclick={deleteBody}
|
|
|
- >None</Tabs.Trigger
|
|
|
- >
|
|
|
- <Tabs.Trigger value="json">JSON</Tabs.Trigger>
|
|
|
- <Tabs.Trigger value="form">Form</Tabs.Trigger>
|
|
|
- <Tabs.Trigger value="text">Text</Tabs.Trigger>
|
|
|
- </Tabs.List>
|
|
|
-
|
|
|
- <Tabs.Content value="json">
|
|
|
- <BodyEditor
|
|
|
- input={_state.entry.body?.content}
|
|
|
- type={_state.entry.body?.ty}
|
|
|
- onStateChange={(update) => {
|
|
|
- if (
|
|
|
- update.docChanged &&
|
|
|
- _state.entry!!.body?.content !==
|
|
|
- update.state.doc.toString()
|
|
|
- ) {
|
|
|
- updateBodyContent(update.state.doc.toString(), "Json");
|
|
|
- }
|
|
|
- }}
|
|
|
- />
|
|
|
- </Tabs.Content>
|
|
|
-
|
|
|
- <Tabs.Content value="form">
|
|
|
- <p class="text-sm text-muted-foreground">
|
|
|
- Form body editor coming soon.
|
|
|
- </p>
|
|
|
- </Tabs.Content>
|
|
|
-
|
|
|
- <Tabs.Content value="text">
|
|
|
- <textarea
|
|
|
- class="w-full min-h-[200px] rounded-md border bg-background p-2 font-mono text-sm"
|
|
|
- placeholder="Raw text body"
|
|
|
- ></textarea>
|
|
|
- </Tabs.Content>
|
|
|
- </Tabs.Root>
|
|
|
- </Tabs.Content>
|
|
|
-
|
|
|
<!-- ================= AUTH ================= -->
|
|
|
|
|
|
<Tabs.Content value="auth" class="space-y-4">
|