@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
TypeScript
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;
}