Skip to content

Commit 0824d00

Browse files
atrakhConvex, Inc.
authored andcommitted
add validator display to ViewDocument (#36444)
GitOrigin-RevId: 56cc711dd4506ab680206c5cc54915785ea15612
1 parent 8b09544 commit 0824d00

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

npm-packages/dashboard-common/src/features/data/components/Table/ViewDocument.tsx

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
import { GenericDocument } from "convex/server";
22
import { useState } from "react";
33
import { TextInput } from "@ui/TextInput";
4+
import { Tooltip } from "@ui/Tooltip";
45
import { ProductionEditsConfirmationDialog } from "@common/elements/ProductionEditsConfirmationDialog";
56
import { EditDocumentField } from "@common/features/data/components/Table/EditDocumentField";
67
import {
78
documentValidatorForTable,
89
validatorForColumn,
910
} from "@common/features/data/components/Table/utils/validators";
10-
import { SchemaJson } from "@common/lib/format";
11+
import {
12+
SchemaJson,
13+
displayObjectFieldSchema,
14+
prettier,
15+
} from "@common/lib/format";
1116
import { useNents } from "@common/lib/useNents";
1217
import { CopyButton } from "@common/elements/CopyButton";
1318
import { stringifyValue } from "@common/lib/stringifyValue";
@@ -121,8 +126,32 @@ export function ViewDocument({
121126
key={column}
122127
className="flex w-full flex-col items-center gap-1"
123128
>
124-
<div className="flex w-full justify-between text-xs font-medium">
125-
{column}
129+
<div className="flex w-full items-center justify-between gap-4">
130+
<div className="shrink text-xs font-medium">{column}</div>
131+
{documentValidator?.type === "object" &&
132+
documentValidator.value[column] ? (
133+
<Tooltip
134+
tip={
135+
<pre className="w-fit text-left">
136+
<code>
137+
{prettier(
138+
displayObjectFieldSchema(
139+
documentValidator.value[column],
140+
),
141+
40,
142+
).slice(0, -1)}
143+
</code>
144+
</pre>
145+
}
146+
className="mt-[-3px] max-w-[60%] truncate"
147+
>
148+
<code className="ml-auto truncate text-right text-xs text-content-tertiary">
149+
{displayObjectFieldSchema(
150+
documentValidator.value[column],
151+
)}
152+
</code>
153+
</Tooltip>
154+
) : null}
126155
</div>
127156
{editingColumn === column ? (
128157
<EditDocumentField

npm-packages/dashboard-common/src/lib/format.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ function displayDocumentType(validator: ValidatorJSON): string {
161161
}
162162
}
163163

164-
function displayObjectFieldSchema(field: ObjectFieldType): string {
164+
export function displayObjectFieldSchema(field: ObjectFieldType): string {
165165
const validator = displayValidator(field.fieldType);
166166
return field.optional ? `v.optional(${validator})` : validator;
167167
}

0 commit comments

Comments
 (0)