UNPKG

lynx-admin-ui

Version:

this module adds annotations for entities in order to automatically generate an Administration UI

133 lines (132 loc) 4.71 kB
import { Request } from 'lynx-framework/request'; import BaseEntity from 'lynx-framework/entities/base.entity'; export declare enum AdminType { Id = 1, String = 2, Text = 3, Selection = 4, RichText = 5, Checkbox = 6, Radio = 7, Number = 8, Date = 9, Table = 10, Expanded = 11, Time = 12, Color = 13, Media = 14, AjaxSelection = 15, DateTime = 16, ActionButton = 17, Currency = 18, ExpandedAndSelection = 19, CustomInclude = 20 } export interface UISettings { editorClasses?: string; innerEditorClasses?: string; expandedEditorClasses?: string; filterClasses?: string; listTemplate?: string; listFilter?: string; additionalEditorInfo?: any; additionalFilterInfo?: any; additionalListInfo?: any; descriptionText?: string; descriptionTextClasses?: string; editorFullWidth?: boolean; tab?: string; onRightColumn?: boolean; actionListTemplate?: string; noDataString?: string; noDataTemplate?: string; labelTemplate?: string; } export interface EntityUISettings { tabs?: { key: string; label: string; }[]; tabsAsSections?: boolean; hideTabsInExpanded?: boolean; hideTabsInModal?: boolean; defaultTab?: string; hasRightColumn?: boolean; smartSearchableHint?: string; noDataString?: string; noDataTemplate?: string; } export interface ClassParameters { filterBy?: (req: Request) => Promise<any>; editorTemplate?: string | ((req: Request) => Promise<string>); editorParentTemplate?: string | ((req: Request) => Promise<string>); popupEditorTemplate?: string | ((req: Request) => Promise<string>); popupEditorParentTemplate?: string | ((req: Request) => Promise<string>); listTemplate?: string | ((req: Request) => Promise<string>); listParentTemplate?: string | ((req: Request) => Promise<string>); listActionTemplate?: string | ((req: Request) => Promise<string>); backButtonTemplate?: string | ((req: Request) => Promise<string>); listAdditionalActionTemplate?: string | ((req: Request) => Promise<string>); listCustomDeleteAction?: string | ((req: Request) => Promise<string>); batchDelete?: boolean | ((req: Request) => Promise<boolean>); relations?: string[]; disableCreation?: boolean | ((req: Request) => Promise<boolean>); disableDelete?: boolean | ((req: Request) => Promise<boolean>); defaultOrderBy?: string | ((req: Request) => Promise<string>); uiSettings?: EntityUISettings; customFetchData?: (req: Request, order: any, take: number, skip: number) => Promise<[any[], number]>; disableReloadOnList?: boolean | ((req: Request) => Promise<boolean>); } export interface QueryParams { order: any; take: number; skip: number; } export interface OptionalParameters { } export interface ExpandedAndSelectionParameters extends OptionalParameters { readOnlyExpanded?: boolean; } export interface FieldParameters { name: string; type: AdminType; readOnly?: boolean | ((req: Request, currentEntity: any) => Promise<boolean>); hide?: boolean | ((req: Request, currentEntity: any) => Promise<boolean>); values?: { key: any; value: string; }[] | ((req: Request, currentEntity: any) => Promise<{ key: any; value: string; }[]>); defaultValue?: any | ((req: Request, currentEntity: any) => Promise<any>); query?: (req: Request, currentEntity: any, params: QueryParams) => Promise<[BaseEntity[], number]>; searchRequest?: (req: Request, currentEntity: any, search: string, page: number) => Promise<[{ key: any; value: string; }[], boolean]>; required?: boolean | ((req: Request, currentEntity: any) => Promise<boolean>); pattern?: string; accept?: string; min?: number | string; max?: number | string; step?: number; hundredsSeparator?: string | ((req: Request, currentEntity: any) => Promise<string>); decimalSeparator?: string | ((req: Request, currentEntity: any) => Promise<string>); digits?: number; onSummary?: boolean; searchable?: boolean; smartSearchable?: boolean; selfType?: string; inverseSide?: string; uiSettings?: UISettings; optionalParameters?: OptionalParameters; getter?: (value: any) => Promise<string>; } export declare class EntityMetadata { name: string; classParameters: ClassParameters; fields: Record<string, FieldParameters>; } export declare function AdminUI(name: string, params?: ClassParameters): (target: any) => void; export declare function AdminField(params: FieldParameters): (target: any, key: string) => void;