superlikers-dynamic-forms 1.1.6 → 1.1.7
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.
|
@@ -106,6 +106,7 @@ const ERROR_MESSAGES = {
|
|
|
106
106
|
maxlength: args => `Length must not exceed ${args?.['requiredLength']} characters. Currently, it has ${args?.['actualLength']} characters.`,
|
|
107
107
|
min: args => `The value must be at least ${args?.['min']}`,
|
|
108
108
|
max: args => `The value must not exceed ${args?.['max']}`,
|
|
109
|
+
invalidChannelValue: error => String(error),
|
|
109
110
|
custom: error => String(error)
|
|
110
111
|
};
|
|
111
112
|
const SPANISH_ERROR_MESSAGES = {
|
|
@@ -118,6 +119,7 @@ const SPANISH_ERROR_MESSAGES = {
|
|
|
118
119
|
maxlength: args => `La longitud no debe exceder los ${args?.['requiredLength']} caracteres. Actualmente tiene ${args?.['actualLength']} caracteres.`,
|
|
119
120
|
min: args => `El valor debe ser al menos ${args?.['min']}`,
|
|
120
121
|
max: args => `El valor no debe exceder ${args?.['max']}`,
|
|
122
|
+
invalidChannelValue: error => String(error),
|
|
121
123
|
custom: error => String(error)
|
|
122
124
|
};
|
|
123
125
|
const VALIDATION_ERROR_MESSAGES = new InjectionToken('Validation Messages', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superlikers-dynamic-forms.mjs","sources":["../../../projects/dynamic-forms/src/lib/interfaces/forms.interfaces.ts","../../../projects/dynamic-forms/src/lib/utils/control-data.token.ts","../../../projects/dynamic-forms/src/lib/utils/settings.token.ts","../../../projects/dynamic-forms/src/lib/utils/validation-error-messages.token.ts","../../../projects/dynamic-forms/src/lib/services/validations/validators.service.ts","../../../projects/dynamic-forms/src/lib/services/control-resolver/control-resolver.service.ts","../../../projects/dynamic-forms/src/lib/components/error-message/error-message.component.ts","../../../projects/dynamic-forms/src/lib/pipes/control-injector/control-injector.pipe.ts","../../../projects/dynamic-forms/src/lib/directives/activate-control/activate-control.directive.ts","../../../projects/dynamic-forms/src/lib/directives/help-text/help-text.directive.ts","../../../projects/dynamic-forms/src/lib/directives/validator-message/validator-message.directive.ts","../../../projects/dynamic-forms/src/lib/components/fields/fields.component.ts","../../../projects/dynamic-forms/src/lib/components/help-text/help-text.component.ts","../../../projects/dynamic-forms/src/lib/controls/base-input/base-input.component.ts","../../../projects/dynamic-forms/src/lib/controls/array-field/array-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/array-field/array-field.component.html","../../../projects/dynamic-forms/src/lib/controls/autocomplete-field/autocomplete-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/autocomplete-field/autocomplete-field.component.html","../../../projects/dynamic-forms/src/lib/controls/checkbox-field/checkbox-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/checkbox-field/checkbox-field.component.html","../../../projects/dynamic-forms/src/lib/controls/checkbox-group-field/checkbox-group-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/checkbox-group-field/checkbox-group-field.component.html","../../../projects/dynamic-forms/src/lib/controls/chips-list-field/chips-list-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/chips-list-field/chips-list-field.component.html","../../../projects/dynamic-forms/src/lib/controls/group-field/group-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/group-field/group-field.component.html","../../../projects/dynamic-forms/src/lib/controls/input-field/input-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/input-field/input-field.component.html","../../../projects/dynamic-forms/src/lib/controls/multi-select-dropdown/multi-select-dropdown.component.ts","../../../projects/dynamic-forms/src/lib/controls/multi-select-dropdown/multi-select-dropdown.component.html","../../../projects/dynamic-forms/src/lib/controls/radio-field/radio-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/radio-field/radio-field.component.html","../../../projects/dynamic-forms/src/lib/controls/select-field/select-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/select-field/select-field.component.html","../../../projects/dynamic-forms/src/public-api.ts","../../../projects/dynamic-forms/src/superlikers-dynamic-forms.ts"],"sourcesContent":["import { AbstractControl, AsyncValidatorFn, FormGroup, ValidationErrors, Validators } from '@angular/forms'\nimport { Observable } from 'rxjs'\n\nexport type ControlType = 'input' | 'group' | 'checkbox' | 'checkbox-group' | 'radio' | 'select' | 'array' | 'multi-select-dropdown' | 'chips-list' | 'autocomplete'\n\nexport type InputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'date' | 'time' | 'datetime-local' | 'search'\n\ntype CustomValidator = (control: AbstractControl) => ValidationErrors | null\ntype CustomAsyncValidator = AsyncValidatorFn\ntype ValidatorsKeys = keyof Omit<typeof Validators, 'prototype' | 'compose' | 'composeAsync'>\ntype ValidatorValue = boolean | number | string | RegExp\n\nexport type ControlValidators = Partial<Record<ValidatorsKeys, ValidatorValue>> & {\n customValidation?: CustomValidator | CustomValidator[]\n asyncValidation?: CustomAsyncValidator | CustomAsyncValidator[]\n}\n\nexport type Visible = boolean | ((form: FormGroup) => boolean)\nexport type Options = Option[] | ((form: FormGroup) => Option[] | Promise<Option[]> | Observable<Option[]>)\nexport type Disabled = boolean | ((form: FormGroup) => boolean)\nexport type Items<T> = T[] | ((form: FormGroup) => T[] | Promise<T[]> | Observable<T[]>)\nexport type AutocompleteOptions<T> = (form: FormGroup, query: string) => T[] | Promise<T[]> | Observable<T[]>\n\n/**\n * Base interface for all form controls with common properties\n */\nexport interface BaseControl {\n name: string\n controlType: ControlType\n label?: string\n helpText?: string\n validators?: ControlValidators\n visible?: Visible\n disabled?: Disabled\n value?: unknown\n placeholder?: string\n options?: Options\n controls?: Control[]\n type?: InputType\n items?: Items<unknown>\n itemLabel?: string\n itemValue?: string\n multiple?: boolean\n autocompleteOptions?: AutocompleteOptions<unknown>\n resetOnChange?: string[]\n}\n\n/**\n * Input control configuration\n */\nexport interface InputControl extends BaseControl {\n controlType: 'input'\n type?: InputType\n value?: string | number\n placeholder?: string\n}\n\n/**\n * Checkbox control configuration\n */\nexport interface CheckboxControl extends BaseControl {\n controlType: 'checkbox'\n value?: boolean\n}\n\n/**\n * Radio control configuration\n */\nexport interface RadioControl extends BaseControl {\n controlType: 'radio'\n options: Options\n value?: string | number\n}\n\n/**\n * Select control configuration\n */\nexport interface SelectControl extends BaseControl {\n controlType: 'select'\n options: Options\n value?: string | number\n}\n\n/**\n * Checkbox group control configuration\n */\nexport interface CheckboxGroupControl extends BaseControl {\n controlType: 'checkbox-group'\n options: Options\n value?: (string | number)[]\n}\n\n/**\n * Group control configuration\n */\nexport interface GroupControl extends BaseControl {\n controlType: 'group'\n controls: Control[]\n}\n\n/**\n * Array control configuration\n */\nexport interface ArrayControl extends BaseControl {\n controlType: 'array'\n controls: Control[]\n value?: Record<string, unknown>[]\n}\n\n/**\n * Chips list control configuration\n */\nexport interface ChipsListControl extends BaseControl {\n controlType: 'chips-list'\n value?: string[]\n placeholder?: string\n}\n\n/**\n * Multi-select dropdown control configuration\n */\nexport interface MultiSelectDropdownControl<T = unknown> extends BaseControl {\n controlType: 'multi-select-dropdown'\n items: Items<T>\n itemLabel?: string\n itemValue?: string\n multiple?: boolean\n value?: unknown[]\n}\n\n/**\n * Autocomplete control configuration\n */\nexport interface AutocompleteControl<T = unknown> extends BaseControl {\n controlType: 'autocomplete'\n autocompleteOptions: AutocompleteOptions<T>\n itemLabel?: string\n itemValue?: string\n placeholder?: string\n resetOnChange?: string[]\n value?: unknown\n}\n\n/**\n * Union type for all control types\n */\nexport type Control = InputControl | CheckboxControl | RadioControl | SelectControl | CheckboxGroupControl | GroupControl | ArrayControl | ChipsListControl | MultiSelectDropdownControl | AutocompleteControl\n\n/**\n * Type guards for control types\n */\nexport function isInputControl(control: Control): control is InputControl {\n return control.controlType === 'input'\n}\n\nexport function isGroupControl(control: Control): control is GroupControl {\n return control.controlType === 'group'\n}\n\nexport function isArrayControl(control: Control): control is ArrayControl {\n return control.controlType === 'array'\n}\n\nexport function isMultiSelectControl(control: Control): control is MultiSelectDropdownControl {\n return control.controlType === 'multi-select-dropdown'\n}\n\nexport function isAutocompleteControl(control: Control): control is AutocompleteControl {\n return control.controlType === 'autocomplete'\n}\n\n/**\n * Represents an individual option available for selection in controls such as select, radio groups, or checkboxes.\n */\nexport interface Option {\n /**\n * The display text for the option.\n */\n label: string\n\n /**\n * The value associated with the option.\n */\n value: unknown\n\n /**\n * If set to true, this option will be selected by default.\n */\n selected?: boolean\n\n /**\n * If set to true, this option will be rendered as disabled.\n */\n disabled?: boolean\n}\n","import { InjectionToken, Signal } from '@angular/core'\n\nimport { Control } from '../interfaces'\n\nexport interface ControlData {\n control: Control\n initialValue?: unknown\n}\n\nexport const CONTROL_DATA = new InjectionToken<Signal<ControlData>>('CONTROL_DATA')\n","import { InjectionToken } from '@angular/core'\n\nimport { Settings } from '../interfaces'\n\nexport const DEFAULT_SETTINGS: Settings = {\n // general\n wrapperClasses: 'field-wrapper',\n labelClasses: 'field-label',\n errorClasses: 'field-error',\n helpTextClasses: 'field-help-text',\n inputClasses: 'field-input',\n validationFeedbackClasses: 'validation-feedback',\n // select\n selectClasses: 'field-select',\n selectOptionClasses: 'field-select-option',\n // checkbox\n checkboxWrapperClasses: 'checkbox-wrapper',\n checkboxInputClasses: 'checkbox-input',\n checkboxLabelTextClasses: 'checkbox-label',\n checkboxGroupContainerClasses: 'checkbox-group-container',\n checkboxGroupItemWrapperClasses: 'checkbox-group-item-wrapper',\n checkboxGroupItemInputClasses: 'checkbox-group-item-input',\n checkboxGroupItemLabelClasses: 'checkbox-group-item-label',\n // radio\n radioGroupContainerClasses: 'radio-group-container',\n radioItemWrapperClasses: 'radio-item-wrapper',\n radioItemInputClasses: 'radio-item-input',\n radioItemLabelClasses: 'radio-item-label',\n // group\n groupContainerClasses: 'group-container',\n groupLegendClasses: 'group-legend',\n legendClasses: 'legend',\n // array\n arrayItemContainerClasses: 'array-item-container',\n arrayControlRemoveButtonClasses: 'array-remove-button',\n arrayControlAddButtonClasses: 'array-add-button',\n arrayControlRemoveButtonLabel: 'Remove',\n arrayControlAddButtonLabel: 'Add',\n // multi select\n multiSelectControlRemoveButtonLabel: 'Remove',\n multiSelectEmptyText: 'Select options',\n multiSelectDisplayedOptionsClasses: 'multi-select-displayed-options',\n multiSelectDisplayedOptionClasses: 'multi-select-displayed-option',\n multiselectDropdownClasses: 'multi-select-dropdown',\n multiselectDropdownItemClasses: 'multi-select-dropdown-item',\n chipslistRemoveButtonLabel: 'Remove',\n chipslistAddButtonLabel: 'Add',\n chipslistInputClasses: 'chips-list-input',\n chipslistContainerClasses: 'chips-list-container',\n chipslistChipClasses: 'chips-list-chip',\n chipslistAddWrapperClasses: 'chips-list-add-wrapper',\n // autocomplete\n autocompleteInputClasses: 'autocomplete-input',\n autocompleteDropdownClasses: 'autocomplete-dropdown',\n autocompleteDropdownItemClasses: 'autocomplete-dropdown-item',\n autocompleteLoadingText: 'Loading...',\n autocompleteLoadingWrapperClasses: 'autocomplete-loading-wrapper',\n autocompleteLoadingIconClasses: 'autocomplete-loading-icon',\n autocompleteClearWrapperClasses: 'autocomplete-clear-wrapper',\n autocompleteClearIconClasses: 'autocomplete-clear-icon',\n autocompleteClearText: 'Clear',\n autocompleteClearTextClasses: 'autocomplete-clear-text'\n}\n\nexport const SETTINGS = new InjectionToken<Settings>('Settings', {\n providedIn: 'root',\n factory: () => DEFAULT_SETTINGS\n})\n","import { InjectionToken } from '@angular/core'\n\ntype ValidationErrorArgs = Record<string, unknown> | undefined\n\nexport const ERROR_MESSAGES: Record<string, (args?: ValidationErrorArgs) => string> = {\n pending: () => `Validating...`,\n required: () => `This field is required`,\n requiredTrue: () => `This field is required`,\n pattern: () => `Does not match the pattern`,\n email: () => `Must be a valid email`,\n minlength: args => `Length must be at least ${(args as Record<string, unknown>)?.['requiredLength']} characters`,\n maxlength: args => `Length must not exceed ${(args as Record<string, unknown>)?.['requiredLength']} characters. Currently, it has ${(args as Record<string, unknown>)?.['actualLength']} characters.`,\n min: args => `The value must be at least ${(args as Record<string, unknown>)?.['min']}`,\n max: args => `The value must not exceed ${(args as Record<string, unknown>)?.['max']}`,\n custom: error => String(error)\n}\n\nexport const SPANISH_ERROR_MESSAGES: Record<string, (args?: ValidationErrorArgs) => string> = {\n pending: () => `Validando...`,\n required: () => `Este campo es obligatorio`,\n requiredTrue: () => `Este campo es obligatorio`,\n pattern: () => `No coincide con el patrón`,\n email: () => `Debe ser un correo electrónico válido`,\n minlength: args => `La longitud debe ser al menos ${(args as Record<string, unknown>)?.['requiredLength']} caracteres`,\n maxlength: args => `La longitud no debe exceder los ${(args as Record<string, unknown>)?.['requiredLength']} caracteres. Actualmente tiene ${(args as Record<string, unknown>)?.['actualLength']} caracteres.`,\n min: args => `El valor debe ser al menos ${(args as Record<string, unknown>)?.['min']}`,\n max: args => `El valor no debe exceder ${(args as Record<string, unknown>)?.['max']}`,\n custom: error => String(error)\n}\n\nexport const VALIDATION_ERROR_MESSAGES = new InjectionToken('Validation Messages', {\n providedIn: 'root',\n factory: () => ERROR_MESSAGES\n})\n","import { Injectable } from '@angular/core'\nimport { Control, ControlValidators } from '../../interfaces'\nimport { AsyncValidatorFn, ValidatorFn, Validators } from '@angular/forms'\n\ntype ValidatorStrategy = (value: unknown) => ValidatorFn[]\ntype AsyncValidatorStrategy = (value: unknown) => AsyncValidatorFn[]\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValidatorsService {\n private readonly validatorStrategies: Partial<Record<keyof ControlValidators, ValidatorStrategy>> = {\n customValidation: (value: unknown): ValidatorFn[] => {\n if (typeof value === 'function') {\n return [value as ValidatorFn]\n }\n if (Array.isArray(value)) {\n return value.filter((fn): fn is ValidatorFn => typeof fn === 'function')\n }\n return []\n },\n\n pattern: (value: unknown): ValidatorFn[] => {\n if (typeof value === 'string' || value instanceof RegExp) {\n return [Validators.pattern(value)]\n }\n return []\n },\n\n max: (value: unknown): ValidatorFn[] => {\n return typeof value === 'number' ? [Validators.max(value)] : []\n },\n\n min: (value: unknown): ValidatorFn[] => {\n return typeof value === 'number' ? [Validators.min(value)] : []\n },\n\n maxLength: (value: unknown): ValidatorFn[] => {\n return typeof value === 'number' ? [Validators.maxLength(value)] : []\n },\n\n minLength: (value: unknown): ValidatorFn[] => {\n return typeof value === 'number' ? [Validators.minLength(value)] : []\n },\n\n requiredTrue: (): ValidatorFn[] => {\n return [Validators.requiredTrue]\n },\n\n email: (): ValidatorFn[] => {\n return [Validators.email]\n },\n\n required: (): ValidatorFn[] => {\n return [Validators.required]\n }\n }\n\n private readonly asyncValidatorStrategies: Partial<Record<keyof ControlValidators, AsyncValidatorStrategy>> = {\n asyncValidation: (value: unknown): AsyncValidatorFn[] => {\n if (typeof value === 'function') {\n return [value as AsyncValidatorFn]\n }\n if (Array.isArray(value)) {\n return value.filter((fn): fn is AsyncValidatorFn => typeof fn === 'function')\n }\n return []\n }\n }\n\n resolveValidators({ validators = {} }: Control): ValidatorFn | null {\n const validatorFns: ValidatorFn[] = []\n\n for (const key in validators) {\n if (Object.prototype.hasOwnProperty.call(validators, key)) {\n const typedKey = key as keyof ControlValidators\n const strategy = this.validatorStrategies[typedKey]\n\n if (strategy) {\n const value = validators[typedKey]\n const fns = strategy(value)\n validatorFns.push(...fns)\n }\n }\n }\n\n return validatorFns.length > 0 ? Validators.compose(validatorFns) : null\n }\n\n resolveAsyncValidators({ validators = {} }: Control): AsyncValidatorFn | null {\n const validatorFns: AsyncValidatorFn[] = []\n\n for (const key in validators) {\n if (Object.prototype.hasOwnProperty.call(validators, key)) {\n const typedKey = key as keyof ControlValidators\n const strategy = this.asyncValidatorStrategies[typedKey]\n\n if (strategy) {\n const value = validators[typedKey]\n const fns = strategy(value)\n validatorFns.push(...fns)\n }\n }\n }\n\n return validatorFns.length > 0 ? Validators.composeAsync(validatorFns) : null\n }\n}\n","import { Injectable, Type } from '@angular/core'\nimport { from, of, tap } from 'rxjs'\n\nimport { Control } from '../../interfaces'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ControlResolver {\n private lazyControlComponents = {\n input: () => import('../../controls/input-field/input-field.component').then(c => c.InputFieldComponent),\n radio: () => import('../../controls/radio-field/radio-field.component').then(c => c.RadioFieldComponent),\n checkbox: () => import('../../controls/checkbox-field/checkbox-field.component').then(c => c.CheckboxFieldComponent),\n select: () => import('../../controls/select-field/select-field.component').then(c => c.SelectFieldComponent),\n group: () => import('../../controls/group-field/group-field.component').then(c => c.GroupFieldComponent),\n array: () => import('../../controls/array-field/array-field.component').then(c => c.ArrayFieldComponent),\n autocomplete: () => import('../../controls/autocomplete-field/autocomplete-field.component').then(c => c.AutocompleteFieldComponent),\n 'checkbox-group': () => import('../../controls/checkbox-group-field/checkbox-group-field.component').then(c => c.CheckboxGroupFieldComponent),\n 'multi-select-dropdown': () => import('../../controls/multi-select-dropdown/multi-select-dropdown.component').then(c => c.MultiSelectDropdownComponent),\n 'chips-list': () => import('../../controls/chips-list-field/chips-list-field.component').then(c => c.ChipsListFieldComponent)\n }\n\n private loadedControlComponents = new Map<string, Type<unknown>>()\n\n resolve(control: Control) {\n const controlType = control.controlType\n\n const loadedComponent = this.loadedControlComponents.get(controlType)\n if (loadedComponent) {\n return of(loadedComponent)\n }\n\n return from(this.lazyControlComponents[controlType]()).pipe(tap(component => this.loadedControlComponents.set(controlType, component)))\n }\n}\n","import { KeyValue, KeyValuePipe } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core'\nimport { ValidationErrors } from '@angular/forms'\n\nimport { VALIDATION_ERROR_MESSAGES } from '../../utils'\nimport { SETTINGS } from '../../utils'\n\n@Component({\n selector: 'error-message',\n imports: [KeyValuePipe],\n template: `\n @if (pending()) {\n <p [class]=\"settings.errorClasses\">{{ getPendingMessage() }}</p>\n }\n @for (error of errors() | keyvalue; track error.key) {\n <p [class]=\"settings.errorClasses\">{{ getError(error) }}</p>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ErrorMessageComponent {\n settings = inject(SETTINGS)\n errorsMap = inject(VALIDATION_ERROR_MESSAGES)\n\n errors = input<ValidationErrors>()\n pending = input(false)\n\n getPendingMessage() {\n if (!this.errorsMap['pending']) {\n return 'Validating...'\n }\n\n return this.errorsMap['pending']()\n }\n\n getError(error: KeyValue<string, unknown>) {\n if (!this.errorsMap[error.key]) {\n return\n }\n\n const message = this.errorsMap[error.key](error.value as Record<string, unknown>)\n return message\n }\n}\n","import { inject, Injector, Pipe, PipeTransform, signal } from '@angular/core'\n\nimport { Control } from '../../interfaces'\nimport { CONTROL_DATA, ControlData } from '../../utils'\n\n@Pipe({\n name: 'controlInjector'\n})\nexport class ControlInjector implements PipeTransform {\n injector = inject(Injector)\n\n transform(control: Control, initialValues: Record<string, unknown> | null | undefined): Injector {\n const controlPatchValue = initialValues?.[control.name]\n const data: ControlData = { control, initialValue: controlPatchValue }\n\n return Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: CONTROL_DATA,\n useValue: signal(data)\n }\n ]\n })\n }\n}\n","import { computed, Directive, effect, inject, input, TemplateRef, ViewContainerRef } from '@angular/core'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { FormGroupDirective } from '@angular/forms'\nimport { startWith } from 'rxjs'\n\nimport { Control } from '../../interfaces'\n\n@Directive({\n selector: '[activateControl]'\n})\nexport class ActivateControlDirective {\n activateControl = input<Control>()\n\n private vcr = inject(ViewContainerRef)\n private templateRef = inject(TemplateRef)\n private rootFormGroup = inject(FormGroupDirective).form\n\n private formValue = toSignal(this.rootFormGroup.valueChanges.pipe(startWith(this.rootFormGroup.value)), {\n initialValue: this.rootFormGroup.value\n })\n private isVisible = computed(() => {\n const _ = this.formValue()\n\n const visible = this.activateControl()?.visible\n\n if (visible === undefined) {\n return true\n }\n\n if (typeof visible === 'function') {\n return visible(this.rootFormGroup)\n }\n\n return visible\n })\n\n constructor() {\n effect(() => {\n const visible = this.isVisible()\n const controlName = this.activateControl()?.name\n\n if (visible) {\n if (this.vcr.length === 0) {\n this.vcr.createEmbeddedView(this.templateRef)\n }\n } else {\n if (this.vcr.length > 0) {\n this.vcr.clear()\n\n if (controlName && this.rootFormGroup.contains(controlName)) {\n this.rootFormGroup.removeControl(controlName)\n }\n }\n }\n })\n }\n}\n","import { ComponentRef, Directive, ElementRef, inject, input, OnInit, ViewContainerRef } from '@angular/core'\nimport { HelpTextComponent } from '../../components'\n\n@Directive({\n selector: '[helpMessage]'\n})\nexport class HelpTextDirective implements OnInit {\n helpMessage = input<string>()\n\n elementRef = inject(ElementRef)\n vcr = inject(ViewContainerRef)\n\n componentRef: ComponentRef<HelpTextComponent> | null = null\n\n ngOnInit(): void {\n if (!this.helpMessage()) {\n return\n }\n\n this.componentRef = this.vcr.createComponent(HelpTextComponent)\n this.componentRef.setInput('message', this.helpMessage())\n }\n}\n","import { ComponentRef, Directive, ElementRef, inject, input, OnDestroy, OnInit, ViewContainerRef } from '@angular/core'\nimport { AbstractControl, ControlContainer, FormGroupDirective, NgForm } from '@angular/forms'\nimport { EMPTY, fromEvent, iif, merge, startWith, Subscription } from 'rxjs'\n\nimport { ErrorMessageComponent } from '../../components'\n\n@Directive({\n selector: '[validatorMessage]'\n})\nexport class ValidatorMessageDirective implements OnInit, OnDestroy {\n controlName = input<string>()\n\n elementRef = inject(ElementRef)\n vcr = inject(ViewContainerRef)\n parentContainer = inject(ControlContainer, { optional: true })\n\n private componentRef: ComponentRef<ErrorMessageComponent> | null = null\n\n get form() {\n return this.parentContainer?.formDirective as NgForm | FormGroupDirective | null\n }\n\n controlSubscription!: Subscription\n\n ngOnInit() {\n const control = this.getControl()\n if (!control) {\n return\n }\n\n this.controlSubscription = merge(\n control.statusChanges,\n fromEvent(this.elementRef.nativeElement, 'blur'),\n iif(() => !!this.form, this.form!.ngSubmit, EMPTY)\n )\n .pipe(startWith(control.status))\n .subscribe(() => {\n const shouldShow = control.touched || control.dirty || this.form?.submitted\n\n if (control.pending && shouldShow) {\n if (!this.componentRef) {\n this.componentRef = this.vcr.createComponent(ErrorMessageComponent)\n }\n\n this.componentRef.setInput('pending', true)\n this.componentRef.setInput('errors', null)\n return\n }\n\n if (control.errors && shouldShow) {\n if (!this.componentRef) {\n this.componentRef = this.vcr.createComponent(ErrorMessageComponent)\n }\n\n this.componentRef.setInput('pending', false)\n this.componentRef.setInput('errors', control.errors)\n } else {\n this.componentRef?.destroy()\n this.componentRef = null\n }\n })\n }\n\n private getControl(): AbstractControl | null {\n const name = this.controlName()\n if (!name) {\n return null\n }\n\n return (this.parentContainer?.control?.get(name) as AbstractControl) ?? null\n }\n\n ngOnDestroy() {\n this.controlSubscription?.unsubscribe()\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core'\nimport { ControlContainer, FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'\nimport { AsyncPipe, NgComponentOutlet } from '@angular/common'\n\nimport { ControlInjector } from '../../pipes'\nimport { Control } from '../../interfaces'\nimport { ControlResolver } from '../../services'\nimport { ActivateControlDirective } from '../../directives'\n\n@Component({\n selector: 'fields',\n imports: [ReactiveFormsModule, NgComponentOutlet, ControlInjector, AsyncPipe, ActivateControlDirective],\n template: `\n @for (control of controls(); track control.name) {\n <ng-container\n *activateControl=\"control\"\n [ngComponentOutlet]=\"controlResolver.resolve(control) | async\"\n [ngComponentOutletInjector]=\"control | controlInjector: data()\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FieldsComponent {\n controls = input.required<Control[]>()\n data = input<Record<string, unknown> | null>()\n\n fb = inject(FormBuilder)\n controlResolver = inject(ControlResolver)\n\n controlContainer = inject(ControlContainer)\n\n get form() {\n return this.controlContainer.control as FormGroup\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core'\nimport { SETTINGS } from '../../utils'\n\n@Component({\n selector: 'help-text',\n template: `<p\n [class]=\"settings.helpTextClasses\"\n [innerHTML]=\"message()\"></p>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HelpTextComponent {\n settings = inject(SETTINGS)\n\n message = input<string>()\n}\n","import { computed, Directive, effect, inject, OnInit, signal, StaticProvider } from '@angular/core'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { AbstractControl, ControlContainer, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'\nimport { NgComponentOutlet } from '@angular/common'\nimport { startWith } from 'rxjs'\n\nimport { CONTROL_DATA, SETTINGS } from '../../utils'\nimport { ValidatorsService } from '../../services'\nimport { ValidatorMessageDirective } from '../../directives'\nimport { ControlInjector } from '../../pipes'\nimport { HelpTextDirective, ActivateControlDirective } from '../../directives'\n\nexport const controlProvider: StaticProvider = {\n provide: ControlContainer,\n useFactory: () => inject(ControlContainer, { skipSelf: true })\n}\n\nexport const controlDeps = [ReactiveFormsModule, HelpTextDirective, ValidatorMessageDirective, NgComponentOutlet, ControlInjector, ActivateControlDirective]\n\n@Directive({\n host: {\n '[class]': 'hostClass()'\n }\n})\nexport class BaseInputComponent implements OnInit {\n settings = inject(SETTINGS)\n\n protected hostClass = signal('')\n\n // Injections\n protected controlData = inject(CONTROL_DATA)\n protected validatorsService = inject(ValidatorsService)\n protected controlContainer = inject(ControlContainer)\n\n // Computed signals\n protected control = computed(() => this.controlData().control)\n protected value = computed(() => this.controlData().initialValue ?? this.control().value)\n\n // Form control\n protected validatorFn = this.validatorsService.resolveValidators(this.control())\n protected asyncValidatorFn = this.validatorsService.resolveAsyncValidators(this.control())\n formControl: AbstractControl = new FormControl(this.value(), this.validatorFn, this.asyncValidatorFn)\n parentForm = this.controlContainer.control as FormGroup\n\n protected formValue = toSignal(this.parentForm.valueChanges.pipe(startWith(this.parentForm.value)), {\n initialValue: this.parentForm.value\n })\n\n protected options = computed(() => {\n const _ = this.formValue()\n\n const optionsFn = this.control().options\n\n if (!optionsFn) {\n return []\n }\n\n if (Array.isArray(optionsFn)) {\n return optionsFn\n }\n\n const result = optionsFn(this.parentForm)\n\n if (Array.isArray(result)) {\n return result\n }\n\n return []\n })\n\n protected isDisabled = computed(() => {\n const _ = this.formValue()\n\n const control = this.control()\n\n if (control.disabled === undefined) {\n return false\n }\n\n if (typeof control.disabled === 'boolean') {\n return control.disabled\n }\n\n if (typeof control.disabled === 'function') {\n return control.disabled(this.parentForm)\n }\n\n return false\n })\n\n constructor() {\n effect(() => {\n const disabled = this.isDisabled()\n\n if (disabled && !this.formControl.disabled) {\n this.formControl.disable({ emitEvent: false })\n } else if (!disabled && this.formControl.disabled) {\n this.formControl.enable({ emitEvent: false })\n }\n })\n }\n\n ngOnInit(): void {\n this.initialize()\n }\n\n protected initialize() {\n const control = this.control()\n\n const classes = this.settings.wrapperClasses ?? `field wrapper-${control.name}`\n\n this.hostClass.set(classes)\n\n // Verificar si debe estar disabled desde el inicio\n if (this.isDisabled()) {\n this.formControl.disable({ emitEvent: false })\n }\n\n this.parentForm.addControl(control.name, this.formControl)\n }\n\n protected destroy() {\n const control = this.control()\n\n if (this.parentForm.contains(control.name)) {\n this.parentForm.removeControl(control.name)\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, OnInit } from '@angular/core'\nimport { FormArray, FormGroup, NonNullableFormBuilder } from '@angular/forms'\nimport { AsyncPipe } from '@angular/common'\n\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\nimport { isArrayControl } from '../../interfaces'\nimport { ControlResolver } from '../../services'\n\n@Component({\n selector: 'array-field',\n imports: [...controlDeps, AsyncPipe],\n templateUrl: './array-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class ArrayFieldComponent extends BaseInputComponent implements OnInit {\n controlResolver = inject(ControlResolver)\n fb = inject(NonNullableFormBuilder)\n\n override formControl = new FormArray<FormGroup>([], this.validatorFn)\n controls = computed(() => {\n const ctrl = this.control()\n return isArrayControl(ctrl) ? ctrl.controls : []\n })\n\n override ngOnInit(): void {\n this.initialize()\n\n const val = this.value()\n if (Array.isArray(val)) {\n val.forEach(() => {\n const group = this.fb.group({})\n this.formControl.push(group)\n })\n }\n }\n\n getControlValue(index: number) {\n const val = this.value()\n if (Array.isArray(val)) {\n return val[index] ?? null\n }\n return null\n }\n\n removeItem(i: number) {\n if (this.isDisabled()) {\n return\n }\n this.formControl.removeAt(i)\n }\n\n addItem() {\n if (this.isDisabled()) {\n return\n }\n\n const group = this.fb.group({})\n this.formControl.push(group)\n }\n}\n","<fieldset [formArrayName]=\"control().name\">\n @if (control().label) {\n <legend [class]=\"settings.legendClasses\">{{ control().label }}</legend>\n }\n\n @for (group of formControl.controls; track group; let i = $index) {\n <div\n [formGroupName]=\"i\"\n [class]=\"settings.arrayItemContainerClasses\">\n @for (ctrl of control().controls; track ctrl.name) {\n <ng-container\n *activateControl=\"ctrl\"\n [ngComponentOutlet]=\"controlResolver.resolve(ctrl) | async\"\n [ngComponentOutletInjector]=\"ctrl | controlInjector: getControlValue(i)\" />\n }\n\n <button\n [class]=\"settings.arrayControlRemoveButtonClasses\"\n role=\"button\"\n tabindex=\"0\"\n type=\"button\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\">\n @if (settings.arrayControlRemoveButtonIcon) {\n <div [class]=\"settings.arrayControlRemoveButtonIconClasses\">\n <ng-container *ngComponentOutlet=\"settings.arrayControlRemoveButtonIcon\" />\n </div>\n }\n @if (settings.arrayControlRemoveButtonLabel) {\n <span>{{ settings.arrayControlRemoveButtonLabel }}</span>\n }\n </button>\n </div>\n }\n\n <button\n [class]=\"settings.arrayControlAddButtonClasses\"\n role=\"button\"\n tabindex=\"0\"\n type=\"button\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\">\n @if (settings.arrayControlAddButtonIcon) {\n <div [class]=\"settings.arrayControlAddButtonIconClasses\">\n <ng-container *ngComponentOutlet=\"settings.arrayControlAddButtonIcon\" />\n </div>\n }\n @if (settings.arrayControlAddButtonLabel) {\n <span>{{ settings.arrayControlAddButtonLabel }}</span>\n }\n </button>\n</fieldset>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container [helpMessage]=\"control().helpText\" />\n</div>\n","// autocomplete-field.component.ts\nimport { ChangeDetectionStrategy, Component, effect, OnDestroy, OnInit, signal } from '@angular/core'\nimport { AsyncPipe } from '@angular/common'\nimport { FormControl } from '@angular/forms'\nimport { OverlayModule } from '@angular/cdk/overlay'\n\nimport { from, Observable, of, Subscription } from 'rxjs'\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators'\n\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\nimport { AutocompleteControl } from '../../interfaces'\n\n@Component({\n selector: 'autocomplete-field',\n imports: [...controlDeps, OverlayModule, AsyncPipe],\n templateUrl: './autocomplete-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class AutocompleteFieldComponent<T> extends BaseInputComponent implements OnInit, OnDestroy {\n // A separate control for the query input.\n queryControl = new FormControl<string>('')\n\n isOpen = signal(false)\n loading = signal(false)\n private dependencySubscriptions: Subscription[] = []\n\n // suggestions$ emits an array of options based on the current query.\n suggestions$: Observable<T[]> = this.queryControl.valueChanges.pipe(\n startWith(this.queryControl.value),\n debounceTime(300),\n map(query => query || ''),\n distinctUntilChanged(),\n switchMap((query: string) => {\n const ctrl = this.control()\n if (!ctrl.autocompleteOptions) {\n this.loading.set(false)\n return of([]) as Observable<T[]>\n }\n\n // Set loading to true before fetching\n this.loading.set(true)\n\n const result = ctrl.autocompleteOptions(this.parentForm, query)\n\n let resultObservable: Observable<T[]>\n\n // Handle Promise\n if (result instanceof Promise) {\n resultObservable = from(result) as Observable<T[]>\n }\n // Handle Observable\n else if (result && typeof result === 'object' && 'subscribe' in result) {\n resultObservable = result as Observable<T[]>\n }\n // Handle Array\n else if (Array.isArray(result)) {\n resultObservable = of(result) as Observable<T[]>\n } else {\n resultObservable = of([]) as Observable<T[]>\n }\n\n // Set loading to false after results arrive\n return resultObservable.pipe(\n map(results => {\n this.loading.set(false)\n return results\n })\n )\n })\n )\n\n displayWithFn(item: T): string {\n const control = this.control() as AutocompleteControl<T>\n if (control.itemLabel) {\n const label = (item as Record<string, unknown>)[control.itemLabel]\n return label !== null && label !== undefined ? String(label) : ''\n } else {\n return String(item)\n }\n }\n\n selectOption(option: T): void {\n const ctrl = this.control() as AutocompleteControl<T>\n const valueToStore = ctrl.itemValue ? (option as Record<string, unknown>)[ctrl.itemValue] : option\n\n this.formControl.setValue(valueToStore)\n this.queryControl.setValue(this.displayWithFn(option))\n\n this.close()\n }\n\n isSelected(option: T): boolean {\n const ctrl = this.control() as AutocompleteControl<T>\n const value = this.formControl.value\n\n const optionValue = ctrl.itemValue ? (option as Record<string, unknown>)[ctrl.itemValue] : option\n\n if (Array.isArray(value)) {\n return value.includes(optionValue)\n }\n return value === optionValue\n }\n\n open(): void {\n this.isOpen.set(true)\n }\n\n close(): void {\n this.isOpen.set(false)\n }\n\n trackByFn(index: number, item: T): unknown {\n const ctrl = this.control() as AutocompleteControl<T>\n return ctrl.itemValue ? (item as Record<string, unknown>)[ctrl.itemValue] : index\n }\n\n clear() {\n this.queryControl.reset()\n this.formControl.reset()\n this.close()\n }\n\n constructor() {\n super()\n\n effect(() => {\n const disabled = this.isDisabled()\n\n if (disabled && !this.queryControl.disabled) {\n this.queryControl.disable({ emitEvent: false })\n } else if (!disabled && this.queryControl.disabled) {\n this.queryControl.enable({ emitEvent: false })\n }\n })\n }\n\n override ngOnInit(): void {\n this.initialize()\n\n // If the control configuration has a 'resetOnChange' array, subscribe to each dependency.\n const ctrl = this.control() as AutocompleteControl<T>\n if (ctrl.resetOnChange && Array.isArray(ctrl.resetOnChange)) {\n ctrl.resetOnChange.forEach((depName: string) => {\n const depControl = this.parentForm.get(depName)\n if (depControl) {\n const sub = depControl.valueChanges.pipe(distinctUntilChanged()).subscribe(() => {\n this.formControl.reset()\n this.queryControl.reset()\n })\n this.dependencySubscriptions.push(sub)\n }\n })\n }\n }\n\n ngOnDestroy(): void {\n this.destroy()\n\n this.dependencySubscriptions.forEach(sub => sub.unsubscribe())\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div class=\"relative\">\n <input\n #origin\n [id]=\"control().name\"\n [name]=\"control().name\"\n [class]=\"settings.autocompleteInputClasses\"\n [placeholder]=\"control().placeholder ?? ''\"\n [formControl]=\"queryControl\"\n (focus)=\"open()\"\n autocomplete=\"off\"\n [attr.aria-expanded]=\"isOpen() ? 'true' : 'false'\"\n aria-controls=\"autocomplete-list\" />\n\n @if (loading()) {\n @if (settings.autocompleteLoadingIcon) {\n <div [class]=\"settings.autocompleteLoadingWrapperClasses\">\n <div [class]=\"settings.autocompleteLoadingIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.autocompleteLoadingIcon\" />\n </div>\n </div>\n } @else {\n <span [class]=\"settings.autocompleteLoadingTextClasses\">{{ settings.autocompleteLoadingText }}</span>\n }\n } @else {\n @if (settings.autocompleteClearIcon && !!queryControl.value) {\n <div\n [class]=\"settings.autocompleteClearWrapperClasses\"\n (click)=\"clear()\">\n <div [class]=\"settings.autocompleteClearIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.autocompleteClearIcon\" />\n </div>\n </div>\n } @else if (settings.autocompleteClearText && !!queryControl.value) {\n <span\n (click)=\"clear()\"\n [class]=\"settings.autocompleteClearTextClasses\">\n {{ settings.autocompleteClearText }}\n </span>\n }\n }\n</div>\n\n<!-- CDK Connected Overlay for suggestions dropdown -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\">\n <div\n [class]=\"settings.autocompleteDropdownClasses\"\n role=\"listbox\"\n aria-live=\"assertive\"\n id=\"autocomplete-list\">\n @for (option of suggestions$ | async; track trackByFn($index, option)) {\n <div\n [class]=\"[settings.autocompleteDropdownItemClasses, isSelected(option) ? settings.autocompleteDropdownItemSelectedClasses : '']\"\n tabindex=\"0\"\n (click)=\"selectOption(option)\"\n (keyup)=\"selectOption(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\">\n {{ displayWithFn(option) }}\n </div>\n }\n </div>\n</ng-template>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\n\n@Component({\n selector: 'checkbox-field',\n imports: [...controlDeps],\n templateUrl: './checkbox-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class CheckboxFieldComponent extends BaseInputComponent {}\n","<label [class]=\"settings.checkboxWrapperClasses\">\n <input\n [id]=\"control().name\"\n [name]=\"control().name\"\n [class]=\"settings.checkboxInputClasses\"\n type=\"checkbox\"\n [attr.aria-checked]=\"formControl.value ? 'true' : 'false'\"\n [formControlName]=\"control().name\" />\n <span\n [class]=\"settings.checkboxLabelTextClasses\"\n [innerHTML]=\"control().label\"></span>\n</label>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { FormControl } from '@angular/forms'\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\n\n@Component({\n selector: 'checkbox-group-field',\n imports: [...controlDeps],\n templateUrl: './checkbox-group-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class CheckboxGroupFieldComponent extends BaseInputComponent {\n override formControl = new FormControl(Array.isArray(this.value()) ? this.value() : [], this.validatorFn, this.asyncValidatorFn)\n\n isSelected(value: unknown) {\n const selectedValues = this.formControl.value as unknown[]\n return selectedValues.includes(value)\n }\n\n onCheckboxChange(event: Event, value: unknown) {\n const target = event.target as HTMLInputElement\n const isChecked = target.checked\n\n let selectedValues = this.formControl.value as unknown[]\n\n if (isChecked && !this.isSelected(value)) {\n selectedValues.push(value)\n } else {\n selectedValues = selectedValues.filter(item => item !== value)\n }\n\n this.formControl.setValue(selectedValues)\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div [class]=\"settings.checkboxGroupContainerClasses\">\n @for (option of options(); track option.value) {\n <label [class]=\"settings.checkboxGroupItemWrapperClasses\">\n <input\n [id]=\"control().name + '-' + option.value\"\n [name]=\"control().name + '-' + option.value\"\n [class]=\"settings.checkboxGroupItemInputClasses\"\n type=\"checkbox\"\n [checked]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled\"\n (change)=\"onCheckboxChange($event, option.value)\" />\n <span [class]=\"settings.checkboxGroupItemLabelClasses\">{{ option.label }}</span>\n </label>\n }\n</div>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core'\nimport { FormControl } from '@angular/forms'\n\nimport { BaseInputComponent, controlDeps } from '../base-input/base-input.component'\n\n@Component({\n selector: 'chips-list-field',\n imports: [...controlDeps],\n templateUrl: './chips-list-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChipsListFieldComponent extends BaseInputComponent {\n override formControl = new FormControl<string[]>(Array.isArray(this.value()) ? (this.value() as string[]) : [], this.validatorFn, this.asyncValidatorFn)\n\n inputValue = signal('')\n\n addChip() {\n const trimmed = this.inputValue().trim()\n if (!trimmed) {\n return\n }\n\n const currentChips = this.formControl.value || []\n this.formControl.setValue([...currentChips, trimmed])\n\n this.inputValue.set('')\n }\n\n removeChip(chipToRemove: string) {\n const currentChips = this.formControl.value || []\n const updatedChips = currentChips.filter(chip => chip !== chipToRemove)\n this.formControl.setValue(updatedChips)\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div [class]=\"settings.chipslistContainerClasses\">\n @for (chip of formControl.value; track $index) {\n <div [class]=\"settings.chipslistChipClasses\">\n {{ chip }}\n <button\n type=\"button\"\n [class]=\"settings.chipslistRemoveButtonClasses\"\n (click)=\"removeChip(chip)\">\n @if (settings.chipslistRemoveButtonIcon) {\n <div [class]=\"settings.chipslistRemoveButtonIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.chipslistRemoveButtonIcon\" />\n </div>\n }\n @if (settings.chipslistRemoveButtonLabel) {\n <span [class]=\"settings.chipslistRemoveButtonLabelClasses\">\n {{ settings.chipslistRemoveButtonLabel }}\n </span>\n }\n </button>\n </div>\n }\n</div>\n\n<div>\n <input\n [id]=\"control().name\"\n [class]=\"settings.chipslistInputClasses\"\n [name]=\"control().name\"\n [placeholder]=\"control().placeholder ?? ''\"\n [value]=\"inputValue()\"\n (input)=\"inputValue.set($any($event.target).value)\"\n (keydown.enter)=\"$event.preventDefault(); addChip()\"\n aria-label=\"Add new chip\" />\n <button\n type=\"button\"\n [class]=\"settings.chipslistAddButtonClasses\"\n aria-label=\"Add chip\"\n (click)=\"addChip()\">\n @if (settings.chipslistAddButtonIcon) {\n <div [class]=\"settings.chipslistAddButtonIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.chipslistAddButtonIcon\" />\n </div>\n }\n @if (settings.chipslistAddButtonLabel) {\n <span [class]=\"settings.chipslistAddButtonLabelClasses\">\n {{ settings.chipslistAddButtonLabel }}\n </span>\n }\n </button>\n</div>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core'\nimport { AsyncPipe } from '@angular/common'\nimport { NonNullableFormBuilder } from '@angular/forms'\n\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\nimport { ControlResolver } from '../../services'\nimport { isGroupControl } from '../../interfaces'\n\n@Component({\n selector: 'group-field',\n imports: [...controlDeps, AsyncPipe],\n templateUrl: './group-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class GroupFieldComponent extends BaseInputComponent {\n fb = inject(NonNullableFormBuilder)\n controlResolver = inject(ControlResolver)\n\n override formControl = this.fb.group({})\n controls = computed(() => {\n const ctrl = this.control()\n return isGroupControl(ctrl) ? ctrl.controls : []\n })\n\n groupValue = computed(() => this.value() as Record<string, unknown> | null)\n}\n","<fieldset\n [class]=\"settings.groupContainerClasses\"\n [formGroupName]=\"control().name\">\n @if (control().label) {\n <legend [class]=\"settings.groupLegendClasses\">{{ control().label }}</legend>\n }\n @for (control of controls(); track control.name) {\n <ng-container\n *activateControl=\"control\"\n [ngComponentOutlet]=\"controlResolver.resolve(control) | async\"\n [ngComponentOutletInjector]=\"control | controlInjector: groupValue()\" />\n }\n</fieldset>\n","import { ChangeDetectionStrategy, Component, computed, signal } from '@angular/core'\n\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\nimport { isInputControl } from '../../interfaces'\n\n@Component({\n selector: 'input-field',\n imports: [...controlDeps],\n templateUrl: './input-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class InputFieldComponent extends BaseInputComponent {\n isPasswordOpen = signal(false)\n\n eyeComponent = computed(() => (this.isPasswordOpen() ? this.settings.passwordEyeOpenIcon : this.settings.passwordEyeCloseIcon))\n\n inputType = computed(() => {\n const ctrl = this.control()\n if (!isInputControl(ctrl)) {\n return 'text'\n }\n\n const type = ctrl.type || 'text'\n if (type === 'password' && this.isPasswordOpen()) {\n return 'text'\n }\n\n return type\n })\n\n inputPlaceholder = computed(() => {\n const ctrl = this.control()\n return isInputControl(ctrl) ? (ctrl.placeholder ?? '') : ''\n })\n\n togglePassword() {\n this.isPasswordOpen.set(!this.isPasswordOpen())\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<input\n [class]=\"settings.inputClasses\"\n [id]=\"control().name\"\n [name]=\"control().name\"\n [type]=\"inputType()\"\n [formControlName]=\"control().name\"\n [placeholder]=\"inputPlaceholder()\"\n autocomplete=\"off\" />\n\n@if (control().type === 'password' && eyeComponent()) {\n <button\n type=\"button\"\n [class]=\"settings.passwordIconClasses\"\n (click)=\"togglePassword()\">\n <ng-container [ngComponentOutlet]=\"eyeComponent()!\" />\n </button>\n}\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, signal } from '@angular/core'\nimport { SelectionModel } from '@angular/cdk/collections'\nimport { OverlayModule } from '@angular/cdk/overlay'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { from, map, Observable, of, switchMap } from 'rxjs'\nimport { FormControl } from '@angular/forms'\n\nimport { BaseInputComponent, controlDeps } from '../base-input/base-input.component'\nimport { isMultiSelectControl, MultiSelectDropdownControl } from '../../interfaces'\n\n@Component({\n selector: 'multi-select-dropdown',\n imports: [...controlDeps, OverlayModule],\n templateUrl: './multi-select-dropdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(click)': 'open()'\n }\n})\nexport class MultiSelectDropdownComponent<T = Record<string, unknown>> extends BaseInputComponent {\n override formControl = new FormControl(Array.isArray(this.value()) ? this.value() : [], this.validatorFn, this.asyncValidatorFn)\n\n items = toSignal(this.getItems(), { initialValue: [] })\n\n isOpen = signal<boolean>(false)\n\n multipleMode = computed(() => {\n const ctrl = this.control()\n return isMultiSelectControl(ctrl) ? (ctrl.multiple ?? true) : true\n })\n\n selectedOptionsModel = new SelectionModel<T>(this.multipleMode())\n displayOptions = toSignal(this.selectedOptionsModel.changed.pipe(map(() => this.selectedOptionsModel.selected)), { initialValue: [] })\n\n constructor() {\n super()\n\n effect(() => {\n this.setSelectedItems(this.items())\n })\n\n effect(() => {\n const selected = this.displayOptions()\n this.valueHasChanged(selected)\n })\n }\n\n setSelectedItems(items: T[]): void {\n const formControlValue = this.formControl.value\n this.selectedOptionsModel.clear()\n\n if (Array.isArray(formControlValue)) {\n items.forEach(item => {\n if (formControlValue.some((val: string) => this.compareWithFn(item, val))) {\n this.selectedOptionsModel.select(item)\n }\n })\n } else {\n items.forEach(item => {\n if (this.compareWithFn(item, String(formControlValue))) {\n this.selectedOptionsModel.select(item)\n }\n })\n }\n }\n\n getItems(): Observable<T[]> {\n return this.parentForm.valueChanges.pipe(\n switchMap(() => {\n const control = this.control() as MultiSelectDropdownControl<T>\n const itemsFn = control.items\n\n if (!itemsFn) {\n return of([])\n }\n if (Array.isArray(itemsFn)) {\n return of(itemsFn)\n }\n\n const result = itemsFn(this.parentForm)\n\n if (result instanceof Promise) {\n return from(result)\n }\n if (result instanceof Observable) {\n return result\n }\n if (Array.isArray(result)) {\n return of(result)\n }\n return of([])\n })\n )\n }\n\n displayWithFn(item: T): string {\n const control = this.control() as MultiSelectDropdownControl<T>\n\n if (control.itemLabel) {\n return String((item as Record<string, unknown>)[control.itemLabel] ?? '')\n } else {\n return String(item)\n }\n }\n\n compareWithFn(item: T, value: string) {\n const control = this.control() as MultiSelectDropdownControl<T>\n\n if (control.itemValue) {\n const itemValue = (item as Record<string, unknown>)[control.itemValue]\n return itemValue === value\n } else {\n return (item as string) === value\n }\n }\n\n valueHasChanged(items: T[]) {\n const control = this.control() as MultiSelectDropdownControl<T>\n\n const isMultiple = control.multiple !== false\n\n const values = items.map(item => {\n if (!control.itemValue) {\n return item\n }\n return (item as Record<string, unknown>)[control.itemValue]\n })\n\n if (isMultiple) {\n this.formControl.setValue(values, { emitEvent: false })\n } else {\n this.formControl.setValue(values.at(0) ?? null, { emitEvent: false })\n }\n }\n\n open() {\n this.isOpen.set(true)\n }\n\n close() {\n this.isOpen.set(false)\n }\n\n trackByFn(index: number, item: T): unknown {\n const ctrl = this.control() as MultiSelectDropdownControl<T>\n return ctrl.itemValue ? (item as Record<string, unknown>)[ctrl.itemValue] : index\n }\n\n toggleSelection(option: T) {\n this.selectedOptionsModel.toggle(option)\n }\n\n deselectOption(event: MouseEvent, option: T) {\n event.stopPropagation()\n this.selectedOptionsModel.deselect(option)\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\">\n <div>\n @if (displayOptions().length === 0) {\n <span>{{ settings.multiSelectEmptyText }}</span>\n } @else {\n <div [class]=\"settings.multiSelectDisplayedOptionsClasses\">\n @for (option of displayOptions(); track trackByFn($index, option)) {\n <div [class]=\"settings.multiSelectDisplayedOptionClasses\">\n <span>{{ displayWithFn(option) }}</span>\n <button\n type=\"button\"\n [class]=\"settings.multiSelectControlRemoveButtonClasses\"\n (click)=\"deselectOption($event, option)\">\n @if (settings.multiSelectControlRemoveButtonIcon) {\n <div [class]=\"settings.multiSelectControlRemoveButtonIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.multiSelectControlRemoveButtonIcon\" />\n </div>\n }\n @if (settings.multiSelectControlRemoveButtonLabel) {\n {{ settings.multiSelectControlRemoveButtonLabel }}\n }\n </button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\">\n <div [class]=\"settings.multiselectDropdownClasses\">\n @for (option of items(); track trackByFn($index, option)) {\n <div [class]=\"[settings.multiselectDropdownItemClasses, selectedOptionsModel.isSelected(option) ? settings.multiselectDropdownItemSelectedClasses : '']\">\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n [id]=\"control().name + '-option-' + $index\"\n [name]=\"control().name + '-option-' + $index\"\n type=\"checkbox\"\n class=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n [checked]=\"selectedOptionsModel.isSelected(option)\"\n (change)=\"toggleSelection(option)\"\n [attr.aria-checked]=\"selectedOptionsModel.isSelected(option) ? 'true' : 'false'\"\n [attr.aria-selected]=\"selectedOptionsModel.isSelected(option) ? 'true' : 'false'\"\n role=\"option\" />\n {{ displayWithFn(option) }}\n </label>\n </div>\n }\n </div>\n</ng-template>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\n\n@Component({\n selector: 'radio-field',\n imports: [...controlDeps],\n templateUrl: './radio-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class RadioFieldComponent extends BaseInputComponent {}\n","<label\n [class]=\"settings.labelClasses\"\n [for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div [class]=\"settings.radioGroupContainerClasses\">\n @for (option of options(); track option.value) {\n <label [class]=\"settings.radioItemWrapperClasses\">\n <input\n [id]=\"control().name + '-' + option.value\"\n [name]=\"control().name\"\n [class]=\"settings.radioItemInputClasses\"\n type=\"radio\"\n [formControlName]=\"control().name\"\n [value]=\"option.value\"\n [attr.aria-checked]=\"formControl.value === option.value ? 'true' : 'false'\" />\n <span [class]=\"settings.radioItemLabelClasses\">{{ option.label }}</span>\n </label>\n }\n</div>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\n\n@Component({\n selector: 'select-field',\n imports: [...controlDeps],\n templateUrl: './select-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class SelectFieldComponent extends BaseInputComponent {}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<select\n [class]=\"settings.selectClasses || settings.inputClasses\"\n [id]=\"control().name\"\n [name]=\"control().name\"\n [formControlName]=\"control().name\">\n @for (option of options(); track option.value) {\n <option\n [class]=\"settings.selectOptionClasses\"\n [value]=\"option.value\"\n [selected]=\"option.selected\"\n [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n</select>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","/*\n * Public API Surface of ngx-dynamic-forms\n */\n\nexport * from './lib/interfaces'\nexport * from './lib/utils'\nexport * from './lib/services'\nexport * from './lib/components'\nexport * from './lib/directives'\nexport * from './lib/pipes'\nexport * from './lib/controls'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.HelpTextDirective","i3","i4.ActivateControlDirective","i5.ControlInjector","startWith","i3.ValidatorMessageDirective","i2","i3.ActivateControlDirective","i4.ControlInjector","map","switchMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"superlikers-dynamic-forms.mjs","sources":["../../../projects/dynamic-forms/src/lib/interfaces/forms.interfaces.ts","../../../projects/dynamic-forms/src/lib/utils/control-data.token.ts","../../../projects/dynamic-forms/src/lib/utils/settings.token.ts","../../../projects/dynamic-forms/src/lib/utils/validation-error-messages.token.ts","../../../projects/dynamic-forms/src/lib/services/validations/validators.service.ts","../../../projects/dynamic-forms/src/lib/services/control-resolver/control-resolver.service.ts","../../../projects/dynamic-forms/src/lib/components/error-message/error-message.component.ts","../../../projects/dynamic-forms/src/lib/pipes/control-injector/control-injector.pipe.ts","../../../projects/dynamic-forms/src/lib/directives/activate-control/activate-control.directive.ts","../../../projects/dynamic-forms/src/lib/directives/help-text/help-text.directive.ts","../../../projects/dynamic-forms/src/lib/directives/validator-message/validator-message.directive.ts","../../../projects/dynamic-forms/src/lib/components/fields/fields.component.ts","../../../projects/dynamic-forms/src/lib/components/help-text/help-text.component.ts","../../../projects/dynamic-forms/src/lib/controls/base-input/base-input.component.ts","../../../projects/dynamic-forms/src/lib/controls/array-field/array-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/array-field/array-field.component.html","../../../projects/dynamic-forms/src/lib/controls/autocomplete-field/autocomplete-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/autocomplete-field/autocomplete-field.component.html","../../../projects/dynamic-forms/src/lib/controls/checkbox-field/checkbox-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/checkbox-field/checkbox-field.component.html","../../../projects/dynamic-forms/src/lib/controls/checkbox-group-field/checkbox-group-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/checkbox-group-field/checkbox-group-field.component.html","../../../projects/dynamic-forms/src/lib/controls/chips-list-field/chips-list-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/chips-list-field/chips-list-field.component.html","../../../projects/dynamic-forms/src/lib/controls/group-field/group-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/group-field/group-field.component.html","../../../projects/dynamic-forms/src/lib/controls/input-field/input-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/input-field/input-field.component.html","../../../projects/dynamic-forms/src/lib/controls/multi-select-dropdown/multi-select-dropdown.component.ts","../../../projects/dynamic-forms/src/lib/controls/multi-select-dropdown/multi-select-dropdown.component.html","../../../projects/dynamic-forms/src/lib/controls/radio-field/radio-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/radio-field/radio-field.component.html","../../../projects/dynamic-forms/src/lib/controls/select-field/select-field.component.ts","../../../projects/dynamic-forms/src/lib/controls/select-field/select-field.component.html","../../../projects/dynamic-forms/src/public-api.ts","../../../projects/dynamic-forms/src/superlikers-dynamic-forms.ts"],"sourcesContent":["import { AbstractControl, AsyncValidatorFn, FormGroup, ValidationErrors, Validators } from '@angular/forms'\nimport { Observable } from 'rxjs'\n\nexport type ControlType = 'input' | 'group' | 'checkbox' | 'checkbox-group' | 'radio' | 'select' | 'array' | 'multi-select-dropdown' | 'chips-list' | 'autocomplete'\n\nexport type InputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'date' | 'time' | 'datetime-local' | 'search'\n\ntype CustomValidator = (control: AbstractControl) => ValidationErrors | null\ntype CustomAsyncValidator = AsyncValidatorFn\ntype ValidatorsKeys = keyof Omit<typeof Validators, 'prototype' | 'compose' | 'composeAsync'>\ntype ValidatorValue = boolean | number | string | RegExp\n\nexport type ControlValidators = Partial<Record<ValidatorsKeys, ValidatorValue>> & {\n customValidation?: CustomValidator | CustomValidator[]\n asyncValidation?: CustomAsyncValidator | CustomAsyncValidator[]\n}\n\nexport type Visible = boolean | ((form: FormGroup) => boolean)\nexport type Options = Option[] | ((form: FormGroup) => Option[] | Promise<Option[]> | Observable<Option[]>)\nexport type Disabled = boolean | ((form: FormGroup) => boolean)\nexport type Items<T> = T[] | ((form: FormGroup) => T[] | Promise<T[]> | Observable<T[]>)\nexport type AutocompleteOptions<T> = (form: FormGroup, query: string) => T[] | Promise<T[]> | Observable<T[]>\n\n/**\n * Base interface for all form controls with common properties\n */\nexport interface BaseControl {\n name: string\n controlType: ControlType\n label?: string\n helpText?: string\n validators?: ControlValidators\n visible?: Visible\n disabled?: Disabled\n value?: unknown\n placeholder?: string\n options?: Options\n controls?: Control[]\n type?: InputType\n items?: Items<unknown>\n itemLabel?: string\n itemValue?: string\n multiple?: boolean\n autocompleteOptions?: AutocompleteOptions<unknown>\n resetOnChange?: string[]\n}\n\n/**\n * Input control configuration\n */\nexport interface InputControl extends BaseControl {\n controlType: 'input'\n type?: InputType\n value?: string | number\n placeholder?: string\n}\n\n/**\n * Checkbox control configuration\n */\nexport interface CheckboxControl extends BaseControl {\n controlType: 'checkbox'\n value?: boolean\n}\n\n/**\n * Radio control configuration\n */\nexport interface RadioControl extends BaseControl {\n controlType: 'radio'\n options: Options\n value?: string | number\n}\n\n/**\n * Select control configuration\n */\nexport interface SelectControl extends BaseControl {\n controlType: 'select'\n options: Options\n value?: string | number\n}\n\n/**\n * Checkbox group control configuration\n */\nexport interface CheckboxGroupControl extends BaseControl {\n controlType: 'checkbox-group'\n options: Options\n value?: (string | number)[]\n}\n\n/**\n * Group control configuration\n */\nexport interface GroupControl extends BaseControl {\n controlType: 'group'\n controls: Control[]\n}\n\n/**\n * Array control configuration\n */\nexport interface ArrayControl extends BaseControl {\n controlType: 'array'\n controls: Control[]\n value?: Record<string, unknown>[]\n}\n\n/**\n * Chips list control configuration\n */\nexport interface ChipsListControl extends BaseControl {\n controlType: 'chips-list'\n value?: string[]\n placeholder?: string\n}\n\n/**\n * Multi-select dropdown control configuration\n */\nexport interface MultiSelectDropdownControl<T = unknown> extends BaseControl {\n controlType: 'multi-select-dropdown'\n items: Items<T>\n itemLabel?: string\n itemValue?: string\n multiple?: boolean\n value?: unknown[]\n}\n\n/**\n * Autocomplete control configuration\n */\nexport interface AutocompleteControl<T = unknown> extends BaseControl {\n controlType: 'autocomplete'\n autocompleteOptions: AutocompleteOptions<T>\n itemLabel?: string\n itemValue?: string\n placeholder?: string\n resetOnChange?: string[]\n value?: unknown\n}\n\n/**\n * Union type for all control types\n */\nexport type Control = InputControl | CheckboxControl | RadioControl | SelectControl | CheckboxGroupControl | GroupControl | ArrayControl | ChipsListControl | MultiSelectDropdownControl | AutocompleteControl\n\n/**\n * Type guards for control types\n */\nexport function isInputControl(control: Control): control is InputControl {\n return control.controlType === 'input'\n}\n\nexport function isGroupControl(control: Control): control is GroupControl {\n return control.controlType === 'group'\n}\n\nexport function isArrayControl(control: Control): control is ArrayControl {\n return control.controlType === 'array'\n}\n\nexport function isMultiSelectControl(control: Control): control is MultiSelectDropdownControl {\n return control.controlType === 'multi-select-dropdown'\n}\n\nexport function isAutocompleteControl(control: Control): control is AutocompleteControl {\n return control.controlType === 'autocomplete'\n}\n\n/**\n * Represents an individual option available for selection in controls such as select, radio groups, or checkboxes.\n */\nexport interface Option {\n /**\n * The display text for the option.\n */\n label: string\n\n /**\n * The value associated with the option.\n */\n value: unknown\n\n /**\n * If set to true, this option will be selected by default.\n */\n selected?: boolean\n\n /**\n * If set to true, this option will be rendered as disabled.\n */\n disabled?: boolean\n}\n","import { InjectionToken, Signal } from '@angular/core'\n\nimport { Control } from '../interfaces'\n\nexport interface ControlData {\n control: Control\n initialValue?: unknown\n}\n\nexport const CONTROL_DATA = new InjectionToken<Signal<ControlData>>('CONTROL_DATA')\n","import { InjectionToken } from '@angular/core'\n\nimport { Settings } from '../interfaces'\n\nexport const DEFAULT_SETTINGS: Settings = {\n // general\n wrapperClasses: 'field-wrapper',\n labelClasses: 'field-label',\n errorClasses: 'field-error',\n helpTextClasses: 'field-help-text',\n inputClasses: 'field-input',\n validationFeedbackClasses: 'validation-feedback',\n // select\n selectClasses: 'field-select',\n selectOptionClasses: 'field-select-option',\n // checkbox\n checkboxWrapperClasses: 'checkbox-wrapper',\n checkboxInputClasses: 'checkbox-input',\n checkboxLabelTextClasses: 'checkbox-label',\n checkboxGroupContainerClasses: 'checkbox-group-container',\n checkboxGroupItemWrapperClasses: 'checkbox-group-item-wrapper',\n checkboxGroupItemInputClasses: 'checkbox-group-item-input',\n checkboxGroupItemLabelClasses: 'checkbox-group-item-label',\n // radio\n radioGroupContainerClasses: 'radio-group-container',\n radioItemWrapperClasses: 'radio-item-wrapper',\n radioItemInputClasses: 'radio-item-input',\n radioItemLabelClasses: 'radio-item-label',\n // group\n groupContainerClasses: 'group-container',\n groupLegendClasses: 'group-legend',\n legendClasses: 'legend',\n // array\n arrayItemContainerClasses: 'array-item-container',\n arrayControlRemoveButtonClasses: 'array-remove-button',\n arrayControlAddButtonClasses: 'array-add-button',\n arrayControlRemoveButtonLabel: 'Remove',\n arrayControlAddButtonLabel: 'Add',\n // multi select\n multiSelectControlRemoveButtonLabel: 'Remove',\n multiSelectEmptyText: 'Select options',\n multiSelectDisplayedOptionsClasses: 'multi-select-displayed-options',\n multiSelectDisplayedOptionClasses: 'multi-select-displayed-option',\n multiselectDropdownClasses: 'multi-select-dropdown',\n multiselectDropdownItemClasses: 'multi-select-dropdown-item',\n chipslistRemoveButtonLabel: 'Remove',\n chipslistAddButtonLabel: 'Add',\n chipslistInputClasses: 'chips-list-input',\n chipslistContainerClasses: 'chips-list-container',\n chipslistChipClasses: 'chips-list-chip',\n chipslistAddWrapperClasses: 'chips-list-add-wrapper',\n // autocomplete\n autocompleteInputClasses: 'autocomplete-input',\n autocompleteDropdownClasses: 'autocomplete-dropdown',\n autocompleteDropdownItemClasses: 'autocomplete-dropdown-item',\n autocompleteLoadingText: 'Loading...',\n autocompleteLoadingWrapperClasses: 'autocomplete-loading-wrapper',\n autocompleteLoadingIconClasses: 'autocomplete-loading-icon',\n autocompleteClearWrapperClasses: 'autocomplete-clear-wrapper',\n autocompleteClearIconClasses: 'autocomplete-clear-icon',\n autocompleteClearText: 'Clear',\n autocompleteClearTextClasses: 'autocomplete-clear-text'\n}\n\nexport const SETTINGS = new InjectionToken<Settings>('Settings', {\n providedIn: 'root',\n factory: () => DEFAULT_SETTINGS\n})\n","import { InjectionToken } from '@angular/core'\n\ntype ValidationErrorArgs = Record<string, unknown> | undefined\n\nexport const ERROR_MESSAGES: Record<string, (args?: ValidationErrorArgs) => string> = {\n pending: () => `Validating...`,\n required: () => `This field is required`,\n requiredTrue: () => `This field is required`,\n pattern: () => `Does not match the pattern`,\n email: () => `Must be a valid email`,\n minlength: args => `Length must be at least ${(args as Record<string, unknown>)?.['requiredLength']} characters`,\n maxlength: args => `Length must not exceed ${(args as Record<string, unknown>)?.['requiredLength']} characters. Currently, it has ${(args as Record<string, unknown>)?.['actualLength']} characters.`,\n min: args => `The value must be at least ${(args as Record<string, unknown>)?.['min']}`,\n max: args => `The value must not exceed ${(args as Record<string, unknown>)?.['max']}`,\n invalidChannelValue: error => String(error),\n custom: error => String(error)\n}\n\nexport const SPANISH_ERROR_MESSAGES: Record<string, (args?: ValidationErrorArgs) => string> = {\n pending: () => `Validando...`,\n required: () => `Este campo es obligatorio`,\n requiredTrue: () => `Este campo es obligatorio`,\n pattern: () => `No coincide con el patrón`,\n email: () => `Debe ser un correo electrónico válido`,\n minlength: args => `La longitud debe ser al menos ${(args as Record<string, unknown>)?.['requiredLength']} caracteres`,\n maxlength: args => `La longitud no debe exceder los ${(args as Record<string, unknown>)?.['requiredLength']} caracteres. Actualmente tiene ${(args as Record<string, unknown>)?.['actualLength']} caracteres.`,\n min: args => `El valor debe ser al menos ${(args as Record<string, unknown>)?.['min']}`,\n max: args => `El valor no debe exceder ${(args as Record<string, unknown>)?.['max']}`,\n invalidChannelValue: error => String(error),\n custom: error => String(error)\n}\n\nexport const VALIDATION_ERROR_MESSAGES = new InjectionToken('Validation Messages', {\n providedIn: 'root',\n factory: () => ERROR_MESSAGES\n})\n","import { Injectable } from '@angular/core'\nimport { Control, ControlValidators } from '../../interfaces'\nimport { AsyncValidatorFn, ValidatorFn, Validators } from '@angular/forms'\n\ntype ValidatorStrategy = (value: unknown) => ValidatorFn[]\ntype AsyncValidatorStrategy = (value: unknown) => AsyncValidatorFn[]\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValidatorsService {\n private readonly validatorStrategies: Partial<Record<keyof ControlValidators, ValidatorStrategy>> = {\n customValidation: (value: unknown): ValidatorFn[] => {\n if (typeof value === 'function') {\n return [value as ValidatorFn]\n }\n if (Array.isArray(value)) {\n return value.filter((fn): fn is ValidatorFn => typeof fn === 'function')\n }\n return []\n },\n\n pattern: (value: unknown): ValidatorFn[] => {\n if (typeof value === 'string' || value instanceof RegExp) {\n return [Validators.pattern(value)]\n }\n return []\n },\n\n max: (value: unknown): ValidatorFn[] => {\n return typeof value === 'number' ? [Validators.max(value)] : []\n },\n\n min: (value: unknown): ValidatorFn[] => {\n return typeof value === 'number' ? [Validators.min(value)] : []\n },\n\n maxLength: (value: unknown): ValidatorFn[] => {\n return typeof value === 'number' ? [Validators.maxLength(value)] : []\n },\n\n minLength: (value: unknown): ValidatorFn[] => {\n return typeof value === 'number' ? [Validators.minLength(value)] : []\n },\n\n requiredTrue: (): ValidatorFn[] => {\n return [Validators.requiredTrue]\n },\n\n email: (): ValidatorFn[] => {\n return [Validators.email]\n },\n\n required: (): ValidatorFn[] => {\n return [Validators.required]\n }\n }\n\n private readonly asyncValidatorStrategies: Partial<Record<keyof ControlValidators, AsyncValidatorStrategy>> = {\n asyncValidation: (value: unknown): AsyncValidatorFn[] => {\n if (typeof value === 'function') {\n return [value as AsyncValidatorFn]\n }\n if (Array.isArray(value)) {\n return value.filter((fn): fn is AsyncValidatorFn => typeof fn === 'function')\n }\n return []\n }\n }\n\n resolveValidators({ validators = {} }: Control): ValidatorFn | null {\n const validatorFns: ValidatorFn[] = []\n\n for (const key in validators) {\n if (Object.prototype.hasOwnProperty.call(validators, key)) {\n const typedKey = key as keyof ControlValidators\n const strategy = this.validatorStrategies[typedKey]\n\n if (strategy) {\n const value = validators[typedKey]\n const fns = strategy(value)\n validatorFns.push(...fns)\n }\n }\n }\n\n return validatorFns.length > 0 ? Validators.compose(validatorFns) : null\n }\n\n resolveAsyncValidators({ validators = {} }: Control): AsyncValidatorFn | null {\n const validatorFns: AsyncValidatorFn[] = []\n\n for (const key in validators) {\n if (Object.prototype.hasOwnProperty.call(validators, key)) {\n const typedKey = key as keyof ControlValidators\n const strategy = this.asyncValidatorStrategies[typedKey]\n\n if (strategy) {\n const value = validators[typedKey]\n const fns = strategy(value)\n validatorFns.push(...fns)\n }\n }\n }\n\n return validatorFns.length > 0 ? Validators.composeAsync(validatorFns) : null\n }\n}\n","import { Injectable, Type } from '@angular/core'\nimport { from, of, tap } from 'rxjs'\n\nimport { Control } from '../../interfaces'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ControlResolver {\n private lazyControlComponents = {\n input: () => import('../../controls/input-field/input-field.component').then(c => c.InputFieldComponent),\n radio: () => import('../../controls/radio-field/radio-field.component').then(c => c.RadioFieldComponent),\n checkbox: () => import('../../controls/checkbox-field/checkbox-field.component').then(c => c.CheckboxFieldComponent),\n select: () => import('../../controls/select-field/select-field.component').then(c => c.SelectFieldComponent),\n group: () => import('../../controls/group-field/group-field.component').then(c => c.GroupFieldComponent),\n array: () => import('../../controls/array-field/array-field.component').then(c => c.ArrayFieldComponent),\n autocomplete: () => import('../../controls/autocomplete-field/autocomplete-field.component').then(c => c.AutocompleteFieldComponent),\n 'checkbox-group': () => import('../../controls/checkbox-group-field/checkbox-group-field.component').then(c => c.CheckboxGroupFieldComponent),\n 'multi-select-dropdown': () => import('../../controls/multi-select-dropdown/multi-select-dropdown.component').then(c => c.MultiSelectDropdownComponent),\n 'chips-list': () => import('../../controls/chips-list-field/chips-list-field.component').then(c => c.ChipsListFieldComponent)\n }\n\n private loadedControlComponents = new Map<string, Type<unknown>>()\n\n resolve(control: Control) {\n const controlType = control.controlType\n\n const loadedComponent = this.loadedControlComponents.get(controlType)\n if (loadedComponent) {\n return of(loadedComponent)\n }\n\n return from(this.lazyControlComponents[controlType]()).pipe(tap(component => this.loadedControlComponents.set(controlType, component)))\n }\n}\n","import { KeyValue, KeyValuePipe } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core'\nimport { ValidationErrors } from '@angular/forms'\n\nimport { VALIDATION_ERROR_MESSAGES } from '../../utils'\nimport { SETTINGS } from '../../utils'\n\n@Component({\n selector: 'error-message',\n imports: [KeyValuePipe],\n template: `\n @if (pending()) {\n <p [class]=\"settings.errorClasses\">{{ getPendingMessage() }}</p>\n }\n @for (error of errors() | keyvalue; track error.key) {\n <p [class]=\"settings.errorClasses\">{{ getError(error) }}</p>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ErrorMessageComponent {\n settings = inject(SETTINGS)\n errorsMap = inject(VALIDATION_ERROR_MESSAGES)\n\n errors = input<ValidationErrors>()\n pending = input(false)\n\n getPendingMessage() {\n if (!this.errorsMap['pending']) {\n return 'Validating...'\n }\n\n return this.errorsMap['pending']()\n }\n\n getError(error: KeyValue<string, unknown>) {\n if (!this.errorsMap[error.key]) {\n return\n }\n\n const message = this.errorsMap[error.key](error.value as Record<string, unknown>)\n return message\n }\n}\n","import { inject, Injector, Pipe, PipeTransform, signal } from '@angular/core'\n\nimport { Control } from '../../interfaces'\nimport { CONTROL_DATA, ControlData } from '../../utils'\n\n@Pipe({\n name: 'controlInjector'\n})\nexport class ControlInjector implements PipeTransform {\n injector = inject(Injector)\n\n transform(control: Control, initialValues: Record<string, unknown> | null | undefined): Injector {\n const controlPatchValue = initialValues?.[control.name]\n const data: ControlData = { control, initialValue: controlPatchValue }\n\n return Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: CONTROL_DATA,\n useValue: signal(data)\n }\n ]\n })\n }\n}\n","import { computed, Directive, effect, inject, input, TemplateRef, ViewContainerRef } from '@angular/core'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { FormGroupDirective } from '@angular/forms'\nimport { startWith } from 'rxjs'\n\nimport { Control } from '../../interfaces'\n\n@Directive({\n selector: '[activateControl]'\n})\nexport class ActivateControlDirective {\n activateControl = input<Control>()\n\n private vcr = inject(ViewContainerRef)\n private templateRef = inject(TemplateRef)\n private rootFormGroup = inject(FormGroupDirective).form\n\n private formValue = toSignal(this.rootFormGroup.valueChanges.pipe(startWith(this.rootFormGroup.value)), {\n initialValue: this.rootFormGroup.value\n })\n private isVisible = computed(() => {\n const _ = this.formValue()\n\n const visible = this.activateControl()?.visible\n\n if (visible === undefined) {\n return true\n }\n\n if (typeof visible === 'function') {\n return visible(this.rootFormGroup)\n }\n\n return visible\n })\n\n constructor() {\n effect(() => {\n const visible = this.isVisible()\n const controlName = this.activateControl()?.name\n\n if (visible) {\n if (this.vcr.length === 0) {\n this.vcr.createEmbeddedView(this.templateRef)\n }\n } else {\n if (this.vcr.length > 0) {\n this.vcr.clear()\n\n if (controlName && this.rootFormGroup.contains(controlName)) {\n this.rootFormGroup.removeControl(controlName)\n }\n }\n }\n })\n }\n}\n","import { ComponentRef, Directive, ElementRef, inject, input, OnInit, ViewContainerRef } from '@angular/core'\nimport { HelpTextComponent } from '../../components'\n\n@Directive({\n selector: '[helpMessage]'\n})\nexport class HelpTextDirective implements OnInit {\n helpMessage = input<string>()\n\n elementRef = inject(ElementRef)\n vcr = inject(ViewContainerRef)\n\n componentRef: ComponentRef<HelpTextComponent> | null = null\n\n ngOnInit(): void {\n if (!this.helpMessage()) {\n return\n }\n\n this.componentRef = this.vcr.createComponent(HelpTextComponent)\n this.componentRef.setInput('message', this.helpMessage())\n }\n}\n","import { ComponentRef, Directive, ElementRef, inject, input, OnDestroy, OnInit, ViewContainerRef } from '@angular/core'\nimport { AbstractControl, ControlContainer, FormGroupDirective, NgForm } from '@angular/forms'\nimport { EMPTY, fromEvent, iif, merge, startWith, Subscription } from 'rxjs'\n\nimport { ErrorMessageComponent } from '../../components'\n\n@Directive({\n selector: '[validatorMessage]'\n})\nexport class ValidatorMessageDirective implements OnInit, OnDestroy {\n controlName = input<string>()\n\n elementRef = inject(ElementRef)\n vcr = inject(ViewContainerRef)\n parentContainer = inject(ControlContainer, { optional: true })\n\n private componentRef: ComponentRef<ErrorMessageComponent> | null = null\n\n get form() {\n return this.parentContainer?.formDirective as NgForm | FormGroupDirective | null\n }\n\n controlSubscription!: Subscription\n\n ngOnInit() {\n const control = this.getControl()\n if (!control) {\n return\n }\n\n this.controlSubscription = merge(\n control.statusChanges,\n fromEvent(this.elementRef.nativeElement, 'blur'),\n iif(() => !!this.form, this.form!.ngSubmit, EMPTY)\n )\n .pipe(startWith(control.status))\n .subscribe(() => {\n const shouldShow = control.touched || control.dirty || this.form?.submitted\n\n if (control.pending && shouldShow) {\n if (!this.componentRef) {\n this.componentRef = this.vcr.createComponent(ErrorMessageComponent)\n }\n\n this.componentRef.setInput('pending', true)\n this.componentRef.setInput('errors', null)\n return\n }\n\n if (control.errors && shouldShow) {\n if (!this.componentRef) {\n this.componentRef = this.vcr.createComponent(ErrorMessageComponent)\n }\n\n this.componentRef.setInput('pending', false)\n this.componentRef.setInput('errors', control.errors)\n } else {\n this.componentRef?.destroy()\n this.componentRef = null\n }\n })\n }\n\n private getControl(): AbstractControl | null {\n const name = this.controlName()\n if (!name) {\n return null\n }\n\n return (this.parentContainer?.control?.get(name) as AbstractControl) ?? null\n }\n\n ngOnDestroy() {\n this.controlSubscription?.unsubscribe()\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core'\nimport { ControlContainer, FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'\nimport { AsyncPipe, NgComponentOutlet } from '@angular/common'\n\nimport { ControlInjector } from '../../pipes'\nimport { Control } from '../../interfaces'\nimport { ControlResolver } from '../../services'\nimport { ActivateControlDirective } from '../../directives'\n\n@Component({\n selector: 'fields',\n imports: [ReactiveFormsModule, NgComponentOutlet, ControlInjector, AsyncPipe, ActivateControlDirective],\n template: `\n @for (control of controls(); track control.name) {\n <ng-container\n *activateControl=\"control\"\n [ngComponentOutlet]=\"controlResolver.resolve(control) | async\"\n [ngComponentOutletInjector]=\"control | controlInjector: data()\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FieldsComponent {\n controls = input.required<Control[]>()\n data = input<Record<string, unknown> | null>()\n\n fb = inject(FormBuilder)\n controlResolver = inject(ControlResolver)\n\n controlContainer = inject(ControlContainer)\n\n get form() {\n return this.controlContainer.control as FormGroup\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core'\nimport { SETTINGS } from '../../utils'\n\n@Component({\n selector: 'help-text',\n template: `<p\n [class]=\"settings.helpTextClasses\"\n [innerHTML]=\"message()\"></p>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HelpTextComponent {\n settings = inject(SETTINGS)\n\n message = input<string>()\n}\n","import { computed, Directive, effect, inject, OnInit, signal, StaticProvider } from '@angular/core'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { AbstractControl, ControlContainer, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'\nimport { NgComponentOutlet } from '@angular/common'\nimport { startWith } from 'rxjs'\n\nimport { CONTROL_DATA, SETTINGS } from '../../utils'\nimport { ValidatorsService } from '../../services'\nimport { ValidatorMessageDirective } from '../../directives'\nimport { ControlInjector } from '../../pipes'\nimport { HelpTextDirective, ActivateControlDirective } from '../../directives'\n\nexport const controlProvider: StaticProvider = {\n provide: ControlContainer,\n useFactory: () => inject(ControlContainer, { skipSelf: true })\n}\n\nexport const controlDeps = [ReactiveFormsModule, HelpTextDirective, ValidatorMessageDirective, NgComponentOutlet, ControlInjector, ActivateControlDirective]\n\n@Directive({\n host: {\n '[class]': 'hostClass()'\n }\n})\nexport class BaseInputComponent implements OnInit {\n settings = inject(SETTINGS)\n\n protected hostClass = signal('')\n\n // Injections\n protected controlData = inject(CONTROL_DATA)\n protected validatorsService = inject(ValidatorsService)\n protected controlContainer = inject(ControlContainer)\n\n // Computed signals\n protected control = computed(() => this.controlData().control)\n protected value = computed(() => this.controlData().initialValue ?? this.control().value)\n\n // Form control\n protected validatorFn = this.validatorsService.resolveValidators(this.control())\n protected asyncValidatorFn = this.validatorsService.resolveAsyncValidators(this.control())\n formControl: AbstractControl = new FormControl(this.value(), this.validatorFn, this.asyncValidatorFn)\n parentForm = this.controlContainer.control as FormGroup\n\n protected formValue = toSignal(this.parentForm.valueChanges.pipe(startWith(this.parentForm.value)), {\n initialValue: this.parentForm.value\n })\n\n protected options = computed(() => {\n const _ = this.formValue()\n\n const optionsFn = this.control().options\n\n if (!optionsFn) {\n return []\n }\n\n if (Array.isArray(optionsFn)) {\n return optionsFn\n }\n\n const result = optionsFn(this.parentForm)\n\n if (Array.isArray(result)) {\n return result\n }\n\n return []\n })\n\n protected isDisabled = computed(() => {\n const _ = this.formValue()\n\n const control = this.control()\n\n if (control.disabled === undefined) {\n return false\n }\n\n if (typeof control.disabled === 'boolean') {\n return control.disabled\n }\n\n if (typeof control.disabled === 'function') {\n return control.disabled(this.parentForm)\n }\n\n return false\n })\n\n constructor() {\n effect(() => {\n const disabled = this.isDisabled()\n\n if (disabled && !this.formControl.disabled) {\n this.formControl.disable({ emitEvent: false })\n } else if (!disabled && this.formControl.disabled) {\n this.formControl.enable({ emitEvent: false })\n }\n })\n }\n\n ngOnInit(): void {\n this.initialize()\n }\n\n protected initialize() {\n const control = this.control()\n\n const classes = this.settings.wrapperClasses ?? `field wrapper-${control.name}`\n\n this.hostClass.set(classes)\n\n // Verificar si debe estar disabled desde el inicio\n if (this.isDisabled()) {\n this.formControl.disable({ emitEvent: false })\n }\n\n this.parentForm.addControl(control.name, this.formControl)\n }\n\n protected destroy() {\n const control = this.control()\n\n if (this.parentForm.contains(control.name)) {\n this.parentForm.removeControl(control.name)\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, OnInit } from '@angular/core'\nimport { FormArray, FormGroup, NonNullableFormBuilder } from '@angular/forms'\nimport { AsyncPipe } from '@angular/common'\n\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\nimport { isArrayControl } from '../../interfaces'\nimport { ControlResolver } from '../../services'\n\n@Component({\n selector: 'array-field',\n imports: [...controlDeps, AsyncPipe],\n templateUrl: './array-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class ArrayFieldComponent extends BaseInputComponent implements OnInit {\n controlResolver = inject(ControlResolver)\n fb = inject(NonNullableFormBuilder)\n\n override formControl = new FormArray<FormGroup>([], this.validatorFn)\n controls = computed(() => {\n const ctrl = this.control()\n return isArrayControl(ctrl) ? ctrl.controls : []\n })\n\n override ngOnInit(): void {\n this.initialize()\n\n const val = this.value()\n if (Array.isArray(val)) {\n val.forEach(() => {\n const group = this.fb.group({})\n this.formControl.push(group)\n })\n }\n }\n\n getControlValue(index: number) {\n const val = this.value()\n if (Array.isArray(val)) {\n return val[index] ?? null\n }\n return null\n }\n\n removeItem(i: number) {\n if (this.isDisabled()) {\n return\n }\n this.formControl.removeAt(i)\n }\n\n addItem() {\n if (this.isDisabled()) {\n return\n }\n\n const group = this.fb.group({})\n this.formControl.push(group)\n }\n}\n","<fieldset [formArrayName]=\"control().name\">\n @if (control().label) {\n <legend [class]=\"settings.legendClasses\">{{ control().label }}</legend>\n }\n\n @for (group of formControl.controls; track group; let i = $index) {\n <div\n [formGroupName]=\"i\"\n [class]=\"settings.arrayItemContainerClasses\">\n @for (ctrl of control().controls; track ctrl.name) {\n <ng-container\n *activateControl=\"ctrl\"\n [ngComponentOutlet]=\"controlResolver.resolve(ctrl) | async\"\n [ngComponentOutletInjector]=\"ctrl | controlInjector: getControlValue(i)\" />\n }\n\n <button\n [class]=\"settings.arrayControlRemoveButtonClasses\"\n role=\"button\"\n tabindex=\"0\"\n type=\"button\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\">\n @if (settings.arrayControlRemoveButtonIcon) {\n <div [class]=\"settings.arrayControlRemoveButtonIconClasses\">\n <ng-container *ngComponentOutlet=\"settings.arrayControlRemoveButtonIcon\" />\n </div>\n }\n @if (settings.arrayControlRemoveButtonLabel) {\n <span>{{ settings.arrayControlRemoveButtonLabel }}</span>\n }\n </button>\n </div>\n }\n\n <button\n [class]=\"settings.arrayControlAddButtonClasses\"\n role=\"button\"\n tabindex=\"0\"\n type=\"button\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\">\n @if (settings.arrayControlAddButtonIcon) {\n <div [class]=\"settings.arrayControlAddButtonIconClasses\">\n <ng-container *ngComponentOutlet=\"settings.arrayControlAddButtonIcon\" />\n </div>\n }\n @if (settings.arrayControlAddButtonLabel) {\n <span>{{ settings.arrayControlAddButtonLabel }}</span>\n }\n </button>\n</fieldset>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container [helpMessage]=\"control().helpText\" />\n</div>\n","// autocomplete-field.component.ts\nimport { ChangeDetectionStrategy, Component, effect, OnDestroy, OnInit, signal } from '@angular/core'\nimport { AsyncPipe } from '@angular/common'\nimport { FormControl } from '@angular/forms'\nimport { OverlayModule } from '@angular/cdk/overlay'\n\nimport { from, Observable, of, Subscription } from 'rxjs'\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators'\n\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\nimport { AutocompleteControl } from '../../interfaces'\n\n@Component({\n selector: 'autocomplete-field',\n imports: [...controlDeps, OverlayModule, AsyncPipe],\n templateUrl: './autocomplete-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class AutocompleteFieldComponent<T> extends BaseInputComponent implements OnInit, OnDestroy {\n // A separate control for the query input.\n queryControl = new FormControl<string>('')\n\n isOpen = signal(false)\n loading = signal(false)\n private dependencySubscriptions: Subscription[] = []\n\n // suggestions$ emits an array of options based on the current query.\n suggestions$: Observable<T[]> = this.queryControl.valueChanges.pipe(\n startWith(this.queryControl.value),\n debounceTime(300),\n map(query => query || ''),\n distinctUntilChanged(),\n switchMap((query: string) => {\n const ctrl = this.control()\n if (!ctrl.autocompleteOptions) {\n this.loading.set(false)\n return of([]) as Observable<T[]>\n }\n\n // Set loading to true before fetching\n this.loading.set(true)\n\n const result = ctrl.autocompleteOptions(this.parentForm, query)\n\n let resultObservable: Observable<T[]>\n\n // Handle Promise\n if (result instanceof Promise) {\n resultObservable = from(result) as Observable<T[]>\n }\n // Handle Observable\n else if (result && typeof result === 'object' && 'subscribe' in result) {\n resultObservable = result as Observable<T[]>\n }\n // Handle Array\n else if (Array.isArray(result)) {\n resultObservable = of(result) as Observable<T[]>\n } else {\n resultObservable = of([]) as Observable<T[]>\n }\n\n // Set loading to false after results arrive\n return resultObservable.pipe(\n map(results => {\n this.loading.set(false)\n return results\n })\n )\n })\n )\n\n displayWithFn(item: T): string {\n const control = this.control() as AutocompleteControl<T>\n if (control.itemLabel) {\n const label = (item as Record<string, unknown>)[control.itemLabel]\n return label !== null && label !== undefined ? String(label) : ''\n } else {\n return String(item)\n }\n }\n\n selectOption(option: T): void {\n const ctrl = this.control() as AutocompleteControl<T>\n const valueToStore = ctrl.itemValue ? (option as Record<string, unknown>)[ctrl.itemValue] : option\n\n this.formControl.setValue(valueToStore)\n this.queryControl.setValue(this.displayWithFn(option))\n\n this.close()\n }\n\n isSelected(option: T): boolean {\n const ctrl = this.control() as AutocompleteControl<T>\n const value = this.formControl.value\n\n const optionValue = ctrl.itemValue ? (option as Record<string, unknown>)[ctrl.itemValue] : option\n\n if (Array.isArray(value)) {\n return value.includes(optionValue)\n }\n return value === optionValue\n }\n\n open(): void {\n this.isOpen.set(true)\n }\n\n close(): void {\n this.isOpen.set(false)\n }\n\n trackByFn(index: number, item: T): unknown {\n const ctrl = this.control() as AutocompleteControl<T>\n return ctrl.itemValue ? (item as Record<string, unknown>)[ctrl.itemValue] : index\n }\n\n clear() {\n this.queryControl.reset()\n this.formControl.reset()\n this.close()\n }\n\n constructor() {\n super()\n\n effect(() => {\n const disabled = this.isDisabled()\n\n if (disabled && !this.queryControl.disabled) {\n this.queryControl.disable({ emitEvent: false })\n } else if (!disabled && this.queryControl.disabled) {\n this.queryControl.enable({ emitEvent: false })\n }\n })\n }\n\n override ngOnInit(): void {\n this.initialize()\n\n // If the control configuration has a 'resetOnChange' array, subscribe to each dependency.\n const ctrl = this.control() as AutocompleteControl<T>\n if (ctrl.resetOnChange && Array.isArray(ctrl.resetOnChange)) {\n ctrl.resetOnChange.forEach((depName: string) => {\n const depControl = this.parentForm.get(depName)\n if (depControl) {\n const sub = depControl.valueChanges.pipe(distinctUntilChanged()).subscribe(() => {\n this.formControl.reset()\n this.queryControl.reset()\n })\n this.dependencySubscriptions.push(sub)\n }\n })\n }\n }\n\n ngOnDestroy(): void {\n this.destroy()\n\n this.dependencySubscriptions.forEach(sub => sub.unsubscribe())\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div class=\"relative\">\n <input\n #origin\n [id]=\"control().name\"\n [name]=\"control().name\"\n [class]=\"settings.autocompleteInputClasses\"\n [placeholder]=\"control().placeholder ?? ''\"\n [formControl]=\"queryControl\"\n (focus)=\"open()\"\n autocomplete=\"off\"\n [attr.aria-expanded]=\"isOpen() ? 'true' : 'false'\"\n aria-controls=\"autocomplete-list\" />\n\n @if (loading()) {\n @if (settings.autocompleteLoadingIcon) {\n <div [class]=\"settings.autocompleteLoadingWrapperClasses\">\n <div [class]=\"settings.autocompleteLoadingIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.autocompleteLoadingIcon\" />\n </div>\n </div>\n } @else {\n <span [class]=\"settings.autocompleteLoadingTextClasses\">{{ settings.autocompleteLoadingText }}</span>\n }\n } @else {\n @if (settings.autocompleteClearIcon && !!queryControl.value) {\n <div\n [class]=\"settings.autocompleteClearWrapperClasses\"\n (click)=\"clear()\">\n <div [class]=\"settings.autocompleteClearIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.autocompleteClearIcon\" />\n </div>\n </div>\n } @else if (settings.autocompleteClearText && !!queryControl.value) {\n <span\n (click)=\"clear()\"\n [class]=\"settings.autocompleteClearTextClasses\">\n {{ settings.autocompleteClearText }}\n </span>\n }\n }\n</div>\n\n<!-- CDK Connected Overlay for suggestions dropdown -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\">\n <div\n [class]=\"settings.autocompleteDropdownClasses\"\n role=\"listbox\"\n aria-live=\"assertive\"\n id=\"autocomplete-list\">\n @for (option of suggestions$ | async; track trackByFn($index, option)) {\n <div\n [class]=\"[settings.autocompleteDropdownItemClasses, isSelected(option) ? settings.autocompleteDropdownItemSelectedClasses : '']\"\n tabindex=\"0\"\n (click)=\"selectOption(option)\"\n (keyup)=\"selectOption(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\">\n {{ displayWithFn(option) }}\n </div>\n }\n </div>\n</ng-template>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\n\n@Component({\n selector: 'checkbox-field',\n imports: [...controlDeps],\n templateUrl: './checkbox-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class CheckboxFieldComponent extends BaseInputComponent {}\n","<label [class]=\"settings.checkboxWrapperClasses\">\n <input\n [id]=\"control().name\"\n [name]=\"control().name\"\n [class]=\"settings.checkboxInputClasses\"\n type=\"checkbox\"\n [attr.aria-checked]=\"formControl.value ? 'true' : 'false'\"\n [formControlName]=\"control().name\" />\n <span\n [class]=\"settings.checkboxLabelTextClasses\"\n [innerHTML]=\"control().label\"></span>\n</label>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { FormControl } from '@angular/forms'\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\n\n@Component({\n selector: 'checkbox-group-field',\n imports: [...controlDeps],\n templateUrl: './checkbox-group-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class CheckboxGroupFieldComponent extends BaseInputComponent {\n override formControl = new FormControl(Array.isArray(this.value()) ? this.value() : [], this.validatorFn, this.asyncValidatorFn)\n\n isSelected(value: unknown) {\n const selectedValues = this.formControl.value as unknown[]\n return selectedValues.includes(value)\n }\n\n onCheckboxChange(event: Event, value: unknown) {\n const target = event.target as HTMLInputElement\n const isChecked = target.checked\n\n let selectedValues = this.formControl.value as unknown[]\n\n if (isChecked && !this.isSelected(value)) {\n selectedValues.push(value)\n } else {\n selectedValues = selectedValues.filter(item => item !== value)\n }\n\n this.formControl.setValue(selectedValues)\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div [class]=\"settings.checkboxGroupContainerClasses\">\n @for (option of options(); track option.value) {\n <label [class]=\"settings.checkboxGroupItemWrapperClasses\">\n <input\n [id]=\"control().name + '-' + option.value\"\n [name]=\"control().name + '-' + option.value\"\n [class]=\"settings.checkboxGroupItemInputClasses\"\n type=\"checkbox\"\n [checked]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled\"\n (change)=\"onCheckboxChange($event, option.value)\" />\n <span [class]=\"settings.checkboxGroupItemLabelClasses\">{{ option.label }}</span>\n </label>\n }\n</div>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core'\nimport { FormControl } from '@angular/forms'\n\nimport { BaseInputComponent, controlDeps } from '../base-input/base-input.component'\n\n@Component({\n selector: 'chips-list-field',\n imports: [...controlDeps],\n templateUrl: './chips-list-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChipsListFieldComponent extends BaseInputComponent {\n override formControl = new FormControl<string[]>(Array.isArray(this.value()) ? (this.value() as string[]) : [], this.validatorFn, this.asyncValidatorFn)\n\n inputValue = signal('')\n\n addChip() {\n const trimmed = this.inputValue().trim()\n if (!trimmed) {\n return\n }\n\n const currentChips = this.formControl.value || []\n this.formControl.setValue([...currentChips, trimmed])\n\n this.inputValue.set('')\n }\n\n removeChip(chipToRemove: string) {\n const currentChips = this.formControl.value || []\n const updatedChips = currentChips.filter(chip => chip !== chipToRemove)\n this.formControl.setValue(updatedChips)\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div [class]=\"settings.chipslistContainerClasses\">\n @for (chip of formControl.value; track $index) {\n <div [class]=\"settings.chipslistChipClasses\">\n {{ chip }}\n <button\n type=\"button\"\n [class]=\"settings.chipslistRemoveButtonClasses\"\n (click)=\"removeChip(chip)\">\n @if (settings.chipslistRemoveButtonIcon) {\n <div [class]=\"settings.chipslistRemoveButtonIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.chipslistRemoveButtonIcon\" />\n </div>\n }\n @if (settings.chipslistRemoveButtonLabel) {\n <span [class]=\"settings.chipslistRemoveButtonLabelClasses\">\n {{ settings.chipslistRemoveButtonLabel }}\n </span>\n }\n </button>\n </div>\n }\n</div>\n\n<div>\n <input\n [id]=\"control().name\"\n [class]=\"settings.chipslistInputClasses\"\n [name]=\"control().name\"\n [placeholder]=\"control().placeholder ?? ''\"\n [value]=\"inputValue()\"\n (input)=\"inputValue.set($any($event.target).value)\"\n (keydown.enter)=\"$event.preventDefault(); addChip()\"\n aria-label=\"Add new chip\" />\n <button\n type=\"button\"\n [class]=\"settings.chipslistAddButtonClasses\"\n aria-label=\"Add chip\"\n (click)=\"addChip()\">\n @if (settings.chipslistAddButtonIcon) {\n <div [class]=\"settings.chipslistAddButtonIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.chipslistAddButtonIcon\" />\n </div>\n }\n @if (settings.chipslistAddButtonLabel) {\n <span [class]=\"settings.chipslistAddButtonLabelClasses\">\n {{ settings.chipslistAddButtonLabel }}\n </span>\n }\n </button>\n</div>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core'\nimport { AsyncPipe } from '@angular/common'\nimport { NonNullableFormBuilder } from '@angular/forms'\n\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\nimport { ControlResolver } from '../../services'\nimport { isGroupControl } from '../../interfaces'\n\n@Component({\n selector: 'group-field',\n imports: [...controlDeps, AsyncPipe],\n templateUrl: './group-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class GroupFieldComponent extends BaseInputComponent {\n fb = inject(NonNullableFormBuilder)\n controlResolver = inject(ControlResolver)\n\n override formControl = this.fb.group({})\n controls = computed(() => {\n const ctrl = this.control()\n return isGroupControl(ctrl) ? ctrl.controls : []\n })\n\n groupValue = computed(() => this.value() as Record<string, unknown> | null)\n}\n","<fieldset\n [class]=\"settings.groupContainerClasses\"\n [formGroupName]=\"control().name\">\n @if (control().label) {\n <legend [class]=\"settings.groupLegendClasses\">{{ control().label }}</legend>\n }\n @for (control of controls(); track control.name) {\n <ng-container\n *activateControl=\"control\"\n [ngComponentOutlet]=\"controlResolver.resolve(control) | async\"\n [ngComponentOutletInjector]=\"control | controlInjector: groupValue()\" />\n }\n</fieldset>\n","import { ChangeDetectionStrategy, Component, computed, signal } from '@angular/core'\n\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\nimport { isInputControl } from '../../interfaces'\n\n@Component({\n selector: 'input-field',\n imports: [...controlDeps],\n templateUrl: './input-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class InputFieldComponent extends BaseInputComponent {\n isPasswordOpen = signal(false)\n\n eyeComponent = computed(() => (this.isPasswordOpen() ? this.settings.passwordEyeOpenIcon : this.settings.passwordEyeCloseIcon))\n\n inputType = computed(() => {\n const ctrl = this.control()\n if (!isInputControl(ctrl)) {\n return 'text'\n }\n\n const type = ctrl.type || 'text'\n if (type === 'password' && this.isPasswordOpen()) {\n return 'text'\n }\n\n return type\n })\n\n inputPlaceholder = computed(() => {\n const ctrl = this.control()\n return isInputControl(ctrl) ? (ctrl.placeholder ?? '') : ''\n })\n\n togglePassword() {\n this.isPasswordOpen.set(!this.isPasswordOpen())\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<input\n [class]=\"settings.inputClasses\"\n [id]=\"control().name\"\n [name]=\"control().name\"\n [type]=\"inputType()\"\n [formControlName]=\"control().name\"\n [placeholder]=\"inputPlaceholder()\"\n autocomplete=\"off\" />\n\n@if (control().type === 'password' && eyeComponent()) {\n <button\n type=\"button\"\n [class]=\"settings.passwordIconClasses\"\n (click)=\"togglePassword()\">\n <ng-container [ngComponentOutlet]=\"eyeComponent()!\" />\n </button>\n}\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, signal } from '@angular/core'\nimport { SelectionModel } from '@angular/cdk/collections'\nimport { OverlayModule } from '@angular/cdk/overlay'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { from, map, Observable, of, switchMap } from 'rxjs'\nimport { FormControl } from '@angular/forms'\n\nimport { BaseInputComponent, controlDeps } from '../base-input/base-input.component'\nimport { isMultiSelectControl, MultiSelectDropdownControl } from '../../interfaces'\n\n@Component({\n selector: 'multi-select-dropdown',\n imports: [...controlDeps, OverlayModule],\n templateUrl: './multi-select-dropdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(click)': 'open()'\n }\n})\nexport class MultiSelectDropdownComponent<T = Record<string, unknown>> extends BaseInputComponent {\n override formControl = new FormControl(Array.isArray(this.value()) ? this.value() : [], this.validatorFn, this.asyncValidatorFn)\n\n items = toSignal(this.getItems(), { initialValue: [] })\n\n isOpen = signal<boolean>(false)\n\n multipleMode = computed(() => {\n const ctrl = this.control()\n return isMultiSelectControl(ctrl) ? (ctrl.multiple ?? true) : true\n })\n\n selectedOptionsModel = new SelectionModel<T>(this.multipleMode())\n displayOptions = toSignal(this.selectedOptionsModel.changed.pipe(map(() => this.selectedOptionsModel.selected)), { initialValue: [] })\n\n constructor() {\n super()\n\n effect(() => {\n this.setSelectedItems(this.items())\n })\n\n effect(() => {\n const selected = this.displayOptions()\n this.valueHasChanged(selected)\n })\n }\n\n setSelectedItems(items: T[]): void {\n const formControlValue = this.formControl.value\n this.selectedOptionsModel.clear()\n\n if (Array.isArray(formControlValue)) {\n items.forEach(item => {\n if (formControlValue.some((val: string) => this.compareWithFn(item, val))) {\n this.selectedOptionsModel.select(item)\n }\n })\n } else {\n items.forEach(item => {\n if (this.compareWithFn(item, String(formControlValue))) {\n this.selectedOptionsModel.select(item)\n }\n })\n }\n }\n\n getItems(): Observable<T[]> {\n return this.parentForm.valueChanges.pipe(\n switchMap(() => {\n const control = this.control() as MultiSelectDropdownControl<T>\n const itemsFn = control.items\n\n if (!itemsFn) {\n return of([])\n }\n if (Array.isArray(itemsFn)) {\n return of(itemsFn)\n }\n\n const result = itemsFn(this.parentForm)\n\n if (result instanceof Promise) {\n return from(result)\n }\n if (result instanceof Observable) {\n return result\n }\n if (Array.isArray(result)) {\n return of(result)\n }\n return of([])\n })\n )\n }\n\n displayWithFn(item: T): string {\n const control = this.control() as MultiSelectDropdownControl<T>\n\n if (control.itemLabel) {\n return String((item as Record<string, unknown>)[control.itemLabel] ?? '')\n } else {\n return String(item)\n }\n }\n\n compareWithFn(item: T, value: string) {\n const control = this.control() as MultiSelectDropdownControl<T>\n\n if (control.itemValue) {\n const itemValue = (item as Record<string, unknown>)[control.itemValue]\n return itemValue === value\n } else {\n return (item as string) === value\n }\n }\n\n valueHasChanged(items: T[]) {\n const control = this.control() as MultiSelectDropdownControl<T>\n\n const isMultiple = control.multiple !== false\n\n const values = items.map(item => {\n if (!control.itemValue) {\n return item\n }\n return (item as Record<string, unknown>)[control.itemValue]\n })\n\n if (isMultiple) {\n this.formControl.setValue(values, { emitEvent: false })\n } else {\n this.formControl.setValue(values.at(0) ?? null, { emitEvent: false })\n }\n }\n\n open() {\n this.isOpen.set(true)\n }\n\n close() {\n this.isOpen.set(false)\n }\n\n trackByFn(index: number, item: T): unknown {\n const ctrl = this.control() as MultiSelectDropdownControl<T>\n return ctrl.itemValue ? (item as Record<string, unknown>)[ctrl.itemValue] : index\n }\n\n toggleSelection(option: T) {\n this.selectedOptionsModel.toggle(option)\n }\n\n deselectOption(event: MouseEvent, option: T) {\n event.stopPropagation()\n this.selectedOptionsModel.deselect(option)\n }\n}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\">\n <div>\n @if (displayOptions().length === 0) {\n <span>{{ settings.multiSelectEmptyText }}</span>\n } @else {\n <div [class]=\"settings.multiSelectDisplayedOptionsClasses\">\n @for (option of displayOptions(); track trackByFn($index, option)) {\n <div [class]=\"settings.multiSelectDisplayedOptionClasses\">\n <span>{{ displayWithFn(option) }}</span>\n <button\n type=\"button\"\n [class]=\"settings.multiSelectControlRemoveButtonClasses\"\n (click)=\"deselectOption($event, option)\">\n @if (settings.multiSelectControlRemoveButtonIcon) {\n <div [class]=\"settings.multiSelectControlRemoveButtonIconClasses\">\n <ng-container [ngComponentOutlet]=\"settings.multiSelectControlRemoveButtonIcon\" />\n </div>\n }\n @if (settings.multiSelectControlRemoveButtonLabel) {\n {{ settings.multiSelectControlRemoveButtonLabel }}\n }\n </button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\">\n <div [class]=\"settings.multiselectDropdownClasses\">\n @for (option of items(); track trackByFn($index, option)) {\n <div [class]=\"[settings.multiselectDropdownItemClasses, selectedOptionsModel.isSelected(option) ? settings.multiselectDropdownItemSelectedClasses : '']\">\n <label class=\"flex items-center gap-2 cursor-pointer\">\n <input\n [id]=\"control().name + '-option-' + $index\"\n [name]=\"control().name + '-option-' + $index\"\n type=\"checkbox\"\n class=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n [checked]=\"selectedOptionsModel.isSelected(option)\"\n (change)=\"toggleSelection(option)\"\n [attr.aria-checked]=\"selectedOptionsModel.isSelected(option) ? 'true' : 'false'\"\n [attr.aria-selected]=\"selectedOptionsModel.isSelected(option) ? 'true' : 'false'\"\n role=\"option\" />\n {{ displayWithFn(option) }}\n </label>\n </div>\n }\n </div>\n</ng-template>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\n\n@Component({\n selector: 'radio-field',\n imports: [...controlDeps],\n templateUrl: './radio-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class RadioFieldComponent extends BaseInputComponent {}\n","<label\n [class]=\"settings.labelClasses\"\n [for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<div [class]=\"settings.radioGroupContainerClasses\">\n @for (option of options(); track option.value) {\n <label [class]=\"settings.radioItemWrapperClasses\">\n <input\n [id]=\"control().name + '-' + option.value\"\n [name]=\"control().name\"\n [class]=\"settings.radioItemInputClasses\"\n type=\"radio\"\n [formControlName]=\"control().name\"\n [value]=\"option.value\"\n [attr.aria-checked]=\"formControl.value === option.value ? 'true' : 'false'\" />\n <span [class]=\"settings.radioItemLabelClasses\">{{ option.label }}</span>\n </label>\n }\n</div>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { BaseInputComponent, controlDeps, controlProvider } from '../base-input/base-input.component'\n\n@Component({\n selector: 'select-field',\n imports: [...controlDeps],\n templateUrl: './select-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [controlProvider]\n})\nexport class SelectFieldComponent extends BaseInputComponent {}\n","<label\n [class]=\"settings.labelClasses\"\n [attr.for]=\"control().name\">\n {{ control().label }}\n</label>\n\n<select\n [class]=\"settings.selectClasses || settings.inputClasses\"\n [id]=\"control().name\"\n [name]=\"control().name\"\n [formControlName]=\"control().name\">\n @for (option of options(); track option.value) {\n <option\n [class]=\"settings.selectOptionClasses\"\n [value]=\"option.value\"\n [selected]=\"option.selected\"\n [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n</select>\n\n<div [class]=\"settings.validationFeedbackClasses\">\n <ng-container\n validatorMessage\n [helpMessage]=\"control().helpText\"\n [controlName]=\"control().name\" />\n</div>\n","/*\n * Public API Surface of ngx-dynamic-forms\n */\n\nexport * from './lib/interfaces'\nexport * from './lib/utils'\nexport * from './lib/services'\nexport * from './lib/components'\nexport * from './lib/directives'\nexport * from './lib/pipes'\nexport * from './lib/controls'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.HelpTextDirective","i3","i4.ActivateControlDirective","i5.ControlInjector","startWith","i3.ValidatorMessageDirective","i2","i3.ActivateControlDirective","i4.ControlInjector","map","switchMap"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -349,7 +349,7 @@ declare class ControlInjector implements PipeTransform {
|
|
|
349
349
|
}
|
|
350
350
|
|
|
351
351
|
declare const controlProvider: StaticProvider;
|
|
352
|
-
declare const controlDeps: (typeof
|
|
352
|
+
declare const controlDeps: (typeof ActivateControlDirective | typeof ControlInjector | typeof ReactiveFormsModule | typeof NgComponentOutlet | typeof HelpTextDirective | typeof ValidatorMessageDirective)[];
|
|
353
353
|
declare class BaseInputComponent implements OnInit {
|
|
354
354
|
settings: superlikers_dynamic_forms.Settings;
|
|
355
355
|
protected hostClass: i0.WritableSignal<string>;
|