MCPcopy Create free account
hub / github.com/RtlZeroMemory/Rezi / validateInputProps

Function validateInputProps

packages/core/src/layout/validate/interactive.ts:351–393  ·  view source on GitHub ↗
(props: InputProps | unknown)

Source from the content-addressed store, hash-verified

349
350/** Validate Input props: id (required, non-empty), value (required), disabled (default false). */
351export function validateInputProps(props: InputProps | unknown): LayoutResult<ValidatedInputProps> {
352 const propsRes = requirePropBag("input", props);
353 if (!propsRes.ok) return propsRes;
354 const p = propsRes.value as {
355 id?: unknown;
356 value?: unknown;
357 disabled?: unknown;
358 readOnly?: unknown;
359 multiline?: unknown;
360 rows?: unknown;
361 wordWrap?: unknown;
362 };
363 const idRes = requireNonEmptyString("input", "id", p.id);
364 if (!idRes.ok) return idRes;
365 const valueRes = requireString("input", "value", p.value);
366 if (!valueRes.ok) return valueRes;
367 const disabledRes = requireBoolean("input", "disabled", p.disabled, false);
368 if (!disabledRes.ok) return disabledRes;
369 const readOnlyRes = requireBoolean("input", "readOnly", p.readOnly, false);
370 if (!readOnlyRes.ok) return readOnlyRes;
371 const multilineRes = requireBoolean("input", "multiline", p.multiline, false);
372 if (!multilineRes.ok) return multilineRes;
373 const rowsRes = requireOptionalIntNonNegative("input", "rows", p.rows);
374 if (!rowsRes.ok) return rowsRes;
375 const wordWrapRes = requireBoolean("input", "wordWrap", p.wordWrap, true);
376 if (!wordWrapRes.ok) return wordWrapRes;
377
378 const multiline = multilineRes.value;
379 const rows = multiline ? Math.max(1, rowsRes.value ?? 3) : 1;
380 const wordWrap = multiline ? wordWrapRes.value : false;
381 return {
382 ok: true,
383 value: {
384 id: idRes.value,
385 value: valueRes.value,
386 disabled: disabledRes.value,
387 readOnly: readOnlyRes.value,
388 multiline,
389 rows,
390 wordWrap,
391 },
392 };
393}
394
395function validateInteractiveOptions(
396 kind: "select" | "radioGroup",

Callers 4

measureLeafFunction · 0.85
measureLeafMinContentFunction · 0.85
measureLeafMaxContentFunction · 0.85

Calls 5

requirePropBagFunction · 0.85
requireNonEmptyStringFunction · 0.85
requireStringFunction · 0.85
requireBooleanFunction · 0.85

Tested by

no test coverage detected