fix(custom-widgets): isolate workbench typing updates

This commit is contained in:
ajnart committed 2026-08-24 00:45:53 +02:00
1 parent b742840e96
commit d875fb9a75
15 files changed
+888 -350

No files matched your search

@@ -144,11 +144,15 @@ function getInitialInputValue(type: WidgetInputType | null, props: Record<string
if (!type) return "";
const candidate = type === "boolean" ? props.defaultChecked : props.defaultValue;
if (type === "boolean" && typeof candidate === "boolean") return candidate;
if (type === "number" && typeof candidate === "number") return candidate;
if (type === "number" && typeof candidate === "number" && Number.isFinite(candidate)) return candidate;
if (type === "string" && typeof candidate === "string") return candidate;
if (type === "string[]" && Array.isArray(candidate) && candidate.every((item) => typeof item === "string"))
return candidate;
if (type === "number[]" && Array.isArray(candidate) && candidate.every((item) => typeof item === "number"))
if (
type === "number[]" &&
Array.isArray(candidate) &&
candidate.every((item) => typeof item === "number" && Number.isFinite(item))
)
return candidate;
return emptyInputValue(type);
}
@@ -105,6 +105,7 @@ export function CustomWidgetCodeEditor(props: CustomWidgetCodeEditorProps) {
const errorCount = diagnostics.filter(({ severity }) => severity === "error").length;
const warningCount = diagnostics.length - errorCount;
const isCharacterLimitExceeded = props.maxLength !== undefined && props.value.length > props.maxLength;
const isEditorInvalid = Boolean(props.error) || errorCount > 0 || isCharacterLimitExceeded;
const copy = async () => {
try {
await navigator.clipboard.writeText(props.value);
@@ -176,7 +177,7 @@ export function CustomWidgetCodeEditor(props: CustomWidgetCodeEditorProps) {
label={props.label}
placeholder={props.placeholder}
theme={colorScheme}
invalid={isCharacterLimitExceeded}
invalid={isEditorInvalid}
height={props.height ?? (props.language === "jsx" ? "320px" : "220px")}
readOnly={props.readOnly ?? false}
diagnosticMessage={props.messages.diagnostic}
+2 -2
View File
@@ -21,7 +21,7 @@ export const useZodForm = <
schema: TSchema,
options: Omit<
Exclude<Parameters<typeof useForm<inferPossibleSchema<TSchema>>>[0], undefined>,
"validate" | "validateInputOnBlur" | "validateInputOnChange"
"validate" | "validateInputOnBlur"
>,
) => {
const t = useI18n();
@@ -32,7 +32,7 @@ export const useZodForm = <
return useForm<inferPossibleSchema<TSchema>>({
...options,
validateInputOnBlur: true,
validateInputOnChange: true,
validateInputOnChange: options.validateInputOnChange ?? true,
validate: schemaResolver(schema, { sync: true }),
});
};