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

68 lines (67 loc) 3.3 kB
import { Signal, WritableSignal } from '@angular/core'; import { Observable } from 'rxjs'; import { Accessor } from '../../accessor/interface'; import { ValidatorError } from '../../errors/validator-error'; import { ArrayAccessors, ArrayItemAccessor } from '../../type-utils'; import { GetPropertyType } from '../../type-utils/get.types'; import { IValidator, ValidationUpdate } from '../../validation'; import { ValueValidation } from '../../validation/value-validation'; import { SignalProperties } from './interface'; export declare class SignalValueAccessor<TSignal extends WritableSignal<any>, TProperties extends SignalProperties<TSignal>, TProperty extends keyof TProperties> implements Accessor<TProperties, TProperties[TProperty]> { protected signalValue: TSignal; property: TProperty; options: { validators: { [key: string]: Array<IValidator>; }; parentKeys: Array<string>; onDestroy: () => void; onIsDirty: (isDirty: boolean) => void; onValidationChange: (update: ValidationUpdate) => void; observable: Observable<{ new: TProperties[TProperty]; previous: TProperties[TProperty]; }>; isEqual: (val1: unknown, val2: unknown) => boolean; }; readonly id: string; readonly isDirty: WritableSignal<boolean>; readonly validation: ValueValidation<TProperties[TProperty]>; readonly isRequired: Signal<boolean>; readonly arrayAccessors: ArrayAccessors<TProperties[TProperty]>; readonly get: Signal<TProperties[TProperty]>; readonly errors: WritableSignal<Array<ValidatorError>>; protected readonly accessorMap: Map<string, Accessor<any, any>>; protected readonly dirtyMap: Map<string, boolean>; constructor(signalValue: TSignal, property: TProperty, options: { validators: { [key: string]: Array<IValidator>; }; parentKeys: Array<string>; onDestroy: () => void; onIsDirty: (isDirty: boolean) => void; onValidationChange: (update: ValidationUpdate) => void; observable: Observable<{ new: TProperties[TProperty]; previous: TProperties[TProperty]; }>; isEqual: (val1: unknown, val2: unknown) => boolean; }); getAccessors(): TProperties[TProperty] extends Array<any> ? Array<Accessor<TProperties[TProperty], GetPropertyType<TProperties[TProperty], '0'>>> : never; getAccessKey(): string; getValidatorKey(): string; get$(): Observable<TProperties[TProperty]>; set(value: TProperties[TProperty]): void; access<Property extends keyof TProperties[TProperty]>(key: Property | number): Accessor<TProperties[TProperty], TProperties[TProperty][Property]>; setDirty(isDirty: boolean): void; setPristine(): void; destroy(): void; getValue(): TProperties[TProperty]; protected setArrayAccessors(): void; protected updateValidation(): void; protected arrayAccessorsHaveChanged(): boolean; protected createItemAccessor(key: number | string): Accessor<TSignal, TProperties>; protected findItemAccessorIndex(item: any): number; protected findItemIndexForAccessor(accessor: ArrayItemAccessor<TProperties>): number; protected isEqual(val1: unknown, val2: unknown): boolean; }