38 lines
925 B
TypeScript
38 lines
925 B
TypeScript
import type { KbxLookupDefinition } from './lookup'
|
|
import type { KbxKnownFieldKey } from './generated/fieldCatalog'
|
|
|
|
export type KbxFieldDataType =
|
|
| 'text'
|
|
| 'code'
|
|
| 'integer'
|
|
| 'decimal'
|
|
| 'quantity'
|
|
| 'money'
|
|
| 'date'
|
|
| 'datetime'
|
|
| 'boolean'
|
|
| 'lookup'
|
|
| 'status'
|
|
|
|
export interface KbxFieldDefinition<T = unknown> {
|
|
/** Canonical fields should use KbxKnownFieldKey. string remains for local/read-model fields during staged adoption. */
|
|
key: KbxKnownFieldKey | (string & {})
|
|
label: string
|
|
aliases?: string[]
|
|
dataType: KbxFieldDataType
|
|
required?: boolean
|
|
maxLength?: number
|
|
precision?: number
|
|
scale?: number
|
|
readonly?: boolean
|
|
importable?: boolean
|
|
exportable?: boolean
|
|
sensitive?: boolean
|
|
masking?: 'name' | 'phone' | 'address' | 'partial'
|
|
deprecated?: boolean
|
|
replacementKey?: KbxKnownFieldKey
|
|
defaultValue?: T
|
|
lookup?: KbxLookupDefinition
|
|
helpText?: string
|
|
}
|