import { AttributeType, WorkspaceRole } from './graphql-global-types'; export declare type ITypeOptions = { [AttributeType.TEXT]: IGenericTypeOptions; [AttributeType.PHONE]: IGenericTypeOptions; [AttributeType.EMAIL]: IGenericTypeOptions; [AttributeType.ID]: IGenericTypeOptions; [AttributeType.UNIQUE_ID]: IGenericTypeOptions; [AttributeType.AUTO_NUMBER]: IGenericTypeOptions; [AttributeType.CREATED_AT]: IDateTimeTypeOptions; [AttributeType.CREATED_BY]: IDateTimeTypeOptions; [AttributeType.DATETIME]: IDateTimeTypeOptions; [AttributeType.LONG_TEXT]: IGenericTypeOptions; [AttributeType.ROLLUP]: IRollupTypeOptions; [AttributeType.FORMULA]: IFormulaicTypeOptions; [AttributeType.STATUS]: IStatusTypeOptions; [AttributeType.SELECT]: ISelectTypeOptions; [AttributeType.NUMBER]: INumberTypeOptions; [AttributeType.CURRENCY]: ICurrencyTypeOptions; [AttributeType.RATING]: IRatingOptions; [AttributeType.BOOLEAN]: IGenericTypeOptions; [AttributeType.COLLABORATOR]: ICollaboratorTypeOptions; [AttributeType.MULTI_SELECT]: ISelectTypeOptions; [AttributeType.MULTI_ATTACHMENT]: IAttachmentTypeOptions; [AttributeType.RECORD_REFERENCE]: IRecordReferenceTypeOptions; [AttributeType.LOOKUP]: ILookupTypeOptions; [AttributeType.DEPT]: IGenericTypeOptions; }[T]; /********************************* GENERIC ***********************************/ declare type IGenericTypeOptions = {}; /********************************* NUMERIC ***********************************/ export declare enum NumberFormat { CURRENCY = "CURRENCY", DECIMAL = "DECIMAL", DECIMAL_WITH_COMMAS = "DECIMAL_WITH_COMMAS", PERCENTAGE = "PERCENTAGE" } interface IGenericNumericTypeOptions { defaultNumber?: number; precision: number; } interface INumberTypeOptions extends IGenericTypeOptions, IGenericNumericTypeOptions { numberFormat: NumberFormat; showBarPercentage?: boolean; } interface ICurrencyTypeOptions extends IGenericTypeOptions, IGenericNumericTypeOptions { currencyFormat: string; } /********************************* DATETIME **********************************/ export declare enum DateFormat { LOCAL = "LOCAL", FRIENDLY = "FRIENDLY", SLASH = "SLASH", ISO = "ISO", FORMULA_PARSE_FORMAT = "FORMULA_PARSE_FORMAT" } export declare enum TimeFormat { TWELVE_HOUR = "TWELVE_HOUR", TWOFOUR_HOUR = "TWOFOUR_HOUR" } export interface IGenericDateTimeTypeOptions { dateFormat: DateFormat; includeTime: boolean; timeFormat: TimeFormat; useGMT: boolean; useCurrentDateTime?: boolean; reminder?: Reminder; } export declare enum ReminderType { SYSTEM = "SYSTEM" } export declare enum ReminderUint { DAY = "DAY", WEEK = "WEEK" } export interface Reminder { id?: string | null; type: ReminderType; unit: ReminderUint; unitDuration: number; hour: number; minute: number; second?: number | null; } interface IDateTimeTypeOptions extends IGenericTypeOptions, IGenericDateTimeTypeOptions { } /******************************** FORMULAIC **********************************/ export declare enum FormulaResultType { DATE = "DATE", NUMBER = "NUMBER", TEXT = "TEXT" } interface IFormulaicTypeOptions extends Partial, Partial>, Partial> { formula: string; errorCode?: string; resultType: FormulaResultType; } interface IRollupTypeOptions extends IGenericTypeOptions, IFormulaicTypeOptions { recordReferenceColumnId?: string; } /********************************** SELECT ***********************************/ export declare enum SelectColor { blueDarkest = "blueDarkest", peacockDarkest = "peacockDarkest", tiffanyDarkest = "tiffanyDarkest", greenDarkest = "greenDarkest", yellowDarkest = "yellowDarkest", orangeDarkest = "orangeDarkest", redDarkest = "redDarkest", pinkDarkest = "pinkDarkest", purpleDarkest = "purpleDarkest", bluishVioletDarkest = "bluishVioletDarkest", greyDarkest = "greyDarkest", blackDarkest = "blackDarkest", blueLightest = "blueLightest", peacockLightest = "peacockLightest", tiffanyLightest = "tiffanyLightest", greenLightest = "greenLightest", yellowLightest = "yellowLightest", orangeLightest = "orangeLightest", redLightest = "redLightest", pinkLightest = "pinkLightest", purpleLightest = "purpleLightest", bluishVioletLightest = "bluishVioletLightest", greyLightest = "greyLightest", blackLightest = "blackLightest" } export interface ISelect { color: SelectColor; label: string; optionId: string; order?: number; } export interface ISelectTypeOptions extends IGenericTypeOptions { options: ISelect[]; useRadio?: boolean; } /***************************** RECORD_REFERENCE ******************************/ interface IRecordReferenceTypeOptions extends IGenericTypeOptions { referenceModelId: string; useMultiple?: boolean; } /********************************** LOOKUP ***********************************/ declare type NonLookupableAttributeTypes = AttributeType.LOOKUP; declare type LookupableAttributeTypes = Exclude; export interface ILookupTypeOptions extends IGenericTypeOptions { recordReferenceColumnId: string; foreignLookupColumnId: string; errorCode?: string; lookupColumnType: LookupableAttributeTypes; lookupTypeOptions: ITypeOptions; } /********************************** RATING ***********************************/ interface IRatingOptions extends IGenericTypeOptions { ratingMax: number; } /******************************** UNIQUE_ID **********************************/ export declare enum IDFormat { PREFIXDATETIMEHASH = "PREFIXDATETIMEHASH", PREFIXHASH = "PREFIXHASH" } /******************************* COLLABORATOR ********************************/ interface ICollaboratorTypeOptions extends IGenericTypeOptions { useMultiple: boolean; useGroup: boolean; useNotify: boolean; groups: string[]; roles: WorkspaceRole[] | null; } /******************************* MULT_ATTACHMENT ********************************/ interface IAttachmentTypeOptions extends IGenericTypeOptions { useSingle?: boolean; useImage?: boolean; } /******************************* STATUS ********************************/ export declare enum StatusType { DOING = "DOING", DONE = "DONE", PENDING = "PENDING" } export interface IStatus { label: string; order: number; type: StatusType; statusId: string; color?: SelectColor; icon?: string; } export interface IStatusTypeOptions { type: AttributeType.STATUS | AttributeType.LOOKUP; statuses: IStatus[]; statusColumnId?: string; assigneeColumnId?: string; endTimeColumnId?: string; } export {};