import { CreateElement, VNode } from 'vue'; import { RenderableField } from './RenderableField'; import { FieldTypeOptions, InputProps } from '../types/fields/Field'; import { ServiceModel } from '../models/ServiceModel'; export interface ForeignKeyFieldOptions extends FieldTypeOptions { model: typeof ServiceModel; fieldName: string; } export interface DisplayRenderData { field: RenderableField | null; displayField: any; } export interface InputSelectList { value: string; text: string | null; } export interface ForeignKeyFieldInputRenderData { value: any; list: InputSelectList[]; inputProps: InputProps; } export declare class ForeignKeyField extends RenderableField { /** * Return instance of relation model as value */ getValue(): Promise; /** * Validate field options */ protected validateOptions(options: ForeignKeyFieldOptions): Promise; /** * Retrieve field from relation model */ prepareDisplayRender(): Promise; /** * Render DisplayField with foreign field */ displayRender(h: CreateElement, { field, displayField }: DisplayRenderData): VNode; /** * Prepare value and list of entries for inputRender */ prepareInputRender(inputProps: InputProps): Promise; /** * Retrieve and map input select list */ mapInputSelectList(options: ForeignKeyFieldOptions): Promise; /** * Retrieve input select list */ getInputSelectList(options: ForeignKeyFieldOptions): Promise; /** * Render select input element and options */ inputRender(h: CreateElement, { value, list, inputProps }: ForeignKeyFieldInputRenderData): VNode; }