@tanstack/angular-form 0.37.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,10 +51,10 @@ class TanStackField {
51
51
  return;
52
52
  api.update(this.getOptions());
53
53
  }
54
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TanStackField, deps: [], target: i0.ɵɵFactoryTarget.Directive });
55
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.12", type: TanStackField, isStandalone: true, selector: "[tanstackField]", inputs: { name: "name", defaultValue: "defaultValue", asyncDebounceMs: ["asyncDebounceMs", "asyncDebounceMs", numberAttribute], asyncAlways: ["asyncAlways", "asyncAlways", booleanAttribute], validatorAdapter: "validatorAdapter", tanstackField: "tanstackField", validators: "validators", listeners: "listeners", defaultMeta: "defaultMeta" }, exportAs: ["field"], usesOnChanges: true, ngImport: i0 });
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TanStackField, deps: [], target: i0.ɵɵFactoryTarget.Directive });
55
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.1", type: TanStackField, isStandalone: true, selector: "[tanstackField]", inputs: { name: "name", defaultValue: "defaultValue", asyncDebounceMs: ["asyncDebounceMs", "asyncDebounceMs", numberAttribute], asyncAlways: ["asyncAlways", "asyncAlways", booleanAttribute], validatorAdapter: "validatorAdapter", tanstackField: "tanstackField", validators: "validators", listeners: "listeners", defaultMeta: "defaultMeta" }, exportAs: ["field"], usesOnChanges: true, ngImport: i0 });
56
56
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TanStackField, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TanStackField, decorators: [{
58
58
  type: Directive,
59
59
  args: [{
60
60
  selector: '[tanstackField]',
@@ -1 +1 @@
1
- {"version":3,"file":"tanstack-angular-form.mjs","sources":["../../src/inject-form.ts","../../src/tanstack-field.directive.ts","../../src/inject-store.ts","../../src/tanstack-angular-form.ts"],"sourcesContent":["import { FormApi } from '@tanstack/form-core'\nimport { injectStore } from '@tanstack/angular-store'\nimport type { FormOptions, Validator } from '@tanstack/form-core'\n\nexport function injectForm<\n TFormData,\n TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,\n>(opts?: FormOptions<TFormData, TFormValidator>) {\n const api = new FormApi<TFormData, TFormValidator>(opts)\n\n injectStore(api.store, (state) => state.isSubmitting)\n\n return api\n}\n","import {\n Directive,\n Input,\n booleanAttribute,\n numberAttribute,\n} from '@angular/core'\nimport { FieldApi, FormApi } from '@tanstack/form-core'\nimport type { OnChanges, OnDestroy, OnInit } from '@angular/core'\nimport type {\n DeepKeys,\n DeepValue,\n FieldListeners,\n FieldMeta,\n FieldOptions,\n FieldValidators,\n NoInfer as NoInferHack,\n Validator,\n} from '@tanstack/form-core'\n\n@Directive({\n selector: '[tanstackField]',\n standalone: true,\n exportAs: 'field',\n})\nexport class TanStackField<\n TParentData,\n const TName extends DeepKeys<TParentData>,\n TFieldValidator extends\n | Validator<DeepValue<TParentData, TName>, unknown>\n | undefined = undefined,\n TFormValidator extends\n | Validator<TParentData, unknown>\n | undefined = undefined,\n TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,\n >\n implements\n OnInit,\n OnChanges,\n OnDestroy,\n FieldOptions<TParentData, TName, TFieldValidator, TFormValidator, TData>\n{\n @Input({ required: true }) name!: TName\n // Setting as NoInferHack as it's the same internal type cast as TanStack Form Core\n // This can be removed when TanStack Form Core is moved to TS min of 5.4\n // and the NoInfer internal util type is rm-rf'd\n @Input() defaultValue?: NoInferHack<TData>\n @Input({ transform: numberAttribute }) asyncDebounceMs?: number\n @Input({ transform: booleanAttribute }) asyncAlways?: boolean\n @Input() validatorAdapter?: TFieldValidator\n @Input({ required: true }) tanstackField!: FormApi<\n TParentData,\n TFormValidator\n >\n @Input() validators?: NoInfer<\n FieldValidators<TParentData, TName, TFieldValidator, TFormValidator, TData>\n >\n @Input() listeners?: NoInfer<\n FieldListeners<TParentData, TName, TFieldValidator, TFormValidator, TData>\n >\n @Input() defaultMeta?: Partial<FieldMeta>\n\n api!: FieldApi<TParentData, TName, TFieldValidator, TFormValidator, TData>\n\n private getOptions() {\n return {\n defaultValue: this.defaultValue,\n asyncDebounceMs: this.asyncDebounceMs,\n asyncAlways: this.asyncAlways,\n validatorAdapter: this.validatorAdapter,\n validators: this.validators,\n listeners: this.listeners,\n defaultMeta: this.defaultMeta,\n name: this.name,\n form: this.tanstackField,\n }\n }\n\n unmount?: () => void\n\n ngOnInit() {\n this.api = new FieldApi(this.getOptions())\n\n this.unmount = this.api.mount()\n }\n\n ngOnDestroy() {\n this.unmount?.()\n }\n\n ngOnChanges() {\n const api = this.api as typeof this.api | undefined\n if (!api) return\n api.update(this.getOptions())\n }\n}\n","import { injectStore as injectAngularStore } from '@tanstack/angular-store'\nimport type { FormApi, FormState, Validator } from '@tanstack/form-core'\n\nexport function injectStore<\n TFormData,\n TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,\n TSelected = NoInfer<FormState<TFormData>>,\n>(\n form: FormApi<TFormData, TFormValidator>,\n selector?: (state: NoInfer<FormState<TFormData>>) => TSelected,\n) {\n return injectAngularStore(form.store, selector)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["injectStore","injectAngularStore"],"mappings":"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"}
1
+ {"version":3,"file":"tanstack-angular-form.mjs","sources":["../../src/inject-form.ts","../../src/tanstack-field.directive.ts","../../src/inject-store.ts","../../src/tanstack-angular-form.ts"],"sourcesContent":["import { FormApi } from '@tanstack/form-core'\nimport { injectStore } from '@tanstack/angular-store'\nimport type { FormOptions, Validator } from '@tanstack/form-core'\n\nexport function injectForm<\n TFormData,\n TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,\n>(opts?: FormOptions<TFormData, TFormValidator>) {\n const api = new FormApi<TFormData, TFormValidator>(opts)\n\n injectStore(api.store, (state) => state.isSubmitting)\n\n return api\n}\n","import {\n Directive,\n Input,\n booleanAttribute,\n numberAttribute,\n} from '@angular/core'\nimport { FieldApi, FormApi } from '@tanstack/form-core'\nimport type { OnChanges, OnDestroy, OnInit } from '@angular/core'\nimport type {\n DeepKeys,\n DeepValue,\n FieldListeners,\n FieldMeta,\n FieldOptions,\n FieldValidators,\n NoInfer as NoInferHack,\n Validator,\n} from '@tanstack/form-core'\n\n@Directive({\n selector: '[tanstackField]',\n standalone: true,\n exportAs: 'field',\n})\nexport class TanStackField<\n TParentData,\n const TName extends DeepKeys<TParentData>,\n TFieldValidator extends\n | Validator<DeepValue<TParentData, TName>, unknown>\n | undefined = undefined,\n TFormValidator extends\n | Validator<TParentData, unknown>\n | undefined = undefined,\n TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,\n >\n implements\n OnInit,\n OnChanges,\n OnDestroy,\n FieldOptions<TParentData, TName, TFieldValidator, TFormValidator, TData>\n{\n @Input({ required: true }) name!: TName\n // Setting as NoInferHack as it's the same internal type cast as TanStack Form Core\n // This can be removed when TanStack Form Core is moved to TS min of 5.4\n // and the NoInfer internal util type is rm-rf'd\n @Input() defaultValue?: NoInferHack<TData>\n @Input({ transform: numberAttribute }) asyncDebounceMs?: number\n @Input({ transform: booleanAttribute }) asyncAlways?: boolean\n @Input() validatorAdapter?: TFieldValidator\n @Input({ required: true }) tanstackField!: FormApi<\n TParentData,\n TFormValidator\n >\n @Input() validators?: NoInfer<\n FieldValidators<TParentData, TName, TFieldValidator, TFormValidator, TData>\n >\n @Input() listeners?: NoInfer<\n FieldListeners<TParentData, TName, TFieldValidator, TFormValidator, TData>\n >\n @Input() defaultMeta?: Partial<FieldMeta>\n\n api!: FieldApi<TParentData, TName, TFieldValidator, TFormValidator, TData>\n\n private getOptions() {\n return {\n defaultValue: this.defaultValue,\n asyncDebounceMs: this.asyncDebounceMs,\n asyncAlways: this.asyncAlways,\n validatorAdapter: this.validatorAdapter,\n validators: this.validators,\n listeners: this.listeners,\n defaultMeta: this.defaultMeta,\n name: this.name,\n form: this.tanstackField,\n }\n }\n\n unmount?: () => void\n\n ngOnInit() {\n this.api = new FieldApi(this.getOptions())\n\n this.unmount = this.api.mount()\n }\n\n ngOnDestroy() {\n this.unmount?.()\n }\n\n ngOnChanges() {\n const api = this.api as typeof this.api | undefined\n if (!api) return\n api.update(this.getOptions())\n }\n}\n","import { injectStore as injectAngularStore } from '@tanstack/angular-store'\nimport type { FormApi, FormState, Validator } from '@tanstack/form-core'\n\nexport function injectStore<\n TFormData,\n TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,\n TSelected = NoInfer<FormState<TFormData>>,\n>(\n form: FormApi<TFormData, TFormValidator>,\n selector?: (state: NoInfer<FormState<TFormData>>) => TSelected,\n) {\n return injectAngularStore(form.store, selector)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["injectStore","injectAngularStore"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/angular-form",
3
- "version": "0.37.0",
3
+ "version": "0.38.0",
4
4
  "description": "Powerful, type-safe forms for Angular.",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -20,8 +20,6 @@
20
20
  "exports": {
21
21
  ".": {
22
22
  "types": "./dist/index.d.ts",
23
- "esm2022": "./dist/esm2022/tanstack-angular-form.mjs",
24
- "esm": "./dist/esm2022/tanstack-angular-form.mjs",
25
23
  "default": "./dist/fesm2022/tanstack-angular-form.mjs"
26
24
  },
27
25
  "./package.json": {
@@ -36,23 +34,23 @@
36
34
  "dependencies": {
37
35
  "@tanstack/angular-store": "^0.5.6",
38
36
  "tslib": "^2.8.1",
39
- "@tanstack/form-core": "0.37.0"
37
+ "@tanstack/form-core": "0.38.0"
40
38
  },
41
39
  "devDependencies": {
42
- "@analogjs/vite-plugin-angular": "^1.9.2",
43
- "@angular/common": "^17.3.12",
44
- "@angular/compiler": "^17.3.12",
45
- "@angular/compiler-cli": "^17.3.12",
46
- "@angular/core": "^17.3.12",
47
- "@angular/platform-browser": "^17.3.12",
48
- "@angular/platform-browser-dynamic": "^17.3.12",
40
+ "@analogjs/vite-plugin-angular": "^1.9.4",
41
+ "@angular/common": "^19.0.0",
42
+ "@angular/compiler": "^19.0.0",
43
+ "@angular/compiler-cli": "^19.0.0",
44
+ "@angular/core": "^19.0.0",
45
+ "@angular/platform-browser": "^19.0.0",
46
+ "@angular/platform-browser-dynamic": "^19.0.0",
49
47
  "@testing-library/angular": "^17.3.2",
50
- "ng-packagr": "^17.3.0",
51
- "typescript": "5.4.5",
48
+ "ng-packagr": "^19.0.1",
49
+ "typescript": "5.6.3",
52
50
  "zone.js": "^0.15.0"
53
51
  },
54
52
  "peerDependencies": {
55
- "@angular/core": ">=17.3.0"
53
+ "@angular/core": ">=19.0.0"
56
54
  },
57
55
  "scripts": {}
58
56
  }
@@ -1,5 +0,0 @@
1
- export * from '@tanstack/form-core';
2
- export { injectForm } from './inject-form';
3
- export { TanStackField } from './tanstack-field.directive';
4
- export { injectStore } from './inject-store';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQTtBQUVuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICdAdGFuc3RhY2svZm9ybS1jb3JlJ1xuXG5leHBvcnQgeyBpbmplY3RGb3JtIH0gZnJvbSAnLi9pbmplY3QtZm9ybSdcbmV4cG9ydCB7IFRhblN0YWNrRmllbGQgfSBmcm9tICcuL3RhbnN0YWNrLWZpZWxkLmRpcmVjdGl2ZSdcbmV4cG9ydCB7IGluamVjdFN0b3JlIH0gZnJvbSAnLi9pbmplY3Qtc3RvcmUnXG4iXX0=
@@ -1,8 +0,0 @@
1
- import { FormApi } from '@tanstack/form-core';
2
- import { injectStore } from '@tanstack/angular-store';
3
- export function injectForm(opts) {
4
- const api = new FormApi(opts);
5
- injectStore(api.store, (state) => state.isSubmitting);
6
- return api;
7
- }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5qZWN0LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUdyRCxNQUFNLFVBQVUsVUFBVSxDQUd4QixJQUE2QztJQUM3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBNEIsSUFBSSxDQUFDLENBQUE7SUFFeEQsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUVyRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQXBpIH0gZnJvbSAnQHRhbnN0YWNrL2Zvcm0tY29yZSdcbmltcG9ydCB7IGluamVjdFN0b3JlIH0gZnJvbSAnQHRhbnN0YWNrL2FuZ3VsYXItc3RvcmUnXG5pbXBvcnQgdHlwZSB7IEZvcm1PcHRpb25zLCBWYWxpZGF0b3IgfSBmcm9tICdAdGFuc3RhY2svZm9ybS1jb3JlJ1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Rm9ybTxcbiAgVEZvcm1EYXRhLFxuICBURm9ybVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvcjxURm9ybURhdGEsIHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuPihvcHRzPzogRm9ybU9wdGlvbnM8VEZvcm1EYXRhLCBURm9ybVZhbGlkYXRvcj4pIHtcbiAgY29uc3QgYXBpID0gbmV3IEZvcm1BcGk8VEZvcm1EYXRhLCBURm9ybVZhbGlkYXRvcj4ob3B0cylcblxuICBpbmplY3RTdG9yZShhcGkuc3RvcmUsIChzdGF0ZSkgPT4gc3RhdGUuaXNTdWJtaXR0aW5nKVxuXG4gIHJldHVybiBhcGlcbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- import { injectStore as injectAngularStore } from '@tanstack/angular-store';
2
- export function injectStore(form, selector) {
3
- return injectAngularStore(form.store, selector);
4
- }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luamVjdC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxJQUFJLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFHM0UsTUFBTSxVQUFVLFdBQVcsQ0FLekIsSUFBd0MsRUFDeEMsUUFBOEQ7SUFFOUQsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RTdG9yZSBhcyBpbmplY3RBbmd1bGFyU3RvcmUgfSBmcm9tICdAdGFuc3RhY2svYW5ndWxhci1zdG9yZSdcbmltcG9ydCB0eXBlIHsgRm9ybUFwaSwgRm9ybVN0YXRlLCBWYWxpZGF0b3IgfSBmcm9tICdAdGFuc3RhY2svZm9ybS1jb3JlJ1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U3RvcmU8XG4gIFRGb3JtRGF0YSxcbiAgVEZvcm1WYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3I8VEZvcm1EYXRhLCB1bmtub3duPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgVFNlbGVjdGVkID0gTm9JbmZlcjxGb3JtU3RhdGU8VEZvcm1EYXRhPj4sXG4+KFxuICBmb3JtOiBGb3JtQXBpPFRGb3JtRGF0YSwgVEZvcm1WYWxpZGF0b3I+LFxuICBzZWxlY3Rvcj86IChzdGF0ZTogTm9JbmZlcjxGb3JtU3RhdGU8VEZvcm1EYXRhPj4pID0+IFRTZWxlY3RlZCxcbikge1xuICByZXR1cm4gaW5qZWN0QW5ndWxhclN0b3JlKGZvcm0uc3RvcmUsIHNlbGVjdG9yKVxufVxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuc3RhY2stYW5ndWxhci1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhbnN0YWNrLWFuZ3VsYXItZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,78 +0,0 @@
1
- import { Directive, Input, booleanAttribute, numberAttribute, } from '@angular/core';
2
- import { FieldApi } from '@tanstack/form-core';
3
- import * as i0 from "@angular/core";
4
- export class TanStackField {
5
- name;
6
- // Setting as NoInferHack as it's the same internal type cast as TanStack Form Core
7
- // This can be removed when TanStack Form Core is moved to TS min of 5.4
8
- // and the NoInfer internal util type is rm-rf'd
9
- defaultValue;
10
- asyncDebounceMs;
11
- asyncAlways;
12
- validatorAdapter;
13
- tanstackField;
14
- validators;
15
- listeners;
16
- defaultMeta;
17
- api;
18
- getOptions() {
19
- return {
20
- defaultValue: this.defaultValue,
21
- asyncDebounceMs: this.asyncDebounceMs,
22
- asyncAlways: this.asyncAlways,
23
- validatorAdapter: this.validatorAdapter,
24
- validators: this.validators,
25
- listeners: this.listeners,
26
- defaultMeta: this.defaultMeta,
27
- name: this.name,
28
- form: this.tanstackField,
29
- };
30
- }
31
- unmount;
32
- ngOnInit() {
33
- this.api = new FieldApi(this.getOptions());
34
- this.unmount = this.api.mount();
35
- }
36
- ngOnDestroy() {
37
- this.unmount?.();
38
- }
39
- ngOnChanges() {
40
- const api = this.api;
41
- if (!api)
42
- return;
43
- api.update(this.getOptions());
44
- }
45
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TanStackField, deps: [], target: i0.ɵɵFactoryTarget.Directive });
46
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.12", type: TanStackField, isStandalone: true, selector: "[tanstackField]", inputs: { name: "name", defaultValue: "defaultValue", asyncDebounceMs: ["asyncDebounceMs", "asyncDebounceMs", numberAttribute], asyncAlways: ["asyncAlways", "asyncAlways", booleanAttribute], validatorAdapter: "validatorAdapter", tanstackField: "tanstackField", validators: "validators", listeners: "listeners", defaultMeta: "defaultMeta" }, exportAs: ["field"], usesOnChanges: true, ngImport: i0 });
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TanStackField, decorators: [{
49
- type: Directive,
50
- args: [{
51
- selector: '[tanstackField]',
52
- standalone: true,
53
- exportAs: 'field',
54
- }]
55
- }], propDecorators: { name: [{
56
- type: Input,
57
- args: [{ required: true }]
58
- }], defaultValue: [{
59
- type: Input
60
- }], asyncDebounceMs: [{
61
- type: Input,
62
- args: [{ transform: numberAttribute }]
63
- }], asyncAlways: [{
64
- type: Input,
65
- args: [{ transform: booleanAttribute }]
66
- }], validatorAdapter: [{
67
- type: Input
68
- }], tanstackField: [{
69
- type: Input,
70
- args: [{ required: true }]
71
- }], validators: [{
72
- type: Input
73
- }], listeners: [{
74
- type: Input
75
- }], defaultMeta: [{
76
- type: Input
77
- }] } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuc3RhY2stZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhbnN0YWNrLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsUUFBUSxFQUFXLE1BQU0scUJBQXFCLENBQUE7O0FBa0J2RCxNQUFNLE9BQU8sYUFBYTtJQWlCRyxJQUFJLENBQVE7SUFDdkMsbUZBQW1GO0lBQ25GLHdFQUF3RTtJQUN4RSxnREFBZ0Q7SUFDdkMsWUFBWSxDQUFxQjtJQUNILGVBQWUsQ0FBUztJQUN2QixXQUFXLENBQVU7SUFDcEQsZ0JBQWdCLENBQWtCO0lBQ2hCLGFBQWEsQ0FHdkM7SUFDUSxVQUFVLENBRWxCO0lBQ1EsU0FBUyxDQUVqQjtJQUNRLFdBQVcsQ0FBcUI7SUFFekMsR0FBRyxDQUF1RTtJQUVsRSxVQUFVO1FBQ2hCLE9BQU87WUFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTtTQUN6QixDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBYTtJQUVwQixRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUUxQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUNsQixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFrQyxDQUFBO1FBQ25ELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTTtRQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQy9CLENBQUM7d0dBckVVLGFBQWE7NEZBQWIsYUFBYSxpS0FzQkosZUFBZSwrQ0FDZixnQkFBZ0I7OzRGQXZCekIsYUFBYTtrQkFMekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLE9BQU87aUJBQ2xCOzhCQWtCNEIsSUFBSTtzQkFBOUIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWhCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ2lDLGVBQWU7c0JBQXJELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUNHLFdBQVc7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDcUIsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWhCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRmllbGRBcGksIEZvcm1BcGkgfSBmcm9tICdAdGFuc3RhY2svZm9ybS1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB0eXBlIHtcbiAgRGVlcEtleXMsXG4gIERlZXBWYWx1ZSxcbiAgRmllbGRMaXN0ZW5lcnMsXG4gIEZpZWxkTWV0YSxcbiAgRmllbGRPcHRpb25zLFxuICBGaWVsZFZhbGlkYXRvcnMsXG4gIE5vSW5mZXIgYXMgTm9JbmZlckhhY2ssXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQHRhbnN0YWNrL2Zvcm0tY29yZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RhbnN0YWNrRmllbGRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZXhwb3J0QXM6ICdmaWVsZCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhblN0YWNrRmllbGQ8XG4gICAgVFBhcmVudERhdGEsXG4gICAgY29uc3QgVE5hbWUgZXh0ZW5kcyBEZWVwS2V5czxUUGFyZW50RGF0YT4sXG4gICAgVEZpZWxkVmFsaWRhdG9yIGV4dGVuZHNcbiAgICAgIHwgVmFsaWRhdG9yPERlZXBWYWx1ZTxUUGFyZW50RGF0YSwgVE5hbWU+LCB1bmtub3duPlxuICAgICAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgVEZvcm1WYWxpZGF0b3IgZXh0ZW5kc1xuICAgICAgfCBWYWxpZGF0b3I8VFBhcmVudERhdGEsIHVua25vd24+XG4gICAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBURGF0YSBleHRlbmRzIERlZXBWYWx1ZTxUUGFyZW50RGF0YSwgVE5hbWU+ID0gRGVlcFZhbHVlPFRQYXJlbnREYXRhLCBUTmFtZT4sXG4gID5cbiAgaW1wbGVtZW50c1xuICAgIE9uSW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIEZpZWxkT3B0aW9uczxUUGFyZW50RGF0YSwgVE5hbWUsIFRGaWVsZFZhbGlkYXRvciwgVEZvcm1WYWxpZGF0b3IsIFREYXRhPlxue1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBuYW1lITogVE5hbWVcbiAgLy8gU2V0dGluZyBhcyBOb0luZmVySGFjayBhcyBpdCdzIHRoZSBzYW1lIGludGVybmFsIHR5cGUgY2FzdCBhcyBUYW5TdGFjayBGb3JtIENvcmVcbiAgLy8gVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIFRhblN0YWNrIEZvcm0gQ29yZSBpcyBtb3ZlZCB0byBUUyBtaW4gb2YgNS40XG4gIC8vIGFuZCB0aGUgTm9JbmZlciBpbnRlcm5hbCB1dGlsIHR5cGUgaXMgcm0tcmYnZFxuICBASW5wdXQoKSBkZWZhdWx0VmFsdWU/OiBOb0luZmVySGFjazxURGF0YT5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgYXN5bmNEZWJvdW5jZU1zPzogbnVtYmVyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhc3luY0Fsd2F5cz86IGJvb2xlYW5cbiAgQElucHV0KCkgdmFsaWRhdG9yQWRhcHRlcj86IFRGaWVsZFZhbGlkYXRvclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0YW5zdGFja0ZpZWxkITogRm9ybUFwaTxcbiAgICBUUGFyZW50RGF0YSxcbiAgICBURm9ybVZhbGlkYXRvclxuICA+XG4gIEBJbnB1dCgpIHZhbGlkYXRvcnM/OiBOb0luZmVyPFxuICAgIEZpZWxkVmFsaWRhdG9yczxUUGFyZW50RGF0YSwgVE5hbWUsIFRGaWVsZFZhbGlkYXRvciwgVEZvcm1WYWxpZGF0b3IsIFREYXRhPlxuICA+XG4gIEBJbnB1dCgpIGxpc3RlbmVycz86IE5vSW5mZXI8XG4gICAgRmllbGRMaXN0ZW5lcnM8VFBhcmVudERhdGEsIFROYW1lLCBURmllbGRWYWxpZGF0b3IsIFRGb3JtVmFsaWRhdG9yLCBURGF0YT5cbiAgPlxuICBASW5wdXQoKSBkZWZhdWx0TWV0YT86IFBhcnRpYWw8RmllbGRNZXRhPlxuXG4gIGFwaSE6IEZpZWxkQXBpPFRQYXJlbnREYXRhLCBUTmFtZSwgVEZpZWxkVmFsaWRhdG9yLCBURm9ybVZhbGlkYXRvciwgVERhdGE+XG5cbiAgcHJpdmF0ZSBnZXRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMuZGVmYXVsdFZhbHVlLFxuICAgICAgYXN5bmNEZWJvdW5jZU1zOiB0aGlzLmFzeW5jRGVib3VuY2VNcyxcbiAgICAgIGFzeW5jQWx3YXlzOiB0aGlzLmFzeW5jQWx3YXlzLFxuICAgICAgdmFsaWRhdG9yQWRhcHRlcjogdGhpcy52YWxpZGF0b3JBZGFwdGVyLFxuICAgICAgdmFsaWRhdG9yczogdGhpcy52YWxpZGF0b3JzLFxuICAgICAgbGlzdGVuZXJzOiB0aGlzLmxpc3RlbmVycyxcbiAgICAgIGRlZmF1bHRNZXRhOiB0aGlzLmRlZmF1bHRNZXRhLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZm9ybTogdGhpcy50YW5zdGFja0ZpZWxkLFxuICAgIH1cbiAgfVxuXG4gIHVubW91bnQ/OiAoKSA9PiB2b2lkXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hcGkgPSBuZXcgRmllbGRBcGkodGhpcy5nZXRPcHRpb25zKCkpXG5cbiAgICB0aGlzLnVubW91bnQgPSB0aGlzLmFwaS5tb3VudCgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVubW91bnQ/LigpXG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBjb25zdCBhcGkgPSB0aGlzLmFwaSBhcyB0eXBlb2YgdGhpcy5hcGkgfCB1bmRlZmluZWRcbiAgICBpZiAoIWFwaSkgcmV0dXJuXG4gICAgYXBpLnVwZGF0ZSh0aGlzLmdldE9wdGlvbnMoKSlcbiAgfVxufVxuIl19