2
0
mirror of https://github.com/frappe/books.git synced 2024-09-20 03:29:00 +00:00
books/schemas/types.ts
2022-05-23 16:18:21 +05:30

82 lines
1.8 KiB
TypeScript

export enum FieldTypeEnum {
Data = 'Data',
Select = 'Select',
Link = 'Link',
Date = 'Date',
Table = 'Table',
AutoComplete = 'AutoComplete',
Check = 'Check',
AttachImage = 'AttachImage',
DynamicLink = 'DynamicLink',
Int = 'Int',
Float = 'Float',
Currency = 'Currency',
Text = 'Text',
Color = 'Color',
Code = 'Code',
}
export type FieldType = keyof typeof FieldTypeEnum;
export type RawValue = string | number | boolean;
export interface BaseField {
fieldname: string;
fieldtype: FieldType;
label: string;
hidden?: boolean;
required?: boolean;
readOnly?: boolean;
description?: string;
default?: RawValue;
placeholder?: string;
groupBy?: string;
computed?: boolean;
}
export type SelectOption = { value: string; label: string };
export interface OptionField extends BaseField {
fieldtype:
| FieldTypeEnum.Select
| FieldTypeEnum.AutoComplete
| FieldTypeEnum.Color;
options: SelectOption[];
}
export interface TargetField extends BaseField {
fieldtype: FieldTypeEnum.Table | FieldTypeEnum.Link;
target: string | string[];
}
export interface DynamicLinkField extends BaseField {
fieldtype: FieldTypeEnum.DynamicLink;
references: string;
}
export interface NumberField extends BaseField {
fieldtype: FieldTypeEnum.Float | FieldTypeEnum.Int;
minvalue?: number;
maxvalue?: number;
}
export type Field =
| BaseField
| OptionField
| TargetField
| DynamicLinkField
| NumberField;
export type TreeSettings = { parentField: string };
export interface Schema {
name: string;
label: string;
fields: Field[];
isTree?: boolean;
extends?: string;
isChild?: boolean;
isSingle?: boolean;
isAbstract?: boolean;
isSubmittable?: boolean;
keywordFields?: string[];
treeSettings?: TreeSettings;
}