@ng-forge/dynamic-forms-material 0.1.0 → 0.1.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-forge-dynamic-forms-material.mjs","sources":["../../../../packages/dynamic-forms-material/src/lib/models/material-config.token.ts","../../../../packages/dynamic-forms-material/src/lib/fields/checkbox/mat-checkbox.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/datepicker/mat-datepicker.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/input/mat-input.component.ts","../../../../packages/dynamic-forms-material/src/lib/directives/value-in-array.pipe.ts","../../../../packages/dynamic-forms-material/src/lib/utils/is-equal.ts","../../../../packages/dynamic-forms-material/src/lib/fields/multi-checkbox/mat-multi-checkbox.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/radio/mat-radio.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/select/mat-select.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/slider/mat-slider.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/button/mat-button.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/button/index.ts","../../../../packages/dynamic-forms-material/src/lib/fields/textarea/mat-textarea.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/toggle/mat-toggle.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/index.ts","../../../../packages/dynamic-forms-material/src/lib/types/types.ts","../../../../packages/dynamic-forms-material/src/lib/fields/button/mat-button.mapper.ts","../../../../packages/dynamic-forms-material/src/lib/fields/button/mat-specific-button.mapper.ts","../../../../packages/dynamic-forms-material/src/lib/config/material-field-config.ts","../../../../packages/dynamic-forms-material/src/lib/types/registry-augmentation.ts","../../../../packages/dynamic-forms-material/src/lib/providers/material-providers.ts","../../../../packages/dynamic-forms-material/src/lib/index.ts","../../../../packages/dynamic-forms-material/src/ng-forge-dynamic-forms-material.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MaterialConfig } from './material-config';\n\n/**\n * Injection token for Material Design form configuration.\n * Use this to provide global configuration for Material form fields.\n *\n * @example\n * ```typescript\n * import { provideDynamicForm } from '@ng-forge/dynamic-forms';\n * import { withMaterialFields } from '@ng-forge/dynamic-forms-material';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withMaterialFields({\n * appearance: 'fill',\n * subscriptSizing: 'fixed'\n * })\n * )\n * ]\n * };\n * ```\n */\nexport const MATERIAL_CONFIG = new InjectionToken<MaterialConfig>('MATERIAL_CONFIG');\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatCheckboxComponent, MatCheckboxProps } from './mat-checkbox.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\n\n@Component({\n selector: 'df-mat-checkbox',\n imports: [MatCheckbox, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-checkbox\n [field]=\"f\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n [indeterminate]=\"props()?.indeterminate || false\"\n [color]=\"props()?.color || 'primary'\"\n [disableRipple]=\"effectiveDisableRipple()\"\n [required]=\"!!f().required?.()\"\n [aria-describedby]=\"ariaDescribedBy\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.hidden]=\"f().hidden() || null\"\n >\n {{ label() | dynamicText | async }}\n </mat-checkbox>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\" [attr.hidden]=\"f().hidden() || null\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\" [attr.hidden]=\"f().hidden() || null\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatCheckboxFieldComponent implements MatCheckboxComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n /**\n * Host element reference for DOM queries.\n * Used to find the internal checkbox input for accessibility workarounds.\n */\n private readonly hostEl = inject(ElementRef<HTMLElement>);\n\n // Properties\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<MatCheckboxProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveDisableRipple = computed(() => this.props()?.disableRipple ?? this.materialConfig?.disableRipple ?? false);\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.join(' ');\n });\n\n /**\n * Workaround: Angular Material's MatCheckbox does NOT set aria-required on its internal\n * input element when [required] is passed, even though it sets the native required attribute.\n * This effect imperatively sets/removes aria-required on the internal input.\n *\n * Bug: MatCheckbox sets `required` attribute but not `aria-required` for screen readers.\n * @see https://github.com/angular/components/issues/XXXXX (TODO: file issue)\n */\n private readonly syncAriaRequiredToDom = explicitEffect([this.ariaRequired], ([isRequired]) => {\n const inputEl = this.hostEl.nativeElement.querySelector('input[type=\"checkbox\"]');\n if (inputEl) {\n if (isRequired) {\n inputEl.setAttribute('aria-required', 'true');\n } else {\n inputEl.removeAttribute('aria-required');\n }\n }\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatHint, MatInput } from '@angular/material/input';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatDatepickerComponent, MatDatepickerProps } from './mat-datepicker.type';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\n\n@Component({\n selector: 'df-mat-datepicker',\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n MatHint,\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatSuffix,\n Field,\n MatError,\n DynamicTextPipe,\n AsyncPipe,\n ],\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-form-field [appearance]=\"effectiveAppearance()\" [subscriptSizing]=\"effectiveSubscriptSizing()\" [class]=\"className() || ''\">\n @if (label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n <input\n matInput\n [matDatepicker]=\"picker\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n\n <mat-datepicker-toggle matIconSuffix [for]=\"$any(picker)\" />\n <mat-datepicker #picker [startAt]=\"startAt()\" [startView]=\"props()?.startView || 'month'\" [touchUi]=\"props()?.touchUi ?? false\" />\n\n @if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n providers: [provideNativeDateAdapter()],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatDatepickerFieldComponent implements MatDatepickerComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n readonly startAt = input<Date | null>(null);\n readonly props = input<MatDatepickerProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveAppearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n\n readonly effectiveSubscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatHint, MatInput } from '@angular/material/input';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatInputComponent, MatInputProps } from './mat-input.type';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\n\n@Component({\n selector: 'df-mat-input',\n imports: [MatFormField, MatLabel, MatInput, MatHint, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-form-field [appearance]=\"effectiveAppearance()\" [subscriptSizing]=\"effectiveSubscriptSizing()\">\n @if (label()) {\n <mat-label>{{ label() | dynamicText | async }}</mat-label>\n }\n @switch (props()?.type ?? 'text') {\n @case ('email') {\n <input\n #inputRef\n matInput\n type=\"email\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @case ('password') {\n <input\n #inputRef\n matInput\n type=\"password\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @case ('number') {\n <input\n #inputRef\n matInput\n type=\"number\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @case ('tel') {\n <input\n #inputRef\n matInput\n type=\"tel\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @case ('url') {\n <input\n #inputRef\n matInput\n type=\"url\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @default {\n <input\n #inputRef\n matInput\n type=\"text\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n }\n @if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n})\nexport default class MatInputFieldComponent implements MatInputComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n /**\n * Reference to the native input element.\n * Used to imperatively sync the readonly attribute since Angular Signal Forms'\n * [field] directive doesn't sync FieldState.readonly() to the DOM.\n */\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputRef');\n\n /**\n * Computed signal that extracts the readonly state from the field.\n * Used by the effect to reactively sync the readonly attribute to the DOM.\n */\n private readonly isReadonly = computed(() => this.field()().readonly());\n\n /**\n * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly\n * attribute to the DOM, even though FieldState.readonly() returns the correct value.\n * This effect imperatively sets/removes the readonly attribute on the native input\n * element whenever the readonly state changes.\n *\n * Note: We cannot use [readonly] or [attr.readonly] bindings because Angular throws\n * NG8022: \"Binding to '[readonly]' is not allowed on nodes using the '[field]' directive\"\n *\n * @see https://github.com/angular/angular/issues/65897\n */\n private readonly syncReadonlyToDom = explicitEffect([this.inputRef, this.isReadonly], ([inputRef, isReadonly]) => {\n if (inputRef?.nativeElement) {\n if (isReadonly) {\n inputRef.nativeElement.setAttribute('readonly', '');\n } else {\n inputRef.nativeElement.removeAttribute('readonly');\n }\n }\n });\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<MatInputProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveAppearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n\n readonly effectiveSubscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n pure: true,\n name: 'inArray',\n})\nexport class ValueInArrayPipe implements PipeTransform {\n transform<T>(element: T, array: T[] | undefined): boolean {\n return array?.includes(element) ?? false;\n }\n}\n","/**\n * Performs a deep equality comparison between two values\n */\nexport function isEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== typeof b) return false;\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((item, index) => isEqual(item, b[index]));\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((key) => keysB.includes(key) && isEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]));\n }\n\n return Object.is(a, b);\n}\n","import { ChangeDetectionStrategy, Component, computed, input, linkedSignal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport {\n createResolvedErrorsSignal,\n DynamicText,\n DynamicTextPipe,\n FieldOption,\n shouldShowErrors,\n ValidationMessages,\n ValueType,\n} from '@ng-forge/dynamic-forms';\nimport { ValueInArrayPipe } from '../../directives/value-in-array.pipe';\nimport { isEqual } from '../../utils/is-equal';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { MatMultiCheckboxComponent, MatMultiCheckboxProps } from './mat-multi-checkbox.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-multi-checkbox',\n imports: [MatCheckbox, ValueInArrayPipe, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n @if (label(); as label) {\n <div class=\"checkbox-group-label\">{{ label | dynamicText | async }}</div>\n }\n\n <div\n class=\"checkbox-group\"\n role=\"group\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n >\n @for (option of options(); track option.value) {\n <mat-checkbox\n [checked]=\"option | inArray: valueViewModel()\"\n [disabled]=\"f().disabled() || option.disabled\"\n [color]=\"props()?.color || 'primary'\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n (change)=\"onCheckboxChange(option, $event.checked)\"\n >\n {{ option.label | dynamicText | async }}\n </mat-checkbox>\n }\n </div>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className() || \"\"',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n providers: [ValueInArrayPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatMultiCheckboxFieldComponent<T extends ValueType> implements MatMultiCheckboxComponent<T> {\n readonly field = input.required<FieldTree<T[]>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<T>[]>([]);\n readonly props = input<MatMultiCheckboxProps>();\n\n valueViewModel = linkedSignal<FieldOption<T>[]>(\n () => {\n const currentValues = this.field()().value();\n return this.options().filter((option) => currentValues.includes(option.value));\n },\n { equal: isEqual },\n );\n\n constructor() {\n explicitEffect([this.valueViewModel], ([selectedOptions]) => {\n const selectedValues = selectedOptions.map((option) => option.value);\n\n if (!isEqual(selectedValues, this.field()().value())) {\n this.field()().value.set(selectedValues);\n }\n });\n\n explicitEffect([this.options], ([options]) => {\n const values = options.map((option) => option.value);\n const uniqueValues = new Set(values);\n\n if (values.length !== uniqueValues.size) {\n const duplicates = values.filter((value, index) => values.indexOf(value) !== index);\n throw new Error(`Duplicate option values detected in mat-multi-checkbox: ${duplicates.join(', ')}`);\n }\n });\n }\n\n onCheckboxChange(option: FieldOption<T>, checked: boolean): void {\n this.valueViewModel.update((currentOptions) => {\n if (checked) {\n return currentOptions.some((opt) => opt.value === option.value) ? currentOptions : [...currentOptions, option];\n } else {\n return currentOptions.filter((opt) => opt.value !== option.value);\n }\n });\n }\n\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatRadioButton, MatRadioGroup } from '@angular/material/radio';\nimport {\n createResolvedErrorsSignal,\n DynamicText,\n DynamicTextPipe,\n FieldOption,\n shouldShowErrors,\n ValidationMessages,\n} from '@ng-forge/dynamic-forms';\nimport { MatRadioComponent, MatRadioProps } from './mat-radio.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-radio',\n imports: [MatRadioGroup, MatRadioButton, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n @if (label()) {\n <div class=\"radio-label\">{{ label() | dynamicText | async }}</div>\n }\n\n <mat-radio-group\n [field]=\"f\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n >\n @for (option of options(); track option.value) {\n <mat-radio-button\n [value]=\"option.value\"\n [disabled]=\"option.disabled || false\"\n [color]=\"props()?.color || 'primary'\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n >\n {{ option.label | dynamicText | async }}\n </mat-radio-button>\n }\n </mat-radio-group>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className() || \"\"',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatRadioFieldComponent<T> implements MatRadioComponent<T> {\n readonly field = input.required<FieldTree<T>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<T>[]>([]);\n readonly props = input<MatRadioProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatOption, MatSelect } from '@angular/material/select';\nimport { MatHint } from '@angular/material/input';\nimport {\n createResolvedErrorsSignal,\n DynamicText,\n DynamicTextPipe,\n FieldOption,\n shouldShowErrors,\n ValidationMessages,\n} from '@ng-forge/dynamic-forms';\nimport { MatSelectComponent, MatSelectProps } from './mat-select.type';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\n\n@Component({\n selector: 'df-mat-select',\n imports: [MatFormField, MatLabel, MatSelect, MatOption, MatHint, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-form-field [appearance]=\"effectiveAppearance()\" [subscriptSizing]=\"effectiveSubscriptSizing()\">\n @if (label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n <mat-select\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [multiple]=\"props()?.multiple || false\"\n [compareWith]=\"props()?.compareWith || defaultCompare\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n >\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled || false\">\n {{ option.label | dynamicText | async }}\n </mat-option>\n }\n </mat-select>\n\n @if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n})\nexport default class MatSelectFieldComponent<T> implements MatSelectComponent<T> {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<T>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<T>[]>([]);\n readonly props = input<MatSelectProps<T>>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveAppearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n\n readonly effectiveSubscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n defaultCompare = Object.is;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatSlider, MatSliderThumb } from '@angular/material/slider';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatSliderComponent, MatSliderProps } from './mat-slider.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-slider',\n imports: [MatSlider, MatSliderThumb, MatError, DynamicTextPipe, AsyncPipe, Field],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n @if (label(); as label) {\n <div class=\"slider-label\">{{ label | dynamicText | async }}</div>\n }\n\n <mat-slider\n [min]=\"f().min?.() ?? 0\"\n [max]=\"f().max?.() ?? 100\"\n [step]=\"props()?.step ?? 1\"\n [discrete]=\"props()?.thumbLabel || props()?.showThumbLabel\"\n [showTickMarks]=\"props()?.tickInterval !== undefined\"\n [color]=\"props()?.color || 'primary'\"\n class=\"slider-container\"\n >\n <input\n matSliderThumb\n [field]=\"f\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n </mat-slider>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .slider-container {\n width: 100%;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatSliderFieldComponent implements MatSliderComponent {\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly props = input<MatSliderProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport {\n ARRAY_CONTEXT,\n ArrayItemContext,\n DynamicText,\n DynamicTextPipe,\n EventArgs,\n EventBus,\n FormEvent,\n FormEventConstructor,\n resolveTokens,\n} from '@ng-forge/dynamic-forms';\nimport { MatButtonComponent, MatButtonProps } from './mat-button.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-button',\n imports: [MatButton, DynamicTextPipe, AsyncPipe],\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n },\n template: `\n <button\n mat-raised-button\n [type]=\"buttonType()\"\n [color]=\"props()?.color || 'primary'\"\n [disabled]=\"disabled()\"\n [attr.data-testid]=\"buttonTestId()\"\n (click)=\"onClick()\"\n >\n {{ label() | dynamicText | async }}\n </button>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n button {\n min-width: fit-content;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatButtonFieldComponent<TEvent extends FormEvent> implements MatButtonComponent<TEvent> {\n private readonly eventBus = inject(EventBus);\n private readonly arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n readonly key = input.required<string>();\n readonly label = input.required<DynamicText>();\n readonly disabled = input<boolean>(false);\n readonly hidden = input<boolean>(false);\n\n readonly tabIndex = input<number>();\n readonly className = input<string>('');\n\n /** Event to dispatch on click. Optional for submit buttons (native form submit handles it). */\n readonly event = input<FormEventConstructor<TEvent>>();\n readonly eventArgs = input<EventArgs>();\n readonly props = input<MatButtonProps>();\n\n readonly eventContext = input<ArrayItemContext>();\n\n /** Resolved button type - defaults to 'button' if not specified in props */\n readonly buttonType = computed(() => this.props()?.type ?? 'button');\n\n readonly buttonTestId = computed(() => `${this.buttonType()}-${this.key()}`);\n\n /**\n * Handle button click.\n * - For submit buttons (type=\"submit\"): do nothing, native form submit handles it\n * - For other buttons: dispatch the configured event via EventBus\n */\n onClick(): void {\n // Native submit buttons let the form handle submission\n if (this.buttonType() === 'submit') {\n return;\n }\n\n // Other buttons dispatch their event (if configured)\n const event = this.event();\n if (event) {\n this.dispatchEvent(event);\n }\n }\n\n private dispatchEvent(event: FormEventConstructor<TEvent>): void {\n const args = this.eventArgs();\n\n if (args && args.length > 0) {\n // Build context from injected ARRAY_CONTEXT (with linkedSignal index) or fallback to eventContext\n const context: ArrayItemContext = this.arrayContext\n ? {\n key: this.key(),\n // Read signal to get current index (automatically updates via linkedSignal)\n index: this.arrayContext.index(),\n arrayKey: this.arrayContext.arrayKey,\n formValue: this.arrayContext.formValue,\n }\n : this.eventContext() || { key: this.key() };\n\n // Resolve tokens in event args using the provided context\n const resolvedArgs = resolveTokens(args, context);\n\n // Dispatch event with resolved args\n this.eventBus.dispatch(event, ...resolvedArgs);\n } else {\n // No args, dispatch event without arguments\n this.eventBus.dispatch(event);\n }\n }\n}\n","// Public API - types for type safety\nexport type {\n MatButtonProps,\n MatButtonField,\n MatSubmitButtonField,\n MatNextButtonField,\n MatPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n} from './mat-button.type';\n\n// Public API - component\nexport { default as MatButtonFieldComponent } from './mat-button.component';\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatHint, MatInput } from '@angular/material/input';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatTextareaComponent, MatTextareaProps } from './mat-textarea.type';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\n\n@Component({\n selector: 'df-mat-textarea',\n imports: [MatFormField, MatLabel, MatInput, MatHint, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-form-field [appearance]=\"effectiveAppearance()\" [subscriptSizing]=\"effectiveSubscriptSizing()\">\n @if (label()) {\n <mat-label>{{ label() | dynamicText | async }}</mat-label>\n }\n\n <textarea\n #textareaRef\n matInput\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [rows]=\"props()?.rows || 4\"\n [cols]=\"props()?.cols\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [style.resize]=\"props()?.resize || 'vertical'\"\n ></textarea>\n\n @if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n})\nexport default class MatTextareaFieldComponent implements MatTextareaComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n /**\n * Reference to the native textarea element.\n * Used to imperatively sync the readonly attribute since Angular Signal Forms'\n * [field] directive doesn't sync FieldState.readonly() to the DOM.\n */\n private readonly textareaRef = viewChild<ElementRef<HTMLTextAreaElement>>('textareaRef');\n\n /**\n * Computed signal that extracts the readonly state from the field.\n * Used by the effect to reactively sync the readonly attribute to the DOM.\n */\n private readonly isReadonly = computed(() => this.field()().readonly());\n\n /**\n * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly\n * attribute to the DOM, even though FieldState.readonly() returns the correct value.\n * This effect imperatively sets/removes the readonly attribute on the native textarea\n * element whenever the readonly state changes.\n *\n * Note: We cannot use [readonly] or [attr.readonly] bindings because Angular throws\n * NG8022: \"Binding to '[readonly]' is not allowed on nodes using the '[field]' directive\"\n *\n * @see https://github.com/angular/angular/issues/65897\n */\n private readonly syncReadonlyToDom = explicitEffect([this.textareaRef, this.isReadonly], ([textareaRef, isReadonly]) => {\n if (textareaRef?.nativeElement) {\n if (isReadonly) {\n textareaRef.nativeElement.setAttribute('readonly', '');\n } else {\n textareaRef.nativeElement.removeAttribute('readonly');\n }\n }\n });\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<MatTextareaProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveAppearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n readonly effectiveSubscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\n\nimport { MatToggleComponent, MatToggleProps } from './mat-toggle.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\n\n@Component({\n selector: 'df-mat-toggle',\n imports: [MatSlideToggle, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-slide-toggle\n [field]=\"f\"\n [color]=\"props()?.color || 'primary'\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n [hideIcon]=\"props()?.hideIcon || false\"\n [disableRipple]=\"effectiveDisableRipple()\"\n [required]=\"!!f().required?.()\"\n [aria-describedby]=\"ariaDescribedBy\"\n [attr.tabindex]=\"tabIndex()\"\n class=\"toggle-container\"\n >\n {{ label() | dynamicText | async }}\n </mat-slide-toggle>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatToggleFieldComponent implements MatToggleComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly props = input<MatToggleProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveDisableRipple = computed(() => this.props()?.disableRipple ?? this.materialConfig?.disableRipple ?? false);\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.join(' ');\n });\n}\n","// Public exports for material field components and types\n\nexport { MatCheckboxFieldComponent } from './checkbox';\nexport type { MatCheckboxProps, MatCheckboxField, MatCheckboxComponent } from './checkbox';\n\nexport { MatDatepickerFieldComponent } from './datepicker';\nexport type { MatDatepickerProps, MatDatepickerField, MatDatepickerComponent } from './datepicker';\n\nexport { MatInputFieldComponent } from './input';\nexport type { MatInputProps, MatInputField, MatInputComponent } from './input';\n\nexport { MatMultiCheckboxFieldComponent } from './multi-checkbox';\nexport type { MatMultiCheckboxProps, MatMultiCheckboxField, MatMultiCheckboxComponent } from './multi-checkbox';\n\nexport { MatRadioFieldComponent } from './radio';\nexport type { MatRadioProps, MatRadioField, MatRadioComponent } from './radio';\n\nexport { MatSelectFieldComponent } from './select';\nexport type { MatSelectProps, MatSelectField, MatSelectComponent } from './select';\n\nexport { MatSliderFieldComponent } from './slider';\nexport type { MatSliderProps, MatSliderField, MatSliderComponent } from './slider';\n\nexport { MatButtonFieldComponent } from './button';\nexport type {\n MatButtonProps,\n MatButtonField,\n MatSubmitButtonField,\n MatNextButtonField,\n MatPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n} from './button';\n\nexport { MatTextareaFieldComponent } from './textarea';\nexport type { MatTextareaProps, MatTextareaField, MatTextareaComponent } from './textarea';\n\nexport { MatToggleFieldComponent } from './toggle';\nexport type { MatToggleProps, MatToggleField, MatToggleComponent } from './toggle';\n","/**\n * Material Design field type constants\n * Based on available field components in the /fields folder\n */\nexport const MatField = {\n Input: 'input',\n Select: 'select',\n Checkbox: 'checkbox',\n Button: 'button',\n Submit: 'submit',\n Next: 'next',\n Previous: 'previous',\n AddArrayItem: 'addArrayItem',\n RemoveArrayItem: 'removeArrayItem',\n Textarea: 'textarea',\n Radio: 'radio',\n MultiCheckbox: 'multi-checkbox',\n Datepicker: 'datepicker',\n Slider: 'slider',\n Toggle: 'toggle',\n} as const;\n\nexport type MatFieldType = (typeof MatField)[keyof typeof MatField];\n","import { computed, Signal } from '@angular/core';\nimport { buildBaseInputs, FieldDef } from '@ng-forge/dynamic-forms';\n\n/**\n * Generic button mapper for custom events or basic buttons.\n * For specific button types (submit, next, prev, add/remove array items),\n * use the dedicated field types and their specific mappers.\n *\n * @param fieldDef The button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function buttonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n return computed(() => {\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n };\n\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n // Add event binding for button events\n if ('event' in fieldDef && fieldDef.event !== undefined) {\n inputs['event'] = fieldDef.event;\n }\n\n // Add eventArgs binding if provided\n if ('eventArgs' in fieldDef && fieldDef.eventArgs !== undefined) {\n inputs['eventArgs'] = fieldDef.eventArgs;\n }\n\n return inputs;\n });\n}\n","import { computed, inject, isSignal, Signal } from '@angular/core';\nimport {\n AddArrayItemEvent,\n ARRAY_CONTEXT,\n buildBaseInputs,\n FIELD_SIGNAL_CONTEXT,\n FieldDef,\n FieldWithValidation,\n NextPageEvent,\n PreviousPageEvent,\n RemoveArrayItemEvent,\n resolveNextButtonDisabled,\n resolveSubmitButtonDisabled,\n} from '@ng-forge/dynamic-forms';\nimport { AddArrayItemButtonField, RemoveArrayItemButtonField } from './mat-button.type';\n\n/**\n * Mapper for submit button - configures native form submission via type=\"submit\"\n *\n * Unlike other buttons, submit buttons don't dispatch events directly.\n * Instead, they trigger native form submission which the form component\n * intercepts and dispatches to the EventBus.\n *\n * Disabled state is resolved using the button-logic-resolver which considers:\n * 1. Explicit `disabled: true` on the field definition\n * 2. Field-level `logic` array (if present, overrides form-level defaults)\n * 3. Form-level `options.submitButton` defaults (disableWhenInvalid, disableWhileSubmitting)\n *\n * @param fieldDef The submit button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function submitButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n // Inject field signal context to access form state and options\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Use button-logic-resolver to compute disabled state\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n const disabledSignal = resolveSubmitButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: fieldSignalContext.formOptions,\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n });\n\n // Return computed signal - evaluates disabledSignal inside for reactivity\n return computed(() => {\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n // No event - native form submit handles it via form's onNativeSubmit\n // Set type=\"submit\" to trigger native form submission\n props: { ...(fieldDef.props as Record<string, unknown>), type: 'submit' },\n // Evaluate the signal inside the computed - component receives plain boolean\n disabled: disabledSignal(),\n };\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for next page button - preconfigures NextPageEvent\n *\n * Disabled state is resolved using the button-logic-resolver which considers:\n * 1. Explicit `disabled: true` on the field definition\n * 2. Field-level `logic` array (if present, overrides form-level defaults)\n * 3. Form-level `options.nextButton` defaults (disableWhenPageInvalid, disableWhileSubmitting)\n *\n * @param fieldDef The next button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function nextButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n // Inject field signal context to access form state and options\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Use button-logic-resolver to compute disabled state\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n const disabledSignal = resolveNextButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: fieldSignalContext.formOptions,\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n currentPageValid: fieldSignalContext.currentPageValid,\n });\n\n // Return computed signal - evaluates disabledSignal inside for reactivity\n return computed(() => {\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: NextPageEvent,\n // Evaluate the signal inside the computed - component receives plain boolean\n disabled: disabledSignal(),\n };\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for previous page button - preconfigures PreviousPageEvent\n * Note: Does not auto-disable based on validation. Users can explicitly disable if needed.\n *\n * @param fieldDef The previous button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function previousButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n return computed(() => {\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: PreviousPageEvent,\n };\n\n // Add disabled binding only if explicitly set by user\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for add array item button - preconfigures AddArrayItemEvent with array context.\n *\n * Supports two modes:\n * 1. Inside array template: Uses ARRAY_CONTEXT to determine target array\n * 2. Outside array: Uses `arrayKey` property from field definition\n *\n * @param fieldDef The add array item button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function addArrayItemButtonFieldMapper(fieldDef: AddArrayItemButtonField): Signal<Record<string, unknown>> {\n // Try to get array context (available when inside an array)\n // Use optional injection so it doesn't fail when outside an array\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n // Determine the target array key\n // Priority: explicit arrayKey from fieldDef > arrayKey from context\n const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;\n\n if (!targetArrayKey) {\n console.warn(\n `[Dynamic Forms] addArrayItem button \"${fieldDef.key}\" has no array context. ` +\n 'Either place it inside an array field, or provide an explicit arrayKey property.',\n );\n }\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Set default eventArgs for AddArrayItemEvent (arrayKey)\n // User can override by providing eventArgs in field definition\n const defaultEventArgs = ['$arrayKey'];\n const eventArgs = 'eventArgs' in fieldDef && fieldDef.eventArgs !== undefined ? fieldDef.eventArgs : defaultEventArgs;\n\n return computed(() => {\n // Read signal value if index is a signal (supports differential updates)\n const getIndex = () => {\n if (!arrayContext) return -1;\n return isSignal(arrayContext.index) ? arrayContext.index() : arrayContext.index;\n };\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: AddArrayItemEvent,\n eventArgs,\n eventContext: {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: targetArrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n },\n };\n\n // Add disabled binding only if explicitly set by user\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for remove array item button - preconfigures RemoveArrayItemEvent with array context.\n *\n * Supports two modes:\n * 1. Inside array template: Uses ARRAY_CONTEXT to determine target array and removes item at current index\n * 2. Outside array: Uses `arrayKey` property from field definition, removes last item by default\n *\n * @param fieldDef The remove array item button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function removeArrayItemButtonFieldMapper(fieldDef: RemoveArrayItemButtonField): Signal<Record<string, unknown>> {\n // Try to get array context (available when inside an array)\n // Use optional injection so it doesn't fail when outside an array\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n // Determine the target array key\n // Priority: explicit arrayKey from fieldDef > arrayKey from context\n const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;\n\n if (!targetArrayKey) {\n console.warn(\n `[Dynamic Forms] removeArrayItem button \"${fieldDef.key}\" has no array context. ` +\n 'Either place it inside an array field, or provide an explicit arrayKey property.',\n );\n }\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Set default eventArgs for RemoveArrayItemEvent (arrayKey, index if inside array)\n // When outside array, only pass arrayKey (removes last by default)\n // User can override by providing eventArgs in field definition\n const defaultEventArgs = arrayContext ? ['$arrayKey', '$index'] : ['$arrayKey'];\n const eventArgs = 'eventArgs' in fieldDef && fieldDef.eventArgs !== undefined ? fieldDef.eventArgs : defaultEventArgs;\n\n return computed(() => {\n // Read signal value if index is a signal (supports differential updates)\n const getIndex = () => {\n if (!arrayContext) return -1; // -1 means remove last (no specific index)\n return isSignal(arrayContext.index) ? arrayContext.index() : arrayContext.index;\n };\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: RemoveArrayItemEvent,\n eventArgs,\n eventContext: {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: targetArrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n },\n };\n\n // Add disabled binding only if explicitly set by user\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n","import {\n checkboxFieldMapper,\n datepickerFieldMapper,\n FieldTypeDefinition,\n optionsFieldMapper,\n valueFieldMapper,\n} from '@ng-forge/dynamic-forms';\nimport { MatField } from '../types/types';\nimport { buttonFieldMapper } from '../fields/button/mat-button.mapper';\nimport {\n addArrayItemButtonFieldMapper,\n nextButtonFieldMapper,\n previousButtonFieldMapper,\n removeArrayItemButtonFieldMapper,\n submitButtonFieldMapper,\n} from '../fields/button/mat-specific-button.mapper';\n\n/**\n * Material Design field type definitions\n * Follows the FieldTypeDefinition interface for proper registry integration\n */\nexport const MATERIAL_FIELD_TYPES: FieldTypeDefinition[] = [\n {\n name: MatField.Input,\n loadComponent: () => import('../fields/input/mat-input.component'),\n mapper: valueFieldMapper,\n },\n {\n name: MatField.Select,\n loadComponent: () => import('../fields/select/mat-select.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: MatField.Checkbox,\n loadComponent: () => import('../fields/checkbox/mat-checkbox.component'),\n mapper: checkboxFieldMapper,\n },\n {\n name: MatField.Button,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: buttonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.Submit,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: submitButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.Next,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: nextButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.Previous,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: previousButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.AddArrayItem,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: addArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.RemoveArrayItem,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: removeArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.Textarea,\n loadComponent: () => import('../fields/textarea/mat-textarea.component'),\n mapper: valueFieldMapper,\n },\n {\n name: MatField.Radio,\n loadComponent: () => import('../fields/radio/mat-radio.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: MatField.MultiCheckbox,\n loadComponent: () => import('../fields/multi-checkbox/mat-multi-checkbox.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: MatField.Datepicker,\n loadComponent: () => import('../fields/datepicker/mat-datepicker.component'),\n mapper: datepickerFieldMapper,\n },\n {\n name: MatField.Slider,\n loadComponent: () => import('../fields/slider/mat-slider.component'),\n mapper: valueFieldMapper,\n },\n {\n name: MatField.Toggle,\n loadComponent: () => import('../fields/toggle/mat-toggle.component'),\n mapper: checkboxFieldMapper,\n },\n];\n","/**\n * Module augmentation for @ng-forge/dynamic-form\n * This file augments the FieldRegistryLeaves interface to include\n * all Material Design field types provided by this library.\n */\n\nimport type { FormEvent } from '@ng-forge/dynamic-forms';\nimport type {\n AddArrayItemButtonField,\n MatButtonField,\n MatCheckboxField,\n MatDatepickerField,\n MatInputField,\n MatMultiCheckboxField,\n MatNextButtonField,\n MatPreviousButtonField,\n MatRadioField,\n RemoveArrayItemButtonField,\n MatSelectField,\n MatSliderField,\n MatSubmitButtonField,\n MatTextareaField,\n MatToggleField,\n} from '../fields';\n\ndeclare module '@ng-forge/dynamic-forms' {\n interface FieldRegistryLeaves {\n input: MatInputField;\n select: MatSelectField<unknown>;\n checkbox: MatCheckboxField;\n button: MatButtonField<FormEvent>;\n submit: MatSubmitButtonField;\n next: MatNextButtonField;\n previous: MatPreviousButtonField;\n addArrayItem: AddArrayItemButtonField;\n removeArrayItem: RemoveArrayItemButtonField;\n textarea: MatTextareaField;\n radio: MatRadioField<unknown>;\n 'multi-checkbox': MatMultiCheckboxField<unknown>;\n datepicker: MatDatepickerField;\n slider: MatSliderField;\n toggle: MatToggleField;\n }\n}\n","import type { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport type { Provider } from '@angular/core';\nimport { MATERIAL_FIELD_TYPES } from '../config/material-field-config';\nimport { MaterialConfig } from '../models/material-config';\nimport { MATERIAL_CONFIG } from '../models/material-config.token';\nimport {\n MatButtonField,\n MatCheckboxField,\n MatDatepickerField,\n MatInputField,\n MatMultiCheckboxField,\n MatNextButtonField,\n MatPreviousButtonField,\n MatRadioField,\n MatSelectField,\n MatSliderField,\n MatSubmitButtonField,\n MatTextareaField,\n MatToggleField,\n} from '../fields';\n\n/**\n * Field type definitions with optional config providers\n */\nexport type FieldTypeDefinitionsWithConfig = FieldTypeDefinition[] & {\n __configProviders?: Provider[];\n};\n\n/**\n * Configure dynamic forms with Material Design field types.\n * Provides all Material Design field types for use with provideDynamicForm.\n *\n * @param config - Optional global configuration for Material form fields\n *\n * @example\n * ```typescript\n * // Application-level setup\n * import { ApplicationConfig } from '@angular/core';\n * import { provideDynamicForm } from '@ng-forge/dynamic-form';\n * import { withMaterialFields } from '@ng-forge/dynamic-form-material';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(...withMaterialFields())\n * ]\n * };\n * ```\n *\n * @example\n * ```typescript\n * // With global configuration\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withMaterialFields({\n * appearance: 'fill',\n * subscriptSizing: 'fixed'\n * })\n * )\n * ]\n * };\n * ```\n *\n * @returns Array of field type definitions for Material Design components\n */\nexport function withMaterialFields(config?: MaterialConfig): FieldTypeDefinitionsWithConfig {\n const fields = MATERIAL_FIELD_TYPES as FieldTypeDefinitionsWithConfig;\n\n if (config) {\n fields.__configProviders = [\n {\n provide: MATERIAL_CONFIG,\n useValue: config,\n },\n ];\n }\n\n return fields;\n}\n\n/**\n * Module augmentation to extend the global DynamicFormFieldRegistry\n * with Material Design field types\n */\ndeclare module '@ng-forge/dynamic-forms' {\n interface DynamicFormFieldRegistry {\n input: MatInputField;\n select: MatSelectField<any>;\n checkbox: MatCheckboxField;\n button: MatButtonField<any>;\n submit: MatSubmitButtonField;\n next: MatNextButtonField;\n previous: MatPreviousButtonField;\n textarea: MatTextareaField;\n radio: MatRadioField<any>;\n 'multi-checkbox': MatMultiCheckboxField<any>;\n datepicker: MatDatepickerField;\n slider: MatSliderField;\n toggle: MatToggleField;\n }\n}\n","// Field components\nexport {\n MatCheckboxFieldComponent,\n MatDatepickerFieldComponent,\n MatInputFieldComponent,\n MatMultiCheckboxFieldComponent,\n MatRadioFieldComponent,\n MatSelectFieldComponent,\n MatSliderFieldComponent,\n MatButtonFieldComponent,\n MatTextareaFieldComponent,\n MatToggleFieldComponent,\n} from './fields';\nexport type {\n MatCheckboxProps,\n MatCheckboxField,\n MatCheckboxComponent,\n MatDatepickerProps,\n MatDatepickerField,\n MatDatepickerComponent,\n MatInputProps,\n MatInputField,\n MatInputComponent,\n MatMultiCheckboxProps,\n MatMultiCheckboxField,\n MatMultiCheckboxComponent,\n MatRadioProps,\n MatRadioField,\n MatRadioComponent,\n MatSelectProps,\n MatSelectField,\n MatSelectComponent,\n MatSliderProps,\n MatSliderField,\n MatSliderComponent,\n MatButtonProps,\n MatButtonField,\n MatSubmitButtonField,\n MatNextButtonField,\n MatPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n MatTextareaProps,\n MatTextareaField,\n MatTextareaComponent,\n MatToggleProps,\n MatToggleField,\n MatToggleComponent,\n} from './fields';\n\n// Configuration\nexport { MATERIAL_FIELD_TYPES } from './config/material-field-config';\nexport { MATERIAL_CONFIG } from './models';\nexport type { MaterialConfig } from './models';\n\n// Types and constants\nexport { MatField, type MatFieldType } from './types/types';\n\n// Module augmentation for global types\nimport './types/registry-augmentation';\n\n// Providers\nexport { withMaterialFields } from './providers/material-providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["MatError"],"mappings":"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"}
1
+ {"version":3,"file":"ng-forge-dynamic-forms-material.mjs","sources":["../../../../packages/dynamic-forms-material/src/lib/models/material-config.token.ts","../../../../packages/dynamic-forms-material/src/lib/fields/checkbox/mat-checkbox.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/datepicker/mat-datepicker.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/input/mat-input.component.ts","../../../../packages/dynamic-forms-material/src/lib/directives/value-in-array.pipe.ts","../../../../packages/dynamic-forms-material/src/lib/utils/is-equal.ts","../../../../packages/dynamic-forms-material/src/lib/fields/multi-checkbox/mat-multi-checkbox.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/radio/mat-radio.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/select/mat-select.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/slider/mat-slider.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/button/mat-button.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/button/index.ts","../../../../packages/dynamic-forms-material/src/lib/fields/textarea/mat-textarea.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/toggle/mat-toggle.component.ts","../../../../packages/dynamic-forms-material/src/lib/fields/index.ts","../../../../packages/dynamic-forms-material/src/lib/types/types.ts","../../../../packages/dynamic-forms-material/src/lib/fields/button/mat-button.mapper.ts","../../../../packages/dynamic-forms-material/src/lib/fields/button/mat-specific-button.mapper.ts","../../../../packages/dynamic-forms-material/src/lib/config/material-field-config.ts","../../../../packages/dynamic-forms-material/src/lib/types/registry-augmentation.ts","../../../../packages/dynamic-forms-material/src/lib/providers/material-providers.ts","../../../../packages/dynamic-forms-material/src/lib/index.ts","../../../../packages/dynamic-forms-material/src/ng-forge-dynamic-forms-material.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MaterialConfig } from './material-config';\n\n/**\n * Injection token for Material Design form configuration.\n * Use this to provide global configuration for Material form fields.\n *\n * @example\n * ```typescript\n * import { provideDynamicForm } from '@ng-forge/dynamic-forms';\n * import { withMaterialFields } from '@ng-forge/dynamic-forms-material';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withMaterialFields({\n * appearance: 'fill',\n * subscriptSizing: 'fixed'\n * })\n * )\n * ]\n * };\n * ```\n */\nexport const MATERIAL_CONFIG = new InjectionToken<MaterialConfig>('MATERIAL_CONFIG');\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatCheckboxComponent, MatCheckboxProps } from './mat-checkbox.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\n\n@Component({\n selector: 'df-mat-checkbox',\n imports: [MatCheckbox, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-checkbox\n [field]=\"f\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n [indeterminate]=\"props()?.indeterminate || false\"\n [color]=\"props()?.color || 'primary'\"\n [disableRipple]=\"effectiveDisableRipple()\"\n [required]=\"!!f().required()\"\n [aria-describedby]=\"ariaDescribedBy\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.hidden]=\"f().hidden() || null\"\n >\n {{ label() | dynamicText | async }}\n </mat-checkbox>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\" [attr.hidden]=\"f().hidden() || null\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\" [attr.hidden]=\"f().hidden() || null\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatCheckboxFieldComponent implements MatCheckboxComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n /**\n * Host element reference for DOM queries.\n * Used to find the internal checkbox input for accessibility workarounds.\n */\n private readonly hostEl = inject(ElementRef<HTMLElement>);\n\n // Properties\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<MatCheckboxProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveDisableRipple = computed(() => this.props()?.disableRipple ?? this.materialConfig?.disableRipple ?? false);\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.join(' ');\n });\n\n /**\n * Workaround: Angular Material's MatCheckbox does NOT set aria-required on its internal\n * input element when [required] is passed, even though it sets the native required attribute.\n * This effect imperatively sets/removes aria-required on the internal input.\n *\n * Bug: MatCheckbox sets `required` attribute but not `aria-required` for screen readers.\n * @see https://github.com/angular/components/issues/XXXXX (TODO: file issue)\n */\n private readonly syncAriaRequiredToDom = explicitEffect([this.ariaRequired], ([isRequired]) => {\n const inputEl = this.hostEl.nativeElement.querySelector('input[type=\"checkbox\"]');\n if (inputEl) {\n if (isRequired) {\n inputEl.setAttribute('aria-required', 'true');\n } else {\n inputEl.removeAttribute('aria-required');\n }\n }\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatHint, MatInput } from '@angular/material/input';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatDatepickerComponent, MatDatepickerProps } from './mat-datepicker.type';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\n\n@Component({\n selector: 'df-mat-datepicker',\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n MatHint,\n MatDatepicker,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatSuffix,\n Field,\n MatError,\n DynamicTextPipe,\n AsyncPipe,\n ],\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-form-field [appearance]=\"effectiveAppearance()\" [subscriptSizing]=\"effectiveSubscriptSizing()\" [class]=\"className() || ''\">\n @if (label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n <input\n matInput\n [matDatepicker]=\"picker\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n\n <mat-datepicker-toggle matIconSuffix [for]=\"$any(picker)\" />\n <mat-datepicker #picker [startAt]=\"startAt()\" [startView]=\"props()?.startView || 'month'\" [touchUi]=\"props()?.touchUi ?? false\" />\n\n @if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n providers: [provideNativeDateAdapter()],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatDatepickerFieldComponent implements MatDatepickerComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n readonly startAt = input<Date | null>(null);\n readonly props = input<MatDatepickerProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveAppearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n\n readonly effectiveSubscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatHint, MatInput } from '@angular/material/input';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatInputComponent, MatInputProps } from './mat-input.type';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\n\n@Component({\n selector: 'df-mat-input',\n imports: [MatFormField, MatLabel, MatInput, MatHint, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-form-field [appearance]=\"effectiveAppearance()\" [subscriptSizing]=\"effectiveSubscriptSizing()\">\n @if (label()) {\n <mat-label>{{ label() | dynamicText | async }}</mat-label>\n }\n @switch (props()?.type ?? 'text') {\n @case ('email') {\n <input\n #inputRef\n matInput\n type=\"email\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @case ('password') {\n <input\n #inputRef\n matInput\n type=\"password\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @case ('number') {\n <input\n #inputRef\n matInput\n type=\"number\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @case ('tel') {\n <input\n #inputRef\n matInput\n type=\"tel\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @case ('url') {\n <input\n #inputRef\n matInput\n type=\"url\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n @default {\n <input\n #inputRef\n matInput\n type=\"text\"\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n }\n }\n @if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n})\nexport default class MatInputFieldComponent implements MatInputComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n /**\n * Reference to the native input element.\n * Used to imperatively sync the readonly attribute since Angular Signal Forms'\n * [field] directive doesn't sync FieldState.readonly() to the DOM.\n */\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputRef');\n\n /**\n * Computed signal that extracts the readonly state from the field.\n * Used by the effect to reactively sync the readonly attribute to the DOM.\n */\n private readonly isReadonly = computed(() => this.field()().readonly());\n\n /**\n * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly\n * attribute to the DOM, even though FieldState.readonly() returns the correct value.\n * This effect imperatively sets/removes the readonly attribute on the native input\n * element whenever the readonly state changes.\n *\n * Note: We cannot use [readonly] or [attr.readonly] bindings because Angular throws\n * NG8022: \"Binding to '[readonly]' is not allowed on nodes using the '[field]' directive\"\n *\n * @see https://github.com/angular/angular/issues/65897\n */\n private readonly syncReadonlyToDom = explicitEffect([this.inputRef, this.isReadonly], ([inputRef, isReadonly]) => {\n if (inputRef?.nativeElement) {\n if (isReadonly) {\n inputRef.nativeElement.setAttribute('readonly', '');\n } else {\n inputRef.nativeElement.removeAttribute('readonly');\n }\n }\n });\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<MatInputProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveAppearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n\n readonly effectiveSubscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n pure: true,\n name: 'inArray',\n})\nexport class ValueInArrayPipe implements PipeTransform {\n transform<T>(element: T, array: T[] | undefined): boolean {\n return array?.includes(element) ?? false;\n }\n}\n","/**\n * Performs a deep equality comparison between two values\n */\nexport function isEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== typeof b) return false;\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((item, index) => isEqual(item, b[index]));\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((key) => keysB.includes(key) && isEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]));\n }\n\n return Object.is(a, b);\n}\n","import { ChangeDetectionStrategy, Component, computed, input, linkedSignal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport {\n createResolvedErrorsSignal,\n DynamicText,\n DynamicTextPipe,\n FieldOption,\n shouldShowErrors,\n ValidationMessages,\n ValueType,\n} from '@ng-forge/dynamic-forms';\nimport { ValueInArrayPipe } from '../../directives/value-in-array.pipe';\nimport { isEqual } from '../../utils/is-equal';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { MatMultiCheckboxComponent, MatMultiCheckboxProps } from './mat-multi-checkbox.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-multi-checkbox',\n imports: [MatCheckbox, ValueInArrayPipe, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n @if (label(); as label) {\n <div class=\"checkbox-group-label\">{{ label | dynamicText | async }}</div>\n }\n\n <div\n class=\"checkbox-group\"\n role=\"group\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n >\n @for (option of options(); track option.value) {\n <mat-checkbox\n [checked]=\"option | inArray: valueViewModel()\"\n [disabled]=\"f().disabled() || option.disabled\"\n [color]=\"props()?.color || 'primary'\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n (change)=\"onCheckboxChange(option, $event.checked)\"\n >\n {{ option.label | dynamicText | async }}\n </mat-checkbox>\n }\n </div>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className() || \"\"',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n providers: [ValueInArrayPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatMultiCheckboxFieldComponent<T extends ValueType> implements MatMultiCheckboxComponent<T> {\n readonly field = input.required<FieldTree<T[]>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<T>[]>([]);\n readonly props = input<MatMultiCheckboxProps>();\n\n valueViewModel = linkedSignal<FieldOption<T>[]>(\n () => {\n const currentValues = this.field()().value();\n return this.options().filter((option) => currentValues.includes(option.value));\n },\n { equal: isEqual },\n );\n\n constructor() {\n explicitEffect([this.valueViewModel], ([selectedOptions]) => {\n const selectedValues = selectedOptions.map((option) => option.value);\n\n if (!isEqual(selectedValues, this.field()().value())) {\n this.field()().value.set(selectedValues);\n }\n });\n\n explicitEffect([this.options], ([options]) => {\n const values = options.map((option) => option.value);\n const uniqueValues = new Set(values);\n\n if (values.length !== uniqueValues.size) {\n const duplicates = values.filter((value, index) => values.indexOf(value) !== index);\n throw new Error(`Duplicate option values detected in mat-multi-checkbox: ${duplicates.join(', ')}`);\n }\n });\n }\n\n onCheckboxChange(option: FieldOption<T>, checked: boolean): void {\n this.valueViewModel.update((currentOptions) => {\n if (checked) {\n return currentOptions.some((opt) => opt.value === option.value) ? currentOptions : [...currentOptions, option];\n } else {\n return currentOptions.filter((opt) => opt.value !== option.value);\n }\n });\n }\n\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatRadioButton, MatRadioGroup } from '@angular/material/radio';\nimport {\n createResolvedErrorsSignal,\n DynamicText,\n DynamicTextPipe,\n FieldOption,\n shouldShowErrors,\n ValidationMessages,\n} from '@ng-forge/dynamic-forms';\nimport { MatRadioComponent, MatRadioProps } from './mat-radio.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-radio',\n imports: [MatRadioGroup, MatRadioButton, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n @if (label()) {\n <div class=\"radio-label\">{{ label() | dynamicText | async }}</div>\n }\n\n <mat-radio-group\n [field]=\"f\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n >\n @for (option of options(); track option.value) {\n <mat-radio-button\n [value]=\"option.value\"\n [disabled]=\"option.disabled || false\"\n [color]=\"props()?.color || 'primary'\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n >\n {{ option.label | dynamicText | async }}\n </mat-radio-button>\n }\n </mat-radio-group>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className() || \"\"',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatRadioFieldComponent<T> implements MatRadioComponent<T> {\n readonly field = input.required<FieldTree<T>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<T>[]>([]);\n readonly props = input<MatRadioProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatOption, MatSelect } from '@angular/material/select';\nimport { MatHint } from '@angular/material/input';\nimport {\n createResolvedErrorsSignal,\n DynamicText,\n DynamicTextPipe,\n FieldOption,\n shouldShowErrors,\n ValidationMessages,\n} from '@ng-forge/dynamic-forms';\nimport { MatSelectComponent, MatSelectProps } from './mat-select.type';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\n\n@Component({\n selector: 'df-mat-select',\n imports: [MatFormField, MatLabel, MatSelect, MatOption, MatHint, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-form-field [appearance]=\"effectiveAppearance()\" [subscriptSizing]=\"effectiveSubscriptSizing()\">\n @if (label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n <mat-select\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [multiple]=\"props()?.multiple || false\"\n [compareWith]=\"props()?.compareWith || defaultCompare\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n >\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled || false\">\n {{ option.label | dynamicText | async }}\n </mat-option>\n }\n </mat-select>\n\n @if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n})\nexport default class MatSelectFieldComponent<T> implements MatSelectComponent<T> {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<T>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly options = input<FieldOption<T>[]>([]);\n readonly props = input<MatSelectProps<T>>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveAppearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n\n readonly effectiveSubscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n defaultCompare = Object.is;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatSlider, MatSliderThumb } from '@angular/material/slider';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatSliderComponent, MatSliderProps } from './mat-slider.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-slider',\n imports: [MatSlider, MatSliderThumb, MatError, DynamicTextPipe, AsyncPipe, Field],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n @if (label(); as label) {\n <div class=\"slider-label\">{{ label | dynamicText | async }}</div>\n }\n\n <mat-slider\n [min]=\"f().min?.() ?? 0\"\n [max]=\"f().max?.() ?? 100\"\n [step]=\"props()?.step ?? 1\"\n [discrete]=\"props()?.thumbLabel || props()?.showThumbLabel\"\n [showTickMarks]=\"props()?.tickInterval !== undefined\"\n [color]=\"props()?.color || 'primary'\"\n class=\"slider-container\"\n >\n <input\n matSliderThumb\n [field]=\"f\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n />\n </mat-slider>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .slider-container {\n width: 100%;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatSliderFieldComponent implements MatSliderComponent {\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly props = input<MatSliderProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport {\n ARRAY_CONTEXT,\n ArrayItemContext,\n DynamicText,\n DynamicTextPipe,\n EventArgs,\n EventBus,\n FormEvent,\n FormEventConstructor,\n resolveTokens,\n} from '@ng-forge/dynamic-forms';\nimport { MatButtonComponent, MatButtonProps } from './mat-button.type';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'df-mat-button',\n imports: [MatButton, DynamicTextPipe, AsyncPipe],\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n },\n template: `\n <button\n mat-raised-button\n [type]=\"buttonType()\"\n [color]=\"props()?.color || 'primary'\"\n [disabled]=\"disabled()\"\n [attr.data-testid]=\"buttonTestId()\"\n (click)=\"onClick()\"\n >\n {{ label() | dynamicText | async }}\n </button>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n button {\n min-width: fit-content;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatButtonFieldComponent<TEvent extends FormEvent> implements MatButtonComponent<TEvent> {\n private readonly eventBus = inject(EventBus);\n private readonly arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n readonly key = input.required<string>();\n readonly label = input.required<DynamicText>();\n readonly disabled = input<boolean>(false);\n readonly hidden = input<boolean>(false);\n\n readonly tabIndex = input<number>();\n readonly className = input<string>('');\n\n /** Event to dispatch on click. Optional for submit buttons (native form submit handles it). */\n readonly event = input<FormEventConstructor<TEvent>>();\n readonly eventArgs = input<EventArgs>();\n readonly props = input<MatButtonProps>();\n\n readonly eventContext = input<ArrayItemContext>();\n\n /** Resolved button type - defaults to 'button' if not specified in props */\n readonly buttonType = computed(() => this.props()?.type ?? 'button');\n\n readonly buttonTestId = computed(() => `${this.buttonType()}-${this.key()}`);\n\n /**\n * Handle button click.\n * - For submit buttons (type=\"submit\"): do nothing, native form submit handles it\n * - For other buttons: dispatch the configured event via EventBus\n */\n onClick(): void {\n // Native submit buttons let the form handle submission\n if (this.buttonType() === 'submit') {\n return;\n }\n\n // Other buttons dispatch their event (if configured)\n const event = this.event();\n if (event) {\n this.dispatchEvent(event);\n }\n }\n\n private dispatchEvent(event: FormEventConstructor<TEvent>): void {\n const args = this.eventArgs();\n\n if (args && args.length > 0) {\n // Build context from injected ARRAY_CONTEXT (with linkedSignal index) or fallback to eventContext\n const context: ArrayItemContext = this.arrayContext\n ? {\n key: this.key(),\n // Read signal to get current index (automatically updates via linkedSignal)\n index: this.arrayContext.index(),\n arrayKey: this.arrayContext.arrayKey,\n formValue: this.arrayContext.formValue,\n }\n : this.eventContext() || { key: this.key() };\n\n // Resolve tokens in event args using the provided context\n const resolvedArgs = resolveTokens(args, context);\n\n // Dispatch event with resolved args\n this.eventBus.dispatch(event, ...resolvedArgs);\n } else {\n // No args, dispatch event without arguments\n this.eventBus.dispatch(event);\n }\n }\n}\n","// Public API - types for type safety\nexport type {\n MatButtonProps,\n MatButtonField,\n MatSubmitButtonField,\n MatNextButtonField,\n MatPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n} from './mat-button.type';\n\n// Public API - component\nexport { default as MatButtonFieldComponent } from './mat-button.component';\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatHint, MatInput } from '@angular/material/input';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { MatTextareaComponent, MatTextareaProps } from './mat-textarea.type';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\n\n@Component({\n selector: 'df-mat-textarea',\n imports: [MatFormField, MatLabel, MatInput, MatHint, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaInvalid = this.ariaInvalid(); @let ariaRequired = this.ariaRequired();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-form-field [appearance]=\"effectiveAppearance()\" [subscriptSizing]=\"effectiveSubscriptSizing()\">\n @if (label()) {\n <mat-label>{{ label() | dynamicText | async }}</mat-label>\n }\n\n <textarea\n #textareaRef\n matInput\n [field]=\"f\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [rows]=\"props()?.rows || 4\"\n [cols]=\"props()?.cols\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [style.resize]=\"props()?.resize || 'vertical'\"\n ></textarea>\n\n @if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintId()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[class]': 'className()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n})\nexport default class MatTextareaFieldComponent implements MatTextareaComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<string>>();\n readonly key = input.required<string>();\n\n /**\n * Reference to the native textarea element.\n * Used to imperatively sync the readonly attribute since Angular Signal Forms'\n * [field] directive doesn't sync FieldState.readonly() to the DOM.\n */\n private readonly textareaRef = viewChild<ElementRef<HTMLTextAreaElement>>('textareaRef');\n\n /**\n * Computed signal that extracts the readonly state from the field.\n * Used by the effect to reactively sync the readonly attribute to the DOM.\n */\n private readonly isReadonly = computed(() => this.field()().readonly());\n\n /**\n * Workaround: Angular Signal Forms' [field] directive does NOT sync the readonly\n * attribute to the DOM, even though FieldState.readonly() returns the correct value.\n * This effect imperatively sets/removes the readonly attribute on the native textarea\n * element whenever the readonly state changes.\n *\n * Note: We cannot use [readonly] or [attr.readonly] bindings because Angular throws\n * NG8022: \"Binding to '[readonly]' is not allowed on nodes using the '[field]' directive\"\n *\n * @see https://github.com/angular/angular/issues/65897\n */\n private readonly syncReadonlyToDom = explicitEffect([this.textareaRef, this.isReadonly], ([textareaRef, isReadonly]) => {\n if (textareaRef?.nativeElement) {\n if (isReadonly) {\n textareaRef.nativeElement.setAttribute('readonly', '');\n } else {\n textareaRef.nativeElement.removeAttribute('readonly');\n }\n }\n });\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n readonly props = input<MatTextareaProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveAppearance = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline');\n readonly effectiveSubscriptSizing = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic');\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { Field, FieldTree } from '@angular/forms/signals';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { createResolvedErrorsSignal, DynamicText, DynamicTextPipe, shouldShowErrors, ValidationMessages } from '@ng-forge/dynamic-forms';\n\nimport { MatToggleComponent, MatToggleProps } from './mat-toggle.type';\nimport { MatError } from '@angular/material/input';\nimport { AsyncPipe } from '@angular/common';\nimport { MATERIAL_CONFIG } from '../../models/material-config.token';\n\n@Component({\n selector: 'df-mat-toggle',\n imports: [MatSlideToggle, Field, MatError, DynamicTextPipe, AsyncPipe],\n template: `\n @let f = field();\n @let ariaDescribedBy = this.ariaDescribedBy();\n\n <mat-slide-toggle\n [field]=\"f\"\n [color]=\"props()?.color || 'primary'\"\n [labelPosition]=\"props()?.labelPosition || 'after'\"\n [hideIcon]=\"props()?.hideIcon || false\"\n [disableRipple]=\"effectiveDisableRipple()\"\n [required]=\"!!f().required()\"\n [aria-describedby]=\"ariaDescribedBy\"\n [attr.tabindex]=\"tabIndex()\"\n class=\"toggle-container\"\n >\n {{ label() | dynamicText | async }}\n </mat-slide-toggle>\n\n @if (props()?.hint; as hint) {\n <div class=\"mat-hint\" [id]=\"hintId()\">{{ hint | dynamicText | async }}</div>\n }\n @for (error of errorsToDisplay(); track error.kind; let i = $index) {\n <mat-error [id]=\"errorId() + '-' + i\">{{ error.message }}</mat-error>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n `,\n ],\n host: {\n '[class]': 'className()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'field()().hidden() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MatToggleFieldComponent implements MatToggleComponent {\n private materialConfig = inject(MATERIAL_CONFIG, { optional: true });\n\n readonly field = input.required<FieldTree<boolean>>();\n readonly key = input.required<string>();\n\n readonly label = input<DynamicText>();\n readonly placeholder = input<DynamicText>();\n\n readonly className = input<string>('');\n readonly tabIndex = input<number>();\n\n readonly props = input<MatToggleProps>();\n readonly validationMessages = input<ValidationMessages>();\n readonly defaultValidationMessages = input<ValidationMessages>();\n\n readonly effectiveDisableRipple = computed(() => this.props()?.disableRipple ?? this.materialConfig?.disableRipple ?? false);\n\n readonly resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);\n readonly showErrors = shouldShowErrors(this.field);\n\n readonly errorsToDisplay = computed(() => (this.showErrors() ? this.resolvedErrors() : []));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Accessibility\n // ─────────────────────────────────────────────────────────────────────────────\n\n /** Unique ID for the hint element, used for aria-describedby */\n protected readonly hintId = computed(() => `${this.key()}-hint`);\n\n /** Base ID for error elements, used for aria-describedby */\n protected readonly errorId = computed(() => `${this.key()}-error`);\n\n /** aria-invalid: true when field is invalid AND touched, false otherwise */\n protected readonly ariaInvalid = computed(() => {\n const fieldState = this.field()();\n return fieldState.invalid() && fieldState.touched();\n });\n\n /** aria-required: true if field is required, null otherwise (to remove attribute) */\n protected readonly ariaRequired = computed(() => {\n return this.field()().required?.() === true ? true : null;\n });\n\n /** aria-describedby: links to hint and error messages for screen readers */\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (this.props()?.hint) {\n ids.push(this.hintId());\n }\n\n const errors = this.errorsToDisplay();\n errors.forEach((_, i) => {\n ids.push(`${this.errorId()}-${i}`);\n });\n\n return ids.join(' ');\n });\n}\n","// Public exports for material field components and types\n\nexport { MatCheckboxFieldComponent } from './checkbox';\nexport type { MatCheckboxProps, MatCheckboxField, MatCheckboxComponent } from './checkbox';\n\nexport { MatDatepickerFieldComponent } from './datepicker';\nexport type { MatDatepickerProps, MatDatepickerField, MatDatepickerComponent } from './datepicker';\n\nexport { MatInputFieldComponent } from './input';\nexport type { MatInputProps, MatInputField, MatInputComponent } from './input';\n\nexport { MatMultiCheckboxFieldComponent } from './multi-checkbox';\nexport type { MatMultiCheckboxProps, MatMultiCheckboxField, MatMultiCheckboxComponent } from './multi-checkbox';\n\nexport { MatRadioFieldComponent } from './radio';\nexport type { MatRadioProps, MatRadioField, MatRadioComponent } from './radio';\n\nexport { MatSelectFieldComponent } from './select';\nexport type { MatSelectProps, MatSelectField, MatSelectComponent } from './select';\n\nexport { MatSliderFieldComponent } from './slider';\nexport type { MatSliderProps, MatSliderField, MatSliderComponent } from './slider';\n\nexport { MatButtonFieldComponent } from './button';\nexport type {\n MatButtonProps,\n MatButtonField,\n MatSubmitButtonField,\n MatNextButtonField,\n MatPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n} from './button';\n\nexport { MatTextareaFieldComponent } from './textarea';\nexport type { MatTextareaProps, MatTextareaField, MatTextareaComponent } from './textarea';\n\nexport { MatToggleFieldComponent } from './toggle';\nexport type { MatToggleProps, MatToggleField, MatToggleComponent } from './toggle';\n","/**\n * Material Design field type constants\n * Based on available field components in the /fields folder\n */\nexport const MatField = {\n Input: 'input',\n Select: 'select',\n Checkbox: 'checkbox',\n Button: 'button',\n Submit: 'submit',\n Next: 'next',\n Previous: 'previous',\n AddArrayItem: 'addArrayItem',\n RemoveArrayItem: 'removeArrayItem',\n Textarea: 'textarea',\n Radio: 'radio',\n MultiCheckbox: 'multi-checkbox',\n Datepicker: 'datepicker',\n Slider: 'slider',\n Toggle: 'toggle',\n} as const;\n\nexport type MatFieldType = (typeof MatField)[keyof typeof MatField];\n","import { computed, Signal } from '@angular/core';\nimport { buildBaseInputs, FieldDef } from '@ng-forge/dynamic-forms';\n\n/**\n * Generic button mapper for custom events or basic buttons.\n * For specific button types (submit, next, prev, add/remove array items),\n * use the dedicated field types and their specific mappers.\n *\n * @param fieldDef The button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function buttonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n return computed(() => {\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n };\n\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n // Add event binding for button events\n if ('event' in fieldDef && fieldDef.event !== undefined) {\n inputs['event'] = fieldDef.event;\n }\n\n // Add eventArgs binding if provided\n if ('eventArgs' in fieldDef && fieldDef.eventArgs !== undefined) {\n inputs['eventArgs'] = fieldDef.eventArgs;\n }\n\n return inputs;\n });\n}\n","import { computed, inject, isSignal, Signal } from '@angular/core';\nimport {\n AddArrayItemEvent,\n ARRAY_CONTEXT,\n buildBaseInputs,\n FIELD_SIGNAL_CONTEXT,\n FieldDef,\n FieldWithValidation,\n NextPageEvent,\n PreviousPageEvent,\n RemoveArrayItemEvent,\n resolveNextButtonDisabled,\n resolveSubmitButtonDisabled,\n} from '@ng-forge/dynamic-forms';\nimport { AddArrayItemButtonField, RemoveArrayItemButtonField } from './mat-button.type';\n\n/**\n * Mapper for submit button - configures native form submission via type=\"submit\"\n *\n * Unlike other buttons, submit buttons don't dispatch events directly.\n * Instead, they trigger native form submission which the form component\n * intercepts and dispatches to the EventBus.\n *\n * Disabled state is resolved using the button-logic-resolver which considers:\n * 1. Explicit `disabled: true` on the field definition\n * 2. Field-level `logic` array (if present, overrides form-level defaults)\n * 3. Form-level `options.submitButton` defaults (disableWhenInvalid, disableWhileSubmitting)\n *\n * @param fieldDef The submit button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function submitButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n // Inject field signal context to access form state and options\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Use button-logic-resolver to compute disabled state\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n const disabledSignal = resolveSubmitButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: fieldSignalContext.formOptions,\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n });\n\n // Return computed signal - evaluates disabledSignal inside for reactivity\n return computed(() => {\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n // No event - native form submit handles it via form's onNativeSubmit\n // Set type=\"submit\" to trigger native form submission\n props: { ...(fieldDef.props as Record<string, unknown>), type: 'submit' },\n // Evaluate the signal inside the computed - component receives plain boolean\n disabled: disabledSignal(),\n };\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for next page button - preconfigures NextPageEvent\n *\n * Disabled state is resolved using the button-logic-resolver which considers:\n * 1. Explicit `disabled: true` on the field definition\n * 2. Field-level `logic` array (if present, overrides form-level defaults)\n * 3. Form-level `options.nextButton` defaults (disableWhenPageInvalid, disableWhileSubmitting)\n *\n * @param fieldDef The next button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function nextButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n // Inject field signal context to access form state and options\n const fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Use button-logic-resolver to compute disabled state\n const fieldWithLogic = fieldDef as FieldDef<Record<string, unknown>> & Partial<FieldWithValidation>;\n const disabledSignal = resolveNextButtonDisabled({\n form: fieldSignalContext.form,\n formOptions: fieldSignalContext.formOptions,\n fieldLogic: fieldWithLogic.logic,\n explicitlyDisabled: fieldDef.disabled,\n currentPageValid: fieldSignalContext.currentPageValid,\n });\n\n // Return computed signal - evaluates disabledSignal inside for reactivity\n return computed(() => {\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: NextPageEvent,\n // Evaluate the signal inside the computed - component receives plain boolean\n disabled: disabledSignal(),\n };\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for previous page button - preconfigures PreviousPageEvent\n * Note: Does not auto-disable based on validation. Users can explicitly disable if needed.\n *\n * @param fieldDef The previous button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function previousButtonFieldMapper(fieldDef: FieldDef<Record<string, unknown>>): Signal<Record<string, unknown>> {\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n return computed(() => {\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: PreviousPageEvent,\n };\n\n // Add disabled binding only if explicitly set by user\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for add array item button - preconfigures AddArrayItemEvent with array context.\n *\n * Supports two modes:\n * 1. Inside array template: Uses ARRAY_CONTEXT to determine target array\n * 2. Outside array: Uses `arrayKey` property from field definition\n *\n * @param fieldDef The add array item button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function addArrayItemButtonFieldMapper(fieldDef: AddArrayItemButtonField): Signal<Record<string, unknown>> {\n // Try to get array context (available when inside an array)\n // Use optional injection so it doesn't fail when outside an array\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n // Determine the target array key\n // Priority: explicit arrayKey from fieldDef > arrayKey from context\n const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;\n\n if (!targetArrayKey) {\n console.warn(\n `[Dynamic Forms] addArrayItem button \"${fieldDef.key}\" has no array context. ` +\n 'Either place it inside an array field, or provide an explicit arrayKey property.',\n );\n }\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Set default eventArgs for AddArrayItemEvent (arrayKey)\n // User can override by providing eventArgs in field definition\n const defaultEventArgs = ['$arrayKey'];\n const eventArgs = 'eventArgs' in fieldDef && fieldDef.eventArgs !== undefined ? fieldDef.eventArgs : defaultEventArgs;\n\n return computed(() => {\n // Read signal value if index is a signal (supports differential updates)\n const getIndex = () => {\n if (!arrayContext) return -1;\n return isSignal(arrayContext.index) ? arrayContext.index() : arrayContext.index;\n };\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: AddArrayItemEvent,\n eventArgs,\n eventContext: {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: targetArrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n },\n };\n\n // Add disabled binding only if explicitly set by user\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n\n/**\n * Mapper for remove array item button - preconfigures RemoveArrayItemEvent with array context.\n *\n * Supports two modes:\n * 1. Inside array template: Uses ARRAY_CONTEXT to determine target array and removes item at current index\n * 2. Outside array: Uses `arrayKey` property from field definition, removes last item by default\n *\n * @param fieldDef The remove array item button field definition\n * @returns Signal containing Record of input names to values for ngComponentOutlet\n */\nexport function removeArrayItemButtonFieldMapper(fieldDef: RemoveArrayItemButtonField): Signal<Record<string, unknown>> {\n // Try to get array context (available when inside an array)\n // Use optional injection so it doesn't fail when outside an array\n const arrayContext = inject(ARRAY_CONTEXT, { optional: true });\n\n // Determine the target array key\n // Priority: explicit arrayKey from fieldDef > arrayKey from context\n const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;\n\n if (!targetArrayKey) {\n console.warn(\n `[Dynamic Forms] removeArrayItem button \"${fieldDef.key}\" has no array context. ` +\n 'Either place it inside an array field, or provide an explicit arrayKey property.',\n );\n }\n\n // Build base inputs (static, from field definition)\n const baseInputs = buildBaseInputs(fieldDef);\n\n // Set default eventArgs for RemoveArrayItemEvent (arrayKey, index if inside array)\n // When outside array, only pass arrayKey (removes last by default)\n // User can override by providing eventArgs in field definition\n const defaultEventArgs = arrayContext ? ['$arrayKey', '$index'] : ['$arrayKey'];\n const eventArgs = 'eventArgs' in fieldDef && fieldDef.eventArgs !== undefined ? fieldDef.eventArgs : defaultEventArgs;\n\n return computed(() => {\n // Read signal value if index is a signal (supports differential updates)\n const getIndex = () => {\n if (!arrayContext) return -1; // -1 means remove last (no specific index)\n return isSignal(arrayContext.index) ? arrayContext.index() : arrayContext.index;\n };\n\n const inputs: Record<string, unknown> = {\n ...baseInputs,\n event: RemoveArrayItemEvent,\n eventArgs,\n eventContext: {\n key: fieldDef.key,\n index: getIndex(),\n arrayKey: targetArrayKey ?? '',\n formValue: arrayContext?.formValue ?? {},\n },\n };\n\n // Add disabled binding only if explicitly set by user\n if (fieldDef.disabled !== undefined) {\n inputs['disabled'] = fieldDef.disabled;\n }\n\n if (fieldDef.hidden !== undefined) {\n inputs['hidden'] = fieldDef.hidden;\n }\n\n return inputs;\n });\n}\n","import {\n checkboxFieldMapper,\n datepickerFieldMapper,\n FieldTypeDefinition,\n optionsFieldMapper,\n valueFieldMapper,\n} from '@ng-forge/dynamic-forms';\nimport { MatField } from '../types/types';\nimport { buttonFieldMapper } from '../fields/button/mat-button.mapper';\nimport {\n addArrayItemButtonFieldMapper,\n nextButtonFieldMapper,\n previousButtonFieldMapper,\n removeArrayItemButtonFieldMapper,\n submitButtonFieldMapper,\n} from '../fields/button/mat-specific-button.mapper';\n\n/**\n * Material Design field type definitions\n * Follows the FieldTypeDefinition interface for proper registry integration\n */\nexport const MATERIAL_FIELD_TYPES: FieldTypeDefinition[] = [\n {\n name: MatField.Input,\n loadComponent: () => import('../fields/input/mat-input.component'),\n mapper: valueFieldMapper,\n },\n {\n name: MatField.Select,\n loadComponent: () => import('../fields/select/mat-select.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: MatField.Checkbox,\n loadComponent: () => import('../fields/checkbox/mat-checkbox.component'),\n mapper: checkboxFieldMapper,\n },\n {\n name: MatField.Button,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: buttonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.Submit,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: submitButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.Next,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: nextButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.Previous,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: previousButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.AddArrayItem,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: addArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.RemoveArrayItem,\n loadComponent: () => import('../fields/button/mat-button.component'),\n mapper: removeArrayItemButtonFieldMapper,\n valueHandling: 'exclude',\n },\n {\n name: MatField.Textarea,\n loadComponent: () => import('../fields/textarea/mat-textarea.component'),\n mapper: valueFieldMapper,\n },\n {\n name: MatField.Radio,\n loadComponent: () => import('../fields/radio/mat-radio.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: MatField.MultiCheckbox,\n loadComponent: () => import('../fields/multi-checkbox/mat-multi-checkbox.component'),\n mapper: optionsFieldMapper,\n },\n {\n name: MatField.Datepicker,\n loadComponent: () => import('../fields/datepicker/mat-datepicker.component'),\n mapper: datepickerFieldMapper,\n },\n {\n name: MatField.Slider,\n loadComponent: () => import('../fields/slider/mat-slider.component'),\n mapper: valueFieldMapper,\n },\n {\n name: MatField.Toggle,\n loadComponent: () => import('../fields/toggle/mat-toggle.component'),\n mapper: checkboxFieldMapper,\n },\n];\n","/**\n * Module augmentation for @ng-forge/dynamic-form\n * This file augments the FieldRegistryLeaves interface to include\n * all Material Design field types provided by this library.\n */\n\nimport type { FormEvent } from '@ng-forge/dynamic-forms';\nimport type {\n AddArrayItemButtonField,\n MatButtonField,\n MatCheckboxField,\n MatDatepickerField,\n MatInputField,\n MatMultiCheckboxField,\n MatNextButtonField,\n MatPreviousButtonField,\n MatRadioField,\n RemoveArrayItemButtonField,\n MatSelectField,\n MatSliderField,\n MatSubmitButtonField,\n MatTextareaField,\n MatToggleField,\n} from '../fields';\n\ndeclare module '@ng-forge/dynamic-forms' {\n interface FieldRegistryLeaves {\n input: MatInputField;\n select: MatSelectField<unknown>;\n checkbox: MatCheckboxField;\n button: MatButtonField<FormEvent>;\n submit: MatSubmitButtonField;\n next: MatNextButtonField;\n previous: MatPreviousButtonField;\n addArrayItem: AddArrayItemButtonField;\n removeArrayItem: RemoveArrayItemButtonField;\n textarea: MatTextareaField;\n radio: MatRadioField<unknown>;\n 'multi-checkbox': MatMultiCheckboxField<unknown>;\n datepicker: MatDatepickerField;\n slider: MatSliderField;\n toggle: MatToggleField;\n }\n}\n","import type { FieldTypeDefinition } from '@ng-forge/dynamic-forms';\nimport type { Provider } from '@angular/core';\nimport { MATERIAL_FIELD_TYPES } from '../config/material-field-config';\nimport { MaterialConfig } from '../models/material-config';\nimport { MATERIAL_CONFIG } from '../models/material-config.token';\nimport {\n MatButtonField,\n MatCheckboxField,\n MatDatepickerField,\n MatInputField,\n MatMultiCheckboxField,\n MatNextButtonField,\n MatPreviousButtonField,\n MatRadioField,\n MatSelectField,\n MatSliderField,\n MatSubmitButtonField,\n MatTextareaField,\n MatToggleField,\n} from '../fields';\n\n/**\n * Field type definitions with optional config providers\n */\nexport type FieldTypeDefinitionsWithConfig = FieldTypeDefinition[] & {\n __configProviders?: Provider[];\n};\n\n/**\n * Configure dynamic forms with Material Design field types.\n * Provides all Material Design field types for use with provideDynamicForm.\n *\n * @param config - Optional global configuration for Material form fields\n *\n * @example\n * ```typescript\n * // Application-level setup\n * import { ApplicationConfig } from '@angular/core';\n * import { provideDynamicForm } from '@ng-forge/dynamic-form';\n * import { withMaterialFields } from '@ng-forge/dynamic-form-material';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(...withMaterialFields())\n * ]\n * };\n * ```\n *\n * @example\n * ```typescript\n * // With global configuration\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDynamicForm(\n * ...withMaterialFields({\n * appearance: 'fill',\n * subscriptSizing: 'fixed'\n * })\n * )\n * ]\n * };\n * ```\n *\n * @returns Array of field type definitions for Material Design components\n */\nexport function withMaterialFields(config?: MaterialConfig): FieldTypeDefinitionsWithConfig {\n const fields = MATERIAL_FIELD_TYPES as FieldTypeDefinitionsWithConfig;\n\n if (config) {\n fields.__configProviders = [\n {\n provide: MATERIAL_CONFIG,\n useValue: config,\n },\n ];\n }\n\n return fields;\n}\n\n/**\n * Module augmentation to extend the global DynamicFormFieldRegistry\n * with Material Design field types\n */\ndeclare module '@ng-forge/dynamic-forms' {\n interface DynamicFormFieldRegistry {\n input: MatInputField;\n select: MatSelectField<any>;\n checkbox: MatCheckboxField;\n button: MatButtonField<any>;\n submit: MatSubmitButtonField;\n next: MatNextButtonField;\n previous: MatPreviousButtonField;\n textarea: MatTextareaField;\n radio: MatRadioField<any>;\n 'multi-checkbox': MatMultiCheckboxField<any>;\n datepicker: MatDatepickerField;\n slider: MatSliderField;\n toggle: MatToggleField;\n }\n}\n","// Field components\nexport {\n MatCheckboxFieldComponent,\n MatDatepickerFieldComponent,\n MatInputFieldComponent,\n MatMultiCheckboxFieldComponent,\n MatRadioFieldComponent,\n MatSelectFieldComponent,\n MatSliderFieldComponent,\n MatButtonFieldComponent,\n MatTextareaFieldComponent,\n MatToggleFieldComponent,\n} from './fields';\nexport type {\n MatCheckboxProps,\n MatCheckboxField,\n MatCheckboxComponent,\n MatDatepickerProps,\n MatDatepickerField,\n MatDatepickerComponent,\n MatInputProps,\n MatInputField,\n MatInputComponent,\n MatMultiCheckboxProps,\n MatMultiCheckboxField,\n MatMultiCheckboxComponent,\n MatRadioProps,\n MatRadioField,\n MatRadioComponent,\n MatSelectProps,\n MatSelectField,\n MatSelectComponent,\n MatSliderProps,\n MatSliderField,\n MatSliderComponent,\n MatButtonProps,\n MatButtonField,\n MatSubmitButtonField,\n MatNextButtonField,\n MatPreviousButtonField,\n AddArrayItemButtonField,\n RemoveArrayItemButtonField,\n MatTextareaProps,\n MatTextareaField,\n MatTextareaComponent,\n MatToggleProps,\n MatToggleField,\n MatToggleComponent,\n} from './fields';\n\n// Configuration\nexport { MATERIAL_FIELD_TYPES } from './config/material-field-config';\nexport { MATERIAL_CONFIG } from './models';\nexport type { MaterialConfig } from './models';\n\n// Types and constants\nexport { MatField, type MatFieldType } from './types/types';\n\n// Module augmentation for global types\nimport './types/registry-augmentation';\n\n// Providers\nexport { withMaterialFields } from './providers/material-providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["MatError"],"mappings":"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"}