@qualcomm-ui/angular-core 1.0.5 → 1.0.6

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.
@@ -323,16 +323,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
323
323
 
324
324
  // Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
325
325
  // SPDX-License-Identifier: BSD-3-Clause-Clear
326
- class AbstractListCollectionFormControlDirective {
326
+ class AbstractBaseListCollectionFormControlDirective {
327
327
  /**
328
- * The item collection
329
- *
330
- * @inheritDoc
331
- */
332
- collection = input.required(...(ngDevMode ? [{ debugName: "collection" }] : []));
333
- /**
334
- * The initial state of the input when rendered. Use when you don't need to
335
- * control the checked state of the input. This property will be ignored if you
328
+ * The initial value of the input when rendered. Use when you don't need to
329
+ * control the value of the input. This property will be ignored if you
336
330
  * opt into controlled state via form control bindings.
337
331
  *
338
332
  * @inheritDoc
@@ -583,16 +577,29 @@ class AbstractListCollectionFormControlDirective {
583
577
  setDisabledState(isDisabled) {
584
578
  this.isDisabled.set(isDisabled);
585
579
  }
586
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AbstractListCollectionFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
587
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.12", type: AbstractListCollectionFormControlDirective, isStandalone: true, inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: true, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
580
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AbstractBaseListCollectionFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
581
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.12", type: AbstractBaseListCollectionFormControlDirective, isStandalone: true, inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
582
+ }
583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AbstractBaseListCollectionFormControlDirective, decorators: [{
584
+ type: Directive
585
+ }], ctorParameters: () => [], propDecorators: { defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] } });
586
+ class AbstractListCollectionFormControlDirective extends AbstractBaseListCollectionFormControlDirective {
587
+ /**
588
+ * The item collection
589
+ *
590
+ * @inheritDoc
591
+ */
592
+ collection = input.required(...(ngDevMode ? [{ debugName: "collection" }] : []));
593
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AbstractListCollectionFormControlDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
594
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.12", type: AbstractListCollectionFormControlDirective, isStandalone: true, inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
588
595
  }
589
596
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AbstractListCollectionFormControlDirective, decorators: [{
590
597
  type: Directive
591
- }], ctorParameters: () => [], propDecorators: { collection: [{ type: i0.Input, args: [{ isSignal: true, alias: "collection", required: true }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] } });
598
+ }], propDecorators: { collection: [{ type: i0.Input, args: [{ isSignal: true, alias: "collection", required: true }] }] } });
592
599
 
593
600
  /**
594
601
  * Generated bundle index. Do not edit.
595
602
  */
596
603
 
597
- export { AbstractInputFormControlDirective, AbstractListCollectionFormControlDirective, FORM_CONTROL_ERROR_MESSAGE_PROVIDER, INPUT_FORM_CONTROL_CONTEXT, initInputFormControl };
604
+ export { AbstractBaseListCollectionFormControlDirective, AbstractInputFormControlDirective, AbstractListCollectionFormControlDirective, FORM_CONTROL_ERROR_MESSAGE_PROVIDER, INPUT_FORM_CONTROL_CONTEXT, initInputFormControl };
598
605
  //# sourceMappingURL=qualcomm-ui-angular-core-input.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"qualcomm-ui-angular-core-input.mjs","sources":["../../src/input/input-form-control-provider.ts","../../src/input/abstract-input-form-control.directive.ts","../../src/input/abstract-list-collection-form-control.directive.ts","../../src/input/qualcomm-ui-angular-core-input.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n computed,\n inject,\n InjectionToken,\n type Signal,\n signal,\n type WritableSignal,\n} from \"@angular/core\"\nimport {NgControl, NgModel} from \"@angular/forms\"\n\nimport type {FormEventData} from \"@qualcomm-ui/angular-core/forms\"\n\nexport interface InputFormControlContext<T> {\n control?: NgControl[\"control\"] | null\n /**\n * Computed error message from the underlying control.\n */\n errorText: Signal<string | undefined | null>\n formEventData: WritableSignal<FormEventData<T | undefined> | null>\n /** `true` when used with reactive-forms (`formControl`, `formControlName`). */\n isReactiveForm: () => boolean\n /** `true` when used with template-driven forms (`[(ngModel)]`, `ngModel`). */\n isTemplateDrivenForm: () => boolean\n ngControl: NgControl | null\n}\n\nexport type FormControlKnownErrors = Record<\n string,\n ((error: any) => string) | undefined\n>\n\nconst defaultErrors: FormControlKnownErrors = {\n email: () => \"Invalid email\",\n max: (err) => `Max: ${err.max}`,\n maxLength: (err) => `Max length: ${err.maxLength}`,\n min: (err) => `Min: ${err.min}`,\n minLength: (err) => `Min length: ${err.requiredLength}`,\n pattern: () => \"Invalid format\",\n required: () => \"This field is required\",\n requiredTrue: () => \"Required\",\n}\n\n/**\n * Override the default error messages for known form control errors.\n *\n * The defaults are as follows:\n * ```angular-html\n * const defaultKnownErrors: FormControlKnownErrors = {\n * email: () => \"Invalid email\",\n * max: (err) => `Max: ${err.max}`,\n * maxLength: (err) => `Max length: ${err.maxLength}`,\n * min: (err) => `Min: ${err.min}`,\n * minLength: (err) => `Min length: ${err.requiredLength}`,\n * pattern: () => \"Invalid format\",\n * required: () => \"This field is required\",\n * requiredTrue: () => \"This field is required\",\n * }\n * ```\n */\nexport const FORM_CONTROL_ERROR_MESSAGE_PROVIDER = new InjectionToken<\n Partial<FormControlKnownErrors>\n>(\"FormControlErrorProvider\")\n\nexport const INPUT_FORM_CONTROL_CONTEXT = new InjectionToken<\n InputFormControlContext<any>\n>(\"InputFormControl\")\n\nexport function initInputFormControl<T = string>(): InputFormControlContext<T> {\n const ngControl: NgControl | null = inject(NgControl, {\n optional: true,\n self: true,\n })\n\n const knownErrors: FormControlKnownErrors = {\n ...defaultErrors,\n ...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, {optional: true}) ?? {}),\n }\n\n const formEventData = signal<FormEventData<T | undefined> | null>(null)\n\n function isTemplateDrivenForm(): boolean {\n return ngControl instanceof NgModel\n }\n\n function isReactiveForm(): boolean {\n // Any NgControl that is *not* NgModel belongs to the reactive-forms package\n return !!ngControl && !isTemplateDrivenForm()\n }\n\n return {\n control: ngControl?.control ?? null,\n errorText: computed(() => {\n // make this reactive so that the error message is updated when the form state\n // changes.\n formEventData()\n const errors = ngControl?.control?.errors ?? {}\n const [errorKey, errorValue] = Object.entries(errors)[0] ?? []\n if (errorKey && knownErrors[errorKey]) {\n return knownErrors[errorKey](errorValue)\n }\n return errors[\"errorText\"] ?? errors[\"error\"] ?? null\n }),\n formEventData,\n isReactiveForm,\n isTemplateDrivenForm,\n ngControl,\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractInputFormControlDirective\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial state of the input when rendered. Use when you don't\n * need to control the checked state of the input. This property will be\n * ignored if you opt into controlled state via form control bindings.\n */\n readonly defaultValue = input<string | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<string>(\"\")\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || \"\")\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n if (this.control && this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators(Validators.required)\n } else if (this.control.hasValidator(Validators.required)) {\n this.control.removeValidators(Validators.required)\n }\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control && defaultValue) {\n this.value.set(defaultValue)\n } else if (this.control) {\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<string | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value)\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value)\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {\n type CollectionItem,\n ListCollection,\n} from \"@qualcomm-ui/utils/collection\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractListCollectionFormControlDirective<\n T extends CollectionItem,\n >\n implements ControlValueAccessor, OnInit\n{\n /**\n * The item collection\n *\n * @inheritDoc\n */\n readonly collection = input.required<ListCollection<T>>()\n\n /**\n * The initial state of the input when rendered. Use when you don't need to\n * control the checked state of the input. This property will be ignored if you\n * opt into controlled state via form control bindings.\n *\n * @inheritDoc\n */\n readonly defaultValue = input<T[] | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<T[]>([])\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl<T[]>()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || [])\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n const isRequired = this.isRequired()\n if (!this.control) {\n return\n }\n if (this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n } else if (\n this.control.hasValidator(Validators.required) &&\n this.control.hasValidator(Validators.minLength(1))\n ) {\n this.control.removeValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n }\n } else if (isRequired) {\n this.control.addValidators(Validators.minLength(1))\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control) {\n if (defaultValue) {\n this.value.set(defaultValue)\n }\n return\n }\n\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<T[] | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value ?? [])\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value ?? [])\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qualcomm-ui-angular-core-input.mjs","sources":["../../src/input/input-form-control-provider.ts","../../src/input/abstract-input-form-control.directive.ts","../../src/input/abstract-list-collection-form-control.directive.ts","../../src/input/qualcomm-ui-angular-core-input.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n computed,\n inject,\n InjectionToken,\n type Signal,\n signal,\n type WritableSignal,\n} from \"@angular/core\"\nimport {NgControl, NgModel} from \"@angular/forms\"\n\nimport type {FormEventData} from \"@qualcomm-ui/angular-core/forms\"\n\nexport interface InputFormControlContext<T> {\n control?: NgControl[\"control\"] | null\n /**\n * Computed error message from the underlying control.\n */\n errorText: Signal<string | undefined | null>\n formEventData: WritableSignal<FormEventData<T | undefined> | null>\n /** `true` when used with reactive-forms (`formControl`, `formControlName`). */\n isReactiveForm: () => boolean\n /** `true` when used with template-driven forms (`[(ngModel)]`, `ngModel`). */\n isTemplateDrivenForm: () => boolean\n ngControl: NgControl | null\n}\n\nexport type FormControlKnownErrors = Record<\n string,\n ((error: any) => string) | undefined\n>\n\nconst defaultErrors: FormControlKnownErrors = {\n email: () => \"Invalid email\",\n max: (err) => `Max: ${err.max}`,\n maxLength: (err) => `Max length: ${err.maxLength}`,\n min: (err) => `Min: ${err.min}`,\n minLength: (err) => `Min length: ${err.requiredLength}`,\n pattern: () => \"Invalid format\",\n required: () => \"This field is required\",\n requiredTrue: () => \"Required\",\n}\n\n/**\n * Override the default error messages for known form control errors.\n *\n * The defaults are as follows:\n * ```angular-html\n * const defaultKnownErrors: FormControlKnownErrors = {\n * email: () => \"Invalid email\",\n * max: (err) => `Max: ${err.max}`,\n * maxLength: (err) => `Max length: ${err.maxLength}`,\n * min: (err) => `Min: ${err.min}`,\n * minLength: (err) => `Min length: ${err.requiredLength}`,\n * pattern: () => \"Invalid format\",\n * required: () => \"This field is required\",\n * requiredTrue: () => \"This field is required\",\n * }\n * ```\n */\nexport const FORM_CONTROL_ERROR_MESSAGE_PROVIDER = new InjectionToken<\n Partial<FormControlKnownErrors>\n>(\"FormControlErrorProvider\")\n\nexport const INPUT_FORM_CONTROL_CONTEXT = new InjectionToken<\n InputFormControlContext<any>\n>(\"InputFormControl\")\n\nexport function initInputFormControl<T = string>(): InputFormControlContext<T> {\n const ngControl: NgControl | null = inject(NgControl, {\n optional: true,\n self: true,\n })\n\n const knownErrors: FormControlKnownErrors = {\n ...defaultErrors,\n ...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, {optional: true}) ?? {}),\n }\n\n const formEventData = signal<FormEventData<T | undefined> | null>(null)\n\n function isTemplateDrivenForm(): boolean {\n return ngControl instanceof NgModel\n }\n\n function isReactiveForm(): boolean {\n // Any NgControl that is *not* NgModel belongs to the reactive-forms package\n return !!ngControl && !isTemplateDrivenForm()\n }\n\n return {\n control: ngControl?.control ?? null,\n errorText: computed(() => {\n // make this reactive so that the error message is updated when the form state\n // changes.\n formEventData()\n const errors = ngControl?.control?.errors ?? {}\n const [errorKey, errorValue] = Object.entries(errors)[0] ?? []\n if (errorKey && knownErrors[errorKey]) {\n return knownErrors[errorKey](errorValue)\n }\n return errors[\"errorText\"] ?? errors[\"error\"] ?? null\n }),\n formEventData,\n isReactiveForm,\n isTemplateDrivenForm,\n ngControl,\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractInputFormControlDirective\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial state of the input when rendered. Use when you don't\n * need to control the checked state of the input. This property will be\n * ignored if you opt into controlled state via form control bindings.\n */\n readonly defaultValue = input<string | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<string>(\"\")\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || \"\")\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n if (this.control && this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators(Validators.required)\n } else if (this.control.hasValidator(Validators.required)) {\n this.control.removeValidators(Validators.required)\n }\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control && defaultValue) {\n this.value.set(defaultValue)\n } else if (this.control) {\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<string | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value)\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value)\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {\n type CollectionItem,\n ListCollection,\n} from \"@qualcomm-ui/utils/collection\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractBaseListCollectionFormControlDirective<\n T extends CollectionItem,\n >\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial value of the input when rendered. Use when you don't need to\n * control the value of the input. This property will be ignored if you\n * opt into controlled state via form control bindings.\n *\n * @inheritDoc\n */\n readonly defaultValue = input<T[] | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<T[]>([])\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl<T[]>()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || [])\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n const isRequired = this.isRequired()\n if (!this.control) {\n return\n }\n if (this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n } else if (\n this.control.hasValidator(Validators.required) &&\n this.control.hasValidator(Validators.minLength(1))\n ) {\n this.control.removeValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n }\n } else if (isRequired) {\n this.control.addValidators(Validators.minLength(1))\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control) {\n if (defaultValue) {\n this.value.set(defaultValue)\n }\n return\n }\n\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<T[] | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value ?? [])\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value ?? [])\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n\n@Directive()\nexport abstract class AbstractListCollectionFormControlDirective<\n T extends CollectionItem,\n> extends AbstractBaseListCollectionFormControlDirective<T> {\n /**\n * The item collection\n *\n * @inheritDoc\n */\n readonly collection = input.required<ListCollection<T>>()\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}