Files
VirtWeb/virtweb_frontend/src/widgets/forms/PortInput.tsx
2025-03-28 11:35:51 +01:00

30 lines
644 B
TypeScript

import { TextInput } from "./TextInput";
export function PortInput(p: {
editable: boolean;
label: string;
value?: number;
onChange: (value: number | undefined) => void;
}): React.ReactElement {
return (
<TextInput
{...p}
value={p.value?.toString() ?? ""}
type="number"
onValueChange={(v) => {
p.onChange(sanitizePort(v));
}}
checkValue={(v) => Number(v) <= 65535}
/>
);
}
function sanitizePort(port?: string): number | undefined {
if (port === undefined) return undefined;
const val = Number(port);
if (val < 0) return 0;
if (val > 65535) return 65535;
return val;
}