diff --git a/web/src/pages/MetadataAdminPage.tsx b/web/src/pages/MetadataAdminPage.tsx index eef63fb..2baa0e7 100644 --- a/web/src/pages/MetadataAdminPage.tsx +++ b/web/src/pages/MetadataAdminPage.tsx @@ -145,6 +145,8 @@ export function MetadataAdminPage() { const [cfPii, setCfPii] = useState(false) const [cfLabelEn, setCfLabelEn] = useState('') const [cfLabelZh, setCfLabelZh] = useState('') + const [cfAllowedValues, setCfAllowedValues] = useState('') + const [cfMaxLength, setCfMaxLength] = useState('') const [cfSaving, setCfSaving] = useState(false) // ── Loaders ─────────────────────────────────────────────────────── @@ -192,6 +194,8 @@ export function MetadataAdminPage() { setCfTargetEntity('') setCfFieldKey('') setCfTypeKind('string') + setCfAllowedValues('') + setCfMaxLength('') setCfRequired(false) setCfPii(false) setCfLabelEn('') @@ -222,7 +226,11 @@ export function MetadataAdminPage() { const body: Omit = { key: cfFieldKey, targetEntity: cfTargetEntity, - type: { kind: cfTypeKind }, + type: { + kind: cfTypeKind, + ...(cfTypeKind === 'enum' && cfAllowedValues ? { allowedValues: cfAllowedValues.split(',').map((v) => v.trim()).filter(Boolean) } : {}), + ...(cfTypeKind === 'string' && cfMaxLength ? { maxLength: Number(cfMaxLength) } : {}), + }, required: cfRequired, pii: cfPii, labelTranslations: { @@ -613,6 +621,34 @@ export function MetadataAdminPage() { ))} + {cfTypeKind === 'enum' && ( +
+ + setCfAllowedValues(e.target.value)} + placeholder="LOW, NORMAL, HIGH, URGENT" + className="mt-1 w-full rounded-md border border-slate-300 px-2 py-1.5 text-sm" + /> +
+ )} + {cfTypeKind === 'string' && ( +
+ + setCfMaxLength(e.target.value)} + placeholder="255" + className="mt-1 w-full rounded-md border border-slate-300 px-2 py-1.5 text-sm" + /> +
+ )}