UNPKG

@zarlex/ngx-accessor

Version:

This library provides an adapter to interact with Angular forms. It also provides an adapter to work with object signals and forms

46 lines (45 loc) 2.41 kB
import { Signal, WritableSignal } from '@angular/core'; import { Subscription } from 'rxjs'; import { Accessor } from '../accessor/interface'; import { ArrayAccessors, IsValidAccessorKey } from '../type-utils/accessor.types'; import { GetPropertyType, SimplePath } from '../type-utils/get.types'; import { IValidator, ValidationUpdate } from '../validation/interface'; import { Validation } from '../validation/validation'; export interface AccessorCreateOptions { isEqual: (val1: unknown, val2: unknown) => boolean; validators: { [key: string]: Array<IValidator>; }; onValidationChange: (update: ValidationUpdate) => void; } export interface IAccessorOptions<TProperties extends object> { validators: { [key in SimplePath<TProperties>]?: Array<IValidator>; }; } export interface AccessorPropertyConfig { validators?: Array<IValidator>; isEqual?: (val1: unknown, val2: unknown) => boolean; } export type AccessorConfig<TProperties extends object> = { [property in SimplePath<TProperties>]?: AccessorPropertyConfig; }; export declare abstract class AbstractAccessor<TProperties extends object> { config: AccessorConfig<TProperties>; readonly validation: Validation<TProperties>; readonly isDirty: Signal<boolean>; protected dirtyKeys: Map<string, boolean>; protected writableIsDirty: WritableSignal<boolean>; protected accessorMap: Map<string, Accessor<any, any>>; protected accessorSubscriptionsMap: Map<string, Subscription>; constructor(config?: AccessorConfig<TProperties>); access<TKey extends string | undefined = undefined>(key?: IsValidAccessorKey<TKey, TProperties>): [TKey] extends [undefined] ? Accessor<TProperties, TProperties> : Accessor<TProperties, GetPropertyType<TProperties, TKey>>; getAccessors(): ArrayAccessors<any>; removeAccess<TKey extends string>(key: IsValidAccessorKey<TKey, TProperties>): void; destroy(): void; setPristine(): void; protected accessRoot(): Accessor<TProperties, TProperties>; protected accessProperty<TKey extends string>(key: IsValidAccessorKey<TKey, TProperties>): Accessor<TProperties, GetPropertyType<TProperties, TKey>>; protected abstract createAccessor<TKey extends keyof TProperties>(key: TKey, options: AccessorCreateOptions): Accessor<any, any>; protected abstract createRootAccessor(options: AccessorCreateOptions): Accessor<any, any>; }