Skip to content

Commit 966bfae

Browse files
mmalerbathePunderWoman
authored andcommitted
build(forms): expose signal forms compat package
Hooks up @angular/forms/signals/compat to be released and have its docs published (cherry picked from commit fc1ef79)
1 parent 911999e commit 966bfae

File tree

17 files changed

+179
-48
lines changed

17 files changed

+179
-48
lines changed

adev/src/assets/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ copy_to_directory(
6868
"//packages/elements:elements_docs",
6969
"//packages/forms:forms_docs",
7070
"//packages/forms/signals:forms_signals_docs",
71+
"//packages/forms/signals/compat:forms_signals_compat_docs",
7172
"//packages/localize:localize_docs",
7273
"//packages/localize/src/localize:localize_init_docs",
7374
"//packages/platform-browser:platform-browser_docs",
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
## API Report File for "@angular/forms_signals_compat"
2+
3+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4+
5+
```ts
6+
7+
import { AbstractControl } from '@angular/forms';
8+
import * as _angular_forms from '@angular/forms';
9+
import { ControlValueAccessor } from '@angular/forms';
10+
import { DestroyableInjector } from '@angular/core';
11+
import { FormControlStatus } from '@angular/forms';
12+
import * as i0 from '@angular/core';
13+
import { Injector } from '@angular/core';
14+
import { NgControl } from '@angular/forms';
15+
import { Signal } from '@angular/core';
16+
import { ValidationErrors } from '@angular/forms';
17+
import { ValidatorFn } from '@angular/forms';
18+
import { WritableSignal } from '@angular/core';
19+
import { ɵCONTROL } from '@angular/core';
20+
import { ɵControl } from '@angular/core';
21+
import { ɵFieldState } from '@angular/core';
22+
import { ɵInteropControl } from '@angular/core';
23+
24+
// @public
25+
export function compatForm<TModel>(model: WritableSignal<TModel>): FieldTree<TModel>;
26+
27+
// @public
28+
export function compatForm<TModel>(model: WritableSignal<TModel>, schemaOrOptions: SchemaOrSchemaFn<TModel> | CompatFormOptions): FieldTree<TModel>;
29+
30+
// @public
31+
export function compatForm<TModel>(model: WritableSignal<TModel>, schema: SchemaOrSchemaFn<TModel>, options: CompatFormOptions): FieldTree<TModel>;
32+
33+
// @public
34+
export type CompatFormOptions = Omit<FormOptions, 'adapter'>;
35+
36+
// @public
37+
export class CompatValidationError<T = unknown> implements ValidationError {
38+
constructor({ context, kind, control }: {
39+
context: T;
40+
kind: string;
41+
control: AbstractControl;
42+
});
43+
// (undocumented)
44+
readonly context: T;
45+
// (undocumented)
46+
readonly control: AbstractControl;
47+
// (undocumented)
48+
readonly field: FieldTree<unknown>;
49+
// (undocumented)
50+
readonly kind: string;
51+
// (undocumented)
52+
readonly message?: string;
53+
}
54+
55+
// (No @packageDocumentation comment for this package)
56+
57+
```

packages/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ filegroup(
108108
"//packages/elements:elements_docs_extraction",
109109
"//packages/forms:forms_docs_extraction",
110110
"//packages/forms/signals:forms_signals_docs_extraction",
111+
"//packages/forms/signals/compat:forms_signals_compat_docs_extraction",
111112
"//packages/localize:localize_docs_extraction",
112113
"//packages/localize/src/localize:localize_init_docs_extraction",
113114
"//packages/platform-browser:platform-browser_docs_extraction",

packages/forms/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ ng_package(
3636
deps = [
3737
"//packages/forms",
3838
"//packages/forms/signals",
39+
"//packages/forms/signals/compat",
3940
],
4041
)
4142

packages/forms/signals/compat/BUILD.bazel

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
load("//tools:defaults.bzl", "ng_project")
1+
load("//tools:defaults.bzl", "generate_api_docs", "ng_project")
22

33
package(default_visibility = ["//visibility:public"])
44

@@ -18,3 +18,22 @@ ng_project(
1818
"//packages/forms/signals",
1919
],
2020
)
21+
22+
filegroup(
23+
name = "files_for_docgen",
24+
srcs = glob([
25+
"*.ts",
26+
"src/**/*.ts",
27+
]) + ["PACKAGE.md"],
28+
)
29+
30+
generate_api_docs(
31+
name = "forms_signals_compat_docs",
32+
srcs = [
33+
":files_for_docgen",
34+
"//packages:common_files_and_deps_for_docs",
35+
"//packages/common:files_for_docgen",
36+
],
37+
entry_point = ":index.ts",
38+
module_name = "@angular/forms/signals/compat",
39+
)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# APIs for Signal Forms interop with Reactive Forms
2+
3+
This package contains APIs to enable interoperability between signal-based forms and reactive forms.
4+
It allows developers to incrementally migrate their existing forms implementations to signal-based forms.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.dev/license
7+
*/
8+
9+
// This file is not used to build this module. It is only used during editing
10+
// by the TypeScript language service and during build for verification. `ngc`
11+
// replaces this file with production index.ts when it rewrites private symbol
12+
// names.
13+
14+
export * from './public_api';
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.dev/license
7+
*/
8+
9+
/**
10+
* @module
11+
* @description
12+
* Entry point for all public APIs of this package.
13+
*/
14+
export * from './src/api/compat_form';
15+
export * from './src/api/compat_validation_error';

packages/forms/signals/compat/src/compat_form.ts renamed to packages/forms/signals/compat/src/api/compat_form.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,18 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9-
import {FieldTree, PathKind, SchemaOrSchemaFn} from '../../src/api/types';
10-
import {form, FormOptions} from '../../public_api';
11-
import {CompatFieldAdapter} from './compat_field_adapter';
12-
import {normalizeFormArgs} from '../../src/util/normalize_form_args';
139
import {WritableSignal} from '@angular/core';
10+
import {form, FormOptions} from '../../../public_api';
11+
import {FieldTree, PathKind, SchemaOrSchemaFn} from '../../../src/api/types';
12+
import {normalizeFormArgs} from '../../../src/util/normalize_form_args';
13+
import {CompatFieldAdapter} from '../compat_field_adapter';
1414

15+
/**
16+
* Options that may be specified when creating a compat form.
17+
*
18+
* @category interop
19+
* @experimental 21.0.0
20+
*/
1521
export type CompatFormOptions = Omit<FormOptions, 'adapter'>;
1622

1723
/**
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.dev/license
7+
*/
8+
9+
import {AbstractControl} from '@angular/forms';
10+
import {FieldTree} from '../../../src/api/types';
11+
import {ValidationError} from '../../../src/api/validation_errors';
12+
13+
/**
14+
* An error used for compat errors.
15+
*
16+
* @experimental 21.0.0
17+
* @category interop
18+
*/
19+
export class CompatValidationError<T = unknown> implements ValidationError {
20+
readonly kind: string = 'compat';
21+
readonly control: AbstractControl;
22+
readonly field!: FieldTree<unknown>;
23+
readonly context: T;
24+
readonly message?: string;
25+
26+
constructor({context, kind, control}: {context: T; kind: string; control: AbstractControl}) {
27+
this.context = context;
28+
this.kind = kind;
29+
this.control = control;
30+
}
31+
}

0 commit comments

Comments
 (0)