Skip to content

Commit 10e9022

Browse files
mmalerbathePunderWoman
authored andcommitted
feat(forms): allow focusing bound control from field state
Allows focusing the assocated bound control from the `FieldState`.
1 parent b228355 commit 10e9022

9 files changed

Lines changed: 452 additions & 165 deletions

File tree

goldens/public-api/forms/signals/index.api.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ export interface FieldState<TValue, TKey extends string | number = string | numb
130130
// (undocumented)
131131
readonly errors: Signal<ValidationError.WithField[]>;
132132
readonly errorSummary: Signal<ValidationError.WithField[]>;
133+
focusBoundControl(): void;
133134
readonly formFieldBindings: Signal<readonly FormField<unknown>[]>;
134135
readonly hidden: Signal<boolean>;
135136
readonly invalid: Signal<boolean>;
@@ -174,6 +175,7 @@ export class FormField<T> {
174175
};
175176
// (undocumented)
176177
readonly element: HTMLElement;
178+
focus?(): void;
177179
// (undocumented)
178180
readonly formField: i0.InputSignal<FieldTree<T>>;
179181
protected getOrCreateNgControl(): InteropNgControl;

packages/core/src/core_render3_private_export.ts

Lines changed: 108 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,33 @@
1010
// performed by rollup while it's creating fesm files.
1111
//
1212
// no code actually imports these symbols from the @angular/core entry point
13-
export {isBoundToModule as ɵisBoundToModule} from './application/application_ref';
13+
export {
14+
Framework as ɵFramework,
15+
Profiler as ɵProfiler,
16+
ProfilerEvent as ɵProfilerEvent,
17+
} from '../primitives/devtools';
1418
export {compileNgModuleFactory as ɵcompileNgModuleFactory} from './application/application_ngmodule_factory_compiler';
19+
export {isBoundToModule as ɵisBoundToModule} from './application/application_ref';
1520
export {injectChangeDetectorRef as ɵinjectChangeDetectorRef} from './change_detection/change_detector_ref';
1621
export {getDebugNode as ɵgetDebugNode} from './debug/debug_node';
22+
export {createInjector as ɵcreateInjector} from './di/create_injector';
1723
export {
24+
isInjectable as ɵisInjectable,
1825
NG_INJ_DEF as ɵNG_INJ_DEF,
1926
NG_PROV_DEF as ɵNG_PROV_DEF,
20-
isInjectable as ɵisInjectable,
2127
} from './di/interface/defs';
22-
export {createInjector as ɵcreateInjector} from './di/create_injector';
2328
export {
24-
registerNgModuleType as ɵɵregisterNgModuleType,
2529
setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest,
30+
registerNgModuleType as ɵɵregisterNgModuleType,
2631
} from './linker/ng_module_registration';
2732
export {
2833
NgModuleDef as ɵNgModuleDef,
2934
NgModuleTransitiveScopes as ɵNgModuleTransitiveScopes,
3035
} from './metadata/ng_module_def';
31-
export {getLContext as ɵgetLContext} from './render3/context_discovery';
36+
export {AfterRenderManager as ɵAfterRenderManager} from './render3/after_render/manager';
3237
export {inferTagNameFromDefinition as ɵinferTagNameFromDefinition} from './render3/component_ref';
38+
export {getLContext as ɵgetLContext} from './render3/context_discovery';
39+
export {depsTracker as ɵdepsTracker} from './render3/deps_tracker/deps_tracker';
3340
export {
3441
NG_COMP_DEF as ɵNG_COMP_DEF,
3542
NG_DIR_DEF as ɵNG_DIR_DEF,
@@ -38,90 +45,119 @@ export {
3845
NG_PIPE_DEF as ɵNG_PIPE_DEF,
3946
} from './render3/fields';
4047
export {
48+
AcxChangeDetectionStrategy as ɵAcxChangeDetectionStrategy,
49+
AcxComponentDebugMetadata as ɵAcxComponentDebugMetadata,
50+
AcxDirectiveDebugMetadata as ɵAcxDirectiveDebugMetadata,
51+
AcxViewEncapsulation as ɵAcxViewEncapsulation,
52+
AngularComponentDebugMetadata as ɵAngularComponentDebugMetadata,
53+
AngularDirectiveDebugMetadata as ɵAngularDirectiveDebugMetadata,
4154
AttributeMarker as ɵAttributeMarker,
55+
BaseDirectiveDebugMetadata as ɵBaseDirectiveDebugMetadata,
4256
ComponentDef as ɵComponentDef,
43-
ComponentFactory as ɵRender3ComponentFactory,
44-
ComponentRef as ɵRender3ComponentRef,
4557
ComponentType as ɵComponentType,
58+
ɵcontrolUpdate,
4659
CssSelectorList as ɵCssSelectorList,
60+
ɵDEFER_BLOCK_CONFIG,
61+
ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR,
62+
ɵDeferBlockDependencyInterceptor,
63+
DirectiveDebugMetadata as ɵDirectiveDebugMetadata,
4764
DirectiveDef as ɵDirectiveDef,
4865
DirectiveType as ɵDirectiveType,
4966
getDirectives as ɵgetDirectives,
5067
getHostElement as ɵgetHostElement,
68+
ɵgetUnknownElementStrictMode,
69+
ɵgetUnknownPropertyStrictMode,
5170
NgModuleFactory as ɵNgModuleFactory,
52-
NgModuleRef as ɵRender3NgModuleRef,
5371
NgModuleType as ɵNgModuleType,
5472
NO_CHANGE as ɵNO_CHANGE,
5573
PipeDef as ɵPipeDef,
74+
ComponentFactory as ɵRender3ComponentFactory,
75+
ComponentRef as ɵRender3ComponentRef,
76+
NgModuleRef as ɵRender3NgModuleRef,
5677
RenderFlags as ɵRenderFlags,
78+
ɵsetClassDebugInfo,
5779
setClassMetadata as ɵsetClassMetadata,
5880
setClassMetadataAsync as ɵsetClassMetadataAsync,
59-
ɵsetClassDebugInfo,
6081
setLocaleId as ɵsetLocaleId,
82+
ɵsetUnknownElementStrictMode,
83+
ɵsetUnknownPropertyStrictMode,
6184
store as ɵstore,
62-
ɵDeferBlockDependencyInterceptor,
63-
ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR,
64-
ɵDEFER_BLOCK_CONFIG,
65-
BaseDirectiveDebugMetadata as ɵBaseDirectiveDebugMetadata,
66-
AngularDirectiveDebugMetadata as ɵAngularDirectiveDebugMetadata,
67-
AngularComponentDebugMetadata as ɵAngularComponentDebugMetadata,
68-
AcxChangeDetectionStrategy as ɵAcxChangeDetectionStrategy,
69-
AcxViewEncapsulation as ɵAcxViewEncapsulation,
70-
AcxDirectiveDebugMetadata as ɵAcxDirectiveDebugMetadata,
71-
AcxComponentDebugMetadata as ɵAcxComponentDebugMetadata,
7285
WizComponentDebugMetadata as ɵWizComponentDebugMetadata,
73-
DirectiveDebugMetadata as ɵDirectiveDebugMetadata,
7486
ɵɵadvance,
87+
ɵɵanimateEnter,
88+
ɵɵanimateEnterListener,
89+
ɵɵanimateLeave,
90+
ɵɵanimateLeaveListener,
7591
ɵɵariaProperty,
92+
ɵɵarrowFunction,
93+
ɵɵattachSourceLocations,
7694
ɵɵattribute,
77-
ɵɵinterpolate,
78-
ɵɵinterpolate1,
79-
ɵɵinterpolate2,
80-
ɵɵinterpolate3,
81-
ɵɵinterpolate4,
82-
ɵɵinterpolate5,
83-
ɵɵinterpolate6,
84-
ɵɵinterpolate7,
85-
ɵɵinterpolate8,
86-
ɵɵinterpolateV,
8795
ɵɵclassMap,
8896
ɵɵclassProp,
8997
ɵɵComponentDeclaration,
98+
ɵɵcomponentInstance,
9099
ɵɵconditional,
91-
ɵɵconditionalCreate,
92100
ɵɵconditionalBranchCreate,
101+
ɵɵconditionalCreate,
93102
ɵɵcontentQuery,
94103
ɵɵcontentQuerySignal,
95104
ɵɵcontrol,
96105
ɵɵcontrolCreate,
97-
ɵcontrolUpdate,
98-
ɵɵcomponentInstance,
106+
ɵɵdeclareLet,
107+
ɵɵdefer,
108+
ɵɵdeferEnableTimerScheduling,
109+
ɵɵdeferHydrateNever,
110+
ɵɵdeferHydrateOnHover,
111+
ɵɵdeferHydrateOnIdle,
112+
ɵɵdeferHydrateOnImmediate,
113+
ɵɵdeferHydrateOnInteraction,
114+
ɵɵdeferHydrateOnTimer,
115+
ɵɵdeferHydrateOnViewport,
116+
ɵɵdeferHydrateWhen,
117+
ɵɵdeferOnHover,
118+
ɵɵdeferOnIdle,
119+
ɵɵdeferOnImmediate,
120+
ɵɵdeferOnInteraction,
121+
ɵɵdeferOnTimer,
122+
ɵɵdeferOnViewport,
123+
ɵɵdeferPrefetchOnHover,
124+
ɵɵdeferPrefetchOnIdle,
125+
ɵɵdeferPrefetchOnImmediate,
126+
ɵɵdeferPrefetchOnInteraction,
127+
ɵɵdeferPrefetchOnTimer,
128+
ɵɵdeferPrefetchOnViewport,
129+
ɵɵdeferPrefetchWhen,
130+
ɵɵdeferWhen,
99131
ɵɵdefineComponent,
100132
ɵɵdefineDirective,
101133
ɵɵdefineNgModule,
102134
ɵɵdefinePipe,
103135
ɵɵDirectiveDeclaration,
104136
ɵɵdirectiveInject,
105137
ɵɵdisableBindings,
138+
ɵɵdomElement,
139+
ɵɵdomElementContainer,
140+
ɵɵdomElementContainerEnd,
141+
ɵɵdomElementContainerStart,
142+
ɵɵdomElementEnd,
143+
ɵɵdomElementStart,
144+
ɵɵdomListener,
145+
ɵɵdomProperty,
146+
ɵɵdomTemplate,
106147
ɵɵelement,
107148
ɵɵelementContainer,
108149
ɵɵelementContainerEnd,
109150
ɵɵelementContainerStart,
110151
ɵɵelementEnd,
111152
ɵɵelementStart,
112-
ɵɵdomElement,
113-
ɵɵdomElementStart,
114-
ɵɵdomElementEnd,
115-
ɵɵdomElementContainer,
116-
ɵɵdomElementContainerStart,
117-
ɵɵdomElementContainerEnd,
118-
ɵɵdomTemplate,
119-
ɵɵdomListener,
120153
ɵɵenableBindings,
154+
ɵɵExternalStylesFeature,
121155
ɵɵFactoryDeclaration,
156+
ɵɵgetComponentDepsFactory,
122157
ɵɵgetCurrentView,
123158
ɵɵgetInheritedFactory,
124-
ɵɵdomProperty,
159+
ɵɵgetReplaceMetadataURL,
160+
ɵɵHostDirectivesFeature,
125161
ɵɵi18n,
126162
ɵɵi18nApply,
127163
ɵɵi18nAttributes,
@@ -132,6 +168,16 @@ export {
132168
ɵɵInheritDefinitionFeature,
133169
ɵɵinjectAttribute,
134170
ɵɵInjectorDeclaration,
171+
ɵɵinterpolate,
172+
ɵɵinterpolate1,
173+
ɵɵinterpolate2,
174+
ɵɵinterpolate3,
175+
ɵɵinterpolate4,
176+
ɵɵinterpolate5,
177+
ɵɵinterpolate6,
178+
ɵɵinterpolate7,
179+
ɵɵinterpolate8,
180+
ɵɵinterpolateV,
135181
ɵɵinvalidFactory,
136182
ɵɵlistener,
137183
ɵɵloadQuery,
@@ -152,7 +198,6 @@ export {
152198
ɵɵprojectionDef,
153199
ɵɵproperty,
154200
ɵɵProvidersFeature,
155-
ɵɵHostDirectivesFeature,
156201
ɵɵpureFunction0,
157202
ɵɵpureFunction1,
158203
ɵɵpureFunction2,
@@ -165,50 +210,27 @@ export {
165210
ɵɵpureFunctionV,
166211
ɵɵqueryAdvance,
167212
ɵɵqueryRefresh,
213+
ɵɵreadContextLet,
168214
ɵɵreference,
215+
ɵɵrepeater,
216+
ɵɵrepeaterCreate,
217+
ɵɵrepeaterTrackByIdentity,
218+
ɵɵrepeaterTrackByIndex,
219+
ɵɵreplaceMetadata,
169220
ɵɵresetView,
170221
ɵɵresolveBody,
171222
ɵɵresolveDocument,
172223
ɵɵresolveWindow,
173224
ɵɵrestoreView,
174-
ɵɵrepeater,
175-
ɵɵrepeaterCreate,
176-
ɵɵrepeaterTrackByIdentity,
177-
ɵɵrepeaterTrackByIndex,
178225
ɵɵsetComponentScope,
179226
ɵɵsetNgModuleScope,
180-
ɵɵgetComponentDepsFactory,
181-
ɵɵExternalStylesFeature,
227+
ɵɵstoreLet,
182228
ɵɵstyleMap,
183229
ɵɵstyleProp,
184230
ɵɵsyntheticHostListener,
185231
ɵɵsyntheticHostProperty,
186232
ɵɵtemplate,
187233
ɵɵtemplateRefExtractor,
188-
ɵɵdefer,
189-
ɵɵdeferWhen,
190-
ɵɵdeferOnIdle,
191-
ɵɵdeferOnImmediate,
192-
ɵɵdeferOnTimer,
193-
ɵɵdeferOnHover,
194-
ɵɵdeferOnInteraction,
195-
ɵɵdeferOnViewport,
196-
ɵɵdeferPrefetchWhen,
197-
ɵɵdeferPrefetchOnIdle,
198-
ɵɵdeferPrefetchOnImmediate,
199-
ɵɵdeferPrefetchOnTimer,
200-
ɵɵdeferPrefetchOnHover,
201-
ɵɵdeferPrefetchOnInteraction,
202-
ɵɵdeferPrefetchOnViewport,
203-
ɵɵdeferEnableTimerScheduling,
204-
ɵɵdeferHydrateWhen,
205-
ɵɵdeferHydrateNever,
206-
ɵɵdeferHydrateOnIdle,
207-
ɵɵdeferHydrateOnImmediate,
208-
ɵɵdeferHydrateOnTimer,
209-
ɵɵdeferHydrateOnHover,
210-
ɵɵdeferHydrateOnInteraction,
211-
ɵɵdeferHydrateOnViewport,
212234
ɵɵtext,
213235
ɵɵtextInterpolate,
214236
ɵɵtextInterpolate1,
@@ -220,30 +242,20 @@ export {
220242
ɵɵtextInterpolate7,
221243
ɵɵtextInterpolate8,
222244
ɵɵtextInterpolateV,
223-
ɵɵviewQuery,
224-
ɵɵviewQuerySignal,
225-
ɵɵtwoWayProperty,
226245
ɵɵtwoWayBindingSet,
227246
ɵɵtwoWayListener,
228-
ɵgetUnknownElementStrictMode,
229-
ɵsetUnknownElementStrictMode,
230-
ɵgetUnknownPropertyStrictMode,
231-
ɵsetUnknownPropertyStrictMode,
232-
ɵɵdeclareLet,
233-
ɵɵstoreLet,
234-
ɵɵreadContextLet,
235-
ɵɵreplaceMetadata,
236-
ɵɵgetReplaceMetadataURL,
237-
ɵɵattachSourceLocations,
238-
ɵɵanimateEnter,
239-
ɵɵanimateEnterListener,
240-
ɵɵanimateLeave,
241-
ɵɵanimateLeaveListener,
242-
ɵɵarrowFunction,
247+
ɵɵtwoWayProperty,
248+
ɵɵviewQuery,
249+
ɵɵviewQuerySignal,
243250
} from './render3/index';
244251
export {CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET} from './render3/interfaces/container';
245252
export {LContext as ɵLContext} from './render3/interfaces/context';
246-
export {ɵCONTROL, ɵControl, ɵFieldState, ɵInteropControl} from './render3/interfaces/control';
253+
export {
254+
ɵCONTROL,
255+
ɵFieldState,
256+
ɵFormFieldDirective,
257+
ɵInteropControl,
258+
} from './render3/interfaces/control';
247259
export {setDocument as ɵsetDocument} from './render3/interfaces/document';
248260
export {
249261
compileComponent as ɵcompileComponent,
@@ -254,6 +266,7 @@ export {
254266
compileNgModule as ɵcompileNgModule,
255267
compileNgModuleDefs as ɵcompileNgModuleDefs,
256268
flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible,
269+
generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError,
257270
patchComponentDefWithScope as ɵpatchComponentDefWithScope,
258271
resetCompiledComponents as ɵresetCompiledComponents,
259272
transitiveScopesFor as ɵtransitiveScopesFor,
@@ -272,20 +285,17 @@ export {
272285
} from './render3/jit/partial';
273286
export {compilePipe as ɵcompilePipe} from './render3/jit/pipe';
274287
export {isNgModule as ɵisNgModule} from './render3/jit/util';
275-
export {
276-
Profiler as ɵProfiler,
277-
ProfilerEvent as ɵProfilerEvent,
278-
Framework as ɵFramework,
279-
} from '../primitives/devtools';
288+
export {getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn} from './render3/metadata';
289+
export {DeferBlockData as ɵDeferBlockData} from './render3/util/defer';
280290
export {
281291
FrameworkAgnosticGlobalUtils as ɵFrameworkAgnosticGlobalUtils,
282292
GlobalDevModeUtils as ɵGlobalDevModeUtils,
283293
} from './render3/util/global_utils';
284294
export {getTransferState as ɵgetTransferState} from './render3/util/transfer_state_utils';
285295
export {
286-
ViewRef as ɵViewRef,
287296
isViewDirty as ɵisViewDirty,
288297
markForRefresh as ɵmarkForRefresh,
298+
ViewRef as ɵViewRef,
289299
} from './render3/view_ref';
290300
export {
291301
bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml,
@@ -306,8 +316,3 @@ export {
306316
ɵɵvalidateAttribute,
307317
} from './sanitization/sanitization';
308318
export {noSideEffects as ɵnoSideEffects} from './util/closure';
309-
export {AfterRenderManager as ɵAfterRenderManager} from './render3/after_render/manager';
310-
export {depsTracker as ɵdepsTracker} from './render3/deps_tracker/deps_tracker';
311-
export {generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError} from './render3/jit/module';
312-
export {getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn} from './render3/metadata';
313-
export {DeferBlockData as ɵDeferBlockData} from './render3/util/defer';

0 commit comments

Comments
 (0)