Socket
Book a DemoSign in
Socket

@angular/forms

Package Overview
Dependencies
Maintainers
2
Versions
1021
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@angular/forms - npm Package Compare versions

Comparing version
22.0.0-next.4
to
22.0.0-next.5
+158
-67
fesm2022/_validation_errors-chunk.mjs
/**
* @license Angular v22.0.0-next.4
* @license Angular v22.0.0-next.5
* (c) 2010-2026 Google LLC. https://angular.dev/

@@ -61,2 +61,5 @@ * License: MIT

}
hasRules() {
return this.fns.length > 0;
}
}

@@ -166,5 +169,11 @@ class BooleanOrLogic extends AbstractLogic {

}
hasAnyLogic() {
return this.hidden.hasRules() || this.disabledReasons.hasRules() || this.readonly.hasRules() || this.syncErrors.hasRules() || this.syncTreeErrors.hasRules() || this.asyncErrors.hasRules() || this.metadata.size > 0;
}
hasMetadata(key) {
return this.metadata.has(key);
}
hasMetadataKeys() {
return this.metadata.size > 0;
}
getMetadataKeys() {

@@ -246,2 +255,10 @@ return this.metadata.keys();

}
hasRules() {
return this.all.length > 0;
}
anyChildHasLogic() {
return this.all.some(({
builder
}) => builder.anyChildHasLogic());
}
mergeIn(other, predicate) {

@@ -312,2 +329,13 @@ if (predicate) {

}
hasRules() {
return this.logic.hasAnyLogic() || this.children.size > 0;
}
anyChildHasLogic() {
for (const child of this.children.values()) {
if (child.hasRules()) {
return true;
}
}
return false;
}
}

@@ -344,4 +372,13 @@ class LeafLogicNode {

hasLogic(builder) {
return this.builder?.hasLogic(builder) ?? false;
if (!this.builder) {
return false;
}
return this.builder.hasLogic(builder);
}
hasRules() {
return this.builder ? this.builder.hasRules() : false;
}
anyChildHasLogic() {
return this.builder ? this.builder.anyChildHasLogic() : false;
}
}

@@ -364,2 +401,8 @@ class CompositeLogicNode {

}
hasRules() {
return this.all.some(node => node.hasRules());
}
anyChildHasLogic() {
return this.all.some(child => child.anyChildHasLogic());
}
}

@@ -577,2 +620,3 @@ function getAllChildBuilders(builder, key) {

}
const IS_ASYNC_VALIDATION_RESOURCE = Symbol('IS_ASYNC_VALIDATION_RESOURCE');
class MetadataKey {

@@ -582,2 +626,3 @@ reducer;

brand;
[IS_ASYNC_VALIDATION_RESOURCE];
constructor(reducer, create) {

@@ -817,9 +862,16 @@ this.reducer = reducer;

this.node = node;
for (const key of this.node.logicNode.logic.getMetadataKeys()) {
if (key.create) {
const logic = this.node.logicNode.logic.getMetadata(key);
const result = untracked(() => runInInjectionContext(this.node.structure.injector, () => key.create(computed(() => logic.compute(this.node.context)))));
this.metadata.set(key, result);
}
runMetadataCreateLifecycle() {
if (!this.node.logicNode.logic.hasMetadataKeys()) {
return;
}
untracked(() => runInInjectionContext(this.node.structure.injector, () => {
for (const key of this.node.logicNode.logic.getMetadataKeys()) {
if (key.create) {
const logic = this.node.logicNode.logic.getMetadata(key);
const result = key.create(this.node, computed(() => logic.compute(this.node.context)));
this.metadata.set(key, result);
}
}
}
}));
}

@@ -918,2 +970,3 @@ get(key) {

_injector = undefined;
_anyChildHasLogic;
get injector() {

@@ -932,2 +985,3 @@ this._injector ??= Injector.create({

children() {
this.ensureChildrenMap();
const map = this.childrenMap();

@@ -939,3 +993,15 @@ if (map === undefined) {

}
_areChildrenMaterialized() {
return untracked(this.childrenMap) !== undefined;
}
ensureChildrenMap() {
if (this._areChildrenMaterialized()) {
return;
}
untracked(() => {
this.childrenMap.update(current => this.computeChildrenMap(this.value(), current, true));
});
}
getChild(key) {
this.ensureChildrenMap();
const strKey = key.toString();

@@ -1001,63 +1067,69 @@ let reader = untracked(this.childrenMap)?.byPropertyKey.get(strKey)?.reader;

source: this.value,
computation: (value, previous) => {
if (!isObject(value)) {
return undefined;
computation: (value, previous) => this.computeChildrenMap(value, previous?.value, false)
});
}
computeChildrenMap(value, prevData, forceMaterialize) {
if (!isObject(value)) {
return undefined;
}
if (!forceMaterialize && prevData === undefined) {
if (!(this._anyChildHasLogic ??= this.logic.anyChildHasLogic())) {
return undefined;
}
}
prevData ??= {
byPropertyKey: new Map()
};
let materializedChildren;
const parentIsArray = isArray(value);
if (prevData !== undefined) {
if (parentIsArray) {
materializedChildren = maybeRemoveStaleArrayFields(prevData, value, this.identitySymbol);
} else {
materializedChildren = maybeRemoveStaleObjectFields(prevData, value);
}
}
for (const key of Object.keys(value)) {
let trackingKey = undefined;
const childValue = value[key];
if (childValue === undefined) {
if (prevData.byPropertyKey.has(key)) {
materializedChildren ??= {
...prevData
};
materializedChildren.byPropertyKey.delete(key);
}
const prevData = previous?.value ?? {
byPropertyKey: new Map()
};
let data;
const parentIsArray = isArray(value);
if (prevData !== undefined) {
if (parentIsArray) {
data = maybeRemoveStaleArrayFields(prevData, value, this.identitySymbol);
} else {
data = maybeRemoveStaleObjectFields(prevData, value);
}
continue;
}
if (parentIsArray && isObject(childValue) && !isArray(childValue)) {
trackingKey = childValue[this.identitySymbol] ??= Symbol(ngDevMode ? `id:${globalId++}` : '');
}
let childNode;
if (trackingKey) {
if (!prevData.byTrackingKey?.has(trackingKey)) {
materializedChildren ??= {
...prevData
};
materializedChildren.byTrackingKey ??= new Map();
materializedChildren.byTrackingKey.set(trackingKey, this.createChildNode(key, trackingKey, parentIsArray));
}
for (const key of Object.keys(value)) {
let trackingKey = undefined;
const childValue = value[key];
if (childValue === undefined) {
if (prevData.byPropertyKey.has(key)) {
data ??= {
...prevData
};
data.byPropertyKey.delete(key);
}
continue;
}
if (parentIsArray && isObject(childValue) && !isArray(childValue)) {
trackingKey = childValue[this.identitySymbol] ??= Symbol(ngDevMode ? `id:${globalId++}` : '');
}
let childNode;
if (trackingKey) {
if (!prevData.byTrackingKey?.has(trackingKey)) {
data ??= {
...prevData
};
data.byTrackingKey ??= new Map();
data.byTrackingKey.set(trackingKey, this.createChildNode(key, trackingKey, parentIsArray));
}
childNode = (data ?? prevData).byTrackingKey.get(trackingKey);
}
const child = prevData.byPropertyKey.get(key);
if (child === undefined) {
data ??= {
...prevData
};
data.byPropertyKey.set(key, {
reader: this.createReader(key),
node: childNode ?? this.createChildNode(key, trackingKey, parentIsArray)
});
} else if (childNode && childNode !== child.node) {
data ??= {
...prevData
};
child.node = childNode;
}
}
return data ?? prevData;
childNode = (materializedChildren ?? prevData).byTrackingKey.get(trackingKey);
}
});
const child = prevData.byPropertyKey.get(key);
if (child === undefined) {
materializedChildren ??= {
...prevData
};
materializedChildren.byPropertyKey.set(key, {
reader: this.createReader(key),
node: childNode ?? this.createChildNode(key, trackingKey, parentIsArray)
});
} else if (childNode && childNode !== child.node) {
materializedChildren ??= {
...prevData
};
child.node = childNode;
}
}
return materializedChildren ?? prevData;
}

@@ -1224,2 +1296,3 @@ createReader(key) {

this.controlValue = this.controlValueSignal();
this.metadataState.runMetadataCreateLifecycle();
}

@@ -1322,2 +1395,5 @@ focusBoundControl(options) {

}
getError(kind) {
return this.errors().find(e => e.kind === kind);
}
hasMetadata(key) {

@@ -1366,2 +1442,17 @@ return this.metadataState.has(key);

}
reloadValidation() {
untracked(() => this._reloadValidation());
}
_reloadValidation() {
const keys = this.logicNode.logic.getMetadataKeys();
for (const key of keys) {
if (key[IS_ASYNC_VALIDATION_RESOURCE]) {
const resource = this.metadata(key);
resource.reload?.();
}
}
for (const child of this.structure.children()) {
child._reloadValidation();
}
}
controlValueSignal() {

@@ -1755,3 +1846,3 @@ const controlValue = linkedSignal(this.value, ...(ngDevMode ? [{

export { BasicFieldAdapter, CompatValidationError, DEBOUNCER, FieldNode, FieldNodeState, FieldNodeStructure, FieldPathNode, MAX, MAX_LENGTH, MIN, MIN_LENGTH, MetadataKey, MetadataReducer, PATTERN, REQUIRED, addDefaultField, apply, applyEach, applyWhen, applyWhenValue, assertPathIsCurrent, calculateValidationSelfStatus, createManagedMetadataKey, createMetadataKey, extractNestedReactiveErrors, form, getInjectorFromOptions, isArray, isObject, metadata, normalizeFormArgs, schema, signalErrorsToValidationErrors, submit };
export { BasicFieldAdapter, CompatValidationError, DEBOUNCER, FieldNode, FieldNodeState, FieldNodeStructure, FieldPathNode, IS_ASYNC_VALIDATION_RESOURCE, MAX, MAX_LENGTH, MIN, MIN_LENGTH, MetadataKey, MetadataReducer, PATTERN, REQUIRED, addDefaultField, apply, applyEach, applyWhen, applyWhenValue, assertPathIsCurrent, calculateValidationSelfStatus, createManagedMetadataKey, createMetadataKey, extractNestedReactiveErrors, form, getInjectorFromOptions, isArray, isObject, metadata, normalizeFormArgs, schema, signalErrorsToValidationErrors, submit };
//# sourceMappingURL=_validation_errors-chunk.mjs.map
/**
* @license Angular v22.0.0-next.4
* @license Angular v22.0.0-next.5
* (c) 2010-2026 Google LLC. https://angular.dev/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v22.0.0-next.4
* @license Angular v22.0.0-next.5
* (c) 2010-2026 Google LLC. https://angular.dev/

@@ -8,6 +8,7 @@ * License: MIT

import * as i0 from '@angular/core';
import { InjectionToken, resource, ɵisPromise as _isPromise, linkedSignal, inject, ɵRuntimeError as _RuntimeError, untracked, input, computed, Renderer2, DestroyRef, Injector, ElementRef, signal, afterRenderEffect, effect, ɵformatRuntimeError as _formatRuntimeError, Directive } from '@angular/core';
import { InjectionToken, debounced, resource, ɵisPromise as _isPromise, linkedSignal, inject, ɵRuntimeError as _RuntimeError, untracked, CSP_NONCE, PLATFORM_ID, Injectable, forwardRef, input, computed, Renderer2, DestroyRef, Injector, ElementRef, signal, afterRenderEffect, effect, ɵformatRuntimeError as _formatRuntimeError, Directive } from '@angular/core';
import { ɵFORM_FIELD_PARSE_ERRORS as _FORM_FIELD_PARSE_ERRORS, Validators, ɵsetNativeDomProperty as _setNativeDomProperty, ɵisNativeFormElement as _isNativeFormElement, ɵisNumericFormElement as _isNumericFormElement, ɵisTextualFormElement as _isTextualFormElement, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
import { assertPathIsCurrent, FieldPathNode, addDefaultField, metadata, createMetadataKey, MAX, MAX_LENGTH, MIN, MIN_LENGTH, PATTERN, REQUIRED, createManagedMetadataKey, DEBOUNCER, signalErrorsToValidationErrors, submit } from './_validation_errors-chunk.mjs';
import { assertPathIsCurrent, FieldPathNode, addDefaultField, metadata, createMetadataKey, MAX, MAX_LENGTH, MIN, MIN_LENGTH, PATTERN, REQUIRED, createManagedMetadataKey, IS_ASYNC_VALIDATION_RESOURCE, DEBOUNCER, signalErrorsToValidationErrors, submit } from './_validation_errors-chunk.mjs';
export { MetadataKey, MetadataReducer, apply, applyEach, applyWhen, applyWhenValue, form, schema } from './_validation_errors-chunk.mjs';
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
import { httpResource } from '@angular/common/http';

@@ -348,3 +349,10 @@ import '@angular/core/primitives/signals';

const pathNode = FieldPathNode.unwrapFieldPath(path);
const RESOURCE = createManagedMetadataKey(opts.factory);
const RESOURCE = createManagedMetadataKey((_state, params) => {
if (opts.debounce !== undefined) {
const debouncedResource = debounced(() => params(), opts.debounce);
return opts.factory(debouncedResource.value);
}
return opts.factory(params);
});
RESOURCE[IS_ASYNC_VALIDATION_RESOURCE] = true;
metadata(path, RESOURCE, ctx => {

@@ -450,2 +458,3 @@ const node = ctx.stateOf(path);

params: opts.request,
debounce: opts.debounce,
factory: request => httpResource(request, opts.options),

@@ -660,5 +669,5 @@ onSuccess: opts.onSuccess,

function getNativeControlValue(element, currentValue) {
function getNativeControlValue(element, currentValue, validityMonitor) {
let modelValue;
if (element.validity.badInput) {
if (isInput(element) && validityMonitor.isBadInput(element)) {
return {

@@ -699,2 +708,21 @@ error: new NativeInputParseError()

}
if (element.tagName === 'INPUT' && element.type === 'text') {
modelValue ??= untracked(currentValue);
if (typeof modelValue === 'number' || modelValue === null) {
if (element.value === '') {
return {
value: null
};
}
const parsed = Number(element.value);
if (Number.isNaN(parsed)) {
return {
error: new NativeInputParseError()
};
}
return {
value: parsed
};
}
}
return {

@@ -735,2 +763,12 @@ value: element.value

}
if (element.tagName === 'INPUT' && element.type === 'text') {
if (typeof value === 'number') {
element.value = isNaN(value) ? '' : String(value);
return;
}
if (value === null) {
element.value = '';
return;
}
}
element.value = value;

@@ -745,2 +783,8 @@ }

}
function isInput(element) {
return element.tagName === 'INPUT';
}
function inputRequiresValidityTracking(input) {
return input.type === 'date' || input.type === 'datetime-local' || input.type === 'month' || input.type === 'time' || input.type === 'week';
}

@@ -841,9 +885,12 @@ function customControlCreate(host, parent) {

function nativeControlCreate(host, parent, parseErrorsSource) {
function nativeControlCreate(host, parent, parseErrorsSource, validityMonitor) {
let updateMode = false;
const input = parent.nativeFormElement;
const parser = createParser(() => parent.state().value(), rawValue => parent.state().controlValue.set(rawValue), () => getNativeControlValue(input, parent.state().value));
const parser = createParser(() => parent.state().value(), rawValue => parent.state().controlValue.set(rawValue), _rawValue => getNativeControlValue(input, parent.state().value, validityMonitor));
parseErrorsSource.set(parser.errors);
host.listenToDom('input', () => parser.setRawValue(undefined));
host.listenToDom('blur', () => parent.state().markAsTouched());
if (isInput(input) && inputRequiresValidityTracking(input)) {
validityMonitor.watchValidity(input, () => parser.setRawValue(undefined));
}
parent.registerAsBinding();

@@ -878,2 +925,108 @@ if (input.tagName === 'SELECT') {

class InputValidityMonitor {
static ɵfac = i0.ɵɵngDeclareFactory({
minVersion: "12.0.0",
version: "22.0.0-next.5",
ngImport: i0,
type: InputValidityMonitor,
deps: [],
target: i0.ɵɵFactoryTarget.Injectable
});
static ɵprov = i0.ɵɵngDeclareInjectable({
minVersion: "12.0.0",
version: "22.0.0-next.5",
ngImport: i0,
type: InputValidityMonitor,
providedIn: 'root',
useClass: i0.forwardRef(() => AnimationInputValidityMonitor)
});
}
i0.ɵɵngDeclareClassMetadata({
minVersion: "12.0.0",
version: "22.0.0-next.5",
ngImport: i0,
type: InputValidityMonitor,
decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
useClass: forwardRef(() => AnimationInputValidityMonitor)
}]
}]
});
class AnimationInputValidityMonitor extends InputValidityMonitor {
document = inject(DOCUMENT);
cspNonce = inject(CSP_NONCE, {
optional: true
});
isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
injectedStyles = new WeakMap();
watchValidity(element, callback) {
if (!this.isBrowser) {
return;
}
const rootNode = element.getRootNode();
if (!this.injectedStyles.has(rootNode)) {
this.injectedStyles.set(rootNode, this.createTransitionStyle(rootNode));
}
element.addEventListener('animationstart', event => {
const animationEvent = event;
if (animationEvent.animationName === 'ng-valid' || animationEvent.animationName === 'ng-invalid') {
callback();
}
});
}
isBadInput(element) {
return element.validity?.badInput ?? false;
}
createTransitionStyle(rootNode) {
const element = this.document.createElement('style');
if (this.cspNonce) {
element.nonce = this.cspNonce;
}
element.textContent = `
@keyframes ng-valid {}
@keyframes ng-invalid {}
input:valid, textarea:valid {
animation: ng-valid 0.001s;
}
input:invalid, textarea:invalid {
animation: ng-invalid 0.001s;
}
`;
if (rootNode.nodeType === 9) {
rootNode.head?.appendChild(element);
} else {
rootNode.appendChild(element);
}
return element;
}
ngOnDestroy() {
this.injectedStyles.get(this.document)?.remove();
}
static ɵfac = i0.ɵɵngDeclareFactory({
minVersion: "12.0.0",
version: "22.0.0-next.5",
ngImport: i0,
type: AnimationInputValidityMonitor,
deps: null,
target: i0.ɵɵFactoryTarget.Injectable
});
static ɵprov = i0.ɵɵngDeclareInjectable({
minVersion: "12.0.0",
version: "22.0.0-next.5",
ngImport: i0,
type: AnimationInputValidityMonitor
});
}
i0.ɵɵngDeclareClassMetadata({
minVersion: "12.0.0",
version: "22.0.0-next.5",
ngImport: i0,
type: AnimationInputValidityMonitor,
decorators: [{
type: Injectable
}]
});
const ɵNgFieldDirective = Symbol();

@@ -907,2 +1060,3 @@ const FORM_FIELD = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'FORM_FIELD' : '');

});
validityMonitor = inject(InputValidityMonitor);
parseErrorsSource = signal(undefined, ...(ngDevMode ? [{

@@ -995,3 +1149,3 @@ debugName: "parseErrorsSource"

} else if (this.elementIsNativeFormElement) {
this.ɵngControlUpdate = nativeControlCreate(host, this, this.parseErrorsSource);
this.ɵngControlUpdate = nativeControlCreate(host, this, this.parseErrorsSource, this.validityMonitor);
} else {

@@ -1024,3 +1178,3 @@ throw new _RuntimeError(1914, typeof ngDevMode !== 'undefined' && ngDevMode && `${host.descriptor} is an invalid [formField] directive host. The host must be a native form control ` + `(such as <input>', '<select>', or '<textarea>') or a custom form control with a 'value' or ` + `'checked' model.`);

minVersion: "12.0.0",
version: "22.0.0-next.4",
version: "22.0.0-next.5",
ngImport: i0,

@@ -1033,3 +1187,3 @@ type: FormField,

minVersion: "17.1.0",
version: "22.0.0-next.4",
version: "22.0.0-next.5",
type: FormField,

@@ -1066,3 +1220,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.4",
version: "22.0.0-next.5",
ngImport: i0,

@@ -1108,7 +1262,13 @@ type: FormField,

event.preventDefault();
submit(this.fieldTree());
untracked(() => {
const fieldTree = this.fieldTree();
const node = fieldTree();
if (node.structure.fieldManager.submitOptions) {
submit(fieldTree);
}
});
}
static ɵfac = i0.ɵɵngDeclareFactory({
minVersion: "12.0.0",
version: "22.0.0-next.4",
version: "22.0.0-next.5",
ngImport: i0,

@@ -1121,3 +1281,3 @@ type: FormRoot,

minVersion: "17.1.0",
version: "22.0.0-next.4",
version: "22.0.0-next.5",
type: FormRoot,

@@ -1148,3 +1308,3 @@ isStandalone: true,

minVersion: "12.0.0",
version: "22.0.0-next.4",
version: "22.0.0-next.5",
ngImport: i0,

@@ -1174,3 +1334,3 @@ type: FormRoot,

export { BaseNgValidationError, EmailValidationError, FORM_FIELD, FormField, FormRoot, MAX, MAX_LENGTH, MIN, MIN_LENGTH, MaxLengthValidationError, MaxValidationError, MinLengthValidationError, MinValidationError, NativeInputParseError, NgValidationError, PATTERN, PatternValidationError, REQUIRED, RequiredValidationError, StandardSchemaValidationError, createManagedMetadataKey, createMetadataKey, debounce, disabled, email, emailError, hidden, max, maxError, maxLength, maxLengthError, metadata, min, minError, minLength, minLengthError, pattern, patternError, provideSignalFormsConfig, readonly, required, requiredError, standardSchemaError, submit, transformedValue, validate, validateAsync, validateHttp, validateStandardSchema, validateTree, ɵNgFieldDirective };
export { BaseNgValidationError, EmailValidationError, FORM_FIELD, FormField, FormRoot, IS_ASYNC_VALIDATION_RESOURCE, MAX, MAX_LENGTH, MIN, MIN_LENGTH, MaxLengthValidationError, MaxValidationError, MinLengthValidationError, MinValidationError, NativeInputParseError, NgValidationError, PATTERN, PatternValidationError, REQUIRED, RequiredValidationError, StandardSchemaValidationError, createManagedMetadataKey, createMetadataKey, debounce, disabled, email, emailError, hidden, max, maxError, maxLength, maxLengthError, metadata, min, minError, minLength, minLengthError, pattern, patternError, provideSignalFormsConfig, readonly, required, requiredError, standardSchemaError, submit, transformedValue, validate, validateAsync, validateHttp, validateStandardSchema, validateTree, ɵNgFieldDirective };
//# sourceMappingURL=signals.mjs.map
{
"name": "@angular/forms",
"version": "22.0.0-next.4",
"version": "22.0.0-next.5",
"description": "Angular - directives and services for creating forms",

@@ -15,5 +15,5 @@ "author": "angular",

"peerDependencies": {
"@angular/core": "22.0.0-next.4",
"@angular/common": "22.0.0-next.4",
"@angular/platform-browser": "22.0.0-next.4",
"@angular/core": "22.0.0-next.5",
"@angular/common": "22.0.0-next.5",
"@angular/platform-browser": "22.0.0-next.5",
"rxjs": "^6.5.3 || ^7.4.0"

@@ -20,0 +20,0 @@ },

/**
* @license Angular v22.0.0-next.4
* @license Angular v22.0.0-next.5
* (c) 2010-2026 Google LLC. https://angular.dev/

@@ -4,0 +4,0 @@ * License: MIT

/**
* @license Angular v22.0.0-next.4
* @license Angular v22.0.0-next.5
* (c) 2010-2026 Google LLC. https://angular.dev/

@@ -8,5 +8,5 @@ * License: MIT

import * as i0 from '@angular/core';
import { Signal, ResourceRef, InputSignal, InputSignalWithTransform, OutputRef, ModelSignal, WritableSignal } from '@angular/core';
import { DebounceTimer, Signal, ResourceRef, InputSignal, InputSignalWithTransform, OutputRef, ModelSignal, WritableSignal } from '@angular/core';
import { PathKind, SchemaPath, SchemaPathRules, LogicFn, OneOrMany, ValidationError, FieldValidator, FieldContext, TreeValidationResult, TreeValidator, WithOptionalFieldTree, DisabledReason, Debouncer, FieldTree } from './_structure-chunk.js';
export { AsyncValidationResult, BaseNgValidationError, ChildFieldContext, CompatFieldState, CompatSchemaPath, EmailValidationError, FORM_FIELD, Field, FieldState, FieldStateByMode, FormField, FormFieldBinding, FormFieldBindingOptions, FormOptions, FormSubmitOptions, IgnoreUnknownProperties, ItemFieldContext, ItemType, MAX, MAX_LENGTH, MIN, MIN_LENGTH, MarkAsTouchedOptions, MaxLengthValidationError, MaxValidationError, MaybeFieldTree, MaybeSchemaPathTree, MetadataKey, MetadataReducer, MetadataSetterType, MinLengthValidationError, MinValidationError, NativeInputParseError, NgValidationError, PATTERN, PatternValidationError, REQUIRED, ReadonlyArrayLike, ReadonlyCompatFieldState, ReadonlyFieldState, ReadonlyFieldTree, RemoveStringIndexUnknownKey, RequiredValidationError, RootFieldContext, Schema, SchemaFn, SchemaOrSchemaFn, SchemaPathTree, SignalFormsConfig, StandardSchemaValidationError, Subfields, ValidationErrorOptions, ValidationResult, ValidationSuccess, Validator, WithFieldTree, WithoutFieldTree, apply, applyEach, applyWhen, applyWhenValue, createManagedMetadataKey, createMetadataKey, emailError, form, maxError, maxLengthError, metadata, minError, minLengthError, patternError, provideSignalFormsConfig, requiredError, schema, standardSchemaError, submit, validateStandardSchema, ɵNgFieldDirective } from './_structure-chunk.js';
export { AsyncValidationResult, BaseNgValidationError, ChildFieldContext, CompatFieldState, CompatSchemaPath, EmailValidationError, FORM_FIELD, Field, FieldState, FieldStateByMode, FormField, FormFieldBinding, FormFieldBindingOptions, FormOptions, FormSubmitOptions, IS_ASYNC_VALIDATION_RESOURCE, IgnoreUnknownProperties, ItemFieldContext, ItemType, MAX, MAX_LENGTH, MIN, MIN_LENGTH, MarkAsTouchedOptions, MaxLengthValidationError, MaxValidationError, MaybeFieldTree, MaybeSchemaPathTree, MetadataKey, MetadataReducer, MetadataSetterType, MinLengthValidationError, MinValidationError, NativeInputParseError, NgValidationError, PATTERN, PatternValidationError, REQUIRED, ReadonlyArrayLike, ReadonlyCompatFieldState, ReadonlyFieldState, ReadonlyFieldTree, RemoveStringIndexUnknownKey, RequiredValidationError, RootFieldContext, Schema, SchemaFn, SchemaOrSchemaFn, SchemaPathTree, SignalFormsConfig, StandardSchemaValidationError, Subfields, ValidationErrorOptions, ValidationResult, ValidationSuccess, Validator, WithFieldTree, WithoutFieldTree, apply, applyEach, applyWhen, applyWhenValue, createManagedMetadataKey, createMetadataKey, emailError, form, maxError, maxLengthError, metadata, minError, minLengthError, patternError, provideSignalFormsConfig, requiredError, schema, standardSchemaError, submit, validateStandardSchema, ɵNgFieldDirective } from './_structure-chunk.js';
import { HttpResourceRequest, HttpResourceOptions } from '@angular/common/http';

@@ -272,2 +272,7 @@ import '@angular/forms';

/**
* Duration in milliseconds to wait before triggering the async operation, or a function that
* returns a promise that resolves when the update should proceed.
*/
readonly debounce?: DebounceTimer<TParams | undefined>;
/**
* A function that receives the resource params and returns a resource of the given params.

@@ -357,2 +362,7 @@ * The given params should be used as is to create the resource.

readonly options?: HttpResourceOptions<TResult, unknown>;
/**
* Duration in milliseconds to wait before triggering the async operation, or a function that
* returns a promise that resolves when the update should proceed.
*/
readonly debounce?: DebounceTimer<string | HttpResourceRequest | undefined>;
}

@@ -650,3 +660,3 @@ /**

* 2. Listens for the `submit` event, prevents the default behavior, and calls `submit()` on the
* `FieldTree`.
* `FieldTree` if it defines its own submission options.
*

@@ -653,0 +663,0 @@ * @usageNotes

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display