ui-framework-jps
Version:
A simple UI framework for state management and UI components
68 lines (67 loc) • 2.02 kB
TypeScript
import { KeyType } from "../ui/ConfigurationTypes";
import { FieldValueOptions } from "./CommonTypes";
import { ValidationRule } from "../ui/validation/ValidationTypeDefs";
import { DataObject } from "./DataObject";
export declare enum FieldType {
id = "Id",
uuid = "UUID",
text = "Text",
integer = "Integer",
float = "Number",
date = "Date",
time = "Time",
shortTime = "Short Time",
datetime = "Datetime",
email = "Email",
password = "Password",
boolean = "True/False",
userId = "User",
choice = "Choice",
limitedChoice = "Limited Choice",
largeText = "TextArea",
duration = "Duration",
colour = "Colour",
compositeObject = "Sub Object",
compositeObjectArray = "Sub Object Array",
linkedObject = "Linked Object",
linkedObjectArray = "Linked Object Array",
ANY = "ANY"
}
export interface FieldValueGenerator {
generate(field: FieldDefinition, isCreate: boolean): string;
}
export interface DerivedField {
getValue(dataObj: any, field: FieldDefinition, isCreate: boolean): string;
setValue(dataObj: any, field: FieldDefinition, isCreate: boolean, value: string): string;
onlyForDisplay(): boolean;
}
export declare type FieldDefinition = {
id: string;
isKey: boolean;
idType: KeyType;
type: FieldType;
displayName: string;
mandatory: boolean;
sortable?: boolean;
displayOnly?: boolean;
description?: string;
linkedDataObjectDefinitionName?: string;
generator?: {
onCreation: boolean;
onModify: boolean;
generator: FieldValueGenerator;
};
dataSource?: FieldValueOptions;
derivedValue?: DerivedField;
};
export interface DataObjectStringifier {
toString(dataObj: DataObject): string;
getDescription(dataObj: DataObject): string;
}
export declare type DataObjectDefinition = {
id: string;
displayName: string;
convertToString: DataObjectStringifier;
fields: FieldDefinition[];
rules?: ValidationRule;
};