@fluent-form/core
Version:
An Angular dynamic forms library powered by Fluent API and JSON.
43 lines (42 loc) • 1.32 kB
TypeScript
import { AbstractControl } from '@angular/forms';
import type { SafeAny } from '@ngify/core';
import type { AbstractSchema } from './abstract.schema';
import type { SchemaKey } from './types';
/**
* @public
*/
export declare enum SchemaType {
Control = 0,
ControlGroup = 1,
ControlArray = 2,
ControlWrapper = 3,
Component = 4,
ComponentContainer = 5,
ComponentWrapper = 6
}
export declare const enum SchemaKind {
Headless = "headless",
Headful = "headful",
Template = "template",
Row = "row"
}
export interface SchemaLike<Key extends SchemaKey = SchemaKey> {
kind: string;
key?: Key;
}
export interface SchemaContext<S extends SchemaLike = AbstractSchema> {
schema: S;
/**
* If there is no corresponding control, the parent control will be returned,
* usually a `FormGroup` or `FormArray`.
*/
control: AbstractControl;
model: SafeAny;
}
export type Length = number | {
max?: number;
min?: number;
};
export type SchemaReactiveFn<S extends AbstractSchema, R> = (ctx: SchemaContext<S>) => R;
export type MaybeSchemaReactiveFn<S extends AbstractSchema, R> = R | SchemaReactiveFn<S, R>;
export type WithoutSchemaReactiveFn<T extends MaybeSchemaReactiveFn<AbstractSchema, SafeAny>> = Exclude<T, SchemaReactiveFn<SafeAny, SafeAny>>;