www/src/app/cobalt.ts

72 lines
1.5 KiB
TypeScript
Raw Normal View History

export enum FieldType {
text = 'text',
textarea = 'textarea',
html = 'html',
email = 'email',
number = 'number',
integer = 'integer',
date = 'date',
select = 'select',
bool = 'bool',
}
enum ResourceAction {
create = 'create',
read = 'read',
readOne = 'readOne',
update = 'update',
delete = 'delete',
}
export enum Renderer {
text = 'text',
html = 'html',
bool = 'bool',
date = 'date',
time = 'time',
datetime = 'datetime',
}
const allResourceActions = [
ResourceAction.create, ResourceAction.read, ResourceAction.readOne,
ResourceAction.update, ResourceAction.delete,
]
export type FieldBase = {
key: string,
display: string,
type: FieldType,
required: boolean,
sort?: 'asc' | 'desc',
renderer?: Renderer,
readonly?: boolean,
helpText?: string,
placeholder?: string,
hideOn?: {
form?: boolean,
listing?: boolean,
},
}
export type SelectOptions = {display: string, value: any}[]
export type FieldDefinition = FieldBase
| FieldBase & { type: FieldType.select, options: SelectOptions }
export interface ResourceConfiguration {
key: string,
collection: string,
primaryKey: string,
generateKeyOnInsert?: () => string|number,
display: {
field?: string,
singular: string,
plural: string,
},
supportedActions: ResourceAction[],
fields: FieldDefinition[],
}
export { ResourceAction, allResourceActions }