bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
63 lines (62 loc) • 3.15 kB
TypeScript
import { type Static } from "../../core/utils";
import type { EntityManager } from "../../data";
import { Field, type TActionContext, type TRenderContext } from "./Field";
import * as tbbox from "@sinclair/typebox";
import type { TFieldTSType } from "../../data/entities/EntityTypescript";
export declare const enumFieldConfigSchema: tbbox.TObject<{
default_value: tbbox.TOptional<tbbox.TIntersect<[tbbox.TString, tbbox.TAny]>>;
options: tbbox.TOptional<tbbox.TUnion<[tbbox.TObject<{
type: tbbox.TLiteral<"strings">;
values: tbbox.TArray<tbbox.TString>;
}>, tbbox.TObject<{
type: tbbox.TLiteral<"objects">;
values: tbbox.TArray<tbbox.TObject<{
label: tbbox.TString;
value: tbbox.TString;
}>>;
}>]>>;
required: tbbox.TOptional<tbbox.TBoolean>;
description: tbbox.TOptional<tbbox.TString>;
label: tbbox.TOptional<tbbox.TString>;
fillable: tbbox.TOptional<tbbox.TUnion<[tbbox.TBoolean, tbbox.TArray<tbbox.TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: tbbox.TOptional<tbbox.TUnion<[tbbox.TBoolean, tbbox.TArray<tbbox.TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: tbbox.TOptional<tbbox.TBoolean>;
}>;
export type EnumFieldConfig = Static<typeof enumFieldConfigSchema>;
export declare class EnumField<Required extends true | false = false, TypeOverride = string> extends Field<EnumFieldConfig, TypeOverride, Required> {
readonly type = "enum";
constructor(name: string, config: Partial<EnumFieldConfig>);
protected getSchema(): tbbox.TObject<{
default_value: tbbox.TOptional<tbbox.TIntersect<[tbbox.TString, tbbox.TAny]>>;
options: tbbox.TOptional<tbbox.TUnion<[tbbox.TObject<{
type: tbbox.TLiteral<"strings">;
values: tbbox.TArray<tbbox.TString>;
}>, tbbox.TObject<{
type: tbbox.TLiteral<"objects">;
values: tbbox.TArray<tbbox.TObject<{
label: tbbox.TString;
value: tbbox.TString;
}>>;
}>]>>;
required: tbbox.TOptional<tbbox.TBoolean>;
description: tbbox.TOptional<tbbox.TString>;
label: tbbox.TOptional<tbbox.TString>;
fillable: tbbox.TOptional<tbbox.TUnion<[tbbox.TBoolean, tbbox.TArray<tbbox.TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: tbbox.TOptional<tbbox.TUnion<[tbbox.TBoolean, tbbox.TArray<tbbox.TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: tbbox.TOptional<tbbox.TBoolean>;
}>;
getOptions(): {
label: string;
value: string;
}[];
isValidValue(value: string): boolean;
getValue(value: any, context: TRenderContext): any;
/**
* Transform value after retrieving from database
* @param value
*/
transformRetrieve(value: string | null): string | null;
transformPersist(_value: any, em: EntityManager<any>, context: TActionContext): Promise<string | undefined>;
toJsonSchema(): tbbox.TUnsafe<any> | tbbox.TOptional<tbbox.TUnsafe<any>>;
toType(): TFieldTSType;
}